aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/pkgs/development/python-modules
diff options
context:
space:
mode:
authorKatharina Fey <kookie@spacekookie.de>2019-10-05 12:43:18 +0000
committerKatharina Fey <kookie@spacekookie.de>2019-10-05 12:44:52 +0000
commitcf85056ba64caf3267d43255ef4a1243e9c8ee3b (patch)
tree3051519e9c8275b870aac43f80af875715c9d124 /nixpkgs/pkgs/development/python-modules
parent1148b1d122bc03e9a3665856c9b7bb96bd4e3994 (diff)
parent2436c27541b2f52deea3a4c1691216a02152e729 (diff)
Add 'nixpkgs/' from commit '2436c27541b2f52deea3a4c1691216a02152e729'
git-subtree-dir: nixpkgs git-subtree-mainline: 1148b1d122bc03e9a3665856c9b7bb96bd4e3994 git-subtree-split: 2436c27541b2f52deea3a4c1691216a02152e729
Diffstat (limited to 'nixpkgs/pkgs/development/python-modules')
-rw-r--r--nixpkgs/pkgs/development/python-modules/3to2/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/APScheduler/default.nix64
-rw-r--r--nixpkgs/pkgs/development/python-modules/Babel/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/Cython/default.nix65
-rw-r--r--nixpkgs/pkgs/development/python-modules/Fabric/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/Flask-PyMongo/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/FormEncode/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/GeoIP/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/GitPython/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/GitPython/hardcode-git-path.patch13
-rw-r--r--nixpkgs/pkgs/development/python-modules/IPy/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/JPype1/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/JPype1/set-compiler-language.patch12
-rw-r--r--nixpkgs/pkgs/development/python-modules/JayDeBeApi/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/Logbook/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/Mako/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/Markups/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/MechanicalSoup/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/Nikola/default.nix76
-rw-r--r--nixpkgs/pkgs/development/python-modules/Pmw/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/PyLD/default.nix55
-rw-r--r--nixpkgs/pkgs/development/python-modules/Pygments/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/ROPGadget/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/Rtree/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/Theano/default.nix86
-rw-r--r--nixpkgs/pkgs/development/python-modules/TurboCheetah/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/WSME/default.nix49
-rw-r--r--nixpkgs/pkgs/development/python-modules/Wand/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/WazeRouteCalculator/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/XlsxWriter/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/aafigure/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/absl-py/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/accupy/default.nix62
-rw-r--r--nixpkgs/pkgs/development/python-modules/acme-tiny/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/acme/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/acoustics/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/actdiag/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/adal/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/adb-homeassistant/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/addic7ed-cli/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/aenum/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/affine/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/affinity/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/agate-dbf/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/agate-excel/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/agate-sql/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/agate/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/aioamqp/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/aioconsole/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiodns/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/aioesphomeapi/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/aioeventlet/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiofiles/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/aioftp/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/aioh2/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiohttp-cors/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiohttp-jinja2/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiohttp-remotes/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiohttp-socks/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiohttp-swagger/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiohttp/default.nix53
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiohue/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/aioimaplib/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiolifx-effects/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiolifx/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/aioprocessing/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/aioresponses/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiorpcx/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiosmtpd/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiounifi/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiozeroconf/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/ajpy/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/alabaster/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/alembic/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/alerta-server/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/alerta/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/algebraic-data-types/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/allpairspy/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/alot/default.nix62
-rw-r--r--nixpkgs/pkgs/development/python-modules/altair/default.nix59
-rw-r--r--nixpkgs/pkgs/development/python-modules/amazon_kclpy/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/amqp/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/amqplib/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/androguard/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/aniso8601/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/annexremote/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/annoy/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/anonip/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/ansi/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/ansible-kernel/default.nix60
-rw-r--r--nixpkgs/pkgs/development/python-modules/ansible-lint/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/ansible-runner/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/ansible/default.nix55
-rw-r--r--nixpkgs/pkgs/development/python-modules/ansicolor/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/ansicolors/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/ansiconv/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/antlr4-python2-runtime/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/antlr4-python3-runtime/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/anyjson/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/anytree/default.nix63
-rw-r--r--nixpkgs/pkgs/development/python-modules/anytree/graphviz.patch13
-rw-r--r--nixpkgs/pkgs/development/python-modules/apipkg/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/aplpy/default.nix61
-rw-r--r--nixpkgs/pkgs/development/python-modules/appdirs/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/application/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/applicationinsights/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/appnope/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/apprise/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/approvaltests/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/apsw/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/arelle/default.nix71
-rw-r--r--nixpkgs/pkgs/development/python-modules/arelle/tests.patch14
-rw-r--r--nixpkgs/pkgs/development/python-modules/argcomplete/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/argh/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/argon2_cffi/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/args/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/arpeggio/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/arrow/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/arxiv2bib/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/asana/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/asciimatics/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/asciitree/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/asdf/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/ase/3.17.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/ase/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/asgiref/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/asn1ate/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/asn1crypto/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/aspy.yaml/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/astor/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/astral/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/astroid/1.6.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/astroid/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/astropy-healpix/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/astropy-helpers/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/astropy/default.nix54
-rw-r--r--nixpkgs/pkgs/development/python-modules/astroquery/conftest-astropy-3-fix.patch54
-rw-r--r--nixpkgs/pkgs/development/python-modules/astroquery/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/asttokens/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/astunparse/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/async_generator/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/async_timeout/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/asyncpg/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/asyncssh/default.nix52
-rw-r--r--nixpkgs/pkgs/development/python-modules/asyncssh/fix-sftp-chmod-test-nixos.patch15
-rw-r--r--nixpkgs/pkgs/development/python-modules/asynctest/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/atom/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/atomiclong/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/atomicwrites/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/atomman/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/atpublic/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/atsim_potentials/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/attrdict/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/attrs/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/audio-metadata/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/audioread/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/audiotools/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/augeas/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/authres/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/autobahn/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/autograd/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/autologging/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/automat/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/autopep8/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/av/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/avro/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/avro3k/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/awesome-slugify/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/awesome-slugify/slugify_filename_test.patch13
-rw-r--r--nixpkgs/pkgs/development/python-modules/awkward/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/aws-adfs/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/aws-lambda-builders/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/aws-sam-translator/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/aws-xray-sdk/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-applicationinsights/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-batch/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-cli-core/default.nix93
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-cli-telemetry/default.nix50
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-common/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-cosmos/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-cosmosdb-nspkg/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-cosmosdb-table/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-datalake-store/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-eventgrid/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-graphrbac/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-keyvault/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-loganalytics/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-advisor/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-applicationinsights/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-authorization/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-batch/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-batchai/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-billing/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-cdn/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-cognitiveservices/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-commerce/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-common/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-compute/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-consumption/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-containerinstance/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-containerservice/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-cosmosdb/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-datafactory/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-datalake-analytics/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-datalake-nspkg/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-datalake-store/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-datamigration/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-devspaces/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-devtestlabs/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-dns/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-eventgrid/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-eventhub/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-hanaonazure/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-iotcentral/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-iothub/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-iothubprovisioningservices/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-keyvault/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-loganalytics/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-logic/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-machinelearningcompute/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-managementgroups/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-managementpartner/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-maps/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-marketplaceordering/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-media/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-monitor/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-msi/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-network/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-notificationhubs/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-nspkg/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-policyinsights/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-powerbiembedded/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-rdbms/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-recoveryservices/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-recoveryservicesbackup/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-redis/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-relay/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-reservations/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-resource/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-scheduler/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-search/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-servicebus/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-servicefabric/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-signalr/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-sql/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-storage/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-subscription/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-trafficmanager/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-web/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-nspkg/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-servicebus/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-servicefabric/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-servicemanagement-legacy/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-storage-blob/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-storage-common/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-storage-file/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-storage-nspkg/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-storage-queue/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-storage/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/babelfish/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/backcall/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/backports-shutil-which/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/backports_abc/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/backports_csv/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/backports_functools_lru_cache/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/backports_lzma/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/backports_os/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/backports_shutil_get_terminal_size/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/backports_ssl_match_hostname/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/backports_tempfile/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/backports_unittest-mock/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/backports_weakref/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/bap/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/base58/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/baselines/default.nix64
-rw-r--r--nixpkgs/pkgs/development/python-modules/basemap/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/bash_kernel/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/basiciw/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/batinfo/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/bayespy/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/bcdoc/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/bcrypt/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/beaker/default.nix76
-rw-r--r--nixpkgs/pkgs/development/python-modules/beancount/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/beanstalkc/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/beautifulsoup4/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/bedup/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/behave/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/betamax-matchers/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/betamax-serializers/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/betamax/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/bibtexparser/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/bidict/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/bids-validator/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/billiard/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/binaryornot/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/binwalk/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/biopython/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/bitarray/0001-Buffer-Protocol-Py3.patch106
-rw-r--r--nixpkgs/pkgs/development/python-modules/bitarray/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/bitbucket-api/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/bitbucket-cli/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/bitcoin-price-api/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/bitcoinlib/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/bitmath/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/bitstring/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/bitstruct/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/bjoern/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/bkcharts/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/black/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/blaze/default.nix71
-rw-r--r--nixpkgs/pkgs/development/python-modules/bleach/default.nix50
-rw-r--r--nixpkgs/pkgs/development/python-modules/blessed/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/blessings/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/blinker/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/blinkstick/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/blis/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/blist/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/blivet/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/block-io/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/blockdiag/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/blockdiagcontrib-cisco/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/bokeh/default.nix64
-rw-r--r--nixpkgs/pkgs/development/python-modules/bokeh/hardcode-nodejs-npmjs-paths.patch15
-rw-r--r--nixpkgs/pkgs/development/python-modules/boltons/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/boltztrap2/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/boolean-py/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/bootstrapped-pip/default.nix69
-rw-r--r--nixpkgs/pkgs/development/python-modules/boto/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/boto3/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/botocore/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/bottle/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/bottleneck/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/box2d/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/bpython/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/braintree/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/branca/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/breathe/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/broadlink/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/brotli/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/brotlipy/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/browser-cookie3/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/browsermob-proxy/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/bsddb3/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/bt-proximity/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/btchip/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/btrees/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/bugwarrior/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/bugz/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/bugzilla/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/buildbot/default.nix102
-rw-r--r--nixpkgs/pkgs/development/python-modules/buildbot/pkg.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/buildbot/plugins.nix102
-rw-r--r--nixpkgs/pkgs/development/python-modules/buildbot/skip_test_linux_distro.patch11
-rw-r--r--nixpkgs/pkgs/development/python-modules/buildbot/worker.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/buildout-nix/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/buildout-nix/nix.patch28
-rw-r--r--nixpkgs/pkgs/development/python-modules/buildout/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/bumps/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/bunch/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/bz2file/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/cachecontrol/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/cached-property/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/cachelib/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/cachetools/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/cachy/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/cairocffi/0_9.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/cairocffi/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/cairocffi/dlopen-paths-0.9.patch47
-rw-r--r--nixpkgs/pkgs/development/python-modules/cairocffi/dlopen-paths.patch61
-rw-r--r--nixpkgs/pkgs/development/python-modules/cairocffi/fix_test_scaled_font.patch11
-rw-r--r--nixpkgs/pkgs/development/python-modules/cairocffi/generic.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/cairosvg/1_x.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/cairosvg/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/caldav/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/caldavclientlibrary-asynk/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/can/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/canmatrix/default.nix59
-rw-r--r--nixpkgs/pkgs/development/python-modules/canonicaljson/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/canopen/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/capstone/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/capturer/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/carbon/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/carrot/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/cartopy/default.nix59
-rw-r--r--nixpkgs/pkgs/development/python-modules/case/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/cassandra-driver/default.nix70
-rw-r--r--nixpkgs/pkgs/development/python-modules/casttube/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/cbor/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/cbor2/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/cccolutils/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/cchardet/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/cddb/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/cdecimal/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/celery/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/cement/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/cerberus/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/cerberus11/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/certifi/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/cffi/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/cfgv/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/cfn-flip/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/cfn-lint/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/cftime/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/cgen/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/cgroup-utils/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/chai/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/chainer/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/chainmap/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/chalice/default.nix64
-rw-r--r--nixpkgs/pkgs/development/python-modules/chameleon/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/channels/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/characteristic/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/chardet/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/check-manifest/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/cheetah/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/cheroot/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/cheroot/tests.patch45
-rw-r--r--nixpkgs/pkgs/development/python-modules/cherrypy/17.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/cherrypy/default.nix60
-rw-r--r--nixpkgs/pkgs/development/python-modules/chevron/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/circus/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/cjson/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/cld2-cffi/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/cleo/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/clf/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/cli-helpers/default.nix62
-rw-r--r--nixpkgs/pkgs/development/python-modules/cliapp/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/click-completion/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/click-default-group/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/click-didyoumean/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/click-log/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/click-plugins/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/click-repl/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/click-threading/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/click/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/clickclick/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/cliff/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/clifford/default.nix50
-rw-r--r--nixpkgs/pkgs/development/python-modules/cligj/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/clikit/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/clint/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/clize/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/closure-linter/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/cloudpickle/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/clustershell/default.nix89
-rw-r--r--nixpkgs/pkgs/development/python-modules/cmarkgfm/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/cmd2/default.nix60
-rw-r--r--nixpkgs/pkgs/development/python-modules/cmdline/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/cmdtest/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/cntk/default.nix61
-rw-r--r--nixpkgs/pkgs/development/python-modules/cnvkit/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/codecov/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/codespell/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/cogapp/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/coilmq/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/coinmarketcap/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/colander/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/colanderalchemy/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/colorama/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/colorcet/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/colorclass/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/colored/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/coloredlogs/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/colorlog/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/colorlover/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/colour/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/commonmark/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/conda/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/configargparse/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/configobj/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/configparser/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/configshell/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/confluent-kafka/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/connexion/default.nix94
-rw-r--r--nixpkgs/pkgs/development/python-modules/constantly/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/construct/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/consul/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/contexter/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/contextlib2/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/contextvars/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/cookiecutter/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/cookies/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/cornice/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/cov-core/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/coverage/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/coveralls/default.nix58
-rw-r--r--nixpkgs/pkgs/development/python-modules/cozy/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/cram/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/crayons/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/crc16/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/crcmod/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/credstash/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/cryptacular/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/cryptography/default.nix73
-rw-r--r--nixpkgs/pkgs/development/python-modules/cryptography/vectors.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/css-parser/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/csscompressor/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/cssmin/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/cssselect/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/cssselect2/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/cssutils/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/csvs-to-sqlite/default.nix49
-rw-r--r--nixpkgs/pkgs/development/python-modules/cufflinks/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/cupy/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/curio/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/curtsies/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/curve25519-donna/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/cvxopt/default.nix70
-rw-r--r--nixpkgs/pkgs/development/python-modules/cx_freeze/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/cx_oracle/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/cycler/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/cymem/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/cypari2/default.nix55
-rw-r--r--nixpkgs/pkgs/development/python-modules/cysignals/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/cytoolz/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/d2to1/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/daemonize/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/daphne/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/darcsver/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/dask-glm/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/dask-image/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/dask-jobqueue/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/dask-ml/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/dask-mpi/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/dask-xgboost/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/dask/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/dataclasses/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/datadiff/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/datadog/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/datamodeldict/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/datasette/default.nix73
-rw-r--r--nixpkgs/pkgs/development/python-modules/datashader/default.nix85
-rw-r--r--nixpkgs/pkgs/development/python-modules/datashape/default.nix50
-rw-r--r--nixpkgs/pkgs/development/python-modules/datatable/default.nix60
-rw-r--r--nixpkgs/pkgs/development/python-modules/datatable/hardcode-library-paths.patch43
-rw-r--r--nixpkgs/pkgs/development/python-modules/datatable/remove-compiler-monkeypatch_disable-native-relocation.patch28
-rw-r--r--nixpkgs/pkgs/development/python-modules/dateparser/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/dateutil/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/datrie/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/dbf/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/dbfread/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/dbus/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/dbus/fix-includedir.patch8
-rw-r--r--nixpkgs/pkgs/development/python-modules/ddt/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/deap/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/debian/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/decorator/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/deform/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/defusedxml/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/delegator-py/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/deluge-client/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/demjson/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/dendropy/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/dependency-injector/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/deprecated/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/deprecation/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/derpconf/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/descartes/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/deskcon/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/detox/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/devpi-common/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/dftfit/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/dictionaries/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/dicttoxml/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/diff-match-patch/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/diff_cover/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/digitalocean/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/dill/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/diofant/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/discid/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/discogs_client/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/discordpy/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/diskcache/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/distlib/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/distorm3/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/distributed/default.nix62
-rw-r--r--nixpkgs/pkgs/development/python-modules/distro/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/distro/nixos.patch31
-rw-r--r--nixpkgs/pkgs/development/python-modules/distutils-cfg/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/distutils_extra/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/dj-database-url/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/dj-email-url/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/dj-search-url/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-allauth/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-cache-url/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-compat/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-configurations/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-cors-headers/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-csp/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-discover-runner/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-extensions/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-gravatar2/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-haystack/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-hijack-admin/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-hijack/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-ipware/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-jinja2/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-logentry-admin/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-mailman3/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-multiselectfield/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-paintstore/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-pglocks/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-picklefield/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-pipeline/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-polymorphic/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-q/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-raster/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-rest-auth/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-sampledatahelper/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-sesame/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-sites/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-sr/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-webpack-loader/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/django/1.10-gis-libs.template.patch24
-rw-r--r--nixpkgs/pkgs/development/python-modules/django/1_11.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/django/1_8.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/django/2_1.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/django/2_2.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/django_appconf/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/django_classytags/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/django_colorful/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/django_compressor/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/django_contrib_comments/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/django_environ/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/django_evolution/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/django_guardian/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/django_modelcluster/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/django_nose/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/django_redis/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/django_reversion/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/django_silk/default.nix62
-rw-r--r--nixpkgs/pkgs/development/python-modules/django_tagging/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/django_taggit/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/django_treebeard/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/djangoql/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/djangorestframework-jwt/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/djangorestframework/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/djmail/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/dkimpy/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/dlib/build-cores.patch27
-rw-r--r--nixpkgs/pkgs/development/python-modules/dlib/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/dm-sonnet/default.nix92
-rw-r--r--nixpkgs/pkgs/development/python-modules/dmenu/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/dnslib/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/dnspython/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/doc8/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/docker-py/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/docker-pycreds/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/docker/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/dockerfile-parse/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/dockerpty/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/docopt/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/docrep/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/doctest-ignore-unicode/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/docutils/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/dogpile.cache/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/dogpile.core/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/dogtail/default.nix60
-rw-r--r--nixpkgs/pkgs/development/python-modules/dogtail/nix-support.patch35
-rw-r--r--nixpkgs/pkgs/development/python-modules/dominate/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/dopy/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/dot2tex/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/dotnetcore2/default.nix59
-rw-r--r--nixpkgs/pkgs/development/python-modules/dotnetcore2/runtime.patch19
-rw-r--r--nixpkgs/pkgs/development/python-modules/dpath/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/dpkt/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/drms/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/dropbox/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/ds4drv/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/dtopt/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/dugong/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/dulwich/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/dyn/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/dynd/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/easy-thumbnails/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/easydict/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/easygui/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/easyprocess/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/easywatch/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/ecdsa/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/ecpy/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/ed25519/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/editorconfig/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/edward/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/effect/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/eggdeps/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/elasticsearch-curator/default.nix73
-rw-r--r--nixpkgs/pkgs/development/python-modules/elasticsearch-dsl/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/elasticsearch/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/elementpath/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/email-validator/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/emailthreads/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/emcee/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/emoji/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/entrypoints/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/enum-compat/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/enum/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/enum34/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/envs/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/enzyme/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/epc/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/ephem/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/eradicate/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/escapism/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/et_xmlfile/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/etcd/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/eth-hash/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/eth-typing/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/eth-utils/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/evdev/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/eve/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/eventlet/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/eventlib/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/events/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/evernote/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/ewmh/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/exchangelib/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/exchangelib/skip_failing_test.patch18
-rw-r--r--nixpkgs/pkgs/development/python-modules/execnet/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/executor/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/exifread/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/extras/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/eyed3/default.nix59
-rw-r--r--nixpkgs/pkgs/development/python-modules/ezdxf/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/face/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/face_recognition/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/face_recognition_models/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/facebook-sdk/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/facedancer/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/factory_boy/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/fake_factory/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/faker/default.nix62
-rw-r--r--nixpkgs/pkgs/development/python-modules/falcon/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/fastapi/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/fastapi/setup.py.patch13
-rw-r--r--nixpkgs/pkgs/development/python-modules/fastcache/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/fasteners/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/fastentrypoints/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/fastimport/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/fastpair/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/fastparquet/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/fastpbkdf2/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/fastrlock/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/fasttext/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/faulthandler/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/favicon/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/fb-re2/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/fdint/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/feedgen/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/feedgenerator/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/feedparser/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/fido2/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/filebrowser_safe/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/filebytes/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/filelock/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/filemagic/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/filetype/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/filterpy/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/fints/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/fiona/default.nix54
-rw-r--r--nixpkgs/pkgs/development/python-modules/fipy/default.nix55
-rw-r--r--nixpkgs/pkgs/development/python-modules/fire/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/firetv/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/first/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/fitbit/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/fixtures/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/flake8-blind-except/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/flake8-debugger/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/flake8-future-import/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/flake8-import-order/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/flake8-polyfill/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/flake8/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/flaky/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-api/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-assets/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-autoindex/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-babel/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-bootstrap/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-caching/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-common/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-compress/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-cors/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-elastic/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-jwt-extended/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-ldap-login/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-limiter/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-login/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-mail/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-marshmallow/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-migrate/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-paginate/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-principal/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-restful/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-restplus/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-script/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-silk/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-socketio/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-sqlalchemy/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-swagger/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-testing/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-wtf/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/flaskbabel/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/flexmock/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/flickrapi/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/flit/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/flowlogs_reader/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/fluent-logger/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/flufl/bounce.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/flufl/i18n.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/flufl/lock.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/flup/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/fn/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/folium/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/fonttools/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/foolscap/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/forbiddenfruit/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/foxdot/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/fpdf/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/fpylll/default.nix57
-rw-r--r--nixpkgs/pkgs/development/python-modules/freezegun/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/fritzconnection/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/frozendict/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/fs-s3fs/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/fs/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/fsspec/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/ftfy/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/ftputil/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/fudge/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/funcparserlib/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/funcsigs/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/funcsigs/fix-pypy3-tests.patch94
-rw-r--r--nixpkgs/pkgs/development/python-modules/functools32/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/funcy/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/fuse-python/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/fusepy/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/future-fstrings/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/future/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/futures/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/fuzzywuzzy/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/fx2/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/gast/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/gateone/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/gcovr/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/gdata/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/gdrivefs/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/geeknote/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/genanki/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/genpy/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/genshi/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/gensim/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/gentools/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/genzshcomp/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/geoalchemy2/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/geoip2/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/geojson/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/geopandas/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/geopy/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/gevent-socketio/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/gevent-websocket/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/gevent/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/geventhttpclient/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/gflags/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/ghdiff/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/gidgethub/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/gin-config/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/gipc/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/git-annex-adapter/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/git-annex-adapter/git-annex-path.patch75
-rw-r--r--nixpkgs/pkgs/development/python-modules/git-revise/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/git-sweep/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/gitdb/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/gitdb2/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/github-webhook/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/github3_py/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/glances/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/glances/skip-failing-tests.patch60
-rw-r--r--nixpkgs/pkgs/development/python-modules/glasgow/default.nix66
-rw-r--r--nixpkgs/pkgs/development/python-modules/glob2/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/globus-sdk/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/glom/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/glymur/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/gmpy/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/gmpy2/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/gmusicapi/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/gnureadline/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/gnutls/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/goobook/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/goocalendar/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-api-python-client/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-auth-httplib2/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-auth-oauthlib/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-i18n-address/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-music-proto/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-music-utils/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-music/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-pasta/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_api_core/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_apputils/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_auth/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_asset/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_automl/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_bigquery/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_bigquery_datatransfer/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_bigtable/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_container/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_core/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_dataproc/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_datastore/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_dlp/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_dns/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_error_reporting/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_firestore/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_iot/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_kms/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_language/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_logging/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_monitoring/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_pubsub/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_redis/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_resource_manager/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_runtimeconfig/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_securitycenter/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_spanner/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_speech/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_storage/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_tasks/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_testutils/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_texttospeech/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_trace/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_translate/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_videointelligence/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_vision/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_cloud_websecurityscanner/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/google_resumable_media/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/googleapis_common_protos/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/gpapi/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/gphoto2/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/gplaycli/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/gprof2dot/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/gpsoauth/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/gpy/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/grammalecte/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/grandalf/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/grandalf/no-setup-requires-pytestrunner.patch15
-rw-r--r--nixpkgs/pkgs/development/python-modules/graph-tool/2.x.x.nix74
-rw-r--r--nixpkgs/pkgs/development/python-modules/graph_nets/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/graphite-api/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/graphite-api/flask-caching-rebased.patch132
-rw-r--r--nixpkgs/pkgs/development/python-modules/graphite-web/default.nix54
-rw-r--r--nixpkgs/pkgs/development/python-modules/graphite_beacon/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/graphitepager/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/graphviz/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/graphviz/hardcode-graphviz-path.patch95
-rw-r--r--nixpkgs/pkgs/development/python-modules/grappelli_safe/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/greatfet/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/green/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/greenlet/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/grequests/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/grip/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/grpc_google_iam_v1/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/grpcio-gcp/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/grpcio-tools/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/grpcio/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/gsd/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/gspread/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/gssapi/default.nix70
-rw-r--r--nixpkgs/pkgs/development/python-modules/gst-python/default.nix71
-rw-r--r--nixpkgs/pkgs/development/python-modules/gtimelog/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/gtts-token/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/guessit/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/guestfs/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/gumath/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/gunicorn/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/gurobipy/darwin.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/gurobipy/linux.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/gurobipy/no-clever-setup.patch55
-rw-r--r--nixpkgs/pkgs/development/python-modules/guzzle_sphinx_theme/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/gym/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/gyp/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/gyp/no-darwin-cflags.patch40
-rw-r--r--nixpkgs/pkgs/development/python-modules/gyp/no-xcode.patch12
-rw-r--r--nixpkgs/pkgs/development/python-modules/h11/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/h2/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/h5py/default.nix52
-rw-r--r--nixpkgs/pkgs/development/python-modules/ha-ffmpeg/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/habanero/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/handout/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/hawkauthlib/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/hbmqtt/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/hcs_utils/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/hdbscan/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/hdmedians/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/heapdict/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/helper/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/hetzner/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/hg-git/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/hglib/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/hglib/hgpath.patch24
-rw-r--r--nixpkgs/pkgs/development/python-modules/hgsvn/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/hidapi/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/hieroglyph/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/hiro/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/histbook/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/hkdf/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/hmmlearn/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/hocr-tools/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/holoviews/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/homeassistant-pyozw/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/hoomd-blue/default.nix65
-rw-r--r--nixpkgs/pkgs/development/python-modules/hopcroftkarp/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/howdoi/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/hpack/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/hsaudiotag/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/hsaudiotag3k/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/html2text/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/html5-parser/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/html5lib/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/htmllaundry/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/htmlmin/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/htmltreediff/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/httmock/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/http-ece/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/http_signature/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/httpauth/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/httpbin/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/httplib2/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/httpretty/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/httpserver/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/httpsig/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/httptools/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/hug/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/humanfriendly/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/humanize/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/hupper/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/hvac/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/hvplot/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/hypchat/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/hyperframe/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/hyperlink/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/hypothesis/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/i3-py/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/i3ipc/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/ibis-framework/default.nix57
-rw-r--r--nixpkgs/pkgs/development/python-modules/ibis/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/ibmquantumexperience/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/icalendar/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/identify/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/idna-ssl/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/idna/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/ifaddr/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/ijson/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/image-match/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/imagecodecs-lite/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/imageio-ffmpeg/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/imageio/default.nix57
-rw-r--r--nixpkgs/pkgs/development/python-modules/imagesize/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/imapclient/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/imaplib2/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/imbalanced-learn/0.4.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/imbalanced-learn/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/imgaug/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/immutables/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/impacket/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/importlib-metadata/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/importlib-resources/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/importmagic/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/imread/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/imutils/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/incremental/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/inflect/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/inflection/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/influxdb/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/influxgraph/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/infoqscraper/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/inifile/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/iniparse/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/inotify-simple/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/inquirer/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/intake/default.nix70
-rw-r--r--nixpkgs/pkgs/development/python-modules/intelhex/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/internetarchive/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/interruptingcow/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/intervaltree/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/invoke/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/iocapture/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/iowait/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/ipaddr/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/ipaddress/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/ipdb/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/ipdbplugin/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/ipfsapi/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/iptools/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/ipykernel/4.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/ipykernel/default.nix49
-rw-r--r--nixpkgs/pkgs/development/python-modules/ipyparallel/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/ipython/5.nix62
-rw-r--r--nixpkgs/pkgs/development/python-modules/ipython/default.nix66
-rw-r--r--nixpkgs/pkgs/development/python-modules/ipython_genutils/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/ipywidgets/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/irc/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/isbnlib/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/islpy/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/iso-639/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/iso3166/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/iso8601/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/isodate/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/isort/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/isoweek/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/itsdangerous/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/j2cli/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/jabberbot/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/jaraco_classes/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/jaraco_collections/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/jaraco_functools/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/jaraco_itertools/0001-Don-t-run-flake8-checks-during-the-build.patch38
-rw-r--r--nixpkgs/pkgs/development/python-modules/jaraco_itertools/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/jaraco_logging/0001-Don-t-run-flake8-checks-during-the-build.patch38
-rw-r--r--nixpkgs/pkgs/development/python-modules/jaraco_logging/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/jaraco_stream/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/jaraco_text/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/jdatetime/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/jdcal/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/jedi/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/jeepney/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/jellyfish/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/jenkins-job-builder/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/jenkinsapi/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/jieba/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/jinja2/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/jinja2_pluralize/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/jinja2_time/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/jira/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/jira/sphinx-fix.patch11
-rw-r--r--nixpkgs/pkgs/development/python-modules/jmespath/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/joblib/default.nix54
-rw-r--r--nixpkgs/pkgs/development/python-modules/josepy/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/jpylyzer/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/jq/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/jq/jq-py-setup.patch130
-rw-r--r--nixpkgs/pkgs/development/python-modules/jsbeautifier/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/jsmin/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/jsondate/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/jsondiff/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/jsonmerge/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/jsonpatch/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/jsonpath_rw/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/jsonpickle/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/jsonpointer/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/jsonref/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/jsonrpc-async/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/jsonrpc-base/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/jsonrpc-websocket/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/jsonrpclib-pelix/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/jsonrpclib/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/jsonschema/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/jsonwatch/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/jug/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/junos-eznc/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/jupyter-repo2docker/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/jupyter/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/jupyter_client/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/jupyter_console/5.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/jupyter_console/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/jupyter_core/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/jupyter_core/tests_respect_pythonpath.patch20
-rw-r--r--nixpkgs/pkgs/development/python-modules/jupyterhub-ldapauthenticator/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/jupyterhub/default.nix123
-rw-r--r--nixpkgs/pkgs/development/python-modules/jupyterlab/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/jupyterlab_launcher/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/jupyterlab_server/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/jupytext/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/jwcrypto/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/k5test/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/k5test/fix-paths.patch90
-rw-r--r--nixpkgs/pkgs/development/python-modules/kaa-base/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/kaa-metadata/default.nix56
-rw-r--r--nixpkgs/pkgs/development/python-modules/kafka-python/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/kaitaistruct/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/kajiki/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/kaptan/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/kazoo/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/kconfiglib/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/keepalive/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/keepkey/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/keras-applications/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/keras-preprocessing/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/keras/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/kerberos/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/keyring/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/keyrings-alt/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/keyutils/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/kitchen/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/kiwisolver/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/klaus/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/klein/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/kmapper/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/knack/default.nix54
-rw-r--r--nixpkgs/pkgs/development/python-modules/koji/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/kombu/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/konfig/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/kubernetes/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/lammps-cython/default.nix53
-rw-r--r--nixpkgs/pkgs/development/python-modules/langcodes/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/langdetect/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/larch/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/lark-parser/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/lasagne/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/latexcodec/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/lazr/config.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/lazr/delegates.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/lazy-object-proxy/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/ldap/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/ldap3/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/ldappool/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/ldaptor/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/le/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/leather/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/ledgerblue/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/lektor/default.nix58
-rw-r--r--nixpkgs/pkgs/development/python-modules/leveldb/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/libagent/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/libais/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/libarchive-c/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/libarcus/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/libasyncns/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/libasyncns/libasyncns-fix-res-consts.patch14
-rw-r--r--nixpkgs/pkgs/development/python-modules/libcloud/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/libgpuarray/default.nix83
-rw-r--r--nixpkgs/pkgs/development/python-modules/libkeepass/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/libmr/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/libnacl/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/librosa/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/libsavitar/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/libsexy/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/libsoundtouch/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/libthumbor/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/libtmux/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/libusb1/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/libversion/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/libvirt/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/license-expression/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/lightblue/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/lightgbm/default.nix62
-rw-r--r--nixpkgs/pkgs/development/python-modules/lightning/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/limitlessled/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/limits/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/limnoria/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/line_profiler/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/line_profiler/python37.patch36
-rw-r--r--nixpkgs/pkgs/development/python-modules/linecache2/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/linode-api/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/linode/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/linuxfd/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/livereload/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/livestreamer-curses/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/livestreamer/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/llfuse/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/llvmlite/default.nix50
-rw-r--r--nixpkgs/pkgs/development/python-modules/lmdb/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/lmtpd/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/locket/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/lockfile/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/locustio/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/logfury/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/logilab/common.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/logilab/constraint.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/logilab_astng/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/logster/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/loguru/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/logutils/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/logzero/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/loo-py/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/lpod/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/lsi/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/ludios_wpull/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/luftdaten/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/lxc/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/lxml/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/lzstring/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/m2crypto/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/m2r/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/macfsevents/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/macropy/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/magic-wormhole-mailbox-server/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/magic-wormhole-transit-relay/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/magic-wormhole/default.nix60
-rw-r--r--nixpkgs/pkgs/development/python-modules/magic/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/mahotas/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/mahotas/disable-impure-tests.patch76
-rw-r--r--nixpkgs/pkgs/development/python-modules/mail-parser/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/mailcap-fix/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/mailchimp/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/maildir-deduplicate/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/mailman-hyperkitty/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/mailman-rss/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/mailmanclient/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/manhole/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/manuel/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/mapsplotlib/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/marionette-harness/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/marionette-harness/manifestparser.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/marionette-harness/marionette_driver.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/marionette-harness/mozcrash.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/marionette-harness/mozdevice.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/marionette-harness/mozfile.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/marionette-harness/mozhttpd.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/marionette-harness/mozinfo.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/marionette-harness/mozlog.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/marionette-harness/moznetwork.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/marionette-harness/mozprocess.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/marionette-harness/mozprofile.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/marionette-harness/mozrunner.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/marionette-harness/moztest.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/marionette-harness/mozversion.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/marisa-trie/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/marisa/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/markdown-macros/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/markdown/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/markdown2/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/markdownsuperscript/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/markerlib/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/markupsafe/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/marshmallow-sqlalchemy/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/marshmallow/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/matchpy/default.nix49
-rw-r--r--nixpkgs/pkgs/development/python-modules/mathics/default.nix50
-rw-r--r--nixpkgs/pkgs/development/python-modules/matplotlib/2.nix102
-rw-r--r--nixpkgs/pkgs/development/python-modules/matplotlib/basedirlist.patch8
-rw-r--r--nixpkgs/pkgs/development/python-modules/matplotlib/default.nix94
-rw-r--r--nixpkgs/pkgs/development/python-modules/matrix-client/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/mautrix-appservice/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/maxminddb/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/maya/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/mccabe/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/mdp/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/mecab-python3/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/mechanize/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/meinheld/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/meld3/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/meliae/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/memcached/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/memory_profiler/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/metaphone/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/mezzanine/default.nix70
-rw-r--r--nixpkgs/pkgs/development/python-modules/micawber/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/midiutil/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/milksnake/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/minidb/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/minimock/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/minio/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/miniupnpc/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/misaka/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/mistune/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/mixpanel/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/mkl-service/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/mlrose/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/mmpython/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/mnemonic/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/mock-open/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/mock/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/mockito/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/modeled/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/moderngl/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/modestmaps/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/moinmoin/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/moinmoin/fix_tests.patch16
-rw-r--r--nixpkgs/pkgs/development/python-modules/mongodict/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/monotonic/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/monty/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/more-itertools/2.7.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/more-itertools/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/moretools/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/moto/default.nix86
-rw-r--r--nixpkgs/pkgs/development/python-modules/moviepy/default.nix52
-rw-r--r--nixpkgs/pkgs/development/python-modules/mox/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/mox3/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/mozsvc/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/mozterm/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/mpd/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/mpd2/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/mpi4py/default.nix52
-rw-r--r--nixpkgs/pkgs/development/python-modules/mpi4py/tests.patch13
-rw-r--r--nixpkgs/pkgs/development/python-modules/mplleaflet/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/mpmath/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/mps-youtube/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/mpv/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/mpyq/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/mrbob/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/msgpack-numpy/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/msgpack/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/msrest/default.nix53
-rw-r--r--nixpkgs/pkgs/development/python-modules/msrestazure/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/msrplib/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/mt-940/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/multi_key_dict/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/multidict/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/multipledispatch/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/multiprocess/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/multiset/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/munch/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/munkres/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/murmurhash/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/musicbrainzngs/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/mutag/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/mutagen/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/muttils/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/mwclient/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/mwlib-ext/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/mwlib-rl/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/mwlib/default.nix55
-rw-r--r--nixpkgs/pkgs/development/python-modules/mwoauth/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/mwparserfromhell/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/mxnet/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/mygpoclient/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/mypy-protobuf/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/mypy/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/mypy/extensions.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/mysql-connector/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/mysqlclient/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/namebench/default.nix50
-rw-r--r--nixpkgs/pkgs/development/python-modules/namedlist/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/nameparser/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/nanoleaf/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/nanomsg-python/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/nanotime/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/natsort/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/naturalsort/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/nbconvert/default.nix56
-rw-r--r--nixpkgs/pkgs/development/python-modules/nbformat/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/nbmerge/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/nbsmoke/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/nbsphinx/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/nbval/default.nix57
-rw-r--r--nixpkgs/pkgs/development/python-modules/nbxmpp/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/ncclient/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/ndg-httpsclient/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/ndtypes/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/nest-asyncio/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/netaddr/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/netcdf4/default.nix50
-rw-r--r--nixpkgs/pkgs/development/python-modules/netdisco/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/netifaces/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/networkx/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/neuronpy/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/neurotools/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/nevow/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/nibabel/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/nilearn/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/nimfa/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/nine/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/nipy/default.nix49
-rw-r--r--nixpkgs/pkgs/development/python-modules/nipype/default.nix105
-rw-r--r--nixpkgs/pkgs/development/python-modules/nipype/neurdflib.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/nixpkgs-pytools/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/nixpkgs/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/nltk/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/nmigen-boards/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/nmigen/default.nix65
-rw-r--r--nixpkgs/pkgs/development/python-modules/node-semver/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/nodeenv/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/noise/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/nose-cov/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/nose-cover3/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/nose-cprof/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/nose-exclude/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/nose-focus/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/nose-of-yeti/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/nose-pattern-exclude/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/nose-randomly/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/nose/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/nose2/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/nose_progressive/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/nose_warnings_filters/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/nosejs/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/nosexcover/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/notebook/default.nix76
-rw-r--r--nixpkgs/pkgs/development/python-modules/notify/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/notify2/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/notmuch/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/ntlm-auth/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/ntplib/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/nuitka/default.nix52
-rw-r--r--nixpkgs/pkgs/development/python-modules/num2words/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/numba/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/numcodecs/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/numericalunits/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/numexpr/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/numpy-stl/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/numpy/default.nix72
-rw-r--r--nixpkgs/pkgs/development/python-modules/numpy/numpy-distutils-C++.patch31
-rw-r--r--nixpkgs/pkgs/development/python-modules/numpydoc/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/numtraits/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/nvchecker/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/nwdiag/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/nxt-python/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/oath/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/oauth/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/oauth2/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/oauth2client/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/oauthenticator/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/oauthlib/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/obfsproxy/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/objgraph/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/objgraph/hardcode-graphviz-path.patch61
-rw-r--r--nixpkgs/pkgs/development/python-modules/od/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/odfpy/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/odo/default.nix58
-rw-r--r--nixpkgs/pkgs/development/python-modules/offtrac/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/ofxclient/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/ofxhome/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/ofxparse/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/ofxtools/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/olefile/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/onkyo-eiscp/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/openant/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/openapi-spec-validator/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/openidc-client/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/openpyxl/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/openrazer/common.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/openrazer/daemon.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/openrazer/pylib.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/opentimestamps/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/opt-einsum/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/optuna/default.nix81
-rw-r--r--nixpkgs/pkgs/development/python-modules/ordered-set/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/ordereddict/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/orderedset/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/osc/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/oset/default.nix19
-rwxr-xr-xnixpkgs/pkgs/development/python-modules/osmnx/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/outcome/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/ovh/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/ovito/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/owslib/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/packaging/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/packet-python/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/pafy/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/pagerduty/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/paho-mqtt/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/palettable/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/pamela/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/pamqp/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pandas/2.nix122
-rw-r--r--nixpkgs/pkgs/development/python-modules/pandas/default.nix120
-rw-r--r--nixpkgs/pkgs/development/python-modules/pandocfilters/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/panel/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/paperspace/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/papis-python-rofi/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/papis/default.nix54
-rw-r--r--nixpkgs/pkgs/development/python-modules/param/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/parameterized/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/paramiko/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/paramz/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/parfive/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/parse-type/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/parse/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/parsedatetime/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/parsel/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/parsimonious/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/parso/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/parsy/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/partd/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/parver/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/passlib/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/paste/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/pastedeploy/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/pastel/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/pastescript/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/patator/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/patch/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/path-and-address/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/path.py/2.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/path.py/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/pathlib/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pathlib2/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/pathos/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/pathspec/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/pathtools/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/patsy/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/paver/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/paypalrestsdk/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/pbkdf2/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/pbr/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/pc-ble-driver-py/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/pdf2image/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/pdfkit/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/pdfminer_six/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pdftotext/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/pdfx/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/pecan/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/peewee/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/pelican/default.nix79
-rw-r--r--nixpkgs/pkgs/development/python-modules/pendulum/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/pep257/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/pep8-naming/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/pep8/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/peppercorn/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/percol/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/perfplot/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/periodictable/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/persim/default.nix50
-rw-r--r--nixpkgs/pkgs/development/python-modules/persistent/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/pex/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pexif/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/pexpect/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/pg8000/1_12.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/pg8000/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pglast/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/pgpdump/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/pgpy/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/pgsanity/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/pgspecial/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/phe/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/phonenumbers/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/phonopy/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/phpserialize/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/piccata/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/pickleshare/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/picos/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/pid/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/piep/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/piexif/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/pika-pool/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/pika/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/pikepdf/default.nix75
-rw-r--r--nixpkgs/pkgs/development/python-modules/pilkit/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/pillow/default.nix75
-rw-r--r--nixpkgs/pkgs/development/python-modules/pillowfight/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/pims/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/pint/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/pip-tools/default.nix54
-rw-r--r--nixpkgs/pkgs/development/python-modules/pip/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/pip2nix/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/pipdate/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/pivy/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/pkgconfig/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/pkgconfig/executable.patch38
-rw-r--r--nixpkgs/pkgs/development/python-modules/pkginfo/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/plac/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/plaid-python/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/plaster-pastedeploy/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/plaster/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/plone-testing/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/plotly/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/pluggy/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/pluginbase/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/plumbum/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/ply/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/plyfile/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/plyplus/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/plyvel/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/pocket/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/podcastparser/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/podcats/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/poetry/default.nix89
-rw-r--r--nixpkgs/pkgs/development/python-modules/poetry/glob2.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/poetry/jsonschema.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/polib/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/pomegranate/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/poppler-qt5/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/poppler-qt5/poppler-include-dir.patch12
-rw-r--r--nixpkgs/pkgs/development/python-modules/portalocker/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/portend/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/portpicker/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/posix_ipc/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/potr/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/power/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/powerline/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/pox/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/poyo/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/ppft/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pplpy/default.nix62
-rw-r--r--nixpkgs/pkgs/development/python-modules/pprintpp/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/praw/default.nix54
-rw-r--r--nixpkgs/pkgs/development/python-modules/prawcore/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/pre-commit/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/precis-i18n/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/preggy/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/premailer/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/preshed/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/pretend/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/prettytable/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/priority/deadline.patch39
-rw-r--r--nixpkgs/pkgs/development/python-modules/priority/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/proboscis/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/process-tests/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/proglog/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/progress/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/progressbar/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/progressbar2/default.nix50
-rw-r--r--nixpkgs/pkgs/development/python-modules/progressbar231/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/progressbar33/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/prometheus_client/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/prompt_toolkit/1.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/prompt_toolkit/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/property-manager/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/protobuf/default.nix66
-rw-r--r--nixpkgs/pkgs/development/python-modules/prov/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/psd-tools/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/psutil/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/psycopg2/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/ptable/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/ptest/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/ptpython/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/ptyprocess/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/publicsuffix/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/pudb/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/pulp/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/pure-python-adb-homeassistant/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/purepng/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/purl/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/pushbullet/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/pushover/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/pvlib/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/pweave/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/pwntools/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/py-cpuinfo/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/py-lru-cache/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/py-radix/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/py-vapid/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/py/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/py3dns/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/py3exiv2/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/py3exiv2/setup.patch11
-rw-r--r--nixpkgs/pkgs/development/python-modules/py3status/default.nix54
-rw-r--r--nixpkgs/pkgs/development/python-modules/py4j/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyGithub/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/py_scrypt/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/py_stringmatching/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyacoustid/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyaes/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyairvisual/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyalgotrade/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyamf/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyamg/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyaml/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyannotate/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyarrow/default.nix77
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyasn1-modules/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyasn1/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyatmo/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyatspi/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyatv/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyaudio/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyavm/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyaxmlparser/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/pybase64/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/pybfd/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pybids/default.nix49
-rw-r--r--nixpkgs/pkgs/development/python-modules/pybind11/default.nix58
-rw-r--r--nixpkgs/pkgs/development/python-modules/pybindgen/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyblake2/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyblock/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyblosxom/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/pybluez/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/pybotvac/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/pybrowserid/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/pybtex-docutils/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/pybtex/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/pybullet/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/pybullet/static-libs.patch13
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycairo/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycallgraph/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycangjie/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycapnp/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycaption/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycarddav/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycares/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycassa/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycategories/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycategories/infix.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycdio/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/pychart/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/pychef/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/pychromecast/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycodestyle/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycollada/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycontracts/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycosat/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycountry/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycparser/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycrc/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycrypto/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycryptodome/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycryptodomex/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycryptopp/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyct/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycuda/compyte.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycuda/default.nix70
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycups/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycurl/default.nix56
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycurl2/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/pydantic/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/pydbus/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/pydenticon/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/pydispatcher/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pydns/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/pydocstyle/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/pydocumentdb/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pydot/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/pydot/hardcode-graphviz-path.patch13
-rw-r--r--nixpkgs/pkgs/development/python-modules/pydot_ng/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/pydotplus/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pydub/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/pydy/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyechonest/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyelftools/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyemd/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyenchant/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyepsg/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyexcelerator/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyexiv2/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyext/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyezminc/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyfaidx/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyfakefs/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyfantom/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyfftw/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyfiglet/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyflakes/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyfma/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyfribidi/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyftdi/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyftgl/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyftpdlib/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyfttt/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyfxa/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygal/default.nix58
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygame/default.nix49
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygame_sdl2/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygbm/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygccxml/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygdbmi/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygeoip/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygit2/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyglet/default.nix72
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygments-markdown-lexer/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygmo/default.nix52
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygobject/3.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygobject/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygobject/pygobject-2.0-fix-darwin.patch88
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygobject/pygobject-2.28.6-gio-types-2.32.patch50
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygobject/pygobject-2.28.6-set_qdata.patch28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygpgme/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygraphviz/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygraphviz/graphviz-path.patch13
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygreat/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygtail/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygtk/default.nix60
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygtksourceview/codegendir.patch25
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygtksourceview/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyhamcrest/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyhepmc/default.nix59
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyhepmc/pyhepmc_export_edges.patch204
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyhepmc/pyhepmc_export_flow.patch20
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyhocon/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyhomematic/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyicu/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyinotify/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyinputevent/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyinsane2/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyjade/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyjet/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyjwkest/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyjwt/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pykde4/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/pykde4/dlfcn.patch13
-rw-r--r--nixpkgs/pkgs/development/python-modules/pykde4/kdelibs.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/pykdtree/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/pykeepass/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/pykerberos/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/pykickstart/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/pykka/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/pylama/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/pylast/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/pylev/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/pylibacl/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/pylibconfig2/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/pylibgen/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyliblo/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/pylibmc/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/pylint/1.9.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/pylint/default.nix50
-rw-r--r--nixpkgs/pkgs/development/python-modules/pylru/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyls-black/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyls-isort/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyls-mypy/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/pylti/default.nix52
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymacaroons/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymaging/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymaging_png/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymatgen-lammps/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymatgen/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymbolic/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymc3/default.nix63
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymediainfo/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyment/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymetar/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymongo/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/pympler/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymsgbox/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymssql/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymvglive/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymysql/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymysqlsa/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymystem3/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/pynac/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/pynacl/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/pynamodb/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/pync/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/pynisher/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/pynmea2/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/pynvim/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/pynzb/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyobjc/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyocr/default.nix66
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyocr/paths.patch108
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyodbc/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyogg/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyogg/pyogg-paths.patch79
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyomo/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyopencl/default.nix49
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyopengl/default.nix50
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyopenssl/default.nix90
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyotp/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyowm/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/pypandoc/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyparser/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyparsing/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyparted/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/pypcap/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/pypdf/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/pypdf2/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/pypeg2/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyperclip/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyperf/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyphen/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/pypillowfight/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyplatec/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/pypoppler/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/pypoppler/pypoppler-0.39.0.patch23
-rw-r--r--nixpkgs/pkgs/development/python-modules/pypoppler/pypoppler-poppler.c.patch12
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyprind/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyprof2calltree/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyproj/001.proj.patch47
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyproj/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyptlib/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyqrcode/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyqt/4.x.nix69
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyqt/5.x.nix146
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyqt/pyqt5-fix-dbus-mainloop-support.patch70
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyqtgraph/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyqtwebengine/default.nix93
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyquery/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyramid/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyramid_beaker/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyramid_chameleon/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyramid_chameleon/test-renderers-pyramid-import.patch11
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyramid_exclog/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyramid_hawkauth/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyramid_jinja2/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyramid_mako/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyramid_multiauth/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyreadability/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyregion/default.nix60
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyreport/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyres/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyrfc3339/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyro-ppl/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyro4/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyroute2/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyrr/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyrsistent/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyrss2gen/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyrtlsdr/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysam/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysaml2/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysaml2/hardcode-xmlsec1-path.patch39
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysc2/default.nix63
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysc2/fix-setup-for-py3.patch64
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysc2/parameterize-runconfig-sc2path.patch18
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyscard/default.nix50
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyscard/ignore-macos-bug.patch22
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyschedule/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyscss/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysdl2/PySDL2-dll.patch119
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysdl2/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysendfile/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysensors/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyserial/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysftp/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysha3/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyshp/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyside/apiextractor.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyside/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyside/gcc6.patch18
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyside/generatorrunner.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyside/shiboken.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyside/shiboken_py35.patch12
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyside/tools.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyside2-tools/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyside2/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyside2/dont_ignore_optional_modules.patch11
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysigset/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyslurm/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysmbc/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysmf/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysmi/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysnmp/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysocks/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysolr/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysonos/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyspark/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysparse/default.nix49
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysparse/dropPackageLoader.patch88
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyspf/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyspinel/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyspotify/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyspread/default.nix56
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysptk/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysqlite/default.nix57
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysrim/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysrt/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyssim/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/pystache/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/pystemd/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/pystemmer/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysvn/default.nix58
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytado/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytaglib/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyte/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytesseract/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytesseract/tesseract-binary.patch13
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-aiohttp/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-annotate/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-ansible/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-arraydiff/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-astropy/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-asyncio/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-benchmark/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-catchlog/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-check/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-click/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-cov/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-cram/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-datafiles/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-dependency/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-django/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-doctestplus/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-env/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-expect/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-faulthandler/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-fixture-config/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-flake8/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-flakes/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-flask/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-forked/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-helpers-namespace/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-httpbin/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-isort/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-localserver/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-mock/default.nix50
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-mpl/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-mypy/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-openfiles/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-ordering/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-pep257/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-pep8/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-pylint/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-quickcheck/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-raisesregexp/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-random-order/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-relaxed/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-remotedata/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-repeat/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-rerunfailures/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-sanic/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-server-fixtures/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-services/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-shutil/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-socket/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-subtesthack/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-sugar/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-testmon/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-timeout/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-tornado/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-virtualenv/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-warnings/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-watch/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-xdist/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-xprocess/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest/4.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest/default.nix53
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytestcache/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytestrunner/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-axolotl-curve25519/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-axolotl/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-binance/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-ctags3/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-daemon/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-dbusmock/default.nix59
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-docx/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-dotenv/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-editor/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-efl/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-engineio/default.nix53
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-etcd/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-fontconfig/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-forecastio/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-gitlab/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-gnupg/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-hosts/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-igraph/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-jenkins/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-jose/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-json-logger/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-jsonrpc-server/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-language-server/default.nix65
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-ldap-test/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-levenshtein/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-libarchive/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-ly/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-lz4/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-magic/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-mapnik/default.nix66
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-markdown-math/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-mnist/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-oauth2/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-otr/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-packer/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-periphery/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-pipedrive/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-prctl/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-prctl/skip_bad_tests.patch34
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-ptrace/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-rapidjson/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-redis-lock/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-simple-hipchat/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-slugify/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-snappy/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-socketio/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-sql/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-stdnum/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-telegram-bot/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-u2flib-host/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-uinput/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-unshare/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-utils/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-vagrant/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-vipaccess/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-wifi/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-xmp-toolkit/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/python2-pythondialog/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/python3-openid/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/python_fedora/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/python_keyczar/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/python_mimeparse/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/python_openzwave/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/python_statsd/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pythonirclib/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/pythonix/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pythonnet/default.nix84
-rw-r--r--nixpkgs/pkgs/development/python-modules/pythonocc-core/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytidylib/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytimeparse/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytoml/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytools/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytorch/default.nix109
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytrends/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytricia/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytun/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytz/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytzdata/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyu2f/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyudev/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyunifi/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyupdate/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyusb/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyutil/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyutilib/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyuv/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyuv/pyuv-external-libuv.patch25
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyvcd/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyviz-comms/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyvmomi/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyvoro/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/pywal/convert.patch21
-rw-r--r--nixpkgs/pkgs/development/python-modules/pywal/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/pywal/feh.patch39
-rw-r--r--nixpkgs/pkgs/development/python-modules/pywatchman/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/pywavelets/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/pywbem/default.nix57
-rw-r--r--nixpkgs/pkgs/development/python-modules/pywebdav/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/pywebkitgtk/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/pywebpush/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pywinrm/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyx/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyxattr/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyxdg/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyxl3/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyxml/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyyaml/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyzmq/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyzufall/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/qasm2image/default.nix52
-rw-r--r--nixpkgs/pkgs/development/python-modules/qdarkstyle/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/qiskit/default.nix63
-rw-r--r--nixpkgs/pkgs/development/python-modules/qpid-python/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/qrcode/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/qscintilla-qt5/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/qscintilla/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/qserve/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/qtawesome/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/qtconsole/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/qtpy/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/quamash/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/quandl/default.nix55
-rw-r--r--nixpkgs/pkgs/development/python-modules/quantities/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/queuelib/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/qutip/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/r2pipe/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/rabbitpy/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/radicale_infcloud/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/radio_beam/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/rainbowstream/default.nix54
-rw-r--r--nixpkgs/pkgs/development/python-modules/rainbowstream/image.patch18
-rw-r--r--nixpkgs/pkgs/development/python-modules/ramlfications/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/random2/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/rarfile/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/rasterio/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/ratelimiter/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/raven/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/rawkit/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/rbtools/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/rcssmin/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/rdflib/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/readchar/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/readme/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/readme_renderer/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/readthedocs-sphinx-ext/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/rebulk/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/recaptcha_client/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/recommonmark/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/recursive-pth-loader/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/recursive-pth-loader/sitecustomize.py46
-rw-r--r--nixpkgs/pkgs/development/python-modules/redis/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/rednose/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/regex/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/regional/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/reikna/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/relatorio/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/remotecv/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/remotecv/install_requires.patch16
-rw-r--r--nixpkgs/pkgs/development/python-modules/rencode/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/repeated_test/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/repocheck/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/reportlab/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/repoze_lru/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/repoze_sphinx_autointerface/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/repoze_who/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/reproject/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/requests-aws4auth/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/requests-cache/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/requests-file/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/requests-kerberos/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/requests-kerberos/fix_setup.patch9
-rw-r--r--nixpkgs/pkgs/development/python-modules/requests-mock/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/requests-oauthlib/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/requests-toolbelt/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/requests-unixsocket/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/requests/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/requests_download/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/requests_ntlm/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/requestsexceptions/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/resampy/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/responses/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/restructuredtext_lint/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/restview/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/rethinkdb/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/retry/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/retry_decorator/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/retrying/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/rfc-bibtex/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/rfc3986/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/rfc3987/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/rfc6555/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/rfc6555/disable_network_tests.patch31
-rw-r--r--nixpkgs/pkgs/development/python-modules/rfc7464/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/rhpl/builder.sh13
-rw-r--r--nixpkgs/pkgs/development/python-modules/rhpl/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/rig/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/ripser/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/rjsmin/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/rl-coach/default.nix98
-rw-r--r--nixpkgs/pkgs/development/python-modules/rlp/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/robomachine/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/roboschool/default.nix77
-rw-r--r--nixpkgs/pkgs/development/python-modules/robot-detection/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/robotframework-requests/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/robotframework-ride/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/robotframework-selenium2library/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/robotframework-seleniumlibrary/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/robotframework-sshlibrary/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/robotframework-tools/default.nix50
-rw-r--r--nixpkgs/pkgs/development/python-modules/robotframework/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/robotstatuschecker/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/robotsuite/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/rocket-errbot/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/roman/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/root_numpy/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/rootpy/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/rope/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/ropper/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/routes/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/rpdb/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/rpkg/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/rply/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/rpmfluff/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/rpy2/default.nix108
-rw-r--r--nixpkgs/pkgs/development/python-modules/rpy2/r-libs-site.patch20
-rw-r--r--nixpkgs/pkgs/development/python-modules/rpyc/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/rq/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/rsa/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/rtslib/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/ruamel_base/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/ruamel_ordereddict/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/ruamel_yaml/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/rubymarshal/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/ruffus/default.nix53
-rw-r--r--nixpkgs/pkgs/development/python-modules/runsnakerun/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/runway-python/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/rx/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/s2clientprotocol/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/s2clientprotocol/pure-version.patch13
-rw-r--r--nixpkgs/pkgs/development/python-modules/s3fs/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/s3transfer/default.nix53
-rw-r--r--nixpkgs/pkgs/development/python-modules/sabyenc/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/safe/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/salmon-mail/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/sampledata/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/samplerate/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/sandboxlib/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/sanic/default.nix68
-rw-r--r--nixpkgs/pkgs/development/python-modules/sarge/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/sasmodels/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/scales/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/scandir/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/scapy/default.nix55
-rw-r--r--nixpkgs/pkgs/development/python-modules/scapy/fix-version.patch13
-rw-r--r--nixpkgs/pkgs/development/python-modules/schedule/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/schema/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/scikit-bio/default.nix54
-rw-r--r--nixpkgs/pkgs/development/python-modules/scikit-build/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/scikit-build/fix_pytestrunner_req.patch13
-rw-r--r--nixpkgs/pkgs/development/python-modules/scikit-fmm/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/scikit-image/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/scikit-optimize/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/scikit-tda/default.nix64
-rw-r--r--nixpkgs/pkgs/development/python-modules/scikitlearn/0.20.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/scikitlearn/default.nix68
-rw-r--r--nixpkgs/pkgs/development/python-modules/scikits-odes/default.nix55
-rw-r--r--nixpkgs/pkgs/development/python-modules/scipy/default.nix56
-rw-r--r--nixpkgs/pkgs/development/python-modules/scour/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/scp/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/scrapy/default.nix50
-rw-r--r--nixpkgs/pkgs/development/python-modules/scrapy/permissions-fix.patch23
-rw-r--r--nixpkgs/pkgs/development/python-modules/scripttest/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/sdnotify/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/seaborn/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/seabreeze/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/secp256k1/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/secretstorage/2.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/secretstorage/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/seekpath/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/selectors2/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/selectors34/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/selenium/default.nix56
-rw-r--r--nixpkgs/pkgs/development/python-modules/semantic-version/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/semantic/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/semver/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/send2trash/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/sentinel/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/sentry-sdk/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/sepaxml/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/seqdiag/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/serpent/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/serpy/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/serverlessrepo/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/serversyncstorage/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/service_identity/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/setproctitle/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/setuptools-git/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/setuptools-scm-git-archive/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/setuptools/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/setuptools_scm/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/setuptoolsdarcs/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/setuptoolstrial/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/sexpdata/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/sh/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/sh/disable-broken-tests-darwin.patch49
-rw-r--r--nixpkgs/pkgs/development/python-modules/shamir-mnemonic/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/shapely/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/shapely/library-paths.patch127
-rw-r--r--nixpkgs/pkgs/development/python-modules/sharedmem/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/shellingham/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/shiboken2/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/shiboken2/nix_compile_cflags.patch27
-rw-r--r--nixpkgs/pkgs/development/python-modules/shippai/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/shodan/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/shortuuid/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/should-dsl/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/shouldbe/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/showit/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/sievelib/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/signedjson/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/sigtools/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/simanneal/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/simple-salesforce/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/simple-websocket-server/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/simpleai/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/simplebayes/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/simpleeval/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/simplefix/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/simplegeneric/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/simplejson/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/simplekml/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/simpleparse/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/simpy/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/singledispatch/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/sip/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/sipsimple/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/six/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/sklearn-deap/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/slackclient/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/sleekxmpp/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/sleekxmpp/dnspython-ip6.patch55
-rw-r--r--nixpkgs/pkgs/development/python-modules/slicedimage/default.nix50
-rw-r--r--nixpkgs/pkgs/development/python-modules/slicerator/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/slimit/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/slither-analyzer/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/slixmpp/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/slixmpp/hardcode-gnupg-path.patch26
-rw-r--r--nixpkgs/pkgs/development/python-modules/slob/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/slowaes/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/sly/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/smart_open/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/smartdc/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/smartypants/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/smmap/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/smmap2/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/smugline/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/smugpy/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/snakeviz/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/snapcast/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/snappergui/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/sniffio/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/snowballstemmer/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/snscrape/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/snug/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/snuggs/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/sockjs-tornado/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/socksipy-branch/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/soco/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/sopel/default.nix54
-rw-r--r--nixpkgs/pkgs/development/python-modules/sorl_thumbnail/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/sortedcollections/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/sortedcontainers/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/sounddevice/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/sounddevice/fix-portaudio-library-path.patch35
-rw-r--r--nixpkgs/pkgs/development/python-modules/soundfile/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/soupsieve/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/spacy/default.nix75
-rw-r--r--nixpkgs/pkgs/development/python-modules/spacy/models.json96
-rw-r--r--nixpkgs/pkgs/development/python-modules/spacy/models.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/spake2/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/spambayes/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/spark_parser/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/sparqlwrapper/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/sparse/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/speaklater/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/spectral-cube/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/speedtest-cli/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/spglib/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphfile/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinx-argparse/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinx-jinja/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinx-navtree/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinx-testing/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinx/default.nix75
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinx_pypi_upload/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinx_rtd_theme/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinxcontrib-bibtex/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinxcontrib-blockdiag/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinxcontrib-openapi/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinxcontrib-spelling/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinxcontrib-websupport/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinxcontrib_httpdomain/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinxcontrib_newsfeed/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinxcontrib_plantuml/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/splinter/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/spotipy/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/spyder-kernels/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/spyder/default.nix62
-rw-r--r--nixpkgs/pkgs/development/python-modules/sqlalchemy-imageattach/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/sqlalchemy-migrate/default.nix49
-rw-r--r--nixpkgs/pkgs/development/python-modules/sqlalchemy-utils/default.nix50
-rw-r--r--nixpkgs/pkgs/development/python-modules/sqlalchemy/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/sqlite3dbm/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/sqlmap/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/sqlobject/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/sqlparse/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/squaremap/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/srptools/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/srsly/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/ssdeep/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/ssdp/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/sseclient/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/sshpubkeys/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/sslib/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/starfish/default.nix89
-rw-r--r--nixpkgs/pkgs/development/python-modules/starlette/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/staticjinja/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/statistics/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/statsd/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/statsmodels/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/stem/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/stevedore/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/stm32loader/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/stompclient/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/strategies/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/stravalib/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/streamz/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/strict-rfc3339/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/strictyaml/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/stringcase/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/stringtemplate/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/stripe/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/structlog/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/stumpy/default.nix55
-rw-r--r--nixpkgs/pkgs/development/python-modules/subdownloader/default.nix66
-rw-r--r--nixpkgs/pkgs/development/python-modules/subliminal/default.nix57
-rw-r--r--nixpkgs/pkgs/development/python-modules/subprocess32/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/subunit/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/suds-jurko/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/suds/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/suds/suds-0.4-CVE-2013-2217.patch19
-rw-r--r--nixpkgs/pkgs/development/python-modules/sumo/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/sunpy/default.nix80
-rw-r--r--nixpkgs/pkgs/development/python-modules/supervise_api/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/supervise_api/supervise-path.patch15
-rw-r--r--nixpkgs/pkgs/development/python-modules/supervisor/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/sure/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/suseapi/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/svg-path/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/svg2tikz/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/svgwrite/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/swagger-spec-validator/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/swagger-ui-bundle/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/sybase/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/sybil/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/symengine/default.nix52
-rw-r--r--nixpkgs/pkgs/development/python-modules/sympy/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/systemd/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/tableaudocumentapi/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/tables/default.nix57
-rw-r--r--nixpkgs/pkgs/development/python-modules/tablib/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/tabulate/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/tadasets/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/tarman/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/taskw/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/taskw/use-template-for-taskwarrior-install-path.patch14
-rw-r--r--nixpkgs/pkgs/development/python-modules/tblib/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/telegram/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/telethon-session-sqlalchemy/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/telethon/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/tempita/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/tempora/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/tenacity/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/tensorflow-estimator/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/tensorflow-probability/default.nix110
-rw-r--r--nixpkgs/pkgs/development/python-modules/tensorflow-tensorboard/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/tensorflow/bin.nix111
-rw-r--r--nixpkgs/pkgs/development/python-modules/tensorflow/binary-hashes.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/tensorflow/default.nix357
-rw-r--r--nixpkgs/pkgs/development/python-modules/tensorflow/no-saved-proto.patch14
-rwxr-xr-xnixpkgs/pkgs/development/python-modules/tensorflow/prefetcher.sh33
-rw-r--r--nixpkgs/pkgs/development/python-modules/tensorflow/system-jsoncpp.patch21
-rw-r--r--nixpkgs/pkgs/development/python-modules/termcolor/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/terminado/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/terminaltables/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/termstyle/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/tess/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/testfixtures/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/testpath/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/testrepository/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/testresources/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/testscenarios/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/testtools/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/text-unidecode/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/textacy/default.nix59
-rw-r--r--nixpkgs/pkgs/development/python-modules/texttable/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/tflearn/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/thespian/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/thinc/default.nix86
-rw-r--r--nixpkgs/pkgs/development/python-modules/threadpool/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/thrift/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/thumbor/0001-Don-t-use-which-implementation-to-find-required-exec.patch277
-rw-r--r--nixpkgs/pkgs/development/python-modules/thumbor/default.nix90
-rw-r--r--nixpkgs/pkgs/development/python-modules/thumborpexif/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/tifffile/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/tifffile/python2-regex-compat.patch23
-rw-r--r--nixpkgs/pkgs/development/python-modules/tilestache/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/timelib/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/timeout-decorator/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/tinycss/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/tinycss2/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/tinycss2/remove-redundant-dependency.patch12
-rw-r--r--nixpkgs/pkgs/development/python-modules/tiros/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/tissue/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/titlecase/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/tkinter/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/tld/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/tldextract/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/tlsh/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/tlslite-ng/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/tlslite/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/tmdb3/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/todoist/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/toggl-cli/default.nix57
-rw-r--r--nixpkgs/pkgs/development/python-modules/tokenlib/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/tokenserver/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/toml/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/tomlkit/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/toolz/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/toposort/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/torchvision/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/tornado/default.nix52
-rw-r--r--nixpkgs/pkgs/development/python-modules/tox/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/tqdm/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/traceback2/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/tracing/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/trackpy/default.nix57
-rw-r--r--nixpkgs/pkgs/development/python-modules/traitlets/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/traits/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/transaction/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/transitions/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/translationstring/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/transmissionrpc/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/treq/default.nix56
-rw-r--r--nixpkgs/pkgs/development/python-modules/trezor/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/trezor_agent/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/trio/default.nix50
-rw-r--r--nixpkgs/pkgs/development/python-modules/trollius/default.nix52
-rw-r--r--nixpkgs/pkgs/development/python-modules/trollius/tests.patch13
-rw-r--r--nixpkgs/pkgs/development/python-modules/trueskill/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/trustme/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/ttystatus/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/tunigo/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/tvdb_api/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/tvnamer/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/tweepy/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/twiggy/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/twilio/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/twill/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/twine/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/twisted/default.nix60
-rw-r--r--nixpkgs/pkgs/development/python-modules/twitter-common-collections/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/twitter-common-confluence/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/twitter-common-dirutil/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/twitter-common-lang/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/twitter-common-log/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/twitter-common-options/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/twitter/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/txaio/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/txamqp/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/txgithub/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/txrequests/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/txtorcon/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/typed-ast/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/typeguard/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/typesentry/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/typing-extensions/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/typing/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/typogrify/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/tzlocal/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/u-msgpack-python/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/ua-parser/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/uamqp/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/uarray/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/ujson/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/ukpostcodeparser/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/umalqurra/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/umap-learn/default.nix49
-rw-r--r--nixpkgs/pkgs/development/python-modules/umemcache/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/uncertainties/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/uncompyle6/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/unicodecsv/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/unicorn/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/unidecode/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/unidiff/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/unifi/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/units/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/unittest-data-provider/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/unittest-xml-reporting/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/unittest2/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/unpaddedbase64/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/upass/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/update-copyright/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/update-dotdee/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/update_checker/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/uproot-methods/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/uproot/default.nix54
-rw-r--r--nixpkgs/pkgs/development/python-modules/uptime/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/uranium/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/uritemplate/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/uritools/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/urlgrabber/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/urllib3/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/urwid/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/urwidtrees/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/us/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/usbtmc/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/user-agents/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/uuid/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/uvicorn/default.nix52
-rw-r--r--nixpkgs/pkgs/development/python-modules/uvloop/darwin_sandbox.patch28
-rw-r--r--nixpkgs/pkgs/development/python-modules/uvloop/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/validate-email/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/validators/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/validictory/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/vcrpy/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/vcversioner/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/vdf/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/vega/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/vega_datasets/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/venusian/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/verboselogs/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/versioneer/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/versiontools/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/veryprettytable/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/vidstab/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/vine/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/virtkey/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/virtual-display/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/virtualenv-clone/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/virtualenv/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/virtualenv/virtualenv-change-prefix.patch62
-rw-r--r--nixpkgs/pkgs/development/python-modules/virtualenvwrapper/default.nix75
-rw-r--r--nixpkgs/pkgs/development/python-modules/visitor/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/vmprof/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/vobject/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/voluptuous-serialize/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/voluptuous/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/vowpalwabbit/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/vowpalwabbit/vowpal-wabbit-find-boost.diff34
-rw-r--r--nixpkgs/pkgs/development/python-modules/vsts/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/vultr/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/vxi11/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/w3lib/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/waitress-django/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/waitress-django/setup.py12
-rwxr-xr-xnixpkgs/pkgs/development/python-modules/waitress-django/src/waitress-serve-django14
-rw-r--r--nixpkgs/pkgs/development/python-modules/waitress/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/wakeonlan/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/warlock/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/warrant/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/wasabi/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/watchdog/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/wcwidth/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/weasyprint/default.nix67
-rw-r--r--nixpkgs/pkgs/development/python-modules/weasyprint/library-paths.patch38
-rw-r--r--nixpkgs/pkgs/development/python-modules/web/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/webapp2/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/webassets/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/webcolors/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/webencodings/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/webhelpers/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/webob/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/weboob/default.nix53
-rw-r--r--nixpkgs/pkgs/development/python-modules/webrtcvad/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/websocket_client/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/websockets/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/websockify/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/webtest/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/werkzeug/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/wget/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/wheel/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/whichcraft/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/whisper/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/whitenoise/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/whoosh/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/widgetsnbextension/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/willow/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/word2vec/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/wordfreq/default.nix49
-rw-r--r--nixpkgs/pkgs/development/python-modules/worldengine/default.nix63
-rw-r--r--nixpkgs/pkgs/development/python-modules/wptserve/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/wrapt/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/wrf-python/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/ws4py/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/wsgiproxy/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/wsgiproxy2/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/wsproto/0.14.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/wsproto/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/wtforms/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/wurlitzer/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/wxPython/3.0.nix76
-rw-r--r--nixpkgs/pkgs/development/python-modules/wxPython/4.0.nix83
-rw-r--r--nixpkgs/pkgs/development/python-modules/x11_hash/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/x256/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/xapian/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/xarray/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/xattr/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/xcaplib/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/xcffib/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/xdis/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/xdot/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/xgboost/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/xgboost/lib-path-for-python.patch38
-rw-r--r--nixpkgs/pkgs/development/python-modules/xhtml2pdf/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/xkcdpass/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/xlib/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/xlrd/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/xlsx2csv/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/xlwt/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/xml2rfc/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/xmlschema/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/xmltodict/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/xmpppy/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/xmpppy/ssl.patch25
-rw-r--r--nixpkgs/pkgs/development/python-modules/xnd/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/xstatic-bootbox/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/xstatic-bootstrap/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/xstatic-jquery-file-upload/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/xstatic-jquery-ui/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/xstatic-jquery/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/xstatic-pygments/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/xstatic/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/xvfbwrapper/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/xxhash/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/yahooweather/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/yamllint/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/yanc/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/yapf/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/yappi/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/yappi/tests.patch12
-rw-r--r--nixpkgs/pkgs/development/python-modules/yapsy/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/yarg/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/yarl/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/yattag/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/yenc/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/yolk/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/yowsup/argparse-dependency.patch13
-rw-r--r--nixpkgs/pkgs/development/python-modules/yowsup/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/yt/default.nix52
-rw-r--r--nixpkgs/pkgs/development/python-modules/yubico-client/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/zake/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/zarr/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/zbaemon/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/zbase32/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/zc_lockfile/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/zconfig/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/zconfig/remove-setlocale-test.patch24
-rw-r--r--nixpkgs/pkgs/development/python-modules/zdaemon/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/zeep/default.nix85
-rw-r--r--nixpkgs/pkgs/development/python-modules/zerobin/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/zeroc-ice/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/zeroconf/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/zerorpc/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/zetup/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/zfec/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/zict/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/zipfile36/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/zipp/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/zipstream/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/zm-py/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/zodb/default.nix57
-rw-r--r--nixpkgs/pkgs/development/python-modules/zodbpickle/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/zope-deferredimport/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/zope-hookable/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/zope_broken/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/zope_component/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/zope_configuration/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/zope_contenttype/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/zope_copy/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/zope_deprecation/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/zope_dottedname/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/zope_event/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/zope_exceptions/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/zope_filerepresentation/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/zope_i18n/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/zope_i18nmessageid/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/zope_interface/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/zope_lifecycleevent/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/zope_location/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/zope_proxy/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/zope_schema/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/zope_size/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/zope_testing/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/zope_testrunner/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/zstd/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/zxcvbn/default.nix27
2905 files changed, 93843 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/python-modules/3to2/default.nix b/nixpkgs/pkgs/development/python-modules/3to2/default.nix
new file mode 100644
index 00000000000..4e6c0f9214c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/3to2/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "3to2";
+ version = "1.1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "fef50b2b881ef743f269946e1090b77567b71bb9a9ce64b7f8e699b562ff685c";
+ };
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ py.test lib3to2/tests
+ '';
+
+ # Test failing due to upstream issue (https://bitbucket.org/amentajo/lib3to2/issues/50/testsuite-fails-with-new-python-35)
+ doCheck = false;
+
+ meta = {
+ homepage = https://bitbucket.org/amentajo/lib3to2;
+ description = "Refactors valid 3.x syntax into valid 2.x syntax, if a syntactical conversion is possible";
+ license = lib.licenses.asl20;
+ maintainers = with lib.maintainers; [ mt-caret ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/APScheduler/default.nix b/nixpkgs/pkgs/development/python-modules/APScheduler/default.nix
new file mode 100644
index 00000000000..4032b527e88
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/APScheduler/default.nix
@@ -0,0 +1,64 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, setuptools_scm
+, pytest
+, pytestcov
+, sqlalchemy
+, tornado
+, twisted
+, mock
+, trollius
+, gevent
+, six
+, pytz
+, tzlocal
+, funcsigs
+, futures
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "APScheduler";
+ version = "3.6.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1c56066rx09xk1zbd156whsynlakxazqq64i509id17015wzp6jj";
+ };
+
+ buildInputs = [
+ setuptools_scm
+ ];
+
+ checkInputs = [
+ pytest
+ pytestcov
+ sqlalchemy
+ tornado
+ twisted
+ mock
+ trollius
+ gevent
+ ];
+
+ propagatedBuildInputs = [
+ six
+ pytz
+ tzlocal
+ funcsigs
+ ] ++ lib.optional (!isPy3k) futures;
+
+ checkPhase = ''
+ py.test
+ '';
+
+ # Somehow it cannot find pytestcov
+ doCheck = false;
+
+ meta = with lib; {
+ description = "A Python library that lets you schedule your Python code to be executed";
+ homepage = https://pypi.python.org/pypi/APScheduler/;
+ license = licenses.mit;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/Babel/default.nix b/nixpkgs/pkgs/development/python-modules/Babel/default.nix
new file mode 100644
index 00000000000..34ee532c1fe
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/Babel/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildPythonPackage, fetchPypi, pytz, pytest, freezegun, glibcLocales }:
+
+buildPythonPackage rec {
+ pname = "Babel";
+ version = "2.6.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8cba50f48c529ca3fa18cf81fa9403be176d374ac4d60738b839122dfaaa3d23";
+ };
+
+ propagatedBuildInputs = [ pytz ];
+
+ checkInputs = [ pytest freezegun glibcLocales ];
+
+ preCheck = ''
+ export LC_ALL="en_US.UTF-8"
+ '';
+
+ meta = with lib; {
+ homepage = http://babel.edgewall.org;
+ description = "A collection of tools for internationalizing Python applications";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/Cython/default.nix b/nixpkgs/pkgs/development/python-modules/Cython/default.nix
new file mode 100644
index 00000000000..b88c3c69b5d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/Cython/default.nix
@@ -0,0 +1,65 @@
+{ lib
+, stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+, glibcLocales
+, pkgconfig
+, gdb
+, numpy
+, ncurses
+}:
+
+let
+ excludedTests = []
+ ++ [ "reimport_from_subinterpreter" ]
+ # cython's testsuite is not working very well with libc++
+ # We are however optimistic about things outside of testsuite still working
+ ++ stdenv.lib.optionals (stdenv.cc.isClang or false) [ "cpdef_extern_func" "libcpp_algo" ]
+ # Some tests in the test suite isn't working on aarch64. Disable them for
+ # now until upstream finds a workaround.
+ # Upstream issue here: https://github.com/cython/cython/issues/2308
+ ++ stdenv.lib.optionals stdenv.isAarch64 [ "numpy_memoryview" ]
+ ++ stdenv.lib.optionals stdenv.isi686 [ "future_division" "overflow_check_longlong" ]
+ ;
+
+in buildPythonPackage rec {
+ pname = "Cython";
+ version = "0.29.13";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c29d069a4a30f472482343c866f7486731ad638ef9af92bfe5fca9c7323d638e";
+ };
+
+ nativeBuildInputs = [
+ pkgconfig
+ ];
+ checkInputs = [
+ numpy ncurses
+ ];
+ buildInputs = [ glibcLocales gdb ];
+ LC_ALL = "en_US.UTF-8";
+
+ checkPhase = ''
+ export HOME="$NIX_BUILD_TOP"
+ ${python.interpreter} runtests.py -j$NIX_BUILD_CORES \
+ --no-code-style \
+ ${stdenv.lib.optionalString (builtins.length excludedTests != 0)
+ ''--exclude="(${builtins.concatStringsSep "|" excludedTests})"''}
+ '';
+
+ # https://github.com/cython/cython/issues/2785
+ # Temporary solution
+ doCheck = false;
+
+# doCheck = !stdenv.isDarwin;
+
+
+ meta = {
+ description = "An optimising static compiler for both the Python programming language and the extended Cython programming language";
+ homepage = https://cython.org;
+ license = lib.licenses.asl20;
+ maintainers = with lib.maintainers; [ fridh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/Fabric/default.nix b/nixpkgs/pkgs/development/python-modules/Fabric/default.nix
new file mode 100644
index 00000000000..b0c81a62e33
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/Fabric/default.nix
@@ -0,0 +1,32 @@
+{ lib, buildPythonPackage, fetchPypi
+, cryptography
+, invoke
+, mock
+, paramiko
+, pytest
+, pytest-relaxed
+}:
+
+buildPythonPackage rec {
+ pname = "fabric";
+ version = "2.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "19nzdibjfndzcwvby20p59igqwyzw7skrb45v2mxqsjma5yjv114";
+ };
+
+ propagatedBuildInputs = [ invoke paramiko cryptography ];
+ checkInputs = [ pytest mock pytest-relaxed ];
+
+ checkPhase = ''
+ pytest tests
+ '';
+
+ meta = with lib; {
+ description = "Pythonic remote execution";
+ homepage = https://www.fabfile.org/;
+ license = licenses.bsd2;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/Flask-PyMongo/default.nix b/nixpkgs/pkgs/development/python-modules/Flask-PyMongo/default.nix
new file mode 100644
index 00000000000..3a01c9ba983
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/Flask-PyMongo/default.nix
@@ -0,0 +1,36 @@
+{ buildPythonPackage
+, fetchPypi
+, flask
+, pymongo
+, vcversioner
+, lib
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "flask-pymongo";
+ version = "2.3.0";
+
+ src = fetchPypi {
+ pname = "Flask-PyMongo";
+ inherit version;
+ sha256 = "051kwdk07y4xm4yawcjhn6bz8swxp9nanv7jj35mz2l0r0nv03k2";
+ };
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ # Tests seem to hang
+ doCheck = false;
+
+ propagatedBuildInputs = [ flask pymongo vcversioner ];
+
+ meta = {
+ homepage = "https://flask-pymongo.readthedocs.org/";
+ description = "PyMongo support for Flask applications";
+ license = lib.licenses.bsd2;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/FormEncode/default.nix b/nixpkgs/pkgs/development/python-modules/FormEncode/default.nix
new file mode 100644
index 00000000000..72086a3487f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/FormEncode/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, buildPythonPackage, fetchPypi, dnspython, pycountry, nose }:
+
+buildPythonPackage rec {
+ pname = "FormEncode";
+ version = "1.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1xm77h2mds2prlaz0z4nzkx13g61rx5c2v3vpgjq9d5ij8bzb8md";
+ };
+
+ buildInputs = [ dnspython pycountry nose ];
+
+ patchPhase = ''
+ # dnspython3 has been superseded, see its PyPI page
+ substituteInPlace setup.py --replace dnspython3 dnspython
+ '';
+
+ preCheck = ''
+ # two tests require dns resolving
+ sed -i 's/test_cyrillic_email/noop/' formencode/tests/test_email.py
+ sed -i 's/test_unicode_ascii_subgroup/noop/' formencode/tests/test_email.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "FormEncode validates and converts nested structures";
+ homepage = http://formencode.org;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/GeoIP/default.nix b/nixpkgs/pkgs/development/python-modules/GeoIP/default.nix
new file mode 100644
index 00000000000..550fa1da3ed
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/GeoIP/default.nix
@@ -0,0 +1,28 @@
+{lib, buildPythonPackage, fetchPypi
+, geoip, nose}:
+
+buildPythonPackage rec {
+ pname = "GeoIP";
+ version = "1.3.2";
+
+ checkInputs = [ nose ];
+ propagatedBuildInputs = [
+ geoip
+ ];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1rphxf3vrn8wywjgr397f49s0s22m83lpwcq45lm0h2p45mdm458";
+ };
+
+ # Tests cannot be run because they require data that isn't included in the
+ # release tarball.
+ checkPhase = "true";
+
+ meta = {
+ description = "MaxMind GeoIP Legacy Database - Python API";
+ homepage = https://www.maxmind.com/;
+ maintainers = with lib.maintainers; [ jluttine ];
+ license = lib.licenses.lgpl21Plus;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/GitPython/default.nix b/nixpkgs/pkgs/development/python-modules/GitPython/default.nix
new file mode 100644
index 00000000000..24fe4a2458d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/GitPython/default.nix
@@ -0,0 +1,31 @@
+{ lib, buildPythonPackage, fetchPypi, isPy27, substituteAll, git, gitdb2, mock, nose, ddt }:
+
+buildPythonPackage rec {
+ version = "2.1.11";
+ pname = "GitPython";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8237dc5bfd6f1366abeee5624111b9d6879393d84745a507de0fda86043b65a8";
+ };
+
+ patches = [
+ (substituteAll {
+ src = ./hardcode-git-path.patch;
+ inherit git;
+ })
+ ];
+
+ checkInputs = [ nose ] ++ lib.optional isPy27 mock;
+ propagatedBuildInputs = [ gitdb2 ddt ];
+
+ # Tests require a git repo
+ doCheck = false;
+
+ meta = {
+ description = "Python Git Library";
+ maintainers = [ ];
+ homepage = https://github.com/gitpython-developers/GitPython;
+ license = lib.licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/GitPython/hardcode-git-path.patch b/nixpkgs/pkgs/development/python-modules/GitPython/hardcode-git-path.patch
new file mode 100644
index 00000000000..93747995992
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/GitPython/hardcode-git-path.patch
@@ -0,0 +1,13 @@
+diff --git a/git/cmd.py b/git/cmd.py
+index a4faefe..51ad442 100644
+--- a/git/cmd.py
++++ b/git/cmd.py
+@@ -175,7 +175,7 @@ class Git(LazyMixin):
+
+ # CONFIGURATION
+
+- git_exec_name = "git" # default that should work on linux and windows
++ git_exec_name = "@git@/bin/git"
+
+ # Enables debugging of GitPython's git commands
+ GIT_PYTHON_TRACE = os.environ.get("GIT_PYTHON_TRACE", False)
diff --git a/nixpkgs/pkgs/development/python-modules/IPy/default.nix b/nixpkgs/pkgs/development/python-modules/IPy/default.nix
new file mode 100644
index 00000000000..7f258780d1c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/IPy/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi, nose }:
+
+buildPythonPackage rec {
+ pname = "IPy";
+ version = "1.00";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "08d6kcacj67mvh0b6y765ipccy6gi4w2ndd4v1l3im2qm1cgcarg";
+ };
+
+ checkInputs = [ nose ];
+
+ checkPhase = ''
+ nosetests -e fuzz
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Class and tools for handling of IPv4 and IPv6 addresses and networks";
+ homepage = "https://github.com/autocracy/python-ipy";
+ license = licenses.bsdOriginal;
+ maintainers = with maintainers; [ y0no ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/JPype1/default.nix b/nixpkgs/pkgs/development/python-modules/JPype1/default.nix
new file mode 100644
index 00000000000..44ec253fbf7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/JPype1/default.nix
@@ -0,0 +1,24 @@
+{ buildPythonPackage, fetchPypi, pytest }:
+
+buildPythonPackage rec {
+ pname = "JPype1";
+ version = "0.6.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6841523631874a731e1f94e1b1f130686ad3772030eaa3b6946256eeb1d10dd1";
+ };
+
+ patches = [ ./set-compiler-language.patch ];
+
+ checkInputs = [ pytest ];
+
+ # ImportError: Failed to import test module: test.testlucene
+ doCheck = false;
+
+ meta = {
+ homepage = "https://github.com/originell/jpype/";
+ license = "License :: OSI Approved :: Apache Software License";
+ description = "A Python to Java bridge.";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/JPype1/set-compiler-language.patch b/nixpkgs/pkgs/development/python-modules/JPype1/set-compiler-language.patch
new file mode 100644
index 00000000000..1d5921a6ffa
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/JPype1/set-compiler-language.patch
@@ -0,0 +1,12 @@
+diff -Naur a/setup.py b/setup.py
+--- a/setup.py 2017-01-12 19:08:44.000000000 -0500
++++ b/setup.py 2018-02-15 12:28:16.000000000 -0500
+@@ -123,7 +123,7 @@
+
+ # extra compile args
+ copt = {'msvc': ['/EHsc'],
+- 'unix' : ['-ggdb'],
++ 'unix' : ['-ggdb', '-x', 'c++'],
+ 'mingw32' : [],
+ }
+ # extra link args
diff --git a/nixpkgs/pkgs/development/python-modules/JayDeBeApi/default.nix b/nixpkgs/pkgs/development/python-modules/JayDeBeApi/default.nix
new file mode 100644
index 00000000000..a423945b0ce
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/JayDeBeApi/default.nix
@@ -0,0 +1,16 @@
+{ lib, buildPythonPackage, fetchPypi, JPype1 }:
+
+buildPythonPackage rec {
+ pname = "JayDeBeApi";
+ version = "1.1.1";
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0a189xs9zw81jvwwglvf2qyqnk6ra0biljssx9n4ffayqn9glbds";
+ };
+ propagatedBuildInputs = [ JPype1 ];
+ meta = {
+ homepage = "https://github.com/baztian/jaydebeapi";
+ license = lib.licenses.lgpl2;
+ description = "Use JDBC database drivers from Python 2/3 or Jython with a DB-API.";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/Logbook/default.nix b/nixpkgs/pkgs/development/python-modules/Logbook/default.nix
new file mode 100644
index 00000000000..503fefc0013
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/Logbook/default.nix
@@ -0,0 +1,29 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k, pytest, mock, brotli }:
+
+buildPythonPackage rec {
+ pname = "Logbook";
+ version = "1.4.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a5a96792abd8172c80d61b7530e134524f20e2841981038031e602ed5920fef5";
+ };
+
+ checkInputs = [ pytest ] ++ lib.optionals (!isPy3k) [ mock ];
+
+ propagatedBuildInputs = [ brotli ];
+
+ checkPhase = ''
+ find tests -name \*.pyc -delete
+ py.test tests
+ '';
+
+ # Some of the tests use localhost networking.
+ __darwinAllowLocalNetworking = true;
+
+ meta = {
+ homepage = https://pythonhosted.org/Logbook/;
+ description = "A logging replacement for Python";
+ license = lib.licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/Mako/default.nix b/nixpkgs/pkgs/development/python-modules/Mako/default.nix
new file mode 100644
index 00000000000..85493f2760a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/Mako/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, markupsafe
+, nose
+, mock
+, pytest
+, isPyPy
+}:
+
+buildPythonPackage rec {
+ pname = "Mako";
+ version = "1.0.12";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0cfa65de3a835e87eeca6ac856b3013aade55f49e32515f65d999f91a2324162";
+ };
+
+ checkInputs = [ markupsafe nose mock pytest ];
+ propagatedBuildInputs = [ markupsafe ];
+
+ doCheck = !isPyPy; # https://bitbucket.org/zzzeek/mako/issue/238/2-tests-failed-on-pypy-24-25
+
+ meta = {
+ description = "Super-fast templating language";
+ homepage = http://www.makotemplates.org;
+ license = lib.licenses.mit;
+ platforms = lib.platforms.unix;
+ maintainers = with lib.maintainers; [ domenkozar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/Markups/default.nix b/nixpkgs/pkgs/development/python-modules/Markups/default.nix
new file mode 100644
index 00000000000..6fe41e40419
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/Markups/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, python-markdown-math
+, markdown
+, docutils
+, pygments
+}:
+
+buildPythonPackage rec {
+ pname = "Markups";
+ version = "3.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1ea19458dfca6a4562044e701aa8698089a0c659fc535689ed260f89a04f8d39";
+ };
+
+ checkInputs = [ markdown docutils pygments ];
+ 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/nixpkgs/pkgs/development/python-modules/MechanicalSoup/default.nix b/nixpkgs/pkgs/development/python-modules/MechanicalSoup/default.nix
new file mode 100644
index 00000000000..6c4a2d310da
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/MechanicalSoup/default.nix
@@ -0,0 +1,33 @@
+{ fetchPypi, buildPythonPackage, lib
+, requests, beautifulsoup4, six, lxml
+, pytestrunner, requests-mock, pytestcov, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "MechanicalSoup";
+ version = "0.11.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0k59wwk75q7nz6i6gynvzhagy02ql0bv7py3qqcwgjw7607yq4i7";
+ };
+
+ checkInputs = [ pytest pytestrunner requests-mock pytestcov ];
+
+ propagatedBuildInputs = [ lxml requests beautifulsoup4 six ];
+
+ # Requires network
+ doCheck = false;
+
+ postPatch = ''
+ # Is in setup_requires but not used in setup.py...
+ substituteInPlace setup.py --replace "'pytest-runner'" ""
+ '';
+
+ meta = with lib; {
+ description = "A Python library for automating interaction with websites";
+ homepage = https://github.com/hickford/MechanicalSoup;
+ license = licenses.mit;
+ maintainers = [ maintainers.jgillich ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/Nikola/default.nix b/nixpkgs/pkgs/development/python-modules/Nikola/default.nix
new file mode 100644
index 00000000000..52cf7598da8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/Nikola/default.nix
@@ -0,0 +1,76 @@
+{ lib
+, buildPythonPackage
+, isPy3k
+, fetchPypi
+, doit
+, glibcLocales
+, pytest
+, pytestcov
+, mock
+, pygments
+, pillow
+, dateutil
+, docutils
+, Mako
+, unidecode
+, lxml
+, Yapsy
+, PyRSS2Gen
+, Logbook
+, blinker
+, natsort
+, requests
+, piexif
+, markdown
+, phpserialize
+, jinja2
+, Babel
+, freezegun
+, toml
+, notebook
+, ruamel_yaml
+, aiohttp
+, watchdog
+}:
+
+buildPythonPackage rec {
+ pname = "Nikola";
+ version = "8.0.2";
+
+ # Nix contains only Python 3 supported version of doit, which is a dependency
+ # of Nikola. Python 2 support would require older doit 0.29.0 (which on the
+ # other hand doesn't support Python 3.3). So, just disable Python 2.
+ disabled = !isPy3k;
+
+ checkInputs = [ pytest pytestcov mock glibcLocales freezegun ];
+
+ propagatedBuildInputs = [
+ # requirements.txt
+ doit pygments pillow dateutil docutils Mako markdown unidecode
+ lxml Yapsy PyRSS2Gen Logbook blinker natsort requests piexif Babel
+ # requirements-extras.txt
+ phpserialize jinja2 toml notebook ruamel_yaml aiohttp watchdog
+ ];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1a5y1qriy76hl4yxvbf365b1ggsxybm06mi1pwb5jkgbkwk2gkrf";
+ };
+
+ patchPhase = ''
+ # upstream added bound so that requires.io doesn't send mails about update
+ # nikola should work with markdown 3.0: https://github.com/getnikola/nikola/pull/3175#issue-220147596
+ sed -i 's/Markdown>.*/Markdown/' requirements.txt
+ '';
+
+ checkPhase = ''
+ LANG="en_US.UTF-8" LC_ALL="en_US.UTF-8" py.test .
+ '';
+
+ meta = {
+ homepage = https://getnikola.com/;
+ description = "A modular, fast, simple, static website and blog generator";
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ jluttine ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/Pmw/default.nix b/nixpkgs/pkgs/development/python-modules/Pmw/default.nix
new file mode 100644
index 00000000000..a666cad1fc6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/Pmw/default.nix
@@ -0,0 +1,23 @@
+{ lib , buildPythonPackage , fetchPypi, tkinter }:
+
+buildPythonPackage rec {
+ pname = "Pmw";
+ version = "2.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "080iml3868nxniyn56kcwnbghm10j7fw74a5nj0s19sm4zsji78b";
+ };
+
+ propagatedBuildInputs = [ tkinter ];
+
+ # Disable tests due to their xserver requirement
+ doCheck = false;
+
+ meta = {
+ description = "A toolkit for building high-level compound widgets in Python using the Tkinter module";
+ homepage = http://pmw.sourceforge.net/;
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ mounium ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/PyLD/default.nix b/nixpkgs/pkgs/development/python-modules/PyLD/default.nix
new file mode 100644
index 00000000000..0862fa63072
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/PyLD/default.nix
@@ -0,0 +1,55 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, python, gnugrep }:
+
+let
+
+ json-ld = fetchFromGitHub {
+ owner = "json-ld";
+ repo = "json-ld.org";
+ rev = "843a70e4523d7cd2a4d3f5325586e726eb1b123f";
+ sha256 = "05j0nq6vafclyypxjj30iw898ig0m32nvz0rjdlslx6lawkiwb2a";
+ };
+
+ normalization = fetchFromGitHub {
+ owner = "json-ld";
+ repo = "normalization";
+ rev = "aceeaf224b64d6880189d795bd99c3ffadb5d79e";
+ sha256 = "125q5rllfm8vg9mz8hn7bhvhv2vqpd86kx2kxlk84smh33l8kbyl";
+ };
+
+in
+
+buildPythonPackage {
+ pname = "PyLD";
+ version = "0.7.2";
+
+ src = fetchFromGitHub {
+ owner = "digitalbazaar";
+ repo = "pyld";
+ rev = "652473f828e9a396d4c1db9addbd294fb7db1797";
+ sha256 = "1bmpz4s6j7by6l45wwxy7dn7hmrhxc26kbx2hbfy41x29vbjg6j9";
+ };
+
+ # Unfortunately PyLD does not pass all testcases in the JSON-LD corpus. We
+ # check for at least a minimum amount of successful tests so we know it's not
+ # getting worse, at least.
+ checkPhase = ''
+ ok_min=401
+
+ if ! ${python.interpreter} tests/runtests.py -d ${json-ld}/test-suite 2>&1 | tee test.out; then
+ ok_count=$(${gnugrep}/bin/grep -F '... ok' test.out | wc -l)
+ if [[ $ok_count -lt $ok_min ]]; then
+ echo "Less than $ok_min tests passed ($ok_count). Failing the build."
+ exit 1
+ fi
+ fi
+
+ ${python.interpreter} tests/runtests.py -d ${normalization}/tests
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Python implementation of the JSON-LD API";
+ homepage = https://github.com/digitalbazaar/pyld;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ apeschar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/Pygments/default.nix b/nixpkgs/pkgs/development/python-modules/Pygments/default.nix
new file mode 100644
index 00000000000..cb0986e1d7f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/Pygments/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, docutils
+}:
+
+buildPythonPackage rec {
+ pname = "Pygments";
+ version = "2.4.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "15v2sqm5g12bqa0c7wikfh9ck2nl97ayizy1hpqhmws5gqalq748";
+ };
+
+ propagatedBuildInputs = [ docutils ];
+
+ # Circular dependency with sphinx
+ doCheck = false;
+
+ meta = {
+ homepage = http://pygments.org/;
+ description = "A generic syntax highlighter";
+ license = lib.licenses.bsd2;
+ maintainers = with lib.maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ROPGadget/default.nix b/nixpkgs/pkgs/development/python-modules/ROPGadget/default.nix
new file mode 100644
index 00000000000..c9398d96fce
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ROPGadget/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, capstone}:
+
+buildPythonPackage rec {
+ pname = "ROPGadget";
+ version = "5.8";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "184qncm2ss474prphw0xnf7ifkpgj955dzlb2vqq94z6xvf3xyd9";
+ };
+
+ propagatedBuildInputs = [ capstone ];
+
+ meta = with stdenv.lib; {
+ description = "Tool to search for gadgets in binaries to facilitate ROP exploitation";
+ homepage = "http://shell-storm.org/project/ROPgadget/";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ bennofs ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/Rtree/default.nix b/nixpkgs/pkgs/development/python-modules/Rtree/default.nix
new file mode 100644
index 00000000000..7953829465b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/Rtree/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, buildPythonPackage, fetchPypi, libspatialindex, numpy }:
+
+buildPythonPackage rec {
+ pname = "Rtree";
+ version = "0.8.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0jc62jbcqqpjcwcly7l9zk25bg72mrxmjykpvfiscgln00qczfbc";
+ };
+
+ propagatedBuildInputs = [ libspatialindex ];
+
+ patchPhase = ''
+ substituteInPlace rtree/core.py --replace \
+ "find_library('spatialindex_c')" "'${libspatialindex}/lib/libspatialindex_c${stdenv.hostPlatform.extensions.sharedLibrary}'"
+ '';
+
+ # Tests appear to be broken due to mysterious memory unsafe issues. See #36760
+ doCheck = false;
+ checkInputs = [ numpy ];
+
+ meta = with stdenv.lib; {
+ description = "R-Tree spatial index for Python GIS";
+ homepage = https://toblerity.org/rtree/;
+ license = licenses.lgpl21;
+ maintainers = with maintainers; [ bgamari ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/Theano/default.nix b/nixpkgs/pkgs/development/python-modules/Theano/default.nix
new file mode 100644
index 00000000000..554eaf97791
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/Theano/default.nix
@@ -0,0 +1,86 @@
+{ stdenv
+, runCommandCC
+, fetchPypi
+, buildPythonPackage
+, isPyPy
+, pythonOlder
+, isPy3k
+, nose
+, numpy
+, scipy
+, six
+, libgpuarray
+, cudaSupport ? false, cudatoolkit
+, cudnnSupport ? false, cudnn
+, nvidia_x11
+}:
+
+assert cudnnSupport -> cudaSupport;
+
+assert cudaSupport -> nvidia_x11 != null
+ && cudatoolkit != null
+ && cudnn != null;
+
+let
+ wrapped = command: buildTop: buildInputs:
+ runCommandCC "${command}-wrapped" { inherit buildInputs; } ''
+ type -P '${command}' || { echo '${command}: not found'; exit 1; }
+ cat > "$out" <<EOF
+ #!$(type -P bash)
+ $(declare -xp | sed -e '/^[^=]\+="\('"''${NIX_STORE//\//\\/}"'\|[^\/]\)/!d')
+ declare -x NIX_BUILD_TOP="${buildTop}"
+ $(type -P '${command}') "\$@"
+ EOF
+ chmod +x "$out"
+ '';
+
+ # Theano spews warnings and disabled flags if the compiler isn't named g++
+ cxx_compiler = wrapped "g++" "\\$HOME/.theano"
+ ( stdenv.lib.optional cudaSupport libgpuarray_
+ ++ stdenv.lib.optional cudnnSupport cudnn );
+
+ libgpuarray_ = libgpuarray.override { inherit cudaSupport cudatoolkit; };
+
+in buildPythonPackage rec {
+ pname = "Theano";
+ version = "1.0.4";
+
+ disabled = isPyPy || pythonOlder "2.6" || (isPy3k && pythonOlder "3.3");
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "35c9bbef56b61ffa299265a42a4e8f8cb5a07b2997dabaef0f8830b397086913";
+ };
+
+ postPatch = ''
+ substituteInPlace theano/configdefaults.py \
+ --replace 'StrParam(param, is_valid=warn_cxx)' 'StrParam('\'''${cxx_compiler}'\''', is_valid=warn_cxx)' \
+ --replace 'rc == 0 and config.cxx != ""' 'config.cxx != ""'
+ '' + stdenv.lib.optionalString cudaSupport ''
+ substituteInPlace theano/configdefaults.py \
+ --replace 'StrParam(get_cuda_root)' 'StrParam('\'''${cudatoolkit}'\''')'
+ '' + stdenv.lib.optionalString cudnnSupport ''
+ substituteInPlace theano/configdefaults.py \
+ --replace 'StrParam(default_dnn_base_path)' 'StrParam('\'''${cudnn}'\''')'
+ '';
+
+ preCheck = ''
+ mkdir -p check-phase
+ export HOME=$(pwd)/check-phase
+ '';
+ doCheck = false;
+ # takes far too long, also throws "TypeError: sort() missing 1 required positional argument: 'a'"
+ # when run from the installer, and testing with Python 3.5 hits github.com/Theano/Theano/issues/4276,
+ # the fix for which hasn't been merged yet.
+
+ # keep Nose around since running the tests by hand is possible from Python or bash
+ checkInputs = [ nose ];
+ propagatedBuildInputs = [ numpy numpy.blas scipy six libgpuarray_ ];
+
+ meta = with stdenv.lib; {
+ homepage = http://deeplearning.net/software/theano/;
+ description = "A Python library for large-scale array computation";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ maintainers.bcdarwin ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/TurboCheetah/default.nix b/nixpkgs/pkgs/development/python-modules/TurboCheetah/default.nix
new file mode 100644
index 00000000000..45c42a7b43f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/TurboCheetah/default.nix
@@ -0,0 +1,26 @@
+{ 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;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/WSME/default.nix b/nixpkgs/pkgs/development/python-modules/WSME/default.nix
new file mode 100644
index 00000000000..adad2051292
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/WSME/default.nix
@@ -0,0 +1,49 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k
+, pbr, six, simplegeneric, netaddr, pytz, webob
+, cornice, nose, webtest, pecan, transaction, cherrypy, sphinx
+, flask, flask-restful, suds-jurko, glibcLocales }:
+
+buildPythonPackage rec {
+ pname = "WSME";
+ version = "0.9.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "e24fcff24392a0b176e560ffc6591b1f658342bbc992f84e0e8a3c53fd92580a";
+ };
+
+ postPatch = ''
+ # remove turbogears tests as we don't have it packaged
+ rm tests/test_tg*
+ # WSME seems incompatible with recent SQLAlchemy version
+ rm wsmeext/tests/test_sqlalchemy*
+ # https://bugs.launchpad.net/wsme/+bug/1510823
+ ${if isPy3k then "rm tests/test_cornice.py" else ""}
+ '';
+
+ checkPhae = ''
+ nosetests --exclude test_buildhtml \
+ --exlcude test_custom_clientside_error \
+ --exclude test_custom_non_http_clientside_error
+ '';
+
+ # UnicodeEncodeError, ImportError, ...
+ doCheck = !isPy3k;
+
+ nativeBuildInputs = [ pbr ];
+
+ propagatedBuildInputs = [
+ six simplegeneric netaddr pytz webob
+ ];
+
+ checkInputs = [
+ cornice nose webtest pecan transaction cherrypy sphinx
+ flask flask-restful suds-jurko glibcLocales
+ ];
+
+ meta = with lib; {
+ description = "Simplify the writing of REST APIs, and extend them with additional protocols";
+ homepage = http://git.openstack.org/cgit/openstack/wsme;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/Wand/default.nix b/nixpkgs/pkgs/development/python-modules/Wand/default.nix
new file mode 100644
index 00000000000..b1b71b39572
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/Wand/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, imagemagick7Big
+}:
+
+buildPythonPackage rec {
+ pname = "Wand";
+ version = "0.5.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "126gpx6zj7fpx87v1qgicpfdahmmkqqmd2a8abllq0jlckrmjsyh";
+ };
+
+ postPatch = ''
+ substituteInPlace wand/api.py --replace \
+ "magick_home = os.environ.get('MAGICK_HOME')" \
+ "magick_home = '${imagemagick7Big}'"
+ '';
+
+ # tests not included with pypi release
+ doCheck = false;
+
+ passthru.imagemagick = imagemagick7Big;
+
+ meta = with stdenv.lib; {
+ description = "Ctypes-based simple MagickWand API binding for Python";
+ homepage = http://wand-py.org/;
+ license = [ licenses.mit ];
+ maintainers = with maintainers; [ infinisil ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/WazeRouteCalculator/default.nix b/nixpkgs/pkgs/development/python-modules/WazeRouteCalculator/default.nix
new file mode 100644
index 00000000000..6a44dc9a75f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/WazeRouteCalculator/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, requests }:
+
+buildPythonPackage rec {
+ pname = "WazeRouteCalculator";
+ version = "0.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1kwr7r1cn9xxvf9asxqhsy4swx4v6hsgw5cr5wmn71qg11k1i5cx";
+ };
+
+ propagatedBuildInputs = [ requests ];
+
+ # there are no tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Calculate actual route time and distance with Waze API";
+ homepage = https://github.com/kovacsbalu/WazeRouteCalculator;
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ peterhoeg ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/XlsxWriter/default.nix b/nixpkgs/pkgs/development/python-modules/XlsxWriter/default.nix
new file mode 100644
index 00000000000..679725db307
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/XlsxWriter/default.nix
@@ -0,0 +1,24 @@
+{lib, buildPythonPackage, fetchFromGitHub}:
+
+buildPythonPackage rec {
+
+ pname = "XlsxWriter";
+ version = "1.2.1";
+
+ # PyPI release tarball doesn't contain tests so let's use GitHub. See:
+ # https://github.com/jmcnamara/XlsxWriter/issues/327
+ src = fetchFromGitHub{
+ owner = "jmcnamara";
+ repo = pname;
+ rev = "RELEASE_${version}";
+ sha256 = "0br8ib9n17dfprfly93mjkhdhpndb7i4g57lwscvp2s69ssql32s";
+ };
+
+ meta = {
+ description = "A Python module for creating Excel XLSX files";
+ homepage = https://xlsxwriter.readthedocs.io/;
+ maintainers = with lib.maintainers; [ jluttine ];
+ license = lib.licenses.bsd2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aafigure/default.nix b/nixpkgs/pkgs/development/python-modules/aafigure/default.nix
new file mode 100644
index 00000000000..d75511f8d4c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aafigure/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, buildPythonPackage, fetchPypi, pillow }:
+
+buildPythonPackage rec {
+ pname = "aafigure";
+ version = "0.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "49f2c1fd2b579c1fffbac1386a2670b3f6f475cc7ff6cc04d8b984888c2d9e1e";
+ };
+
+ propagatedBuildInputs = [ pillow ];
+
+ # error: invalid command 'test'
+ doCheck = false;
+
+ # Fix impurity. TODO: Do the font lookup using fontconfig instead of this
+ # manual method. Until that is fixed, we get this whenever we run aafigure:
+ # WARNING: font not found, using PIL default font
+ patchPhase = ''
+ sed -i "s|/usr/share/fonts|/nonexisting-fonts-path|" aafigure/PILhelper.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "ASCII art to image converter";
+ homepage = https://launchpad.net/aafigure/;
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ bjornfor ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/absl-py/default.nix b/nixpkgs/pkgs/development/python-modules/absl-py/default.nix
new file mode 100644
index 00000000000..29cb0631043
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/absl-py/default.nix
@@ -0,0 +1,33 @@
+{ buildPythonPackage
+, lib
+, pythonOlder
+, fetchPypi
+, six
+, enum34
+}:
+
+buildPythonPackage rec {
+ pname = "absl-py";
+ version = "0.7.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b943d1c567743ed0455878fcd60bc28ac9fae38d129d1ccfad58079da00b8951";
+ };
+
+ propagatedBuildInputs = [
+ six
+ ] ++ lib.optionals (pythonOlder "3.4") [
+ enum34
+ ];
+
+ # checks use bazel; should be revisited
+ doCheck = false;
+
+ meta = {
+ description = "Abseil Python Common Libraries";
+ homepage = "https://github.com/abseil/abseil-py";
+ license = lib.licenses.asl20;
+ maintainers = with lib.maintainers; [ danharaj ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/accupy/default.nix b/nixpkgs/pkgs/development/python-modules/accupy/default.nix
new file mode 100644
index 00000000000..9cc3403370f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/accupy/default.nix
@@ -0,0 +1,62 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, mpmath
+, numpy
+, pipdate
+, pybind11
+, pyfma
+, eigen
+, pytest
+, matplotlib
+, perfplot
+, isPy27
+}:
+
+buildPythonPackage rec {
+ pname = "accupy";
+ version = "0.1.4";
+ disabled = isPy27;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2a67f2a778b824fb24eb338fed8e0b61c1af93369d57ff8132f5d602d60f0543";
+ };
+
+ buildInputs = [
+ pybind11 eigen
+ ];
+
+ propagatedBuildInputs = [
+ mpmath
+ numpy
+ pipdate
+ pyfma
+ ];
+
+ checkInputs = [
+ pytest
+ matplotlib
+ perfplot
+ ];
+
+ postConfigure = ''
+ substituteInPlace setup.py \
+ --replace "/usr/include/eigen3/" "${eigen}/include/eigen3/"
+ '';
+
+ preBuild = ''
+ export HOME=$(mktemp -d)
+ '';
+
+ checkPhase = ''
+ pytest test
+ '';
+
+ meta = with lib; {
+ description = "Accurate sums and dot products for Python";
+ homepage = https://github.com/nschloe/accupy;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/acme-tiny/default.nix b/nixpkgs/pkgs/development/python-modules/acme-tiny/default.nix
new file mode 100644
index 00000000000..51b4b15cd18
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/acme-tiny/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, buildPythonPackage, fetchPypi, setuptools_scm, fusepy, fuse
+, openssl }:
+
+buildPythonPackage rec {
+ pname = "acme-tiny";
+ version = "4.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0jmg525n4n98hwy3hf303jbnq23z79sqwgliji9j7qcnph47gkgq";
+ };
+
+ patchPhase = ''
+ substituteInPlace acme_tiny.py --replace '"openssl"' '"${openssl.bin}/bin/openssl"'
+ substituteInPlace tests/monkey.py --replace '"openssl"' '"${openssl.bin}/bin/openssl"'
+ substituteInPlace tests/test_module.py --replace '"openssl"' '"${openssl.bin}/bin/openssl"'
+ substituteInPlace tests/monkey.py --replace /etc/ssl/openssl.cnf ${openssl.out}/etc/ssl/openssl.cnf
+ '';
+
+ buildInputs = [ setuptools_scm ];
+ checkInputs = [ fusepy fuse ];
+
+ doCheck = false; # seems to hang, not sure
+
+ meta = with stdenv.lib; {
+ description = "A tiny script to issue and renew TLS certs from Let's Encrypt";
+ homepage = https://github.com/diafygi/acme-tiny;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/acme/default.nix b/nixpkgs/pkgs/development/python-modules/acme/default.nix
new file mode 100644
index 00000000000..e9156b5c6af
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/acme/default.nix
@@ -0,0 +1,35 @@
+{ buildPythonPackage
+, certbot
+, pytest
+, cryptography
+, pyasn1
+, pyopenssl
+, pyRFC3339
+, josepy
+, pytz
+, requests
+, requests-toolbelt
+, six
+, werkzeug
+, mock
+, ndg-httpsclient
+}:
+
+buildPythonPackage rec {
+ inherit (certbot) src version;
+
+ pname = "acme";
+
+ propagatedBuildInputs = [
+ cryptography pyasn1 pyopenssl pyRFC3339 pytz requests requests-toolbelt six
+ werkzeug mock ndg-httpsclient josepy
+ ];
+
+ checkInputs = [ pytest ];
+
+ sourceRoot = "source/${pname}";
+
+ meta = certbot.meta // {
+ description = "ACME protocol implementation in Python";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/acoustics/default.nix b/nixpkgs/pkgs/development/python-modules/acoustics/default.nix
new file mode 100644
index 00000000000..eb56cfc1fa0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/acoustics/default.nix
@@ -0,0 +1,30 @@
+{ lib, buildPythonPackage, fetchPypi
+, pytest, numpy, scipy, matplotlib, pandas, tabulate, pythonOlder }:
+
+buildPythonPackage rec {
+ pname = "acoustics";
+ version = "0.2.1";
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ numpy scipy matplotlib pandas tabulate ];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d7cec62d3e7a7eb26026f2aacc726fb1dd0b044574cbdee83da654b847543c20";
+ };
+
+ checkPhase = ''
+ pushd tests
+ py.test ./.
+ popd
+ '';
+
+ disabled = pythonOlder "3.6";
+
+ meta = with lib; {
+ description = "A package for acousticians";
+ maintainers = with maintainers; [ fridh ];
+ license = with licenses; [ bsd3 ];
+ homepage = https://github.com/python-acoustics/python-acoustics;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/actdiag/default.nix b/nixpkgs/pkgs/development/python-modules/actdiag/default.nix
new file mode 100644
index 00000000000..34d4c2a37a7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/actdiag/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, buildPythonPackage, fetchPypi, fetchpatch
+, pep8, nose, unittest2, docutils, blockdiag, reportlab }:
+
+buildPythonPackage rec {
+ pname = "actdiag";
+ version = "0.5.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "983071777d9941093aaef3be1f67c198a8ac8d2bba264cdd1f337ca415ab46af";
+ };
+
+ patches = fetchpatch {
+ name = "drop_test_pep8.py.patch";
+ url = https://bitbucket.org/blockdiag/actdiag/commits/c1f2ed5947a1e93291f5860e4e30cee098bd635d/raw;
+ sha256 = "1zxzwb0fvwlc8xgs45fx65341sjhb3h6l2p6rdj6i127vg1hsxb4";
+ };
+
+ buildInputs = [ pep8 nose unittest2 docutils ];
+
+ propagatedBuildInputs = [ blockdiag ];
+
+ checkInputs = [ reportlab ];
+
+ meta = with stdenv.lib; {
+ description = "Generate activity-diagram image from spec-text file (similar to Graphviz)";
+ homepage = http://blockdiag.com/;
+ license = licenses.asl20;
+ platforms = platforms.unix;
+ maintainers = with maintainers; [ bjornfor ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/adal/default.nix b/nixpkgs/pkgs/development/python-modules/adal/default.nix
new file mode 100644
index 00000000000..9f764df3376
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/adal/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, requests, pyjwt, dateutil }:
+
+buildPythonPackage rec {
+ pname = "adal";
+ version = "1.2.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b6edd095be66561382bdaa59d40b04490e93149fb3b7fa44c1fa5504eed5b8b9";
+ };
+
+ propagatedBuildInputs = [ requests pyjwt dateutil ];
+
+ meta = with stdenv.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";
+ homepage = https://github.com/AzureAD/azure-activedirectory-library-for-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ phreedom ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/adb-homeassistant/default.nix b/nixpkgs/pkgs/development/python-modules/adb-homeassistant/default.nix
new file mode 100644
index 00000000000..4e37d18a9f3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/adb-homeassistant/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, libusb1
+, rsa
+, pycryptodome
+, pytest
+, mock
+}:
+buildPythonPackage {
+ pname = "adb-homeassistant";
+ version = "1.3.1";
+
+ # pypi does not contain tests, using github sources instead
+ src = fetchFromGitHub {
+ owner = "JeffLIrion";
+ repo = "python-adb";
+ rev = "5949bf432307cbba7128e84d7bc6add7f054a078";
+ sha256 = "0s3fazvbzchn1fsvjrd1jl8w9y4dvvgq6q8m8p5lr2gri0npr581";
+
+ };
+
+ propagatedBuildInputs = [
+ libusb1
+ rsa
+ pycryptodome
+ ];
+
+ checkInputs = [ pytest mock ];
+ checkPhase = ''
+ py.test test
+ '';
+
+ meta = with lib; {
+ description = "A pure python implementation of the Android ADB and Fastboot protocols";
+ homepage = https://github.com/JeffLIrion/python-adb/tree/adb-homeassistant;
+ license = licenses.asl20;
+ maintainers = [ maintainers.makefu ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/addic7ed-cli/default.nix b/nixpkgs/pkgs/development/python-modules/addic7ed-cli/default.nix
new file mode 100644
index 00000000000..a9720f45ef6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/addic7ed-cli/default.nix
@@ -0,0 +1,24 @@
+{ lib, python3Packages, }:
+
+python3Packages.buildPythonApplication rec {
+ pname = "addic7ed-cli";
+ version = "1.4.5";
+
+ src = python3Packages.fetchPypi {
+ inherit pname version;
+ sha256 = "16nmyw7j2igx5dxflwiwblf421g69rxb879n1553wv6hxi4x27in";
+ };
+
+ propagatedBuildInputs = with python3Packages; [
+ requests
+ pyquery
+ ];
+
+ meta = with lib; {
+ description = "A commandline access to addic7ed subtitles";
+ homepage = https://github.com/BenoitZugmeyer/addic7ed-cli;
+ license = licenses.mit;
+ maintainers = with maintainers; [ aethelz ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aenum/default.nix b/nixpkgs/pkgs/development/python-modules/aenum/default.nix
new file mode 100644
index 00000000000..5962b309ee5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aenum/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchPypi, buildPythonPackage, python, isPy3k, glibcLocales }:
+
+buildPythonPackage rec {
+ pname = "aenum";
+ version = "2.1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a3208e4b28db3a7b232ff69b934aef2ea1bf27286d9978e1e597d46f490e4687";
+ };
+
+ # For Python 3, locale has to be set to en_US.UTF-8 for
+ # tests to pass
+ checkInputs = if isPy3k then [ glibcLocales ] else [];
+
+ checkPhase = ''
+ runHook preCheck
+ ${if isPy3k then "export LC_ALL=en_US.UTF-8" else ""}
+ PYTHONPATH=`pwd` ${python.interpreter} aenum/test.py
+ runHook postCheck
+ '';
+
+
+ meta = {
+ description = "Advanced Enumerations (compatible with Python's stdlib Enum), NamedTuples, and NamedConstants";
+ maintainers = with stdenv.lib.maintainers; [ vrthra ];
+ license = with stdenv.lib.licenses; [ bsd3 ];
+ homepage = https://bitbucket.org/stoneleaf/aenum;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/affine/default.nix b/nixpkgs/pkgs/development/python-modules/affine/default.nix
new file mode 100644
index 00000000000..e2fd802cf80
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/affine/default.nix
@@ -0,0 +1,22 @@
+{ buildPythonPackage, pytest, lib, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "affine";
+ version = "2.2.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "146slzpj2b220dmbmrxib030wymvplawxzn7gcgnbahgm500y3gz";
+ };
+
+ checkInputs = [ pytest ];
+ checkPhase = "py.test";
+
+ meta = with lib; {
+ description = "Matrices describing affine transformation of the plane";
+ license = licenses.bsd3;
+ homepage = https://github.com/sgillies/affine;
+ maintainers = with maintainers; [ mredaelli ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/affinity/default.nix b/nixpkgs/pkgs/development/python-modules/affinity/default.nix
new file mode 100644
index 00000000000..4eaaf56b441
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/affinity/default.nix
@@ -0,0 +1,20 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k }:
+
+buildPythonPackage rec {
+ pname = "affinity";
+ version = "0.1.0";
+
+ # syntax error
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1i6j7kszvnzh5vh9k48cqwx2kzf73a6abgv9s6bf0j2zmfjl2wb6";
+ };
+
+ meta = {
+ description = "control processor affinity on windows and linux";
+ homepage = http://cheeseshop.python.org/pypi/affinity;
+ license = with lib.licenses; [ psfl ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/agate-dbf/default.nix b/nixpkgs/pkgs/development/python-modules/agate-dbf/default.nix
new file mode 100644
index 00000000000..f070dcb258e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/agate-dbf/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchPypi, buildPythonPackage, agate, dbf, dbfread }:
+
+buildPythonPackage rec {
+ pname = "agate-dbf";
+ version = "0.2.1";
+
+ propagatedBuildInputs = [ agate dbf dbfread ];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0brprva3vjypb5r9lk6zy10jazp681rxsqxzhz2lr869ir4krj80";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Adds read support for dbf files to agate";
+ homepage = https://github.com/wireservice/agate-dbf;
+ license = with licenses; [ mit ];
+ maintainers = with maintainers; [ vrthra ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/agate-excel/default.nix b/nixpkgs/pkgs/development/python-modules/agate-excel/default.nix
new file mode 100644
index 00000000000..ced0ff28090
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/agate-excel/default.nix
@@ -0,0 +1,28 @@
+{ lib, fetchPypi, buildPythonPackage
+, agate, openpyxl, xlrd, nose
+}:
+
+buildPythonPackage rec {
+ pname = "agate-excel";
+ version = "0.2.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8f255ef2c87c436b7132049e1dd86c8e08bf82d8c773aea86f3069b461a17d52";
+ };
+
+ propagatedBuildInputs = [ agate openpyxl xlrd ];
+
+ checkInputs = [ nose ];
+
+ checkPhase = ''
+ nosetests
+ '';
+
+ meta = with lib; {
+ description = "Adds read support for excel files to agate";
+ homepage = https://github.com/wireservice/agate-excel;
+ license = licenses.mit;
+ maintainers = with maintainers; [ vrthra ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/agate-sql/default.nix b/nixpkgs/pkgs/development/python-modules/agate-sql/default.nix
new file mode 100644
index 00000000000..82da607b3ef
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/agate-sql/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchPypi, buildPythonPackage, agate, sqlalchemy }:
+
+buildPythonPackage rec {
+ pname = "agate-sql";
+ version = "0.5.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "9277490ba8b8e7c747a9ae3671f52fe486784b48d4a14e78ca197fb0e36f281b";
+ };
+
+ propagatedBuildInputs = [ agate sqlalchemy ];
+
+ meta = with stdenv.lib; {
+ description = "Adds SQL read/write support to agate.";
+ homepage = https://github.com/wireservice/agate-sql;
+ license = with licenses; [ mit ];
+ maintainers = with maintainers; [ vrthra ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/agate/default.nix b/nixpkgs/pkgs/development/python-modules/agate/default.nix
new file mode 100644
index 00000000000..b0992141faa
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/agate/default.nix
@@ -0,0 +1,37 @@
+{ lib, fetchFromGitHub, buildPythonPackage, isPy3k
+, six, pytimeparse, parsedatetime, Babel
+, isodate, python-slugify, leather
+, glibcLocales, nose, lxml, cssselect, unittest2 }:
+
+buildPythonPackage rec {
+ pname = "agate";
+ version = "1.6.1";
+
+ # PyPI tarball does not include all test files
+ # https://github.com/wireservice/agate/pull/716
+ src = fetchFromGitHub {
+ owner = "wireservice";
+ repo = pname;
+ rev = version;
+ sha256 = "077zj8xad8hsa3nqywvf7ircirmx3krxdipl8wr3dynv3l3khcpl";
+ };
+
+ propagatedBuildInputs = [
+ six pytimeparse parsedatetime Babel
+ isodate python-slugify leather
+ ];
+
+ checkInputs = [ glibcLocales nose lxml cssselect ]
+ ++ lib.optional (!isPy3k) unittest2;
+
+ checkPhase = ''
+ LC_ALL="en_US.UTF-8" nosetests tests
+ '';
+
+ meta = with lib; {
+ description = "A Python data analysis library that is optimized for humans instead of machines";
+ homepage = https://github.com/wireservice/agate;
+ license = with licenses; [ mit ];
+ maintainers = with maintainers; [ vrthra ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aioamqp/default.nix b/nixpkgs/pkgs/development/python-modules/aioamqp/default.nix
new file mode 100644
index 00000000000..8488278c934
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aioamqp/default.nix
@@ -0,0 +1,20 @@
+{ lib, buildPythonPackage, fetchPypi, pythonOlder,
+}:
+
+buildPythonPackage rec {
+ pname = "aioamqp";
+ version = "0.12.0";
+
+ meta = {
+ homepage = https://github.com/polyconseil/aioamqp;
+ description = "AMQP implementation using asyncio";
+ license = lib.licenses.bsd3;
+ };
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "17vrl6jajr81bql7kjgq0zkxy225px97z4g9wmbhbbnvzn1p92c0";
+ };
+
+ disabled = pythonOlder "3.3";
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aioconsole/default.nix b/nixpkgs/pkgs/development/python-modules/aioconsole/default.nix
new file mode 100644
index 00000000000..aa8ed392934
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aioconsole/default.nix
@@ -0,0 +1,29 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+# This package provides a binary "apython" which sometimes invokes
+# [sys.executable, '-m', 'aioconsole'] as a subprocess. If apython is
+# run directly out of this derivation, it won't work, because
+# sys.executable will point to a Python binary that is not wrapped to
+# be able to find aioconsole.
+# However, apython will work fine when using python##.withPackages,
+# because with python##.withPackages the sys.executable is already
+# wrapped to be able to find aioconsole and any other packages.
+buildPythonPackage rec {
+ pname = "aioconsole";
+ version = "0.1.14";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f1ddd04050d9be5e93e223a4e9367433436d245f8fe70905f4124bfde2cd3cdd";
+ };
+
+ # hardcodes a test dependency on an old version of pytest-asyncio
+ doCheck = false;
+
+ meta = {
+ description = "Asynchronous console and interfaces for asyncio";
+ homepage = https://github.com/vxgmichel/aioconsole;
+ license = lib.licenses.gpl3;
+ maintainers = [ lib.maintainers.catern ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aiodns/default.nix b/nixpkgs/pkgs/development/python-modules/aiodns/default.nix
new file mode 100644
index 00000000000..a8287df10f6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aiodns/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, buildPythonPackage, fetchPypi, pythonOlder
+, isPy27, isPyPy, python, pycares, typing, trollius }:
+
+buildPythonPackage rec {
+ pname = "aiodns";
+ version = "2.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "815fdef4607474295d68da46978a54481dd1e7be153c7d60f9e72773cd38d77d";
+ };
+
+ propagatedBuildInputs = with stdenv.lib; [ pycares ]
+ ++ optional (pythonOlder "3.7") typing
+ ++ optional (isPy27 || isPyPy) trollius;
+
+ checkPhase = ''
+ ${python.interpreter} tests.py
+ '';
+
+ # 'Could not contact DNS servers'
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/saghul/aiodns;
+ license = licenses.mit;
+ description = "Simple DNS resolver for asyncio";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aioesphomeapi/default.nix b/nixpkgs/pkgs/development/python-modules/aioesphomeapi/default.nix
new file mode 100644
index 00000000000..8d8467207ce
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aioesphomeapi/default.nix
@@ -0,0 +1,29 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k, attrs, protobuf, zeroconf }:
+
+buildPythonPackage rec {
+ pname = "aioesphomeapi";
+ version = "2.2.0";
+
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0znal1hi964acc8bl3z0ikscax7zziks838ld099rjsbffjwmwn5";
+ };
+
+ propagatedBuildInputs = [ attrs protobuf zeroconf ];
+
+ # no tests implemented
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Python Client for ESPHome native API";
+ homepage = "https://github.com/esphome/aioesphomeapi";
+ license = licenses.mit;
+ maintainers = with maintainers; [ dotlambda ];
+
+ # Home Assistant should pin protobuf to the correct version. Can be tested using
+ # nix-build -E "with import ./. {}; home-assistant.override { extraPackages = ps: [ ps.aioesphomeapi ]; }"
+ broken = !lib.hasPrefix "3.6.1" protobuf.version;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aioeventlet/default.nix b/nixpkgs/pkgs/development/python-modules/aioeventlet/default.nix
new file mode 100644
index 00000000000..5df19e92e8d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aioeventlet/default.nix
@@ -0,0 +1,35 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, eventlet
+, trollius
+, mock
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "aioeventlet";
+ # version is called 0.5.1 on PyPI, but the filename is aioeventlet-0.5.2.tar.gz
+ version = "0.5.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "cecb51ea220209e33b53cfb95124d90e4fcbee3ff8ba8a179a57120b8624b16a";
+ };
+
+ propagatedBuildInputs = [ eventlet trollius ];
+ buildInputs = [ mock ];
+
+ # 2 tests error out
+ doCheck = false;
+ checkPhase = ''
+ ${python.interpreter} runtests.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "aioeventlet implements the asyncio API (PEP 3156) on top of eventlet. It makes";
+ homepage = https://aioeventlet.readthedocs.org/;
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aiofiles/default.nix b/nixpkgs/pkgs/development/python-modules/aiofiles/default.nix
new file mode 100644
index 00000000000..4728d819f05
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aiofiles/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+ pname = "aiofiles";
+ version = "0.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "021ea0ba314a86027c166ecc4b4c07f2d40fc0f4b3a950d1868a0f2571c2bbee";
+ };
+
+ disabled = pythonOlder "3.3";
+
+ # No tests in archive
+ doCheck = false;
+
+ meta = {
+ description = "File support for asyncio";
+ homepage = https://github.com/Tinche/aiofiles;
+ license = with lib.licenses; [ asl20 ];
+ maintainers = with lib.maintainers; [ fridh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aioftp/default.nix b/nixpkgs/pkgs/development/python-modules/aioftp/default.nix
new file mode 100644
index 00000000000..1d2b32a73b9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aioftp/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, isPy27
+, pytest
+, pytest-asyncio
+, pytestcov
+, trustme
+, async-timeout
+}:
+
+buildPythonPackage rec {
+ pname = "aioftp";
+ version = "0.13.0";
+ disabled = isPy27;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5711c03433b510c101e9337069033133cca19b508b5162b414bed24320de6c18";
+ };
+
+ checkInputs = [
+ pytest
+ pytest-asyncio
+ pytestcov
+ trustme
+ async-timeout
+ ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with lib; {
+ description = "Ftp client/server for asyncio";
+ homepage = https://github.com/aio-libs/aioftp;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aioh2/default.nix b/nixpkgs/pkgs/development/python-modules/aioh2/default.nix
new file mode 100644
index 00000000000..fdeb5fb0082
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aioh2/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildPythonPackage, isPy3k, fetchPypi, h2, priority }:
+
+buildPythonPackage rec {
+ pname = "aioh2";
+ version = "0.2.2";
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "03i24wzpw0mrnrpck3w6qy83iigwl7n99sdrndqzxfyrc69b99wd";
+ };
+
+ propagatedBuildInputs = [ h2 priority ];
+
+ doCheck = false; # https://github.com/decentfox/aioh2/issues/17
+
+ meta = with lib; {
+ homepage = https://github.com/decentfox/aioh2;
+ description = "HTTP/2 implementation with hyper-h2 on Python 3 asyncio";
+ license = licenses.bsd3;
+ maintainers = [ maintainers.qyliss ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aiohttp-cors/default.nix b/nixpkgs/pkgs/development/python-modules/aiohttp-cors/default.nix
new file mode 100644
index 00000000000..00198cd27cf
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aiohttp-cors/default.nix
@@ -0,0 +1,28 @@
+{ lib, buildPythonPackage, fetchPypi, pythonOlder
+, typing, aiohttp
+}:
+
+buildPythonPackage rec {
+ pname = "aiohttp-cors";
+ version = "0.7.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0pczn54bqd32v8zhfbjfybiza6xh1szwxy6as577dn8g23bwcfad";
+ };
+
+ disabled = pythonOlder "3.5";
+
+ propagatedBuildInputs = [ aiohttp ]
+ ++ lib.optional (pythonOlder "3.5") typing;
+
+ # Requires network access
+ doCheck = false;
+
+ meta = with lib; {
+ description = "CORS support for aiohttp";
+ homepage = "https://github.com/aio-libs/aiohttp-cors";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ primeos ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aiohttp-jinja2/default.nix b/nixpkgs/pkgs/development/python-modules/aiohttp-jinja2/default.nix
new file mode 100644
index 00000000000..d8e4c9f2943
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aiohttp-jinja2/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildPythonPackage, fetchPypi, aiohttp, jinja2, pytest, pytest-aiohttp }:
+
+buildPythonPackage rec {
+ pname = "aiohttp-jinja2";
+ version = "1.1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0g4pqdm2kp2abam0nx0pgs5lk19f8lsfpcgwxpigdwmy1lvblsa5";
+ };
+
+ propagatedBuildInputs = [ aiohttp jinja2 ];
+
+ checkInputs = [ pytest pytest-aiohttp ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with lib; {
+ description = "Jinja2 support for aiohttp";
+ homepage = https://github.com/aio-libs/aiohttp_jinja2;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ peterhoeg ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aiohttp-remotes/default.nix b/nixpkgs/pkgs/development/python-modules/aiohttp-remotes/default.nix
new file mode 100644
index 00000000000..51120d07121
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aiohttp-remotes/default.nix
@@ -0,0 +1,34 @@
+{ lib, fetchpatch, buildPythonPackage, fetchPypi
+, aiohttp, pytest, pytestcov, pytest-aiohttp
+}:
+
+buildPythonPackage rec {
+ pname = "aiohttp_remotes";
+ version = "0.1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "43c3f7e1c5ba27f29fb4dbde5d43b900b5b5fc7e37bf7e35e6eaedabaec4a3fc";
+ };
+
+ patches = [
+ (fetchpatch {
+ url = https://github.com/aio-libs/aiohttp-remotes/commit/188772abcea038c31dae7d607e487eeed44391bc.patch;
+ sha256 = "0pb1y4jb8ar1szhnjiyj2sdmdk6z9h6c3wrxw59nv9kr3if5igvs";
+ })
+ ];
+
+ propagatedBuildInputs = [ aiohttp ];
+
+ checkInputs = [ pytest pytestcov pytest-aiohttp ];
+ checkPhase = ''
+ python -m pytest
+ '';
+
+ meta = with lib; {
+ homepage = https://github.com/wikibusiness/aiohttp-remotes;
+ description = "A set of useful tools for aiohttp.web server";
+ license = licenses.mit;
+ maintainers = [ maintainers.qyliss ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aiohttp-socks/default.nix b/nixpkgs/pkgs/development/python-modules/aiohttp-socks/default.nix
new file mode 100644
index 00000000000..f898c9313e1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aiohttp-socks/default.nix
@@ -0,0 +1,25 @@
+{ lib, fetchPypi, buildPythonPackage, pythonOlder, aiohttp }:
+
+buildPythonPackage rec {
+ pname = "aiohttp-socks";
+ version = "0.2.2";
+
+ src = fetchPypi {
+ inherit version;
+ pname = "aiohttp_socks";
+ sha256 = "0473702jk66xrgpm28wbdgpnak4v0dh2qmdjw7ky7hf3lwwqkggf";
+ };
+
+ propagatedBuildInputs = [ aiohttp ];
+
+ # Checks needs internet access
+ doCheck = false;
+
+ disabled = pythonOlder "3.5.3";
+
+ meta = {
+ description = "SOCKS proxy connector for aiohttp";
+ license = lib.licenses.asl20;
+ homepage = https://github.com/romis2012/aiohttp-socks;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aiohttp-swagger/default.nix b/nixpkgs/pkgs/development/python-modules/aiohttp-swagger/default.nix
new file mode 100644
index 00000000000..e01e3ce30bc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aiohttp-swagger/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, aiohttp
+, flake8
+, jinja2
+, pytestCheckHook
+, pytest-aiohttp
+, pyyaml
+}:
+
+buildPythonPackage rec {
+ pname = "aiohttp-swagger";
+ version = "1.0.5";
+
+ src = fetchFromGitHub {
+ owner = "cr0hn";
+ repo = pname;
+ rev = "5a59e86f8c5672d2cc97dd35dc730c2f809d95ce"; # corresponds to 1.0.5 on PyPi, no tag on GitHub
+ sha256 = "1vpfk5b3f7s9qzr2q48g776f39xzqppjwm57scfzqqmbldkk5nv7";
+ };
+
+ propagatedBuildInputs = [ aiohttp jinja2 pyyaml ];
+
+ checkInputs = [ flake8 pytestCheckHook pytest-aiohttp ];
+
+ meta = with lib; {
+ description = "Swagger API Documentation builder for aiohttp";
+ homepage = https://github.com/cr0hn/aiohttp-swagger;
+ license = licenses.mit;
+ maintainers = with maintainers; [ elohmeier ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aiohttp/default.nix b/nixpkgs/pkgs/development/python-modules/aiohttp/default.nix
new file mode 100644
index 00000000000..049ceb124ea
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aiohttp/default.nix
@@ -0,0 +1,53 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, attrs
+, chardet
+, multidict
+, async-timeout
+, yarl
+, idna-ssl
+, typing-extensions
+, pytestrunner
+, pytest
+, gunicorn
+, pytest-timeout
+, async_generator
+, pytest_xdist
+, pytestcov
+, pytest-mock
+, trustme
+, brotlipy
+}:
+
+buildPythonPackage rec {
+ pname = "aiohttp";
+ version = "3.5.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "9c4c83f4fa1938377da32bc2d59379025ceeee8e24b89f72fcbccd8ca22dc9bf";
+ };
+
+ disabled = pythonOlder "3.5";
+
+ checkInputs = [
+ pytestrunner pytest gunicorn pytest-timeout async_generator pytest_xdist
+ pytest-mock pytestcov trustme brotlipy
+ ];
+
+ propagatedBuildInputs = [ attrs chardet multidict async-timeout yarl ]
+ ++ lib.optionals (pythonOlder "3.7") [ idna-ssl typing-extensions ];
+
+ checkPhase = ''
+ pytest -k "not test__get_valid_log_format_exc and not test_access_logger_atoms"
+ '';
+
+ meta = with lib; {
+ description = "Asynchronous HTTP Client/Server for Python and asyncio";
+ license = licenses.asl20;
+ homepage = https://github.com/aio-libs/aiohttp;
+ maintainers = with maintainers; [ dotlambda ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aiohue/default.nix b/nixpkgs/pkgs/development/python-modules/aiohue/default.nix
new file mode 100644
index 00000000000..2b719ddf063
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aiohue/default.nix
@@ -0,0 +1,19 @@
+{ lib, buildPythonPackage, fetchPypi, aiohttp }:
+
+buildPythonPackage rec {
+ pname = "aiohue";
+ version = "1.9.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "3c23aed8e82f398b732279f5f7ee7ed00949ff2db7009f7a2dc705f7c2d16783";
+ };
+
+ propagatedBuildInputs = [ aiohttp ];
+
+ meta = with lib; {
+ description = "asyncio package to talk to Philips Hue";
+ homepage = https://github.com/balloob/aiohue;
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aioimaplib/default.nix b/nixpkgs/pkgs/development/python-modules/aioimaplib/default.nix
new file mode 100644
index 00000000000..9003618a0fd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aioimaplib/default.nix
@@ -0,0 +1,29 @@
+{ lib, buildPythonPackage, fetchFromGitHub, isPy3k, pythonOlder, isPy36
+, nose, asynctest, mock, pytz, tzlocal, imaplib2, docutils, pyopenssl }:
+
+buildPythonPackage rec {
+ pname = "aioimaplib";
+ version = "0.7.15";
+
+ # PyPI tarball doesn't ship tests
+ src = fetchFromGitHub {
+ owner = "bamthomas";
+ repo = pname;
+ rev = version;
+ sha256 = "15nny3y8pwaizq1zmkg43ym5jszk2hs010z12yn2d0j1fibymwbj";
+ };
+
+ disabled = !(isPy3k && pythonOlder "3.7");
+
+ checkInputs = [ nose asynctest mock pytz tzlocal imaplib2 docutils pyopenssl ];
+
+ # https://github.com/bamthomas/aioimaplib/issues/35
+ doCheck = !isPy36;
+
+ meta = with lib; {
+ description = "Python asyncio IMAP4rev1 client library";
+ homepage = https://github.com/bamthomas/aioimaplib;
+ license = licenses.gpl3Plus;
+ maintainers = with maintainers; [ dotlambda ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aiolifx-effects/default.nix b/nixpkgs/pkgs/development/python-modules/aiolifx-effects/default.nix
new file mode 100644
index 00000000000..bbe2b538ac5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aiolifx-effects/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+, isPy3k
+, aiolifx
+}:
+
+buildPythonPackage rec {
+ pname = "aiolifx-effects";
+ version = "0.2.1";
+
+ src = fetchPypi {
+ inherit version;
+ pname = "aiolifx_effects";
+ sha256 = "cb4ac52deeb220783fc6449251cf40833fcffa28648270be64b1b3e83e06b503";
+ };
+
+ # tests are not implemented
+ doCheck = false;
+
+ disabled = !isPy3k;
+
+ propagatedBuildInputs = [ aiolifx ];
+
+ meta = with lib; {
+ homepage = https://github.com/amelchio/aiolifx_effects;
+ license = licenses.mit;
+ description = "Light effects (pulse, colorloop ...) for LIFX lights running on aiolifx";
+ maintainers = with maintainers; [ netixx ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aiolifx/default.nix b/nixpkgs/pkgs/development/python-modules/aiolifx/default.nix
new file mode 100644
index 00000000000..0afaa65e40c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aiolifx/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+, isPy3k
+, ifaddr
+, bitstring
+}:
+
+buildPythonPackage rec {
+ pname = "aiolifx";
+ version = "0.6.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "cf53c9faea6eee25a466e73eef1753b82a75c7497648149c19c15342df2678f2";
+ };
+
+ # tests are not implemented
+ doCheck = false;
+
+ disabled = !isPy3k;
+
+ propagatedBuildInputs = [ bitstring ifaddr ];
+
+ meta = with lib; {
+ homepage = https://github.com/frawau/aiolifx;
+ license = licenses.mit;
+ description = "API for local communication with LIFX devices over a LAN with asyncio";
+ maintainers = with maintainers; [ netixx ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aioprocessing/default.nix b/nixpkgs/pkgs/development/python-modules/aioprocessing/default.nix
new file mode 100644
index 00000000000..f2f95911268
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aioprocessing/default.nix
@@ -0,0 +1,26 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonAtLeast
+}:
+
+buildPythonPackage rec {
+ pname = "aioprocessing";
+ version = "1.0.1";
+ disabled = !(pythonAtLeast "3.4");
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1yq1gfsky2kjimwdmzqk893sp6387vbl4bw0sbha5hl6cm3jp5dn";
+ };
+
+ # Tests aren't included in pypi package
+ doCheck = false;
+
+ meta = {
+ description = "A library that integrates the multiprocessing module with asyncio";
+ homepage = https://github.com/dano/aioprocessing;
+ license = lib.licenses.bsd2;
+ maintainers = with lib.maintainers; [ uskudnik ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aioresponses/default.nix b/nixpkgs/pkgs/development/python-modules/aioresponses/default.nix
new file mode 100644
index 00000000000..55120ad5803
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aioresponses/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, pbr
+, aiohttp
+, ddt
+, asynctest
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "aioresponses";
+ version = "0.6.0";
+ disabled = pythonOlder "3.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0ii1jiwb8qa2y8cqa1zqn7mjax9l8bpf16k4clv616mxw1l0bvs6";
+ };
+
+ nativeBuildInputs = [
+ pbr
+ ];
+
+ propagatedBuildInputs = [
+ aiohttp
+ ];
+
+ checkInputs = [
+ asynctest
+ ddt
+ pytest
+ ];
+
+ # Skip a test which makes requests to httpbin.org
+ checkPhase = ''
+ pytest -k "not test_address_as_instance_of_url_combined_with_pass_through"
+ '';
+
+ meta = {
+ description = "A helper to mock/fake web requests in python aiohttp package";
+ homepage = https://github.com/pnuckowski/aioresponses;
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ rvl ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aiorpcx/default.nix b/nixpkgs/pkgs/development/python-modules/aiorpcx/default.nix
new file mode 100644
index 00000000000..6350e3f0441
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aiorpcx/default.nix
@@ -0,0 +1,25 @@
+{ lib, fetchPypi, buildPythonPackage, pythonOlder, attrs }:
+
+buildPythonPackage rec {
+ pname = "aiorpcx";
+ version = "0.18.3";
+
+ src = fetchPypi {
+ inherit version;
+ pname = "aiorpcX";
+ sha256 = "0k545hc7wl6sh1svydzbv6x7sx5pig2pqkl3yxs9riwmvzawx9xp";
+ };
+
+ propagatedBuildInputs = [ attrs ];
+
+ disabled = pythonOlder "3.6";
+
+ # Checks needs internet access
+ doCheck = false;
+
+ meta = {
+ description = "Transport, protocol and framing-independent async RPC client and server implementation";
+ license = lib.licenses.mit;
+ homepage = https://github.com/kyuupichan/aiorpcX;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aiosmtpd/default.nix b/nixpkgs/pkgs/development/python-modules/aiosmtpd/default.nix
new file mode 100644
index 00000000000..77d7cf653d1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aiosmtpd/default.nix
@@ -0,0 +1,35 @@
+{ lib, isPy3k, fetchFromGitHub, buildPythonPackage
+, atpublic }:
+
+buildPythonPackage rec {
+ pname = "aiosmtpd";
+ version = "1.2.1";
+ disabled = !isPy3k;
+
+ # Release not published to Pypi
+ src = fetchFromGitHub {
+ owner = "aio-libs";
+ repo = pname;
+ rev = version;
+ sha256 = "14c30dm6jzxiblnsah53fdv68vqhxwvb9x0aq9bc4vcdas747vr7";
+ };
+
+ propagatedBuildInputs = [
+ atpublic
+ ];
+
+ # Tests need network access
+ doCheck = false;
+
+ meta = with lib; {
+ homepage = https://aiosmtpd.readthedocs.io/en/latest/;
+ description = "Asyncio based SMTP server";
+ longDescription = ''
+ This is a server for SMTP and related protocols, similar in utility to the
+ standard library's smtpd.py module, but rewritten to be based on asyncio for
+ Python 3.
+ '';
+ license = licenses.asl20;
+ maintainers = with maintainers; [ eadwu ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aiounifi/default.nix b/nixpkgs/pkgs/development/python-modules/aiounifi/default.nix
new file mode 100644
index 00000000000..cee5c2606e0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aiounifi/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k
+, aiohttp }:
+
+buildPythonPackage rec {
+ pname = "aiounifi";
+ version = "4";
+
+ disabled = ! isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0594nb8mpfhnnk9jadbdnbn9v7p4sh3430kcgfyhsh7ayw2mpb9m";
+ };
+
+ propagatedBuildInputs = [ aiohttp ];
+
+ # upstream has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "An asynchronous Python library for communicating with Unifi Controller API";
+ homepage = https://pypi.python.org/pypi/aiounifi/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ peterhoeg ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aiozeroconf/default.nix b/nixpkgs/pkgs/development/python-modules/aiozeroconf/default.nix
new file mode 100644
index 00000000000..78b1c215c2b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aiozeroconf/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, netifaces
+, isPy27
+}:
+
+buildPythonPackage rec {
+ pname = "aiozeroconf";
+ version = "0.1.8";
+ disabled = isPy27;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "074plydm7sd113p3k0siihwwz62d3r42q3g83vqaffp569msknqh";
+ };
+
+ propagatedBuildInputs = [ netifaces ];
+
+ meta = with stdenv.lib; {
+ description = "A pure python implementation of multicast DNS service discovery";
+ homepage = https://github.com/jstasiak/python-zeroconf;
+ license = licenses.lgpl21;
+ maintainers = with maintainers; [ obadz ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ajpy/default.nix b/nixpkgs/pkgs/development/python-modules/ajpy/default.nix
new file mode 100644
index 00000000000..373c3544062
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ajpy/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "ajpy";
+ version = "0.0.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0a5f62b765f59ffc37e759d3f343de16cd782cc4e9e8be09c73b71dfbe383d9b";
+ };
+
+ # ajpy doesn't have tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "AJP package crafting library";
+ homepage = "https://github.com/hypn0s/AJPy/";
+ license = licenses.lgpl2;
+ maintainers = with maintainers; [ y0no ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/alabaster/default.nix b/nixpkgs/pkgs/development/python-modules/alabaster/default.nix
new file mode 100644
index 00000000000..e5aaa9a6c76
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/alabaster/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, pygments }:
+
+buildPythonPackage rec {
+ pname = "alabaster";
+ version = "0.7.12";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02";
+ };
+
+ propagatedBuildInputs = [ pygments ];
+
+ # No tests included
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/bitprophet/alabaster;
+ description = "A Sphinx theme";
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/alembic/default.nix b/nixpkgs/pkgs/development/python-modules/alembic/default.nix
new file mode 100644
index 00000000000..ddc3779749b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/alembic/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, pytest, pytestcov, mock, coverage, setuptools
+, Mako, sqlalchemy, python-editor, dateutil
+}:
+
+buildPythonPackage rec {
+ pname = "alembic";
+ version = "1.0.10";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "828dcaa922155a2b7166c4f36ec45268944e4055c86499bd14319b4c8c0094b7";
+ };
+
+ buildInputs = [ pytest pytestcov mock coverage ];
+ propagatedBuildInputs = [ Mako sqlalchemy python-editor dateutil setuptools ];
+
+ meta = with stdenv.lib; {
+ homepage = https://bitbucket.org/zzzeek/alembic;
+ description = "A database migration tool for SQLAlchemy";
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/alerta-server/default.nix b/nixpkgs/pkgs/development/python-modules/alerta-server/default.nix
new file mode 100644
index 00000000000..9313a255fd0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/alerta-server/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, buildPythonPackage, fetchPypi, pythonOlder, pyyaml
+, python-dateutil, requests, pymongo, raven, bcrypt, flask, pyjwt, flask-cors, psycopg2, pytz, flask-compress, jinja2
+}:
+
+buildPythonPackage rec {
+ pname = "alerta-server";
+ version = "6.7.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "e8dc3428248a5b20c4fe8da76c2d353b715d515bd4879928c499671d4360a90f";
+ };
+
+ propagatedBuildInputs = [ python-dateutil requests pymongo raven bcrypt flask pyjwt flask-cors psycopg2 pytz flask-compress jinja2 pyyaml];
+
+ doCheck = false; # We can't run the tests from Nix, because they rely on the presence of a working MongoDB server
+
+ postInstall = ''
+ wrapProgram $out/bin/alertad --prefix PYTHONPATH : "$PYTHONPATH"
+ '';
+
+ disabled = pythonOlder "3.5";
+
+ meta = with stdenv.lib; {
+ homepage = https://alerta.io;
+ description = "Alerta Monitoring System server";
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/alerta/default.nix b/nixpkgs/pkgs/development/python-modules/alerta/default.nix
new file mode 100644
index 00000000000..257e89790fa
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/alerta/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, six, click, requests, pytz, tabulate, pythonOlder
+}:
+
+buildPythonPackage rec {
+ pname = "alerta";
+ version = "6.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f9f0f8f800798fae83c05dd52dc2f06bd77fb318c784c4b44e3acfba81338881";
+ };
+
+ propagatedBuildInputs = [ six click requests pytz tabulate ];
+
+ doCheck = false;
+
+ postInstall = ''
+ wrapProgram $out/bin/alerta --prefix PYTHONPATH : "$PYTHONPATH"
+ '';
+
+ disabled = pythonOlder "3.5";
+
+ meta = with stdenv.lib; {
+ homepage = https://alerta.io;
+ description = "Alerta Monitoring System command-line interface";
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/algebraic-data-types/default.nix b/nixpkgs/pkgs/development/python-modules/algebraic-data-types/default.nix
new file mode 100644
index 00000000000..4b4986795ce
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/algebraic-data-types/default.nix
@@ -0,0 +1,28 @@
+{ lib, buildPythonPackage, fetchFromGitHub, pythonOlder, hypothesis, mypy }:
+
+buildPythonPackage rec {
+ pname = "algebraic-data-types";
+ version = "0.1.1";
+
+ src = fetchFromGitHub {
+ owner = "jspahrsummers";
+ repo = "adt";
+ rev = "v" + version;
+ sha256 = "1py94jsgh6wch59n9dxnwvk74psbpa1679zfmripa1qfc2218kqi";
+ };
+
+ disabled = pythonOlder "3.6";
+
+ checkInputs = [
+ hypothesis
+ mypy
+ ];
+
+ 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/nixpkgs/pkgs/development/python-modules/allpairspy/default.nix b/nixpkgs/pkgs/development/python-modules/allpairspy/default.nix
new file mode 100644
index 00000000000..e64a6004b78
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/allpairspy/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildPythonPackage, fetchPypi, six, pytest }:
+
+buildPythonPackage rec {
+ pname = "allpairspy";
+ version = "2.4.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8ce160db245375a5ccf0831be77cd98394f514c1b3501ddff5f8edb780ee1748";
+ };
+
+ propagatedBuildInputs = [ six ];
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with lib; {
+ description = "Pairwise test combinations generator";
+ homepage = https://github.com/thombashi/allpairspy;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/alot/default.nix b/nixpkgs/pkgs/development/python-modules/alot/default.nix
new file mode 100644
index 00000000000..bda0e677f4a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/alot/default.nix
@@ -0,0 +1,62 @@
+{ stdenv, lib, buildPythonPackage, fetchFromGitHub, isPy3k
+, notmuch, urwid, urwidtrees, twisted, python_magic, configobj, mock, file, gpgme
+, service-identity
+, gnupg ? null, sphinx, awk ? null, procps ? null, future ? null
+, withManpage ? false }:
+
+
+buildPythonPackage rec {
+ pname = "alot";
+ version = "0.8";
+ outputs = [ "out" ] ++ lib.optional withManpage "man";
+
+ disabled = !isPy3k;
+
+ src = fetchFromGitHub {
+ owner = "pazz";
+ repo = "alot";
+ rev = version;
+ sha256 = "1isn0p0i2a7dlbrdk5ib01xa1wgi6bi9ka4xl4vj8iw1q4i5fqv9";
+ };
+
+ nativeBuildInputs = lib.optional withManpage sphinx;
+
+ propagatedBuildInputs = [
+ notmuch
+ urwid
+ urwidtrees
+ twisted
+ python_magic
+ configobj
+ service-identity
+ file
+ gpgme
+ ];
+
+ # some twisted tests need the network (test_env_set... )
+ doCheck = false;
+ postBuild = lib.optionalString withManpage "make -C docs man";
+
+ checkInputs = [ awk future mock gnupg procps ];
+
+ postInstall = 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
+
+ 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 stdenv.lib; {
+ homepage = https://github.com/pazz/alot;
+ description = "Terminal MUA using notmuch mail";
+ license = licenses.gpl3;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/altair/default.nix b/nixpkgs/pkgs/development/python-modules/altair/default.nix
new file mode 100644
index 00000000000..344a724756e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/altair/default.nix
@@ -0,0 +1,59 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, entrypoints
+, glibcLocales
+, ipython
+, jinja2
+, jsonschema
+, numpy
+, pandas
+, pytest
+, pythonOlder
+, recommonmark
+, six
+, sphinx
+, toolz
+, typing
+, vega_datasets
+}:
+
+buildPythonPackage rec {
+ pname = "altair";
+ version = "3.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "098macm0sw54xqijdy1c8cppcgw79wn52qdc71qqb51nibc17gls";
+ };
+
+ propagatedBuildInputs = [
+ entrypoints
+ jsonschema
+ numpy
+ pandas
+ six
+ toolz
+ ] ++ stdenv.lib.optionals (pythonOlder "3.5") [ typing ];
+
+ checkInputs = [
+ glibcLocales
+ ipython
+ jinja2
+ pytest
+ recommonmark
+ sphinx
+ vega_datasets
+ ];
+
+ checkPhase = ''
+ export LANG=en_US.UTF-8
+ pytest --doctest-modules altair
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A declarative statistical visualization library for Python.";
+ homepage = https://github.com/altair-viz/altair;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ teh ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/amazon_kclpy/default.nix b/nixpkgs/pkgs/development/python-modules/amazon_kclpy/default.nix
new file mode 100644
index 00000000000..a405b575b25
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/amazon_kclpy/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, python, mock, boto, pytest }:
+
+buildPythonPackage rec {
+ pname = "amazon_kclpy";
+ version = "1.5.0";
+
+ src = fetchFromGitHub {
+ owner = "awslabs";
+ repo = "amazon-kinesis-client-python";
+ rev = "v${version}";
+ sha256 = "1qg86y9172gm5592ja7lr6w7kfnx668j99bf3ijklpk5yshxwr9m";
+ };
+
+ # argparse is just required for python2.6
+ prePatch = ''
+ substituteInPlace setup.py \
+ --replace "'argparse'," ""
+ '';
+
+ propagatedBuildInputs = [ mock boto ];
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ ${python.interpreter} -m pytest
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Amazon Kinesis Client Library for Python";
+ homepage = https://github.com/awslabs/amazon-kinesis-client-python;
+ license = licenses.amazonsl;
+ maintainers = with maintainers; [ psyanticy ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/amqp/default.nix b/nixpkgs/pkgs/development/python-modules/amqp/default.nix
new file mode 100644
index 00000000000..bf008df3832
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/amqp/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytest, case, vine, pytest-sugar }:
+
+buildPythonPackage rec {
+ pname = "amqp";
+ version = "2.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1j1046gcriidsfha0hvrw6hwcm0wrhbvg0prjjji5inaadyzidnb";
+ };
+
+ checkInputs = [ pytest case pytest-sugar ];
+ propagatedBuildInputs = [ vine ];
+
+ # Disable because pytest-sugar requires an old version of pytest
+ doCheck = false;
+
+ meta = with stdenv.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;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/amqplib/default.nix b/nixpkgs/pkgs/development/python-modules/amqplib/default.nix
new file mode 100644
index 00000000000..682dee00014
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/amqplib/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchPypi, python }:
+
+buildPythonPackage rec {
+ pname = "amqplib";
+ version = "1.0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "tgz";
+ sha256 = "843d69b681a60afd21fbf50f310404ec67fcdf9d13dfcf6e9d41f3b456217e5b";
+ };
+
+ # testing assumes network connection
+ doCheck = false;
+
+ checkPhase = ''
+ ${python.interpreter} tests/client_0_8/run_all.py
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/barryp/py-amqplib;
+ description = "Python client for the Advanced Message Queuing Procotol (AMQP)";
+ license = licenses.lgpl21;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/androguard/default.nix b/nixpkgs/pkgs/development/python-modules/androguard/default.nix
new file mode 100644
index 00000000000..7525df60575
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/androguard/default.nix
@@ -0,0 +1,37 @@
+{ lib, buildPythonPackage, fetchPypi, future, networkx, pygments, lxml, colorama, matplotlib,
+ asn1crypto, click, pydot, ipython, pyqt5, pyperclip }:
+
+buildPythonPackage rec {
+ version = "3.3.5";
+ pname = "androguard";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f0655ca3a5add74c550951e79bd0bebbd1c5b239178393d30d8db0bd3202cda2";
+ };
+
+ propagatedBuildInputs = [
+ future
+ networkx
+ pygments
+ lxml
+ colorama
+ matplotlib
+ asn1crypto
+ click
+ pydot
+ ipython
+ pyqt5
+ pyperclip
+ ];
+
+ # Tests are not shipped on PyPI.
+ doCheck = false;
+
+ meta = {
+ description = "Tool and python library to interact with Android Files";
+ homepage = https://github.com/androguard/androguard;
+ license = lib.licenses.asl20;
+ maintainers = [ lib.maintainers.pmiddend ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aniso8601/default.nix b/nixpkgs/pkgs/development/python-modules/aniso8601/default.nix
new file mode 100644
index 00000000000..1d5bf641f7c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aniso8601/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, dateutil, mock, isPy3k }:
+
+buildPythonPackage rec {
+ pname = "aniso8601";
+ version = "7.0.0";
+
+ meta = with stdenv.lib; {
+ description = "Parses ISO 8601 strings.";
+ homepage = "https://bitbucket.org/nielsenb/aniso8601";
+ license = licenses.bsd3;
+ };
+
+ propagatedBuildInputs = [ dateutil ];
+
+ checkInputs = stdenv.lib.optional (!isPy3k) mock;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "07jgf55yq2j2q76gaj3hakflnxg8yfkarzvrmq33i1dp6xk2ngai";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/annexremote/default.nix b/nixpkgs/pkgs/development/python-modules/annexremote/default.nix
new file mode 100644
index 00000000000..f07f05b9884
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/annexremote/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, isPy3k
+, buildPythonPackage
+, fetchFromGitHub
+, future
+, mock
+, nose
+}:
+
+buildPythonPackage rec {
+ pname = "annexremote";
+ version = "1.3.1";
+
+ # 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";
+ sha256 = "13ny7h41430pi9393dw3qgwxvzcxacapjsw0d3vjm7lc4h566alq";
+ };
+
+ propagatedBuildInputs = [ future ];
+
+ checkInputs = [ nose ] ++ lib.optional (!isPy3k) mock;
+ checkPhase = "nosetests -v";
+
+ meta = with lib; {
+ description = "Helper module to easily develop git-annex remotes";
+ homepage = https://github.com/Lykos153/AnnexRemote;
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ montag451 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/annoy/default.nix b/nixpkgs/pkgs/development/python-modules/annoy/default.nix
new file mode 100644
index 00000000000..ce7d9940bf2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/annoy/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+}:
+
+buildPythonPackage rec {
+ version = "1.15.2";
+ pname = "annoy";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1i5bkf8mwd1pyrbhfwncir2r8yq8s9qz5j13vv2qz92n9g57sr3m";
+ };
+
+ checkInputs = [
+ nose
+ ];
+
+ meta = with stdenv.lib; {
+ description = "Approximate Nearest Neighbors in C++/Python optimized for memory usage and loading/saving to disk";
+ homepage = https://github.com/spotify/annoy;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ timokau ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/anonip/default.nix b/nixpkgs/pkgs/development/python-modules/anonip/default.nix
new file mode 100644
index 00000000000..de9048bde34
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/anonip/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, lib, buildPythonPackage, fetchFromGitHub, ipaddress, isPy27 }:
+
+buildPythonPackage rec {
+ pname = "anonip";
+ version = "1.0.0";
+
+ src = fetchFromGitHub {
+ owner = "DigitaleGesellschaft";
+ repo = "Anonip";
+ rev = "v${version}";
+ sha256 = "0y5xqivcinp6pwx4whc8ca1n2wxrvff7a2lpbz2dhivilfanmljs";
+ };
+
+ propagatedBuildInputs = lib.optionals isPy27 [ ipaddress ];
+
+ checkPhase = "python tests.py";
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/DigitaleGesellschaft/Anonip";
+ description = "A tool to anonymize IP-addresses in log-files";
+ license = licenses.bsd3;
+ maintainers = [ maintainers.mmahut ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ansi/default.nix b/nixpkgs/pkgs/development/python-modules/ansi/default.nix
new file mode 100644
index 00000000000..77b93ce890e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ansi/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "ansi";
+ version = "0.1.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "06y6470bzvlqys3zi2vc68rmk9n05v1ibral14gbfpgfa8fzy7pg";
+ };
+
+ checkPhase = ''
+ python -c "import ansi.color"
+ '';
+
+ meta = with lib; {
+ description = "ANSI cursor movement and graphics";
+ homepage = https://github.com/tehmaze/ansi/;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ansible-kernel/default.nix b/nixpkgs/pkgs/development/python-modules/ansible-kernel/default.nix
new file mode 100644
index 00000000000..42438b31c21
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ansible-kernel/default.nix
@@ -0,0 +1,60 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, writeText
+, ipywidgets
+, six
+, docopt
+, tqdm
+, jupyter
+, psutil
+, pyyaml
+, ansible-runner
+, ansible
+, python
+}:
+
+let
+ kernelSpecFile = writeText "kernel.json" (builtins.toJSON {
+ argv = [ python.interpreter "-m" "ansible_kernel" "-f" "{connection_file}" ];
+ codemirror_mode = "yaml";
+ display_name = "Ansible";
+ language = "ansible";
+ });
+in
+buildPythonPackage rec {
+ pname = "ansible-kernel";
+ version = "0.9.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a59039a1724c0f4f4435316e2ad3383f2328ae61f190e74414a66cc8c4637636";
+ };
+
+ propagatedBuildInputs = [ ipywidgets six docopt tqdm jupyter psutil pyyaml ansible-runner ansible ];
+
+ postPatch = ''
+ # remove when merged
+ # https://github.com/ansible/ansible-jupyter-kernel/pull/82
+ touch LICENSE.md
+
+ # remove custom install
+ sed -i "s/cmdclass={'install': Installer},//" setup.py
+ '';
+
+ # tests hang with launched kernel
+ doCheck = false;
+
+ # install kernel manually
+ postInstall = ''
+ mkdir -p $out/share/jupyter/kernels/ansible/
+ ln -s ${kernelSpecFile} $out/share/jupyter/kernels/ansible/kernel.json
+ '';
+
+ meta = with lib; {
+ description = "An Ansible kernel for Jupyter";
+ homepage = https://github.com/ansible/ansible-jupyter-kernel;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ansible-lint/default.nix b/nixpkgs/pkgs/development/python-modules/ansible-lint/default.nix
new file mode 100644
index 00000000000..ed5b35e8344
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ansible-lint/default.nix
@@ -0,0 +1,46 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+, ansible
+, pyyaml
+, six
+, nose
+, setuptools_scm
+, ruamel_yaml
+}:
+
+buildPythonPackage rec {
+ pname = "ansible-lint";
+ version = "4.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "9430ea6e654ba4bf5b9c6921efc040f46cda9c4fd2896a99ff71d21037bcb123";
+ };
+
+ nativeBuildInputs = [ setuptools_scm ];
+ propagatedBuildInputs = [ pyyaml six ansible ruamel_yaml ];
+ checkInputs = [ nose ];
+
+ postPatch = ''
+ patchShebangs bin/ansible-lint
+ substituteInPlace setup.cfg \
+ --replace "setuptools_scm_git_archive>=1.0" ""
+ '';
+
+ # give a hint to setuptools_scm on package version
+ preBuild = ''
+ export SETUPTOOLS_SCM_PRETEND_VERSION="v${version}"
+ '';
+
+ checkPhase = ''
+ PATH=$out/bin:$PATH HOME=$(mktemp -d) nosetests test
+ '';
+
+ meta = with lib; {
+ homepage = "https://github.com/willthames/ansible-lint";
+ description = "Best practices checker for Ansible";
+ license = licenses.mit;
+ maintainers = [ maintainers.sengaya ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ansible-runner/default.nix b/nixpkgs/pkgs/development/python-modules/ansible-runner/default.nix
new file mode 100644
index 00000000000..56850dcf86e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ansible-runner/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, psutil
+, pexpect
+, python-daemon
+, pyyaml
+, six
+, ansible
+, pytest
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "ansible-runner";
+ version = "1.3.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "087jk00kv0qsqqspyn015nicvbl627wck3fgx2qhqawvrgqk3xb0";
+ };
+
+ checkInputs = [ pytest mock ];
+ propagatedBuildInputs = [
+ ansible
+ psutil
+ pexpect
+ python-daemon
+ pyyaml
+ six
+ ];
+
+ checkPhase = ''
+ HOME=$(mktemp -d) pytest --ignore test/unit/test_runner.py -k "not test_prepare"
+ '';
+
+ meta = with lib; {
+ description = "Helps when interfacing with Ansible";
+ homepage = https://github.com/ansible/ansible-runner;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ansible/default.nix b/nixpkgs/pkgs/development/python-modules/ansible/default.nix
new file mode 100644
index 00000000000..fab3c0df58c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ansible/default.nix
@@ -0,0 +1,55 @@
+{ lib
+, fetchFromGitHub
+, buildPythonPackage
+, pycrypto
+, paramiko
+, jinja2
+, pyyaml
+, httplib2
+, boto
+, six
+, netaddr
+, dnspython
+, jmespath
+, dopy
+, windowsSupport ? false
+, pywinrm
+}:
+
+buildPythonPackage rec {
+ pname = "ansible";
+ version = "2.8.4";
+
+ src = fetchFromGitHub {
+ owner = "ansible";
+ repo = "ansible";
+ rev = "v${version}";
+ sha256 = "1fp7zz8awfv70nn8i6x0ggx4472377hm7787x16qv2kz4nb069ki";
+ };
+
+ prePatch = ''
+ sed -i "s,/usr/,$out," lib/ansible/constants.py
+ '';
+
+ postInstall = ''
+ for m in docs/man/man1/*; do
+ install -vD $m -t $out/share/man/man1
+ done
+ '';
+
+ propagatedBuildInputs = [
+ pycrypto paramiko jinja2 pyyaml httplib2 boto
+ six netaddr dnspython jmespath dopy
+ ] ++ lib.optional windowsSupport pywinrm;
+
+ # dificult to test
+ doCheck = false;
+
+ meta = with lib; {
+ homepage = http://www.ansible.com;
+ description = "Radically simple IT automation";
+ license = [ licenses.gpl3 ] ;
+ maintainers = with maintainers; [ joamaki costrouc ];
+ platforms = platforms.linux ++ platforms.darwin;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ansicolor/default.nix b/nixpkgs/pkgs/development/python-modules/ansicolor/default.nix
new file mode 100644
index 00000000000..5960e7b4133
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ansicolor/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "ansicolor";
+ version = "0.2.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d17e1b07b9dd7ded31699fbca53ae6cd373584f9b6dcbc124d1f321ebad31f1d";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/numerodix/ansicolor/;
+ description = "A library to produce ansi color output and colored highlighting and diffing";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ andsild ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ansicolors/default.nix b/nixpkgs/pkgs/development/python-modules/ansicolors/default.nix
new file mode 100644
index 00000000000..a737cb06ea2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ansicolors/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytest }:
+
+buildPythonPackage rec {
+ pname = "ansicolors";
+ version = "1.1.8";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "99f94f5e3348a0bcd43c82e5fc4414013ccc19d70bd939ad71e0133ce9c372e0";
+ };
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/verigak/colors/;
+ description = "ANSI colors for Python";
+ license = licenses.isc;
+ maintainers = with maintainers; [ copumpkin ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ansiconv/default.nix b/nixpkgs/pkgs/development/python-modules/ansiconv/default.nix
new file mode 100644
index 00000000000..08f93134b32
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ansiconv/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, pytest }:
+
+buildPythonPackage rec {
+ pname = "ansiconv";
+ version = "1.0.0";
+
+ src = fetchFromGitHub {
+ owner = "ansible";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "0ljfpl8x069arzginvpi1v6hlaq4x2qpjqj01qds2ylz33scq8r4";
+ };
+
+ checkInputs = [ pytest ];
+
+ meta = with stdenv.lib; {
+ description = "A module for converting ANSI coded text and converts it to either plain text or HTML";
+ homepage = https://github.com/ansible/ansiconv;
+ license = licenses.mit;
+ maintainers = with maintainers; [ psyanticy ];
+ };
+
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/antlr4-python2-runtime/default.nix b/nixpkgs/pkgs/development/python-modules/antlr4-python2-runtime/default.nix
new file mode 100644
index 00000000000..b343be1d7bb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/antlr4-python2-runtime/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, fetchPypi, buildPythonPackage, isPy3k }:
+
+buildPythonPackage rec {
+ pname = "antlr4-python2-runtime";
+ version = "4.7.2";
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "04ljic5wnqpizln8q3c78pqrckz6q5nb433if00j1mlyv2yja22q";
+ };
+
+ meta = {
+ description = "Runtime for ANTLR";
+ homepage = "https://www.antlr.org/";
+ license = stdenv.lib.licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/antlr4-python3-runtime/default.nix b/nixpkgs/pkgs/development/python-modules/antlr4-python3-runtime/default.nix
new file mode 100644
index 00000000000..3ebba9f9d38
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/antlr4-python3-runtime/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, fetchPypi, buildPythonPackage, isPy3k }:
+
+buildPythonPackage rec {
+ pname = "antlr4-python3-runtime";
+ version = "4.7.2";
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "02xm7ccsf51vh4xsnhlg6pvchm1x3ckgv9kwm222w5drizndr30n";
+ };
+
+ meta = {
+ description = "Runtime for ANTLR";
+ homepage = "https://www.antlr.org/";
+ license = stdenv.lib.licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/anyjson/default.nix b/nixpkgs/pkgs/development/python-modules/anyjson/default.nix
new file mode 100644
index 00000000000..65476b47f8f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/anyjson/default.nix
@@ -0,0 +1,22 @@
+{ 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/nixpkgs/pkgs/development/python-modules/anytree/default.nix b/nixpkgs/pkgs/development/python-modules/anytree/default.nix
new file mode 100644
index 00000000000..3821fea2446
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/anytree/default.nix
@@ -0,0 +1,63 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, substituteAll
+, fetchpatch
+, nose
+, six
+, graphviz
+, fontconfig
+}:
+
+buildPythonPackage rec {
+ pname = "anytree";
+ version = "2.6.0";
+
+ src = fetchFromGitHub {
+ owner = "c0fec0de";
+ repo = pname;
+ rev = version;
+ sha256 = "1k3yj9h3ssjlz57r4g1qzxvprxjp7n92vms9fv0d46pigylxm5i3";
+ };
+
+ patches = [
+ (substituteAll {
+ src = ./graphviz.patch;
+ inherit graphviz;
+ })
+ # Fix tests python3.7
+ # See: https://github.com/c0fec0de/anytree/pull/85
+ (fetchpatch {
+ url = "https://github.com/c0fec0de/anytree/commit/dd1b3d325546fef7436711e4cfea9a5fb61daaf8.patch";
+ sha256 = "1dpa2jh2kakfaapnqrz03frb67q5fwxzc8c70i6nv1b01i9xw0bn";
+ })
+ ];
+
+ checkInputs = [
+ nose
+ ];
+
+ propagatedBuildInputs = [
+ six
+ ];
+
+ # Fontconfig error: Cannot load default config file
+ preCheck = ''
+ export FONTCONFIG_FILE=${fontconfig.out}/etc/fonts/fonts.conf
+ '';
+
+ checkPhase = ''
+ runHook preCheck
+
+ nosetests
+
+ runHook postCheck
+ '';
+
+ meta = with lib; {
+ description = "Powerful and Lightweight Python Tree Data Structure";
+ homepage = https://github.com/c0fec0de/anytree;
+ license = licenses.asl20;
+ maintainers = [ maintainers.worldofpeace ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/anytree/graphviz.patch b/nixpkgs/pkgs/development/python-modules/anytree/graphviz.patch
new file mode 100644
index 00000000000..583b60444e3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/anytree/graphviz.patch
@@ -0,0 +1,13 @@
+diff --git a/anytree/exporter/dotexporter.py b/anytree/exporter/dotexporter.py
+index 9c10a68..209a952 100644
+--- a/anytree/exporter/dotexporter.py
++++ b/anytree/exporter/dotexporter.py
+@@ -228,7 +228,7 @@ class DotExporter(object):
+ for line in self:
+ dotfile.write(("%s\n" % line).encode("utf-8"))
+ dotfile.flush()
+- cmd = ["dot", dotfilename, "-T", fileformat, "-o", filename]
++ cmd = ["@graphviz@/bin/dot", dotfilename, "-T", fileformat, "-o", filename]
+ check_call(cmd)
+ try:
+ remove(dotfilename)
diff --git a/nixpkgs/pkgs/development/python-modules/apipkg/default.nix b/nixpkgs/pkgs/development/python-modules/apipkg/default.nix
new file mode 100644
index 00000000000..22bddb252c8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/apipkg/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, pytest, setuptools_scm, isPy3k }:
+
+buildPythonPackage rec {
+ pname = "apipkg";
+ version = "1.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "37228cda29411948b422fae072f57e31d3396d2ee1c9783775980ee9c9990af6";
+ };
+
+ nativeBuildInputs = [ setuptools_scm ];
+ checkInputs = [ pytest ];
+
+ # Fix pytest 4 support. See: https://github.com/pytest-dev/apipkg/issues/14
+ postPatch = ''
+ substituteInPlace "test_apipkg.py" \
+ --replace "py.test.ensuretemp('test_apipkg')" "py.path.local('test_apipkg')"
+ '';
+
+ # Failing tests on Python 3
+ # https://github.com/pytest-dev/apipkg/issues/17
+ checkPhase = let
+ disabledTests = stdenv.lib.optionals isPy3k [
+ "test_error_loading_one_element"
+ "test_aliasmodule_proxy_methods"
+ "test_eagerload_on_bython"
+ ];
+ testExpression = stdenv.lib.optionalString (disabledTests != [])
+ "-k 'not ${stdenv.lib.concatStringsSep " and not " disabledTests}'";
+ in ''
+ py.test ${testExpression}
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Namespace control and lazy-import mechanism";
+ homepage = "https://github.com/pytest-dev/apipkg";
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aplpy/default.nix b/nixpkgs/pkgs/development/python-modules/aplpy/default.nix
new file mode 100644
index 00000000000..9710dc9f9a6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aplpy/default.nix
@@ -0,0 +1,61 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, numpy
+, astropy
+, astropy-helpers
+, matplotlib
+, reproject
+, pyavm
+, pyregion
+, pillow
+, scikitimage
+, shapely
+, pytest
+, pytest-astropy
+}:
+
+buildPythonPackage rec {
+ pname = "aplpy";
+ version = "2.0.3";
+
+ src = fetchPypi {
+ pname = "APLpy";
+ inherit version;
+ sha256 = "239f3d83635ca4251536aeb577df7c60df77fc4d658097b92094719739aec3f3";
+ };
+
+ propagatedBuildInputs = [
+ numpy
+ astropy
+ matplotlib
+ reproject
+ pyavm
+ pyregion
+ pillow
+ scikitimage
+ shapely
+ ];
+
+ nativeBuildInputs = [ astropy-helpers ];
+
+ checkInputs = [ pytest pytest-astropy ];
+
+ # Disable automatic update of the astropy-helper module
+ postPatch = ''
+ substituteInPlace setup.cfg --replace "auto_use = True" "auto_use = False"
+ '';
+
+ # Tests must be run in the build directory
+ checkPhase = ''
+ cd build/lib
+ pytest
+ '';
+
+ meta = with lib; {
+ description = "The Astronomical Plotting Library in Python";
+ homepage = http://aplpy.github.io;
+ license = licenses.mit;
+ maintainers = [ maintainers.smaret ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/appdirs/default.nix b/nixpkgs/pkgs/development/python-modules/appdirs/default.nix
new file mode 100644
index 00000000000..8716f007b87
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/appdirs/default.nix
@@ -0,0 +1,20 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "appdirs";
+ version = "1.4.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "9e5896d1372858f8dd3344faf4e5014d21849c756c8d5701f78f8a103b372d92";
+ };
+
+ meta = {
+ description = "A python module for determining appropriate platform-specific dirs";
+ homepage = https://github.com/ActiveState/appdirs;
+ license = lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/application/default.nix b/nixpkgs/pkgs/development/python-modules/application/default.nix
new file mode 100644
index 00000000000..654567cc23f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/application/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPythonPackage, fetchdarcs, zope_interface, isPy3k }:
+
+buildPythonPackage rec {
+ pname = "python-application";
+ version = "2.7.0";
+ disabled = isPy3k;
+
+ src = fetchdarcs {
+ url = "http://devel.ag-projects.com/repositories/${pname}";
+ rev = "release-${version}";
+ sha256 = "1xpyk2v3naxkjhpyris58dxg1lxbraxgjd6f7w1sah5j0sk7psla";
+ };
+
+ buildInputs = [ zope_interface ];
+
+ meta = with lib; {
+ description = "Basic building blocks for python applications";
+ homepage = https://github.com/AGProjects/python-application;
+ license = licenses.lgpl2Plus;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/applicationinsights/default.nix b/nixpkgs/pkgs/development/python-modules/applicationinsights/default.nix
new file mode 100644
index 00000000000..10f66b24d14
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/applicationinsights/default.nix
@@ -0,0 +1,24 @@
+{ buildPythonPackage
+, lib
+, fetchPypi
+, portalocker
+}:
+
+buildPythonPackage rec {
+ version = "0.11.9";
+ pname = "applicationinsights";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1hyjdv6xnswgqvip8y164piwfach9hjkbp7vc2qzhd7amjpim89h";
+ };
+
+ propagatedBuildInputs = [ portalocker ];
+
+ meta = with lib; {
+ description = "This project extends the Application Insights API surface to support Python";
+ homepage = https://github.com/Microsoft/ApplicationInsights-Python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ jonringer ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/appnope/default.nix b/nixpkgs/pkgs/development/python-modules/appnope/default.nix
new file mode 100644
index 00000000000..08f6fa529ca
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/appnope/default.nix
@@ -0,0 +1,21 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "appnope";
+ version = "0.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8b995ffe925347a2138d7ac0fe77155e4311a0ea6d6da4f5128fe4b3cbe5ed71";
+ };
+
+ meta = {
+ description = "Disable App Nap on macOS";
+ homepage = https://pypi.python.org/pypi/appnope;
+ platforms = lib.platforms.darwin;
+ license = lib.licenses.bsd3;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/apprise/default.nix b/nixpkgs/pkgs/development/python-modules/apprise/default.nix
new file mode 100644
index 00000000000..7b8885de169
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/apprise/default.nix
@@ -0,0 +1,31 @@
+{ lib, buildPythonPackage, fetchPypi
+, Babel, decorator, requests, requests_oauthlib, six, click, markdown, pyyaml
+, pytestrunner, coverage, flake8, mock, pytest, pytestcov, tox
+}:
+
+buildPythonPackage rec {
+ pname = "apprise";
+ version = "0.7.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0zqnk255d311ibird08sv0c21fw1r1xhldhyx5lnl3ji1xkv9173";
+ };
+
+ nativeBuildInputs = [ Babel ];
+
+ propagatedBuildInputs = [
+ decorator requests requests_oauthlib six click markdown pyyaml
+ ];
+
+ checkInputs = [
+ pytestrunner coverage flake8 mock pytest pytestcov tox
+ ];
+
+ meta = with lib; {
+ homepage = "https://github.com/caronc/apprise";
+ description = "Push Notifications that work with just about every platform!";
+ license = licenses.mit;
+ maintainers = [ maintainers.marsam ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/approvaltests/default.nix b/nixpkgs/pkgs/development/python-modules/approvaltests/default.nix
new file mode 100644
index 00000000000..de64f86d728
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/approvaltests/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, isPy37, pyperclip }:
+
+buildPythonPackage rec {
+ version = "0.2.4";
+ pname = "approvaltests";
+
+ # no tests included in PyPI tarball
+ src = fetchFromGitHub {
+ owner = "approvals";
+ repo = "ApprovalTests.Python";
+ rev = version;
+ sha256 = "05lj5i13zpkgw1wdc1v81wj4zqj8bpzqiwycdnwlg08azcy7k7j1";
+ };
+
+ propagatedBuildInputs = [ pyperclip ];
+
+ postPatch = ''
+ substituteInPlace setup.py \
+ --replace "pyperclip==1.5.27" "pyperclip>=1.5.27"
+ '';
+
+ # Tests fail on Python 3.7
+ # https://github.com/approvals/ApprovalTests.Python/issues/36
+ doCheck = !isPy37;
+
+ # Disable Linux failing test, because tries to use darwin/windows specific reporters
+ preCheck = stdenv.lib.optionalString stdenv.isLinux ''
+ substituteInPlace tests/test_genericdiffreporter.py \
+ --replace "test_find_working_reporter" "_find_working_reporter"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Assertion/verification library to aid testing";
+ homepage = https://github.com/approvals/ApprovalTests.Python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.marsam ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/apsw/default.nix b/nixpkgs/pkgs/development/python-modules/apsw/default.nix
new file mode 100644
index 00000000000..fb22128b928
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/apsw/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub
+, sqlite, isPyPy }:
+
+buildPythonPackage rec {
+ pname = "apsw";
+ version = "3.22.0-r1";
+
+ disabled = isPyPy;
+
+ src = fetchFromGitHub {
+ owner = "rogerbinns";
+ repo = "apsw";
+ rev = version;
+ sha256 = "02ldvshcgr4c7c8anp4flfnw8g8ys5bflkb8b51rb618qxhhwyak";
+ };
+
+ buildInputs = [ sqlite ];
+
+ meta = with stdenv.lib; {
+ description = "A Python wrapper for the SQLite embedded relational database engine";
+ homepage = https://github.com/rogerbinns/apsw;
+ license = licenses.zlib;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/arelle/default.nix b/nixpkgs/pkgs/development/python-modules/arelle/default.nix
new file mode 100644
index 00000000000..85033a1846f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/arelle/default.nix
@@ -0,0 +1,71 @@
+{ gui ? true,
+ buildPythonPackage, fetchFromGitHub, lib,
+ sphinx, lxml, isodate, numpy, openpyxl,
+ tkinter ? null, py3to2, isPy3k, python,
+ ... }:
+
+buildPythonPackage rec {
+ pname = "arelle${lib.optionalString (!gui) "-headless"}";
+ version = "18.3";
+
+ disabled = !isPy3k;
+
+ # Releases are published at http://arelle.org/download/ but sadly no
+ # tags are published on github.
+ src = fetchFromGitHub {
+ owner = "Arelle";
+ repo = "Arelle";
+ rev = "edgr${version}";
+ sha256 = "12a94ipdp6xalqyds7rcp6cjwps6fbj3byigzfy403hlqc9n1g33";
+ };
+ outputs = ["out" "doc"];
+ patches = [
+ ./tests.patch
+ ];
+ postPatch = "rm testParser2.py";
+ nativeBuildInputs = [
+ sphinx
+ py3to2
+ ];
+ propagatedBuildInputs = [
+ lxml
+ isodate
+ numpy
+ openpyxl
+ ] ++ lib.optionals gui [
+ tkinter
+ ];
+
+ # arelle-gui is useless without gui dependencies, so delete it when !gui.
+ postInstall = lib.optionalString (!gui) ''
+ find $out/bin -name "*arelle-gui*" -delete
+ '' +
+ # By default, not the entirety of the src dir is copied. This means we don't
+ # copy the `images` dir, which is needed for the gui version.
+ lib.optionalString (gui) ''
+ targetDir=$out/${python.sitePackages}
+ cp -vr $src/arelle $targetDir
+ '';
+
+ # Documentation
+ postBuild = ''
+ (cd apidocs && make html && cp -r _build $doc)
+ '';
+
+ doCheck = false;
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with lib; {
+ description = ''
+ An open source facility for XBRL, the eXtensible Business Reporting
+ Language supporting various standards, exposed through a Python or
+ REST API'' + lib.optionalString gui " and a graphical user interface";
+ homepage = http://arelle.org/;
+ license = licenses.asl20;
+ platforms = platforms.all;
+ maintainers = with maintainers; [ roberth ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/arelle/tests.patch b/nixpkgs/pkgs/development/python-modules/arelle/tests.patch
new file mode 100644
index 00000000000..e34cda99b25
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/arelle/tests.patch
@@ -0,0 +1,14 @@
+diff --git c/arelle/CntlrProfiler.py i/arelle/CntlrProfiler.py
+index a64bb1b..dc0299d 100644
+--- c/arelle/CntlrProfiler.py
++++ i/arelle/CntlrProfiler.py
+@@ -1,5 +1,6 @@
+
+-import Cntlr, ModelManager, FileSource, time
++from arelle import Cntlr, ModelManager, FileSource
++import time
+ from optparse import OptionParser
+ import cProfile
+ import gettext
+diff --git c/arelle/ValidateFilingText.py i/arelle/ValidateFilingText.py
+index 12dbbbb..c0e98c3 100644
diff --git a/nixpkgs/pkgs/development/python-modules/argcomplete/default.nix b/nixpkgs/pkgs/development/python-modules/argcomplete/default.nix
new file mode 100644
index 00000000000..efc4c824a39
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/argcomplete/default.nix
@@ -0,0 +1,26 @@
+{ buildPythonPackage, fetchPypi, lib,
+ dicttoxml, pexpect, prettytable, requests_toolbelt
+}:
+buildPythonPackage rec {
+ pname = "argcomplete";
+ version = "1.10.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1hdysr9z28sgwv47mivf4iyr1sg19hgfz349dghgdlk3rkl6v0s5";
+ };
+
+ doCheck = false; # bash-completion test fails with "compgen: command not found".
+
+ # re-enable if we are able to make testing work
+ # buildInputs = [ coverage flake8 ];
+
+ propagatedBuildInputs = [ dicttoxml pexpect prettytable requests_toolbelt ];
+
+ meta = with lib; {
+ description = "Bash tab completion for argparse";
+ homepage = https://argcomplete.readthedocs.io;
+ maintainers = [ maintainers.womfoo ];
+ license = [ licenses.asl20 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/argh/default.nix b/nixpkgs/pkgs/development/python-modules/argh/default.nix
new file mode 100644
index 00000000000..8c6afb099f9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/argh/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, py
+, mock
+, glibcLocales
+, iocapture
+}:
+
+buildPythonPackage rec {
+ pname = "argh";
+ version = "0.26.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "e9535b8c84dc9571a48999094fda7f33e63c3f1b74f3e5f3ac0105a58405bb65";
+ };
+
+ checkInputs = [ pytest py mock glibcLocales iocapture ];
+
+ checkPhase = ''
+ export LANG="en_US.UTF-8"
+ py.test
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/neithere/argh/;
+ description = "An unobtrusive argparse wrapper with natural syntax";
+ license = licenses.lgpl2;
+ maintainers = with maintainers; [ domenkozar ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/argon2_cffi/default.nix b/nixpkgs/pkgs/development/python-modules/argon2_cffi/default.nix
new file mode 100644
index 00000000000..187e795416c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/argon2_cffi/default.nix
@@ -0,0 +1,33 @@
+{ cffi
+, six
+, enum34
+, hypothesis
+, pytest
+, wheel
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, lib
+}:
+
+buildPythonPackage rec {
+ pname = "argon2_cffi";
+ version = "19.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "81548a27b919861040cb928a350733f4f9455dd67c7d1ba92eb5960a1d7f8b26";
+ };
+
+ propagatedBuildInputs = [ cffi six ] ++ lib.optional (!isPy3k) enum34;
+ checkInputs = [ hypothesis pytest wheel ];
+ checkPhase = ''
+ pytest tests
+ '';
+
+ meta = with lib; {
+ description = "Secure Password Hashes for Python";
+ homepage = https://argon2-cffi.readthedocs.io/;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/args/default.nix b/nixpkgs/pkgs/development/python-modules/args/default.nix
new file mode 100644
index 00000000000..943f129031e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/args/default.nix
@@ -0,0 +1,16 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "args";
+ version = "0.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a785b8d837625e9b61c39108532d95b85274acd679693b71ebb5156848fcf814";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Command Arguments for Humans";
+ homepage = https://github.com/kennethreitz/args;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/arpeggio/default.nix b/nixpkgs/pkgs/development/python-modules/arpeggio/default.nix
new file mode 100644
index 00000000000..045707aee4d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/arpeggio/default.nix
@@ -0,0 +1,24 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, glibcLocales
+}:
+
+buildPythonPackage rec {
+ pname = "Arpeggio";
+ version = "1.9.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a5258b84f76661d558492fa87e42db634df143685a0e51802d59cae7daad8732";
+ };
+
+ # Shall not be needed for next release
+ LC_ALL = "en_US.UTF-8";
+ buildInputs = [ glibcLocales ];
+
+ meta = {
+ description = "Packrat parser interpreter";
+ license = lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/arrow/default.nix b/nixpkgs/pkgs/development/python-modules/arrow/default.nix
new file mode 100644
index 00000000000..e357bef0dfd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/arrow/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, nose, chai, simplejson, backports_functools_lru_cache
+, dateutil, pytz
+}:
+
+buildPythonPackage rec {
+ pname = "arrow";
+ version = "0.13.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "82dd5e13b733787d4eb0fef42d1ee1a99136dc1d65178f70373b3678b3181bfc";
+ };
+
+ checkPhase = ''
+ nosetests --cover-package=arrow
+ '';
+
+ checkInputs = [ nose chai simplejson pytz ];
+ propagatedBuildInputs = [ dateutil backports_functools_lru_cache ];
+
+ postPatch = ''
+ substituteInPlace setup.py --replace "==1.2.1" ""
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Python library for date manipulation";
+ license = "apache";
+ maintainers = with maintainers; [ thoughtpolice ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/arxiv2bib/default.nix b/nixpkgs/pkgs/development/python-modules/arxiv2bib/default.nix
new file mode 100644
index 00000000000..99725bcfa61
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/arxiv2bib/default.nix
@@ -0,0 +1,27 @@
+{ buildPythonPackage, python, lib, fetchFromGitHub
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "arxiv2bib";
+ version = "1.0.8";
+
+ # Missing tests on Pypi
+ src = fetchFromGitHub {
+ owner = "nathangrigg";
+ repo = "arxiv2bib";
+ rev = version;
+ sha256 = "1kp2iyx20lpc9dv4qg5fgwf83a1wx6f7hj1ldqyncg0kn9xcrhbg";
+ };
+
+ checkInputs = [ mock ];
+
+ checkPhase = "${python.interpreter} -m unittest discover -s tests";
+
+ meta = with lib; {
+ description = "Get a BibTeX entry from an arXiv id number, using the arxiv.org API";
+ homepage = http://nathangrigg.github.io/arxiv2bib/;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.nico202 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/asana/default.nix b/nixpkgs/pkgs/development/python-modules/asana/default.nix
new file mode 100644
index 00000000000..26a667bea4d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/asana/default.nix
@@ -0,0 +1,37 @@
+{ buildPythonPackage, pythonAtLeast, pytest, requests, requests_oauthlib, six
+, fetchFromGitHub, responses, stdenv
+}:
+
+buildPythonPackage rec {
+ pname = "asana";
+ version = "0.8.2";
+
+ # upstream reportedly doesn't support 3.7 yet, blocked on
+ # https://bugs.python.org/issue34226
+ disabled = pythonAtLeast "3.7";
+
+ src = fetchFromGitHub {
+ owner = "asana";
+ repo = "python-asana";
+ rev = "v${version}";
+ sha256 = "113zwnrpim1pdw8dzid2wpp5gzr2zk26jjl4wrwhgj0xk1cw94yi";
+ };
+
+ checkInputs = [ pytest responses ];
+ propagatedBuildInputs = [ requests requests_oauthlib six ];
+
+ postPatch = ''
+ substituteInPlace setup.py \
+ --replace "requests_oauthlib >= 0.8.0, == 0.8.*" "requests_oauthlib>=0.8.0<2.0"
+ '';
+
+ checkPhase = ''
+ py.test tests
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Python client library for Asana";
+ homepage = https://github.com/asana/python-asana;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/asciimatics/default.nix b/nixpkgs/pkgs/development/python-modules/asciimatics/default.nix
new file mode 100644
index 00000000000..d71f0b640f9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/asciimatics/default.nix
@@ -0,0 +1,48 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, setuptools_scm
+, pyfiglet
+, pillow
+, wcwidth
+, future
+, mock
+, nose
+}:
+
+buildPythonPackage rec {
+ pname = "asciimatics";
+ version = "1.11.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "132y3gc0dj9vmgajmzz2fyc3icrrgsvynwfl0g31bylm7h9p220x";
+ };
+
+ nativeBuildInputs = [
+ setuptools_scm
+ ];
+
+ propagatedBuildInputs = [
+ pyfiglet
+ pillow
+ wcwidth
+ future
+ ];
+
+ checkInputs = [
+ mock
+ nose
+ ];
+
+ # tests require a pty emulator
+ # which is too complicated to setup here
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Helps to create full-screen text UIs (from interactive forms to ASCII animations) on any platform";
+ homepage = https://github.com/peterbrittain/asciimatics;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ cmcdragonkai ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/asciitree/default.nix b/nixpkgs/pkgs/development/python-modules/asciitree/default.nix
new file mode 100644
index 00000000000..74b78d4a166
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/asciitree/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "asciitree";
+ version = "0.3.3";
+
+ src = fetchFromGitHub {
+ owner = "mbr";
+ repo = pname;
+ rev = version;
+ sha256 = "071wlpyi8pa262sj9xdy0zbj163z84dasxad363z3sfndqxw78h1";
+ };
+
+ checkInputs = [
+ pytest
+ ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with lib; {
+ description = "Draws ASCII trees";
+ homepage = https://github.com/mbr/asciitree;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/asdf/default.nix b/nixpkgs/pkgs/development/python-modules/asdf/default.nix
new file mode 100644
index 00000000000..8efc251140a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/asdf/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest-astropy
+, semantic-version
+, pyyaml
+, jsonschema
+, six
+, numpy
+, isPy27
+, astropy
+}:
+
+buildPythonPackage rec {
+ pname = "asdf";
+ version = "2.3.3";
+ disabled = isPy27;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d02e936a83abd206e7bc65050d94e8848da648344dbec9e49dddc2bdc3bd6870";
+ };
+
+ checkInputs = [
+ pytest-astropy
+ astropy
+ ];
+
+ propagatedBuildInputs = [
+ semantic-version
+ pyyaml
+ jsonschema
+ six
+ numpy
+ ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with lib; {
+ description = "Python tools to handle ASDF files";
+ homepage = https://github.com/spacetelescope/asdf;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ase/3.17.nix b/nixpkgs/pkgs/development/python-modules/ase/3.17.nix
new file mode 100644
index 00000000000..3a466170c77
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ase/3.17.nix
@@ -0,0 +1,36 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+, numpy
+, scipy
+, matplotlib
+, flask
+, pillow
+, psycopg2
+}:
+
+buildPythonPackage rec {
+ pname = "ase";
+ version = "3.17.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1d4gxypaahby45zcpl0rffcn2z7n55dg9lcd8sv6jjsmbbf9vr4g";
+ };
+
+ propagatedBuildInputs = [ numpy scipy matplotlib flask pillow psycopg2 ];
+
+ checkPhase = ''
+ $out/bin/ase test
+ '';
+
+ # tests just hang most likely due to something with subprocesses and cli
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Atomic Simulation Environment";
+ homepage = https://wiki.fysik.dtu.dk/ase/;
+ license = licenses.lgpl21Plus;
+ maintainers = with maintainers; [ costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ase/default.nix b/nixpkgs/pkgs/development/python-modules/ase/default.nix
new file mode 100644
index 00000000000..643bafe617a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ase/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+, isPy27
+, numpy
+, scipy
+, matplotlib
+, flask
+, pillow
+, psycopg2
+}:
+
+buildPythonPackage rec {
+ pname = "ase";
+ version = "3.18.0";
+ disabled = isPy27;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1ycp1yksysiiz902gn762030sfmirxm950pwpw2rcrpjvq95zm1r";
+ };
+
+ propagatedBuildInputs = [ numpy scipy matplotlib flask pillow psycopg2 ];
+
+ checkPhase = ''
+ $out/bin/ase test
+ '';
+
+ # tests just hang most likely due to something with subprocesses and cli
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Atomic Simulation Environment";
+ homepage = https://wiki.fysik.dtu.dk/ase/;
+ license = licenses.lgpl21Plus;
+ maintainers = with maintainers; [ costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/asgiref/default.nix b/nixpkgs/pkgs/development/python-modules/asgiref/default.nix
new file mode 100644
index 00000000000..295bc750f82
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/asgiref/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, buildPythonPackage, pythonOlder, fetchFromGitHub, async-timeout, pytest, pytest-asyncio }:
+buildPythonPackage rec {
+ version = "3.2.1";
+ pname = "asgiref";
+
+ disabled = pythonOlder "3.5";
+
+ # PyPI tarball doesn't include tests directory
+ src = fetchFromGitHub {
+ owner = "django";
+ repo = pname;
+ rev = version;
+ sha256 = "16wb137dvnjmbmshy4r9vgsfjc4g8d6l527aj9d5vszyk5x5fm7d";
+ };
+
+ propagatedBuildInputs = [ async-timeout ];
+
+ checkInputs = [ pytest pytest-asyncio ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Reference ASGI adapters and channel layers";
+ license = licenses.bsd3;
+ homepage = https://github.com/django/asgiref;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/asn1ate/default.nix b/nixpkgs/pkgs/development/python-modules/asn1ate/default.nix
new file mode 100644
index 00000000000..6af5b3da880
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/asn1ate/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, pyparsing }:
+
+buildPythonPackage rec {
+ pname = "asn1ate";
+ version= "0.6";
+
+ src = fetchFromGitHub {
+ sha256 = "1p8hv4gsyqsdr0gafcq497n52pybiqmc22di8ai4nsj60fv0km45";
+ rev = "v${version}";
+ owner = "kimgr";
+ repo = pname;
+ };
+
+ propagatedBuildInputs = [ pyparsing ];
+
+ meta = with stdenv.lib; {
+ description = "Python library for translating ASN.1 into other forms";
+ license = licenses.bsd3;
+ platforms = platforms.unix;
+ maintainers = with maintainers; [ leenaars ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/asn1crypto/default.nix b/nixpkgs/pkgs/development/python-modules/asn1crypto/default.nix
new file mode 100644
index 00000000000..2b627fe80ff
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/asn1crypto/default.nix
@@ -0,0 +1,23 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "asn1crypto";
+ version = "0.24.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "9d5c20441baf0cb60a4ac34cc447c6c189024b6b4c6cd7877034f4965c464e49";
+ };
+
+ # No tests included
+ doCheck = false;
+
+ meta = {
+ description = "Fast ASN.1 parser and serializer with definitions for private keys, public keys, certificates, CRL, OCSP, CMS, PKCS#3, PKCS#7, PKCS#8, PKCS#12, PKCS#5, X.509 and TSP";
+ license = lib.licenses.mit;
+ homepage = https://github.com/wbond/asn1crypto;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/aspy.yaml/default.nix b/nixpkgs/pkgs/development/python-modules/aspy.yaml/default.nix
new file mode 100644
index 00000000000..1a910338232
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aspy.yaml/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildPythonPackage, fetchPypi, pyyaml }:
+
+buildPythonPackage rec {
+ pname = "aspy.yaml";
+ version = "1.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0i9z2jm2hjwdxdv4vw4kbs70h2ciz49rv8w73zbawb7z5qw45iz7";
+ };
+
+ propagatedBuildInputs = [ pyyaml ];
+
+ # Tests not included in PyPI tarball
+ doCheck = false;
+
+ meta = with lib; {
+ description = "A few extensions to pyyaml";
+ homepage = https://github.com/asottile/aspy.yaml;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/astor/default.nix b/nixpkgs/pkgs/development/python-modules/astor/default.nix
new file mode 100644
index 00000000000..903b892f322
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/astor/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytest }:
+
+buildPythonPackage rec {
+ pname = "astor";
+ version = "0.8.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0qkq5bf13fqcwablg0nk7rx83izxdizysd42n26j5wbingcfx9ip";
+ };
+
+ # disable tests broken with python3.6: https://github.com/berkerpeksag/astor/issues/89
+ checkInputs = [ pytest ];
+ checkPhase = ''
+ py.test -k 'not check_expressions and not check_astunparse and not test_convert_stdlib and not test_codegen_as_submodule and not test_codegen_from_root'
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Library for reading, writing and rewriting python AST";
+ homepage = https://github.com/berkerpeksag/astor;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ nixy ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/astral/default.nix b/nixpkgs/pkgs/development/python-modules/astral/default.nix
new file mode 100644
index 00000000000..5338b67b50d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/astral/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytz, requests, pytest }:
+
+buildPythonPackage rec {
+ pname = "astral";
+ version = "1.10.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d2a67243c4503131c856cafb1b1276de52a86e5b8a1d507b7e08bee51cb67bf1";
+ };
+
+ propagatedBuildInputs = [ pytz requests ];
+
+ checkInputs = [ pytest ];
+ checkPhase = ''
+ py.test -m "not webtest"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Calculations for the position of the sun and the moon";
+ homepage = https://github.com/sffjunkie/astral/;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ flokli ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/astroid/1.6.nix b/nixpkgs/pkgs/development/python-modules/astroid/1.6.nix
new file mode 100644
index 00000000000..cdbbe547aec
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/astroid/1.6.nix
@@ -0,0 +1,39 @@
+{ 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; [ nand0p ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/astroid/default.nix b/nixpkgs/pkgs/development/python-modules/astroid/default.nix
new file mode 100644
index 00000000000..591726ea1ac
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/astroid/default.nix
@@ -0,0 +1,31 @@
+{ lib, fetchPypi, buildPythonPackage, pythonOlder, isPyPy
+, lazy-object-proxy, six, wrapt, typing, typed-ast
+, pytestrunner, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "astroid";
+ version = "2.2.5";
+
+ disabled = pythonOlder "3.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1x5c8fiqa18frwwfdsw41lpqsyff3w4lxvjx9d5ccs4zfkhy2q35";
+ };
+
+ # From astroid/__pkginfo__.py
+ propagatedBuildInputs = [ lazy-object-proxy six wrapt ]
+ ++ lib.optional (pythonOlder "3.5") typing
+ ++ lib.optional (!isPyPy) typed-ast;
+
+ checkInputs = [ pytestrunner pytest ];
+
+ 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; [ nand0p ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/astropy-healpix/default.nix b/nixpkgs/pkgs/development/python-modules/astropy-healpix/default.nix
new file mode 100644
index 00000000000..2027f694c77
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/astropy-healpix/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, numpy
+, astropy
+, astropy-helpers
+}:
+
+buildPythonPackage rec {
+ pname = "astropy-healpix";
+ version = "0.4";
+
+ doCheck = false; # tests require pytest-astropy
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8c9709ac923759c92eca6d2e623e734d0f417eed40ba835b77d99dec09e51aa2";
+ };
+
+ propagatedBuildInputs = [ numpy astropy astropy-helpers ];
+
+ # Disable automatic update of the astropy-helper module
+ postPatch = ''
+ substituteInPlace setup.cfg --replace "auto_use = True" "auto_use = False"
+ '';
+
+ meta = with lib; {
+ description = "BSD-licensed HEALPix for Astropy";
+ homepage = https://github.com/astropy/astropy-healpix;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.smaret ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/astropy-helpers/default.nix b/nixpkgs/pkgs/development/python-modules/astropy-helpers/default.nix
new file mode 100644
index 00000000000..b5a7f014eec
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/astropy-helpers/default.nix
@@ -0,0 +1,26 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "astropy-helpers";
+ version = "3.2.1";
+
+ disabled = !isPy3k;
+
+ doCheck = false; # tests requires sphinx-astropy
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1klxyfvl9hbhy37n1z3mb0vm5pmd7hbsnzhjkvigz3647hmfzva6";
+ };
+
+ meta = with lib; {
+ description = "Utilities for building and installing Astropy, Astropy affiliated packages, and their respective documentation";
+ homepage = https://github.com/astropy/astropy-helpers;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.smaret ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/astropy/default.nix b/nixpkgs/pkgs/development/python-modules/astropy/default.nix
new file mode 100644
index 00000000000..35bb7b1aa59
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/astropy/default.nix
@@ -0,0 +1,54 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+, isPy3k
+, numpy
+, pytest
+, pytest-astropy
+, astropy-helpers
+}:
+
+buildPythonPackage rec {
+ pname = "astropy";
+ version = "3.2.1";
+
+ disabled = !isPy3k; # according to setup.py
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "706c0457789c78285e5464a5a336f5f0b058d646d60f4e5f5ba1f7d5bf424b28";
+ };
+
+ nativeBuildInputs = [ astropy-helpers ];
+
+ propagatedBuildInputs = [ numpy pytest ]; # yes it really has pytest in install_requires
+
+ checkInputs = [ pytest pytest-astropy ];
+
+ # Disable automatic update of the astropy-helper module
+ postPatch = ''
+ substituteInPlace setup.cfg --replace "auto_use = True" "auto_use = False"
+ '';
+
+ # 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;
+
+ meta = {
+ description = "Astronomy/Astrophysics library for Python";
+ homepage = https://www.astropy.org;
+ license = lib.licenses.bsd3;
+ platforms = lib.platforms.all;
+ maintainers = with lib.maintainers; [ kentjames ];
+ };
+}
+
+
diff --git a/nixpkgs/pkgs/development/python-modules/astroquery/conftest-astropy-3-fix.patch b/nixpkgs/pkgs/development/python-modules/astroquery/conftest-astropy-3-fix.patch
new file mode 100644
index 00000000000..0b1c7973b59
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/astroquery/conftest-astropy-3-fix.patch
@@ -0,0 +1,54 @@
+diff -ruN astroquery-0.3.9.orig/astroquery/conftest.py astroquery-0.3.9/astroquery/conftest.py
+--- astroquery-0.3.9.orig/astroquery/conftest.py 2018-11-27 14:51:16.000000000 +0100
++++ astroquery-0.3.9/astroquery/conftest.py 2019-07-23 18:19:17.000000000 +0200
+@@ -5,15 +5,20 @@
+ # by importing them here in conftest.py they are discoverable by py.test
+ # no matter how it is invoked within the source tree.
+
+-from astropy.tests.pytest_plugins import (PYTEST_HEADER_MODULES,
+- enable_deprecations_as_exceptions,
+- TESTED_VERSIONS)
++from astropy.version import version as astropy_version
+
+-try:
+- packagename = os.path.basename(os.path.dirname(__file__))
+- TESTED_VERSIONS[packagename] = version.version
+-except NameError:
+- pass
++if astropy_version < '3.0':
++ # With older versions of Astropy, we actually need to import the pytest
++ # plugins themselves in order to make them discoverable by pytest.
++ from astropy.tests.pytest_plugins import *
++else:
++ # As of Astropy 3.0, the pytest plugins provided by Astropy are
++ # automatically made available when Astropy is installed. This means it's
++ # not necessary to import them here, but we still need to import global
++ # variables that are used for configuration.
++ from astropy.tests.plugins.display import PYTEST_HEADER_MODULES, TESTED_VERSIONS
++
++from astropy.tests.helper import enable_deprecations_as_exceptions
+
+ # Add astropy to test header information and remove unused packages.
+ # Pytest header customisation was introduced in astropy 1.0.
+@@ -36,12 +41,17 @@
+ # The warnings_to_ignore_by_pyver parameter was added in astropy 2.0
+ enable_deprecations_as_exceptions(modules_to_ignore_on_import=['requests'])
+
++# add '_testrun' to the version name so that the user-agent indicates that
++# it's being run in a test
++from . import version
++version.version += '_testrun'
++
++
+ # This is to figure out the affiliated package version, rather than
+ # using Astropy's
+-try:
+- from .version import version
+-except ImportError:
+- version = 'dev'
++from .version import version, astropy_helpers_version
++
+
+ packagename = os.path.basename(os.path.dirname(__file__))
+ TESTED_VERSIONS[packagename] = version
++TESTED_VERSIONS['astropy_helpers'] = astropy_helpers_version
diff --git a/nixpkgs/pkgs/development/python-modules/astroquery/default.nix b/nixpkgs/pkgs/development/python-modules/astroquery/default.nix
new file mode 100644
index 00000000000..7245b566208
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/astroquery/default.nix
@@ -0,0 +1,51 @@
+{ pkgs
+, buildPythonPackage
+, fetchPypi
+, astropy
+, requests
+, keyring
+, beautifulsoup4
+, html5lib
+, pytest
+, pytest-astropy
+, astropy-helpers
+}:
+
+buildPythonPackage rec {
+ pname = "astroquery";
+ version = "0.3.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0zw3xp2rfc6h2v569iqsyvzhfnzp7bfjb7jrj61is1hrqw1cqjrb";
+ };
+
+ # Fix tests using conftest.py from HEAD in the upstream GitHub
+ # repository.
+ patches = [ ./conftest-astropy-3-fix.patch ];
+
+ propagatedBuildInputs = [ astropy requests keyring beautifulsoup4 html5lib ];
+
+ nativeBuildInputs = [ astropy-helpers ];
+
+ checkInputs = [ pytest pytest-astropy ];
+
+ # Disable automatic update of the astropy-helper module
+ postPatch = ''
+ substituteInPlace setup.cfg --replace "auto_use = True" "auto_use = False"
+ '';
+
+ # Tests must be run in the build directory. The tests create files
+ # in $HOME/.astropy so we need to set HOME to $TMPDIR.
+ checkPhase = ''
+ cd build/lib
+ HOME=$TMPDIR pytest
+ '';
+
+ meta = with pkgs.lib; {
+ description = "Functions and classes to access online data resources";
+ homepage = "https://astroquery.readthedocs.io/";
+ license = licenses.bsd3;
+ maintainers = [ maintainers.smaret ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/asttokens/default.nix b/nixpkgs/pkgs/development/python-modules/asttokens/default.nix
new file mode 100644
index 00000000000..8c8a1b76b1a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/asttokens/default.nix
@@ -0,0 +1,33 @@
+{ lib, fetchPypi, buildPythonPackage, fetchpatch, astroid, six, coverage
+, lazy-object-proxy, nose, wrapt
+}:
+
+buildPythonPackage rec {
+ pname = "asttokens";
+ version = "1.1.13";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1vd4djlxmgznz84gzakkv45avnrcpgl1kir92l1pxyp0z5c0dh2m";
+ };
+
+ patches = [
+ # Fix tests for astroid 2.2 in python 3. Remove with the next release
+ (fetchpatch {
+ url = "https://github.com/gristlabs/asttokens/commit/21caaaa74105c410b3d84c3d8ff0dc2f612aac9a.patch";
+ sha256 = "182xfr0cx4pxx0dv1l50a1c281h8ywir8vvd1zh5iicflivim1nv";
+ })
+ ];
+
+ propagatedBuildInputs = [ lazy-object-proxy six wrapt astroid ];
+
+ checkInputs = [ coverage nose ];
+
+ meta = with lib; {
+ homepage = https://github.com/gristlabs/asttokens;
+ description = "Annotate Python AST trees with source text and token information";
+ license = licenses.asl20;
+ platforms = platforms.all;
+ maintainers = with maintainers; [ leenaars ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/astunparse/default.nix b/nixpkgs/pkgs/development/python-modules/astunparse/default.nix
new file mode 100644
index 00000000000..8dbb4da7060
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/astunparse/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, fetchPypi
+, buildPythonPackage
+, six
+, wheel
+ }:
+
+buildPythonPackage rec {
+ pname = "astunparse";
+ version = "1.6.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "dab3e426715373fd76cd08bb1abe64b550f5aa494cf1e32384f26fd60961eb67";
+ };
+
+ propagatedBuildInputs = [ six wheel ];
+
+ # tests not included with pypi release
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "This is a factored out version of unparse found in the Python source distribution";
+ homepage = https://github.com/simonpercivall/astunparse;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ jyp ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/async_generator/default.nix b/nixpkgs/pkgs/development/python-modules/async_generator/default.nix
new file mode 100644
index 00000000000..b8ec2f54476
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/async_generator/default.nix
@@ -0,0 +1,28 @@
+{ lib, buildPythonPackage, fetchPypi, pythonOlder, isPy35, pytest, pytest-asyncio }:
+
+buildPythonPackage rec {
+ pname = "async_generator";
+ version = "1.10";
+
+ disabled = pythonOlder "3.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6ebb3d106c12920aaae42ccb6f787ef5eefdcdd166ea3d628fa8476abe712144";
+ };
+
+ 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;
+ license = with licenses; [ mit asl20 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/async_timeout/default.nix b/nixpkgs/pkgs/development/python-modules/async_timeout/default.nix
new file mode 100644
index 00000000000..aabf30183d5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/async_timeout/default.nix
@@ -0,0 +1,26 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+ pname = "async-timeout";
+ version = "3.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0c3c816a028d47f659d6ff5c745cb2acf1f966da1fe5c19c77a70282b25f4c5f";
+ };
+
+ # Circular dependency on aiohttp
+ doCheck = false;
+
+ disabled = pythonOlder "3.4";
+
+ meta = {
+ description = "Timeout context manager for asyncio programs";
+ homepage = https://github.com/aio-libs/async_timeout/;
+ license = lib.licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/asyncpg/default.nix b/nixpkgs/pkgs/development/python-modules/asyncpg/default.nix
new file mode 100644
index 00000000000..a71ffd85367
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/asyncpg/default.nix
@@ -0,0 +1,38 @@
+{ lib, isPy3k, fetchPypi, fetchpatch, buildPythonPackage
+, uvloop, postgresql }:
+
+buildPythonPackage rec {
+ pname = "asyncpg";
+ version = "0.18.3";
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0rrch478ww6ipmh3617sb2jzwsq4w7pjcck869p35zb0mk5fr9aq";
+ };
+
+ patches = [
+ (fetchpatch {
+ url = "https://github.com/MagicStack/asyncpg/commit/aaeb7076e5acb045880b46155014c0640624797e.patch";
+ sha256 = "0r6g6pvb39vzci8g67mv9rlrvavqvfz6vlv8988wv53bpz1mss3p";
+ })
+ ];
+
+ checkInputs = [
+ uvloop
+ postgresql
+ ];
+
+ meta = with lib; {
+ 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
+ asyncio framework.
+ '';
+ license = licenses.asl20;
+ maintainers = with maintainers; [ eadwu ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/asyncssh/default.nix b/nixpkgs/pkgs/development/python-modules/asyncssh/default.nix
new file mode 100644
index 00000000000..ba94e395f67
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/asyncssh/default.nix
@@ -0,0 +1,52 @@
+{ stdenv, buildPythonPackage, fetchPypi, pythonOlder
+, cryptography
+, bcrypt, gssapi, libnacl, libsodium, nettle, pyopenssl
+, openssl, openssh }:
+
+buildPythonPackage rec {
+ pname = "asyncssh";
+ version = "1.17.1";
+ disabled = pythonOlder "3.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0gyqms4zs9j9k7dgy24va4w42vf20x75yx9jvsds0sg42mqlkd5v";
+ };
+
+ patches = [
+ # Reverts https://github.com/ronf/asyncssh/commit/4b3dec994b3aa821dba4db507030b569c3a32730
+ #
+ # This changed the test to avoid setting the sticky bit
+ # because that's not allowed for plain files in FreeBSD.
+ # However that broke the test on NixOS, failing with
+ # "Operation not permitted"
+ ./fix-sftp-chmod-test-nixos.patch
+ ];
+
+ propagatedBuildInputs = [
+ bcrypt
+ cryptography
+ gssapi
+ libnacl
+ libsodium
+ nettle
+ pyopenssl
+ ];
+
+ checkInputs = [
+ openssh
+ openssl
+ ];
+
+ # Disables windows specific test (specifically the GSSAPI wrapper for Windows)
+ postPatch = ''
+ rm tests/sspi_stub.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Provides an asynchronous client and server implementation of the SSHv2 protocol on top of the Python asyncio framework";
+ homepage = https://asyncssh.readthedocs.io/en/latest;
+ license = licenses.epl20;
+ maintainers = with maintainers; [ worldofpeace ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/asyncssh/fix-sftp-chmod-test-nixos.patch b/nixpkgs/pkgs/development/python-modules/asyncssh/fix-sftp-chmod-test-nixos.patch
new file mode 100644
index 00000000000..845139a4fec
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/asyncssh/fix-sftp-chmod-test-nixos.patch
@@ -0,0 +1,15 @@
+diff --git a/tests/test_sftp.py b/tests/test_sftp.py
+index db9cc88..234004b 100644
+--- a/tests/test_sftp.py
++++ b/tests/test_sftp.py
+@@ -957,8 +957,8 @@ class _TestSFTP(_CheckSFTP):
+
+ try:
+ self._create_file('file')
+- yield from sftp.chmod('file', 0o4321)
+- self.assertEqual(stat.S_IMODE(os.stat('file').st_mode), 0o4321)
++ yield from sftp.chmod('file', 0o1234)
++ self.assertEqual(stat.S_IMODE(os.stat('file').st_mode), 0o1234)
+ finally:
+ remove('file')
+
diff --git a/nixpkgs/pkgs/development/python-modules/asynctest/default.nix b/nixpkgs/pkgs/development/python-modules/asynctest/default.nix
new file mode 100644
index 00000000000..a9c012ba831
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/asynctest/default.nix
@@ -0,0 +1,30 @@
+{ lib, buildPythonPackage, fetchPypi, pythonOlder, python }:
+
+buildPythonPackage rec {
+ pname = "asynctest";
+ version = "0.13.0";
+
+ disabled = pythonOlder "3.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1b3zsy7p84gag6q8ai2ylyrhx213qdk2h2zb6im3xn0m5n264y62";
+ };
+
+ postPatch = ''
+ # Skip failing test, probably caused by file system access
+ substituteInPlace test/test_selector.py \
+ --replace "test_events_watched_outside_test_are_ignored" "xtest_events_watched_outside_test_are_ignored"
+ '';
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest test
+ '';
+
+ meta = with lib; {
+ description = "Enhance the standard unittest package with features for testing asyncio libraries";
+ homepage = https://github.com/Martiusweb/asynctest;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ dotlambda ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/atom/default.nix b/nixpkgs/pkgs/development/python-modules/atom/default.nix
new file mode 100644
index 00000000000..fdaebda089f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/atom/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildPythonPackage, fetchPypi, future }:
+
+buildPythonPackage rec {
+ pname = "atom";
+ version = "0.4.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ce96fb50326a3bfa084463dbde1cf2e02c92735e5bc324d836355c25af87e0ae";
+ };
+
+ propagatedBuildInputs = [ future ];
+
+ # Tests not released to pypi
+ doCheck = true;
+
+ meta = with lib; {
+ description = "Memory efficient Python objects";
+ maintainers = [ maintainers.bhipple ];
+ homepage = https://github.com/nucleic/atom;
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/atomiclong/default.nix b/nixpkgs/pkgs/development/python-modules/atomiclong/default.nix
new file mode 100644
index 00000000000..8f3aae7b19d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/atomiclong/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytest, cffi }:
+
+buildPythonPackage rec {
+ pname = "atomiclong";
+ version = "0.1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1gjbc9lvpkgg8vj7dspif1gz9aq4flkhxia16qj6yvb7rp27h4yb";
+ };
+
+ buildInputs = [ pytest ];
+ propagatedBuildInputs = [ cffi ];
+
+ meta = with stdenv.lib; {
+ description = "Long data type with atomic operations using CFFI";
+ homepage = https://github.com/dreid/atomiclong;
+ license = licenses.mit;
+ maintainers = with maintainers; [ robbinch ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/atomicwrites/default.nix b/nixpkgs/pkgs/development/python-modules/atomicwrites/default.nix
new file mode 100644
index 00000000000..eed9591d7bd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/atomicwrites/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytest }:
+
+buildPythonPackage rec {
+ pname = "atomicwrites";
+ version = "1.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "75a9445bac02d8d058d5e1fe689654ba5a6556a1dfd8ce6ec55a0ed79866cfa6";
+ };
+
+ # Tests depend on pytest but atomicwrites is a dependency of pytest
+ doCheck = false;
+ checkInputs = [ pytest ];
+
+ meta = with stdenv.lib; {
+ description = "Atomic file writes on POSIX";
+ homepage = https://pypi.python.org/pypi/atomicwrites;
+ maintainers = with maintainers; [ matthiasbeyer ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/atomman/default.nix b/nixpkgs/pkgs/development/python-modules/atomman/default.nix
new file mode 100644
index 00000000000..a2f6cd721b7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/atomman/default.nix
@@ -0,0 +1,40 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, xmltodict
+, datamodeldict
+, numpy
+, matplotlib
+, scipy
+, pandas
+, cython
+, numericalunits
+, pytest
+}:
+
+buildPythonPackage rec {
+ version = "1.2.6";
+ pname = "atomman";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "19501bfdf7e66090764a0ccbecf85a128b46333ea232c2137fa4345512b8b502";
+ };
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ xmltodict datamodeldict numpy matplotlib scipy pandas cython numericalunits ];
+
+ # tests not included with Pypi release
+ doCheck = false;
+
+ checkPhase = ''
+ py.test tests
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/usnistgov/atomman/;
+ description = "Atomistic Manipulation Toolkit";
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/atpublic/default.nix b/nixpkgs/pkgs/development/python-modules/atpublic/default.nix
new file mode 100644
index 00000000000..6657b41cc78
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/atpublic/default.nix
@@ -0,0 +1,38 @@
+{ lib, isPy3k, fetchPypi, buildPythonPackage
+, pytest }:
+
+buildPythonPackage rec {
+ pname = "atpublic";
+ version = "1.0";
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0i3sbxkdlbb4560rrlmwwd5y4ps7k73lp4d8wnmd7ag9k426gjkx";
+ };
+
+ checkInputs = [
+ pytest
+ ];
+
+ checkPhase = ''
+ pytest --pyargs public
+ '';
+
+ meta = with lib; {
+ homepage = https://public.readthedocs.io/en/latest/;
+ description = "A decorator and function which populates a module's __all__ and globals";
+ longDescription = ''
+ This is a very simple decorator and function which populates a module's
+ __all__ and optionally the module globals.
+
+ This provides both a pure-Python implementation and a C implementation. It is
+ proposed that the C implementation be added to builtins_ for Python 3.6.
+
+ This proposal seems to have been rejected, for more information see
+ https://bugs.python.org/issue26632.
+ '';
+ license = licenses.asl20;
+ maintainers = with maintainers; [ eadwu ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/atsim_potentials/default.nix b/nixpkgs/pkgs/development/python-modules/atsim_potentials/default.nix
new file mode 100644
index 00000000000..5d664e77d29
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/atsim_potentials/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, future
+}:
+
+buildPythonPackage rec {
+ version = "0.2.1";
+ pname = "atsim.potentials";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2abdec2fb4e8198f4e0e41634ad86625d5356a4a3f1ba1f41568d0697df8f36f";
+ };
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ future ];
+
+ # tests are not included with release
+ doCheck = false;
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://bitbucket.org/mjdr/atsim_potentials;
+ description = "Provides tools for working with pair and embedded atom method potential models including tabulation routines for DL_POLY and LAMMPS";
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/attrdict/default.nix b/nixpkgs/pkgs/development/python-modules/attrdict/default.nix
new file mode 100644
index 00000000000..29e3ca09cc5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/attrdict/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi, coverage, nose, six }:
+
+buildPythonPackage rec {
+ pname = "attrdict";
+ version = "2.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "35c90698b55c683946091177177a9e9c0713a0860f0e049febd72649ccd77b70";
+ };
+
+ propagatedBuildInputs = [ coverage nose six ];
+
+ meta = with stdenv.lib; {
+ description = "A dict with attribute-style access";
+ homepage = https://github.com/bcj/AttrDict;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/attrs/default.nix b/nixpkgs/pkgs/development/python-modules/attrs/default.nix
new file mode 100644
index 00000000000..0fe8241c215
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/attrs/default.nix
@@ -0,0 +1,30 @@
+{ lib, stdenv, buildPythonPackage, fetchPypi, pytest, hypothesis, zope_interface
+, pympler, coverage, six, clang }:
+
+buildPythonPackage rec {
+ pname = "attrs";
+ version = "18.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "10cbf6e27dbce8c30807caf056c8eb50917e0eaafe86347671b57254006c3e69";
+ };
+
+ # macOS needs clang for testing
+ checkInputs = [
+ pytest hypothesis zope_interface pympler coverage six
+ ] ++ lib.optionals (stdenv.isDarwin) [ clang ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ # To prevent infinite recursion with pytest
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Python attributes without boilerplate";
+ homepage = https://github.com/hynek/attrs;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/audio-metadata/default.nix b/nixpkgs/pkgs/development/python-modules/audio-metadata/default.nix
new file mode 100644
index 00000000000..9a6952c88f0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/audio-metadata/default.nix
@@ -0,0 +1,43 @@
+{ lib, buildPythonPackage, fetchPypi, pythonOlder
+, attrs
+, bidict
+, bitstruct
+, more-itertools
+, pprintpp
+}:
+
+buildPythonPackage rec {
+ pname = "audio-metadata";
+ version = "0.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a881f0f3b82752d306ac0a7850ed0e31bad275a399f63097733b4890986084b2";
+ };
+
+ postPatch = ''
+ substituteInPlace setup.py \
+ --replace "bidict>=0.17,<0.18" "bidict" \
+ --replace "more-itertools>=4.0,<5.0" "more-itertools"
+ '';
+
+ propagatedBuildInputs = [
+ attrs
+ bidict
+ bitstruct
+ more-itertools
+ pprintpp
+ ];
+
+ # No tests
+ doCheck = false;
+
+ disabled = pythonOlder "3.6";
+
+ meta = with lib; {
+ homepage = https://github.com/thebigmunch/audio-metadata;
+ description = "A library for reading and, in the future, writing metadata from audio files";
+ license = licenses.mit;
+ maintainers = with maintainers; [ jakewaksbaum ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/audioread/default.nix b/nixpkgs/pkgs/development/python-modules/audioread/default.nix
new file mode 100644
index 00000000000..addd187abeb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/audioread/default.nix
@@ -0,0 +1,26 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytestrunner
+}:
+
+buildPythonPackage rec {
+ pname = "audioread";
+ version = "2.1.8";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "073904fabc842881e07bd3e4a5776623535562f70b1655b635d22886168dd168";
+ };
+
+ nativeBuildInputs = [ pytestrunner ];
+
+ # No tests, need to disable or py3k breaks
+ doCheck = false;
+
+ meta = {
+ description = "Cross-platform audio decoding";
+ homepage = "https://github.com/sampsyo/audioread";
+ license = lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/audiotools/default.nix b/nixpkgs/pkgs/development/python-modules/audiotools/default.nix
new file mode 100644
index 00000000000..ee029726d1c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/audiotools/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchurl
+, stdenv
+, darwin
+}:
+
+buildPythonPackage rec {
+ pname = "audiotools";
+ version = "3.1.1";
+
+ buildInputs = lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [
+ AudioToolbox
+ AudioUnit
+ CoreServices
+ ]);
+
+ src = fetchurl {
+ url = "https://github.com/tuffy/python-audio-tools/archive/v${version}.tar.gz";
+ sha256 = "0ymlxvqkqhzk4q088qwir3dq0zgwqlrrdfnq7f0iq97g05qshm2c";
+ };
+
+ meta = {
+ description = "Utilities and Python modules for handling audio";
+ homepage = "http://audiotools.sourceforge.net/";
+ license = lib.licenses.gpl2Plus;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/augeas/default.nix b/nixpkgs/pkgs/development/python-modules/augeas/default.nix
new file mode 100644
index 00000000000..12a3529f864
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/augeas/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, lib, buildPythonPackage, fetchFromGitHub, augeas, cffi }:
+buildPythonPackage rec {
+ pname = "augeas";
+ version = "1.0.3";
+
+ src = fetchFromGitHub {
+ owner = "hercules-team";
+ repo = "python-augeas";
+ rev = "v${version}";
+ sha256 = "1fb904ym8g8hkd82zlibzk6wrldnfd5v5d0rkynsy1zlhcylq4f6";
+ };
+
+ # TODO: not very nice!
+ postPatch =
+ let libname = if stdenv.isDarwin then "libaugeas.dylib" else "libaugeas.so";
+ in
+ ''
+ substituteInPlace augeas/ffi.py \
+ --replace 'ffi.dlopen("augeas")' \
+ 'ffi.dlopen("${lib.makeLibraryPath [augeas]}/${libname}")'
+ '';
+
+ propagatedBuildInputs = [ cffi augeas ];
+
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Pure python bindings for augeas";
+ homepage = https://github.com/hercules-team/python-augeas;
+ license = licenses.lgpl2Plus;
+ platforms = platforms.unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/authres/default.nix b/nixpkgs/pkgs/development/python-modules/authres/default.nix
new file mode 100644
index 00000000000..d2a72461b17
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/authres/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchPypi, buildPythonPackage, python }:
+
+buildPythonPackage rec {
+ pname = "authres";
+ version = "1.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1dr5zpqnb54h4f5ax8334l1dcp8j9083d7v4vdi1xqkwmnavklck";
+ };
+
+ checkPhase = ''
+ # run doctests
+ ${python.interpreter} -m authres
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Email Authentication-Results Headers generation and parsing for Python/Python3";
+ longDescription = ''
+ Python module that implements various internet RFC's: 5451/7001/7601
+ Authentication-Results Headers generation and parsing for
+ Python/Python3.
+ '';
+ homepage = https://launchpad.net/authentication-results-python;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ leenaars ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/autobahn/default.nix b/nixpkgs/pkgs/development/python-modules/autobahn/default.nix
new file mode 100644
index 00000000000..7d1e365b243
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/autobahn/default.nix
@@ -0,0 +1,34 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k,
+ six, txaio, twisted, zope_interface, cffi, trollius, futures,
+ mock, pytest, cryptography, pynacl
+}:
+buildPythonPackage rec {
+ pname = "autobahn";
+ version = "19.8.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "294e7381dd54e73834354832604ae85567caf391c39363fed0ea2bfa86aa4304";
+ };
+
+ propagatedBuildInputs = [ six txaio twisted zope_interface cffi cryptography pynacl ] ++
+ (lib.optionals (!isPy3k) [ trollius futures ]);
+
+ checkInputs = [ mock pytest ];
+ checkPhase = ''
+ runHook preCheck
+ USE_TWISTED=true py.test $out
+ runHook postCheck
+ '';
+
+ # Tests do no seem to be compatible yet with pytest 5.1
+ # https://github.com/crossbario/autobahn-python/issues/1235
+ doCheck = false;
+
+ meta = with lib; {
+ description = "WebSocket and WAMP in Python for Twisted and asyncio.";
+ homepage = "https://crossbar.io/autobahn";
+ license = licenses.mit;
+ maintainers = with maintainers; [ nand0p ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/autograd/default.nix b/nixpkgs/pkgs/development/python-modules/autograd/default.nix
new file mode 100644
index 00000000000..bf7c35fa698
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/autograd/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi, numpy, future }:
+
+buildPythonPackage rec {
+ pname = "autograd";
+ version = "1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0zd4lhz9dpll4i63jjijbzkzbgmg8h88il7lr7kmcylvadnzm2x0";
+ };
+
+ propagatedBuildInputs = [ numpy future ];
+
+ # Currently, the PyPI tarball doesn't contain the tests. When that has been
+ # fixed, enable testing. See: https://github.com/HIPS/autograd/issues/404
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/HIPS/autograd;
+ description = "Compute derivatives of NumPy code efficiently";
+ license = licenses.mit;
+ maintainers = with maintainers; [ jluttine ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/autologging/default.nix b/nixpkgs/pkgs/development/python-modules/autologging/default.nix
new file mode 100644
index 00000000000..090eb68675b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/autologging/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "Autologging";
+ version = "1.2.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "16v2k16m433fxlvl7f0081n67rpxhs2hyn1ivkx1xs5qjxpv5n3k";
+ extension = "zip";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = http://ninthtest.info/python-autologging/;
+ description = "Easier logging and tracing for Python classes";
+ license = licenses.mit;
+ maintainers = with maintainers; [ twey ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/automat/default.nix b/nixpkgs/pkgs/development/python-modules/automat/default.nix
new file mode 100644
index 00000000000..808eba12bb6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/automat/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, buildPythonPackage, fetchPypi,
+ m2r, setuptools_scm, six, attrs }:
+
+buildPythonPackage rec {
+ version = "0.7.0";
+ pname = "Automat";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "cbd78b83fa2d81fe2a4d23d258e1661dd7493c9a50ee2f1a5b2cac61c1793b0e";
+ };
+
+ buildInputs = [ m2r setuptools_scm ];
+ propagatedBuildInputs = [ six attrs ];
+
+ # Some tests require twisetd, but twisted requires Automat to build.
+ # this creates a circular dependency.
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/glyph/Automat;
+ description = "Self-service finite-state machines for the programmer on the go";
+ license = licenses.mit;
+ maintainers = [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/autopep8/default.nix b/nixpkgs/pkgs/development/python-modules/autopep8/default.nix
new file mode 100644
index 00000000000..d6b751034c6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/autopep8/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchPypi, buildPythonPackage, pycodestyle, glibcLocales }:
+
+buildPythonPackage rec {
+ pname = "autopep8";
+ version = "1.4.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "4d8eec30cc81bc5617dbf1218201d770dc35629363547f17577c61683ccfb3ee";
+ };
+
+ propagatedBuildInputs = [ pycodestyle ];
+
+ # One test fails:
+ # FAIL: test_recursive_should_not_crash_on_unicode_filename (test.test_autopep8.CommandLineTests)
+# doCheck = false;
+
+ checkInputs = [ glibcLocales ];
+
+ LC_ALL = "en_US.UTF-8";
+
+ meta = with stdenv.lib; {
+ description = "A tool that automatically formats Python code to conform to the PEP 8 style guide";
+ homepage = https://pypi.python.org/pypi/autopep8/;
+ license = licenses.mit;
+ platforms = platforms.all;
+ maintainers = with maintainers; [ bjornfor ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/av/default.nix b/nixpkgs/pkgs/development/python-modules/av/default.nix
new file mode 100644
index 00000000000..8998abd6986
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/av/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, numpy
+, ffmpeg_4
+, pkgconfig
+}:
+
+buildPythonPackage rec {
+ pname = "av";
+ version = "6.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1wm33qajxcpl9rn7zfb2pwwqn87idb7ic7h5zwy2hgbpjnh3vc2g";
+ };
+
+ checkInputs = [ numpy ];
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [ ffmpeg_4 ];
+
+ # Tests require downloading files from internet
+ doCheck = false;
+
+ meta = {
+ description = "Pythonic bindings for FFmpeg/Libav";
+ homepage = https://github.com/mikeboers/PyAV/;
+ license = lib.licenses.bsd2;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/avro/default.nix b/nixpkgs/pkgs/development/python-modules/avro/default.nix
new file mode 100644
index 00000000000..97ecb5a1127
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/avro/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k }:
+
+buildPythonPackage rec {
+ pname = "avro";
+ version = "1.9.0";
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0af72fcql34v30cvjqm9nmz68rl35znn5qbd4k3b9ks02xzy3b2y";
+ };
+
+ meta = with stdenv.lib; {
+ description = "A serialization and RPC framework";
+ homepage = https://pypi.python.org/pypi/avro/;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/avro3k/default.nix b/nixpkgs/pkgs/development/python-modules/avro3k/default.nix
new file mode 100644
index 00000000000..3a5b34ebb85
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/avro3k/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k }:
+
+buildPythonPackage rec {
+ pname = "avro3k";
+ version = "1.7.7-SNAPSHOT";
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "15ahl0irwwj558s964abdxg4vp6iwlabri7klsm2am6q5r0ngsky";
+ };
+
+ doCheck = false; # No such file or directory: './run_tests.py
+
+ meta = with stdenv.lib; {
+ description = "A serialization and RPC framework";
+ homepage = https://pypi.python.org/pypi/avro3k/;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/awesome-slugify/default.nix b/nixpkgs/pkgs/development/python-modules/awesome-slugify/default.nix
new file mode 100644
index 00000000000..945c941dec4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/awesome-slugify/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, buildPythonPackage, fetchPypi, unidecode, regex, python }:
+
+buildPythonPackage rec {
+ pname = "awesome-slugify";
+ version = "1.6.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0wgxrhr8s5vk2xmcz9s1z1aml4ppawmhkbggl9rp94c747xc7pmv";
+ };
+
+ prePatch = ''
+ substituteInPlace setup.py \
+ --replace 'Unidecode>=0.04.14,<0.05' 'Unidecode>=0.04.14'
+ '';
+
+ patches = [
+ ./slugify_filename_test.patch # fixes broken test by new unidecode
+ ];
+
+ propagatedBuildInputs = [ unidecode regex ];
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/dimka665/awesome-slugify";
+ description = "Python flexible slugify function";
+ license = licenses.gpl3;
+ platforms = platforms.all;
+ maintainers = with maintainers; [ abbradar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/awesome-slugify/slugify_filename_test.patch b/nixpkgs/pkgs/development/python-modules/awesome-slugify/slugify_filename_test.patch
new file mode 100644
index 00000000000..3283d76eae0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/awesome-slugify/slugify_filename_test.patch
@@ -0,0 +1,13 @@
+diff --git i/slugify/tests.py w/slugify/tests.py
+index 4c9fa1c..3e14328 100644
+--- i/slugify/tests.py
++++ w/slugify/tests.py
+@@ -57,7 +57,7 @@ class PredefinedSlugifyTestCase(unittest.TestCase):
+ self.assertEqual(slugify_url('The Über article'), 'uber-article')
+
+ def test_slugify_filename(self):
+- self.assertEqual(slugify_filename(u'Дrаft №2.txt'), u'Draft_2.txt')
++ self.assertEqual(slugify_filename(u'Дrаft №2.txt'), u'Draft_No._2.txt')
+
+
+ class ToLowerTestCase(unittest.TestCase):
diff --git a/nixpkgs/pkgs/development/python-modules/awkward/default.nix b/nixpkgs/pkgs/development/python-modules/awkward/default.nix
new file mode 100644
index 00000000000..a2d19e9ee3c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/awkward/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, numpy
+, pandas
+, pyarrow
+, pytestrunner
+, pytest
+, h5py
+}:
+
+buildPythonPackage rec {
+ pname = "awkward";
+ version = "0.12.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0xvphwpa1n5q7kim4dw6fmsg9h5kkk7nd51bv9b36i3n4hilmq32";
+ };
+
+ nativeBuildInputs = [ pytestrunner ];
+ checkInputs = [ pandas pyarrow pytest h5py ];
+ propagatedBuildInputs = [ numpy ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with lib; {
+ description = "Manipulate jagged, chunky, and/or bitmasked arrays as easily as Numpy";
+ homepage = https://github.com/scikit-hep/awkward-array;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aws-adfs/default.nix b/nixpkgs/pkgs/development/python-modules/aws-adfs/default.nix
new file mode 100644
index 00000000000..4912e8f9994
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aws-adfs/default.nix
@@ -0,0 +1,33 @@
+{ lib, buildPythonPackage, fetchPypi
+, pytest, pytestrunner, pytestcov, mock, glibcLocales, lxml, boto3, requests, click, configparser }:
+
+buildPythonPackage rec {
+ pname = "aws-adfs";
+ version = "1.17.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0wnsmwjpfhxilmvrqvwilcf3h9p5m5ixi5gn9bgkr3gwd2laxf54";
+ };
+
+ # Relax version constraint
+ patchPhase = ''
+ sed -i 's/coverage < 4/coverage/' setup.py
+ '';
+
+ # Test suite writes files to $HOME/.aws/, or /homeless-shelter if unset
+ HOME = ".";
+
+ # Required for python3 tests, along with glibcLocales
+ LC_ALL = "en_US.UTF-8";
+
+ checkInputs = [ glibcLocales pytest pytestrunner pytestcov mock ];
+ propagatedBuildInputs = [ lxml boto3 requests click configparser ];
+
+ meta = with lib; {
+ description = "Command line tool to ease aws cli authentication against ADFS";
+ homepage = https://github.com/venth/aws-adfs;
+ license = licenses.psfl;
+ maintainers = [ maintainers.bhipple ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aws-lambda-builders/default.nix b/nixpkgs/pkgs/development/python-modules/aws-lambda-builders/default.nix
new file mode 100644
index 00000000000..4554fe98c1b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aws-lambda-builders/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, six
+, pytest
+, mock
+, parameterized
+, isPy35
+}:
+
+buildPythonPackage rec {
+ pname = "aws-lambda-builders";
+ version = "0.3.0";
+
+ # No tests available in PyPI tarball
+ src = fetchFromGitHub {
+ owner = "awslabs";
+ repo = "aws-lambda-builders";
+ rev = "v${version}";
+ sha256 = "1c3r3iz29s68mlmdsxbl65x5zqx25b89d40rir6729ck4gll4dyd";
+ };
+
+ # Package is not compatible with Python 3.5
+ disabled = isPy35;
+
+ propagatedBuildInputs = [
+ six
+ ];
+
+ checkInputs = [
+ pytest
+ mock
+ parameterized
+ ];
+
+ checkPhase = ''
+ export PATH=$out/bin:$PATH
+ pytest tests/functional
+ '';
+
+ meta = with lib; {
+ homepage = https://github.com/awslabs/aws-lambda-builders;
+ description = "A tool to compile, build and package AWS Lambda functions";
+ longDescription = ''
+ Lambda Builders is a Python library to compile, build and package
+ AWS Lambda functions for several runtimes & frameworks.
+ '';
+ license = licenses.asl20;
+ maintainers = with maintainers; [ dhkl ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aws-sam-translator/default.nix b/nixpkgs/pkgs/development/python-modules/aws-sam-translator/default.nix
new file mode 100644
index 00000000000..a9734745f21
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aws-sam-translator/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, boto3
+, enum34
+, jsonschema
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "aws-sam-translator";
+ version = "1.11.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "db872c43bdfbbae9fc8c9201e6a7aeb9a661cda116a94708ab0577b46a38b962";
+ };
+
+ # Tests are not included in the PyPI package
+ doCheck = false;
+
+ propagatedBuildInputs = [
+ boto3
+ jsonschema
+ six
+ ] ++ lib.optionals (pythonOlder "3.4") [ enum34 ];
+
+ meta = {
+ homepage = https://github.com/awslabs/serverless-application-model;
+ description = "Python library to transform SAM templates into AWS CloudFormation templates";
+ license = lib.licenses.asl20;
+ maintainers = [ lib.maintainers.andreabedini ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aws-xray-sdk/default.nix b/nixpkgs/pkgs/development/python-modules/aws-xray-sdk/default.nix
new file mode 100644
index 00000000000..1a17d2650b5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aws-xray-sdk/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, jsonpickle
+, wrapt
+, requests
+, future
+, botocore
+}:
+
+buildPythonPackage rec {
+ pname = "aws-xray-sdk";
+ version = "2.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "bb74e1cc2388bd29c45e2e3eb31d0416d0f53d83baafca7b72ca9c945a2e249a";
+ };
+
+ propagatedBuildInputs = [
+ jsonpickle wrapt requests future botocore
+ ];
+
+ meta = {
+ description = "AWS X-Ray SDK for the Python programming language";
+ license = lib.licenses.asl20;
+ homepage = https://github.com/aws/aws-xray-sdk-python;
+ };
+
+ doCheck = false;
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/azure-applicationinsights/default.nix b/nixpkgs/pkgs/development/python-modules/azure-applicationinsights/default.nix
new file mode 100644
index 00000000000..74f7cf61b13
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-applicationinsights/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, azure-common
+, msrest
+}:
+
+buildPythonPackage rec {
+ pname = "azure-applicationinsights";
+ version = "0.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "6e1839169bb6ffd2d2c21ee3f4afbdd068ea428ad47cf884ea3167ecf7fd0859";
+ };
+
+ propagatedBuildInputs = [
+ azure-common
+ msrest
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Application Insights Client Library";
+ homepage = https://github.com/Azure/azure-sdk-for-python/tree/master/azure-applicotioninsights;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-batch/default.nix b/nixpkgs/pkgs/development/python-modules/azure-batch/default.nix
new file mode 100644
index 00000000000..8297c67b90d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-batch/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, azure-common
+, msrestazure
+}:
+
+buildPythonPackage rec {
+ pname = "azure-batch";
+ version = "7.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "1q8mdjdbz408z2j0y1zxqg9zg8j1v84p0dnh621vq73a2x1g298j";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Batch Client Library";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/batch?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-cli-core/default.nix b/nixpkgs/pkgs/development/python-modules/azure-cli-core/default.nix
new file mode 100644
index 00000000000..f535a243178
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-cli-core/default.nix
@@ -0,0 +1,93 @@
+{ stdenv
+, lib
+, python
+, buildPythonPackage
+, fetchPypi
+, adal
+, antlr4-python3-runtime
+, argcomplete
+, azure-cli-telemetry
+, colorama
+, jmespath
+, humanfriendly
+, knack
+, msrest
+, msrestazure
+, paramiko
+, pygments
+, pyjwt
+, pyopenssl
+, pyyaml
+, requests
+, six
+, tabulate
+, azure-mgmt-resource
+, pyperclip
+, psutil
+, enum34
+, futures
+, antlr4-python2-runtime
+, ndg-httpsclient
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-cli-core";
+ version = "2.0.71";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "01pqdh16l2c9a6b1az9galmm1szvhg7fyf9shq872wanw1xx88dj";
+ };
+
+ propagatedBuildInputs = [
+ adal
+ argcomplete
+ azure-cli-telemetry
+ colorama
+ jmespath
+ humanfriendly
+ knack
+ msrest
+ msrestazure
+ paramiko
+ pygments
+ pyjwt
+ pyopenssl
+ pyyaml
+ requests
+ six
+ tabulate
+ azure-mgmt-resource
+ pyperclip
+ psutil
+ ]
+ ++ lib.optionals isPy3k [ antlr4-python3-runtime ]
+ ++ lib.optionals (!isPy3k) [ enum34 futures antlr4-python2-runtime ndg-httpsclient ];
+
+ # Remove overly restrictive version contraints and obsolete namespace setup
+ prePatch = ''
+ substituteInPlace setup.py \
+ --replace "wheel==0.30.0" "wheel" \
+ --replace "azure-mgmt-resource==2.1.0" "azure-mgmt-resource"
+ substituteInPlace setup.cfg \
+ --replace "azure-namespace-package = azure-cli-nspkg" ""
+ '';
+
+ # Prevent these __init__'s from violating PEP420, only needed for python2
+ postInstall = lib.optionalString isPy3k ''
+ rm $out/${python.sitePackages}/azure/__init__.py \
+ $out/${python.sitePackages}/azure/cli/__init__.py
+ '';
+
+ # Tests are not included in sdist package
+ doCheck = false;
+
+ meta = with lib; {
+ homepage = https://github.com/Azure/azure-cli;
+ description = "Next generation multi-platform command line experience for Azure";
+ platforms = platforms.all;
+ license = licenses.mit;
+ maintainers = with maintainers; [ jonringer ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-cli-telemetry/default.nix b/nixpkgs/pkgs/development/python-modules/azure-cli-telemetry/default.nix
new file mode 100644
index 00000000000..73873076bda
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-cli-telemetry/default.nix
@@ -0,0 +1,50 @@
+{ stdenv
+, lib
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, python
+, applicationinsights
+, portalocker
+}:
+
+buildPythonPackage rec {
+ pname = "azure-cli-telemetry";
+ version = "1.0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "14wmxdsrrlnixaj52q37rrvp9wg5b54gf5wn2z1vq68kxpg1s560";
+ };
+
+ propagatedBuildInputs = [
+ applicationinsights
+ portalocker
+ ];
+
+ # tests are not published to pypi
+ doCheck = false;
+
+ # Remove overly restrictive version contraints and obsolete namespace setup
+ prePatch = ''
+ substituteInPlace setup.py \
+ --replace "applicationinsights>=0.11.1,<0.11.8" "applicationinsights" \
+ --replace "portalocker==1.2.1" "portalocker"
+ substituteInPlace setup.cfg \
+ --replace "azure-namespace-package = azure-cli-nspkg" ""
+ '';
+
+ # Prevent these __init__'s from violating PEP420, only needed for python2
+ postInstall = lib.optionalString isPy3k ''
+ rm $out/${python.sitePackages}/azure/__init__.py \
+ $out/${python.sitePackages}/azure/cli/__init__.py
+ '';
+
+ meta = with lib; {
+ homepage = https://github.com/Azure/azure-cli;
+ description = "Next generation multi-platform command line experience for Azure";
+ platforms = platforms.all;
+ license = licenses.mit;
+ maintainers = with maintainers; [ jonringer ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-common/default.nix b/nixpkgs/pkgs/development/python-modules/azure-common/default.nix
new file mode 100644
index 00000000000..b3c6f3fa1cc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-common/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, azure-nspkg
+, isPyPy
+, setuptools
+, python
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ version = "1.1.21";
+ pname = "azure-common";
+ disabled = isPyPy;
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "25d696d2affbf5fe9b13aebe66271fce545e673e7e1eeaaec2d73599ba639d63";
+ };
+
+ propagatedBuildInputs = [
+ azure-nspkg
+ ] ++ lib.optionals (!isPy3k) [ setuptools ]; # need for namespace lookup
+
+ postInstall = if isPy3k then "" else ''
+ echo "__import__('pkg_resources').declare_namespace(__name__)" >> "$out/lib/${python.libPrefix}"/site-packages/azure/__init__.py
+ '';
+
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure common code";
+ homepage = https://github.com/Azure/azure-sdk-for-python/tree/master/azure-common;
+ license = licenses.mit;
+ maintainers = with maintainers; [ olcai mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-cosmos/default.nix b/nixpkgs/pkgs/development/python-modules/azure-cosmos/default.nix
new file mode 100644
index 00000000000..2b7c7ded276
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-cosmos/default.nix
@@ -0,0 +1,28 @@
+{ buildPythonPackage
+, lib
+, fetchPypi
+, six
+, requests
+}:
+
+buildPythonPackage rec {
+ version = "3.1.0";
+ pname = "azure-cosmos";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1955kpn2y16k5mil90bnnyscnh1hyh4d5l5v5b90ms969p61i9zl";
+ };
+
+ propagatedBuildInputs = [ six requests ];
+
+ # requires an active Azure Cosmos service
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Azure Cosmos DB API";
+ homepage = https://github.com/Azure/azure-cosmos-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ jonringer ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-cosmosdb-nspkg/default.nix b/nixpkgs/pkgs/development/python-modules/azure-cosmosdb-nspkg/default.nix
new file mode 100644
index 00000000000..fef2614e1ae
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-cosmosdb-nspkg/default.nix
@@ -0,0 +1,29 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, azure-nspkg
+}:
+
+buildPythonPackage rec {
+ pname = "azure-cosmosdb-nspkg";
+ version = "2.0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "acf691e692818d9a65c653c7a3485eb8e35c0bdc496bba652e5ea3905ba09cd8";
+ };
+
+ propagatedBuildInputs = [
+ azure-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure CosmosDB namespace package";
+ homepage = https://github.com/Azure/azure-cosmos-table-python/tree/master/azure-cosmosdb-nspkg;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-cosmosdb-table/default.nix b/nixpkgs/pkgs/development/python-modules/azure-cosmosdb-table/default.nix
new file mode 100644
index 00000000000..6a5d54b8298
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-cosmosdb-table/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, cryptography
+, azure-common
+, azure-storage-common
+, azure-cosmosdb-nspkg
+, futures
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-cosmosdb-table";
+ version = "1.0.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "4a34c2c792036afc2a3811f4440ab967351e9ceee6542cc96453b63c678c0145";
+ };
+
+ propagatedBuildInputs = [
+ cryptography
+ azure-common
+ azure-storage-common
+ azure-cosmosdb-nspkg
+ ] ++ lib.optionals (!isPy3k) [
+ futures
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Log Analytics Client Library";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/cosmosdb?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-datalake-store/default.nix b/nixpkgs/pkgs/development/python-modules/azure-datalake-store/default.nix
new file mode 100644
index 00000000000..508fa8bf87e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-datalake-store/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, requests
+, adal
+, azure-common
+, futures
+, pathlib2
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-datalake-store";
+ version = "0.0.45";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1k2wkpdv30wjmi53zdcsa5xfqw8gyak39na73ja6rb7wy8196wbd";
+ };
+
+ propagatedBuildInputs = [
+ requests
+ adal
+ azure-common
+ ] ++ lib.optionals (!isPy3k) [
+ futures
+ pathlib2
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This project is the Python filesystem library for Azure Data Lake Store";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/data-lake-store?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-eventgrid/default.nix b/nixpkgs/pkgs/development/python-modules/azure-eventgrid/default.nix
new file mode 100644
index 00000000000..79449c328b0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-eventgrid/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, azure-common
+, msrestazure
+}:
+
+buildPythonPackage rec {
+ pname = "azure-eventgrid";
+ version = "1.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "7ebbe1c4266ba176aa4969d9755c08f10b89848ad50fb0bfd16fa82e29234f95";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "A fully-managed intelligent event routing service that allows for uniform event consumption using a publish-subscribe model";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/event-grid?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-graphrbac/default.nix b/nixpkgs/pkgs/development/python-modules/azure-graphrbac/default.nix
new file mode 100644
index 00000000000..f5c1131f660
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-graphrbac/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+}:
+
+buildPythonPackage rec {
+ version = "0.61.1";
+ pname = "azure-graphrbac";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "1qmjhpqw0sgy406ij5xyzkffisjah9m1pfz9x54v66bwrbi8msak";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Graph RBAC Client Library";
+ homepage = https://github.com/Azure/azure-sdk-for-python/tree/master/azure-graphrbac;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-keyvault/default.nix b/nixpkgs/pkgs/development/python-modules/azure-keyvault/default.nix
new file mode 100644
index 00000000000..ed0fe138769
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-keyvault/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, azure-common
+, azure-nspkg
+, msrest
+, msrestazure
+, cryptography
+}:
+
+buildPythonPackage rec {
+ pname = "azure-keyvault";
+ version = "1.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "37a8e5f376eb5a304fcd066d414b5d93b987e68f9212b0c41efa37d429aadd49";
+ };
+
+ propagatedBuildInputs = [
+ azure-common
+ azure-nspkg
+ msrest
+ msrestazure
+ cryptography
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Key Vault Client Library";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/key-vault?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-loganalytics/default.nix b/nixpkgs/pkgs/development/python-modules/azure-loganalytics/default.nix
new file mode 100644
index 00000000000..6a2b57052cc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-loganalytics/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, azure-common
+}:
+
+buildPythonPackage rec {
+ version = "0.1.0";
+ pname = "azure-loganalytics";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "3ceb350def677a351f34b0a0d1637df6be0c6fe87ff32a5270b17f540f6da06e";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ azure-common
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Log Analytics Client Library";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/loganalytics/client?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-advisor/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-advisor/default.nix
new file mode 100644
index 00000000000..c2423095280
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-advisor/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, isPy3k
+, azure-mgmt-nspkg
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-advisor";
+ version = "2.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "1929d6d5ba49d055fdc806e981b93cf75ea42ba35f78222aaf42d8dcf29d4ef3";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ ] ++ lib.optionals (!isPy3k) [
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Advisor Client Library";
+ homepage = https://github.com/Azure/azure-sdk-for-python/tree/master/azure-mgmt-advisor;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-applicationinsights/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-applicationinsights/default.nix
new file mode 100644
index 00000000000..d7e27eabf64
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-applicationinsights/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-applicationinsights";
+ version = "0.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "1hm6s7vym1y072jqypjgbhps8lza1d5kb8qcpyxnw4zsmsvshdp5";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ ] ++ lib.optionals (!isPy3k) [
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Application Insights Management Client Library";
+ homepage = https://github.com/Azure/sdk-for-python/tree/master/azure-mgmt-applicationinsights;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-authorization/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-authorization/default.nix
new file mode 100644
index 00000000000..7953234f6e2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-authorization/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-authorization";
+ version = "0.52.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "0357laxgldb7lvvws81r8xb6mrq9dwwnr1bnwdnyj4bw6p21i9hn";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ ] ++ lib.optionals (!isPy3k) [
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Authorization Management Client Library";
+ homepage = https://github.com/Azure/sdk-for-python/tree/master/azure-mgmt-authorization;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-batch/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-batch/default.nix
new file mode 100644
index 00000000000..67fe9c568ea
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-batch/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-batch";
+ version = "6.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "dc929d2a0a65804c28a75dc00bb84ba581f805582a09238f4e7faacb15f8a2a3";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ ] ++ lib.optionals (!isPy3k) [
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Batch Management Client Library";
+ homepage = https://github.com/Azure/sdk-for-python/tree/master/azure-mgmt-batch;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-batchai/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-batchai/default.nix
new file mode 100644
index 00000000000..faa4d5bc39a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-batchai/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, azure-common
+, azure-mgmt-nspkg
+, msrestazure
+, python
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-batchai";
+ version = "2.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "f1870b0f97d5001cdb66208e5a236c9717a0ed18b34dbfdb238a828f3ca2a683";
+ };
+
+ propagatedBuildInputs = [
+ msrestazure
+ azure-common
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Batch AI Management Client Library";
+ homepage = https://github.com/Azure/sdk-for-python/tree/master/azure-mgmt-batchai;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-billing/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-billing/default.nix
new file mode 100644
index 00000000000..73ce99eb752
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-billing/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+, python
+, isPy3k
+}:
+
+buildPythonPackage {
+ pname = "azure-mgmt-billing";
+ version = "0.2.0"; #pypi's 0.2.0 doesn't build ootb
+
+ src = fetchFromGitHub {
+ owner = "Azure";
+ repo = "azure-sdk-for-python";
+ rev = "ee5b47525d6c1eae3b1fd5f65b0421eab62a6e6f";
+ sha256 = "0xzdn7da5c3q5knh033vbsqk36vwbm75cx8vf10x0yj58krb4kn4";
+ };
+
+ preBuild = ''
+ cd ./azure-mgmt-billing
+ '';
+
+ propagatedBuildInputs = [
+ msrestazure
+ azure-common
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Billing Client Library";
+ homepage = https://github.com/Azure/sdk-for-python/tree/master/azure-mgmt-billing;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-cdn/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-cdn/default.nix
new file mode 100644
index 00000000000..7ad27938082
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-cdn/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-cdn";
+ version = "3.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "0cdbe0914aec544884ef681e31950efa548d9bec6d6dc354e00c3dbdab9e76e3";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ ] ++ lib.optionals (!isPy3k) [
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure CDN Management Client Library";
+ homepage = https://github.com/Azure/sdk-for-python/tree/master/azure-mgmt-cdn;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-cognitiveservices/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-cognitiveservices/default.nix
new file mode 100644
index 00000000000..d0ebe0470ae
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-cognitiveservices/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, azure-common
+, azure-mgmt-nspkg
+, msrestazure
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-cognitiveservices";
+ version = "4.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "05zbgy1d6mschqv6y14byr4nwdnv48x9skx4rbsbz1fcqqx3j2sd";
+ };
+
+ propagatedBuildInputs = [
+ msrestazure
+ azure-common
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Cognitive Services Management Client Library";
+ homepage = https://github.com/Azure/sdk-for-python/tree/master/azure-mgmt-cognitiveservices;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-commerce/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-commerce/default.nix
new file mode 100644
index 00000000000..ed0cb18aff3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-commerce/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+, python
+, isPy3k
+}:
+
+buildPythonPackage {
+ pname = "azure-mgmt-commerce";
+ version = "1.0.1";
+
+ src = fetchFromGitHub {
+ owner = "Azure";
+ repo = "azure-sdk-for-python";
+ rev = "ee5b47525d6c1eae3b1fd5f65b0421eab62a6e6f";
+ sha256 = "0xzdn7da5c3q5knh033vbsqk36vwbm75cx8vf10x0yj58krb4kn4";
+ };
+
+ preBuild = ''
+ cd ./azure-mgmt-commerce
+ '';
+
+ propagatedBuildInputs = [
+ msrestazure
+ azure-common
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Commerce Management Client Library";
+ homepage = https://github.com/Azure/sdk-for-python/tree/master/azure-mgmt-commerce;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-common/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-common/default.nix
new file mode 100644
index 00000000000..482c0d190bc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-common/default.nix
@@ -0,0 +1,42 @@
+{ pkgs
+, buildPythonPackage
+, fetchPypi
+, python
+, azure-common
+, azure-mgmt-nspkg
+, requests
+, msrestazure
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ version = "0.20.0";
+ pname = "azure-mgmt-common";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "c63812c13d9f36615c07f874bc602b733bb516f1ed62ab73189b8f71c6bfbfe6";
+ };
+
+ propagatedBuildInputs = [
+ azure-common
+ azure-mgmt-nspkg
+ requests
+ msrestazure
+ ];
+
+ postInstall = if isPy3k then "" else ''
+ echo "__import__('pkg_resources').declare_namespace(__name__)" >> "$out/lib/${python.libPrefix}"/site-packages/azure/mgmt/__init__.py
+ echo "__import__('pkg_resources').declare_namespace(__name__)" >> "$out/lib/${python.libPrefix}"/site-packages/azure/__init__.py
+ '';
+
+ doCheck = false;
+
+ meta = with pkgs.lib; {
+ description = "This is the Microsoft Azure Resource Management common code";
+ homepage = https://pypi.org/project/azure-mgmt-common;
+ license = licenses.mit;
+ maintainers = with maintainers; [ olcai mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-compute/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-compute/default.nix
new file mode 100644
index 00000000000..3df307242cf
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-compute/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, python
+, azure-mgmt-common
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ version = "5.0.0";
+ pname = "azure-mgmt-compute";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "1zdypc8f825n60341ai2482rwgsc7l8dpr691j8hqz571l80y85w";
+ };
+
+ postInstall = if isPy3k then "" else ''
+ echo "__import__('pkg_resources').declare_namespace(__name__)" >> "$out/lib/${python.libPrefix}"/site-packages/azure/__init__.py
+ echo "__import__('pkg_resources').declare_namespace(__name__)" >> "$out/lib/${python.libPrefix}"/site-packages/azure/mgmt/__init__.py
+ '';
+
+ propagatedBuildInputs = [
+ azure-mgmt-common
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Compute Management Client Library";
+ homepage = https://github.com/Azure/azure-sdk-for-python/tree/master/azure-mgmt-compute;
+ license = licenses.mit;
+ maintainers = with maintainers; [ olcai mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-consumption/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-consumption/default.nix
new file mode 100644
index 00000000000..d074f45cce5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-consumption/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-consumption";
+ version = "3.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "0nqgywknpj2a69an5yrn0c32fk01v5gi05za7dlf4ivwr9s4np83";
+ };
+
+ propagatedBuildInputs = [
+ msrestazure
+ azure-common
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Consumption Management Client Library";
+ homepage = https://github.com/Azure/sdk-for-python/tree/master/azure-mgmt-consumption;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-containerinstance/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-containerinstance/default.nix
new file mode 100644
index 00000000000..fd74008c1bf
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-containerinstance/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-containerinstance";
+ version = "1.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "1kd8lxm5kzk0wxbw1f3vin10hlhb4sygrxqd5c8k715s0ipkhmdh";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ ] ++ lib.optionals (!isPy3k) [
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Container Instance Client Library";
+ homepage = https://github.com/Azure/sdk-for-python/tree/master/azure-mgmt-containerinstance;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-containerservice/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-containerservice/default.nix
new file mode 100644
index 00000000000..5e68ef2d383
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-containerservice/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-containerservice";
+ version = "5.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "1dhni22n85x76709mvjmby8i8hvginzniq1dna6f5cidfcalc0vs";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ ] ++ lib.optionals (!isPy3k) [
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Container Service Management Client Library";
+ homepage = https://github.com/Azure/sdk-for-python/tree/master/azure-mgmt-containerservice;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-cosmosdb/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-cosmosdb/default.nix
new file mode 100644
index 00000000000..72be0b3dbb9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-cosmosdb/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-cosmosdb";
+ version = "0.7.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "1d9xzf9ydlhwlsk7ij64ji1r2j0l7bwaykwngcy5lh8sdxax305r";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ ] ++ lib.optionals (!isPy3k) [
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Cosmos DB Management Client Library";
+ homepage = https://github.com/Azure/sdk-for-python/tree/master/azure-mgmt-cosmosdb;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-datafactory/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-datafactory/default.nix
new file mode 100644
index 00000000000..7d028a61a55
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-datafactory/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-datafactory";
+ version = "0.7.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "7a50da8415e316bd3be0c90ff7e2bffee2afb959aefea23b5923f22dd7094a37";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ ] ++ lib.optionals (!isPy3k) [
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Data Factory Management Client Library";
+ homepage = https://github.com/Azure/sdk-for-python/tree/master/azure-mgmt-datafactory;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-datalake-analytics/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-datalake-analytics/default.nix
new file mode 100644
index 00000000000..31cfdf0e6d5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-datalake-analytics/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrestazure
+, azure-common
+, azure-mgmt-datalake-nspkg
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-datalake-analytics";
+ version = "0.6.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "0d64c4689a67d6138eb9ffbaff2eda2bace7d30b846401673183dcb42714de8f";
+ };
+
+ propagatedBuildInputs = [
+ msrestazure
+ azure-common
+ azure-mgmt-datalake-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Data Lake Analytics Management Client Library";
+ homepage = https://github.com/Azure/sdk-for-python/tree/master/azure-mgmt-datalake-analytics;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-datalake-nspkg/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-datalake-nspkg/default.nix
new file mode 100644
index 00000000000..0df7d65374a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-datalake-nspkg/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, azure-mgmt-nspkg
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-datalake-nspkg";
+ version = "3.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "deb192ba422f8b3ec272ce4e88736796f216f28ea5b03f28331d784b7a3f4880";
+ };
+
+ propagatedBuildInputs = [
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Data Lake Management namespace package";
+ homepage = https://github.com/Azure/sdk-for-python/tree/master/azure-mgmt-datalake-nspkg;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-datalake-store/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-datalake-store/default.nix
new file mode 100644
index 00000000000..ce28d0a7749
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-datalake-store/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrestazure
+, azure-common
+, azure-mgmt-datalake-nspkg
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-datalake-store";
+ version = "0.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "9376d35495661d19f8acc5604f67b0bc59493b1835bbc480f9a1952f90017a4c";
+ };
+
+ propagatedBuildInputs = [
+ msrestazure
+ azure-common
+ azure-mgmt-datalake-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Data Lake Store Management Client Library";
+ homepage = https://github.com/Azure/sdk-for-python/tree/master/azure-mgmt-datalake-store;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-datamigration/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-datamigration/default.nix
new file mode 100644
index 00000000000..9d1bdb7a013
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-datamigration/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-datamigration";
+ version = "2.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "0bixyya9afas0sv2wji7ivfi64z4dvv8p1gjnppibi5zas1mb4zw";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ ] ++ lib.optionals (!isPy3k) [
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Data Migration Client Library";
+ homepage = https://github.com/Azure/sdk-for-python/tree/master/azure-mgmt-datamigration;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-devspaces/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-devspaces/default.nix
new file mode 100644
index 00000000000..f5830f01ac9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-devspaces/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-devspaces";
+ version = "0.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "4710dd59fc219ebfa4272dbbad58bf62093b52ce22bfd32a5c0279d2149471b5";
+ };
+
+ propagatedBuildInputs = [
+ msrestazure
+ azure-common
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Dev Spaces Client Library";
+ homepage = https://github.com/Azure/sdk-for-python/tree/master/azure-mgmt-devspaces;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-devtestlabs/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-devtestlabs/default.nix
new file mode 100644
index 00000000000..f5d60a74b60
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-devtestlabs/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-devtestlabs";
+ version = "3.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "b3d5b2919021bf45f0acdd34ab23dc9b0435d9d0a6b472e5008128fb8521e700";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ ] ++ lib.optionals (!isPy3k) [
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure DevTestLabs Management Client Library";
+ homepage = https://github.com/Azure/sdk-for-python/tree/master/azure-mgmt-devtestlabs;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-dns/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-dns/default.nix
new file mode 100644
index 00000000000..55b5633cfe9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-dns/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+, python
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-dns";
+ version = "3.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "0zxkcczf01b64qfwj98jqdvnwqahygcyccf37rcxpdcfgpkg9kbf";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure DNS Management Client Library";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/dns?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-eventgrid/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-eventgrid/default.nix
new file mode 100644
index 00000000000..93f3006966c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-eventgrid/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-eventgrid";
+ version = "2.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "1hqwcl33r98lriz3fp6h8ir36bv9danx27290idv63fj7s95h866";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ ] ++ lib.optionals (!isPy3k) [
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure EventGrid Management Client Library";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/event-grid?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-eventhub/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-eventhub/default.nix
new file mode 100644
index 00000000000..188789e171c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-eventhub/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-eventhub";
+ version = "3.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "05c6isg13dslds94kv28v6navxj4bp4c5lsd9df0g3ndsxvpdrxp";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ ] ++ lib.optionals (!isPy3k) [
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure EventHub Management Client Library";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/event-hub?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-hanaonazure/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-hanaonazure/default.nix
new file mode 100644
index 00000000000..26247a7eb39
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-hanaonazure/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-hanaonazure";
+ version = "0.6.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "1spsy6g5z4nb1y1gfz0p1ykybi76qbig8j22zvmws59329b3br5h";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ ] ++ lib.optionals (!isPy3k) [
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure SAP Hana on Azure Management Client Library";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/hanaonazure?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-iotcentral/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-iotcentral/default.nix
new file mode 100644
index 00000000000..9509911709b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-iotcentral/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-iotcentral";
+ version = "1.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "9aac88ed1f993965015f4e9986931fc08798e09d7b864928681a7cebff053de8";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ ] ++ lib.optionals (!isPy3k) [
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure IoTCentral Management Client Library";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/iot?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-iothub/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-iothub/default.nix
new file mode 100644
index 00000000000..aac5ef06e91
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-iothub/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-iothub";
+ version = "0.8.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "0w3w1d156rnkwjdarv3qvycklxr3z2j7lry7a3jfgj3ykzny12rq";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ ] ++ lib.optionals (!isPy3k) [
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure IoTHub Management Client Library";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/iot?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-iothubprovisioningservices/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-iothubprovisioningservices/default.nix
new file mode 100644
index 00000000000..502ddccd667
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-iothubprovisioningservices/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-iothubprovisioningservices";
+ version = "0.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "8c37acfd1c33aba845f2e0302ef7266cad31cba503cc990a48684659acb7b91d";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure IoTHub Provisioning Services Client Library";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/iot?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-keyvault/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-keyvault/default.nix
new file mode 100644
index 00000000000..b640f7eef0c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-keyvault/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-keyvault";
+ version = "2.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "057ii54h8yr7rhfnbl0r29xbsg7mhf031hjffmdv0zf93552kmja";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Key Vault Management Client Library";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/key-vault?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-loganalytics/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-loganalytics/default.nix
new file mode 100644
index 00000000000..3473b6e86b4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-loganalytics/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-loganalytics";
+ version = "0.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "c7315ff0ee4d618fb38dca68548ef4023a7a20ce00efe27eb2105a5426237d86";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Log Analytics Management Client Library";
+ homepage = https://github.com/Azure/azure-sdk-for-python/tree/master/azure-mgmt-loganalytics;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-logic/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-logic/default.nix
new file mode 100644
index 00000000000..2050e290467
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-logic/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-logic";
+ version = "3.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "d163dfc32e3cfa84f3f8131a75d9e94f5c4595907332cc001e45bf7e4efd5add";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Logic Apps Management Client Library";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/logic-apps?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-machinelearningcompute/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-machinelearningcompute/default.nix
new file mode 100644
index 00000000000..a68f7e43858
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-machinelearningcompute/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-machinelearningcompute";
+ version = "0.4.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "7a52f85591114ef33a599dabbef840d872b7f599b7823e596af9490ec51b873f";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Machine Learning Compute Management Client Library";
+ homepage = https://github.com/Azure/azure-sdk-for-python/tree/master/azure-mgmt-machinelearningcompute;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-managementgroups/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-managementgroups/default.nix
new file mode 100644
index 00000000000..03faf442cbd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-managementgroups/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-managementgroups";
+ version = "0.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "3d5237947458dc94b4a392141174b1c1258d26611241ee104e9006d1d798f682";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ ] ++ lib.optionals (!isPy3k) [
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Management Groups Client Library";
+ homepage = https://github.com/Azure/azure-sdk-for-python/tree/master/azure-mgmt-managementgroups;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-managementpartner/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-managementpartner/default.nix
new file mode 100644
index 00000000000..be1ddc49a49
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-managementpartner/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-managementpartner";
+ version = "0.1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "1bvcmx7dkf2adi26z7c2ga63ggpzdfqj8q1gzcic1yn03v6nb8i7";
+ };
+
+ propagatedBuildInputs = [
+ msrestazure
+ azure-common
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure ManagementPartner Management Client Library";
+ homepage = https://github.com/Azure/azure-sdk-for-python/tree/master/azure-mgmt-managementpartner;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-maps/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-maps/default.nix
new file mode 100644
index 00000000000..b1e373173d2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-maps/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-maps";
+ version = "0.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "c120e210bb61768da29de24d28b82f8d42ae24e52396eb6569b499709e22f006";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Maps Client Library";
+ homepage = https://github.com/Azure/azure-sdk-for-python/tree/master/azure-mgmt-maps;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-marketplaceordering/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-marketplaceordering/default.nix
new file mode 100644
index 00000000000..8995f43a08b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-marketplaceordering/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-marketplaceordering";
+ version = "0.2.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "dc765cde7ec03efe456438c85c6207c2f77775a8ce8a7adb19b0df5c5dc513c2";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ ] ++ lib.optionals (!isPy3k) [
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Market Place Ordering Client Library";
+ homepage = https://github.com/Azure/azure-sdk-for-python/tree/master/azure-mgmt-marketplaceordering;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-media/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-media/default.nix
new file mode 100644
index 00000000000..5061fa90ae8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-media/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-media";
+ version = "1.1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "5d0c6b3a0f882dde8ae3d42467f03ea6c4e3f62613936087d54c67e6f504939b";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ ] ++ lib.optionals (!isPy3k) [
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Media Services Client Library";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/media-services?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-monitor/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-monitor/default.nix
new file mode 100644
index 00000000000..3233e9bc00e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-monitor/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-monitor";
+ version = "0.7.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "1pprvk5255b6brbw73g0g13zygwa7a2px5x08wy3153rqlzan5l2";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ ] ++ lib.optionals (!isPy3k) [
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Monitor Client Library";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/monitoring?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-msi/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-msi/default.nix
new file mode 100644
index 00000000000..63ebbb298f2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-msi/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-msi";
+ version = "1.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "0n4gbwk843z66hhpcp1kcrnwqkzygbbc2ma01r9asgfv4nmklvyl";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure MSI Management Client Library";
+ homepage = https://github.com/Azure/azure-sdk-for-python/tree/master/azure-mgmt-msi;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-network/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-network/default.nix
new file mode 100644
index 00000000000..6384df020e0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-network/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, azure-mgmt-common
+, python
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ version = "4.0.0";
+ pname = "azure-mgmt-network";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "0h2lnigmh2arq0ppwjk8h9rqxplj6s7h7qxwyv7wirk0ydx6cfd9";
+ };
+
+ postInstall = if isPy3k then "" else ''
+ echo "__import__('pkg_resources').declare_namespace(__name__)" >> "$out/lib/${python.libPrefix}"/site-packages/azure/__init__.py
+ echo "__import__('pkg_resources').declare_namespace(__name__)" >> "$out/lib/${python.libPrefix}"/site-packages/azure/mgmt/__init__.py
+ '';
+
+ propagatedBuildInputs = [
+ azure-mgmt-common
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Microsoft Azure SDK for Python";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/network?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ olcai mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-notificationhubs/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-notificationhubs/default.nix
new file mode 100644
index 00000000000..0629eb07b66
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-notificationhubs/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-notificationhubs";
+ version = "2.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "10w53ida2nlx73vd1pczh4mkpg0lag1h19yyklx3yvgsyvahj25h";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Notification Hubs Management Client Library";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/notification-hubs?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-nspkg/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-nspkg/default.nix
new file mode 100644
index 00000000000..8adb60e99aa
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-nspkg/default.nix
@@ -0,0 +1,29 @@
+{ pkgs
+, buildPythonPackage
+, fetchPypi
+, azure-nspkg
+, python
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ version = "3.0.2";
+ pname = "azure-mgmt-nspkg";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "8b2287f671529505b296005e6de9150b074344c2c7d1c805b3f053d081d58c52";
+ };
+
+ propagatedBuildInputs = [ azure-nspkg ];
+
+ doCheck = false;
+
+ meta = with pkgs.lib; {
+ description = "Microsoft Azure SDK for Python";
+ homepage = https://github.com/Azure/azure-sdk-for-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ olcai mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-policyinsights/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-policyinsights/default.nix
new file mode 100644
index 00000000000..b57146afe3e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-policyinsights/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-policyinsights";
+ version = "0.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "b27f5ac367b69e225ab02fa2d1ea20cbbfe948ff43b0af4698cd8cbde0063908";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ ] ++ lib.optionals (!isPy3k) [
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Policy Insights Client Library";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/policy?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-powerbiembedded/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-powerbiembedded/default.nix
new file mode 100644
index 00000000000..c946bb7ab36
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-powerbiembedded/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-powerbiembedded";
+ version = "2.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "2f05be73f2a086c579a78fc900e3b2ae14ccde5bcec54e29dfc73e626b377476";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Power BI Embedded Management Client Library";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/power-bi?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-rdbms/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-rdbms/default.nix
new file mode 100644
index 00000000000..2c5e2d1f2ea
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-rdbms/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-rdbms";
+ version = "1.9.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "0v91hl936wp9sl3bc31svf6kdxwa57qh6ih9rrv43dnb2000km6r";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ ] ++ lib.optionals (!isPy3k) [
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure RDBMS Management Client Library";
+ homepage = https://github.com/Azure/azure-sdk-for-python/tree/master/azure-mgmt-rdbms;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-recoveryservices/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-recoveryservices/default.nix
new file mode 100644
index 00000000000..5e4a500ce3b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-recoveryservices/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-recoveryservices";
+ version = "0.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "e1e794760232239f8a9328d5de1740565ff70d1612a2921c9609746ba5671e6c";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ ] ++ lib.optionals (!isPy3k) [
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Recovery Services Client Library";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/recoveryservices?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-recoveryservicesbackup/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-recoveryservicesbackup/default.nix
new file mode 100644
index 00000000000..0b91309cac3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-recoveryservicesbackup/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-recoveryservicesbackup";
+ version = "0.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "0zssvzdip23yzaxlac9rlzg9mlyjl97fwr0gj8y27z8j58pwj72i";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Recovery Services Backup Management Client Library";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/recovery-services-backup?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-redis/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-redis/default.nix
new file mode 100644
index 00000000000..21cdfbafc92
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-redis/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-redis";
+ version = "6.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "db999e104edeee3a13a8ceb1881e15196fe03a02635e0e20855eb52c1e2ecca1";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ ] ++ lib.optionals (!isPy3k) [
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Redis Cache Management Client Library";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/redis?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-relay/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-relay/default.nix
new file mode 100644
index 00000000000..a3491356c9a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-relay/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-relay";
+ version = "0.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "0s5z4cil750wn770m0hdzcrpshj4bj1bglkkvxdx9l9054dk9s57";
+ };
+
+ propagatedBuildInputs = [
+ msrestazure
+ azure-common
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Relay Client Library";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/relay?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-reservations/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-reservations/default.nix
new file mode 100644
index 00000000000..be00d4aa418
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-reservations/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-reservations";
+ version = "0.3.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "0nksxjh5kh09dr0zw667fg8mzik4ymvfq3dipwag6pynbqr9ls4l";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ ] ++ lib.optionals (!isPy3k) [
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Reservations Client Library";
+ homepage = https://github.com/Azure/azure-sdk-for-python/tree/master/azure-mgmt-reservations;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-resource/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-resource/default.nix
new file mode 100644
index 00000000000..c8574680c17
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-resource/default.nix
@@ -0,0 +1,36 @@
+{ pkgs
+, buildPythonPackage
+, fetchPypi
+, python
+, azure-mgmt-common
+, isPy3k
+}:
+
+
+buildPythonPackage rec {
+ version = "2.2.0";
+ pname = "azure-mgmt-resource";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "173pxgly95dwblp4nj4l70zb0gasibgcjmcynxwa5282plynhgdw";
+ };
+
+ postInstall = if isPy3k then "" else ''
+ echo "__import__('pkg_resources').declare_namespace(__name__)" >> "$out/lib/${python.libPrefix}"/site-packages/azure/__init__.py
+ echo "__import__('pkg_resources').declare_namespace(__name__)" >> "$out/lib/${python.libPrefix}"/site-packages/azure/mgmt/__init__.py
+ '';
+
+ propagatedBuildInputs = [ azure-mgmt-common ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with pkgs.lib; {
+ description = "Microsoft Azure SDK for Python";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/resources?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ olcai mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-scheduler/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-scheduler/default.nix
new file mode 100644
index 00000000000..a25b81aa5fa
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-scheduler/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-scheduler";
+ version = "2.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "c6e6edd386ddc4c21d54b1497c3397b970bc127b71809b51bd2391cb1f3d1a14";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Scheduler Management Client Library";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/scheduler?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-search/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-search/default.nix
new file mode 100644
index 00000000000..cc287589809
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-search/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-search";
+ version = "2.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "0085c7qi9z1ayxd8683ck79nfnldkrwl481hzav84flyg8d0m94j";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Search Management Client Library";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/search?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-servicebus/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-servicebus/default.nix
new file mode 100644
index 00000000000..e5b35e538ee
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-servicebus/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-servicebus";
+ version = "0.6.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "f20920b8fb119ef4abeda4d2dac765a4fc48cd0bcf30c27f8c4cc6d890bc08b1";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ ] ++ lib.optionals (!isPy3k) [
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Service Bus Management Client Library";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/servicebus?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-servicefabric/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-servicefabric/default.nix
new file mode 100644
index 00000000000..3dad2bccdc2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-servicefabric/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-servicefabric";
+ version = "0.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "0cirsp8wnsswba6gbmw4s2ljsjwi3855my063gvi2mqr55spvx2n";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Service Fabric Management Client Library";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/servicefabric?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-signalr/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-signalr/default.nix
new file mode 100644
index 00000000000..5751bfb042c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-signalr/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-signalr";
+ version = "0.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "0k39hf6r2rfy2wyxd9czha2mwmcqf6sc1v69jyh6ml3slbliivlz";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure SignalR Client Library";
+ homepage = https://github.com/Azure/azure-sdk-for-python/tree/master/azure-mgmt-signalr;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-sql/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-sql/default.nix
new file mode 100644
index 00000000000..913eb150224
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-sql/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-sql";
+ version = "0.12.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "8399702e9d1836f3b040ce0c93d8dc089767d66edb9224a3b8a6c9ab7e8ff01f";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ ] ++ lib.optionals (!isPy3k) [
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure SQL Management Client Library";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/sql?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-storage/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-storage/default.nix
new file mode 100644
index 00000000000..b8b39292e5f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-storage/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, python
+, azure-mgmt-common
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ version = "4.0.0";
+ pname = "azure-mgmt-storage";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "1kxd30s2axn3g4qx3v7q3d5l744a29xlfk3q06ra0rqm1p6prvgv";
+ };
+
+ postInstall = if isPy3k then "" else ''
+ echo "__import__('pkg_resources').declare_namespace(__name__)" >> "$out/lib/${python.libPrefix}"/site-packages/azure/__init__.py
+ echo "__import__('pkg_resources').declare_namespace(__name__)" >> "$out/lib/${python.libPrefix}"/site-packages/azure/mgmt/__init__.py
+ '';
+
+ propagatedBuildInputs = [ azure-mgmt-common ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Storage Management Client Library";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/storage?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ olcai mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-subscription/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-subscription/default.nix
new file mode 100644
index 00000000000..d19aba5fbc2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-subscription/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-subscription";
+ version = "0.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "7a095fe46e598210b178e1059bba82eb02f3b8a7f44f3791442ff7d9ff323d2b";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ ] ++ lib.optionals (!isPy3k) [
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Subscription Management Client Library";
+ homepage = https://github.com/Azure/azure-sdk-for-python/tree/master/azure-mgmt-subscription;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-trafficmanager/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-trafficmanager/default.nix
new file mode 100644
index 00000000000..87b0603877b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-trafficmanager/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-trafficmanager";
+ version = "0.51.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "fc8ae77022cfe52fda4379a2f31e0b857574d536e41291a7b569b5c0f4104186";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ ] ++ lib.optionals (!isPy3k) [
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Traffic Manager Client Library";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/traffic-manager?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-web/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-web/default.nix
new file mode 100644
index 00000000000..019d5bdc1e0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-web/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, msrest
+, msrestazure
+, azure-common
+, azure-mgmt-nspkg
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-mgmt-web";
+ version = "0.42.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "0vp40i9aaw5ycz7s7qqir6jq7327f7zg9j9i8g31qkfl1h1c7pdn";
+ };
+
+ propagatedBuildInputs = [
+ msrest
+ msrestazure
+ azure-common
+ ] ++ lib.optionals (!isPy3k) [
+ azure-mgmt-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Web Apps Management Client Library";
+ homepage = https://docs.microsoft.com/en-us/python/api/overview/azure/webapps?view=azure-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-nspkg/default.nix b/nixpkgs/pkgs/development/python-modules/azure-nspkg/default.nix
new file mode 100644
index 00000000000..bb1cb41f341
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-nspkg/default.nix
@@ -0,0 +1,26 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, python
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ version = "3.0.2";
+ pname = "azure-nspkg";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "e7d3cea6af63e667d87ba1ca4f8cd7cb4dfca678e4c55fc1cedb320760e39dd0";
+ };
+
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Microsoft Azure SDK for Python";
+ homepage = https://github.com/Azure/azure-sdk-for-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ olcai mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-servicebus/default.nix b/nixpkgs/pkgs/development/python-modules/azure-servicebus/default.nix
new file mode 100644
index 00000000000..84ebf617bae
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-servicebus/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, uamqp
+, azure-common
+, msrestazure
+, futures
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "azure-servicebus";
+ version = "0.50.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "0i8ls5h2ny12h9gnqwyq13ysvxgdq7b1kxirj4n58dfy94a182gv";
+ };
+
+ buildInputs = [
+ uamqp
+ azure-common
+ msrestazure
+ ] ++ lib.optionals (!isPy3k) [
+ futures
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Service Bus Client Library";
+ homepage = https://github.com/Azure/azure-sdk-for-python/free/master/azure-servicebus;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-servicefabric/default.nix b/nixpkgs/pkgs/development/python-modules/azure-servicefabric/default.nix
new file mode 100644
index 00000000000..6b9ac45ad97
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-servicefabric/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, azure-common
+, msrest
+}:
+
+buildPythonPackage rec {
+ pname = "azure-servicefabric";
+ version = "6.4.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "f049e8c4a179f1277f2ec60158f88caf14a50f7df491fc6841e360cd61746da1";
+ };
+
+ propagatedBuildInputs = [
+ azure-common
+ msrest
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This project provides a client library in Python that makes it easy to consume Microsoft Azure Storage services";
+ homepage = https://pypi.org/project/azure-servicefabric;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-servicemanagement-legacy/default.nix b/nixpkgs/pkgs/development/python-modules/azure-servicemanagement-legacy/default.nix
new file mode 100644
index 00000000000..51e1c08e63d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-servicemanagement-legacy/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, azure-common
+, requests
+}:
+
+buildPythonPackage {
+ version = "0.20.7";
+ pname = "azure-servicemanagement-legacy";
+
+ src = fetchFromGitHub {
+ owner = "Azure";
+ repo = "azure-sdk-for-python";
+ rev = "ab01fc1f23462f130c69f46505524b88101023dc";
+ sha256 = "0w2bm9hkwy1m94l8r2klnpqn4192y8bir3z8bymxgfx9y0b1mn2q";
+ };
+
+ preBuild = ''
+ cd ./azure-servicemanagement-legacy
+ '';
+
+ propagatedBuildInputs = [
+ azure-common
+ requests
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This is the Microsoft Azure Service Management Legacy Client Library";
+ homepage = https://github.com/Azure/azure-sdk-for-python/tree/master/azure-servicemanagement-legacy;
+ license = licenses.mit;
+ maintainers = with maintainers; [ olcai mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-storage-blob/default.nix b/nixpkgs/pkgs/development/python-modules/azure-storage-blob/default.nix
new file mode 100644
index 00000000000..2c00d78a718
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-storage-blob/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, azure-common
+, azure-storage-common
+, isPy3k
+, futures
+}:
+
+buildPythonPackage rec {
+ pname = "azure-storage-blob";
+ version = "1.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f187a878e7a191f4e098159904f72b4146cf70e1aabaf6484ab4ba72fc6f252c";
+ };
+
+ propagatedBuildInputs = [
+ azure-common
+ azure-storage-common
+ ] ++ lib.optional (!isPy3k) futures;
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Client library for Microsoft Azure Storage services containing the blob service APIs";
+ homepage = https://github.com/Azure/azure-storage-python/tree/master/azure-storage-blob;
+ license = licenses.mit;
+ maintainers = with maintainers; [ cmcdragonkai mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-storage-common/default.nix b/nixpkgs/pkgs/development/python-modules/azure-storage-common/default.nix
new file mode 100644
index 00000000000..dc7a0c3107c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-storage-common/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, azure-common
+, cryptography
+, python-dateutil
+, requests
+, isPy3k
+, azure-storage-nspkg
+}:
+
+buildPythonPackage rec {
+ pname = "azure-storage-common";
+ version = "1.4.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "4ec87c7537d457ec95252e0e46477e2c1ccf33774ffefd05d8544682cb0ae401";
+ };
+
+ propagatedBuildInputs = [
+ azure-common
+ cryptography
+ python-dateutil
+ requests
+ ] ++ lib.optional (!isPy3k) azure-storage-nspkg;
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Client library for Microsoft Azure Storage services containing common code shared by blob, file and queue";
+ homepage = https://github.com/Azure/azure-storage-python/tree/master/azure-storage-common;
+ license = licenses.mit;
+ maintainers = with maintainers; [ cmcdragonkai ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-storage-file/default.nix b/nixpkgs/pkgs/development/python-modules/azure-storage-file/default.nix
new file mode 100644
index 00000000000..ffdb2f656c1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-storage-file/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, azure-common
+, azure-storage-common
+, isPy3k
+, futures
+}:
+
+buildPythonPackage rec {
+ pname = "azure-storage-file";
+ version = "1.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5217b0441b671246a8d5f506a459fa3af084eeb9297c5be3bbe95d75d23bac2f";
+ };
+
+ propagatedBuildInputs = [
+ azure-common
+ azure-storage-common
+ ] ++ lib.optional (!isPy3k) futures;
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Client library for Microsoft Azure Storage services containing the file service APIs";
+ homepage = https://github.com/Azure/azure-storage-python/tree/master/azure-storage-file;
+ license = licenses.mit;
+ maintainers = with maintainers; [ cmcdragonkai ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-storage-nspkg/default.nix b/nixpkgs/pkgs/development/python-modules/azure-storage-nspkg/default.nix
new file mode 100644
index 00000000000..5efef893a75
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-storage-nspkg/default.nix
@@ -0,0 +1,29 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, azure-nspkg
+}:
+
+buildPythonPackage rec {
+ pname = "azure-storage-nspkg";
+ version = "3.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6f3bbe8652d5f542767d8433e7f96b8df7f518774055ac7c92ed7ca85f653811";
+ };
+
+ propagatedBuildInputs = [
+ azure-nspkg
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Client library for Microsoft Azure Storage services owning the azure.storage namespace, user should not use this directly";
+ homepage = https://github.com/Azure/azure-storage-python/tree/master/azure-storage-nspkg;
+ license = licenses.mit;
+ maintainers = with maintainers; [ cmcdragonkai ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-storage-queue/default.nix b/nixpkgs/pkgs/development/python-modules/azure-storage-queue/default.nix
new file mode 100644
index 00000000000..1ca1288e9b4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-storage-queue/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, azure-common
+, azure-storage-common
+}:
+
+buildPythonPackage rec {
+ pname = "azure-storage-queue";
+ version = "1.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0bafe9e61c0ce7b3f3ecadea21e931dab3248bd4989dc327a8666c5deae7f7ed";
+ };
+
+ propagatedBuildInputs = [
+ azure-common
+ azure-storage-common
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Client library for Microsoft Azure Storage services containing the queue service APIs";
+ homepage = https://github.com/Azure/azure-storage-python/tree/master/azure-storage-queue;
+ license = licenses.mit;
+ maintainers = with maintainers; [ cmcdragonkai ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-storage/default.nix b/nixpkgs/pkgs/development/python-modules/azure-storage/default.nix
new file mode 100644
index 00000000000..6693a7464d4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-storage/default.nix
@@ -0,0 +1,35 @@
+{ pkgs
+, buildPythonPackage
+, fetchPypi
+, python
+, azure-common
+, futures
+, dateutil
+, requests
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ version = "0.20.3";
+ pname = "azure-storage";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "06bmw6k2000kln5jwk5r9bgcalqbyvqirmdh9gq4s6nb4fv3c0jb";
+ };
+
+ propagatedBuildInputs = [ azure-common dateutil requests ]
+ ++ pkgs.lib.optionals (!isPy3k) [ futures ];
+
+ postInstall = ''
+ echo "__import__('pkg_resources').declare_namespace(__name__)" >> "$out/lib/${python.libPrefix}"/site-packages/azure/__init__.py
+ '';
+
+ meta = with pkgs.lib; {
+ description = "Microsoft Azure SDK for Python";
+ homepage = "https://azure.microsoft.com/en-us/develop/python/";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ olcai ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure/default.nix b/nixpkgs/pkgs/development/python-modules/azure/default.nix
new file mode 100644
index 00000000000..87a39255561
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure/default.nix
@@ -0,0 +1,38 @@
+{ pkgs
+, buildPythonPackage
+, fetchPypi
+, dateutil
+, futures
+, pyopenssl
+, requests
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ version = "4.0.0";
+ pname = "azure";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "7d6afa332fccffe1a9390bcfac5122317eec657c6029f144d794603a81cd0e50";
+ };
+
+ propagatedBuildInputs = [ dateutil pyopenssl requests ]
+ ++ pkgs.lib.optionals (!isPy3k) [ futures ];
+
+ # depends on futures for python 3 (not necissary)
+ patchPhase = if (!isPy3k) then "" else ''
+ sed -i -e "s/'futures'//" setup.py
+ '';
+
+ # tests are not packaged in pypi release
+ doCheck = false;
+
+ meta = with pkgs.lib; {
+ description = "Microsoft Azure SDK for Python";
+ homepage = "https://azure.microsoft.com/en-us/develop/python/";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ olcai ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/babelfish/default.nix b/nixpkgs/pkgs/development/python-modules/babelfish/default.nix
new file mode 100644
index 00000000000..003f996d29a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/babelfish/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "babelfish";
+ version = "0.5.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8380879fa51164ac54a3e393f83c4551a275f03617f54a99d70151358e444104";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = https://pypi.python.org/pypi/babelfish;
+ description = "A module to work with countries and languages";
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/backcall/default.nix b/nixpkgs/pkgs/development/python-modules/backcall/default.nix
new file mode 100644
index 00000000000..2eb44cb3624
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/backcall/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "backcall";
+ version = "0.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "38ecd85be2c1e78f77fd91700c76e14667dc21e2713b63876c0eb901196e01e4";
+ };
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = {
+ description = "Specifications for callback functions passed in to an API";
+ homepage = https://github.com/takluyver/backcall;
+ license = lib.licenses.bsd3;
+ };
+
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/backports-shutil-which/default.nix b/nixpkgs/pkgs/development/python-modules/backports-shutil-which/default.nix
new file mode 100644
index 00000000000..1b8b8f2ba47
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/backports-shutil-which/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchPypi, buildPythonPackage, pytest }:
+
+buildPythonPackage rec {
+ pname = "backports.shutil_which";
+ version = "3.5.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "fe39f567cbe4fad89e8ac4dbeb23f87ef80f7fe8e829669d0221ecdb0437c133";
+ };
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ py.test test
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Backport of shutil.which from Python 3.3";
+ homepage = https://github.com/minrk/backports.shutil_which;
+ license = licenses.psfl;
+ maintainers = with maintainers; [ jluttine ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/backports_abc/default.nix b/nixpkgs/pkgs/development/python-modules/backports_abc/default.nix
new file mode 100644
index 00000000000..ab34d376de0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/backports_abc/default.nix
@@ -0,0 +1,25 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "backports_abc";
+ version = "0.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "033be54514a03e255df75c5aee8f9e672f663f93abb723444caec8fe43437bde";
+ };
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover
+ '';
+
+ meta = {
+ homepage = https://github.com/cython/backports_abc;
+ license = lib.licenses.psfl;
+ description = "A backport of recent additions to the 'collections.abc' module";
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/backports_csv/default.nix b/nixpkgs/pkgs/development/python-modules/backports_csv/default.nix
new file mode 100644
index 00000000000..ce5d15c212a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/backports_csv/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi, future }:
+
+buildPythonPackage rec {
+
+ pname = "backports.csv";
+ version = "1.0.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0vdx5jlhs91iizc8j8l8811nqprwvdx39pgkdc82w2qkfgzxyxqj";
+ };
+
+ propagatedBuildInputs = [ future ];
+
+ meta = with stdenv.lib; {
+ description = "Backport of Python 3 csv module";
+ homepage = https://github.com/ryanhiebert;
+ license = licenses.psfl;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/backports_functools_lru_cache/default.nix b/nixpkgs/pkgs/development/python-modules/backports_functools_lru_cache/default.nix
new file mode 100644
index 00000000000..2a8b5e7960d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/backports_functools_lru_cache/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, setuptools_scm
+, isPy3k
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "backports.functools_lru_cache";
+ version = "1.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "9d98697f088eb1b0fa451391f91afb5e3ebde16bbdb272819fd091151fda4f1a";
+ };
+
+ buildInputs = [ setuptools_scm ];
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ # Test fail on Python 2
+ doCheck = isPy3k;
+
+ meta = {
+ description = "Backport of functools.lru_cache";
+ homepage = https://github.com/jaraco/backports.functools_lru_cache;
+ license = lib.licenses.mit;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/backports_lzma/default.nix b/nixpkgs/pkgs/development/python-modules/backports_lzma/default.nix
new file mode 100644
index 00000000000..82025df8b9e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/backports_lzma/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, lzma
+, python
+, pythonOlder
+}:
+
+if !(pythonOlder "3.3") then null else buildPythonPackage rec {
+ pname = "backports.lzma";
+ version = "0.0.13";
+
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "50829db66f0445442f6c796bba0ca62d1f87f54760c4682b6d1489e729a43744";
+ };
+
+ buildInputs = [ lzma ];
+
+ checkPhase = ''
+ ${python.interpreter} test/test_lzma.py
+ '';
+
+ # Relative import does not seem to function.
+ doCheck = false;
+
+ meta = {
+ description = "Backport of Python 3.3's 'lzma' module for XZ/LZMA compressed files";
+ homepage = https://github.com/peterjc/backports.lzma;
+ license = lib.licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/backports_os/default.nix b/nixpkgs/pkgs/development/python-modules/backports_os/default.nix
new file mode 100644
index 00000000000..9d0ddc2cad9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/backports_os/default.nix
@@ -0,0 +1,35 @@
+{ stdenv
+, 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 stdenv.lib; {
+ homepage = https://github.com/pjdelport/backports.os;
+ description = "Backport of new features in Python's os module";
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/backports_shutil_get_terminal_size/default.nix b/nixpkgs/pkgs/development/python-modules/backports_shutil_get_terminal_size/default.nix
new file mode 100644
index 00000000000..14365747971
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/backports_shutil_get_terminal_size/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytest
+, pythonOlder
+}:
+
+if !(pythonOlder "3.3") then null else buildPythonPackage {
+ pname = "backports.shutil_get_terminal_size";
+ version = "unstable-2016-02-21";
+
+ # there have been numerous fixes commited since the initial release.
+ # Most notably fixing a problem where the backport would always return
+ # terminal size 0. See https://trac.sagemath.org/ticket/25320#comment:5.
+ # Unfortunately the maintainer seems inactive and has not responded to
+ # a request for a new release since 2016:
+ # https://github.com/chrippa/backports.shutil_get_terminal_size/issues/7
+ src = fetchFromGitHub {
+ owner = "chrippa";
+ repo = "backports.shutil_get_terminal_size";
+ rev = "159e269450dbf37c3a837f6ea7e628d59acbb96a";
+ sha256 = "17sgv8vg0xxfdnca45l1mmwwvj29gich5c8kqznnj51kfccch7sg";
+ };
+
+ checkInputs = [
+ pytest
+ ];
+
+ meta = with lib; {
+ description = "A backport of the get_terminal_size function from Python 3.3’s shutil.";
+ homepage = https://github.com/chrippa/backports.shutil_get_terminal_size;
+ license = with licenses; [ mit ];
+ maintainers = with maintainers; [ timokau ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/backports_ssl_match_hostname/default.nix b/nixpkgs/pkgs/development/python-modules/backports_ssl_match_hostname/default.nix
new file mode 100644
index 00000000000..013fe9f446f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/backports_ssl_match_hostname/default.nix
@@ -0,0 +1,17 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "backports.ssl_match_hostname";
+ version = "3.7.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "bb82e60f9fbf4c080eabd957c39f0641f0fc247d9a16e31e26d594d8f42b9fd2";
+ };
+
+ meta = with lib; {
+ description = "The Secure Sockets layer is only actually *secure*";
+ homepage = https://bitbucket.org/brandon/backports.ssl_match_hostname;
+ license = licenses.psfl;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/backports_tempfile/default.nix b/nixpkgs/pkgs/development/python-modules/backports_tempfile/default.nix
new file mode 100644
index 00000000000..c2dbb0e6fa8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/backports_tempfile/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, python
+, buildPythonPackage
+, fetchPypi
+, setuptools_scm
+, backports_weakref
+}:
+
+buildPythonPackage rec {
+ pname = "backports.tempfile";
+ version = "1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1c648c452e8770d759bdc5a5e2431209be70d25484e1be24876cf2168722c762";
+ };
+
+ buildInputs = [ setuptools_scm ];
+
+ propagatedBuildInputs = [ backports_weakref ];
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover -s tests
+ '';
+
+ # requires https://pypi.org/project/backports.test.support
+ doCheck = false;
+
+ meta = {
+ description = "Backport of new features in Python's tempfile module";
+ license = lib.licenses.psfl;
+ homepage = https://github.com/pjdelport/backports.tempfile;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/backports_unittest-mock/default.nix b/nixpkgs/pkgs/development/python-modules/backports_unittest-mock/default.nix
new file mode 100644
index 00000000000..3baaa871adf
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/backports_unittest-mock/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi, setuptools_scm, mock }:
+
+buildPythonPackage rec {
+ pname = "backports.unittest_mock";
+ version = "1.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "73df9093bc7a2cc8e7018d08d6983dc5bcb2a47d7e7e107b9e8d0711f1702ef8";
+ };
+
+ propagatedBuildInputs = [ mock ];
+
+ buildInputs = [ setuptools_scm ];
+
+ meta = with stdenv.lib; {
+ description = "Provides a function install() which makes the mock module";
+ homepage = https://github.com/jaraco/backports.unittest_mock;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/backports_weakref/default.nix b/nixpkgs/pkgs/development/python-modules/backports_weakref/default.nix
new file mode 100644
index 00000000000..8b818398ec9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/backports_weakref/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, setuptools_scm
+# , backports
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "backports.weakref";
+ version = "1.0.post1";
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "bc4170a29915f8b22c9e7c4939701859650f2eb84184aee80da329ac0b9825c2";
+ };
+
+ buildInputs = [ setuptools_scm ];
+# checkInputs = [ backports ];
+
+ # Requires backports package
+ doCheck = false;
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover tests
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Backports of new features in Python’s weakref module";
+ license = licenses.psfl;
+ maintainers = with maintainers; [ jyp ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/bap/default.nix b/nixpkgs/pkgs/development/python-modules/bap/default.nix
new file mode 100644
index 00000000000..e0492a7d1c4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bap/default.nix
@@ -0,0 +1,23 @@
+{stdenv, buildPythonPackage, fetchFromGitHub, bap, requests}:
+
+buildPythonPackage rec {
+ pname = "bap";
+ version = "1.3.1";
+ src = fetchFromGitHub {
+ owner = "BinaryAnalysisPlatform";
+ repo = "bap-python";
+ rev = version;
+ sha256 = "1ahkrmcn7qaivps1gar8wd9mq2qqyx6zzvznf5r9rr05h17x5lbp";
+ };
+
+ propagatedBuildInputs = [bap requests];
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Platform for binary analysis. It is written in OCaml, but can be used from other languages.";
+ homepage = https://github.com/BinaryAnalysisPlatform/bap/;
+ maintainers = [ maintainers.maurer ];
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/base58/default.nix b/nixpkgs/pkgs/development/python-modules/base58/default.nix
new file mode 100644
index 00000000000..aafd73b8d8d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/base58/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchPypi, buildPythonPackage, pytest, pyhamcrest }:
+
+buildPythonPackage rec {
+ pname = "base58";
+ version = "1.0.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "9a793c599979c497800eb414c852b80866f28daaed5494703fc129592cc83e60";
+ };
+
+ checkInputs = [ pytest pyhamcrest ];
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Base58 and Base58Check implementation";
+ homepage = https://github.com/keis/base58;
+ license = licenses.mit;
+ maintainers = with maintainers; [ nyanloutre ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/baselines/default.nix b/nixpkgs/pkgs/development/python-modules/baselines/default.nix
new file mode 100644
index 00000000000..56a60de5979
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/baselines/default.nix
@@ -0,0 +1,64 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytest
+, gym
+, scipy
+, tqdm
+, joblib
+, dill
+, progressbar2
+, cloudpickle
+, click
+, pyzmq
+, tensorflow
+, mpi4py
+}:
+
+buildPythonPackage {
+ pname = "baselines";
+ version = "0.1.6"; # remember to manually adjust the rev
+
+ src = fetchFromGitHub {
+ owner = "openai";
+ repo = "baselines";
+ # Unfortunately releases are not tagged. This commit bumps the version in setup.py
+ rev = "2bca7901f51c88cdef3ca0666c6a87c454a4dbe8";
+ sha256 = "0j2ck7rsrcyny9qbmrw9aqvzfhv70nbign8iva2dsisa2x24gbcl";
+ };
+
+ propagatedBuildInputs = [
+ gym
+ scipy
+ tqdm
+ joblib
+ pyzmq
+ dill
+ progressbar2
+ mpi4py
+ cloudpickle
+ tensorflow
+ click
+ ];
+
+ postPatch = ''
+ # Needed for the atari wrapper, but the gym-atari package is not supported
+ # in nixos anyways. Since opencv-python is not currently packaged, we
+ # disable it.
+ sed -ie '/opencv-python/d' setup.py
+ '';
+
+ # fails to create a daemon, probably because of sandboxing
+ doCheck = false;
+
+ checkInputs = [
+ pytest
+ ];
+
+ meta = with lib; {
+ description = "High-quality implementations of reinforcement learning algorithms";
+ homepage = https://github.com/openai/baselines;
+ license = licenses.mit;
+ maintainers = with maintainers; [ timokau ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/basemap/default.nix b/nixpkgs/pkgs/development/python-modules/basemap/default.nix
new file mode 100644
index 00000000000..25b19a2b731
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/basemap/default.nix
@@ -0,0 +1,48 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, numpy
+, matplotlib
+, pillow
+, setuptools
+, pyproj
+, pyshp
+, six
+, pkgs
+}:
+
+buildPythonPackage rec {
+ pname = "basemap";
+ version = "1.2.0";
+
+ src = fetchFromGitHub {
+ owner = "matplotlib";
+ repo = "basemap";
+ rev = "v${version}rel";
+ sha256 = "1p3app8n65rlppkdbp1pb7fa4250kh7hi7lzdsryi2iv88np7193";
+ };
+
+ propagatedBuildInputs = [ numpy matplotlib pillow pyproj pyshp six ];
+ buildInputs = [ setuptools pkgs.geos ];
+
+ # Standard configurePhase from `buildPythonPackage` seems to break the setup.py script
+ configurePhase = ''
+ export GEOS_DIR=${pkgs.geos}
+ '';
+
+ # The 'check' target is not supported by the `setup.py` script.
+ # TODO : do the post install checks (`cd examples && ${python.interpreter} run_all.py`)
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = "https://matplotlib.org/basemap/";
+ description = "Plot data on map projections with matplotlib";
+ longDescription = ''
+ An add-on toolkit for matplotlib that lets you plot data on map projections with
+ coastlines, lakes, rivers and political boundaries. See
+ http://matplotlib.github.com/basemap/users/examples.html for examples of what it can do.
+ '';
+ license = with licenses; [ mit gpl2 ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/bash_kernel/default.nix b/nixpkgs/pkgs/development/python-modules/bash_kernel/default.nix
new file mode 100644
index 00000000000..191f0342674
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bash_kernel/default.nix
@@ -0,0 +1,48 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, fetchpatch
+, ipykernel
+, isPy27
+, python
+, pexpect
+}:
+
+buildPythonPackage rec {
+ pname = "bash_kernel";
+ version = "0.7.1";
+ format = "flit";
+ disabled = isPy27;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1s2kc7m52kq28b4j1q3456g5ani6nmq4n0rpbqi3yvh7ks0rby19";
+ };
+
+ patches = [
+ (fetchpatch {
+ url = "https://patch-diff.githubusercontent.com/raw/takluyver/bash_kernel/pull/69.diff";
+ sha256 = "1qd7qjjmcph4dk6j0bl31h2fdmfiyyazvrc9xqqj8y21ki2sl33j";
+ })
+ ];
+
+ propagatedBuildInputs = [ ipykernel pexpect ];
+
+ # no tests
+ doCheck = false;
+
+ preBuild = ''
+ export HOME=$TMPDIR
+ '';
+
+ postInstall = ''
+ ${python.interpreter} -m bash_kernel.install --prefix $out
+ '';
+
+ meta = {
+ description = "Bash Kernel for Jupyter";
+ homepage = "https://github.com/takluyver/bash_kernel";
+ license = lib.licenses.bsd3;
+ maintainers = with lib.maintainers; [ zimbatm ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/basiciw/default.nix b/nixpkgs/pkgs/development/python-modules/basiciw/default.nix
new file mode 100644
index 00000000000..0d25d7cdbe9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/basiciw/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, gcc
+, wirelesstools
+, isPy27
+, isPyPy
+}:
+
+buildPythonPackage rec {
+ pname = "basiciw";
+ version = "0.2.2";
+
+ disabled = isPy27 || isPyPy;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1ajmflvvlkflrcmqmkrx0zaira84z8kv4ssb2jprfwvjh8vfkysb";
+ };
+
+ buildInputs = [ gcc ];
+ propagatedBuildInputs = [ wirelesstools ];
+
+ meta = {
+ description = "Get info about wireless interfaces using libiw";
+ homepage = https://github.com/enkore/basiciw;
+ platforms = lib.platforms.linux;
+ license = lib.licenses.gpl2;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/batinfo/default.nix b/nixpkgs/pkgs/development/python-modules/batinfo/default.nix
new file mode 100644
index 00000000000..3e21fae1de6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/batinfo/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "batinfo";
+ version = "0.4.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "497e29efc9353ec52e71d43bd040bdfb6d685137ddc2b9143cded4583af572f5";
+ };
+
+ # No tests included
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/nicolargo/batinfo;
+ description = "A simple Python lib to retrieve battery information";
+ license = licenses.lgpl3;
+ platforms = platforms.all;
+ maintainers = with maintainers; [ koral ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/bayespy/default.nix b/nixpkgs/pkgs/development/python-modules/bayespy/default.nix
new file mode 100644
index 00000000000..430e7c3da8a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bayespy/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, buildPythonPackage, fetchPypi, pythonOlder
+, pytest, glibcLocales
+, numpy, scipy, matplotlib, h5py }:
+
+buildPythonPackage rec {
+ pname = "bayespy";
+ version = "0.5.18";
+
+ # Python 2 not supported and not some old Python 3 because MPL doesn't support
+ # them properly.
+ disabled = pythonOlder "3.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "86c453d827b8d6c3574ec306f6fadfc5028614e1cd46676841336e6787a7496a";
+ };
+
+ checkInputs = [ pytest glibcLocales ];
+ propagatedBuildInputs = [ numpy scipy matplotlib h5py ];
+
+ checkPhase = ''
+ LC_ALL=en_US.utf-8 pytest -k 'not test_message_to_parents'
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = http://www.bayespy.org;
+ description = "Variational Bayesian inference tools for Python";
+ license = licenses.mit;
+ maintainers = with maintainers; [ jluttine ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/bcdoc/default.nix b/nixpkgs/pkgs/development/python-modules/bcdoc/default.nix
new file mode 100644
index 00000000000..b4db16476d1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bcdoc/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi, docutils, six }:
+
+buildPythonPackage rec {
+ pname = "bcdoc";
+ version = "0.16.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f568c182e06883becf7196f227052435cffd45604700c82362ca77d3427b6202";
+ };
+
+ buildInputs = [ docutils six ];
+
+ # Tests fail due to nix file timestamp normalization.
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/botocore/bcdoc;
+ license = licenses.asl20;
+ description = "ReST document generation tools for botocore";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/bcrypt/default.nix b/nixpkgs/pkgs/development/python-modules/bcrypt/default.nix
new file mode 100644
index 00000000000..c32fefbbdfe
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bcrypt/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, isPyPy, fetchPypi
+, cffi, pycparser, mock, pytest, py, six }:
+
+with stdenv.lib;
+
+buildPythonPackage rec {
+ version = "3.1.7";
+ pname = "bcrypt";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0b0069c752ec14172c5f78208f1863d7ad6755a6fae6fe76ec2c80d13be41e42";
+ };
+ buildInputs = [ pycparser mock pytest py ];
+ propagatedBuildInputs = [ six ] ++ optional (!isPyPy) cffi;
+
+ meta = {
+ maintainers = with maintainers; [ domenkozar ];
+ description = "Modern password hashing for your software and your servers";
+ license = licenses.asl20;
+ homepage = https://github.com/pyca/bcrypt/;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/beaker/default.nix b/nixpkgs/pkgs/development/python-modules/beaker/default.nix
new file mode 100644
index 00000000000..09e0b8b3f3e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/beaker/default.nix
@@ -0,0 +1,76 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, nose
+, pylibmc
+, memcached
+, redis
+, pymongo
+, mock
+, webtest
+, sqlalchemy
+, pycrypto
+, cryptography
+, isPy27
+, isPy3k
+, funcsigs
+, pycryptopp
+}:
+
+buildPythonPackage rec {
+ pname = "Beaker";
+ version = "1.10.1";
+
+ # The pypy release do not contains the tests
+ src = fetchFromGitHub {
+ owner = "bbangert";
+ repo = "beaker";
+ rev = version;
+ sha256 = "0xrvg503xmi28w0hllr4s7fkap0p09fgw2wax3p1s2r6b3xjvbz7";
+ };
+
+ propagatedBuildInputs = [
+ sqlalchemy
+ pycrypto
+ cryptography
+ ] ++ lib.optionals (isPy27) [
+ funcsigs
+ pycryptopp
+ ];
+
+ checkInputs = [
+ nose
+ mock
+ webtest
+ pylibmc
+ memcached
+ redis
+ pymongo
+ ];
+
+
+ # Can not run memcached tests because it immediately tries to connect
+ postPatch = lib.optionalString isPy3k ''
+ substituteInPlace setup.py \
+ --replace "python-memcached" "python3-memcached"
+ '' + ''
+
+ rm tests/test_memcached.py
+ '';
+
+ # Disable external tests because they need to connect to a live database.
+ # Also disable a test in test_cache.py called "test_upgrade" because
+ # it currently fails on darwin.
+ # Please see issue https://github.com/bbangert/beaker/issues/166
+ checkPhase = ''
+ nosetests \
+ -e ".*test_ext_.*" \
+ -e "test_upgrade" \
+ -vv tests
+ '';
+
+ meta = {
+ description = "A Session and Caching library with WSGI Middleware";
+ maintainers = with lib.maintainers; [ domenkozar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/beancount/default.nix b/nixpkgs/pkgs/development/python-modules/beancount/default.nix
new file mode 100644
index 00000000000..9405e3489d4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/beancount/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k
+, beautifulsoup4, bottle, chardet, dateutil
+, google_api_python_client, lxml, oauth2client
+, ply, python_magic, pytest, requests }:
+
+buildPythonPackage rec {
+ version = "2.2.3";
+ pname = "beancount";
+
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0pcfl2rx2ng06i4f9izdpnlnb1k0rdzsckbzzn4cn4ixfzyssm0m";
+ };
+
+ # Tests require files not included in the PyPI archive.
+ doCheck = false;
+
+ propagatedBuildInputs = [
+ beautifulsoup4
+ bottle
+ chardet
+ dateutil
+ google_api_python_client
+ lxml
+ oauth2client
+ ply
+ python_magic
+ requests
+ # pytest really is a runtime dependency
+ # https://bitbucket.org/blais/beancount/commits/554e13057551951e113835196770847c788dd592
+ pytest
+ ];
+
+ meta = {
+ homepage = http://furius.ca/beancount/;
+ description = "Double-entry bookkeeping computer language";
+ longDescription = ''
+ A double-entry bookkeeping computer language that lets you define
+ financial transaction records in a text file, read them in memory,
+ generate a variety of reports from them, and provides a web interface.
+ '';
+ license = stdenv.lib.licenses.gpl2;
+ maintainers = with stdenv.lib.maintainers; [ ];
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/beanstalkc/default.nix b/nixpkgs/pkgs/development/python-modules/beanstalkc/default.nix
new file mode 100644
index 00000000000..e83a9f67789
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/beanstalkc/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchFromGitHub, buildPythonPackage }:
+
+buildPythonPackage rec {
+ pname = "beanstalkc";
+ version = "0.5.2";
+
+ src = fetchFromGitHub {
+ owner = "bosondata";
+ repo = "beanstalkc";
+ rev = "v${version}";
+ sha256 = "1dpb1yimp2pfnikmgsb2fr9x6h8riixlsx3xfqphnfvrid49vw5s";
+ };
+
+ doCheck = false;
+
+ meta = {
+ description = "A simple beanstalkd client library for Python";
+ maintainers = with stdenv.lib.maintainers; [ aanderse ];
+ license = with stdenv.lib.licenses; [ asl20 ];
+ homepage = https://github.com/earl/beanstalkc;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/beautifulsoup4/default.nix b/nixpkgs/pkgs/development/python-modules/beautifulsoup4/default.nix
new file mode 100644
index 00000000000..1b9ba31f035
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/beautifulsoup4/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchPypi, soupsieve, pytest, python }:
+
+buildPythonPackage rec {
+ pname = "beautifulsoup4";
+ version = "4.7.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "945065979fb8529dd2f37dbb58f00b661bdbcbebf954f93b32fdf5263ef35348";
+ };
+
+ checkInputs = [ pytest ];
+ checkPhase = ''
+ py.test $out/${python.sitePackages}/bs4/tests
+ '';
+
+ propagatedBuildInputs = [ soupsieve ];
+
+ meta = with stdenv.lib; {
+ homepage = http://crummy.com/software/BeautifulSoup/bs4/;
+ description = "HTML and XML parser";
+ license = licenses.mit;
+ maintainers = with maintainers; [ domenkozar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/bedup/default.nix b/nixpkgs/pkgs/development/python-modules/bedup/default.nix
new file mode 100644
index 00000000000..13aa48f7f8f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bedup/default.nix
@@ -0,0 +1,42 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, btrfs-progs
+, contextlib2
+, pyxdg
+, pycparser
+, alembic
+, cffi
+, pythonOlder
+, isPyPy
+}:
+
+buildPythonPackage rec {
+ version = "0.10.1";
+ pname = "bedup";
+ disabled = pythonOlder "3.3";
+
+ src = fetchFromGitHub {
+ owner = "g2p";
+ repo = "bedup";
+ rev = "v${version}";
+ sha256 = "0sp8pmjkxcqq0alianfp41mwq7qj10rk1qy31pjjp9kiph1rn0x6";
+ };
+
+ buildInputs = [ btrfs-progs ];
+ propagatedBuildInputs = [ contextlib2 pyxdg pycparser alembic ]
+ ++ stdenv.lib.optionals (!isPyPy) [ cffi ];
+
+ meta = with stdenv.lib; {
+ description = "Deduplication for Btrfs";
+ longDescription = ''
+ Deduplication for Btrfs. bedup looks for new and changed files,
+ making sure that multiple copies of identical files share space
+ on disk. It integrates deeply with btrfs so that scans are
+ incremental and low-impact.
+ '';
+ homepage = https://github.com/g2p/bedup;
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ bluescreen303 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/behave/default.nix b/nixpkgs/pkgs/development/python-modules/behave/default.nix
new file mode 100644
index 00000000000..7ad3489553c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/behave/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, fetchPypi, fetchpatch
+, buildPythonApplication, python, pythonOlder
+, mock, nose, pathpy, pyhamcrest, pytest
+, glibcLocales, parse, parse-type, six
+, traceback2
+}:
+buildPythonApplication rec {
+ pname = "behave";
+ version = "1.2.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "11hsz365qglvpp1m1w16239c3kiw15lw7adha49lqaakm8kj6rmr";
+ };
+
+ patches = [
+ # Fix tests on Python 2.7
+ (fetchpatch {
+ url = https://github.com/behave/behave/commit/0a9430a94881cd18437deb03d2ae23afea0f009c.patch;
+ sha256 = "1nrh9ii6ik6gw2kjh8a6jk4mg5yqw3jfjfllbyxardclsab62ydy";
+ })
+ ];
+
+ checkInputs = [ mock nose pathpy pyhamcrest pytest ];
+ buildInputs = [ glibcLocales ];
+ propagatedBuildInputs = [ parse parse-type six ] ++ stdenv.lib.optional (pythonOlder "3.0") traceback2;
+
+ postPatch = ''
+ patchShebangs bin
+ '';
+
+ doCheck = true;
+
+ checkPhase = ''
+ export LANG="en_US.UTF-8"
+ export LC_ALL="en_US.UTF-8"
+
+ pytest test tests
+
+ ${python.interpreter} bin/behave -f progress3 --stop --tags='~@xfail' features/
+ ${python.interpreter} bin/behave -f progress3 --stop --tags='~@xfail' tools/test-features/
+ ${python.interpreter} bin/behave -f progress3 --stop --tags='~@xfail' issue.features/
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/behave/behave;
+ description = "behaviour-driven development, Python style";
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ alunduil ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/betamax-matchers/default.nix b/nixpkgs/pkgs/development/python-modules/betamax-matchers/default.nix
new file mode 100644
index 00000000000..762154ac45d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/betamax-matchers/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, betamax, requests_toolbelt }:
+
+buildPythonPackage rec {
+ pname = "betamax-matchers";
+ version = "0.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "07qpwjyq2i2aqhz5iwghnj4pqr2ys5n45v1vmpcfx9r5mhwrsq43";
+ };
+
+ buildInputs = [ betamax requests_toolbelt ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/sigmavirus24/betamax_matchers;
+ description = "A group of experimental matchers for Betamax";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ pSub ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/betamax-serializers/default.nix b/nixpkgs/pkgs/development/python-modules/betamax-serializers/default.nix
new file mode 100644
index 00000000000..41341c24481
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/betamax-serializers/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, betamax, pyyaml }:
+
+buildPythonPackage rec {
+ pname = "betamax-serializers";
+ version = "0.2.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0ja9isbjmzzhxdj69s0kdsvw8nkp073w6an6a4liy5vk3fdl2p1l";
+ };
+
+ buildInputs = [ betamax pyyaml ];
+
+ meta = with stdenv.lib; {
+ homepage = https://gitlab.com/betamax/serializers;
+ description = "A set of third-party serializers for Betamax";
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/betamax/default.nix b/nixpkgs/pkgs/development/python-modules/betamax/default.nix
new file mode 100644
index 00000000000..8051ed0beff
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/betamax/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi, requests }:
+
+buildPythonPackage rec {
+ pname = "betamax";
+ version = "0.8.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1hki1c2vs7adq7zr56wi6i5bhrkia4s2ywpv2c98ibnczz709w2v";
+ };
+
+ propagatedBuildInputs = [ requests ];
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://betamax.readthedocs.org/en/latest/;
+ description = "A VCR imitation for requests";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ pSub ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/bibtexparser/default.nix b/nixpkgs/pkgs/development/python-modules/bibtexparser/default.nix
new file mode 100644
index 00000000000..849b6e8b240
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bibtexparser/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage, fetchFromGitHub
+, future, pyparsing
+, glibcLocales, nose, unittest2
+}:
+
+buildPythonPackage rec {
+ pname = "bibtexparser";
+ version = "1.1.0";
+
+ # PyPI tarball does not ship tests
+ src = fetchFromGitHub {
+ owner = "sciunto-org";
+ repo = "python-${pname}";
+ rev = "v${version}";
+ sha256 = "1yj3hqnmkjh0sjjhmlm4097mmz98kna8rn0dd9g8zaw9g1a35h8c";
+ };
+
+ propagatedBuildInputs = [ future pyparsing ];
+
+ checkInputs = [ nose unittest2 glibcLocales ];
+
+ checkPhase = ''
+ LC_ALL="en_US.UTF-8" nosetests
+ '';
+
+ meta = {
+ description = "Bibtex parser for python 2.7 and 3.3 and newer";
+ homepage = https://github.com/sciunto-org/python-bibtexparser;
+ license = with lib.licenses; [ gpl3 bsd3 ];
+ maintainers = with lib.maintainers; [ fridh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/bidict/default.nix b/nixpkgs/pkgs/development/python-modules/bidict/default.nix
new file mode 100644
index 00000000000..61dc1db1a48
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bidict/default.nix
@@ -0,0 +1,42 @@
+{ lib, buildPythonPackage, fetchPypi
+, setuptools_scm
+, sphinx
+, hypothesis
+, py
+, pytest
+, pytest-benchmark
+, sortedcollections
+, sortedcontainers
+}:
+
+buildPythonPackage rec {
+ pname = "bidict";
+ version = "0.18.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "4d10630fd5d86b7c165387473c5180e7fca7635f12e24b1f426aac259c72c81a";
+ };
+
+ nativeBuildInputs = [ setuptools_scm ];
+ propagatedBuildInputs = [ sphinx ];
+
+ checkInputs = [
+ hypothesis
+ py
+ pytest
+ pytest-benchmark
+ sortedcollections
+ sortedcontainers
+ ];
+ checkPhase = ''
+ pytest tests
+ '';
+
+ meta = with lib; {
+ homepage = https://github.com/jab/bidict;
+ description = "Efficient, Pythonic bidirectional map data structures and related functionality";
+ license = licenses.mpl20;
+ maintainers = with maintainers; [ jakewaksbaum ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/bids-validator/default.nix b/nixpkgs/pkgs/development/python-modules/bids-validator/default.nix
new file mode 100644
index 00000000000..ec66124e3c7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bids-validator/default.nix
@@ -0,0 +1,23 @@
+{ buildPythonPackage
+, lib
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ version = "1.2.4";
+ pname = "bids-validator";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1mvp1mi1k6yqgyj7rxij8mlwclqlyfzq08s67v0qaycw44l68ifg";
+ };
+
+ propagatedBuildInputs = [ ];
+
+ meta = with lib; {
+ description = "Validator for the Brain Imaging Data Structure";
+ homepage = "https://github.com/bids-standard/bids-validator";
+ license = licenses.mit;
+ maintainers = with maintainers; [ jonringer ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/billiard/default.nix b/nixpkgs/pkgs/development/python-modules/billiard/default.nix
new file mode 100644
index 00000000000..dd4b548563c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/billiard/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPyPy, pytest, case, psutil }:
+
+buildPythonPackage rec {
+ pname = "billiard";
+ version = "3.6.0.0";
+ disabled = isPyPy;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "756bf323f250db8bf88462cd042c992ba60d8f5e07fc5636c24ba7d6f4261d84";
+ };
+
+ checkInputs = [ pytest case psutil ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/celery/billiard;
+ description = "Python multiprocessing fork with improvements and bugfixes";
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/binaryornot/default.nix b/nixpkgs/pkgs/development/python-modules/binaryornot/default.nix
new file mode 100644
index 00000000000..77f1ff7cbd0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/binaryornot/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildPythonPackage, fetchPypi, chardet, hypothesis }:
+
+buildPythonPackage rec {
+ pname = "binaryornot";
+ version = "0.4.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "359501dfc9d40632edc9fac890e19542db1a287bbcfa58175b66658392018061";
+ };
+
+ prePatch = ''
+ # TypeError: binary() got an unexpected keyword argument 'average_size'
+ substituteInPlace tests/test_check.py \
+ --replace "average_size=512" ""
+ '';
+
+ propagatedBuildInputs = [ chardet ];
+
+ checkInputs = [ hypothesis ];
+
+ meta = with lib; {
+ homepage = https://github.com/audreyr/binaryornot;
+ description = "Ultra-lightweight pure Python package to check if a file is binary or text";
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/binwalk/default.nix b/nixpkgs/pkgs/development/python-modules/binwalk/default.nix
new file mode 100644
index 00000000000..88ef71cabdf
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/binwalk/default.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, zlib
+, xz
+, ncompress
+, gzip
+, bzip2
+, gnutar
+, p7zip
+, cabextract
+, lzma
+, pycrypto
+, pyqtgraph ? null }:
+
+let visualizationSupport = (pyqtgraph != null);
+in
+buildPythonPackage {
+ pname = "binwalk";
+ version = "2.1.1";
+
+ src = fetchFromGitHub {
+ owner = "devttys0";
+ repo = "binwalk";
+ rev = "291a03595d17f848c73b74cb6ca508da782cd8f7";
+ sha256 = "0grid93yz6i6jb2zggrqncp5awdf7qi88j5y2k7dq0k9r6b8zydw";
+ };
+
+ propagatedBuildInputs = [ zlib xz ncompress gzip bzip2 gnutar p7zip cabextract lzma pycrypto ]
+ ++ stdenv.lib.optional visualizationSupport pyqtgraph;
+
+ meta = with stdenv.lib; {
+ homepage = "http://binwalk.org";
+ description = "A tool for searching a given binary image for embedded files";
+ maintainers = [ maintainers.koral ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/biopython/default.nix b/nixpkgs/pkgs/development/python-modules/biopython/default.nix
new file mode 100644
index 00000000000..e60d4c60aea
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/biopython/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, numpy
+}:
+
+buildPythonPackage rec {
+ pname = "biopython";
+ version = "1.74";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1h4hcpx1vqrcddpcznyxy14zzvy2yanlkz0117w5n869w8djq595";
+ };
+
+ propagatedBuildInputs = [ numpy ];
+ # Checks try to write to $HOME, which does not work with nix
+ doCheck = false;
+ meta = {
+ description = "Python library for bioinformatics";
+ longDescription = ''
+ Biopython is a set of freely available tools for biological computation
+ written in Python by an international team of developers. It is a
+ distributed collaborative effort to develop Python libraries and
+ applications which address the needs of current and future work in
+ bioinformatics.
+ '';
+ homepage = https://biopython.org/wiki/Documentation;
+ maintainers = with lib.maintainers; [ luispedro ];
+ license = lib.licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/bitarray/0001-Buffer-Protocol-Py3.patch b/nixpkgs/pkgs/development/python-modules/bitarray/0001-Buffer-Protocol-Py3.patch
new file mode 100644
index 00000000000..e1019115ac7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bitarray/0001-Buffer-Protocol-Py3.patch
@@ -0,0 +1,106 @@
+From c636f0cc386c9ded9f31947bbd74affccc93c21a Mon Sep 17 00:00:00 2001
+From: yoch <yoch.melka@gmail.com>
+Date: Mon, 14 May 2018 21:55:00 +0300
+Subject: [PATCH] Adding buffer protocol support for Python 3
+
+---
+ bitarray/_bitarray.c | 12 ++++++++++--
+ bitarray/test_bitarray.py | 14 +++++++-------
+ 2 files changed, 17 insertions(+), 9 deletions(-)
+
+diff --git a/bitarray/_bitarray.c b/bitarray/_bitarray.c
+index d2c19cb..be6b379 100644
+--- a/bitarray/_bitarray.c
++++ b/bitarray/_bitarray.c
+@@ -48,7 +48,7 @@ int PyIndex_Check(PyObject *o)
+ #define Py_SIZE(ob) (((PyVarObject *) (ob))->ob_size)
+ #endif
+
+-#if PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION == 7
++#if PY_MAJOR_VERSION == 3 || (PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION == 7)
+ /* (new) buffer protocol */
+ #define WITH_BUFFER
+ #endif
+@@ -2787,6 +2787,8 @@ static PyTypeObject BitarrayIter_Type = {
+
+ /********************* Bitarray Buffer Interface ************************/
+ #ifdef WITH_BUFFER
++
++#if PY_MAJOR_VERSION == 2
+ static Py_ssize_t
+ bitarray_buffer_getreadbuf(bitarrayobject *self,
+ Py_ssize_t index, const void **ptr)
+@@ -2831,6 +2833,8 @@ bitarray_buffer_getcharbuf(bitarrayobject *self,
+ return Py_SIZE(self);
+ }
+
++#endif
++
+ static int
+ bitarray_getbuffer(bitarrayobject *self, Py_buffer *view, int flags)
+ {
+@@ -2857,14 +2861,18 @@ bitarray_releasebuffer(bitarrayobject *self, Py_buffer *view)
+ }
+
+ static PyBufferProcs bitarray_as_buffer = {
++#if PY_MAJOR_VERSION == 2 // old buffer protocol
+ (readbufferproc) bitarray_buffer_getreadbuf,
+ (writebufferproc) bitarray_buffer_getwritebuf,
+ (segcountproc) bitarray_buffer_getsegcount,
+ (charbufferproc) bitarray_buffer_getcharbuf,
++#endif
+ (getbufferproc) bitarray_getbuffer,
+ (releasebufferproc) bitarray_releasebuffer,
+ };
++
+ #endif /* WITH_BUFFER */
++
+ /************************** Bitarray Type *******************************/
+
+ static PyTypeObject Bitarraytype = {
+@@ -2898,7 +2906,7 @@ static PyTypeObject Bitarraytype = {
+ 0, /* tp_as_buffer */
+ #endif
+ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_WEAKREFS
+-#ifdef WITH_BUFFER
++#if defined(WITH_BUFFER) && PY_MAJOR_VERSION == 2
+ | Py_TPFLAGS_HAVE_NEWBUFFER
+ #endif
+ , /* tp_flags */
+diff --git a/bitarray/test_bitarray.py b/bitarray/test_bitarray.py
+index 44de2f0..b72b554 100644
+--- a/bitarray/test_bitarray.py
++++ b/bitarray/test_bitarray.py
+@@ -2113,10 +2113,10 @@ def test_read1(self):
+ a = bitarray('01000001' '01000010' '01000011', endian='big')
+ v = memoryview(a)
+ self.assertEqual(len(v), 3)
+- self.assertEqual(v[0], 'A')
+- self.assertEqual(v[:].tobytes(), 'ABC')
++ #self.assertEqual(v[0], 'A')
++ self.assertEqual(v[:].tobytes(), b'ABC')
+ a[13] = 1
+- self.assertEqual(v[:].tobytes(), 'AFC')
++ self.assertEqual(v[:].tobytes(), b'AFC')
+
+ def test_read2(self):
+ a = bitarray([randint(0, 1) for d in range(8000)])
+@@ -2131,14 +2131,14 @@ def test_write(self):
+ a.setall(0)
+ v = memoryview(a)
+ self.assertFalse(v.readonly)
+- v[50000] = '\xff'
++ v[50000] = 255 if is_py3k else '\xff'
+ self.assertEqual(a[399999:400009], bitarray('0111111110'))
+ a[400003] = 0
+ self.assertEqual(a[399999:400009], bitarray('0111011110'))
+- v[30001:30004] = 'ABC'
+- self.assertEqual(a[240000:240040].tobytes(), '\x00ABC\x00')
++ v[30001:30004] = b'ABC'
++ self.assertEqual(a[240000:240040].tobytes(), b'\x00ABC\x00')
+
+-if sys.version_info[:2] == (2, 7):
++if sys.version_info[:2] >= (2, 7):
+ tests.append(BufferInterfaceTests)
+
+ # ---------------------------------------------------------------------------
diff --git a/nixpkgs/pkgs/development/python-modules/bitarray/default.nix b/nixpkgs/pkgs/development/python-modules/bitarray/default.nix
new file mode 100644
index 00000000000..c413303dd21
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bitarray/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ version = "0.8.3";
+ pname = "bitarray";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0pl9p4j3dhlyffsqra6h28q7jph6v3hgppg786lkmnqdh45x6305";
+ };
+
+ # Delete once https://github.com/ilanschnell/bitarray/pull/55 is merged
+ patches = [ ./0001-Buffer-Protocol-Py3.patch ];
+
+ meta = with lib; {
+ description = "Efficient arrays of booleans";
+ homepage = https://github.com/ilanschnell/bitarray;
+ license = licenses.psfl;
+ maintainers = [ maintainers.bhipple ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/bitbucket-api/default.nix b/nixpkgs/pkgs/development/python-modules/bitbucket-api/default.nix
new file mode 100644
index 00000000000..0d1ac109179
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bitbucket-api/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, 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 stdenv.lib; {
+ homepage = https://github.com/Sheeprider/BitBucket-api;
+ description = "Python library to interact with BitBucket REST API";
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/bitbucket-cli/default.nix b/nixpkgs/pkgs/development/python-modules/bitbucket-cli/default.nix
new file mode 100644
index 00000000000..0a54c0ed17c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bitbucket-cli/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, 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 stdenv.lib; {
+ description = "Bitbucket command line interface";
+ homepage = https://bitbucket.org/zhemao/bitbucket-cli;
+ maintainers = with maintainers; [ refnil ];
+ license = licenses.bsd2;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/bitcoin-price-api/default.nix b/nixpkgs/pkgs/development/python-modules/bitcoin-price-api/default.nix
new file mode 100644
index 00000000000..d9ddc842642
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bitcoin-price-api/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildPythonPackage, fetchPypi
+, dateutil, requests }:
+
+buildPythonPackage rec {
+ pname = "bitcoin-price-api";
+ version = "0.0.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "bc68076f9632aaa9a8009d916d67a709c1e045dd904cfc7a3e8be33960d32029";
+ };
+
+ propagatedBuildInputs = [ dateutil requests ];
+
+ # No tests in archive
+ doCheck = false;
+
+ meta = {
+ homepage = https://github.com/dursk/bitcoin-price-api;
+ description = "Price APIs for bitcoin exchanges";
+ license = with lib.licenses; [ mit ];
+ maintainers = with lib.maintainers; [ bhipple ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/bitcoinlib/default.nix b/nixpkgs/pkgs/development/python-modules/bitcoinlib/default.nix
new file mode 100644
index 00000000000..dd85789c59e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bitcoinlib/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, lib, buildPythonPackage, fetchFromGitHub, openssl }:
+
+let ext = if stdenv.isDarwin then "dylib" else "so";
+in buildPythonPackage rec {
+ pname = "bitcoinlib";
+ version = "0.9.0";
+
+ src = fetchFromGitHub {
+ owner = "petertodd";
+ rev = "7a8a47ec6b722339de1d0a8144e55b400216f90f";
+ repo = "python-bitcoinlib";
+ sha256 = "1s1jm2nid7ab7yiwlp1n2v3was9i4q76xmm07wvzpd2zvn5zb91z";
+ };
+
+ postPatch = ''
+ substituteInPlace bitcoin/core/key.py --replace \
+ "ctypes.util.find_library('ssl') or 'libeay32'" \
+ "'${openssl.out}/lib/libssl.${ext}'"
+ '';
+
+ meta = {
+ homepage = src.meta.homepage;
+ description = "Easy interface to the Bitcoin data structures and protocol";
+ license = with lib.licenses; [ gpl3 ];
+ maintainers = with lib.maintainers; [ jb55 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/bitmath/default.nix b/nixpkgs/pkgs/development/python-modules/bitmath/default.nix
new file mode 100644
index 00000000000..092ad6c1003
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bitmath/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k, progressbar231, progressbar33, mock }:
+
+buildPythonPackage rec {
+ pname = "bitmath";
+ version = "1.3.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "293325f01e65defe966853111df11d39215eb705a967cb115851da8c4cfa3eb8";
+ };
+
+ checkInputs = [ (if isPy3k then progressbar33 else progressbar231) mock ];
+
+ meta = with stdenv.lib; {
+ description = "Module for representing and manipulating file sizes with different prefix";
+ homepage = https://github.com/tbielawa/bitmath;
+ license = licenses.mit;
+ maintainers = with maintainers; [ twey ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/bitstring/default.nix b/nixpkgs/pkgs/development/python-modules/bitstring/default.nix
new file mode 100644
index 00000000000..23f4257a357
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bitstring/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "bitstring";
+ version = "3.1.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1algq30j6rz12b1902bpw7iijx5lhrfqhl80d4ac6xzkrrpshqy1";
+ extension = "zip";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Module for binary data manipulation";
+ homepage = "https://github.com/scott-griffiths/bitstring";
+ license = licenses.mit;
+ platforms = platforms.unix;
+ maintainers = with maintainers; [ bjornfor ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/bitstruct/default.nix b/nixpkgs/pkgs/development/python-modules/bitstruct/default.nix
new file mode 100644
index 00000000000..2bc4a5bbb61
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bitstruct/default.nix
@@ -0,0 +1,18 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "bitstruct";
+ version = "6.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1znqgy2ikdqn6n6mv1ccfbl0q7x65bh3i9ph0yjl4rihwvxyg9fg";
+ };
+
+ meta = with lib; {
+ homepage = https://github.com/eerimoq/bitstruct;
+ description = "Python bit pack/unpack package";
+ license = licenses.mit;
+ maintainers = with maintainers; [ jakewaksbaum ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/bjoern/default.nix b/nixpkgs/pkgs/development/python-modules/bjoern/default.nix
new file mode 100644
index 00000000000..ddbb2f0d27e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bjoern/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchPypi, libev, python }:
+
+buildPythonPackage rec {
+ pname = "bjoern";
+ version = "3.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1ajmmfzr6fm8h8s7m69f2ffx0wk6snjvdx527hhj00bzn7zybnmn";
+ };
+
+ buildInputs = [ libev ];
+
+ checkPhase = ''
+ ${python.interpreter} tests/keep-alive-behaviour.py 2>/dev/null
+ ${python.interpreter} tests/test_wsgi_compliance.py
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/jonashaag/bjoern;
+ description = "A screamingly fast Python 2/3 WSGI server written in C";
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ cmcdragonkai ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/bkcharts/default.nix b/nixpkgs/pkgs/development/python-modules/bkcharts/default.nix
new file mode 100644
index 00000000000..270015a423b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bkcharts/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, numpy
+, pandas
+}:
+
+
+buildPythonPackage rec {
+ pname = "bkcharts";
+ version = "0.2";
+
+ src = fetchPypi {
+ inherit version pname;
+ sha256 = "a5eaa8e78853dcecaa46345812e4fabe9cd3b96330ebf0809f640a4a0556d72e";
+ };
+
+ propagatedBuildInputs = [ numpy pandas ];
+
+ # Circular test dependency on bokeh
+ doCheck = false;
+
+ meta = {
+ description = "High level chart types built on top of Bokeh";
+ homepage = https://github.com/bokeh/bkcharts;
+ license = lib.licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/black/default.nix b/nixpkgs/pkgs/development/python-modules/black/default.nix
new file mode 100644
index 00000000000..f17f94387f3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/black/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, buildPythonPackage, fetchPypi, pythonOlder
+, attrs, click, toml, appdirs, aiohttp, aiohttp-cors
+, glibcLocales, pytest }:
+
+buildPythonPackage rec {
+ pname = "black";
+ version = "19.3b0";
+
+ disabled = pythonOlder "3.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "073kd5rs02lisp6n3h7yai9lix520xnaa6c7rdmp2sci9pyhz5b8";
+ };
+
+ checkInputs = [ pytest glibcLocales ];
+
+ # Necessary for the tests to pass on Darwin with sandbox enabled.
+ # Black starts a local server and needs to bind a local address.
+ __darwinAllowLocalNetworking = true;
+
+ # Don't know why these tests fails
+ checkPhase = ''
+ LC_ALL="en_US.UTF-8" pytest \
+ --deselect tests/test_black.py::BlackTestCase::test_expression_diff \
+ --deselect tests/test_black.py::BlackTestCase::test_cache_multiple_files \
+ --deselect tests/test_black.py::BlackTestCase::test_failed_formatting_does_not_get_cached
+ '';
+
+ propagatedBuildInputs = [ attrs appdirs click toml aiohttp aiohttp-cors ];
+
+ meta = with stdenv.lib; {
+ description = "The uncompromising Python code formatter";
+ homepage = https://github.com/ambv/black;
+ license = licenses.mit;
+ maintainers = with maintainers; [ sveitser ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/blaze/default.nix b/nixpkgs/pkgs/development/python-modules/blaze/default.nix
new file mode 100644
index 00000000000..b3c56a618e8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/blaze/default.nix
@@ -0,0 +1,71 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytest
+, contextlib2
+, cytoolz
+, dask
+, datashape
+, flask
+, flask-cors
+, h5py
+, multipledispatch
+, numba
+, numpy
+, odo
+, pandas
+, psutil
+, pymongo
+, pyyaml
+, requests
+, sqlalchemy
+, tables
+, toolz
+}:
+
+buildPythonPackage rec {
+ pname = "blaze";
+ version = "0.11.3";
+
+ src = fetchFromGitHub {
+ owner = pname;
+ repo = pname;
+ rev = version;
+ sha256 = "0w916k125058p40cf7i090f75pgv3cqdb8vwjzqhb9r482fa6717";
+ };
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [
+ contextlib2
+ cytoolz
+ dask
+ datashape
+ flask
+ flask-cors
+ h5py
+ multipledispatch
+ numba
+ numpy
+ odo
+ pandas
+ psutil
+ pymongo
+ pyyaml
+ requests
+ sqlalchemy
+ tables
+ toolz
+ ];
+
+ checkPhase = ''
+ rm pytest.ini # Not interested in coverage
+ py.test blaze/tests
+ '';
+
+ meta = {
+ homepage = https://github.com/ContinuumIO/blaze;
+ description = "Allows Python users a familiar interface to query data living in other data storage systems";
+ license = lib.licenses.bsdOriginal;
+ maintainers = with lib.maintainers; [ fridh ];
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/bleach/default.nix b/nixpkgs/pkgs/development/python-modules/bleach/default.nix
new file mode 100644
index 00000000000..7de124267f0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bleach/default.nix
@@ -0,0 +1,50 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+, pytestrunner
+, six
+, html5lib
+}:
+
+buildPythonPackage rec {
+ pname = "bleach";
+ version = "3.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "3fdf7f77adcf649c9911387df51254b813185e32b2c6619f690b593a617e19fa";
+ };
+
+ checkInputs = [ pytest pytestrunner ];
+ propagatedBuildInputs = [ six html5lib ];
+
+ postPatch = ''
+ substituteInPlace setup.py --replace ",<3dev" ""
+ '';
+
+ # Disable a test
+ # https://github.com/mozilla/bleach/issues/467
+ checkPhase = ''
+ pytest -k "not test_only_text_is_cleaned"
+ '';
+
+ meta = {
+ description = "An easy, HTML5, whitelisting HTML sanitizer";
+ longDescription = ''
+ Bleach is an HTML sanitizing library that escapes or strips markup and
+ attributes based on a white list. Bleach can also linkify text safely,
+ applying filters that Django's urlize filter cannot, and optionally
+ setting rel attributes, even on links already in the text.
+
+ Bleach is intended for sanitizing text from untrusted sources. If you
+ find yourself jumping through hoops to allow your site administrators
+ to do lots of things, you're probably outside the use cases. Either
+ trust those users, or don't.
+ '';
+ homepage = https://github.com/mozilla/bleach;
+ downloadPage = https://github.com/mozilla/bleach/releases;
+ license = lib.licenses.asl20;
+ maintainers = with lib.maintainers; [ prikhi ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/blessed/default.nix b/nixpkgs/pkgs/development/python-modules/blessed/default.nix
new file mode 100644
index 00000000000..164848aeac9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/blessed/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, buildPythonPackage, fetchPypi, fetchpatch, six
+, wcwidth, pytest, mock, glibcLocales
+}:
+
+let
+
+ fixTestSuiteFailure_1 = fetchpatch {
+ url = https://github.com/jquast/blessed/pull/108/commits/76a54d39b0f58bfc71af04ee143459eefb0e1e7b.patch;
+ sha256 = "1higmv4c03ly7ywac1d7s71f3hrl531vj16nsfl9xh6zh9c47qcg";
+ };
+
+ fixTestSuiteFailure_2 = fetchpatch {
+ url = https://github.com/jquast/blessed/pull/108/commits/aa94e01aed745715e667601fb674844b257cfcc9.patch;
+ sha256 = "1frygr6sc1vakdfx1hf6jj0dbwibiqz8hw9maf1b605cbslc9nay";
+ };
+
+in
+
+buildPythonPackage rec {
+ pname = "blessed";
+ version = "1.15.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "777b0b6b5ce51f3832e498c22bc6a093b6b5f99148c7cbf866d26e2dec51ef21";
+ };
+
+ patches = [ fixTestSuiteFailure_1 fixTestSuiteFailure_2 ];
+
+ checkInputs = [ pytest mock glibcLocales ];
+
+ checkPhase = ''
+ LANG=en_US.utf-8 py.test blessed/tests
+ '';
+
+ propagatedBuildInputs = [ wcwidth six ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/jquast/blessed;
+ description = "A thin, practical wrapper around terminal capabilities in Python.";
+ maintainers = with maintainers; [ eqyiel ];
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/blessings/default.nix b/nixpkgs/pkgs/development/python-modules/blessings/default.nix
new file mode 100644
index 00000000000..23e9067ea33
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/blessings/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+, nose
+}:
+
+buildPythonPackage rec {
+ pname = "blessings";
+ version = "1.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "98e5854d805f50a5b58ac2333411b0482516a8210f23f43308baeb58d77c157d";
+ };
+
+ # 4 failing tests, 2to3
+ doCheck = false;
+
+ propagatedBuildInputs = [ six ];
+ checkInputs = [ nose ];
+
+ checkPhase = ''
+ nosetests
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/erikrose/blessings;
+ description = "A thin, practical wrapper around terminal coloring, styling, and positioning";
+ license = licenses.mit;
+ maintainers = with maintainers; [ domenkozar ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/blinker/default.nix b/nixpkgs/pkgs/development/python-modules/blinker/default.nix
new file mode 100644
index 00000000000..441d1250e0a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/blinker/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "blinker";
+ version = "1.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1dpq0vb01p36jjwbhhd08ylvrnyvcc82yxx3mwjx6awrycjyw6j7";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = https://pythonhosted.org/blinker/;
+ description = "Fast, simple object-to-object and broadcast signaling";
+ license = licenses.mit;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/blinkstick/default.nix b/nixpkgs/pkgs/development/python-modules/blinkstick/default.nix
new file mode 100644
index 00000000000..96f7bfebdeb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/blinkstick/default.nix
@@ -0,0 +1,31 @@
+{ lib, buildPythonPackage, fetchPypi, fetchpatch, pyusb }:
+
+buildPythonPackage rec {
+ pname = "BlinkStick";
+ version = "1.1.8";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "3edf4b83a3fa1a7bd953b452b76542d54285ff6f1145b6e19f9b5438120fa408";
+ };
+
+ patches = [
+ (fetchpatch {
+ url = https://github.com/arvydas/blinkstick-python/commit/a9227d0.patch;
+ sha256 = "1mcmxlnkbfxwp84qz32l5rlc7r9anh9yhnqaj1y8rny5s13jb01f";
+ })
+ (fetchpatch {
+ url = https://github.com/arvydas/blinkstick-python/pull/54.patch;
+ sha256 = "1gjq6xbai794bbdyrv82i96l1a7qkwvlhzd6sa937dy5ivv6s6hl";
+ })
+ ];
+
+ propagatedBuildInputs = [ pyusb ];
+
+ meta = with lib; {
+ description = "Python package to control BlinkStick USB devices";
+ homepage = https://pypi.python.org/pypi/BlinkStick/;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ np ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/blis/default.nix b/nixpkgs/pkgs/development/python-modules/blis/default.nix
new file mode 100644
index 00000000000..e038e07507a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/blis/default.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, cython
+, hypothesis
+, numpy
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "blis";
+ version = "0.2.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0c5hd0bim9134sk8wb31cqzvi9c380rbl5zwjiwrq8nnix8a2k1d";
+ };
+
+ nativeBuildInputs = [
+ cython
+ ];
+
+
+ checkInputs = [
+ cython
+ hypothesis
+ numpy
+ pytest
+ ];
+
+ meta = with stdenv.lib; {
+ description = "BLAS-like linear algebra library";
+ homepage = https://github.com/explosion/cython-blis;
+ license = licenses.mit;
+ maintainers = with maintainers; [ danieldk ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/blist/default.nix b/nixpkgs/pkgs/development/python-modules/blist/default.nix
new file mode 100644
index 00000000000..d6d55accaca
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/blist/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPyPy
+}:
+
+buildPythonPackage rec {
+ pname = "blist";
+ version = "1.3.6";
+ disabled = isPyPy;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1hqz9pqbwx0czvq9bjdqjqh5bwfksva1is0anfazig81n18c84is";
+ };
+
+ meta = with stdenv.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/nixpkgs/pkgs/development/python-modules/blivet/default.nix b/nixpkgs/pkgs/development/python-modules/blivet/default.nix
new file mode 100644
index 00000000000..1c86c02f7a8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/blivet/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchFromGitHub, buildPythonPackage, pykickstart, pyparted, pyblock
+, pyudev, six, libselinux, cryptsetup, multipath-tools, lsof, utillinux
+}:
+
+let
+ pyenable = { enablePython = true; };
+ selinuxWithPython = libselinux.override pyenable;
+ cryptsetupWithPython = cryptsetup.override pyenable;
+in 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|${utillinux}/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)"|"${utillinux}/bin/\1"|' blivet/util.py
+ '';
+
+ propagatedBuildInputs = [
+ pykickstart pyparted pyblock pyudev selinuxWithPython.py cryptsetupWithPython
+ six
+ ];
+
+ # Tests are in nixos/tests/blivet.nix.
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://fedoraproject.org/wiki/Blivet;
+ description = "Module for management of a system's storage configuration";
+ license = with licenses; [ gpl2Plus lgpl21Plus ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/block-io/default.nix b/nixpkgs/pkgs/development/python-modules/block-io/default.nix
new file mode 100644
index 00000000000..f90f3f9af75
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/block-io/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchPypi, buildPythonPackage, base58, ecdsa, pycryptodome, requests, six }:
+
+buildPythonPackage rec {
+ pname = "block-io";
+ version = "1.1.10";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ba2e750085d9da4d1567932f3f719974fdc3f02649ee0d5c2f85fce592208723";
+ };
+
+ propagatedBuildInputs = [
+ base58
+ ecdsa
+ pycryptodome
+ requests
+ six
+ ];
+
+ preConfigure = ''
+ substituteInPlace setup.py \
+ --replace "ecdsa==0.13" "ecdsa>=0.13"
+ '';
+
+ # Tests needs a BlockIO API key to run properly
+ # https://github.com/BlockIo/block_io-python/blob/79006bc8974544b70a2d8e9f19c759941d32648e/test.py#L18
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Integrate Bitcoin, Dogecoin and Litecoin in your Python applications using block.io";
+ homepage = https://github.com/BlockIo/block_io-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ nyanloutre ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/blockdiag/default.nix b/nixpkgs/pkgs/development/python-modules/blockdiag/default.nix
new file mode 100644
index 00000000000..7b67997fa08
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/blockdiag/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, buildPythonPackage, pep8, nose, unittest2, docutils
+, pillow, webcolors, funcparserlib
+}:
+
+buildPythonPackage rec {
+ pname = "blockdiag";
+ version = "1.5.3";
+
+ src = fetchurl {
+ url = "https://bitbucket.org/blockdiag/blockdiag/get/${version}.tar.bz2";
+ sha256 = "0r0qbmv0ijnqidsgm2rqs162y9aixmnkmzgnzgk52hiy7ydm4k8f";
+ };
+
+ buildInputs = [ pep8 nose unittest2 docutils ];
+
+ propagatedBuildInputs = [ pillow webcolors funcparserlib ];
+
+ # One test fails:
+ # ...
+ # FAIL: test_auto_font_detection (blockdiag.tests.test_boot_params.TestBootParams)
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Generate block-diagram image from spec-text file (similar to Graphviz)";
+ homepage = http://blockdiag.com/;
+ license = licenses.asl20;
+ platforms = platforms.unix;
+ maintainers = with maintainers; [ bjornfor ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/blockdiagcontrib-cisco/default.nix b/nixpkgs/pkgs/development/python-modules/blockdiagcontrib-cisco/default.nix
new file mode 100644
index 00000000000..6190adcba5f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/blockdiagcontrib-cisco/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, blockdiag
+}:
+
+buildPythonPackage rec {
+ pname = "blockdiagcontrib-cisco";
+ version = "0.1.8";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "06iw3q1w4g3lbgcmyz8m93rv0pfnk2gp8k83rs9ir671ym99gwr2";
+ };
+
+ buildInputs = [ blockdiag ];
+
+ meta = with stdenv.lib; {
+ description = "Noderenderer plugin for blockdiag containing Cisco networking symbols";
+ homepage = "https://bitbucket.org/blockdiag/blockdiag-contrib/";
+ maintainers = [ maintainers.bjornfor ];
+ license = licenses.psfl;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/bokeh/default.nix b/nixpkgs/pkgs/development/python-modules/bokeh/default.nix
new file mode 100644
index 00000000000..d5337122120
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bokeh/default.nix
@@ -0,0 +1,64 @@
+{ buildPythonPackage
+, fetchPypi
+, futures
+, isPy3k
+, isPyPy
+, jinja2
+, lib
+, mock
+, numpy
+, nodejs
+, pillow
+, pytest
+, python
+, python-dateutil
+, pyyaml
+, selenium
+, six
+, substituteAll
+, tornado
+}:
+
+buildPythonPackage rec {
+ pname = "bokeh";
+ version = "1.3.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0m27j29jpi977y95k272xc24qkl5bkniy046cil116hrbgnppng2";
+ };
+
+ patches = [
+ (substituteAll {
+ src = ./hardcode-nodejs-npmjs-paths.patch;
+ node_bin = "${nodejs}/bin/node";
+ npm_bin = "${nodejs}/bin/npm";
+ })
+ ];
+
+ disabled = isPyPy;
+
+ checkInputs = [ mock pytest pillow selenium ];
+
+ propagatedBuildInputs = [
+ pillow
+ jinja2
+ python-dateutil
+ six
+ pyyaml
+ tornado
+ numpy
+ ]
+ ++ lib.optionals ( !isPy3k ) [ futures ];
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover -s bokeh/tests
+ '';
+
+ meta = {
+ description = "Statistical and novel interactive HTML plots for Python";
+ homepage = https://github.com/bokeh/bokeh;
+ license = lib.licenses.bsd3;
+ maintainers = with lib.maintainers; [ orivej ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/bokeh/hardcode-nodejs-npmjs-paths.patch b/nixpkgs/pkgs/development/python-modules/bokeh/hardcode-nodejs-npmjs-paths.patch
new file mode 100644
index 00000000000..f8f33c0021f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bokeh/hardcode-nodejs-npmjs-paths.patch
@@ -0,0 +1,15 @@
+diff --git a/bokeh/util/compiler.py b/bokeh/util/compiler.py
+index a752aad7d..8af05ff63 100644
+--- a/bokeh/util/compiler.py
++++ b/bokeh/util/compiler.py
+@@ -442,8 +442,8 @@ def _detect_nodejs():
+ raise RuntimeError('node.js v%s or higher is needed to allow compilation of custom models ' % version +
+ '("conda install nodejs" or follow https://nodejs.org/en/download/)')
+
+-_nodejs = None
+-_npmjs = None
++_nodejs = "@node_bin@"
++_npmjs = "@npm_bin@"
+
+ def _nodejs_path():
+ global _nodejs
diff --git a/nixpkgs/pkgs/development/python-modules/boltons/default.nix b/nixpkgs/pkgs/development/python-modules/boltons/default.nix
new file mode 100644
index 00000000000..b5aa9e6cf03
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/boltons/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, pytest }:
+
+buildPythonPackage rec {
+ pname = "boltons";
+ version = "19.1.0";
+
+ # No tests in PyPi Tarball
+ src = fetchFromGitHub {
+ owner = "mahmoud";
+ repo = "boltons";
+ rev = version;
+ sha256 = "0b55wly0ksviyl3a4dmih9vzd7bj3p10gr6la4722cs9cx4128q5";
+ };
+
+ checkInputs = [ pytest ];
+ checkPhase = "pytest tests";
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/mahmoud/boltons;
+ description = "220+ constructs, recipes, and snippets extending (and relying on nothing but) 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
+ standard library, including:
+
+ - Atomic file saving, bolted on with fileutils
+ - A highly-optimized OrderedMultiDict, in dictutils
+ - Two types of PriorityQueue, in queueutils
+ - Chunked and windowed iteration, in iterutils
+ - Recursive data structure iteration and merging, with iterutils.remap
+ - Exponential backoff functionality, including jitter, through
+ iterutils.backoff
+ - A full-featured TracebackInfo type, for representing stack
+ traces, in tbutils
+ '';
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ twey ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/boltztrap2/default.nix b/nixpkgs/pkgs/development/python-modules/boltztrap2/default.nix
new file mode 100644
index 00000000000..50f2023418e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/boltztrap2/default.nix
@@ -0,0 +1,45 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, spglib
+, numpy
+, scipy
+, matplotlib
+, ase
+, netcdf4
+, pytest
+, pythonOlder
+, cython
+, cmake
+}:
+
+buildPythonPackage rec {
+ version = "19.7.3";
+ pname = "BoltzTraP2";
+ disabled = pythonOlder "3.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1hambr925ml2v2zcxnmnpi39395gl2928yac4p2kghk9xicymraw";
+ };
+
+ dontUseCmakeConfigure = true;
+
+ nativeBuildInputs = [ cmake cython ];
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ spglib numpy scipy matplotlib ase netcdf4 ];
+
+ # pypi release does no include files for tests
+ doCheck = false;
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://www.boltztrap.org/;
+ description = "Band-structure interpolator and transport coefficient calculator";
+ license = licenses.gpl3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/boolean-py/default.nix b/nixpkgs/pkgs/development/python-modules/boolean-py/default.nix
new file mode 100644
index 00000000000..cf35243f2b0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/boolean-py/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPythonPackage, fetchFromGitHub
+}:
+
+buildPythonPackage rec {
+ pname = "boolean.py";
+ version = "3.6";
+
+ src = fetchFromGitHub {
+ owner = "bastikr";
+ repo = "boolean.py";
+ rev = "v${version}";
+ sha256 = "1wc89y73va58cj7dsx6c199zpxsy9q53dsffsdj6zmc90inqz6qs";
+ };
+
+ meta = with lib; {
+ homepage = "https://github.com/bastikr/boolean.py";
+ description = "Implements boolean algebra in one module";
+ license = licenses.bsd2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/bootstrapped-pip/default.nix b/nixpkgs/pkgs/development/python-modules/bootstrapped-pip/default.nix
new file mode 100644
index 00000000000..d2f64a5e5a8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bootstrapped-pip/default.nix
@@ -0,0 +1,69 @@
+{ stdenv, python, fetchPypi, makeWrapper, unzip, makeSetupHook
+, pipInstallHook
+, setuptoolsBuildHook
+
+}:
+
+let
+ wheel_source = fetchPypi {
+ pname = "wheel";
+ version = "0.33.6";
+ format = "wheel";
+ sha256 = "f4da1763d3becf2e2cd92a14a7c920f0f00eca30fdde9ea992c836685b9faf28";
+ };
+ setuptools_source = fetchPypi {
+ pname = "setuptools";
+ version = "41.2.0";
+ format = "wheel";
+ sha256 = "4380abcf2a4ffd1a5ba22d687c6d690dce83b2b51c70e9c6d09f7e8c7e8040dc";
+ };
+
+in stdenv.mkDerivation rec {
+ pname = "pip";
+ version = "19.2.3";
+ name = "${python.libPrefix}-bootstrapped-${pname}-${version}";
+
+ src = fetchPypi {
+ inherit pname version;
+ format = "wheel";
+ sha256 = "340a0ba40fdeb16413914c0fcd8e0b4ebb0bf39a900ec80e11c05d836c05103f";
+ };
+
+ dontUseSetuptoolsBuild = true;
+
+ # Should be propagatedNativeBuildInputs
+ propagatedBuildInputs = [
+ # Override to remove dependencies to prevent infinite recursion.
+ (pipInstallHook.override{pip=null;})
+ (setuptoolsBuildHook.override{setuptools=null; wheel=null;})
+ ];
+
+ unpackPhase = ''
+ mkdir -p $out/${python.sitePackages}
+ unzip -d $out/${python.sitePackages} $src
+ unzip -d $out/${python.sitePackages} ${setuptools_source}
+ unzip -d $out/${python.sitePackages} ${wheel_source}
+ '';
+
+ postPatch = ''
+ mkdir -p $out/bin
+ '';
+
+ nativeBuildInputs = [ makeWrapper unzip ];
+ buildInputs = [ python ];
+
+ installPhase = ''
+
+ # install pip binary
+ echo '#!${python.interpreter}' > $out/bin/pip
+ echo 'import sys;from pip._internal import main' >> $out/bin/pip
+ echo 'sys.exit(main())' >> $out/bin/pip
+ chmod +x $out/bin/pip
+
+ # wrap binaries with PYTHONPATH
+ for f in $out/bin/*; do
+ wrapProgram $f --prefix PYTHONPATH ":" $out/${python.sitePackages}/
+ done
+ '';
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/boto/default.nix b/nixpkgs/pkgs/development/python-modules/boto/default.nix
new file mode 100644
index 00000000000..e58f071589a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/boto/default.nix
@@ -0,0 +1,38 @@
+{ pkgs
+, buildPythonPackage
+, fetchPypi
+, python
+, nose
+, mock
+, requests
+, httpretty
+}:
+
+buildPythonPackage rec {
+ pname = "boto";
+ version = "2.49.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ea0d3b40a2d852767be77ca343b58a9e3a4b00d9db440efb8da74b4e58025e5a";
+ };
+
+ checkPhase = ''
+ ${python.interpreter} tests/test.py default
+ '';
+
+ checkInputs = [ nose mock ];
+ propagatedBuildInputs = [ requests httpretty ];
+
+ meta = with pkgs.lib; {
+ homepage = https://github.com/boto/boto;
+ license = licenses.mit;
+ description = "Python interface to Amazon Web Services";
+ longDescription = ''
+ The boto module is an integrated interface to current and
+ future infrastructural services offered by Amazon Web
+ Services. This includes S3, SQS, EC2, among others.
+ '';
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/boto3/default.nix b/nixpkgs/pkgs/development/python-modules/boto3/default.nix
new file mode 100644
index 00000000000..34178befebe
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/boto3/default.nix
@@ -0,0 +1,48 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, botocore
+, jmespath
+, s3transfer
+, futures
+, docutils
+, nose
+, mock
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "boto3";
+ version = "1.9.205"; # N.B: if you change this, change botocore too
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1zxz1d6w3f4ip04bm26xplpxjhblc2vfmqcs5n63a9y1h43mk171";
+ };
+
+ 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;
+
+ 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/nixpkgs/pkgs/development/python-modules/botocore/default.nix b/nixpkgs/pkgs/development/python-modules/botocore/default.nix
new file mode 100644
index 00000000000..5c8b00fc6c1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/botocore/default.nix
@@ -0,0 +1,45 @@
+{ buildPythonPackage
+, fetchPypi
+, dateutil
+, jmespath
+, docutils
+, ordereddict
+, simplejson
+, mock
+, nose
+, urllib3
+}:
+
+buildPythonPackage rec {
+ pname = "botocore";
+ version = "1.12.205"; # N.B: if you change this, change boto3 and awscli to a matching version
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "19ls7hdmcaqrrq8przqy05s8chsy8315ic2zg185k6m64pvr0qhd";
+ };
+
+ propagatedBuildInputs = [
+ dateutil
+ jmespath
+ docutils
+ ordereddict
+ simplejson
+ urllib3
+ ];
+
+ checkInputs = [ mock nose ];
+
+ checkPhase = ''
+ nosetests -v
+ '';
+
+ # Network access
+ doCheck = false;
+
+ meta = {
+ homepage = https://github.com/boto/botocore;
+ license = "bsd";
+ description = "A low-level interface to a growing number of Amazon Web Services";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/bottle/default.nix b/nixpkgs/pkgs/development/python-modules/bottle/default.nix
new file mode 100644
index 00000000000..6e1eb5ced00
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bottle/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi, setuptools }:
+
+buildPythonPackage rec {
+ pname = "bottle";
+ version = "0.12.16";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "9c310da61e7df2b6ac257d8a90811899ccb3a9743e77e947101072a2e3186726";
+ };
+
+ propagatedBuildInputs = [ setuptools ];
+
+ meta = with stdenv.lib; {
+ homepage = http://bottlepy.org;
+ description = "A fast and simple micro-framework for small web-applications";
+ license = licenses.mit;
+ platforms = platforms.all;
+ maintainers = with maintainers; [ koral ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/bottleneck/default.nix b/nixpkgs/pkgs/development/python-modules/bottleneck/default.nix
new file mode 100644
index 00000000000..21492dc152c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bottleneck/default.nix
@@ -0,0 +1,26 @@
+{ buildPythonPackage
+, fetchPypi
+, nose
+, pytest
+, numpy
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "Bottleneck";
+ version = "1.2.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6efcde5f830aed64feafca0359b51db0e184c72af8ba6675b4a99f263922eb36";
+ };
+
+ checkInputs = [ pytest nose ];
+ propagatedBuildInputs = [ numpy ];
+ checkPhase = ''
+ py.test -p no:warnings $out/${python.sitePackages}
+ '';
+ postPatch = ''
+ substituteInPlace setup.py --replace "__builtins__.__NUMPY_SETUP__ = False" ""
+ '';
+}
diff --git a/nixpkgs/pkgs/development/python-modules/box2d/default.nix b/nixpkgs/pkgs/development/python-modules/box2d/default.nix
new file mode 100644
index 00000000000..5870bdcdb73
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/box2d/default.nix
@@ -0,0 +1,36 @@
+{ stdenv
+, 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 stdenv.lib; {
+ homepage = https://github.com/pybox2d/pybox2d;
+ description = ''
+ A 2D game physics library for Python under
+ the very liberal zlib license
+ '';
+ license = licenses.zlib;
+ maintainers = with maintainers; [ sepi ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/bpython/default.nix b/nixpkgs/pkgs/development/python-modules/bpython/default.nix
new file mode 100644
index 00000000000..c1d9a1a8f82
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bpython/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, buildPythonPackage, fetchPypi, pygments, greenlet, curtsies, urwid, requests, mock }:
+
+buildPythonPackage rec {
+ pname = "bpython";
+ version = "0.17.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8907c510bca3c4d9bc0a157279bdc5e3b739cc68c0f247167279b6fe4becb02f";
+ };
+
+ propagatedBuildInputs = [ curtsies greenlet pygments requests urwid ];
+
+ postInstall = ''
+ substituteInPlace "$out/share/applications/bpython.desktop" \
+ --replace "Exec=/usr/bin/bpython" "Exec=$out/bin/bpython"
+ '';
+
+ checkInputs = [ mock ];
+
+ # tests fail: https://github.com/bpython/bpython/issues/712
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A fancy curses interface to the Python interactive interpreter";
+ homepage = "https://bpython-interpreter.org/";
+ license = licenses.mit;
+ maintainers = with maintainers; [ flokli ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/braintree/default.nix b/nixpkgs/pkgs/development/python-modules/braintree/default.nix
new file mode 100644
index 00000000000..5b565555314
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/braintree/default.nix
@@ -0,0 +1,27 @@
+{ lib,
+ fetchPypi,
+ requests,
+ buildPythonPackage
+}:
+
+buildPythonPackage rec {
+ pname = "braintree";
+ version = "3.56.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1d1xv7b4s68yfa3snnvcjldj0q7v1izpyvqkv2c1k0w73hl657b5";
+ };
+
+ propagatedBuildInputs = [ requests ];
+
+ # pypi release does not include tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Python library for integration with Braintree";
+ homepage = https://github.com/braintree/braintree_python;
+ license = licenses.mit;
+ maintainers = [ maintainers.ivegotasthma ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/branca/default.nix b/nixpkgs/pkgs/development/python-modules/branca/default.nix
new file mode 100644
index 00000000000..c81233045c0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/branca/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+, jinja2
+, selenium
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "branca";
+ version = "0.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "3e762c9bdf40725f3d05ea1fda8fae9b470bfada6474e43a1242c8204a7bb15e";
+ };
+
+ checkInputs = [ pytest selenium ];
+ propagatedBuildInputs = [ jinja2 six ];
+
+ # Seems to require a browser
+ doCheck = false;
+
+ meta = {
+ description = "Generate complex HTML+JS pages with Python";
+ homepage = https://github.com/python-visualization/branca;
+ license = with lib.licenses; [ mit ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/breathe/default.nix b/nixpkgs/pkgs/development/python-modules/breathe/default.nix
new file mode 100644
index 00000000000..9a4a26e18b0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/breathe/default.nix
@@ -0,0 +1,23 @@
+{ lib, fetchPypi, buildPythonPackage, docutils, six, sphinx, isPy3k }:
+
+buildPythonPackage rec {
+ version = "4.13.0";
+ pname = "breathe";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "08xs1cqpvcv7735j19c35br34gbwzfn89rkg12n2yfz4af0x3xfp";
+ };
+
+ propagatedBuildInputs = [ docutils six sphinx ];
+
+ doCheck = !isPy3k;
+
+ meta = {
+ homepage = https://github.com/michaeljones/breathe;
+ license = lib.licenses.bsd3;
+ description = "Sphinx Doxygen renderer";
+ inherit (sphinx.meta) platforms;
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/broadlink/default.nix b/nixpkgs/pkgs/development/python-modules/broadlink/default.nix
new file mode 100644
index 00000000000..4633cb1ecfb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/broadlink/default.nix
@@ -0,0 +1,28 @@
+{ lib, fetchPypi, buildPythonPackage
+, pyaes, pycrc }:
+
+buildPythonPackage rec {
+ pname = "broadlink";
+ version = "0.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "10dnd859yjh1h6qrxhvkslbsj5fh5g654xsq2yqblkkv3xd711rs";
+ };
+
+ postPatch = ''
+ substituteInPlace setup.py \
+ --replace pyaes==1.6.0 pyaes
+ '';
+
+ propagatedBuildInputs = [ pyaes pycrc ];
+
+ # no tests available
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Python API for controlling Broadlink IR controllers";
+ homepage = https://github.com/mjg59/python-broadlink;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/brotli/default.nix b/nixpkgs/pkgs/development/python-modules/brotli/default.nix
new file mode 100644
index 00000000000..bec205676ba
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/brotli/default.nix
@@ -0,0 +1,28 @@
+{ lib, buildPythonPackage, fetchFromGitHub, pytest }:
+
+buildPythonPackage rec {
+ pname = "brotli";
+ version = "1.0.7";
+
+ # PyPI doesn't contain tests so let's use GitHub
+ src = fetchFromGitHub {
+ owner = "google";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "1811b55wdfg4kbsjcgh1kc938g118jpvif97ilgrmbls25dfpvvw";
+ };
+
+ dontConfigure = true;
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ pytest python/tests
+ '';
+
+ meta = {
+ homepage = https://github.com/google/brotli;
+ description = "Generic-purpose lossless compression algorithm";
+ license = lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/brotlipy/default.nix b/nixpkgs/pkgs/development/python-modules/brotlipy/default.nix
new file mode 100644
index 00000000000..1dd2a070480
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/brotlipy/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, cffi
+, enum34
+, construct
+, pytest
+, hypothesis
+}:
+
+buildPythonPackage rec {
+ pname = "brotlipy";
+ version = "0.7.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "36def0b859beaf21910157b4c33eb3b06d8ce459c942102f16988cca6ea164df";
+ };
+
+ propagatedBuildInputs = [ cffi enum34 construct ];
+
+ checkInputs = [ pytest hypothesis ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ # Missing test files
+ doCheck = false;
+
+ meta = {
+ description = "Python bindings for the reference Brotli encoder/decoder";
+ homepage = "https://github.com/python-hyper/brotlipy/";
+ license = lib.licenses.mit;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/browser-cookie3/default.nix b/nixpkgs/pkgs/development/python-modules/browser-cookie3/default.nix
new file mode 100644
index 00000000000..807dafab436
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/browser-cookie3/default.nix
@@ -0,0 +1,24 @@
+{ lib, fetchPypi, buildPythonPackage, isPy3k, keyring, pbkdf2, pyaes}:
+buildPythonPackage rec {
+ pname = "browser-cookie3";
+ version = "0.7.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1f24hsclg1wz2i8aiam91l06qqy0plxhwl615l4qkg35mbw4ry7h";
+ };
+
+ disabled = !isPy3k;
+
+ propagatedBuildInputs = [ keyring pbkdf2 pyaes ];
+
+ # No tests implemented
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Loads cookies from your browser into a cookiejar object";
+ maintainers = with maintainers; [ borisbabic ];
+ homepage = https://github.com/borisbabic/browser_cookie3;
+ license = licenses.gpl3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/browsermob-proxy/default.nix b/nixpkgs/pkgs/development/python-modules/browsermob-proxy/default.nix
new file mode 100644
index 00000000000..b5da73a32d2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/browsermob-proxy/default.nix
@@ -0,0 +1,24 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, requests
+}:
+
+buildPythonPackage rec {
+ pname = "browsermob-proxy";
+ version = "0.8.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1bxvmghm834gsfz3pm69772wzhh15p8ci526b25dpk3z4315nd7v";
+ };
+
+ propagatedBuildInputs = [ requests ];
+
+ meta = {
+ description = "A library for interacting with Browsermob Proxy";
+ homepage = http://oss.theautomatedtester.co.uk/browsermob-proxy-py;
+ license = lib.licenses.asl20;
+ maintainers = with lib.maintainers; [ raskin ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/bsddb3/default.nix b/nixpkgs/pkgs/development/python-modules/bsddb3/default.nix
new file mode 100644
index 00000000000..a286249ea0f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bsddb3/default.nix
@@ -0,0 +1,38 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pkgs
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "bsddb3";
+ version = "6.2.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "42d621f4037425afcb16b67d5600c4556271a071a9a7f7f2c2b1ba65bc582d05";
+ };
+
+ buildInputs = [ pkgs.db ];
+
+ checkPhase = ''
+ ${python.interpreter} test.py
+ '';
+
+ # Path to database need to be set.
+ # Somehow the setup.py flag is not propagated.
+ #setupPyBuildFlags = [ "--berkeley-db=${pkgs.db}" ];
+ # We can also use a variable
+ preConfigure = ''
+ export BERKELEYDB_DIR=${pkgs.db.dev};
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Python bindings for Oracle Berkeley DB";
+ homepage = https://www.jcea.es/programacion/pybsddb.htm;
+ license = with licenses; [ agpl3 ]; # License changed from bsd3 to agpl3 since 6.x
+ maintainers = [ maintainers.costrouc ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/bt-proximity/default.nix b/nixpkgs/pkgs/development/python-modules/bt-proximity/default.nix
new file mode 100644
index 00000000000..f998ebca06d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bt-proximity/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub
+, pybluez }:
+
+buildPythonPackage {
+ pname = "bt-proximity";
+ version = "0.0.20180217";
+
+ # pypi only has a pre-compiled wheel and no sources
+ src = fetchFromGitHub {
+ owner = "FrederikBolding";
+ repo = "bluetooth-proximity";
+ rev = "463bade8a9080b47f09bf4a47830b31c69c5dffd";
+ sha256 = "0anfh90cj3c2g7zqrjvq0d6dzpb4hjl6gk8zw0r349j2zw9i4h7y";
+ };
+
+ propagatedBuildInputs = [ pybluez ];
+
+ # there are no tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Bluetooth Proximity Detection using Python";
+ homepage = https://github.com/FrederikBolding/bluetooth-proximity;
+ maintainers = with maintainers; [ peterhoeg ];
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/btchip/default.nix b/nixpkgs/pkgs/development/python-modules/btchip/default.nix
new file mode 100644
index 00000000000..069358a4d6d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/btchip/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi, hidapi, pyscard, ecdsa }:
+
+buildPythonPackage rec {
+ pname = "btchip-python";
+ version = "0.1.28";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "10yxwlsr99gby338rsnczkfigcy36fiajpkr6f44438qlvbx02fs";
+ };
+
+ propagatedBuildInputs = [ hidapi pyscard ecdsa ];
+
+ # tests requires hardware
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Python communication library for Ledger Hardware Wallet products";
+ homepage = "https://github.com/LedgerHQ/btchip-python";
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/btrees/default.nix b/nixpkgs/pkgs/development/python-modules/btrees/default.nix
new file mode 100644
index 00000000000..828e243af9c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/btrees/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, fetchPypi
+, buildPythonPackage
+, persistent
+, zope_interface
+, transaction
+, zope_testrunner
+}:
+
+buildPythonPackage rec {
+ pname = "BTrees";
+ version = "4.6.0";
+
+ buildInputs = [ transaction ];
+ propagatedBuildInputs = [ persistent zope_interface ];
+ checkInputs = [ zope_testrunner ];
+
+ # disable a failing test that looks broken
+ postPatch = ''
+ substituteInPlace BTrees/tests/common.py \
+ --replace "testShortRepr" "no_testShortRepr"
+ '';
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0bmkpg6z5z47p21340nyrfbdv2jkfp80yv085ndgbwaas1zi7ac9";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Scalable persistent components";
+ homepage = http://packages.python.org/BTrees;
+ license = licenses.zpl21;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/bugwarrior/default.nix b/nixpkgs/pkgs/development/python-modules/bugwarrior/default.nix
new file mode 100644
index 00000000000..74df8a6b628
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bugwarrior/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, mock, unittest2, nose
+, twiggy, requests, offtrac, bugzilla, taskw, dateutil, pytz, keyring, six
+, jinja2, pycurl, dogpile_cache, lockfile, click, pyxdg, future }:
+
+buildPythonPackage rec {
+ pname = "bugwarrior";
+ version = "1.7.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1pmznka5dxcdjfak0p1yh7lhfbfazmx8g9ysv57lsrkqy4n61qks";
+ };
+
+ buildInputs = [ mock unittest2 nose /* jira megaplan */ ];
+ propagatedBuildInputs = [
+ twiggy requests offtrac bugzilla taskw dateutil pytz keyring six
+ jinja2 pycurl dogpile_cache lockfile click pyxdg future
+ ];
+
+ # for the moment jira>=0.22 and megaplan>=1.4 are missing for running the test suite.
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/ralphbean/bugwarrior;
+ description = "Sync github, bitbucket, bugzilla, and trac issues with taskwarrior";
+ license = licenses.gpl3Plus;
+ platforms = platforms.all;
+ maintainers = with maintainers; [ pierron ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/bugz/default.nix b/nixpkgs/pkgs/development/python-modules/bugz/default.nix
new file mode 100644
index 00000000000..57ec3728574
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bugz/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+}:
+
+buildPythonPackage {
+ pname = "bugz-0.9.3";
+ version = "0.13";
+
+ src = fetchFromGitHub {
+ owner = "williamh";
+ repo = "pybugz";
+ rev = "0.13";
+ sha256 = "1nw07q7r078dp82rcrhvvnhmnaqjx6f8a6cdjgrsiy6fryrx9dwz";
+ };
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = http://www.liquidx.net/pybugz/;
+ description = "Command line interface for Bugzilla";
+ license = licenses.gpl2;
+ maintainers = [ maintainers.costrouc ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/bugzilla/default.nix b/nixpkgs/pkgs/development/python-modules/bugzilla/default.nix
new file mode 100644
index 00000000000..52d42b7a263
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bugzilla/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, pep8, coverage, logilab_common, requests }:
+
+buildPythonPackage rec {
+ pname = "bugzilla";
+ version = "2.2.0";
+
+ src = fetchPypi {
+ pname = "python-${pname}";
+ inherit version;
+ sha256 = "0x3jjb1g5bgjdj0jf0jmcg80hn5x2isf49frwvf2ykdl3fxd5gxc";
+ };
+
+ buildInputs = [ pep8 coverage logilab_common ];
+ propagatedBuildInputs = [ requests ];
+
+ preCheck = ''
+ mkdir -p check-phase
+ export HOME=$(pwd)/check-phase
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/python-bugzilla/python-bugzilla;
+ description = "Bugzilla XMLRPC access module";
+ license = licenses.gpl2;
+ platforms = platforms.all;
+ maintainers = with maintainers; [ pierron peti ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/buildbot/default.nix b/nixpkgs/pkgs/development/python-modules/buildbot/default.nix
new file mode 100644
index 00000000000..c19fc280c7f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/buildbot/default.nix
@@ -0,0 +1,102 @@
+{ stdenv, lib, buildPythonPackage, fetchPypi, makeWrapper, isPy3k,
+ python, twisted, jinja2, zope_interface, future, sqlalchemy,
+ sqlalchemy_migrate, dateutil, txaio, autobahn, pyjwt, pyyaml, treq,
+ txrequests, pyjade, boto3, moto, mock, python-lz4, setuptoolsTrial,
+ isort, pylint, flake8, buildbot-worker, buildbot-pkg, parameterized,
+ git, glibcLocales }:
+
+let
+ withPlugins = plugins: buildPythonPackage {
+ name = "${package.name}-with-plugins";
+ phases = [ "installPhase" "fixupPhase" ];
+ buildInputs = [ makeWrapper ];
+ propagatedBuildInputs = plugins ++ package.propagatedBuildInputs;
+
+ installPhase = ''
+ makeWrapper ${package}/bin/buildbot $out/bin/buildbot \
+ --prefix PYTHONPATH : "${package}/${python.sitePackages}:$PYTHONPATH"
+ ln -sfv ${package}/lib $out/lib
+ '';
+
+ passthru = package.passthru // {
+ withPlugins = morePlugins: withPlugins (morePlugins ++ plugins);
+ };
+ };
+
+ package = buildPythonPackage rec {
+ pname = "buildbot";
+ version = "2.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "141ad2g1j5y0n5cdnd18m55ss0gqjlz5ky85rb6qfn73dgw42vmz";
+ };
+
+ propagatedBuildInputs = [
+ # core
+ twisted
+ jinja2
+ zope_interface
+ sqlalchemy
+ sqlalchemy_migrate
+ dateutil
+ txaio
+ autobahn
+ pyjwt
+ pyyaml
+
+ # tls
+ twisted.extras.tls
+ ];
+
+ checkInputs = [
+ treq
+ txrequests
+ pyjade
+ boto3
+ moto
+ mock
+ python-lz4
+ setuptoolsTrial
+ isort
+ pylint
+ flake8
+ buildbot-worker
+ buildbot-pkg
+ parameterized
+ git
+ glibcLocales
+ ];
+
+ patches = [
+ # This patch disables the test that tries to read /etc/os-release which
+ # is not accessible in sandboxed builds.
+ ./skip_test_linux_distro.patch
+ ];
+
+ postPatch = ''
+ substituteInPlace buildbot/scripts/logwatcher.py --replace '/usr/bin/tail' "$(type -P tail)"
+ '';
+
+ # TimeoutErrors on slow machines -> aarch64
+ doCheck = !stdenv.isAarch64;
+
+ preCheck = ''
+ export LC_ALL="en_US.UTF-8"
+ export PATH="$out/bin:$PATH"
+ '';
+
+ disabled = !isPy3k;
+
+ passthru = {
+ inherit withPlugins;
+ };
+
+ meta = with lib; {
+ homepage = http://buildbot.net/;
+ description = "Buildbot is an open-source continuous integration framework for automating software build, test, and release processes";
+ maintainers = with maintainers; [ nand0p ryansydnor lopsided98 ];
+ license = licenses.gpl2;
+ };
+ };
+in package
diff --git a/nixpkgs/pkgs/development/python-modules/buildbot/pkg.nix b/nixpkgs/pkgs/development/python-modules/buildbot/pkg.nix
new file mode 100644
index 00000000000..dababe48e99
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/buildbot/pkg.nix
@@ -0,0 +1,24 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "buildbot-pkg";
+ version = "2.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0na336jwibgbix8fr4jki1gqys44kkm0a8q32llcr2z08igs4mvy";
+ };
+
+ postPatch = ''
+ # Their listdir function filters out `node_modules` folders.
+ # Do we have to care about that with Nix...?
+ substituteInPlace buildbot_pkg.py --replace "os.listdir = listdir" ""
+ '';
+
+ meta = with lib; {
+ homepage = http://buildbot.net/;
+ description = "Buildbot Packaging Helper";
+ maintainers = with maintainers; [ nand0p ryansydnor lopsided98 ];
+ license = licenses.gpl2;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/buildbot/plugins.nix b/nixpkgs/pkgs/development/python-modules/buildbot/plugins.nix
new file mode 100644
index 00000000000..e31085a2498
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/buildbot/plugins.nix
@@ -0,0 +1,102 @@
+{ lib, buildPythonPackage, fetchPypi, buildbot, buildbot-pkg, mock }:
+
+{
+ www = buildPythonPackage rec {
+ pname = "buildbot-www";
+ inherit (buildbot-pkg) version;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0g3m5z8yska245r1x9n85b4br8b63i4zca2qn3qspf62b1wzmxmd";
+ };
+
+ buildInputs = [ buildbot buildbot-pkg mock ];
+
+ meta = with lib; {
+ homepage = http://buildbot.net/;
+ description = "Buildbot UI";
+ maintainers = with maintainers; [ nand0p ryansydnor lopsided98 ];
+ license = licenses.gpl2;
+ };
+ };
+
+ console-view = buildPythonPackage rec {
+ pname = "buildbot-console-view";
+ inherit (buildbot-pkg) version;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0p7az9mb09c4bl0j37w28wflzygq9vy8rjbbnhlfbs6py6mjdagr";
+ };
+
+ buildInputs = [ buildbot-pkg ];
+ checkInputs = [ buildbot ];
+
+ meta = with lib; {
+ homepage = http://buildbot.net/;
+ description = "Buildbot Console View Plugin";
+ maintainers = with maintainers; [ nand0p ryansydnor lopsided98 ];
+ license = licenses.gpl2;
+ };
+ };
+
+ waterfall-view = buildPythonPackage rec {
+ pname = "buildbot-waterfall-view";
+ inherit (buildbot-pkg) version;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0ba0a7q7ii7sipvifxs9ldkcs4b975skndarmirbphc797993hj1";
+ };
+
+ buildInputs = [ buildbot-pkg ];
+ checkInputs = [ buildbot ];
+
+ meta = with lib; {
+ homepage = http://buildbot.net/;
+ description = "Buildbot Waterfall View Plugin";
+ maintainers = with maintainers; [ nand0p ryansydnor lopsided98 ];
+ license = licenses.gpl2;
+ };
+ };
+
+ grid-view = buildPythonPackage rec {
+ pname = "buildbot-grid-view";
+ inherit (buildbot-pkg) version;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0dvchhjzmfbbrxqm8dlmwck22z99pgnflxk3cyn0wbb1qskhd9cv";
+ };
+
+ buildInputs = [ buildbot-pkg ];
+ checkInputs = [ buildbot ];
+
+ meta = with lib; {
+ homepage = http://buildbot.net/;
+ description = "Buildbot Grid View Plugin";
+ maintainers = with maintainers; [ nand0p lopsided98 ];
+ license = licenses.gpl2;
+ };
+ };
+
+ wsgi-dashboards = buildPythonPackage rec {
+ pname = "buildbot-wsgi-dashboards";
+ inherit (buildbot-pkg) version;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0w9p3y89rqsmqiacwj2avir42r0xjr2yri14v3ay6yar5391r8wa";
+ };
+
+ buildInputs = [ buildbot-pkg ];
+ checkInputs = [ buildbot ];
+
+ meta = with lib; {
+ homepage = http://buildbot.net/;
+ description = "Buildbot WSGI dashboards Plugin";
+ maintainers = with maintainers; [ lopsided98 ];
+ license = licenses.gpl2;
+ };
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/buildbot/skip_test_linux_distro.patch b/nixpkgs/pkgs/development/python-modules/buildbot/skip_test_linux_distro.patch
new file mode 100644
index 00000000000..8fe5c7b56b4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/buildbot/skip_test_linux_distro.patch
@@ -0,0 +1,11 @@
+diff -Nur buildbot-0.9.6/buildbot/test/unit/test_buildbot_net_usage_data.py buildbot-0.9.6.patched/buildbot/test/unit/test_buildbot_net_usage_data.py
+--- buildbot-0.9.6/buildbot/test/unit/test_buildbot_net_usage_data.py 2017-04-19 16:57:02.000000000 +0200
++++ buildbot-0.9.6.patched/buildbot/test/unit/test_buildbot_net_usage_data.py 2017-05-04 12:22:54.575762551 +0200
+@@ -147,6 +147,7 @@
+ _sendBuildbotNetUsageData({'foo': 'bar'})
+
+ def test_linux_distro(self):
++ raise SkipTest("NixOS sandboxed builds hides /etc/os-release")
+ system = platform.system()
+ if system != "Linux":
+ raise SkipTest("test is only for linux")
diff --git a/nixpkgs/pkgs/development/python-modules/buildbot/worker.nix b/nixpkgs/pkgs/development/python-modules/buildbot/worker.nix
new file mode 100644
index 00000000000..8cfc56678c0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/buildbot/worker.nix
@@ -0,0 +1,28 @@
+{ lib, buildPythonPackage, fetchPypi, setuptoolsTrial, mock, twisted, future,
+ coreutils }:
+
+buildPythonPackage (rec {
+ pname = "buildbot-worker";
+ version = "2.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "04dk1jg0yq0rcm7j7pn7l1pqqjhiyvwppnhc1b7106sx2cdj2yb2";
+ };
+
+ propagatedBuildInputs = [ twisted future ];
+
+ checkInputs = [ setuptoolsTrial mock ];
+
+ postPatch = ''
+ substituteInPlace buildbot_worker/scripts/logwatcher.py \
+ --replace /usr/bin/tail "${coreutils}/bin/tail"
+ '';
+
+ meta = with lib; {
+ homepage = http://buildbot.net/;
+ description = "Buildbot Worker Daemon";
+ maintainers = with maintainers; [ nand0p ryansydnor lopsided98 ];
+ license = licenses.gpl2;
+ };
+})
diff --git a/nixpkgs/pkgs/development/python-modules/buildout-nix/default.nix b/nixpkgs/pkgs/development/python-modules/buildout-nix/default.nix
new file mode 100644
index 00000000000..70dd13cf3b4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/buildout-nix/default.nix
@@ -0,0 +1,22 @@
+{ fetchPypi, stdenv, buildPythonPackage }:
+
+buildPythonPackage rec {
+ pname = "zc.buildout";
+ version = "2.13.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "3d14d07226963a517295dfad5879d2799e2e3b65b2c61c71b53cb80f5ab11484";
+ };
+
+ patches = [ ./nix.patch ];
+
+ postInstall = "mv $out/bin/buildout{,-nix}";
+
+ meta = {
+ homepage = http://www.buildout.org;
+ description = "A software build and configuration system";
+ license = stdenv.lib.licenses.zpl21;
+ maintainers = [ stdenv.lib.maintainers.goibhniu ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/buildout-nix/nix.patch b/nixpkgs/pkgs/development/python-modules/buildout-nix/nix.patch
new file mode 100644
index 00000000000..49f3c6d90f0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/buildout-nix/nix.patch
@@ -0,0 +1,28 @@
+--- a/src/zc/buildout/buildout.py 2017-08-18 10:06:24.946428977 +0300
++++ b/src/zc/buildout/buildout.py 2017-08-18 10:08:49.115613364 +0300
+@@ -382,6 +382,10 @@
+ if k not in versions
+ ))
+
++ # Override versions with available (nix) system packages
++ for dist in pkg_resources.working_set:
++ versions[dist.project_name] = SectionKey(dist.version, dist.location)
++
+ # Absolutize some particular directory, handling also the ~/foo form,
+ # and considering the location of the configuration file that generated
+ # the setting as the base path, falling back to the main configuration
+--- a/src/zc/buildout/easy_install.py 2017-08-18 10:06:24.948428980 +0300
++++ b/src/zc/buildout/easy_install.py 2017-08-18 10:07:37.462521740 +0300
+@@ -321,6 +321,12 @@
+
+ def _satisfied(self, req, source=None):
+ dists = [dist for dist in self._env[req.project_name] if dist in req]
++ try:
++ dists = ([dist for dist in dists
++ if dist.precedence == pkg_resources.DEVELOP_DIST]
++ + [pkg_resources.get_distribution(req.project_name)])
++ except pkg_resources.DistributionNotFound:
++ pass
+ if not dists:
+ logger.debug('We have no distributions for %s that satisfies %r.',
+ req.project_name, str(req))
diff --git a/nixpkgs/pkgs/development/python-modules/buildout/default.nix b/nixpkgs/pkgs/development/python-modules/buildout/default.nix
new file mode 100644
index 00000000000..419e8dce212
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/buildout/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "zc.buildout";
+ version = "2.13.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0a73s5q548l2vs2acqs3blkzd9sw6d7ci77fz1pc9156vn3dxm2x";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = http://www.buildout.org;
+ description = "A software build and configuration system";
+ license = licenses.zpl21;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/bumps/default.nix b/nixpkgs/pkgs/development/python-modules/bumps/default.nix
new file mode 100644
index 00000000000..d8fc3d99235
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bumps/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi, six}:
+
+buildPythonPackage rec {
+ pname = "bumps";
+ version = "0.7.11";
+
+ propagatedBuildInputs = [six];
+
+ # Bumps does not provide its own tests.py, so the test
+ # always fails
+ doCheck = false;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "16d24a7f965592d9b02f96e68e6aa70d6fb59abe4db37bb14c4b60c509a3c2ef";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = http://www.reflectometry.org/danse/software.html;
+ description = "Data fitting with bayesian uncertainty analysis";
+ maintainers = with maintainers; [ rprospero ];
+ license = licenses.publicDomain;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/bunch/default.nix b/nixpkgs/pkgs/development/python-modules/bunch/default.nix
new file mode 100644
index 00000000000..42918f02339
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bunch/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "bunch";
+ version = "1.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1akalx2pd1fjlvrq69plvcx783ppslvikqdm93z2sdybq07pmish";
+ };
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/bz2file/default.nix b/nixpkgs/pkgs/development/python-modules/bz2file/default.nix
new file mode 100644
index 00000000000..8efb1c083f2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/bz2file/default.nix
@@ -0,0 +1,23 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "bz2file";
+ version = "0.98";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "126s53fkpx04f33a829yqqk8fj4png3qwg4m66cvlmhmwc8zihb4";
+ };
+
+ doCheck = false;
+ # The test module (test_bz2file) is not available
+
+ meta = {
+ description = "Bz2file is a Python library for reading and writing bzip2-compressed files";
+ license = lib.licenses.asl20;
+ maintainers = with lib.maintainers; [ jyp ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cachecontrol/default.nix b/nixpkgs/pkgs/development/python-modules/cachecontrol/default.nix
new file mode 100644
index 00000000000..7fedf8c5461
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cachecontrol/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, requests
+, msgpack
+, pytest
+}:
+
+buildPythonPackage rec {
+ version = "0.12.5";
+ pname = "CacheControl";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "cef77effdf51b43178f6a2d3b787e3734f98ade253fa3187f3bb7315aaa42ff7";
+ };
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ requests msgpack ];
+
+ # tests not included with pypi release
+ doCheck = false;
+
+ checkPhase = ''
+ pytest tests
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/ionrock/cachecontrol;
+ description = "Httplib2 caching for requests";
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cached-property/default.nix b/nixpkgs/pkgs/development/python-modules/cached-property/default.nix
new file mode 100644
index 00000000000..3a3e6d1e6dd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cached-property/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytest
+, freezegun
+}:
+
+buildPythonPackage rec {
+ pname = "cached-property";
+ version = "1.5.1";
+
+ # conftest.py is missing in PyPI tarball
+ src = fetchFromGitHub {
+ owner = "pydanny";
+ repo = pname;
+ rev = version;
+ sha256 = "0xh0pwmiikx0il9nnfyf034ydmlw6992s0d209agd9j5d3s2k5q6";
+ };
+
+ checkInputs = [ pytest freezegun ];
+
+ # https://github.com/pydanny/cached-property/issues/131
+ checkPhase = ''
+ py.test -k "not test_threads_ttl_expiry"
+ '';
+
+ meta = {
+ description = "A decorator for caching properties in classes";
+ homepage = https://github.com/pydanny/cached-property;
+ license = lib.licenses.bsd3;
+ platforms = lib.platforms.unix;
+ maintainers = with lib.maintainers; [ ericsagnes ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cachelib/default.nix b/nixpkgs/pkgs/development/python-modules/cachelib/default.nix
new file mode 100644
index 00000000000..703f3797d1b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cachelib/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "cachelib";
+ version = "0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "13dfv0a4ahgx0wmpqv8jqhshim4229p9c1c7gcsra81pkm89p24b";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/pallets/cachelib";
+ description = "Collection of cache libraries in the same API interface";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ gebner ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cachetools/default.nix b/nixpkgs/pkgs/development/python-modules/cachetools/default.nix
new file mode 100644
index 00000000000..51bf0e753a9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cachetools/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "cachetools";
+ version = "3.1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8ea2d3ce97850f31e4a08b0e2b5e6c34997d7216a9d2c98e0f3978630d4da69a";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Extensible memoizing collections and decorators";
+ homepage = "https://github.com/tkem/cachetools";
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cachy/default.nix b/nixpkgs/pkgs/development/python-modules/cachy/default.nix
new file mode 100644
index 00000000000..029a1864484
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cachy/default.nix
@@ -0,0 +1,33 @@
+{ lib, buildPythonPackage, fetchPypi
+, redis
+, memcached
+, msgpack-python
+}:
+
+buildPythonPackage rec {
+ pname = "cachy";
+ version = "0.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0v6mjyhgx6j7ya20bk69cr3gdzdkdf6psay0h090rscclgji65dp";
+ };
+
+ propagatedBuildInputs = [
+ redis
+ memcached
+ msgpack-python
+ ];
+
+ # The Pypi tarball doesn't include tests, and the GitHub source isn't
+ # buildable until we bootstrap poetry, see
+ # https://github.com/NixOS/nixpkgs/pull/53599#discussion_r245855665
+ doCheck = false;
+
+ meta = with lib; {
+ homepage = https://github.com/sdispater/cachy;
+ description = "Cachy provides a simple yet effective caching library";
+ license = licenses.mit;
+ maintainers = with maintainers; [ jakewaksbaum ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cairocffi/0_9.nix b/nixpkgs/pkgs/development/python-modules/cairocffi/0_9.nix
new file mode 100644
index 00000000000..bd7bde42901
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cairocffi/0_9.nix
@@ -0,0 +1,26 @@
+# FIXME: make gdk-pixbuf dependency optional
+{ stdenv
+, buildPythonPackage
+, pythonOlder
+, fetchPypi
+, lib
+, substituteAll
+, makeFontsConf
+, freefont_ttf
+, pytest
+, pytestrunner
+, glibcLocales
+, cairo
+, cffi
+, withXcffib ? false, xcffib
+, python
+, glib
+, gdk-pixbuf
+}@args:
+
+import ./generic.nix ({
+ version = "0.9.0";
+ sha256 = "15386c3a9e08823d6826c4491eaccc7b7254b1dc587a3b9ce60c350c3f990337";
+ dlopen_patch = ./dlopen-paths-0.9.patch;
+ inherit withXcffib;
+} // args)
diff --git a/nixpkgs/pkgs/development/python-modules/cairocffi/default.nix b/nixpkgs/pkgs/development/python-modules/cairocffi/default.nix
new file mode 100644
index 00000000000..574aeefa7fc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cairocffi/default.nix
@@ -0,0 +1,27 @@
+# FIXME: make gdk-pixbuf dependency optional
+{ stdenv
+, buildPythonPackage
+, pythonOlder
+, fetchPypi
+, lib
+, substituteAll
+, makeFontsConf
+, freefont_ttf
+, pytest
+, pytestrunner
+, glibcLocales
+, cairo
+, cffi
+, withXcffib ? false, xcffib
+, python
+, glib
+, gdk-pixbuf
+}@args:
+
+import ./generic.nix ({
+ version = "1.1.0";
+ sha256 = "1nq53f5jipgy9jgyfxp43j40qfbmrhgn1cj8bp5rrb3liy3wbh7i";
+ dlopen_patch = ./dlopen-paths.patch;
+ disabled = pythonOlder "3.5";
+ inherit withXcffib;
+} // args)
diff --git a/nixpkgs/pkgs/development/python-modules/cairocffi/dlopen-paths-0.9.patch b/nixpkgs/pkgs/development/python-modules/cairocffi/dlopen-paths-0.9.patch
new file mode 100644
index 00000000000..307cb428c07
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cairocffi/dlopen-paths-0.9.patch
@@ -0,0 +1,47 @@
+commit 705dc9a55bd160625d9996e63fc7dc532d0ad0ab
+Author: Alexander V. Nikolaev <avn@avnik.info>
+Date: Sat Feb 6 08:09:06 2016 +0200
+
+ Patch dlopen() to allow direct paths to all required libs
+
+ This patch is NixOS specific
+
+diff --git a/cairocffi/__init__.py b/cairocffi/__init__.py
+index 718aa7f..1a1dcff 100644
+--- a/cairocffi/__init__.py
++++ b/cairocffi/__init__.py
+@@ -27,20 +27,22 @@ VERSION = '0.7.2'
+ version = '1.10.0'
+ version_info = (1, 10, 0)
+
++# Use hardcoded soname, because ctypes.util use gcc/objdump which shouldn't be required for runtime
++_LIBS = {
++ 'cairo': '@cairo@/lib/libcairo@ext@',
++ 'glib-2.0': '@glib@/lib/libglib-2.0@ext@',
++ 'gobject-2.0': '@glib@/lib/libgobject-2.0@ext@',
++ 'gdk_pixbuf-2.0': '@gdk_pixbuf@/lib/libgdk_pixbuf-2.0@ext@',
++}
+
+-def dlopen(ffi, *names):
++def dlopen(ffi, name, *names):
+ """Try various names for the same library, for different platforms."""
+- for name in names:
+- for lib_name in [name, 'lib' + name]:
+- try:
+- path = ctypes.util.find_library(lib_name)
+- if path:
+- lib = ffi.dlopen(path)
+- if lib:
+- return lib
+- except OSError:
+- pass
+- raise OSError("dlopen() failed to load a library: %s" % ' / '.join(names))
++ path = _LIBS.get(name, None)
++ if path:
++ lib = ffi.dlopen(path)
++ if lib:
++ return lib
++ raise OSError("dlopen() failed to load a library: %s as %s" % (name, path))
+
+
+ cairo = dlopen(ffi, 'cairo', 'cairo-2')
diff --git a/nixpkgs/pkgs/development/python-modules/cairocffi/dlopen-paths.patch b/nixpkgs/pkgs/development/python-modules/cairocffi/dlopen-paths.patch
new file mode 100644
index 00000000000..6542b4367eb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cairocffi/dlopen-paths.patch
@@ -0,0 +1,61 @@
+Patch dlopen() to allow direct paths to all required libs
+
+This is an update of the patch submitted in
+https://github.com/NixOS/nixpkgs/commit/b13e44e094989d3a902f8c73b22e8d3c0cc7acf4
+by Alexander V. Nikolaev <avn@avnik.info>
+
+---
+ cairocffi/__init__.py | 34 ++++++++++++++++------------------
+ 1 file changed, 16 insertions(+), 18 deletions(-)
+
+diff --git a/cairocffi/__init__.py b/cairocffi/__init__.py
+index 307d58c..43c29e3 100644
+--- a/cairocffi/__init__.py
++++ b/cairocffi/__init__.py
+@@ -21,28 +21,26 @@ VERSION = __version__ = (Path(__file__).parent / 'VERSION').read_text().strip()
+ version = '1.17.2'
+ version_info = (1, 17, 2)
+
++# Use hardcoded soname, because ctypes.util use gcc/objdump which shouldn't be
++# required for runtime
++_LIBS = {
++ '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, library_names, filenames):
+ """Try various names for the same library, for different platforms."""
+- exceptions = []
+-
+ for library_name in library_names:
+- library_filename = find_library(library_name)
+- if library_filename:
+- filenames = (library_filename,) + filenames
+- else:
+- exceptions.append(
+- 'no library called "{}" was found'.format(library_name))
+-
+- for filename in filenames:
+- try:
+- return ffi.dlopen(filename)
+- except OSError as exception: # pragma: no cover
+- exceptions.append(exception)
+-
+- error_message = '\n'.join( # pragma: no cover
+- str(exception) for exception in exceptions)
+- raise OSError(error_message) # pragma: no cover
++ path = _LIBS.get(library_name, None)
++ if path:
++ lib = ffi.dlopen(path)
++ if lib:
++ return lib
++
++ raise OSError("dlopen() failed to load a library: %s as %s" % (library_name, path))
+
+
+ cairo = dlopen(
+--
+2.19.2
diff --git a/nixpkgs/pkgs/development/python-modules/cairocffi/fix_test_scaled_font.patch b/nixpkgs/pkgs/development/python-modules/cairocffi/fix_test_scaled_font.patch
new file mode 100644
index 00000000000..39ba63cc94d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cairocffi/fix_test_scaled_font.patch
@@ -0,0 +1,11 @@
+--- a/cairocffi/test_cairo.py 2016-09-01 07:52:33.303180302 +0200
++++ b/cairocffi/test_cairo.py 2016-09-01 09:06:19.595701944 +0200
+@@ -998,7 +998,7 @@
+
+ font = ScaledFont(ToyFontFace('monospace'))
+ _, _, _, _, x_advance_mono, y_advance = font.text_extents('i' * 10)
+- assert x_advance_mono > x_advance
++ assert x_advance_mono >= x_advance
+ assert y_advance == 0
+ # Not much we can test:
+ # The toy font face was "materialized" into a specific backend.
diff --git a/nixpkgs/pkgs/development/python-modules/cairocffi/generic.nix b/nixpkgs/pkgs/development/python-modules/cairocffi/generic.nix
new file mode 100644
index 00000000000..cf1618a865b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cairocffi/generic.nix
@@ -0,0 +1,51 @@
+{ 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 ];
+ };
+
+ checkInputs = [ pytest pytestrunner glibcLocales ];
+ propagatedBuildInputs = [ cairo cffi ] ++ lib.optional withXcffib xcffib;
+
+ 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/nixpkgs/pkgs/development/python-modules/cairosvg/1_x.nix b/nixpkgs/pkgs/development/python-modules/cairosvg/1_x.nix
new file mode 100644
index 00000000000..b6d40a5fdb7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cairosvg/1_x.nix
@@ -0,0 +1,37 @@
+{ stdenv, 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 stdenv.lib; {
+ homepage = https://cairosvg.org;
+ license = licenses.lgpl3;
+ description = "SVG converter based on Cairo";
+ maintainers = with maintainers; [ jluttine ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cairosvg/default.nix b/nixpkgs/pkgs/development/python-modules/cairosvg/default.nix
new file mode 100644
index 00000000000..beee8295049
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cairosvg/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k, fetchpatch
+, cairocffi, cssselect2, defusedxml, pillow, tinycss2
+, pytest, pytestrunner, pytestcov, pytest-flake8, pytest-isort }:
+
+buildPythonPackage rec {
+ pname = "CairoSVG";
+ version = "2.3.0";
+
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "66f333ef5dc79fdfbd3bbe98adc791b1f854e0461067d202fa7b15de66d517ec";
+ };
+
+ patches = [
+ # fix isort-check
+ (fetchpatch {
+ url = https://github.com/Kozea/CairoSVG/commit/b2534b0fc80b9f24a2bff2c938ac5da73ff1e478.patch;
+ excludes = [ "test_non_regression/__init__.py" ];
+ sha256 = "1bms75dd0fd978yhlr0k565zq45lzxf0vkihryb7gcwnd42bl6yf";
+ })
+ ];
+
+ propagatedBuildInputs = [ cairocffi cssselect2 defusedxml pillow tinycss2 ];
+
+ checkInputs = [ pytest pytestrunner pytestcov pytest-flake8 pytest-isort ];
+
+ meta = with stdenv.lib; {
+ homepage = https://cairosvg.org;
+ license = licenses.lgpl3;
+ description = "SVG converter based on Cairo";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/caldav/default.nix b/nixpkgs/pkgs/development/python-modules/caldav/default.nix
new file mode 100644
index 00000000000..653296a927e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/caldav/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPythonPackage, fetchPypi
+, tzlocal, requests, vobject, lxml, nose }:
+
+buildPythonPackage rec {
+ pname = "caldav";
+ version = "0.6.1";
+
+ propagatedBuildInputs = [ tzlocal requests vobject lxml nose ];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "eddb7f4e6a3eb5f02eaa2227817a53ac4372d4c4d51876536f4c6f00282f569e";
+ };
+
+ meta = with lib; {
+ description = "This project is a CalDAV (RFC4791) client library for Python.";
+ homepage = "https://pythonhosted.org/caldav/";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ marenz ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/caldavclientlibrary-asynk/default.nix b/nixpkgs/pkgs/development/python-modules/caldavclientlibrary-asynk/default.nix
new file mode 100644
index 00000000000..a12a12547e9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/caldavclientlibrary-asynk/default.nix
@@ -0,0 +1,35 @@
+{ stdenv
+, buildPythonPackage
+, fetchgit
+, isPy3k
+}:
+
+buildPythonPackage {
+ version = "asynkdev";
+ pname = "caldavclientlibrary-asynk";
+
+ src = fetchgit {
+ url = "https://github.com/skarra/CalDAVClientLibrary.git";
+ rev = "06699b08190d50cc2636b921a654d67db0a967d1";
+ sha256 = "157q32251ac9x3gdshgrjwsy48nq74vrzviswvph56h9wa8ksnnk";
+ };
+
+ disabled = isPy3k;
+
+ meta = with stdenv.lib; {
+ description = "A Python library and tool for CalDAV";
+
+ longDescription = ''
+ CalDAVCLientLibrary is a Python library and tool for CalDAV.
+
+ This package is the unofficial CalDAVCLientLibrary Python
+ library maintained by the author of Asynk and is needed for
+ that package.
+ '';
+
+ homepage = https://github.com/skarra/CalDAVClientLibrary/tree/asynkdev/;
+ maintainers = with maintainers; [ pjones ];
+ broken = true; # 2018-04-11
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/can/default.nix b/nixpkgs/pkgs/development/python-modules/can/default.nix
new file mode 100644
index 00000000000..b87e526dc45
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/can/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, isPy27
+, aenum
+, wrapt
+, typing
+, pyserial
+, nose
+, mock
+, hypothesis
+, future
+, pytest
+, pytest-timeout }:
+
+buildPythonPackage rec {
+ pname = "python-can";
+ version = "3.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1giv9s6w90lalxsijgnxzynygkckcfyaxnxsldbwv0784vwy1jcd";
+ };
+
+ propagatedBuildInputs = [ wrapt pyserial aenum ] ++ lib.optional (pythonOlder "3.5") typing;
+ checkInputs = [ nose mock pytest pytest-timeout hypothesis future ];
+
+ # Tests won't work with hypothesis 4.7.3 under Python 2. So skip the tests in
+ # that case. This clause can be removed once hypothesis has been upgraded in
+ # nixpkgs.
+ doCheck = !(isPy27 && (hypothesis.version == "4.7.3"));
+
+ # Add the scripts to PATH
+ checkPhase = ''
+ PATH=$out/bin:$PATH pytest -c /dev/null
+ '';
+
+ meta = with lib; {
+ homepage = https://github.com/hardbyte/python-can;
+ description = "CAN support for Python";
+ license = licenses.lgpl3;
+ maintainers = with maintainers; [ sorki ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/canmatrix/default.nix b/nixpkgs/pkgs/development/python-modules/canmatrix/default.nix
new file mode 100644
index 00000000000..a6c3f485d74
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/canmatrix/default.nix
@@ -0,0 +1,59 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+, attrs
+, bitstruct
+, future
+, pathlib2
+, typing
+, lxml
+, xlwt
+, xlrd
+, XlsxWriter
+, pyyaml
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "canmatrix";
+ version = "0.7";
+
+ # uses fetchFromGitHub as PyPi release misses test/ dir
+ src = fetchFromGitHub {
+ owner = "ebroecker";
+ repo = pname;
+ rev = version;
+ sha256 = "0q8qb282nfgirl8r2i9c8whm3hvr14ig2r42ssgnv2hya971cwjq";
+ };
+
+ propagatedBuildInputs = [
+ # required
+ attrs
+ bitstruct
+ future
+ pathlib2
+ # optional
+ lxml
+ xlwt
+ xlrd
+ XlsxWriter
+ pyyaml
+ ] ++ lib.optional (pythonOlder "3.5") typing;
+
+ checkInputs = [
+ pytest
+ ];
+
+ checkPhase = ''
+ pytest -s src/canmatrix
+ '';
+
+ meta = with lib; {
+ homepage = https://github.com/ebroecker/canmatrix;
+ description = "Support and convert several CAN (Controller Area Network) database formats .arxml .dbc .dbf .kcd .sym fibex xls(x)";
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ sorki ];
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/canonicaljson/default.nix b/nixpkgs/pkgs/development/python-modules/canonicaljson/default.nix
new file mode 100644
index 00000000000..7457002929a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/canonicaljson/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, frozendict, simplejson, six
+}:
+
+buildPythonPackage rec {
+ pname = "canonicaljson";
+ version = "1.1.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "45bce530ff5fd0ca93703f71bfb66de740a894a3b5dd6122398c6d8f18539725";
+ };
+
+ propagatedBuildInputs = [
+ frozendict simplejson six
+ ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/matrix-org/python-canonicaljson;
+ description = "Encodes objects and arrays as RFC 7159 JSON.";
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/canopen/default.nix b/nixpkgs/pkgs/development/python-modules/canopen/default.nix
new file mode 100644
index 00000000000..a76e05332f1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/canopen/default.nix
@@ -0,0 +1,44 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, nose
+, can
+, canmatrix }:
+
+buildPythonPackage {
+ pname = "canopen";
+ version = "0.5.1";
+
+ # use fetchFromGitHub until version containing test/sample.eds
+ # is available on PyPi
+ # https://github.com/christiansandberg/canopen/pull/57
+
+ src = fetchFromGitHub {
+ owner = "christiansandberg";
+ repo = "canopen";
+ rev = "b20575d84c3aef790fe7c38c5fc77601bade0ea4";
+ sha256 = "1qg47qrkyvyxiwi13sickrkk89jp9s91sly2y90bz0jhws2bxh64";
+ };
+
+ #src = fetchPypi {
+ # inherit pname version;
+ # sha256 = "0806cykarpjb9ili3mf82hsd9gdydbks8532nxgz93qzg4zdbv2g";
+ #};
+
+ # test_pdo failure https://github.com/christiansandberg/canopen/issues/58
+ doCheck = false;
+
+ propagatedBuildInputs =
+ [ can
+ canmatrix
+ ];
+
+ checkInputs = [ nose ];
+
+ meta = with lib; {
+ homepage = https://github.com/christiansandberg/canopen/;
+ description = "CANopen stack implementation";
+ license = licenses.lgpl3;
+ maintainers = with maintainers; [ sorki ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/capstone/default.nix b/nixpkgs/pkgs/development/python-modules/capstone/default.nix
new file mode 100644
index 00000000000..2bd22ebf0d9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/capstone/default.nix
@@ -0,0 +1,42 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, fetchpatch
+}:
+
+buildPythonPackage rec {
+ pname = "capstone";
+ version = "3.0.5.post1";
+
+ setupPyBuildFlags = [
+ "--plat-name x86_64-linux"
+ ];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "3c0f73db9f8392f7048c8a244809f154d7c39f354e2167f6c477630aa517ed04";
+ };
+
+ patches = [
+ (fetchpatch {
+ stripLen = 2;
+ url = "https://patch-diff.githubusercontent.com/raw/aquynh/capstone/pull/783/commits/23fe9f36622573c747e2bab6119ff245437bf276.patch";
+ sha256 = "0yizqrdlxqxn16873593kdx2vrr7gvvilhgcf9xy6hr0603d3m5r";
+ })
+ ];
+
+ postPatch = ''
+ patchShebangs src/make.sh
+ '';
+
+ preCheck = ''
+ mv src/libcapstone.so capstone
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "http://www.capstone-engine.org/";
+ license = licenses.bsdOriginal;
+ description = "Capstone disassembly engine";
+ maintainers = with maintainers; [ bennofs ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/capturer/default.nix b/nixpkgs/pkgs/development/python-modules/capturer/default.nix
new file mode 100644
index 00000000000..86062d28a85
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/capturer/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildPythonPackage, fetchFromGitHub, humanfriendly, pytest, pytestcov }:
+
+buildPythonPackage rec {
+ pname = "capturer";
+ version = "2.4";
+
+ src = fetchFromGitHub {
+ owner = "xolox";
+ repo = "python-capturer";
+ rev = version;
+ sha256 = "07zy264xd0g7pz9sxjqcpwmrck334xcbb7wfss26lmvgdr5nhcb9";
+ };
+
+ propagatedBuildInputs = [ humanfriendly ];
+
+ checkPhase = ''
+ PATH=$PATH:$out/bin pytest .
+ '';
+ checkInputs = [ pytest ];
+
+ meta = with lib; {
+ description = "Easily capture stdout/stderr of the current process and subprocesses";
+ homepage = https://github.com/xolox/python-capturer;
+ license = licenses.mit;
+ maintainers = with maintainers; [ eyjhb ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/carbon/default.nix b/nixpkgs/pkgs/development/python-modules/carbon/default.nix
new file mode 100644
index 00000000000..3b49289c2e4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/carbon/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k
+, twisted, whisper, txamqp, cachetools, urllib3
+}:
+
+buildPythonPackage rec {
+ pname = "carbon";
+ version = "1.1.5";
+
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a88390553a9ea628fdb74b5b358ed83a657e058bcc811e5819d9db856b4fcf5b";
+ };
+
+ propagatedBuildInputs = [ twisted whisper txamqp cachetools urllib3 ];
+
+ meta = with stdenv.lib; {
+ homepage = http://graphite.wikidot.com/;
+ description = "Backend data caching and persistence daemon for Graphite";
+ maintainers = with maintainers; [ offline basvandijk ];
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/carrot/default.nix b/nixpkgs/pkgs/development/python-modules/carrot/default.nix
new file mode 100644
index 00000000000..3b976fb7ad9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/carrot/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, 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 stdenv.lib; {
+ homepage = https://pypi.python.org/pypi/carrot;
+ description = "AMQP Messaging Framework for Python";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cartopy/default.nix b/nixpkgs/pkgs/development/python-modules/cartopy/default.nix
new file mode 100644
index 00000000000..117b6fed597
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cartopy/default.nix
@@ -0,0 +1,59 @@
+{ buildPythonPackage, lib, fetchPypi
+, pytest, filelock, mock, pep8
+, cython, isPy27
+, six, pyshp, shapely, geos, numpy
+, gdal, pillow, matplotlib, pyepsg, pykdtree, scipy, owslib, fiona
+, xvfb_run
+, proj_5 # see https://github.com/SciTools/cartopy/pull/1252 for status on proj 6 support
+}:
+
+buildPythonPackage rec {
+ pname = "cartopy";
+ version = "0.17.0";
+
+ src = fetchPypi {
+ inherit version;
+ pname = "Cartopy";
+ sha256 = "0q9ckfi37cxj7jwnqnzij62vwcf4krccx576vv5lhvpgvplxjjs2";
+ };
+
+ checkInputs = [ filelock mock pytest pep8 ];
+
+ # several tests require network connectivity: we disable them.
+ # also py2.7's tk is over-eager in trying to open an x display,
+ # so give it xvfb
+ checkPhase = let
+ maybeXvfbRun = lib.optionalString isPy27 "${xvfb_run}/bin/xvfb-run";
+ in ''
+ export HOME=$(mktemp -d)
+ ${maybeXvfbRun} pytest --pyargs cartopy \
+ -m "not network and not natural_earth" \
+ -k "not test_nightshade_image and not background_img"
+ '';
+
+ nativeBuildInputs = [
+ cython
+ geos # for geos-config
+ proj_5
+ ];
+
+ buildInputs = [
+ geos proj_5
+ ];
+
+ propagatedBuildInputs = [
+ # required
+ six pyshp shapely numpy
+
+ # optional
+ gdal pillow matplotlib pyepsg pykdtree scipy fiona owslib
+ ];
+
+ meta = with lib; {
+ description = "Process geospatial data to create maps and perform analyses";
+ license = licenses.lgpl3;
+ homepage = https://scitools.org.uk/cartopy/docs/latest/;
+ maintainers = with maintainers; [ mredaelli ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/case/default.nix b/nixpkgs/pkgs/development/python-modules/case/default.nix
new file mode 100644
index 00000000000..0f1bba36def
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/case/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, six, nose, unittest2, mock }:
+
+buildPythonPackage rec {
+ pname = "case";
+ version = "1.5.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "48432b01d91913451c3512c5b90e31b0f348f1074b166a3431085eb70d784fb1";
+ };
+
+ propagatedBuildInputs = [ six nose unittest2 mock ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/celery/case;
+ description = "unittests utilities";
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cassandra-driver/default.nix b/nixpkgs/pkgs/development/python-modules/cassandra-driver/default.nix
new file mode 100644
index 00000000000..b5ee3b3b780
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cassandra-driver/default.nix
@@ -0,0 +1,70 @@
+{ stdenv
+, libev
+, buildPythonPackage
+, fetchPypi
+, cython
+, futures
+, six
+, python
+, scales
+, eventlet
+, twisted
+, mock
+, gevent
+, nose
+, pytz
+, pyyaml
+, sure
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+ pname = "cassandra-driver";
+ version = "3.18.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1w9a7fdl626m977cjj9zclh4a0mr3s4q9jpwm1fsmpi7v3gbribi";
+ };
+
+ buildInputs = [
+ libev
+ ];
+
+ nativeBuildInputs = [
+ # NOTE: next version will work with cython 0.29
+ # Requires 'Cython!=0.25,<0.29,>=0.20'
+ (cython.overridePythonAttrs(old: rec {
+ pname = "Cython";
+ version = "0.28.3";
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1aae6d6e9858888144cea147eb5e677830f45faaff3d305d77378c3cba55f526";
+ };
+ }))
+ ];
+
+ propagatedBuildInputs = [ six ]
+ ++ stdenv.lib.optionals (pythonOlder "3.4") [ futures ];
+
+ postPatch = ''
+ sed -i "s/<=1.0.1//" setup.py
+ '';
+
+ checkPhase = ''
+ ${python.interpreter} setup.py gevent_nosetests
+ ${python.interpreter} setup.py eventlet_nosetests
+ '';
+
+ checkInputs = [ scales eventlet twisted mock gevent nose pytz pyyaml sure ];
+
+ # Could not get tests running
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = http://datastax.github.io/python-driver/;
+ description = "A Python client driver for Apache Cassandra";
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/casttube/default.nix b/nixpkgs/pkgs/development/python-modules/casttube/default.nix
new file mode 100644
index 00000000000..5d3b80aeb16
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/casttube/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, fetchPypi, requests }:
+
+buildPythonPackage rec {
+ pname = "casttube";
+ version = "0.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0g7mksfl341vfsxqvw8h15ci2qwd1rczg41n4fb2hw7y9rikqnzj";
+ };
+
+ propagatedBuildInputs = [ requests ];
+
+ # no tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Interact with the Youtube Chromecast api";
+ homepage = https://github.com/ur1katz/casttube;
+ license = licenses.mit;
+ maintainers = with maintainers; [ fpletz ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cbor/default.nix b/nixpkgs/pkgs/development/python-modules/cbor/default.nix
new file mode 100644
index 00000000000..360872c0f89
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cbor/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "cbor";
+ version = "1.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1dmv163cnslyqccrybkxn0c9s1jk1mmafmgxv75iamnz5lk5l8hk";
+ };
+
+ # Tests are excluded from PyPI and four unit tests are also broken:
+ # https://github.com/brianolson/cbor_py/issues/6
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://bitbucket.org/bodhisnarkva/cbor;
+ description = "Concise Binary Object Representation (CBOR) library";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ geistesk ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cbor2/default.nix b/nixpkgs/pkgs/development/python-modules/cbor2/default.nix
new file mode 100644
index 00000000000..5d044b4199c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cbor2/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildPythonPackage, fetchPypi, pytest, pytestcov, setuptools_scm }:
+
+buildPythonPackage rec {
+ pname = "cbor2";
+ version = "4.1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1bp9l3wdj0wm15xlmlcwbgv6hc6vcfx39nssikj8fkwnd7d1bdhp";
+ };
+
+ nativeBuildInputs = [ setuptools_scm ];
+ checkInputs = [ pytest pytestcov ];
+
+ checkPhase = "pytest";
+
+ meta = with lib; {
+ description = "Pure Python CBOR (de)serializer with extensive tag support";
+ homepage = https://github.com/agronholm/cbor2;
+ license = licenses.mit;
+ maintainers = with maintainers; [ taneb ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cccolutils/default.nix b/nixpkgs/pkgs/development/python-modules/cccolutils/default.nix
new file mode 100644
index 00000000000..9751dcd2f3e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cccolutils/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k, krb5Full, nose, GitPython, mock, git }:
+
+buildPythonPackage rec {
+ pname = "CCColUtils";
+ version = "1.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1gwcq4xan9as1j3q9k2zqrywxp46qx0ljwxbck9id2fvilds6ck3";
+ };
+
+ buildInputs = [ krb5Full ];
+ propagatedBuildInputs = [ nose GitPython mock git ];
+
+ doCheck = isPy3k; # needs unpackaged module to run tests on python2
+
+ meta = with stdenv.lib; {
+ description = "Python Kerberos 5 Credential Cache Collection Utilities";
+ homepage = https://pagure.io/cccolutils;
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ disassembler ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cchardet/default.nix b/nixpkgs/pkgs/development/python-modules/cchardet/default.nix
new file mode 100644
index 00000000000..5596b3e37e5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cchardet/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, python
+, nose
+}:
+
+buildPythonPackage rec {
+ pname = "cchardet";
+ version = "2.1.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1h3wajwwgqpyb1q44lzr8djbcwr4y8cphph7kyscz90d83h4b5yc";
+ };
+
+ checkInputs = [ nose ];
+ checkPhase = ''
+ ${python.interpreter} setup.py nosetests
+ '';
+
+ meta = {
+ description = "High-speed universal character encoding detector";
+ homepage = https://github.com/PyYoshi/cChardet;
+ license = lib.licenses.mpl11;
+ maintainers = with lib.maintainers; [ ivan ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cddb/default.nix b/nixpkgs/pkgs/development/python-modules/cddb/default.nix
new file mode 100644
index 00000000000..f40ff08fcf4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cddb/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, pkgs
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ name = "CDDB-1.4";
+ disabled = isPy3k;
+
+ buildInputs = stdenv.lib.optionals stdenv.isDarwin [ pkgs.darwin.apple_sdk.frameworks.IOKit ];
+
+ src = pkgs.fetchurl {
+ url = "http://cddb-py.sourceforge.net/${name}.tar.gz";
+ sha256 = "098xhd575ibvdx7i3dny3lwi851yxhjg2hn5jbbgrwj833rg5l5w";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = http://cddb-py.sourceforge.net/;
+ description = "CDDB and FreeDB audio CD track info access";
+ license = licenses.gpl2Plus;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cdecimal/default.nix b/nixpkgs/pkgs/development/python-modules/cdecimal/default.nix
new file mode 100644
index 00000000000..0c636e12088
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cdecimal/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, buildPythonPackage, isPy3k }:
+
+with stdenv.lib;
+
+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 stdenv.lib; {
+ description = "Fast drop-in replacement for decimal.py";
+ homepage = http://www.bytereef.org/mpdecimal/;
+ license = licenses.bsd2;
+ maintainers = [ maintainers.udono ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/celery/default.nix b/nixpkgs/pkgs/development/python-modules/celery/default.nix
new file mode 100644
index 00000000000..19eaeaf8d82
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/celery/default.nix
@@ -0,0 +1,35 @@
+{ lib, buildPythonPackage, fetchPypi, libredirect
+, case, pytest, boto3, moto, kombu, billiard, pytz, anyjson, amqp, eventlet
+}:
+
+buildPythonPackage rec {
+ pname = "celery";
+ version = "4.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "4c4532aa683f170f40bd76f928b70bc06ff171a959e06e71bf35f2f9d6031ef9";
+ };
+
+ postPatch = ''
+ substituteInPlace requirements/test.txt \
+ --replace "moto==1.3.7" moto \
+ --replace "pytest>=4.3.1,<4.4.0" pytest
+ '';
+
+ # ignore test that's incompatible with pytest5
+ # test_eventlet touches network
+ checkPhase = ''
+ pytest -k 'not restore_current_app_fallback' \
+ --ignore=t/unit/concurrency/test_eventlet.py
+ '';
+
+ checkInputs = [ case pytest boto3 moto ];
+ propagatedBuildInputs = [ kombu billiard pytz anyjson amqp eventlet ];
+
+ meta = with lib; {
+ homepage = https://github.com/celery/celery/;
+ description = "Distributed task queue";
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cement/default.nix b/nixpkgs/pkgs/development/python-modules/cement/default.nix
new file mode 100644
index 00000000000..edcb4086cf2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cement/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k }:
+
+buildPythonPackage rec {
+ pname = "cement";
+ version = "3.0.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "10a8459dc9fc31d6c038ede24a9081c5c3bd5fcd75b071e01baf281f81c9eace";
+ };
+
+ # Disable test tests since they depend on a memcached server running on
+ # 127.0.0.1:11211.
+ doCheck = false;
+
+ disabled = !isPy3k;
+
+ meta = with stdenv.lib; {
+ homepage = https://builtoncement.com/;
+ description = "A CLI Application Framework for Python.";
+ maintainers = with maintainers; [ eqyiel ];
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cerberus/default.nix b/nixpkgs/pkgs/development/python-modules/cerberus/default.nix
new file mode 100644
index 00000000000..81f6ef1e837
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cerberus/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytestrunner, pytest }:
+
+buildPythonPackage rec {
+ pname = "Cerberus";
+ version = "1.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0be48fc0dc84f83202a5309c0aa17cd5393e70731a1698a50d118b762fbe6875";
+ };
+
+ checkInputs = [ pytestrunner pytest ];
+
+ meta = with stdenv.lib; {
+ homepage = http://python-cerberus.org/;
+ description = "Lightweight, extensible schema and data validation tool for Python dictionaries";
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cerberus11/default.nix b/nixpkgs/pkgs/development/python-modules/cerberus11/default.nix
new file mode 100644
index 00000000000..614e3ca8135
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cerberus11/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytestrunner, pytest }:
+
+buildPythonPackage rec {
+ pname = "Cerberus";
+ version = "1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1pxzr8sfm2hc5s96m9k044i44nwkva70n0ypr6a35v73zn891cx5";
+ };
+
+ checkInputs = [ pytestrunner pytest ];
+
+ meta = with stdenv.lib; {
+ homepage = http://python-cerberus.org/;
+ description = "Lightweight, extensible schema and data validation tool for Python dictionaries";
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/certifi/default.nix b/nixpkgs/pkgs/development/python-modules/certifi/default.nix
new file mode 100644
index 00000000000..935c0d60061
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/certifi/default.nix
@@ -0,0 +1,21 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+}:
+
+buildPythonPackage rec {
+ pname = "certifi";
+ version = "2019.6.16";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "945e3ba63a0b9f577b1395204e13c3a231f9bc0223888be653286534e5873695";
+ };
+
+ meta = {
+ homepage = http://certifi.io/;
+ description = "Python package for providing Mozilla's CA Bundle";
+ license = lib.licenses.isc;
+ maintainers = with lib.maintainers; [ koral ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cffi/default.nix b/nixpkgs/pkgs/development/python-modules/cffi/default.nix
new file mode 100644
index 00000000000..cfabeb16b59
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cffi/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, buildPythonPackage, isPyPy, fetchPypi, libffi, pycparser, pytest }:
+
+if isPyPy then null else buildPythonPackage rec {
+ pname = "cffi";
+ version = "1.12.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "041c81822e9f84b1d9c401182e174996f0bae9991f33725d059b771744290774";
+ };
+
+ outputs = [ "out" "dev" ];
+
+ propagatedBuildInputs = [ libffi pycparser ];
+ checkInputs = [ pytest ];
+
+ # On Darwin, the cffi tests want to hit libm a lot, and look for it in a global
+ # impure search path. It's obnoxious how much repetition there is, and how difficult
+ # it is to get it to search somewhere else (since we do actually have a libm symlink in libSystem)
+ prePatch = stdenv.lib.optionalString stdenv.isDarwin ''
+ substituteInPlace testing/cffi0/test_parsing.py \
+ --replace 'lib_m = "m"' 'lib_m = "System"' \
+ --replace '"libm" in name' '"libSystem" in name'
+ substituteInPlace testing/cffi0/test_unicode_literals.py --replace 'lib_m = "m"' 'lib_m = "System"'
+ substituteInPlace testing/cffi0/test_zdistutils.py --replace 'self.lib_m = "m"' 'self.lib_m = "System"'
+ substituteInPlace testing/cffi1/test_recompiler.py --replace 'lib_m = "m"' 'lib_m = "System"'
+ substituteInPlace testing/cffi0/test_function.py --replace "lib_m = 'm'" "lib_m = 'System'"
+ substituteInPlace testing/cffi0/test_verify.py --replace "lib_m = ['m']" "lib_m = ['System']"
+ '';
+
+ # The tests use -Werror but with python3.6 clang detects some unreachable code.
+ NIX_CFLAGS_COMPILE = stdenv.lib.optionals stdenv.cc.isClang [ "-Wno-unused-command-line-argument" "-Wno-unreachable-code" ];
+
+ doCheck = !stdenv.hostPlatform.isMusl && !stdenv.isDarwin; # TODO: Investigate
+ checkPhase = ''
+ py.test -k "not test_char_pointer_conversion"
+ '';
+
+ meta = with stdenv.lib; {
+ maintainers = with maintainers; [ domenkozar lnl7 ];
+ homepage = https://cffi.readthedocs.org/;
+ license = with licenses; [ mit ];
+ description = "Foreign Function Interface for Python calling C code";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cfgv/default.nix b/nixpkgs/pkgs/development/python-modules/cfgv/default.nix
new file mode 100644
index 00000000000..2487caea608
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cfgv/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildPythonPackage, fetchPypi, six }:
+
+buildPythonPackage rec {
+ pname = "cfgv";
+ version = "2.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0i1iam461bd6bphd402r7payr2m71xivy5zp6k2gjnv67fa8gczd";
+ };
+
+ propagatedBuildInputs = [ six ];
+
+ # Tests not included in PyPI tarball
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Validate configuration and produce human readable error messages";
+ homepage = https://github.com/asottile/cfgv;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cfn-flip/default.nix b/nixpkgs/pkgs/development/python-modules/cfn-flip/default.nix
new file mode 100644
index 00000000000..ab6abc4cd6f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cfn-flip/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildPythonPackage, fetchPypi, six, pyyaml, click, pytestrunner }:
+
+buildPythonPackage rec {
+ pname = "cfn-flip";
+ version = "1.1.0.post1";
+
+ src = fetchPypi {
+ pname = "cfn_flip";
+ inherit version;
+ sha256 = "16r01ijjwnq06ax5xrv6mq9l00f6sgzw776kr43zjai09xsbwwck";
+ };
+
+ propagatedBuildInputs = [ six pyyaml click ];
+ nativeBuildInputs = [ pytestrunner ];
+
+ # No tests in Pypi
+ doCheck = false;
+
+ 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; [ psyanticy ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cfn-lint/default.nix b/nixpkgs/pkgs/development/python-modules/cfn-lint/default.nix
new file mode 100644
index 00000000000..d6205b27687
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cfn-lint/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pyyaml
+, six
+, requests
+, aws-sam-translator
+, jsonpatch
+, jsonschema
+, pathlib2
+}:
+
+buildPythonPackage rec {
+ pname = "cfn-lint";
+ version = "0.19.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5a723ff791fc23aced78e9cde28f18f9eeae9a24f91db2b7a20f7aa837a613b3";
+ };
+
+ propagatedBuildInputs = [
+ pyyaml
+ six
+ requests
+ aws-sam-translator
+ jsonpatch
+ jsonschema
+ pathlib2
+ ];
+
+ # No tests included in archive
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Checks cloudformation for practices and behaviour that could potentially be improved";
+ homepage = https://github.com/aws-cloudformation/cfn-python-lint;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cftime/default.nix b/nixpkgs/pkgs/development/python-modules/cftime/default.nix
new file mode 100644
index 00000000000..d4f59d41771
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cftime/default.nix
@@ -0,0 +1,31 @@
+{ buildPythonPackage
+, fetchPypi
+, pytest
+, coveralls
+, pytestcov
+, cython
+, numpy
+}:
+
+buildPythonPackage rec {
+ pname = "cftime";
+ version = "1.0.3.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0362dhxbzk593walyjz30dll6y2y79wialik647cbwdsf3ad0x6x";
+ };
+
+ checkInputs = [ pytest coveralls pytestcov ];
+ buildInputs = [ cython ];
+ propagatedBuildInputs = [ numpy ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = {
+ description = "Time-handling functionality from netcdf4-python";
+ };
+
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/cgen/default.nix b/nixpkgs/pkgs/development/python-modules/cgen/default.nix
new file mode 100644
index 00000000000..e0317249fe9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cgen/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytools
+, numpy
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "cgen";
+ version = "2017.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a04525d51ee975d37d590d6d82bf80a46e77f75187cccfd2248a89616a778795";
+ };
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [
+ pytools
+ numpy
+ ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with lib; {
+ description = "C/C++ source generation from an AST";
+ homepage = https://github.com/inducer/cgen;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cgroup-utils/default.nix b/nixpkgs/pkgs/development/python-modules/cgroup-utils/default.nix
new file mode 100644
index 00000000000..7496e7e1fcc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cgroup-utils/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, pep8, nose }:
+
+buildPythonPackage rec {
+ version = "0.6";
+ pname = "cgroup-utils";
+
+ buildInputs = [ pep8 nose ];
+ # Pep8 tests fail...
+ doCheck = false;
+
+ postPatch = ''
+ sed -i -e "/argparse/d" setup.py
+ '';
+
+ src = fetchFromGitHub {
+ owner = "peo3";
+ repo = "cgroup-utils";
+ rev = "v${version}";
+ sha256 = "1ck0aijzrg9xf6hjdxnynkapnyxw0y385jb0q7wyq4jf77ayfszc";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Utility tools for control groups of Linux";
+ maintainers = with maintainers; [ layus ];
+ platforms = platforms.linux;
+ license = licenses.gpl2;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/chai/default.nix b/nixpkgs/pkgs/development/python-modules/chai/default.nix
new file mode 100644
index 00000000000..16166d2db80
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/chai/default.nix
@@ -0,0 +1,15 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "chai";
+ version = "1.1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ff8d2b6855f660cd23cd5ec79bd10264d39f24f6235773331b48e7fcd637d6cc";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Mocking, stubbing and spying framework for python";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/chainer/default.nix b/nixpkgs/pkgs/development/python-modules/chainer/default.nix
new file mode 100644
index 00000000000..42e24dedba2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/chainer/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, lib
+, buildPythonPackage, fetchPypi, isPy3k
+, filelock, protobuf, numpy, pytest, mock
+, cupy, cudaSupport ? false
+}:
+
+buildPythonPackage rec {
+ pname = "chainer";
+ version = "5.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "cc8390a7f445a14a1bc71d54de348be247158fe2813a5ef11c5046265001c8c4";
+ };
+
+ checkInputs = [
+ pytest
+ mock
+ ];
+
+ propagatedBuildInputs = [
+ filelock
+ protobuf
+ numpy
+ ] ++ lib.optionals cudaSupport [ cupy ];
+
+ # In python3, test was failed...
+ doCheck = !isPy3k;
+
+ meta = with stdenv.lib; {
+ description = "A flexible framework of neural networks for deep learning";
+ homepage = https://chainer.org/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ hyphon81 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/chainmap/default.nix b/nixpkgs/pkgs/development/python-modules/chainmap/default.nix
new file mode 100644
index 00000000000..eb769ed4623
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/chainmap/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "chainmap";
+ version = "1.0.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "e42aaa4b3e2f66102a11bfd563069704bfbfd84fdcb517b564effd736bf53cd9";
+ };
+
+ # Requires tox
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Backport/clone of ChainMap";
+ homepage = https://bitbucket.org/jeunice/chainmap;
+ license = licenses.psfl;
+ maintainers = with maintainers; [ abbradar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/chalice/default.nix b/nixpkgs/pkgs/development/python-modules/chalice/default.nix
new file mode 100644
index 00000000000..19aaf3368e5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/chalice/default.nix
@@ -0,0 +1,64 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, attrs
+, botocore
+, click
+, enum-compat
+, jmespath
+, pip
+, setuptools
+, six
+, typing
+, wheel
+, watchdog
+, pytest
+, hypothesis
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "chalice";
+ version = "1.7.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "98a1237bf77f18761d8f964cb3c3b794e2d377a261b5e1640268608ec94336fa";
+ };
+
+ checkInputs = [ watchdog pytest hypothesis mock ];
+ propagatedBuildInputs = [
+ attrs
+ botocore
+ click
+ enum-compat
+ jmespath
+ pip
+ setuptools
+ six
+ wheel
+ typing
+ ];
+
+ # conftest.py not included with pypi release
+ doCheck = false;
+
+ postPatch = ''
+ substituteInPlace setup.py \
+ --replace 'pip>=9,<=18.1' 'pip' \
+ --replace 'typing==3.6.4' 'typing' \
+ --replace 'attrs==17.4.0' 'attrs' \
+ --replace 'click>=6.6,<7.0' 'click'
+ '';
+
+ checkPhase = ''
+ pytest tests
+ '';
+
+ meta = with lib; {
+ description = "Python Serverless Microframework for AWS";
+ homepage = https://github.com/aws/chalice;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/chameleon/default.nix b/nixpkgs/pkgs/development/python-modules/chameleon/default.nix
new file mode 100644
index 00000000000..a7e51a6513f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/chameleon/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "Chameleon";
+ version = "3.6.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0aw6cqnychmsxjjgihwr7df92xw6ac1wr4x70mvq28z3iq35x7ls";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = https://chameleon.readthedocs.io/;
+ description = "Fast HTML/XML Template Compiler";
+ license = licenses.bsd0;
+ maintainers = with maintainers; [ domenkozar ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/channels/default.nix b/nixpkgs/pkgs/development/python-modules/channels/default.nix
new file mode 100644
index 00000000000..a3b7e54c57a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/channels/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, fetchPypi,
+ asgiref, django, daphne
+}:
+buildPythonPackage rec {
+ pname = "channels";
+ version = "2.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "af7cdba9efb3f55b939917d1b15defb5d40259936013e60660e5e9aff98db4c5";
+ };
+
+ # Files are missing in the distribution
+ doCheck = false;
+
+ propagatedBuildInputs = [ asgiref django daphne ];
+
+ meta = with stdenv.lib; {
+ description = "Brings event-driven capabilities to Django with a channel system";
+ license = licenses.bsd3;
+ homepage = https://github.com/django/channels;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/characteristic/default.nix b/nixpkgs/pkgs/development/python-modules/characteristic/default.nix
new file mode 100644
index 00000000000..f082510713a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/characteristic/default.nix
@@ -0,0 +1,24 @@
+{ buildPythonPackage
+, fetchPypi
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "characteristic";
+ version = "14.3.0";
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ded68d4e424115ed44e5c83c2a901a0b6157a959079d7591d92106ffd3ada380";
+ };
+
+ checkInputs = [ pytest ];
+
+ postPatch = ''
+ substituteInPlace setup.cfg --replace "[pytest]" "[tool:pytest]"
+ '';
+
+ meta = {
+ description = "Python attributes without boilerplate";
+ homepage = https://characteristic.readthedocs.org;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/chardet/default.nix b/nixpkgs/pkgs/development/python-modules/chardet/default.nix
new file mode 100644
index 00000000000..829ae0b0f14
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/chardet/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, buildPythonPackage, fetchPypi, fetchpatch
+, pytest, pytestrunner, 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 pytestrunner hypothesis ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/chardet/chardet;
+ description = "Universal encoding detector";
+ license = licenses.lgpl2;
+ maintainers = with maintainers; [ domenkozar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/check-manifest/default.nix b/nixpkgs/pkgs/development/python-modules/check-manifest/default.nix
new file mode 100644
index 00000000000..1feec7ed828
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/check-manifest/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "check-manifest";
+ version = "0.37";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "44e3cf4b0833a55460046bf7a3600eaadbcae5e9d13baf0c9d9789dd5c2c6452";
+ };
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/mgedmin/check-manifest;
+ description = "Check MANIFEST.in in a Python source package for completeness";
+ license = licenses.mit;
+ maintainers = with maintainers; [ lewo ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cheetah/default.nix b/nixpkgs/pkgs/development/python-modules/cheetah/default.nix
new file mode 100644
index 00000000000..98af2f10a0b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cheetah/default.nix
@@ -0,0 +1,33 @@
+{ 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;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/cheroot/default.nix b/nixpkgs/pkgs/development/python-modules/cheroot/default.nix
new file mode 100644
index 00000000000..9b3050942a8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cheroot/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchPypi, buildPythonPackage, pythonAtLeast
+, more-itertools, six, setuptools_scm, setuptools-scm-git-archive
+, pytest, pytestcov, portend, pytest-testmon, pytest-mock
+, backports_unittest-mock, pyopenssl, requests, trustme, requests-unixsocket
+, backports_functools_lru_cache }:
+
+let inherit (stdenv) lib; in
+
+buildPythonPackage rec {
+ pname = "cheroot";
+ version = "6.5.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b824f9961eb447809badeb051820a05770354e2f9ae5c355eecc21f22633c217";
+ };
+
+ patches = [ ./tests.patch ];
+
+ nativeBuildInputs = [ setuptools_scm setuptools-scm-git-archive ];
+
+ propagatedBuildInputs = [ more-itertools six backports_functools_lru_cache ];
+
+ checkInputs = [ pytest pytestcov portend backports_unittest-mock pytest-mock pytest-testmon pyopenssl requests trustme requests-unixsocket ];
+
+ # Disable doctest plugin because times out
+ # Disable xdist (-n arg) because it's incompatible with testmon
+ # Deselect test_bind_addr_unix on darwin because times out
+ # Deselect test_http_over_https_error on darwin because builtin cert fails
+ # Disable warnings-as-errors because of deprecation warnings from socks on python 3.7
+ checkPhase = ''
+ substituteInPlace pytest.ini --replace "--doctest-modules" "" --replace "-n auto" ""
+ ${lib.optionalString (pythonAtLeast "3.7") "sed -i '/warnings/,+2d' pytest.ini"}
+ pytest -k 'not tls' ${lib.optionalString stdenv.isDarwin "--deselect=cheroot/test/test_ssl.py::test_http_over_https_error --deselect=cheroot/test/test_server.py::test_bind_addr_unix"}
+ '';
+
+ # Some of the tests use localhost networking.
+ __darwinAllowLocalNetworking = true;
+
+ meta = with lib; {
+ description = "High-performance, pure-Python HTTP";
+ homepage = https://github.com/cherrypy/cheroot;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cheroot/tests.patch b/nixpkgs/pkgs/development/python-modules/cheroot/tests.patch
new file mode 100644
index 00000000000..3de48a5a468
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cheroot/tests.patch
@@ -0,0 +1,45 @@
+diff --git a/cheroot/test/test_ssl.py b/cheroot/test/test_ssl.py
+index fe8a0a0..92a77c1 100644
+--- a/cheroot/test/test_ssl.py
++++ b/cheroot/test/test_ssl.py
+@@ -316,11 +316,9 @@ def test_tls_client_auth(
+ expected_ssl_errors = (
+ requests.exceptions.SSLError,
+ OpenSSL.SSL.Error,
+- ) if PY34 else (
+- requests.exceptions.SSLError,
++ requests.exceptions.ConnectionError,
+ )
+- if IS_WINDOWS:
+- expected_ssl_errors += requests.exceptions.ConnectionError,
++
+ with pytest.raises(expected_ssl_errors) as ssl_err:
+ make_https_request()
+
+@@ -335,7 +333,7 @@ def test_tls_client_auth(
+ except AttributeError:
+ if PY34:
+ pytest.xfail('OpenSSL behaves wierdly under Python 3.4')
+- elif six.PY3 and IS_WINDOWS:
++ elif six.PY3:
+ err_text = str(ssl_err.value)
+ else:
+ raise
+@@ -348,8 +346,7 @@ def test_tls_client_auth(
+ if IS_MACOS and IS_PYPY and adapter_type == 'pyopenssl':
+ expected_substrings = ('tlsv1 alert unknown ca', )
+ if (
+- IS_WINDOWS
+- and tls_verify_mode in (
++ tls_verify_mode in (
+ ssl.CERT_REQUIRED,
+ ssl.CERT_OPTIONAL,
+ )
+@@ -361,6 +358,7 @@ def test_tls_client_auth(
+ "SysCallError(10054, 'WSAECONNRESET')",
+ "('Connection aborted.', "
+ 'OSError("(10054, \'WSAECONNRESET\')"))',
++ 'OSError("(104, \'ECONNRESET\')"))',
+ )
+ assert any(e in err_text for e in expected_substrings)
+
diff --git a/nixpkgs/pkgs/development/python-modules/cherrypy/17.nix b/nixpkgs/pkgs/development/python-modules/cherrypy/17.nix
new file mode 100644
index 00000000000..d9b9166e0f0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cherrypy/17.nix
@@ -0,0 +1,36 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, setuptools_scm
+, cheroot, contextlib2, portend, routes, six, zc_lockfile
+, backports_unittest-mock, objgraph, pathpy, pytest, pytestcov, 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 pytestcov backports_functools_lru_cache requests_toolbelt
+ ];
+
+ checkPhase = ''
+ pytest ${stdenv.lib.optionalString stdenv.isDarwin "--ignore=cherrypy/test/test_wsgi_unix_socket.py"}
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://www.cherrypy.org;
+ description = "A pythonic, object-oriented HTTP framework";
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cherrypy/default.nix b/nixpkgs/pkgs/development/python-modules/cherrypy/default.nix
new file mode 100644
index 00000000000..6941e1117bd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cherrypy/default.nix
@@ -0,0 +1,60 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k
+, setuptools_scm
+, cheroot, portend, more-itertools, zc_lockfile, routes
+, objgraph, pytest, pytestcov, pathpy, requests_toolbelt, pytest-services
+, fetchpatch
+}:
+
+buildPythonPackage rec {
+ pname = "cherrypy";
+ version = "18.1.2";
+
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ pname = "CherryPy";
+ inherit version;
+ sha256 = "1w3hpsg7q8shdmscmbqk00w90lcw3brary7wl1a56k5h7nx33pj8";
+ };
+
+ # Remove patches once 96b34df and 14c12d2
+ # become part of a release - they're currently only present in master.
+ # ref: https://github.com/cherrypy/cherrypy/pull/1791
+ patches = [
+ (fetchpatch {
+ name = "pytest5-1.patch";
+ url = "https://github.com/cherrypy/cherrypy/commit/96b34dfea7853b0189bc0a3878b6ddff0d4e505c.patch";
+ sha256 = "0zy53mahffgkpd844118b42lsk5lkjmig70d60x1i46w6gnr61mi";
+ })
+ (fetchpatch {
+ name = "pytest5-2.patch";
+ url = "https://github.com/cherrypy/cherrypy/commit/14c12d2420a4b3765bb241250bd186e93b2f25eb.patch";
+ sha256 = "0ihcz7b5myn923rq5665b98pz52hnf6fcys2y2inf23r3i07scyz";
+ })
+ ];
+
+ propagatedBuildInputs = [
+ # required
+ cheroot portend more-itertools zc_lockfile
+ # optional
+ routes
+ ];
+
+ nativeBuildInputs = [ setuptools_scm ];
+
+ checkInputs = [
+ objgraph pytest pytestcov pathpy requests_toolbelt pytest-services
+ ];
+
+ # Disable doctest plugin because times out
+ checkPhase = ''
+ substituteInPlace pytest.ini --replace "--doctest-modules" ""
+ pytest --deselect=cherrypy/test/test_static.py::StaticTest::test_null_bytes ${stdenv.lib.optionalString stdenv.isDarwin "--deselect=cherrypy/test/test_bus.py::BusMethodTests::test_block"}
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://www.cherrypy.org;
+ description = "A pythonic, object-oriented HTTP framework";
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/chevron/default.nix b/nixpkgs/pkgs/development/python-modules/chevron/default.nix
new file mode 100644
index 00000000000..7fa3a2b471d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/chevron/default.nix
@@ -0,0 +1,29 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, python
+}:
+
+buildPythonPackage {
+ pname = "chevron";
+ version = "0.13.1";
+
+ # No tests available in the PyPI tarball
+ src = fetchFromGitHub {
+ owner = "noahmorrison";
+ repo = "chevron";
+ rev = "0.13.1";
+ sha256 = "0l1ik8dvi6bgyb3ym0w4ii9dh25nzy0x4yawf4zbcyvvcb6af470";
+ };
+
+ checkPhase = ''
+ ${python.interpreter} test_spec.py
+ '';
+
+ meta = with lib; {
+ homepage = https://github.com/noahmorrison/chevron;
+ description = "A python implementation of the mustache templating language";
+ license = licenses.mit;
+ maintainers = with maintainers; [ dhkl ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/circus/default.nix b/nixpkgs/pkgs/development/python-modules/circus/default.nix
new file mode 100644
index 00000000000..a4f96ccaf68
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/circus/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, iowait, psutil, pyzmq, tornado, mock }:
+
+buildPythonPackage rec {
+ pname = "circus";
+ version = "0.15.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d1603cf4c4f620ce6593d3d2a67fad25bf0242183ea24110d8bb1c8079c55d1b";
+ };
+
+ postPatch = ''
+ # relax version restrictions to fix build
+ substituteInPlace setup.py \
+ --replace "pyzmq>=13.1.0,<17.0" "pyzmq>13.1.0" \
+ --replace "tornado>=3.0,<5.0" "tornado>=3.0"
+ '';
+
+ checkInputs = [ mock ];
+
+ doCheck = false; # weird error
+
+ propagatedBuildInputs = [ iowait psutil pyzmq tornado ];
+
+ meta = with stdenv.lib; {
+ description = "A process and socket manager";
+ homepage = "https://github.circus.com/circus-tent/circus";
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cjson/default.nix b/nixpkgs/pkgs/development/python-modules/cjson/default.nix
new file mode 100644
index 00000000000..2042a2d629b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cjson/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k, isPyPy }:
+
+buildPythonPackage rec {
+ pname = "python-cjson";
+ version = "1.2.1";
+ disabled = isPy3k || isPyPy;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "52db2745264624768bfd9b604acb38f631bde5c2ec9b23861677d747e4558626";
+ };
+
+ meta = with stdenv.lib; {
+ description = "A very fast JSON encoder/decoder for Python";
+ homepage = http://ag-projects.com/;
+ license = licenses.lgpl2;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cld2-cffi/default.nix b/nixpkgs/pkgs/development/python-modules/cld2-cffi/default.nix
new file mode 100644
index 00000000000..a38d4c0866e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cld2-cffi/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, buildPythonPackage, fetchPypi, six, cffi, nose }:
+
+buildPythonPackage rec {
+ pname = "cld2-cffi";
+ version = "0.1.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0rvcdx4fdh5yk4d2nlddq1q1r2r0xqp86hpmbdn447pdcj1r8a9s";
+ };
+
+ propagatedBuildInputs = [ six cffi ];
+ checkInputs = [ nose ];
+
+ # gcc doesn't approve of this code, so disable -Werror
+ NIX_CFLAGS_COMPILE = [ "-w" ] ++ stdenv.lib.optional stdenv.cc.isClang "-Wno-error=c++11-narrowing";
+
+ checkPhase = "nosetests -v";
+
+ meta = with stdenv.lib; {
+ description = "CFFI bindings around Google Chromium's embedded compact language detection library (CLD2)";
+ homepage = "https://github.com/GregBowyer/cld2-cffi";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ rvl ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cleo/default.nix b/nixpkgs/pkgs/development/python-modules/cleo/default.nix
new file mode 100644
index 00000000000..146779082e4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cleo/default.nix
@@ -0,0 +1,28 @@
+{ lib, buildPythonPackage, fetchPypi
+, pylev, pastel, clikit }:
+
+buildPythonPackage rec {
+ pname = "cleo";
+ version = "0.7.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0d0sxca308ilp73jdny4frn93asr4ih87xxl1d9rxf8m12xssa3c";
+ };
+
+ propagatedBuildInputs = [
+ clikit
+ ];
+
+ # The Pypi tarball doesn't include tests, and the GitHub source isn't
+ # buildable until we bootstrap poetry, see
+ # https://github.com/NixOS/nixpkgs/pull/53599#discussion_r245855665
+ doCheck = false;
+
+ meta = with lib; {
+ homepage = https://github.com/sdispater/cleo;
+ description = "Allows you to create beautiful and testable command-line interfaces";
+ license = licenses.mit;
+ maintainers = with maintainers; [ jakewaksbaum ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/clf/default.nix b/nixpkgs/pkgs/development/python-modules/clf/default.nix
new file mode 100644
index 00000000000..9303f90141d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/clf/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, docopt, requests, pygments }:
+
+buildPythonPackage rec {
+ pname = "clf";
+ version = "0.5.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "abc919a1e99667f32fdde15dfb4bc527dbe22cf86a17acb78a449d7f2dfe937e";
+ };
+
+ patchPhase = ''
+ sed -i 's/==/>=/' requirements.txt
+ '';
+
+ propagatedBuildInputs = [ docopt requests pygments ];
+
+ # Error when running tests:
+ # No local packages or download links found for requests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/ncrocfer/clf;
+ description = "Command line tool to search snippets on Commandlinefu.com";
+ license = licenses.mit;
+ maintainers = with maintainers; [ koral ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cli-helpers/default.nix b/nixpkgs/pkgs/development/python-modules/cli-helpers/default.nix
new file mode 100644
index 00000000000..1c209353f0e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cli-helpers/default.nix
@@ -0,0 +1,62 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, configobj
+, terminaltables
+, tabulate
+, backports_csv
+, wcwidth
+, pytest
+, mock
+, isPy27
+}:
+
+buildPythonPackage rec {
+ pname = "cli_helpers";
+ version = "1.2.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0rd194l06aw4612j09b44pgh8b8l4cwmz7xgwsgdj9v8m3m25nwq";
+ };
+
+ propagatedBuildInputs = [
+ configobj
+ terminaltables
+ tabulate
+ wcwidth
+ ] ++ (lib.optionals isPy27 [ backports_csv ]);
+
+ checkInputs = [ pytest mock ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with lib; {
+ description = "Python helpers for common CLI tasks";
+ longDescription = ''
+ CLI Helpers is a Python package that makes it easy to perform common
+ tasks when building command-line apps. It's a helper library for
+ command-line interfaces.
+
+ Libraries like Click and Python Prompt Toolkit are amazing tools that
+ help you create quality apps. CLI Helpers complements these libraries by
+ wrapping up common tasks in simple interfaces.
+
+ CLI Helpers is not focused on your app's design pattern or framework --
+ you can use it on its own or in combination with other libraries. It's
+ lightweight and easy to extend.
+
+ What's included in CLI Helpers?
+
+ - Prettyprinting of tabular data with custom pre-processing
+ - [in progress] config file reading/writing
+
+ Read the documentation at http://cli-helpers.rtfd.io
+ '';
+ homepage = https://cli-helpers.readthedocs.io/en/stable/;
+ license = licenses.bsd3 ;
+ maintainers = [ maintainers.kalbasit ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cliapp/default.nix b/nixpkgs/pkgs/development/python-modules/cliapp/default.nix
new file mode 100644
index 00000000000..c3e6a120ae7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cliapp/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, 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 stdenv.lib; {
+ homepage = http://liw.fi/cliapp/;
+ description = "Python framework for Unix command line programs";
+ license = licenses.gpl2;
+ maintainers = [];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/click-completion/default.nix b/nixpkgs/pkgs/development/python-modules/click-completion/default.nix
new file mode 100644
index 00000000000..2921970ff28
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/click-completion/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k,
+ click, jinja2, shellingham, six
+}:
+
+buildPythonPackage rec {
+ pname = "click-completion";
+ version = "0.5.1";
+ disabled = (!isPy3k);
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1ysn6kzv3fgakn0y06i3cxynd8iaybarrygabk9a0pp2spn2w1vq";
+ };
+
+ propagatedBuildInputs = [ click jinja2 shellingham six ];
+
+ meta = with stdenv.lib; {
+ description = "Add or enhance bash, fish, zsh and powershell completion in Click";
+ homepage = https://github.com/click-contrib/click-completion;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mbode ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/click-default-group/default.nix b/nixpkgs/pkgs/development/python-modules/click-default-group/default.nix
new file mode 100644
index 00000000000..eeee7370b7e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/click-default-group/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildPythonPackage, fetchFromGitHub, click, pytest }:
+
+buildPythonPackage rec {
+ pname = "click-default-group";
+ version = "1.2.1";
+
+ # No tests in Pypi tarball
+ src = fetchFromGitHub {
+ owner = "click-contrib";
+ repo = "click-default-group";
+ rev = "v${version}";
+ sha256 = "1wdmabfpmzxpiww0slinvxm9xjyxql250dn1pvjijq675pxafiz4";
+ };
+
+ propagatedBuildInputs = [ click ];
+
+ checkInputs = [ pytest ];
+
+ meta = with lib; {
+ homepage = https://github.com/click-contrib/click-default-group;
+ description = "Group to invoke a command without explicit subcommand name";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ jakewaksbaum ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/click-didyoumean/default.nix b/nixpkgs/pkgs/development/python-modules/click-didyoumean/default.nix
new file mode 100644
index 00000000000..4cd2ea15029
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/click-didyoumean/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi,
+ click
+}:
+
+buildPythonPackage rec {
+ pname = "click-didyoumean";
+ version = "0.0.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1svaza5lpvdbmyrx5xi0riqzq4hb9wnlpqrg6r8zy14pbi42j8hi";
+ };
+
+ propagatedBuildInputs = [ click ];
+
+ meta = with stdenv.lib; {
+ description = "Enable git-like did-you-mean feature in click";
+ homepage = https://github.com/click-contrib/click-didyoumean;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mbode ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/click-log/default.nix b/nixpkgs/pkgs/development/python-modules/click-log/default.nix
new file mode 100644
index 00000000000..f5626859d06
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/click-log/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi, click }:
+
+buildPythonPackage rec {
+ pname = "click-log";
+ version = "0.3.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "16fd1ca3fc6b16c98cea63acf1ab474ea8e676849dc669d86afafb0ed7003124";
+ };
+
+ propagatedBuildInputs = [ click ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/click-contrib/click-log/;
+ description = "Logging integration for Click";
+ license = licenses.mit;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/click-plugins/default.nix b/nixpkgs/pkgs/development/python-modules/click-plugins/default.nix
new file mode 100644
index 00000000000..a5124ac8613
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/click-plugins/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, buildPythonPackage, fetchPypi,
+ click, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "click-plugins";
+ version = "1.0.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "dfed74b5063546a137de99baaaf742b4de4337ad2b3e1df5ec7c8a256adc0847";
+ };
+
+ propagatedBuildInputs = [
+ click
+ ];
+
+ checkInputs = [
+ pytest
+ ];
+
+ meta = with stdenv.lib; {
+ description = "An extension module for click to enable registering CLI commands";
+ homepage = https://github.com/click-contrib/click-plugins;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ knedlsepp ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/click-repl/default.nix b/nixpkgs/pkgs/development/python-modules/click-repl/default.nix
new file mode 100644
index 00000000000..8a487ab2410
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/click-repl/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi, click, prompt_toolkit }:
+
+buildPythonPackage rec {
+ pname = "click-repl";
+ version = "0.1.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1mcmz95595nrp4r58spy1ac993db26hk4q97isghbmn4md99vwmr";
+ };
+
+ propagatedBuildInputs = [ click prompt_toolkit ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/click-contrib/click-repl;
+ description = "Subcommand REPL for click apps";
+ license = licenses.mit;
+ maintainers = with maintainers; [ twey ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/click-threading/default.nix b/nixpkgs/pkgs/development/python-modules/click-threading/default.nix
new file mode 100644
index 00000000000..3fe2af19fef
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/click-threading/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+, click
+, isPy3k
+, futures
+}:
+
+buildPythonPackage rec {
+ pname = "click-threading";
+ version = "0.4.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b2b0fada5bf184b56afaccc99d0d2548d8ab07feb2e95e29e490f6b99c605de7";
+ };
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ click ] ++ lib.optional (!isPy3k) futures;
+
+ checkPhase = ''
+ py.test
+ '';
+
+ # Tests are broken on 3.x
+ doCheck = !isPy3k;
+
+ meta = {
+ homepage = https://github.com/click-contrib/click-threading/;
+ description = "Multithreaded Click apps made easy";
+ license = lib.licenses.mit;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/click/default.nix b/nixpkgs/pkgs/development/python-modules/click/default.nix
new file mode 100644
index 00000000000..9951b1711b3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/click/default.nix
@@ -0,0 +1,36 @@
+{ lib, buildPythonPackage, fetchPypi, locale, pytest }:
+
+buildPythonPackage rec {
+ pname = "click";
+ version = "7.0";
+
+ src = fetchPypi {
+ pname = "Click";
+ inherit version;
+ sha256 = "5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7";
+ };
+
+ postPatch = ''
+ substituteInPlace click/_unicodefun.py \
+ --replace "'locale'" "'${locale}/bin/locale'"
+ '';
+
+ buildInputs = [ pytest ];
+
+ checkPhase = ''
+ py.test tests
+ '';
+
+ # https://github.com/pallets/click/issues/823
+ doCheck = false;
+
+ meta = with lib; {
+ homepage = http://click.pocoo.org/;
+ 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/nixpkgs/pkgs/development/python-modules/clickclick/default.nix b/nixpkgs/pkgs/development/python-modules/clickclick/default.nix
new file mode 100644
index 00000000000..93cd5c7a1d7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/clickclick/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, lib, buildPythonPackage, fetchFromGitHub, isPy36, flake8, click, pyyaml, six, pytestCheckHook, pytestcov }:
+
+buildPythonPackage rec {
+ pname = "clickclick";
+ version = "1.2.2";
+
+ src = fetchFromGitHub {
+ owner = "hjacobs";
+ repo = "python-clickclick";
+ rev = version;
+ sha256 = "1rij9ws9nhsmagiy1vclzliiqfkxi006rf65qvrw1k3sm2s8p5g0";
+ };
+
+ checkInputs = [ pytestCheckHook pytestcov ];
+ propagatedBuildInputs = [ flake8 click pyyaml six ];
+
+ disabledTests = lib.optionals isPy36 [
+ "test_cli"
+ "test_choice_default"
+ ];
+
+ meta = with stdenv.lib; {
+ description = "Click command line utilities";
+ homepage = https://github.com/hjacobs/python-clickclick/;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ elohmeier ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cliff/default.nix b/nixpkgs/pkgs/development/python-modules/cliff/default.nix
new file mode 100644
index 00000000000..3ba442d0d86
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cliff/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pbr
+, prettytable
+, pyparsing
+, six
+, stevedore
+, pyyaml
+, unicodecsv
+, cmd2
+}:
+
+buildPythonPackage rec {
+ pname = "cliff";
+ version = "2.15.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "fe044273539250a99a5b9915843902e40e4e9b32ac5698c1fae89e31200d649f";
+ };
+
+ propagatedBuildInputs = [
+ pbr
+ prettytable
+ pyparsing
+ six
+ stevedore
+ pyyaml
+ cmd2
+ unicodecsv
+ ];
+
+ # test dependencies are complex
+ # and would require about 20 packages
+ # to be added
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Command Line Interface Formulation Framework";
+ homepage = https://docs.openstack.org/cliff/latest/;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/clifford/default.nix b/nixpkgs/pkgs/development/python-modules/clifford/default.nix
new file mode 100644
index 00000000000..ca95ebbf1f3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/clifford/default.nix
@@ -0,0 +1,50 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, numpy
+, scipy
+, numba
+, future
+, h5py
+, nose
+, isPy27
+}:
+
+buildPythonPackage rec {
+ pname = "clifford";
+ version = "1.0.4";
+ disabled = isPy27;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "7fc5aa76b4f73c697c0ebd2f86c5233e7ca0a5109b80147f4e711bc3de4b3f2c";
+ };
+
+ propagatedBuildInputs = [
+ numpy
+ scipy
+ numba
+ future
+ h5py
+ ];
+
+ checkInputs = [
+ nose
+ ];
+
+ preConfigure = ''
+ substituteInPlace setup.py \
+ --replace "'numba==0.43'" "'numba'"
+ '';
+
+ checkPhase = ''
+ nosetests
+ '';
+
+ meta = with lib; {
+ description = "Numerical Geometric Algebra Module";
+ homepage = https://clifford.readthedocs.io;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cligj/default.nix b/nixpkgs/pkgs/development/python-modules/cligj/default.nix
new file mode 100644
index 00000000000..0ec82efed8b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cligj/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub
+, click, pytest, glibcLocales
+}:
+
+buildPythonPackage rec {
+ pname = "cligj";
+ version = "0.5.0";
+
+ src = fetchFromGitHub {
+ owner = "mapbox";
+ repo = "cligj";
+ rev = version;
+ sha256 = "13vlibbn86dhh6iy8k831vsa249746jnk419wcr9vvr3pqxml6g2";
+ };
+
+ propagatedBuildInputs = [
+ click
+ ];
+
+ checkInputs = [ pytest glibcLocales ];
+
+ checkPhase = ''
+ LC_ALL=en_US.utf-8 pytest tests
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Click params for commmand line interfaces to GeoJSON";
+ homepage = https://github.com/mapbox/cligj;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ knedlsepp ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/clikit/default.nix b/nixpkgs/pkgs/development/python-modules/clikit/default.nix
new file mode 100644
index 00000000000..1ac684e6d69
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/clikit/default.nix
@@ -0,0 +1,30 @@
+{ lib, buildPythonPackage, fetchPypi
+, isPy27, isPy34
+, pylev, pastel, typing, enum34 }:
+
+buildPythonPackage rec {
+ pname = "clikit";
+ version = "0.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0f8ba0kbka208faxdlny8byqb2w2cdyspq73zalymq8vr91796lp";
+ };
+
+ propagatedBuildInputs = [
+ pylev pastel
+ ] ++ lib.optional (isPy27 || isPy34) typing
+ ++ lib.optional isPy27 enum34;
+
+ # The Pypi tarball doesn't include tests, and the GitHub source isn't
+ # buildable until we bootstrap poetry, see
+ # https://github.com/NixOS/nixpkgs/pull/53599#discussion_r245855665
+ doCheck = false;
+
+ meta = with lib; {
+ homepage = https://github.com/sdispater/clikit;
+ description = "A group of utilities to build beautiful and testable command line interfaces";
+ license = licenses.mit;
+ maintainers = with maintainers; [ jakewaksbaum ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/clint/default.nix b/nixpkgs/pkgs/development/python-modules/clint/default.nix
new file mode 100644
index 00000000000..602ab00b084
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/clint/default.nix
@@ -0,0 +1,39 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+, mock
+, blessings
+, nose
+, nose_progressive
+, pillow
+, args
+, pkgs
+}:
+
+buildPythonPackage rec {
+ pname = "clint";
+ version = "0.5.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1an5lkkqk1zha47198p42ji3m94xmzx1a03dn7866m87n4r4q8h5";
+ };
+
+ LC_ALL="en_US.UTF-8";
+
+ checkPhase = ''
+ ${python.interpreter} test_clint.py
+ '';
+
+ buildInputs = [ mock nose nose_progressive pkgs.glibcLocales ];
+ propagatedBuildInputs = [ pillow blessings args ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/kennethreitz/clint;
+ description = "Python Command Line Interface Tools";
+ license = licenses.isc;
+ maintainers = with maintainers; [ domenkozar ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/clize/default.nix b/nixpkgs/pkgs/development/python-modules/clize/default.nix
new file mode 100644
index 00000000000..ef7047afe7d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/clize/default.nix
@@ -0,0 +1,45 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, dateutil
+, sigtools
+, six
+, attrs
+, od
+, docutils
+, repeated_test
+, unittest2
+, pygments
+}:
+
+buildPythonPackage rec {
+ pname = "clize";
+ version = "4.0.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "dbcfba5571dc30aaf90dc98fc279e2aab69d0f8f3665fc0394fbc10a87a2be60";
+ };
+
+ checkInputs = [
+ dateutil
+ pygments
+ repeated_test
+ unittest2
+ ];
+
+ propagatedBuildInputs = [
+ attrs
+ docutils
+ od
+ sigtools
+ six
+ ];
+
+ meta = with stdenv.lib; {
+ description = "Command-line argument parsing for Python";
+ homepage = "https://github.com/epsy/clize";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/closure-linter/default.nix b/nixpkgs/pkgs/development/python-modules/closure-linter/default.nix
new file mode 100644
index 00000000000..b814455da3f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/closure-linter/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, 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 stdenv.lib; {
+ description = "Checks JavaScript files against Google's style guide.";
+ homepage = "https://developers.google.com/closure/utilities/";
+ license = with licenses; [ asl20 ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cloudpickle/default.nix b/nixpkgs/pkgs/development/python-modules/cloudpickle/default.nix
new file mode 100644
index 00000000000..33d036ad8d4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cloudpickle/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytest, mock }:
+
+buildPythonPackage rec {
+ pname = "cloudpickle";
+ version = "0.8.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "3ea6fd33b7521855a97819b3d645f92d51c8763d3ab5df35197cd8e96c19ba6f";
+ };
+
+ buildInputs = [ pytest mock ];
+
+ # See README for tests invocation
+ checkPhase = ''
+ PYTHONPATH=$PYTHONPATH:'.:tests' py.test
+ '';
+
+ # TypeError: cannot serialize '_io.FileIO' object
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Extended pickling support for Python objects";
+ homepage = https://github.com/cloudpipe/cloudpickle;
+ license = with licenses; [ bsd3 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/clustershell/default.nix b/nixpkgs/pkgs/development/python-modules/clustershell/default.nix
new file mode 100644
index 00000000000..4120dda5460
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/clustershell/default.nix
@@ -0,0 +1,89 @@
+{ stdenv, buildPythonPackage, fetchPypi, pyyaml, openssh
+, nose, bc, hostname, coreutils, bash, gnused
+}:
+
+buildPythonPackage rec {
+ pname = "ClusterShell";
+ version = "1.8.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "e913efb4fe017eed9731d5ad8be397509e7f1966e6cb6441ee2bce074b16b310";
+ };
+
+ propagatedBuildInputs = [ pyyaml ];
+
+ postPatch = ''
+ substituteInPlace lib/ClusterShell/Worker/Ssh.py \
+ --replace '"ssh"' '"${openssh}/bin/ssh"' \
+ --replace '"scp"' '"${openssh}/bin/scp"'
+
+ substituteInPlace lib/ClusterShell/Worker/fastsubprocess.py \
+ --replace '"/bin/sh"' '"${bash}/bin/sh"'
+ '';
+
+ checkInputs = [ nose bc hostname coreutils gnused ];
+
+ # Many tests want to open network connections
+ # https://github.com/cea-hpc/clustershell#test-suite
+ #
+ # Several tests fail on Darwin
+ checkPhase = ''
+ for f in tests/*; do
+ substituteInPlace $f \
+ --replace '/bin/hostname' '${hostname}/bin/hostname' \
+ --replace '/bin/sleep' '${coreutils}/bin/sleep' \
+ --replace '"sleep' '"${coreutils}/bin/sleep' \
+ --replace '/bin/echo' '${coreutils}/bin/echo' \
+ --replace '/bin/uname' '${coreutils}/bin/uname' \
+ --replace '/bin/false' '${coreutils}/bin/false' \
+ --replace '/bin/true' '${coreutils}/bin/true' \
+ --replace '/usr/bin/printf' '${coreutils}/bin/printf' \
+ --replace '"sed' '"${gnused}/bin/sed' \
+ --replace ' sed ' ' ${gnused}/bin/sed '
+ done
+
+ rm tests/CLIClushTest.py
+ rm tests/TreeWorkerTest.py
+ rm tests/TaskDistantMixin.py
+ rm tests/TaskDistantTest.py
+ rm tests/TaskDistantPdshMixin.py
+ rm tests/TaskDistantPdshTest.py
+ rm tests/TaskRLimitsTest.py
+
+ nosetests -v \
+ -e test_channel_ctl_shell_remote1 \
+ -e test_channel_ctl_shell_remote2 \
+ -e test_fromall_grouplist \
+ -e test_rank_placeholder \
+ -e test_engine_on_the_fly_launch \
+ -e test_ev_pickup_fanout \
+ -e test_ev_pickup_fanout_legacy \
+ -e test_timeout \
+ -e test_008_broken_pipe_on_write \
+ -e testLocalBufferRCGathering \
+ -e testLocalBuffers \
+ -e testLocalErrorBuffers \
+ -e testLocalFanout \
+ -e testLocalRetcodes \
+ -e testLocalRCBufferGathering \
+ -e testLocalSingleLineBuffers \
+ -e testLocalWorkerFanout \
+ -e testSimpleMultipleCommands \
+ -e testClushConfigSetRlimit \
+ -e testTimerInvalidateInHandler \
+ -e testTimerSetNextFireInHandler \
+ -e test_channel_ctl_shell_mlocal1 \
+ -e test_channel_ctl_shell_mlocal2 \
+ -e test_channel_ctl_shell_mlocal3 \
+ -e test_node_placeholder \
+ tests/*.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Scalable Python framework for cluster administration";
+ homepage = https://cea-hpc.github.io/clustershell;
+ license = licenses.lgpl21;
+ maintainers = [ maintainers.alexvorobiev ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cmarkgfm/default.nix b/nixpkgs/pkgs/development/python-modules/cmarkgfm/default.nix
new file mode 100644
index 00000000000..b2f58887ffb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cmarkgfm/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildPythonPackage, fetchPypi, cffi, pytest }:
+
+buildPythonPackage rec {
+ pname = "cmarkgfm";
+ version = "0.4.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f20900f16377f2109783ae9348d34bc80530808439591c3d3df73d5c7ef1a00c";
+ };
+
+ propagatedBuildInputs = [ cffi ];
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with lib; {
+ description = "Minimal bindings to GitHub's fork of cmark";
+ homepage = https://github.com/jonparrott/cmarkgfm;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cmd2/default.nix b/nixpkgs/pkgs/development/python-modules/cmd2/default.nix
new file mode 100644
index 00000000000..7d78abd075d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cmd2/default.nix
@@ -0,0 +1,60 @@
+{ stdenv, fetchPypi, buildPythonPackage, pythonOlder, isPy3k
+, pyperclip, six, pyparsing, vim, wcwidth, colorama, attrs
+, contextlib2 ? null, typing ? null, setuptools_scm
+, pytest, mock ? null, pytest-mock
+, which, glibcLocales
+}:
+buildPythonPackage rec {
+ pname = "cmd2";
+ version = "0.9.16";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0ggvh38mc1kkrlqdicjz5a16j5v6f6z0nwmcvv8i3y5gaffkfy2b";
+ };
+
+ LC_ALL="en_US.UTF-8";
+
+ postPatch = stdenv.lib.optional stdenv.isDarwin ''
+ # Fake the impure dependencies pbpaste and pbcopy
+ mkdir bin
+ echo '#${stdenv.shell}' > bin/pbpaste
+ echo '#${stdenv.shell}' > bin/pbcopy
+ chmod +x bin/{pbcopy,pbpaste}
+ export PATH=$(realpath bin):$PATH
+ '';
+
+ disabled = !isPy3k;
+
+ buildInputs = [
+ setuptools_scm
+ ];
+
+ propagatedBuildInputs = [
+ colorama
+ pyperclip
+ six
+ pyparsing
+ wcwidth
+ attrs
+ ]
+ ++ stdenv.lib.optionals (pythonOlder "3.5") [contextlib2 typing]
+ ;
+
+
+ doCheck = !stdenv.isDarwin;
+ # pytest-cov
+ # argcomplete will generate errors
+ checkInputs= [ pytest mock which vim glibcLocales pytest-mock ]
+ ++ stdenv.lib.optional (pythonOlder "3.6") [ mock ];
+ checkPhase = ''
+ # test_path_completion_user_expansion might be fixed in the next release
+ py.test -k 'not test_path_completion_user_expansion'
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Enhancements for standard library's cmd module";
+ homepage = https://github.com/python-cmd2/cmd2;
+ maintainers = with maintainers; [ teto ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cmdline/default.nix b/nixpkgs/pkgs/development/python-modules/cmdline/default.nix
new file mode 100644
index 00000000000..cf0cff1f155
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cmdline/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi, pyyaml }:
+
+buildPythonPackage rec {
+ pname = "cmdline";
+ version = "0.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "7cf6af53549892b2218c2f56a199dff54a733be5c5515c0fd626812070b0a86a";
+ };
+
+ # No tests, https://github.com/rca/cmdline/issues/1
+ doCheck = false;
+ propagatedBuildInputs = [ pyyaml ];
+
+ meta = with stdenv.lib; {
+ description = "Utilities for consistent command line tools";
+ homepage = https://github.com/rca/cmdline;
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cmdtest/default.nix b/nixpkgs/pkgs/development/python-modules/cmdtest/default.nix
new file mode 100644
index 00000000000..0d0bc368295
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cmdtest/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, 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 stdenv.lib; {
+ homepage = http://liw.fi/cmdtest/;
+ description = "Black box tests Unix command line tools";
+ license = licenses.gpl3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cntk/default.nix b/nixpkgs/pkgs/development/python-modules/cntk/default.nix
new file mode 100644
index 00000000000..ce388bb1d5d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cntk/default.nix
@@ -0,0 +1,61 @@
+{ lib
+, buildPythonPackage
+, pkgs
+, numpy
+, scipy
+, openmpi
+, enum34
+, protobuf
+, pip
+, python
+, swig
+}:
+
+let
+ cntk = pkgs.cntk;
+in
+buildPythonPackage {
+ inherit (cntk) name version src;
+
+ nativeBuildInputs = [ swig openmpi ];
+ buildInputs = [ cntk openmpi ];
+ propagatedBuildInputs = [ numpy scipy enum34 protobuf pip ];
+
+ CNTK_LIB_PATH = "${cntk}/lib";
+ CNTK_COMPONENT_VERSION = cntk.version;
+ CNTK_VERSION = cntk.version;
+ CNTK_VERSION_BANNER = cntk.version;
+
+ postPatch = ''
+ cd bindings/python
+ sed -i 's,"libmpi.so.12","${openmpi}/lib/libmpi.so",g' cntk/train/distributed.py
+
+ # Remove distro and libs checks; they aren't compatible with NixOS and besides we guarantee
+ # compatibility by providing a package.
+ cat <<EOF > cntk/cntk_py_init.py
+ def cntk_check_distro_info():
+ pass
+ def cntk_check_libs():
+ pass
+ EOF
+ '';
+
+ postInstall = ''
+ rm -rf $out/${python.sitePackages}/cntk/libs
+ ln -s ${cntk}/lib $out/${python.sitePackages}/cntk/libs
+ # It's not installed for some reason.
+ cp cntk/cntk_py.py $out/${python.sitePackages}/cntk
+ '';
+
+ # Actual tests are broken.
+ checkPhase = ''
+ cd $NIX_BUILD_TOP
+ ${python.interpreter} -c "import cntk"
+ '';
+
+ meta = {
+ inherit (cntk.meta) homepage description license maintainers platforms;
+ # doesn't support Python 3.7
+ broken = lib.versionAtLeast python.version "3.7";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cnvkit/default.nix b/nixpkgs/pkgs/development/python-modules/cnvkit/default.nix
new file mode 100644
index 00000000000..905b274a055
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cnvkit/default.nix
@@ -0,0 +1,48 @@
+{ lib
+, fetchPypi
+, rPackages
+, rWrapper
+, buildPythonPackage
+, biopython
+, numpy
+, scipy
+, pandas
+, matplotlib
+, reportlab
+, pysam
+, future
+, pillow
+, pomegranate
+, pyfaidx
+}:
+
+buildPythonPackage rec {
+ pname = "CNVkit";
+ version = "0.9.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1hj8c98s538i0hg5mrz4bw4v07qmcl51rhxq611rj2nglnc9r25y";
+ };
+
+ propagatedBuildInputs = [
+ biopython
+ numpy
+ scipy
+ pandas
+ matplotlib
+ reportlab
+ pyfaidx
+ pysam
+ future
+ pillow
+ pomegranate
+ ];
+
+ meta = with lib; {
+ homepage = "https://cnvkit.readthedocs.io";
+ description = "A Python library and command-line software toolkit to infer and visualize copy number from high-throughput DNA sequencing data";
+ license = licenses.asl20;
+ maintainers = [ maintainers.jbedo ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/codecov/default.nix b/nixpkgs/pkgs/development/python-modules/codecov/default.nix
new file mode 100644
index 00000000000..6b2063f4992
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/codecov/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, buildPythonPackage, fetchPypi, requests, coverage, unittest2 }:
+
+buildPythonPackage rec {
+ pname = "codecov";
+ version = "2.0.15";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8ed8b7c6791010d359baed66f84f061bba5bd41174bf324c31311e8737602788";
+ };
+
+ checkInputs = [ unittest2 ]; # Tests only
+
+ propagatedBuildInputs = [ requests coverage ];
+
+ postPatch = ''
+ sed -i 's/, "argparse"//' setup.py
+ '';
+
+ # No tests in archive
+ doCheck = false;
+
+ meta = {
+ description = "Python report uploader for Codecov";
+ homepage = https://codecov.io/;
+ license = stdenv.lib.licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/codespell/default.nix b/nixpkgs/pkgs/development/python-modules/codespell/default.nix
new file mode 100644
index 00000000000..dfd0be09fab
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/codespell/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildPythonApplication, fetchPypi, pytest, chardet }:
+buildPythonApplication rec {
+ pname = "codespell";
+ version = "1.15.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0c211rzfgmwls8ab8fj21xp9bhxk6ys3xw8w7chp4arjlifc26wg";
+ };
+
+ checkInputs = [ pytest chardet ];
+ checkPhase = ''
+ # We don't want to be affected by the presence of these
+ rm -r codespell_lib setup.cfg
+ # test_command assumes too much about the execution environment
+ pytest --pyargs codespell_lib.tests -k "not test_command"
+ '';
+
+ meta = {
+ description = "Fix common misspellings in source code";
+ homepage = "https://github.com/codespell-project/codespell";
+ license = with lib.licenses; [ gpl2 cc-by-sa-30 ];
+ maintainers = with lib.maintainers; [ johnazoidberg ];
+ platforms = lib.platforms.all;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cogapp/default.nix b/nixpkgs/pkgs/development/python-modules/cogapp/default.nix
new file mode 100644
index 00000000000..b660ed02257
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cogapp/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "cogapp";
+ version = "2.5.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f8cf2288fb5a2087eb4a00d8b347ddc86e9058d4ab26b8c868433eb401adfe1c";
+ };
+
+ # there are no tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A code generator for executing Python snippets in source files";
+ homepage = http://nedbatchelder.com/code/cog;
+ license = licenses.mit;
+ maintainers = with maintainers; [ lovek323 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/coilmq/default.nix b/nixpkgs/pkgs/development/python-modules/coilmq/default.nix
new file mode 100644
index 00000000000..90eb1edc2cd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/coilmq/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, 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 stdenv.lib; {
+ description = "Simple, lightweight, and easily extensible STOMP message broker";
+ homepage = http://code.google.com/p/coilmq/;
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/coinmarketcap/default.nix b/nixpkgs/pkgs/development/python-modules/coinmarketcap/default.nix
new file mode 100644
index 00000000000..bcf32714796
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/coinmarketcap/default.nix
@@ -0,0 +1,19 @@
+{ lib, buildPythonPackage, fetchPypi, requests-cache }:
+
+buildPythonPackage rec {
+ pname = "coinmarketcap";
+ version = "5.0.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1cfee31bf330a17cedf188e4e99588e6a4c6c969c93da71f55a9f4ec6a6c216f";
+ };
+
+ propagatedBuildInputs = [ requests-cache ];
+
+ meta = with lib; {
+ description = "A python wrapper around the https://coinmarketcap.com API.";
+ homepage = https://github.com/barnumbirr/coinmarketcap;
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/colander/default.nix b/nixpkgs/pkgs/development/python-modules/colander/default.nix
new file mode 100644
index 00000000000..a3e613652db
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/colander/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPythonPackage, fetchPypi
+, translationstring, iso8601, enum34 }:
+
+buildPythonPackage rec {
+ pname = "colander";
+ version = "1.7.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d758163a22d22c39b9eaae049749a5cd503f341231a02ed95af480b1145e81f2";
+ };
+
+ propagatedBuildInputs = [ translationstring iso8601 enum34 ];
+
+ meta = with lib; {
+ description = "A simple schema-based serialization and deserialization library";
+ homepage = https://docs.pylonsproject.org/projects/colander/en/latest/;
+ license = licenses.free; # http://repoze.org/LICENSE.txt
+ maintainers = with maintainers; [ domenkozar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/colanderalchemy/default.nix b/nixpkgs/pkgs/development/python-modules/colanderalchemy/default.nix
new file mode 100644
index 00000000000..686608445ab
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/colanderalchemy/default.nix
@@ -0,0 +1,38 @@
+{ stdenv
+, buildPythonPackage
+, fetchpatch
+, fetchPypi
+, unittest2
+, colander
+, sqlalchemy
+}:
+
+buildPythonPackage rec {
+ pname = "ColanderAlchemy";
+ version = "0.3.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "11wcni2xmfmy001rj62q2pwf305vvngkrfm5c4zlwvgbvlsrvnnw";
+ };
+
+ patches = [
+ (fetchpatch {
+ url = "https://github.com/stefanofontanelli/ColanderAlchemy/commit/b45fe35f2936a5ccb705e9344075191e550af6c9.patch";
+ sha256 = "1kf278wjq49zd6fhpp55vdcawzdd107767shzfck522sv8gr6qvx";
+ })
+ ];
+
+ buildInputs = [ unittest2 ];
+ propagatedBuildInputs = [ colander sqlalchemy ];
+
+ meta = with stdenv.lib; {
+ description = "Autogenerate Colander schemas based on SQLAlchemy models";
+ homepage = https://github.com/stefanofontanelli/ColanderAlchemy;
+ license = licenses.mit;
+ # ColanderAlchemy's tests currently fail with colander >1.6.0
+ # (see https://github.com/stefanofontanelli/ColanderAlchemy/issues/107)
+ broken = versionOlder "1.6.0" colander.version;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/colorama/default.nix b/nixpkgs/pkgs/development/python-modules/colorama/default.nix
new file mode 100644
index 00000000000..e85c95b85bd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/colorama/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchPypi, buildPythonPackage }:
+
+buildPythonPackage rec {
+ pname = "colorama";
+ version = "0.4.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "05eed71e2e327246ad6b38c540c4a3117230b19679b875190486ddd2d721422d";
+ };
+
+ # No tests in archive
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/tartley/colorama;
+ license = licenses.bsd3;
+ description = "Cross-platform colored terminal text";
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/colorcet/default.nix b/nixpkgs/pkgs/development/python-modules/colorcet/default.nix
new file mode 100644
index 00000000000..b877c4cabd5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/colorcet/default.nix
@@ -0,0 +1,48 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, param
+, pyct
+, nbsmoke
+, flake8
+, pytest
+, pytest-mpl
+}:
+
+buildPythonPackage rec {
+ pname = "colorcet";
+ version = "2.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ab1d16aba97f54af190631c7777c356b04b53de549672ff6b01c66d716eddff3";
+ };
+
+ propagatedBuildInputs = [
+ param
+ pyct
+ ];
+
+ checkInputs = [
+ nbsmoke
+ pytest
+ flake8
+ pytest-mpl
+ ];
+
+ checkPhase = ''
+ export HOME=$(mktemp -d)
+ mkdir -p $HOME/.config/matplotlib
+ echo "backend: ps" > $HOME/.config/matplotlib/matplotlibrc
+ ln -s $HOME/.config/matplotlib $HOME/.matplotlib
+
+ pytest colorcet
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Collection of perceptually uniform colormaps";
+ homepage = https://colorcet.pyviz.org;
+ license = licenses.cc-by-40;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/colorclass/default.nix b/nixpkgs/pkgs/development/python-modules/colorclass/default.nix
new file mode 100644
index 00000000000..b035bb9b57c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/colorclass/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "colorclass";
+ version = "2.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b05c2a348dfc1aff2d502527d78a5b7b7e2f85da94a96c5081210d8e9ee8e18b";
+ };
+
+ # No tests in archive
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/Robpol86/colorclass;
+ license = licenses.mit;
+ description = "Automatic support for console colors";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/colored/default.nix b/nixpkgs/pkgs/development/python-modules/colored/default.nix
new file mode 100644
index 00000000000..42443c873d7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/colored/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "colored";
+ version = "1.3.93";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0xbhq9nd9xz3b6w0c4q33jfgnv8jid023v2fyhi7hsrz1scym5l2";
+ };
+
+ # No proper test suite
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://gitlab.com/dslackw/colored;
+ description = "Simple library for color and formatting to terminal";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/coloredlogs/default.nix b/nixpkgs/pkgs/development/python-modules/coloredlogs/default.nix
new file mode 100644
index 00000000000..48eb4520b16
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/coloredlogs/default.nix
@@ -0,0 +1,34 @@
+{ lib, buildPythonPackage, fetchFromGitHub, stdenv, isPy3k, fetchpatch, humanfriendly, verboselogs, capturer, pytest, mock, utillinux }:
+
+buildPythonPackage rec {
+ pname = "coloredlogs";
+ version = "10.0";
+
+ src = fetchFromGitHub {
+ owner = "xolox";
+ repo = "python-coloredlogs";
+ rev = version;
+ sha256 = "0rdvp4dfvzhx7z7s2jdl3fv7x1hazgpy5gc7bcf05bnbv2iia54a";
+ };
+
+ # patch by risicle
+ patches = lib.optional (stdenv.isDarwin && isPy3k) (fetchpatch {
+ name = "darwin-py3-capture-fix.patch";
+ url = "https://github.com/xolox/python-coloredlogs/pull/74.patch";
+ sha256 = "0pk7k94iz0gdripw623vzdl4hd83vwhsfzshl8pbvh1n6swi0xx9";
+ });
+
+ checkPhase = ''
+ PATH=$PATH:$out/bin pytest . -k "not test_plain_text_output_format"
+ '';
+ checkInputs = [ pytest mock utillinux ];
+
+ propagatedBuildInputs = [ humanfriendly verboselogs capturer ];
+
+ meta = with lib; {
+ description = "Colored stream handler for Python's logging module";
+ homepage = https://github.com/xolox/python-coloredlogs;
+ license = licenses.mit;
+ maintainers = with maintainers; [ eyjhb ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/colorlog/default.nix b/nixpkgs/pkgs/development/python-modules/colorlog/default.nix
new file mode 100644
index 00000000000..edcd040b066
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/colorlog/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytest }:
+
+buildPythonPackage rec {
+ pname = "colorlog";
+ version = "4.0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "3cf31b25cbc8f86ec01fef582ef3b840950dea414084ed19ab922c8b493f9b42";
+ };
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ py.test -p no:logging
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Log formatting with colors";
+ homepage = https://github.com/borntyping/python-colorlog;
+ license = licenses.mit;
+ maintainers = with maintainers; [ dotlambda ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/colorlover/default.nix b/nixpkgs/pkgs/development/python-modules/colorlover/default.nix
new file mode 100644
index 00000000000..2e57ea538c9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/colorlover/default.nix
@@ -0,0 +1,22 @@
+{ buildPythonPackage, fetchPypi, stdenv
+}:
+
+buildPythonPackage rec {
+ pname = "colorlover";
+ version = "0.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b8fb7246ab46e1f5e6715649453c1762e245a515de5ff2d2b4aab7a6e67fa4e2";
+ };
+
+ # no tests included in distributed archive
+ doCheck = false;
+
+ meta = {
+ homepage = https://github.com/jackparmer/colorlover;
+ description = "Color scales in Python for humans";
+ license = stdenv.lib.licenses.mit;
+ maintainers = with stdenv.lib.maintainers; [ globin ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/colour/default.nix b/nixpkgs/pkgs/development/python-modules/colour/default.nix
new file mode 100644
index 00000000000..a162b21b083
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/colour/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi, d2to1 }:
+
+buildPythonPackage rec {
+ pname = "colour";
+ version = "0.1.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "af20120fefd2afede8b001fbef2ea9da70ad7d49fafdb6489025dae8745c3aee";
+ };
+
+ buildInputs = [ d2to1 ];
+
+ meta = with stdenv.lib; {
+ description = "Converts and manipulates common color representation (RGB, HSV, web, ...)";
+ homepage = https://github.com/vaab/colour;
+ license = licenses.bsd2;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/commonmark/default.nix b/nixpkgs/pkgs/development/python-modules/commonmark/default.nix
new file mode 100644
index 00000000000..93eb0327286
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/commonmark/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k, glibcLocales, future }:
+
+buildPythonPackage rec {
+ pname = "commonmark";
+ version = "0.8.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "abcbc854e0eae5deaf52ae5e328501b78b4a0758bf98ac8bb792fce993006084";
+ };
+
+ preCheck = ''
+ export LC_ALL="en_US.UTF-8"
+ '';
+
+ # UnicodeEncodeError on Python 2
+ doCheck = isPy3k;
+
+ checkInputs = [ glibcLocales ];
+ propagatedBuildInputs = [ future ];
+
+ meta = with lib; {
+ description = "Python parser for the CommonMark Markdown spec";
+ homepage = https://github.com/rolandshoemaker/CommonMark-py;
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/conda/default.nix b/nixpkgs/pkgs/development/python-modules/conda/default.nix
new file mode 100644
index 00000000000..a240ea21e3e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/conda/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pycosat
+, requests
+, ruamel_yaml
+, isPy3k
+, enum34
+}:
+
+# Note: this installs conda as a library. The application cannot be used.
+# This is likely therefore NOT what you're looking for.
+
+buildPythonPackage rec {
+ pname = "conda";
+ version = "4.3.16";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a91ef821343dea3ba9670f3d10b36c1ace4f4c36d70c175d8fc8886e94285953";
+ };
+
+ propagatedBuildInputs = [ pycosat requests ruamel_yaml ] ++ lib.optional (!isPy3k) enum34;
+
+ # No tests
+ doCheck = false;
+
+ meta = {
+ description = "OS-agnostic, system-level binary package manager";
+ homepage = https://github.com/conda/conda;
+ license = lib.licenses.bsd3;
+ };
+
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/configargparse/default.nix b/nixpkgs/pkgs/development/python-modules/configargparse/default.nix
new file mode 100644
index 00000000000..7d53f56a5a0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/configargparse/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "ConfigArgParse";
+ version = "0.14.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "149fy4zya0rsnlkvxbbq43cyr8lscb5k4pj1m6n7f1grwcmzwbif";
+ };
+
+ # no tests in tarball
+ doCheck = false;
+
+ meta = with lib; {
+ description = "A drop-in replacement for argparse";
+ homepage = https://github.com/zorro3/ConfigArgParse;
+ license = licenses.mit;
+ maintainers = [ maintainers.willibutz ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/configobj/default.nix b/nixpkgs/pkgs/development/python-modules/configobj/default.nix
new file mode 100644
index 00000000000..029f35ac87a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/configobj/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, buildPythonPackage
+, fetchFromGitHub
+, six
+, mock, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "configobj";
+ version = "5.0.6";
+
+ # Pypi archives don't contain the tests
+ src = fetchFromGitHub {
+ owner = "DiffSK";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "0x97794nk3dfn0i3si9fv7y19jnpnarb34bkdwlz7ii7ag6xihhw";
+ };
+
+
+ propagatedBuildInputs = [ six ];
+
+ checkPhase = ''
+ pytest --deselect=tests/test_configobj.py::test_options_deprecation
+ '';
+
+ checkInputs = [ mock pytest ];
+
+ meta = with stdenv.lib; {
+ description = "Config file reading, writing and validation";
+ homepage = https://pypi.python.org/pypi/configobj;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/configparser/default.nix b/nixpkgs/pkgs/development/python-modules/configparser/default.nix
new file mode 100644
index 00000000000..7fce23f89c1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/configparser/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "configparser";
+ version = "3.7.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "da60d0014fd8c55eb48c1c5354352e363e2d30bbf7057e5e171a468390184c75";
+ };
+
+ # No tests available
+ doCheck = false;
+
+ preConfigure = ''
+ export LC_ALL=${if stdenv.isDarwin then "en_US" else "C"}.UTF-8
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Updated configparser from Python 3.7 for Python 2.6+.";
+ license = licenses.mit;
+ homepage = https://github.com/jaraco/configparser;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/configshell/default.nix b/nixpkgs/pkgs/development/python-modules/configshell/default.nix
new file mode 100644
index 00000000000..9b54f439847
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/configshell/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchFromGitHub, buildPythonPackage, pyparsing, six, urwid }:
+
+buildPythonPackage rec {
+ pname = "configshell";
+ version = "1.1.fb25";
+
+ src = fetchFromGitHub {
+ owner = "open-iscsi";
+ repo ="${pname}-fb";
+ rev = "v${version}";
+ sha256 = "0zpr2n4105qqsklyfyr9lzl1rhxjcv0mnsl57hgk0m763w6na90h";
+ };
+
+ propagatedBuildInputs = [ pyparsing six urwid ];
+
+ meta = with stdenv.lib; {
+ description = "A Python library for building configuration shells";
+ homepage = https://github.com/open-iscsi/configshell-fb;
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/confluent-kafka/default.nix b/nixpkgs/pkgs/development/python-modules/confluent-kafka/default.nix
new file mode 100644
index 00000000000..9e4f4072bf6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/confluent-kafka/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k, rdkafka, requests, avro3k, avro, futures, enum34 }:
+
+buildPythonPackage rec {
+ version = "1.0.1";
+ pname = "confluent-kafka";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "04bsnyhldcvscdj0dg3hm5k27vmhfi9k6bwz963sd3q2h7g9k6kg";
+ };
+
+ buildInputs = [ rdkafka requests ] ++ (if isPy3k then [ avro3k ] else [ enum34 avro futures ]) ;
+
+ # No tests in PyPi Tarball
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Confluent's Apache Kafka client for Python";
+ homepage = https://github.com/confluentinc/confluent-kafka-python;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ mlieberman85 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/connexion/default.nix b/nixpkgs/pkgs/development/python-modules/connexion/default.nix
new file mode 100644
index 00000000000..bc1356a7274
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/connexion/default.nix
@@ -0,0 +1,94 @@
+{ buildPythonPackage
+, fetchFromGitHub
+, isPy3k
+, glibcLocales
+, lib
+, pythonOlder
+
+, aiohttp
+, aiohttp-swagger
+, aiohttp-jinja2
+, clickclick
+, decorator
+, flake8
+, flask
+, gevent
+, inflection
+, jsonschema
+, mock
+, openapi-spec-validator
+, pathlib
+, pytest
+, pytest-aiohttp
+, pytestcov
+, pyyaml
+, requests
+, six
+, swagger-ui-bundle
+, testfixtures
+, typing
+, ujson
+}:
+
+buildPythonPackage rec {
+ pname = "connexion";
+ version = "2.3.0";
+
+ # we're fetching from GitHub because tests weren't distributed on PyPi
+ src = fetchFromGitHub {
+ owner = "zalando";
+ repo = pname;
+ rev = version;
+ sha256 = "1xdm3misxwgrl87ms0vvn0h4rjwzlmmi7kcra2ahs40iaraf33ln";
+ };
+
+ checkInputs = [
+ decorator
+ mock
+ pytest
+ pytestcov
+ testfixtures
+ flask
+ swagger-ui-bundle
+ ]
+ ++ lib.optionals isPy3k [ aiohttp aiohttp-jinja2 aiohttp-swagger ujson pytest-aiohttp ]
+ ++ lib.optional (pythonOlder "3.7") glibcLocales
+ ;
+ propagatedBuildInputs = [
+ clickclick
+ jsonschema
+ pyyaml
+ requests
+ six
+ inflection
+ openapi-spec-validator
+ swagger-ui-bundle
+ flask
+ ]
+ ++ lib.optional (pythonOlder "3.4") pathlib
+ ++ lib.optional (pythonOlder "3.6") typing
+ ++ lib.optionals isPy3k [ aiohttp aiohttp-jinja2 aiohttp-swagger ujson ]
+ ;
+
+ preConfigure = lib.optional (pythonOlder "3.7") ''
+ export LANG=en_US.UTF-8
+ '';
+
+ postPatch = ''
+ substituteInPlace setup.py --replace "'aiohttp>=2.3.10,<3.5.2'" "'aiohttp>=2.3.10'"
+ '';
+
+ checkPhase = if isPy3k then ''
+ pytest -k "not test_app_get_root_path and \
+ not test_verify_oauth_scopes_remote and \
+ not test_verify_oauth_scopes_local and \
+ not test_run_with_aiohttp_not_installed"''
+ else "pytest --ignore=tests/aiohttp";
+
+ meta = with lib; {
+ description = "Swagger/OpenAPI First framework on top of Flask";
+ homepage = https://github.com/zalando/connexion/;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ elohmeier ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/constantly/default.nix b/nixpkgs/pkgs/development/python-modules/constantly/default.nix
new file mode 100644
index 00000000000..4766a1285ac
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/constantly/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, buildPythonPackage, fetchPypi
+}:
+buildPythonPackage rec {
+ pname = "constantly";
+ version = "15.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0dgwdla5kfpqz83hfril716inm41hgn9skxskvi77605jbmp4qsq";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/twisted/constantly;
+ description = "symbolic constant support";
+ license = licenses.mit;
+ maintainers = [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/construct/default.nix b/nixpkgs/pkgs/development/python-modules/construct/default.nix
new file mode 100644
index 00000000000..1009727c29c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/construct/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub
+, six, pytest, arrow
+}:
+
+buildPythonPackage rec {
+ pname = "construct";
+ version = "2.9.45";
+
+ src = fetchFromGitHub {
+ owner = pname;
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "0ig66xrzswpkhhmw123p2nvr15a9lxz54a1fmycfdh09327c1d3y";
+ };
+
+ propagatedBuildInputs = [ six ];
+
+ checkInputs = [ pytest arrow ];
+
+ # TODO: figure out missing dependencies
+ doCheck = false;
+ checkPhase = ''
+ py.test -k 'not test_numpy and not test_gallery' tests
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Powerful declarative parser (and builder) for binary data";
+ homepage = https://construct.readthedocs.org/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ bjornfor ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/consul/default.nix b/nixpkgs/pkgs/development/python-modules/consul/default.nix
new file mode 100644
index 00000000000..5c9e83b8d20
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/consul/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, requests, six, pytest }:
+
+buildPythonPackage rec {
+ pname = "python-consul";
+ version = "1.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "168f1fa53948047effe4f14d53fc1dab50192e2a2cf7855703f126f469ea11f4";
+ };
+
+ buildInputs = [ requests six pytest ];
+
+ # No tests distributed. https://github.com/cablehead/python-consul/issues/133
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Python client for Consul (https://www.consul.io/)";
+ homepage = https://github.com/cablehead/python-consul;
+ license = licenses.mit;
+ maintainers = with maintainers; [ desiderius ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/contexter/default.nix b/nixpkgs/pkgs/development/python-modules/contexter/default.nix
new file mode 100644
index 00000000000..0fa72dfa687
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/contexter/default.nix
@@ -0,0 +1,14 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "contexter";
+ version = "0.1.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c730890b1a915051414a6350d8ea1cddca7d01d8f756badedb30b9bf305ea0a8";
+ };
+
+ meta = with stdenv.lib; {
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/contextlib2/default.nix b/nixpkgs/pkgs/development/python-modules/contextlib2/default.nix
new file mode 100644
index 00000000000..46fcc378be9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/contextlib2/default.nix
@@ -0,0 +1,23 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, unittest2
+}:
+
+buildPythonPackage rec {
+ pname = "contextlib2";
+ version = "0.5.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "509f9419ee91cdd00ba34443217d5ca51f5a364a404e1dce9e8979cea969ca48";
+ };
+
+ checkInputs = [ unittest2 ];
+
+ meta = {
+ description = "Backports and enhancements for the contextlib module";
+ homepage = https://contextlib2.readthedocs.org/;
+ license = lib.licenses.psfl;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/contextvars/default.nix b/nixpkgs/pkgs/development/python-modules/contextvars/default.nix
new file mode 100644
index 00000000000..b378c901fad
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/contextvars/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPythonPackage, fetchPypi, isPy36, immutables }:
+
+buildPythonPackage rec {
+ pname = "contextvars";
+ version = "2.4";
+ disabled = !isPy36;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f38c908aaa59c14335eeea12abea5f443646216c4e29380d7bf34d2018e2c39e";
+ };
+
+ propagatedBuildInputs = [ immutables ];
+
+ meta = {
+ description = "A backport of the Python 3.7 contextvars module for Python 3.6";
+ homepage = https://github.com/MagicStack/contextvars;
+ license = with lib.licenses; [ asl20 ];
+ maintainers = with lib.maintainers; [ catern ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cookiecutter/default.nix b/nixpkgs/pkgs/development/python-modules/cookiecutter/default.nix
new file mode 100644
index 00000000000..abccd1e136d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cookiecutter/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPyPy
+, pytest, pytestcov, pytest-mock, freezegun
+, jinja2, future, binaryornot, click, whichcraft, poyo, jinja2_time, requests }:
+
+buildPythonPackage rec {
+ pname = "cookiecutter";
+ version = "1.6.0";
+
+ # not sure why this is broken
+ disabled = isPyPy;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1316a52e1c1f08db0c9efbf7d876dbc01463a74b155a0d83e722be88beda9a3e";
+ };
+
+ checkInputs = [ pytest pytestcov pytest-mock freezegun ];
+ propagatedBuildInputs = [
+ jinja2 future binaryornot click whichcraft poyo jinja2_time requests
+ ];
+
+ # requires network access for cloning git repos
+ doCheck = false;
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/audreyr/cookiecutter;
+ description = "A command-line utility that creates projects from project templates";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ kragniz ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cookies/default.nix b/nixpkgs/pkgs/development/python-modules/cookies/default.nix
new file mode 100644
index 00000000000..1b8e5b6061d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cookies/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "cookies";
+ version = "2.2.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "13pfndz8vbk4p2a44cfbjsypjarkrall71pgc97glk5fiiw9idnn";
+ };
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Friendlier RFC 6265-compliant cookie parser/renderer";
+ homepage = https://github.com/sashahart/cookies;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cornice/default.nix b/nixpkgs/pkgs/development/python-modules/cornice/default.nix
new file mode 100644
index 00000000000..2b0c0665fa3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cornice/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pyramid
+, simplejson
+, six
+, venusian
+}:
+
+buildPythonPackage rec {
+ pname = "cornice";
+ version = "3.5.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "e95dceaee9ce16a09564c1226977a0fe62f1399701581b59c4188f5c91a86687";
+ };
+
+ propagatedBuildInputs = [ pyramid simplejson six venusian ];
+
+ # tests not packaged with pypi release
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/mozilla-services/cornice;
+ description = "Build Web Services with Pyramid";
+ license = licenses.mpl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cov-core/default.nix b/nixpkgs/pkgs/development/python-modules/cov-core/default.nix
new file mode 100644
index 00000000000..ad85218709e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cov-core/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, buildPythonPackage, fetchPypi, coverage }:
+
+buildPythonPackage rec {
+ pname = "cov-core";
+ version = "1.15.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0k3np9ymh06yv1ib96sb6wfsxjkqhmik8qfsn119vnhga9ywc52a";
+ };
+
+ propagatedBuildInputs = [ coverage ];
+
+ meta = with stdenv.lib; {
+ description = "Plugin core for use by pytest-cov, nose-cov and nose2-cov";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/coverage/default.nix b/nixpkgs/pkgs/development/python-modules/coverage/default.nix
new file mode 100644
index 00000000000..b6eb73a8038
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/coverage/default.nix
@@ -0,0 +1,25 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "coverage";
+ version = "4.5.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "9de60893fb447d1e797f6bf08fdf0dbcda0c1e34c1b06c92bd3a363c0ea8c609";
+ };
+
+ # No tests in archive
+ doCheck = false;
+ checkInputs = [ mock ];
+
+ meta = {
+ description = "Code coverage measurement for python";
+ homepage = http://nedbatchelder.com/code/coverage/;
+ license = lib.licenses.bsd3;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/coveralls/default.nix b/nixpkgs/pkgs/development/python-modules/coveralls/default.nix
new file mode 100644
index 00000000000..cda30943b0e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/coveralls/default.nix
@@ -0,0 +1,58 @@
+{ buildPythonPackage
+, lib
+, fetchPypi
+, mock
+, pytest
+, pytestrunner
+, sh
+, coverage
+, docopt
+, requests
+, urllib3
+, git
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "coveralls";
+ name = "${pname}-python-${version}";
+ version = "1.5.1";
+
+ # wanted by tests
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ab638e88d38916a6cedbf80a9cd8992d5fa55c77ab755e262e00b36792b7cd6d";
+ };
+
+ checkInputs = [
+ mock
+ sh
+ pytest
+ git
+ ];
+
+ buildInputs = [
+ pytestrunner
+ ];
+
+ # FIXME: tests requires .git directory to be present
+ doCheck = false;
+
+ checkPhase = ''
+ python setup.py test
+ '';
+
+ propagatedBuildInputs = [
+ coverage
+ docopt
+ requests
+ ] ++ lib.optional (!isPy3k) urllib3;
+
+ meta = {
+ description = "Show coverage stats online via coveralls.io";
+ homepage = https://github.com/coveralls-clients/coveralls-python;
+ license = lib.licenses.mit;
+ };
+}
+
+
diff --git a/nixpkgs/pkgs/development/python-modules/cozy/default.nix b/nixpkgs/pkgs/development/python-modules/cozy/default.nix
new file mode 100644
index 00000000000..7515891456e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cozy/default.nix
@@ -0,0 +1,40 @@
+{ buildPythonPackage, isPy3k, fetchFromGitHub, lib,
+ z3, ply, python-igraph, oset, ordered-set, dictionaries }:
+
+buildPythonPackage {
+ pname = "cozy";
+ version = "2.0a1";
+
+ propagatedBuildInputs = [
+ z3 ply python-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.
+ postPatch = ''
+ sed -i -e '/z3-solver/d' requirements.txt
+ '';
+
+ # Tests are not correctly set up in the source tree.
+ doCheck = false;
+
+ # There is some first-time-run codegen that we will force to happen.
+ postInstall = ''
+ $out/bin/cozy --help
+ '';
+
+ disabled = !isPy3k;
+
+ meta = {
+ description = "The collection synthesizer";
+ homepage = https://cozy.uwplse.org/;
+ license = lib.licenses.asl20;
+ maintainers = [ lib.maintainers.MostAwesomeDude ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cram/default.nix b/nixpkgs/pkgs/development/python-modules/cram/default.nix
new file mode 100644
index 00000000000..f27cfc44e57
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cram/default.nix
@@ -0,0 +1,32 @@
+{stdenv, lib, buildPythonPackage, fetchPypi, bash, which}:
+
+buildPythonPackage rec {
+ version = "0.7";
+ pname = "cram";
+
+ checkInputs = [ which ];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0bvz6fwdi55rkrz3f50zsy35gvvwhlppki2yml5bj5ffy9d499vx";
+ };
+
+ postPatch = ''
+ patchShebangs scripts/cram
+ substituteInPlace tests/test.t \
+ --replace "/bin/bash" "${bash}/bin/bash"
+ '';
+
+ checkPhase = ''
+ scripts/cram tests
+ '';
+
+ meta = {
+ description = "A simple testing framework for command line applications";
+ homepage = https://bitheap.org/cram/;
+ license = lib.licenses.gpl2Plus;
+ maintainers = with lib.maintainers; [ jluttine ];
+ # Tests fail on i686: https://hydra.nixos.org/build/52896671/nixlog/4
+ broken = stdenv.isi686;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/crayons/default.nix b/nixpkgs/pkgs/development/python-modules/crayons/default.nix
new file mode 100644
index 00000000000..16b3998eb85
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/crayons/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchPypi, buildPythonPackage, colorama }:
+
+buildPythonPackage rec {
+ pname = "crayons";
+ version = "0.1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "17c0v0dkk8sn8kyyy2w7myxq9981glrbczh6h8sdcr750lb6j5sy";
+ };
+
+ propagatedBuildInputs = [ colorama ];
+
+ meta = with stdenv.lib; {
+ description = "TextUI colors for Python";
+ homepage = https://github.com/kennethreitz/crayons;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/crc16/default.nix b/nixpkgs/pkgs/development/python-modules/crc16/default.nix
new file mode 100644
index 00000000000..01f5bb8a7e5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/crc16/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "crc16";
+ version = "0.1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "15nkx0pa4lskwin84flpk8fsw3jqg6wic6v3s83syjqg76h6my61";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = "https://code.google.com/archive/p/pycrc16/";
+ description = "Python library for calculating CRC16";
+ license = licenses.lgpl3;
+ maintainers = with maintainers; [ abbradar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/crcmod/default.nix b/nixpkgs/pkgs/development/python-modules/crcmod/default.nix
new file mode 100644
index 00000000000..f85e045d525
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/crcmod/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "crcmod";
+ version = "1.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "07k0hgr42vw2j92cln3klxka81f33knd7459cn3d8aszvfh52w6w";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Python module for generating objects that compute the Cyclic Redundancy Check (CRC)";
+ homepage = http://crcmod.sourceforge.net/;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/credstash/default.nix b/nixpkgs/pkgs/development/python-modules/credstash/default.nix
new file mode 100644
index 00000000000..e761792bb99
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/credstash/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, buildPythonPackage, fetchPypi, cryptography, boto3, pyyaml, docutils, nose }:
+
+buildPythonPackage rec {
+ pname = "credstash";
+ version = "1.15.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "814560f99ae2409e2c6d906d878f9dadada5d1d0a950aafb6b2c0d535291bdfb";
+ };
+
+ # The install phase puts an executable and a copy of the library it imports in
+ # bin/credstash and bin/credstash.py, despite the fact that the library is also
+ # installed to lib/python<version>/site-packages/credstash.py.
+ # If we apply wrapPythonPrograms to bin/credstash.py then the executable will try
+ # to import the credstash module from the resulting shell script. Removing this
+ # file ensures that Python imports the module from site-packages library.
+ postInstall = "rm $out/bin/credstash.py";
+
+ nativeBuildInputs = [ nose ];
+
+ propagatedBuildInputs = [ cryptography boto3 pyyaml docutils ];
+
+ # No tests in archive
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A utility for managing secrets in the cloud using AWS KMS and DynamoDB";
+ homepage = https://github.com/LuminalOSS/credstash;
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cryptacular/default.nix b/nixpkgs/pkgs/development/python-modules/cryptacular/default.nix
new file mode 100644
index 00000000000..02c1c420bfd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cryptacular/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy27, pythonAtLeast
+, coverage, nose, pbkdf2 }:
+
+buildPythonPackage rec {
+ pname = "cryptacular";
+ version = "1.4.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "18fl7phl6r9xiwz8f1jpkahkv21wimmiq72gmrqncccv7z806gr7";
+ };
+
+ buildInputs = [ coverage nose ];
+ propagatedBuildInputs = [ pbkdf2 ];
+
+ # TODO: tests fail: TypeError: object of type 'NoneType' has no len()
+ doCheck = false;
+
+ # Python >=2.7.15, >=3.6.5 are incompatible:
+ # https://bitbucket.org/dholth/cryptacular/issues/11
+ disabled = isPy27 || pythonAtLeast "3.6";
+
+ meta = with stdenv.lib; {
+ maintainers = with maintainers; [ domenkozar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cryptography/default.nix b/nixpkgs/pkgs/development/python-modules/cryptography/default.nix
new file mode 100644
index 00000000000..6b20b4b570a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cryptography/default.nix
@@ -0,0 +1,73 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, openssl
+, cryptography_vectors
+, darwin
+, asn1crypto
+, packaging
+, six
+, pythonOlder
+, enum34
+, ipaddress
+, isPyPy
+, cffi
+, pytest
+, pretend
+, iso8601
+, pytz
+, hypothesis
+}:
+
+buildPythonPackage rec {
+ pname = "cryptography";
+ version = "2.7"; # Also update the hash in vectors.nix
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1inlnr36kl36551c9rcad99jmhk81v33by3glkadwdcgmi17fd76";
+ };
+
+ outputs = [ "out" "dev" ];
+
+ buildInputs = [ openssl ]
+ ++ stdenv.lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.Security;
+ propagatedBuildInputs = [
+ asn1crypto
+ packaging
+ six
+ ] ++ stdenv.lib.optional (pythonOlder "3.4") enum34
+ ++ stdenv.lib.optional (pythonOlder "3.3") ipaddress
+ ++ stdenv.lib.optional (!isPyPy) cffi;
+
+ 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 stdenv.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.4+, and PyPy 5.3+.
+ '';
+ homepage = https://github.com/pyca/cryptography;
+ license = with licenses; [ asl20 bsd3 psfl ];
+ maintainers = with maintainers; [ primeos ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cryptography/vectors.nix b/nixpkgs/pkgs/development/python-modules/cryptography/vectors.nix
new file mode 100644
index 00000000000..ea24ed90801
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cryptography/vectors.nix
@@ -0,0 +1,23 @@
+{ 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 = "1g38zw90510azyfrj6mxbslx2gp9yrnv5dac0w2819k9ssdznbgi";
+ };
+
+ # 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/nixpkgs/pkgs/development/python-modules/css-parser/default.nix b/nixpkgs/pkgs/development/python-modules/css-parser/default.nix
new file mode 100644
index 00000000000..8b2fe0929c7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/css-parser/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "css-parser";
+ version = "1.0.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c7ab355512ae51334ba6791a7e4d553f87bef17ba2026f1cc9bf3b17a7779d44";
+ };
+
+ # Test suite not included in tarball yet
+ # See https://github.com/ebook-utils/css-parser/pull/2
+ doCheck = false;
+
+ meta = with lib; {
+ description = "A CSS Cascading Style Sheets library for Python";
+ homepage = https://github.com/ebook-utils/css-parser;
+ license = licenses.lgpl3Plus;
+ maintainers = with maintainers; [ jethro ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/csscompressor/default.nix b/nixpkgs/pkgs/development/python-modules/csscompressor/default.nix
new file mode 100644
index 00000000000..a6c294456fa
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/csscompressor/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+buildPythonPackage rec {
+ pname = "csscompressor";
+ version = "0.9.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "afa22badbcf3120a4f392e4d22f9fff485c044a1feda4a950ecc5eba9dd31a05";
+ };
+
+ doCheck = false; # No tests
+
+ meta = {
+ description = "A python port of YUI CSS Compressor";
+ homepage = https://pypi.python.org/pypi/csscompressor;
+ license = stdenv.lib.licenses.bsd3;
+ maintainers = [stdenv.lib.maintainers.ahmedtd];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cssmin/default.nix b/nixpkgs/pkgs/development/python-modules/cssmin/default.nix
new file mode 100644
index 00000000000..7cb01001fac
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cssmin/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "cssmin";
+ version = "0.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1dk723nfm2yf8cp4pj785giqlwv42l0kj8rk40kczvq1hk6g04p0";
+ };
+
+ # no tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A Python port of the YUI CSS compression algorithm";
+ homepage = http://github.com/zacharyvoase/cssmin;
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cssselect/default.nix b/nixpkgs/pkgs/development/python-modules/cssselect/default.nix
new file mode 100644
index 00000000000..d086360b7d7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cssselect/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "cssselect";
+ version = "1.0.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "066d8bc5229af09617e24b3ca4d52f1f9092d9e061931f4184cd572885c23204";
+ };
+
+ # AttributeError: 'module' object has no attribute 'tests'
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cssselect2/default.nix b/nixpkgs/pkgs/development/python-modules/cssselect2/default.nix
new file mode 100644
index 00000000000..45a9920dbe2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cssselect2/default.nix
@@ -0,0 +1,33 @@
+{ lib, buildPythonPackage, fetchPypi, tinycss2, pytest, pytestrunner }:
+
+buildPythonPackage rec {
+ pname = "cssselect2";
+ version = "0.2.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "505d2ce3d3a1d390ddb52f7d0864b7efeb115a5b852a91861b498b92424503ab";
+ };
+
+ # We're not interested in code quality tests
+ postPatch = ''
+ substituteInPlace setup.py \
+ --replace "pytest-cov" "" \
+ --replace "pytest-flake8" "" \
+ --replace "pytest-isort" ""
+ substituteInPlace setup.cfg \
+ --replace "--cov=cssselect2" "" \
+ --replace "--flake8" "" \
+ --replace "--isort" ""
+ '';
+
+ propagatedBuildInputs = [ tinycss2 ];
+
+ checkInputs = [ pytest pytestrunner ];
+
+ meta = with lib; {
+ description = "CSS selectors for Python ElementTree";
+ homepage = https://github.com/Kozea/cssselect2;
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cssutils/default.nix b/nixpkgs/pkgs/development/python-modules/cssutils/default.nix
new file mode 100644
index 00000000000..6dd680fe11f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cssutils/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi, mock }:
+
+buildPythonPackage rec {
+ pname = "cssutils";
+ version = "1.0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a2fcf06467553038e98fea9cfe36af2bf14063eb147a70958cfcaa8f5786acaf";
+ };
+
+ buildInputs = [ mock ];
+
+ # couple of failing tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A Python package to parse and build CSS";
+ homepage = http://code.google.com/p/cssutils/;
+ license = licenses.lgpl3Plus;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/csvs-to-sqlite/default.nix b/nixpkgs/pkgs/development/python-modules/csvs-to-sqlite/default.nix
new file mode 100644
index 00000000000..0e5e902be2e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/csvs-to-sqlite/default.nix
@@ -0,0 +1,49 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, isPy3k
+, pytestrunner
+, click
+, dateparser
+, pandas
+, py-lru-cache
+, six
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "csvs-to-sqlite";
+ version = "1.0";
+ disabled = !isPy3k;
+
+ src = fetchFromGitHub {
+ owner = "simonw";
+ repo = pname;
+ rev = version;
+ sha256 = "0n80y9a6qhbhhbz64jdpscx0nha9jn9nygp9nkgszmw04ri5j5hm";
+ };
+
+ propagatedBuildInputs = [
+ click
+ dateparser
+ pandas
+ py-lru-cache
+ six
+ ];
+
+ checkInputs = [
+ pytest
+ ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with lib; {
+ description = "Convert CSV files into a SQLite database";
+ homepage = https://github.com/simonw/csvs-to-sqlite;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cufflinks/default.nix b/nixpkgs/pkgs/development/python-modules/cufflinks/default.nix
new file mode 100644
index 00000000000..18693a204c5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cufflinks/default.nix
@@ -0,0 +1,40 @@
+{ buildPythonPackage, stdenv, fetchPypi, fetchpatch
+, numpy, pandas, plotly, six, colorlover
+, ipython, ipywidgets, nose
+}:
+
+buildPythonPackage rec {
+ pname = "cufflinks";
+ version = "0.15";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "014098a4568199957198c0a7fe3dbeb3b4010b6de8d692a41fe3b3ac107b660e";
+ };
+
+ propagatedBuildInputs = [
+ numpy pandas plotly six colorlover
+ ipython ipywidgets
+ ];
+
+ patches = [
+ # Plotly 3.8 compatibility. Remove with the next release. See https://github.com/santosjorge/cufflinks/pull/178
+ (fetchpatch {
+ url = "https://github.com/santosjorge/cufflinks/commit/cc4c23c2b45b870f6801d1cb0312948e1f73f424.patch";
+ sha256 = "1psl2h7vscpzvb4idr6s175v8znl2mfhkcyhb1926p4saswmghw1";
+ })
+ ];
+
+ checkInputs = [ nose ];
+
+ checkPhase = ''
+ nosetests -xv tests.py
+ '';
+
+ meta = {
+ homepage = https://github.com/santosjorge/cufflinks;
+ description = "Productivity Tools for Plotly + Pandas";
+ license = stdenv.lib.licenses.mit;
+ maintainers = with stdenv.lib.maintainers; [ globin ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cupy/default.nix b/nixpkgs/pkgs/development/python-modules/cupy/default.nix
new file mode 100644
index 00000000000..d0f3a7dc762
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cupy/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, buildPythonPackage
+, fetchPypi, isPy3k, linuxPackages
+, fastrlock, numpy, six, wheel, pytest, mock
+, cudatoolkit, cudnn, nccl
+}:
+
+buildPythonPackage rec {
+ pname = "cupy";
+ version = "6.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0d6liaavgqks772rqam53qha3yk6dfw24i0pj3izxvvawzhlp10z";
+ };
+
+ checkInputs = [
+ pytest
+ mock
+ ];
+
+ propagatedBuildInputs = [
+ cudatoolkit
+ cudnn
+ linuxPackages.nvidia_x11
+ nccl
+ fastrlock
+ numpy
+ six
+ wheel
+ ];
+
+ # In python3, test was failed...
+ doCheck = !isPy3k;
+
+ meta = with stdenv.lib; {
+ description = "A NumPy-compatible matrix library accelerated by CUDA";
+ homepage = https://cupy.chainer.org/;
+ license = licenses.mit;
+ platforms = [ "x86_64-linux" ];
+ maintainers = with maintainers; [ hyphon81 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/curio/default.nix b/nixpkgs/pkgs/development/python-modules/curio/default.nix
new file mode 100644
index 00000000000..b60025a91b0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/curio/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, pytest
+, sphinx
+}:
+
+buildPythonPackage rec {
+ pname = "curio";
+ version = "0.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "51d1a7b49b4f8dd1486ac785c72d522962e93ccfdcfc1f818f5c7553a307b5ef";
+ };
+
+ disabled = !isPy3k;
+
+ checkInputs = [ pytest sphinx ];
+
+ # test_aside_basic times out,
+ # test_aside_cancel fails because modifies PYTHONPATH and cant find pytest
+ checkPhase = ''
+ # __pycache__ was packaged accidentally, https://github.com/dabeaz/curio/issues/301
+ rm -r tests/__pycache__
+ pytest --deselect tests/test_task.py::test_aside_basic --deselect tests/test_task.py::test_aside_cancel
+ '';
+
+ meta = with lib; {
+ homepage = "https://github.com/dabeaz/curio";
+ description = "Library for performing concurrent I/O with coroutines in Python 3";
+ license = licenses.bsd3;
+ maintainers = [ maintainers.marsam ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/curtsies/default.nix b/nixpkgs/pkgs/development/python-modules/curtsies/default.nix
new file mode 100644
index 00000000000..b0e9fee93d4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/curtsies/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, buildPythonPackage, fetchPypi, fetchpatch, pythonOlder, blessings, mock, nose, pyte, wcwidth, typing }:
+
+buildPythonPackage rec {
+ pname = "curtsies";
+ version = "0.3.0";
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "89c802ec051d01dec6fc983e9856a3706e4ea8265d2940b1f6d504a9e26ed3a9";
+ };
+
+ patches = [
+ # Fix dependency on typing. Remove with the next release
+ (fetchpatch {
+ url = https://github.com/bpython/curtsies/commit/217b4f83e954837f8adc4c549c1f2f9f2bb272a7.patch;
+ sha256 = "1d3zwx9c7i0drb4nvydalm9mr83jrvdm75ffgisri89h337hiffs";
+ })
+ ];
+
+ propagatedBuildInputs = [ blessings wcwidth ]
+ ++ stdenv.lib.optionals (pythonOlder "3.5") [ typing ];
+
+ checkInputs = [ mock pyte nose ];
+
+ checkPhase = ''
+ nosetests tests
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Curses-like terminal wrapper, with colored strings!";
+ homepage = https://github.com/bpython/curtsies;
+ license = licenses.mit;
+ maintainers = with maintainers; [ flokli ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/curve25519-donna/default.nix b/nixpkgs/pkgs/development/python-modules/curve25519-donna/default.nix
new file mode 100644
index 00000000000..789fc7488fa
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/curve25519-donna/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "curve25519-donna";
+ version = "1.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1w0vkjyh4ki9n98lr2hg09f1lr1g3pz48kshrlic01ba6pasj60q";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Python wrapper for the portable curve25519-donna implementation";
+ homepage = http://code.google.com/p/curve25519-donna/;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ elseym ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cvxopt/default.nix b/nixpkgs/pkgs/development/python-modules/cvxopt/default.nix
new file mode 100644
index 00000000000..201c8ccda70
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cvxopt/default.nix
@@ -0,0 +1,70 @@
+{ stdenv
+, lib
+, buildPythonPackage
+, fetchPypi
+, isPyPy
+, python
+, openblasCompat # build segfaults with regular openblas
+, suitesparse
+, glpk ? null
+, gsl ? null
+, fftw ? null
+, withGlpk ? true
+, withGsl ? true
+, withFftw ? true
+}:
+
+buildPythonPackage rec {
+ pname = "cvxopt";
+ version = "1.2.3";
+
+ disabled = isPyPy; # hangs at [translation:info]
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ea62a2a1b8e2db3a6ae44ac394f58e4620149af226c250c6f2b18739b48cfc21";
+ };
+
+ # similar to Gsl, glpk, fftw there is also a dsdp interface
+ # but dsdp is not yet packaged in nixpkgs
+ preConfigure = ''
+ export CVXOPT_BLAS_LIB_DIR=${openblasCompat}/lib
+ export CVXOPT_BLAS_LIB=openblas
+ export CVXOPT_LAPACK_LIB=openblas
+ export CVXOPT_SUITESPARSE_LIB_DIR=${suitesparse}/lib
+ export CVXOPT_SUITESPARSE_INC_DIR=${suitesparse}/include
+ '' + lib.optionalString withGsl ''
+ export CVXOPT_BUILD_GSL=1
+ export CVXOPT_GSL_LIB_DIR=${gsl}/lib
+ export CVXOPT_GSL_INC_DIR=${gsl}/include
+ '' + lib.optionalString withGlpk ''
+ export CVXOPT_BUILD_GLPK=1
+ export CVXOPT_GLPK_LIB_DIR=${glpk}/lib
+ export CVXOPT_GLPK_INC_DIR=${glpk}/include
+ '' + lib.optionalString withFftw ''
+ export CVXOPT_BUILD_FFTW=1
+ export CVXOPT_FFTW_LIB_DIR=${fftw}/lib
+ export CVXOPT_FFTW_INC_DIR=${fftw.dev}/include
+ '';
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover -s tests
+ '';
+
+ meta = with lib; {
+ homepage = http://cvxopt.org/;
+ description = "Python Software for Convex Optimization";
+ longDescription = ''
+ CVXOPT is a free software package for convex optimization based on the
+ Python programming language. It can be used with the interactive
+ Python interpreter, on the command line by executing Python scripts,
+ or integrated in other software via Python extension modules. Its main
+ purpose is to make the development of software for convex optimization
+ applications straightforward by building on Python's extensive
+ standard library and on the strengths of Python as a high-level
+ programming language.
+ '';
+ maintainers = with maintainers; [ edwtjo ];
+ license = licenses.gpl3Plus;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cx_freeze/default.nix b/nixpkgs/pkgs/development/python-modules/cx_freeze/default.nix
new file mode 100644
index 00000000000..234bb46f97b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cx_freeze/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, buildPythonPackage, fetchPypi, ncurses }:
+
+buildPythonPackage rec {
+ pname = "cx_Freeze";
+ version = "5.1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2eadddde670f5c5f6cf88638a0ac4e5d5fe181292a31063275fa56c7bf22426b";
+ };
+
+ propagatedBuildInputs = [ ncurses ];
+
+ # timestamp need to come after 1980 for zipfiles and nix store is set to epoch
+ prePatch = ''
+ substituteInPlace cx_Freeze/freezer.py --replace "os.stat(module.file).st_mtime" "time.time()"
+ '';
+
+ # fails to find Console even though it exists on python 3.x
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A set of scripts and modules for freezing Python scripts into executables";
+ homepage = "http://cx-freeze.sourceforge.net/";
+ license = licenses.psfl;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cx_oracle/default.nix b/nixpkgs/pkgs/development/python-modules/cx_oracle/default.nix
new file mode 100644
index 00000000000..77814ec1191
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cx_oracle/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, buildPythonPackage, fetchPypi, odpic }:
+
+buildPythonPackage rec {
+ pname = "cx_Oracle";
+ version = "7.2.2";
+
+ buildInputs = [ odpic ];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1kp6fgyln0jkdbjm20h6rhybsmvqjj847frhsndyfvkf38m32ss0";
+ };
+
+ preConfigure = ''
+ export ODPIC_INC_DIR="${odpic}/include"
+ export ODPIC_LIB_DIR="${odpic}/lib"
+ '';
+
+ # Check need an Oracle database to run
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Python interface to Oracle";
+ homepage = "https://oracle.github.io/python-cx_Oracle";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ y0no ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cycler/default.nix b/nixpkgs/pkgs/development/python-modules/cycler/default.nix
new file mode 100644
index 00000000000..3d220535404
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cycler/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, coverage
+, nose
+, six
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "cycler";
+ version = "0.10.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "cd7b2d1018258d7247a71425e9f26463dfb444d411c39569972f4ce586b0c9d8";
+ };
+
+ checkInputs = [ coverage nose ];
+ propagatedBuildInputs = [ six ];
+
+ checkPhase = ''
+ ${python.interpreter} run_tests.py
+ '';
+
+ # Tests were not included in release.
+ # https://github.com/matplotlib/cycler/issues/31
+ doCheck = false;
+
+ meta = {
+ description = "Composable style cycles";
+ homepage = https://github.com/matplotlib/cycler;
+ license = lib.licenses.bsd3;
+ maintainers = with lib.maintainers; [ fridh ];
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/cymem/default.nix b/nixpkgs/pkgs/development/python-modules/cymem/default.nix
new file mode 100644
index 00000000000..b3d4a40bf66
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cymem/default.nix
@@ -0,0 +1,38 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, cython
+, python
+}:
+buildPythonPackage rec {
+ pname = "cymem";
+ version = "2.0.2";
+
+ src = fetchFromGitHub {
+ owner = "explosion";
+ repo = "cymem";
+ rev = "v${version}";
+ sha256 = "109i67vwgql9za8mfvgbrd6rgraz4djkvpzb4gqvzl13214s6ava";
+ };
+
+ propagatedBuildInputs = [
+ cython
+ ];
+
+ prePatch = ''
+ substituteInPlace setup.py \
+ --replace "wheel>=0.32.0,<0.33.0" "wheel>=0.31.0"
+ '';
+
+ checkPhase = ''
+ cd cymem/tests
+ ${python.interpreter} -m unittest discover -p "*test*"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Cython memory pool for RAII-style memory management";
+ homepage = https://github.com/explosion/cymem;
+ license = licenses.mit;
+ maintainers = with maintainers; [ sdll ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cypari2/default.nix b/nixpkgs/pkgs/development/python-modules/cypari2/default.nix
new file mode 100644
index 00000000000..6c3e20b3f70
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cypari2/default.nix
@@ -0,0 +1,55 @@
+{ stdenv
+, buildPythonPackage
+, python
+, fetchPypi
+, pari
+, gmp
+, cython
+, cysignals
+}:
+
+buildPythonPackage rec {
+ pname = "cypari2";
+ # upgrade may break sage, please test the sage build or ping @timokau on upgrade
+ version = "2.1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "df1ef62e771ec36e5a456f5fc8b51bc6745b70f0efdd0c7a30c3f0b5f1fb93db";
+ };
+
+ # This differs slightly from the default python installPhase in that it pip-installs
+ # "." instead of "*.whl".
+ # That is because while the default install phase succeeds to build the package,
+ # it fails to generate the file "auto_paridecl.pxd".
+ installPhase = ''
+ export PYTHONPATH="$out/${python.sitePackages}:$PYTHONPATH"
+
+ # install "." instead of "*.whl"
+ ${python.pythonForBuild.pkgs.bootstrapped-pip}/bin/pip install --no-index --prefix=$out --no-cache --build=tmpdir .
+ '';
+
+ nativeBuildInputs = [
+ pari
+ ];
+
+ buildInputs = [
+ gmp
+ ];
+
+ propagatedBuildInputs = [
+ cysignals
+ cython
+ ];
+
+ checkPhase = ''
+ make check
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Cython bindings for PARI";
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ timokau ];
+ homepage = https://github.com/defeo/cypari2;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cysignals/default.nix b/nixpkgs/pkgs/development/python-modules/cysignals/default.nix
new file mode 100644
index 00000000000..e69fbce2158
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cysignals/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+, cython
+, pariSupport ? true, pari # for interfacing with the PARI/GP signal handler
+}:
+
+assert pariSupport -> pari != null;
+
+buildPythonPackage rec {
+ pname = "cysignals";
+ version = "1.10.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1ckxzch3wk5cg80mppky5jib5z4fzslny3001r5zg4ar1ixbc1w1";
+ };
+
+ # explicit check:
+ # build/src/cysignals/implementation.c:27:2: error: #error "cysignals must be compiled without _FORTIFY_SOURCE"
+ hardeningDisable = [
+ "fortify"
+ ];
+
+ # known failure: https://github.com/sagemath/cysignals/blob/582dbf6a7b0f9ade0abe7a7b8720b7fb32435c3c/testgdb.py#L5
+ doCheck = false;
+ checkTarget = "check-install";
+
+ preCheck = ''
+ # Make sure cysignals-CSI is in PATH
+ export PATH="$out/bin:$PATH"
+ '';
+
+ propagatedBuildInputs = [
+ cython
+ ] ++ lib.optionals pariSupport [
+ # When cysignals is built with pari, including cysignals into the
+ # buildInputs of another python package will cause cython to link against
+ # pari.
+ pari
+ ];
+
+ enableParallelBuilding = true;
+
+ meta = {
+ description = "Interrupt and signal handling for Cython";
+ homepage = https://github.com/sagemath/cysignals/;
+ maintainers = with lib.maintainers; [ timokau ];
+ license = lib.licenses.lgpl3Plus;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cytoolz/default.nix b/nixpkgs/pkgs/development/python-modules/cytoolz/default.nix
new file mode 100644
index 00000000000..f95da9b75b2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cytoolz/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, isPyPy
+, nose
+, toolz
+, python
+, fetchpatch
+}:
+
+buildPythonPackage rec {
+ pname = "cytoolz";
+ version = "0.10.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ed9f6a07c2bac70d6c597df360d0666d11d2adc90141d54c5c2db08b380a4fac";
+ };
+
+ # Extension types
+ disabled = isPyPy;
+
+ checkInputs = [ nose ];
+ propagatedBuildInputs = [ toolz ];
+
+ # Failing test https://github.com/pytoolz/cytoolz/issues/122
+ checkPhase = ''
+ NOSE_EXCLUDE=test_introspect_builtin_modules nosetests -v $out/${python.sitePackages}
+ '';
+
+ meta = {
+ homepage = https://github.com/pytoolz/cytoolz/;
+ description = "Cython implementation of Toolz: High performance functional utilities";
+ license = "licenses.bsd3";
+ maintainers = with lib.maintainers; [ fridh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/d2to1/default.nix b/nixpkgs/pkgs/development/python-modules/d2to1/default.nix
new file mode 100644
index 00000000000..70b0da89d5b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/d2to1/default.nix
@@ -0,0 +1,25 @@
+{ buildPythonPackage
+, lib
+, fetchFromGitHub
+, nose
+}:
+buildPythonPackage rec {
+ pname = "d2to1";
+ version = "0.2.12.post1";
+
+ checkInputs = [ nose ];
+
+ src = fetchFromGitHub {
+ owner = "embray";
+ repo = pname;
+ rev = version;
+ sha256 = "1hzq51qbzsc27yy8swp08kf42mamag7qcabbrigzj4m6ivb5chi2";
+ };
+
+ meta = with lib;{
+ description = "Support for distutils2-like setup.cfg files as package metadata";
+ homepage = https://github.com/embray/d2to1;
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ makefu ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/daemonize/default.nix b/nixpkgs/pkgs/development/python-modules/daemonize/default.nix
new file mode 100644
index 00000000000..2f7992e860f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/daemonize/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "daemonize";
+ version = "2.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1hwbl3gf9fdds9sc14zgjyjisjvxidrvqc11xlbb0b6jz17nw0nx";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Library to enable your code run as a daemon process on Unix-like systems";
+ homepage = https://github.com/thesharp/daemonize;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/daphne/default.nix b/nixpkgs/pkgs/development/python-modules/daphne/default.nix
new file mode 100644
index 00000000000..e577617c478
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/daphne/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, buildPythonPackage, isPy3k, fetchFromGitHub, fetchpatch
+, asgiref, autobahn, twisted, pytestrunner
+, hypothesis, pytest, pytest-asyncio
+}:
+buildPythonPackage rec {
+ pname = "daphne";
+ version = "2.3.0";
+
+ disabled = !isPy3k;
+
+ src = fetchFromGitHub {
+ owner = "django";
+ repo = pname;
+ rev = version;
+ sha256 = "020afrvbnid13gkgjpqznl025zpynisa96kybmf8q7m3wp1iq1nl";
+ };
+
+ patches = [
+ # Fix compatibility with Hypothesis 4. See: https://github.com/django/daphne/pull/261
+ (fetchpatch {
+ url = "https://github.com/django/daphne/commit/2df5096c5b63a791c209e12198ad89c998869efd.patch";
+ sha256 = "0046krzcn02mihqmsjd80kk5h5flv44nqxpapa17g6dvq3jnb97n";
+ })
+ ];
+
+ nativeBuildInputs = [ pytestrunner ];
+
+ propagatedBuildInputs = [ asgiref autobahn twisted ];
+
+ checkInputs = [ hypothesis pytest pytest-asyncio ];
+
+ doCheck = !stdenv.isDarwin; # most tests fail on darwin
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Django ASGI (HTTP/WebSocket) server";
+ license = licenses.bsd3;
+ homepage = https://github.com/django/daphne;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/darcsver/default.nix b/nixpkgs/pkgs/development/python-modules/darcsver/default.nix
new file mode 100644
index 00000000000..753b592a4c5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/darcsver/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, 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 stdenv.lib; {
+ description = "Darcsver, generate a version number from Darcs history";
+ homepage = https://pypi.python.org/pypi/darcsver;
+ license = "BSD-style";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dask-glm/default.nix b/nixpkgs/pkgs/development/python-modules/dask-glm/default.nix
new file mode 100644
index 00000000000..73705d9982a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dask-glm/default.nix
@@ -0,0 +1,35 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, cloudpickle
+, dask
+, numpy, toolz # dask[array]
+, multipledispatch
+, scipy
+, scikitlearn
+, pytest
+}:
+
+buildPythonPackage rec {
+ version = "0.2.0";
+ pname = "dask-glm";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "58b86cebf04fe5b9e58092e1c467e32e60d01e11b71fdc628baaa9fc6d1adee5";
+ };
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ cloudpickle dask numpy toolz multipledispatch scipy scikitlearn ];
+
+ checkPhase = ''
+ py.test dask_glm
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/dask/dask-glm/;
+ description = "Generalized Linear Models with Dask";
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dask-image/default.nix b/nixpkgs/pkgs/development/python-modules/dask-image/default.nix
new file mode 100644
index 00000000000..7b12d1fcc22
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dask-image/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, dask
+, numpy, toolz # dask[array]
+, scipy
+, pims
+, pytest
+, scikitimage
+}:
+
+buildPythonPackage rec {
+ version = "0.2.0";
+ pname = "dask-image";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "bece2ea347f963dc0168c7d5fdfd11e51b47d9c857d3bc56144d7c146964a23f";
+ };
+
+ checkInputs = [ pytest scikitimage ];
+ propagatedBuildInputs = [ dask numpy toolz scipy pims ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/dask/dask-image;
+ description = "Distributed image processing";
+ license = licenses.bsdOriginal;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dask-jobqueue/default.nix b/nixpkgs/pkgs/development/python-modules/dask-jobqueue/default.nix
new file mode 100644
index 00000000000..94ecd10f45f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dask-jobqueue/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, dask
+, distributed
+, docrep
+, pytest
+}:
+
+buildPythonPackage rec {
+ version = "0.4.1";
+ pname = "dask-jobqueue";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "e559077fd27b68c325f06e3666e7072913f5282ad62347a233ca95ae00a4ced7";
+ };
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ dask distributed docrep ];
+
+ # do not run entire tests suite (requires slurm, sge, etc.)
+ checkPhase = ''
+ py.test dask_jobqueue/tests/test_jobqueue_core.py
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/dask/dask-jobqueue;
+ description = "Deploy Dask on job schedulers like PBS, SLURM, and SGE";
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dask-ml/default.nix b/nixpkgs/pkgs/development/python-modules/dask-ml/default.nix
new file mode 100644
index 00000000000..48a545789db
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dask-ml/default.nix
@@ -0,0 +1,43 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, dask
+, numpy, toolz # dask[array]
+, numba
+, pandas
+, scikitlearn
+, scipy
+, dask-glm
+, six
+, multipledispatch
+, packaging
+, pytest
+, xgboost
+, tensorflow
+, joblib
+, distributed
+}:
+
+buildPythonPackage rec {
+ version = "0.11.0";
+ pname = "dask-ml";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a9e8e69494560dc23534adb236e88b3b21dc30a156648453c9c6e4b27ff2df96";
+ };
+
+ checkInputs = [ pytest xgboost tensorflow joblib distributed ];
+ propagatedBuildInputs = [ dask numpy toolz numba pandas scikitlearn scipy dask-glm six multipledispatch packaging ];
+
+ # dask-ml has some heavy test requirements
+ # and requires some very new packages
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/dask/dask-ml;
+ description = "Scalable Machine Learn with Dask";
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dask-mpi/default.nix b/nixpkgs/pkgs/development/python-modules/dask-mpi/default.nix
new file mode 100644
index 00000000000..1bba260e2a0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dask-mpi/default.nix
@@ -0,0 +1,36 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, dask
+, distributed
+, mpi4py
+, pytest
+, requests
+}:
+
+buildPythonPackage rec {
+ version = "1.0.2";
+ pname = "dask-mpi";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1apzzh90gl9jx43z0gjmgpniplhvqziafi2l8688a0g01vw7ibjv";
+ };
+
+ checkInputs = [ pytest requests ];
+ propagatedBuildInputs = [ dask distributed mpi4py ];
+
+ checkPhase = ''
+ py.test dask_mpi
+ '';
+
+ # hardcoded mpirun path in tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/dask/dask-mpi;
+ description = "Deploy Dask using mpi4py";
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dask-xgboost/default.nix b/nixpkgs/pkgs/development/python-modules/dask-xgboost/default.nix
new file mode 100644
index 00000000000..5dfcd2f415b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dask-xgboost/default.nix
@@ -0,0 +1,35 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, xgboost
+, dask
+, distributed
+, pytest
+, scikitlearn
+}:
+
+buildPythonPackage rec {
+ version = "0.1.5";
+ pname = "dask-xgboost";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1860d06965fe68def1c83b9195130a92050fd4bc28bf2be689898a3a74ee1316";
+ };
+
+ checkInputs = [ pytest scikitlearn ];
+ propagatedBuildInputs = [ xgboost dask distributed ];
+
+ checkPhase = ''
+ py.test dask_xgboost/tests/test_core.py
+ '';
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/dask/dask-xgboost;
+ description = "Interactions between Dask and XGBoost";
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dask/default.nix b/nixpkgs/pkgs/development/python-modules/dask/default.nix
new file mode 100644
index 00000000000..ba8c06f73f2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dask/default.nix
@@ -0,0 +1,44 @@
+{ lib
+, bokeh
+, buildPythonPackage
+, fetchPypi
+, fsspec
+, pytest
+, pythonOlder
+, cloudpickle
+, numpy
+, toolz
+, dill
+, pandas
+, partd
+}:
+
+buildPythonPackage rec {
+ pname = "dask";
+ version = "2.2.0";
+
+ disabled = pythonOlder "3.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0wkiqkckwy7fv6m86cs3m3g6jdikkkw84ki9hiwp60xpk5xngnf0";
+ };
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [
+ bokeh cloudpickle dill fsspec numpy pandas partd toolz ];
+
+ checkPhase = ''
+ py.test dask
+ '';
+
+ # URLError
+ doCheck = false;
+
+ meta = {
+ description = "Minimal task scheduling abstraction";
+ homepage = https://github.com/ContinuumIO/dask/;
+ license = lib.licenses.bsd3;
+ maintainers = with lib.maintainers; [ fridh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dataclasses/default.nix b/nixpkgs/pkgs/development/python-modules/dataclasses/default.nix
new file mode 100644
index 00000000000..44d4d3b5769
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dataclasses/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy36 }:
+
+buildPythonPackage rec {
+ pname = "dataclasses";
+ version = "0.6";
+
+ # backport only works on Python 3.6, and is in the standard library in Python 3.7
+ disabled = !isPy36;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6988bd2b895eef432d562370bb707d540f32f7360ab13da45340101bc2307d84";
+ };
+
+ meta = with stdenv.lib; {
+ description = "An implementation of PEP 557: Data Classes";
+ homepage = "https://github.com/ericvsmith/dataclasses";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ catern ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/datadiff/default.nix b/nixpkgs/pkgs/development/python-modules/datadiff/default.nix
new file mode 100644
index 00000000000..72964e3d1f6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/datadiff/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+}:
+
+buildPythonPackage rec {
+ pname = "datadiff";
+ version = "1.1.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "f1402701063998f6a70609789aae8dc05703f3ad0a34882f6199653654c55543";
+ };
+
+ buildInputs = [ nose ];
+
+ meta = with stdenv.lib; {
+ description = "DataDiff";
+ homepage = https://sourceforge.net/projects/datadiff/;
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/datadog/default.nix b/nixpkgs/pkgs/development/python-modules/datadog/default.nix
new file mode 100644
index 00000000000..fa0ac9dd7b4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/datadog/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildPythonPackage, fetchPypi
+, decorator, requests, simplejson
+, nose, mock }:
+
+buildPythonPackage rec {
+ pname = "datadog";
+ version = "0.29.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0p47hy1p2hf233blalyz0yr6nf13iwk9ndkqdk428dmf8b8m2plr";
+ };
+
+ postPatch = ''
+ find . -name '*.pyc' -exec rm {} \;
+ '';
+
+ propagatedBuildInputs = [ decorator requests simplejson ];
+
+ checkInputs = [ nose mock ];
+
+ meta = with lib; {
+ description = "The Datadog Python library";
+ license = licenses.bsd3;
+ homepage = https://github.com/DataDog/datadogpy;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/datamodeldict/default.nix b/nixpkgs/pkgs/development/python-modules/datamodeldict/default.nix
new file mode 100644
index 00000000000..cd7d6eb8ccc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/datamodeldict/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, xmltodict
+}:
+
+buildPythonPackage rec {
+ version = "0.9.5";
+ pname = "DataModelDict";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "afa15c137c09e7d937e31c8956fd8092be0251c9869a6b7c1d0f81c0901bc47d";
+ };
+
+ propagatedBuildInputs = [ xmltodict ];
+
+ # no tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/usnistgov/DataModelDict/;
+ description = "Class allowing for data models equivalently represented as Python dictionaries, JSON, and XML";
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/datasette/default.nix b/nixpkgs/pkgs/development/python-modules/datasette/default.nix
new file mode 100644
index 00000000000..48de7e86b92
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/datasette/default.nix
@@ -0,0 +1,73 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, click
+, click-default-group
+, sanic
+, jinja2
+, hupper
+, pint
+, pluggy
+, pytest
+, pytestrunner
+, pytest-asyncio
+, black
+, aiohttp
+, beautifulsoup4
+}:
+
+buildPythonPackage rec {
+ pname = "datasette";
+ version = "0.28";
+
+ src = fetchFromGitHub {
+ owner = "simonw";
+ repo = "datasette";
+ rev = version;
+ sha256 = "1m2s03gyq0ghjc3s0b5snpinisddywpgii2f0zqa3v4ljmzanx7h";
+ };
+
+ buildInputs = [ pytestrunner ];
+
+ propagatedBuildInputs = [
+ click
+ click-default-group
+ sanic
+ jinja2
+ hupper
+ pint
+ pluggy
+ ];
+
+ checkInputs = [
+ pytest
+ pytest-asyncio
+ aiohttp
+ beautifulsoup4
+ black
+ ];
+
+ postConfigure = ''
+ substituteInPlace setup.py \
+ --replace "click-default-group==1.2" "click-default-group" \
+ --replace "Sanic==0.7.0" "Sanic" \
+ --replace "hupper==1.0" "hupper" \
+ --replace "pint==0.8.1" "pint" \
+ --replace "Jinja2==2.10.1" "Jinja2"
+ '';
+
+ # many tests require network access
+ checkPhase = ''
+ pytest --ignore tests/test_api.py \
+ --ignore tests/test_csv.py \
+ --ignore tests/test_html.py
+ '';
+
+ meta = with lib; {
+ description = "An instant JSON API for your SQLite databases";
+ homepage = https://github.com/simonw/datasette;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/datashader/default.nix b/nixpkgs/pkgs/development/python-modules/datashader/default.nix
new file mode 100644
index 00000000000..8ce3012513c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/datashader/default.nix
@@ -0,0 +1,85 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, dask
+, distributed
+, bokeh
+, toolz
+, datashape
+, numba
+, numpy
+, pandas
+, pillow
+, xarray
+, colorcet
+, param
+, pyct
+, pyyaml
+, requests
+, scikitimage
+, scipy
+, pytest
+, pytest-benchmark
+, flake8
+, nbsmoke
+, fastparquet
+, testpath
+, nbconvert
+}:
+
+buildPythonPackage rec {
+ pname = "datashader";
+ version = "0.7.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5baf218713dc1ad4791f7bcf606ef8f618273945e788c59f9573aebd7cb851f8";
+ };
+
+ propagatedBuildInputs = [
+ dask
+ distributed
+ bokeh
+ toolz
+ datashape
+ numba
+ numpy
+ pandas
+ pillow
+ xarray
+ colorcet
+ param
+ pyct
+ pyyaml
+ requests
+ scikitimage
+ scipy
+ testpath
+ ];
+
+ checkInputs = [
+ pytest
+ pytest-benchmark
+ flake8
+ nbsmoke
+ fastparquet
+ pandas
+ nbconvert
+ ];
+
+ postConfigure = ''
+ substituteInPlace setup.py \
+ --replace "'testpath<0.4'" "'testpath'"
+ '';
+
+ checkPhase = ''
+ pytest datashader
+ '';
+
+ meta = with lib; {
+ description = "Data visualization toolchain based on aggregating into a grid";
+ homepage = https://datashader.org;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/datashape/default.nix b/nixpkgs/pkgs/development/python-modules/datashape/default.nix
new file mode 100644
index 00000000000..27665c689c4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/datashape/default.nix
@@ -0,0 +1,50 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytest
+, mock
+, numpy
+, multipledispatch
+, dateutil
+}:
+
+let
+ # Fetcher function looks similar to fetchPypi.
+ # Allows for easier overriding, without having to know
+ # how the source is actually fetched.
+ fetcher = {pname, version, sha256}: fetchFromGitHub {
+ owner = "blaze";
+ repo = pname;
+ rev = version;
+ inherit sha256;
+ };
+
+in buildPythonPackage rec {
+ pname = "datashape";
+ version = "0.5.4";
+
+ src = fetcher {
+ inherit pname version;
+ sha256 = "0rhlj2kjj1vx5m73wnc5518rd6cs1zsbgpsvzk893n516k69shcf";
+ };
+
+ checkInputs = [ pytest mock ];
+ propagatedBuildInputs = [ numpy multipledispatch dateutil ];
+
+ # Disable several tests
+ # https://github.com/blaze/datashape/issues/232
+ checkPhase = ''
+ pytest --ignore datashape/tests/test_str.py \
+ --ignore datashape/tests/test_user.py
+ '';
+
+ # https://github.com/blaze/datashape/issues/238
+ PYTEST_ADDOPTS = "-k 'not test_record and not test_tuple'";
+
+ meta = {
+ homepage = https://github.com/ContinuumIO/datashape;
+ description = "A data description language";
+ license = lib.licenses.bsd2;
+ maintainers = with lib.maintainers; [ fridh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/datatable/default.nix b/nixpkgs/pkgs/development/python-modules/datatable/default.nix
new file mode 100644
index 00000000000..200ebef1faa
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/datatable/default.nix
@@ -0,0 +1,60 @@
+{ blessed
+, buildPythonPackage
+, fetchPypi
+, lib
+, libcxx
+, libcxxabi
+, llvm
+, openmp
+, pytest
+, pythonOlder
+, stdenv
+, substituteAll
+, typesentry
+}:
+
+buildPythonPackage rec {
+ pname = "datatable";
+ version = "0.8.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1s8z81zffrckvdwrrl0pkjc7gsdvjxw59xgg6ck81dl7gkh5grjk";
+ };
+
+ patches = [
+ # Disable the compiler monkey patching, and remove the task that's copying
+ # the native dependencies to the build directory.
+ ./remove-compiler-monkeypatch_disable-native-relocation.patch
+ ] ++ lib.optionals stdenv.isDarwin [
+ # Replace the library auto-detection with hardcoded paths.
+ (substituteAll {
+ src = ./hardcode-library-paths.patch;
+
+ libomp_dylib = "${lib.getLib openmp}/lib/libomp.dylib";
+ libcxx_dylib = "${lib.getLib libcxx}/lib/libc++.1.dylib";
+ libcxxabi_dylib = "${lib.getLib libcxxabi}/lib/libc++abi.dylib";
+ })
+ ];
+
+ disabled = pythonOlder "3.5";
+
+ propagatedBuildInputs = [ typesentry blessed ];
+ buildInputs = [ llvm ] ++ lib.optionals stdenv.isDarwin [ openmp ];
+ checkInputs = [ pytest ];
+
+ LLVM = llvm;
+
+ checkPhase = ''
+ # py.test adds local datatable to path, which doesn't contain built native library.
+ mv datatable datatable.hidden
+ pytest
+ '';
+
+ meta = with lib; {
+ description = "data.table for Python";
+ homepage = "https://github.com/h2oai/datatable";
+ license = licenses.mpl20;
+ maintainers = with maintainers; [ abbradar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/datatable/hardcode-library-paths.patch b/nixpkgs/pkgs/development/python-modules/datatable/hardcode-library-paths.patch
new file mode 100644
index 00000000000..76c2f0e1dd7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/datatable/hardcode-library-paths.patch
@@ -0,0 +1,43 @@
+diff --git a/ci/setup_utils.py b/ci/setup_utils.py
+index 66b385a..6255af0 100644
+--- a/ci/setup_utils.py
++++ b/ci/setup_utils.py
+@@ -600,37 +600,7 @@ def find_linked_dynamic_libraries():
+ them as a list of absolute paths.
+ """
+ with TaskContext("Find the required dynamic libraries") as log:
+- llvm = get_llvm()
+- libs = required_link_libraries()
+- resolved = []
+- for libname in libs:
+- if llvm:
+- fullpath = os.path.join(llvm, "lib", libname)
+- if os.path.isfile(fullpath):
+- resolved.append(fullpath)
+- log.info("Library `%s` found at %s" % (libname, fullpath))
+- continue
+- else:
+- log.info("%s does not exist" % fullpath)
+- # Rely on the shell `locate` command to find the dynamic libraries.
+- proc = subprocess.Popen(["locate", libname], stdout=subprocess.PIPE,
+- stderr=subprocess.PIPE)
+- stdout, stderr = proc.communicate()
+- if proc.returncode == 0:
+- results = stdout.decode().strip().split("\n")
+- results = [r for r in results if r]
+- if results:
+- results.sort(key=len)
+- fullpath = results[0]
+- assert os.path.isfile(fullpath), "Invalid path: %r" % (fullpath,)
+- resolved.append(fullpath)
+- log.info("Library `%s` found at %s" % (libname, fullpath))
+- continue
+- else:
+- log.fatal("Cannot locate dynamic library `%s`" % libname)
+- else:
+- log.fatal("`locate` command returned the following error:\n%s"
+- % stderr.decode())
++ resolved = ["@libomp_dylib@", "@libcxx_dylib@", "@libcxxabi_dylib@"]
+ return resolved
+
+
diff --git a/nixpkgs/pkgs/development/python-modules/datatable/remove-compiler-monkeypatch_disable-native-relocation.patch b/nixpkgs/pkgs/development/python-modules/datatable/remove-compiler-monkeypatch_disable-native-relocation.patch
new file mode 100644
index 00000000000..7cdbfa90724
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/datatable/remove-compiler-monkeypatch_disable-native-relocation.patch
@@ -0,0 +1,28 @@
+diff --git a/setup.py b/setup.py
+index 58fc875..8032561 100644
+--- a/setup.py
++++ b/setup.py
+@@ -141,23 +141,6 @@ if cmd in ("build", "bdist_wheel", "build_ext", "install"):
+ extra_link_args = get_extra_link_args()
+ cpp_files = get_c_sources("c")
+
+- with TaskContext("Copy dynamic libraries") as log:
+- # Copy system libraries into the datatable/lib folder, so that they can
+- # be packaged with the wheel
+- libs = find_linked_dynamic_libraries()
+- for libpath in libs:
+- trgfile = os.path.join("datatable", "lib",
+- os.path.basename(libpath))
+- if os.path.exists(trgfile):
+- log.info("File %s already exists, skipped" % trgfile)
+- else:
+- log.info("Copying %s to %s" % (libpath, trgfile))
+- shutil.copy(libpath, trgfile)
+-
+- if ismacos():
+- monkey_patch_compiler()
+-
+-
+ # Create the git version file
+ if cmd in ("build", "sdist", "bdist_wheel", "install"):
+ make_git_version_file(True)
diff --git a/nixpkgs/pkgs/development/python-modules/dateparser/default.nix b/nixpkgs/pkgs/development/python-modules/dateparser/default.nix
new file mode 100644
index 00000000000..22787df8bb6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dateparser/default.nix
@@ -0,0 +1,42 @@
+{ lib, fetchPypi, buildPythonPackage
+, nose
+, parameterized
+, mock
+, glibcLocales
+, six
+, jdatetime
+, dateutil
+, umalqurra
+, pytz
+, tzlocal
+, regex
+, ruamel_yaml }:
+
+buildPythonPackage rec {
+ pname = "dateparser";
+ version = "0.7.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "42d51be54e74a8e80a4d76d1fa6e4edd997098fce24ad2d94a2eab5ef247193e";
+ };
+
+ checkInputs = [ nose mock parameterized six glibcLocales ];
+ preCheck =''
+ # skip because of missing convertdate module, which is an extra requirement
+ rm tests/test_jalali.py
+ '';
+
+ propagatedBuildInputs = [
+ # install_requires
+ dateutil pytz regex tzlocal
+ # extra_requires
+ jdatetime ruamel_yaml umalqurra
+ ];
+
+ meta = with lib; {
+ description = "Date parsing library designed to parse dates from HTML pages";
+ homepage = https://github.com/scrapinghub/dateparser;
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dateutil/default.nix b/nixpkgs/pkgs/development/python-modules/dateutil/default.nix
new file mode 100644
index 00000000000..63366d93056
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dateutil/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, buildPythonPackage, fetchPypi, six, setuptools_scm, pytest }:
+buildPythonPackage rec {
+ pname = "python-dateutil";
+ version = "2.8.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c89805f6f4d64db21ed966fda138f8a5ed7a4fdbc1a8ee329ce1b74e3c74da9e";
+ };
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ six setuptools_scm ];
+
+ checkPhase = ''
+ py.test dateutil/test
+ '';
+
+ # Requires fixing
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Powerful extensions to the standard datetime module";
+ homepage = https://pypi.python.org/pypi/python-dateutil;
+ license = "BSD-style";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/datrie/default.nix b/nixpkgs/pkgs/development/python-modules/datrie/default.nix
new file mode 100644
index 00000000000..7cb30937e0d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/datrie/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, buildPythonPackage, fetchPypi, fetchpatch
+, cython, pytest, pytestrunner, hypothesis }:
+
+buildPythonPackage rec {
+ pname = "datrie";
+ version = "0.7.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "08r0if7dry2q7p34gf7ffyrlnf4bdvnprxgydlfxgfnvq8f3f4bs";
+ };
+
+ patches = [
+ # fix tests against recent hypothesis
+ (fetchpatch {
+ url = "https://github.com/pytries/datrie/commit/9b24b4c02783cdb703ac3f6c6d7d881db93166e0.diff";
+ sha256 = "1ql7jcf57q3x3fcbddl26y9kmnbnj2dv6ga8mwq94l4a3213j2iy";
+ })
+ ];
+
+ nativeBuildInputs = [ cython ];
+ buildInputs = [ pytest pytestrunner hypothesis ];
+
+ # recompile pxd and pyx for python37
+ # https://github.com/pytries/datrie/issues/52
+ preBuild = ''
+ ./update_c.sh
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Super-fast, efficiently stored Trie for Python";
+ homepage = "https://github.com/kmike/datrie";
+ license = licenses.lgpl2;
+ maintainers = with maintainers; [ lewo ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dbf/default.nix b/nixpkgs/pkgs/development/python-modules/dbf/default.nix
new file mode 100644
index 00000000000..c3d5224dd4d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dbf/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchPypi, buildPythonPackage, aenum, isPy3k, pythonOlder, enum34, python }:
+
+buildPythonPackage rec {
+ pname = "dbf";
+ version = "0.98.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0d8m3zhhxy1f35r1s8k0s218iz86bs6v89vy65lslrxbdg5pjia0";
+ };
+
+ propagatedBuildInputs = [ aenum ] ++ stdenv.lib.optional (pythonOlder "3.4") [ enum34 ];
+
+ doCheck = !isPy3k;
+ # tests are not yet ported.
+ # https://groups.google.com/forum/#!topic/python-dbase/96rx2xmCG4w
+
+ checkPhase = ''
+ ${python.interpreter} dbf/test.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Pure python package for reading/writing dBase, FoxPro, and Visual FoxPro .dbf files";
+ homepage = "https://pypi.python.org/pypi/dbf";
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ vrthra ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dbfread/default.nix b/nixpkgs/pkgs/development/python-modules/dbfread/default.nix
new file mode 100644
index 00000000000..6c50313a518
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dbfread/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, fetchPypi, buildPythonPackage }:
+
+buildPythonPackage rec {
+ pname = "dbfread";
+ version = "2.0.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "07c8a9af06ffad3f6f03e8fe91ad7d2733e31a26d2b72c4dd4cfbae07ee3b73d";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Read DBF Files with Python";
+ homepage = https://dbfread.readthedocs.org/;
+ license = with licenses; [ mit ];
+ maintainers = with maintainers; [ vrthra ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dbus/default.nix b/nixpkgs/pkgs/development/python-modules/dbus/default.nix
new file mode 100644
index 00000000000..262c93878d3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dbus/default.nix
@@ -0,0 +1,34 @@
+{ lib, fetchurl, buildPythonPackage, python, pkgconfig, dbus, dbus-glib, isPyPy
+, ncurses, pygobject3 }:
+
+if isPyPy then throw "dbus-python not supported for interpreter ${python.executable}" else buildPythonPackage rec {
+ pname = "dbus-python";
+ version = "1.2.4";
+ format = "other";
+
+ outputs = [ "out" "dev" "doc" ];
+
+ src = fetchurl {
+ url = "https://dbus.freedesktop.org/releases/dbus-python/${pname}-${version}.tar.gz";
+ sha256 = "1k7rnaqrk7mdkg0k6n2jn3d1mxsl7s3i07g5a8va5yvl3y3xdwg2";
+ };
+
+ patches = [
+ ./fix-includedir.patch
+ ];
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [ dbus dbus-glib ]
+ # My guess why it's sometimes trying to -lncurses.
+ # It seems not to retain the dependency anyway.
+ ++ lib.optional (! python ? modules) ncurses;
+
+ doCheck = true;
+ checkInputs = [ dbus.out pygobject3 ];
+
+ meta = {
+ description = "Python DBus bindings";
+ license = lib.licenses.mit;
+ platforms = dbus.meta.platforms;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dbus/fix-includedir.patch b/nixpkgs/pkgs/development/python-modules/dbus/fix-includedir.patch
new file mode 100644
index 00000000000..e3bb0682b5c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dbus/fix-includedir.patch
@@ -0,0 +1,8 @@
+--- a/dbus-python.pc.in
++++ b/dbus-python.pc.in
+@@ -9,4 +9,4 @@
+ Description: Python bindings for D-Bus
+ Requires: dbus-1 >= 1.0
+ Version: @VERSION@
+-Cflags: -I${includedir}
++Cflags: -I${includedir}/dbus-1.0
diff --git a/nixpkgs/pkgs/development/python-modules/ddt/default.nix b/nixpkgs/pkgs/development/python-modules/ddt/default.nix
new file mode 100644
index 00000000000..46a229a99ae
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ddt/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose, six, pyyaml, mock
+}:
+
+buildPythonPackage rec {
+ pname = "ddt";
+ version = "1.2.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d13e6af8f36238e89d00f4ebccf2bda4f6d1878be560a6600689e42077e164e3";
+ };
+
+ checkInputs = [ nose six pyyaml mock ];
+
+ checkPhase = ''
+ nosetests -s
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Data-Driven/Decorated Tests, a library to multiply test cases";
+ homepage = https://github.com/txels/ddt;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/deap/default.nix b/nixpkgs/pkgs/development/python-modules/deap/default.nix
new file mode 100644
index 00000000000..e78a3f5eba0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/deap/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, buildPythonPackage, fetchPypi, python, numpy, matplotlib }:
+
+buildPythonPackage rec {
+ pname = "deap";
+ version = "1.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "102r11pxb36xkq5bjv1lpkss77v278f5xdv6lvkbjdvqryydf3yd";
+ };
+
+ propagatedBuildInputs = [ numpy matplotlib ];
+
+ checkPhase = ''
+ ${python.interpreter} setup.py nosetests --verbosity=3
+ '';
+
+ meta = with stdenv.lib; {
+ description = "DEAP is a novel evolutionary computation framework for rapid prototyping and testing of ideas.";
+ homepage = "https://github.com/DEAP/deap";
+ license = licenses.lgpl3;
+ maintainers = with maintainers; [ psyanticy ];
+ };
+
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/debian/default.nix b/nixpkgs/pkgs/development/python-modules/debian/default.nix
new file mode 100644
index 00000000000..fc9b9017cc9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/debian/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildPythonPackage, fetchPypi
+, chardet, six}:
+
+buildPythonPackage rec {
+ pname = "python-debian";
+ version = "0.1.34";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a02e073214e9f3a371f7ec0ff8b34dd82bd4941194dd69c49ad80b321b9d887e";
+ };
+
+ propagatedBuildInputs = [ chardet six ];
+
+ # No tests in archive
+ doCheck = false;
+
+ meta = {
+ description = "Debian package related modules";
+ license = lib.licenses.gpl2;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/decorator/default.nix b/nixpkgs/pkgs/development/python-modules/decorator/default.nix
new file mode 100644
index 00000000000..b8c784023c2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/decorator/default.nix
@@ -0,0 +1,21 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "decorator";
+ version = "4.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1pi54wqj2p6ka13x7q8d5zgqg9bcf7m5d00l7x5bi204qmhn65c6";
+ };
+
+ 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/nixpkgs/pkgs/development/python-modules/deform/default.nix b/nixpkgs/pkgs/development/python-modules/deform/default.nix
new file mode 100644
index 00000000000..e1c37fe6ead
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/deform/default.nix
@@ -0,0 +1,41 @@
+{ lib, buildPythonPackage, fetchPypi
+, chameleon, colander, iso8601, peppercorn, translationstring, zope_deprecation
+, nose, coverage, beautifulsoup4, flaky }:
+
+buildPythonPackage rec {
+ pname = "deform";
+ version = "2.0.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2ff29c32ebe544c0f0a77087e268b2cd9cb4b11fa35af3635d5b42913f88d74a";
+ };
+
+ postPatch = ''
+ substituteInPlace setup.py \
+ --replace "iso8601<=0.1.11" iso8601
+ '';
+
+ propagatedBuildInputs = [
+ chameleon
+ colander
+ iso8601
+ peppercorn
+ translationstring
+ zope_deprecation
+ ];
+
+ checkInputs = [
+ nose
+ coverage
+ beautifulsoup4
+ flaky
+ ];
+
+ meta = with lib; {
+ description = "Form library with advanced features like nested forms";
+ homepage = https://docs.pylonsproject.org/projects/deform/en/latest/;
+ license = licenses.free; # http://www.repoze.org/LICENSE.txt
+ maintainers = with maintainers; [ domenkozar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/defusedxml/default.nix b/nixpkgs/pkgs/development/python-modules/defusedxml/default.nix
new file mode 100644
index 00000000000..32819536500
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/defusedxml/default.nix
@@ -0,0 +1,11 @@
+{ buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "defusedxml";
+ version = "0.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1x54n0h8hl92vvwyymx883fbqpqjwn2mc8fb383bcg3z9zwz5mr4";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/delegator-py/default.nix b/nixpkgs/pkgs/development/python-modules/delegator-py/default.nix
new file mode 100644
index 00000000000..3521e8ce129
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/delegator-py/default.nix
@@ -0,0 +1,30 @@
+{ buildPythonPackage
+, lib
+, fetchFromGitHub
+, pexpect
+, pytest
+}:
+
+buildPythonPackage rec {
+ version = "0.1.1";
+ pname = "delegator.py";
+
+ src = fetchFromGitHub {
+ owner = "amitt001";
+ repo = "delegator.py";
+ rev = "v${version}";
+ sha256 = "17n9h3xzjsfxmwclh33vc4yg3c9yzh9hfhaj12kv5ah3fy8rklwb";
+ };
+
+ propagatedBuildInputs = [ pexpect ];
+
+ # no tests in github or pypi
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Subprocesses for Humans 2.0";
+ homepage = "https://github.com/amitt001/delegator.py";
+ license = licenses.mit;
+ maintainers = with maintainers; [ jonringer ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/deluge-client/default.nix b/nixpkgs/pkgs/development/python-modules/deluge-client/default.nix
new file mode 100644
index 00000000000..6f82adc94ca
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/deluge-client/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "deluge-client";
+ version = "1.7.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1ragmpihjr9p6n27hw7gy83qyc68csqpn18m9kvwsby1vi7mgdy8";
+ };
+
+ # it will try to connect to a running instance
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Lightweight pure-python rpc client for deluge";
+ homepage = https://github.com/JohnDoee/deluge-client;
+ license = licenses.mit;
+ maintainers = with maintainers; [ peterhoeg ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/demjson/default.nix b/nixpkgs/pkgs/development/python-modules/demjson/default.nix
new file mode 100644
index 00000000000..265a4cb5712
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/demjson/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k }:
+
+buildPythonPackage rec {
+ pname = "demjson";
+ version = "2.2.4";
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0ygbddpnvp5lby6mr5kz60la3hkvwwzv3wwb3z0w9ngxl0w21pii";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Encoder/decoder and lint/validator for JSON (JavaScript Object Notation)";
+ homepage = http://deron.meranda.us/python/demjson/;
+ license = licenses.lgpl3Plus;
+ maintainers = with maintainers; [ bjornfor ];
+ platforms = platforms.all;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dendropy/default.nix b/nixpkgs/pkgs/development/python-modules/dendropy/default.nix
new file mode 100644
index 00000000000..c0055580c40
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dendropy/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, pkgs
+, buildPythonPackage
+, fetchFromGitHub
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "DendroPy";
+ version = "4.4.0";
+
+ # tests are incorrectly packaged in pypi version
+ src = fetchFromGitHub {
+ owner = "jeetsukumaran";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "097hfyv2kaf4x92i4rjx0paw2cncxap48qivv8zxng4z7nhid0x9";
+ };
+
+ preCheck = ''
+ # Needed for unicode python tests
+ export LC_ALL="en_US.UTF-8"
+ cd tests # to find the 'support' module
+ '';
+
+ checkInputs = [ pytest pkgs.glibcLocales ];
+
+ checkPhase = ''
+ pytest -k 'not test_dataio_nexml_reader_tree_list and not test_pscores_with'
+ '';
+
+ meta = {
+ homepage = https://dendropy.org/;
+ description = "A Python library for phylogenetic computing";
+ maintainers = with lib.maintainers; [ unode ];
+ license = lib.licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dependency-injector/default.nix b/nixpkgs/pkgs/development/python-modules/dependency-injector/default.nix
new file mode 100644
index 00000000000..e135d8c7bc6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dependency-injector/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k, six, unittest2 }:
+
+let
+ testPath =
+ if isPy3k
+ then "test_*_py3.py"
+ else "test_*_py2_py3.py";
+in
+
+buildPythonPackage rec {
+ pname = "dependency-injector";
+ version = "3.14.10";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1c475axh40f8s4n5dqm52qczx9g2g8b8wsy0qvghirk84ikpca5y";
+ };
+
+ propagatedBuildInputs = [ six ];
+ checkInputs = [ unittest2 ];
+
+ checkPhase = ''
+ unit2 discover -s tests/unit -p "${testPath}"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Dependency injection microframework for Python";
+ homepage = https://github.com/ets-labs/python-dependency-injector;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ gerschtli ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/deprecated/default.nix b/nixpkgs/pkgs/development/python-modules/deprecated/default.nix
new file mode 100644
index 00000000000..ee7c89d8167
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/deprecated/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchPypi, buildPythonPackage,
+ wrapt, pytest, tox }:
+
+buildPythonPackage rec {
+ pname = "Deprecated";
+ version = "1.2.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1hcw9y7dvhwg5flk6wy8aa4kkgpvcqq3q4jd53h54586fp7w85d5";
+ };
+
+ postPatch = ''
+ # odd broken tests, don't appear in GitHub repo
+ rm tests/demo_classic_usage*.py
+ '';
+
+ propagatedBuildInputs = [ wrapt ];
+ checkInputs = [ pytest ];
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/tantale/deprecated";
+ description = "Python @deprecated decorator to deprecate old python classes, functions or methods";
+ platforms = platforms.all;
+ license = licenses.mit;
+ maintainers = with maintainers; [ tilpner ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/deprecation/default.nix b/nixpkgs/pkgs/development/python-modules/deprecation/default.nix
new file mode 100644
index 00000000000..e01433d90c5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/deprecation/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildPythonPackage, fetchPypi, python, packaging, unittest2 }:
+
+buildPythonPackage rec {
+ pname = "deprecation";
+ version = "2.0.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1vcjy6flqbzgjh4zhcs0sl83b946wxrlsx5miliz0ik1d9kjyff0";
+ };
+
+ propagatedBuildInputs = [ packaging ];
+
+ checkInputs = [ unittest2 ];
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover
+ '';
+
+ meta = with lib; {
+ description = "A library to handle automated deprecations";
+ homepage = https://deprecation.readthedocs.io/;
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/derpconf/default.nix b/nixpkgs/pkgs/development/python-modules/derpconf/default.nix
new file mode 100644
index 00000000000..84f30b7edf6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/derpconf/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi, six }:
+
+buildPythonPackage rec {
+ pname = "derpconf";
+ version = "0.8.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1bb152d8a1cf5c2a6d629bf29acd4af0c00811339642fc0a56172b0a83b31a15";
+ };
+
+ propagatedBuildInputs = [ six ];
+
+ meta = with stdenv.lib; {
+ description = "derpconf abstracts loading configuration files for your app";
+ homepage = https://github.com/globocom/derpconf;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/descartes/default.nix b/nixpkgs/pkgs/development/python-modules/descartes/default.nix
new file mode 100644
index 00000000000..996cd22e263
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/descartes/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchPypi,
+ matplotlib, shapely
+}:
+
+buildPythonPackage rec {
+ pname = "descartes";
+ version = "1.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0nq36w9ylvfwmwn5qd9c8fsp2jzsqpmy4xcr6pzxcpmg8qhm0nhk";
+ };
+
+ propagatedBuildInputs = [
+ matplotlib
+ shapely
+ ];
+
+ meta = with stdenv.lib; {
+ description = "Python library to use Shapely or GeoJSON objects as matplotlib paths";
+ homepage = https://bitbucket.org/sgillies/descartes/;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ knedlsepp ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/deskcon/default.nix b/nixpkgs/pkgs/development/python-modules/deskcon/default.nix
new file mode 100644
index 00000000000..2e205ce6955
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/deskcon/default.nix
@@ -0,0 +1,41 @@
+{ stdenv
+, buildPythonPackage
+, pyopenssl
+, pkgs
+, isPy3k
+, python
+}:
+
+buildPythonPackage {
+ name = "deskcon-0.3";
+ disabled = isPy3k;
+
+ src = pkgs.fetchFromGitHub {
+ owner= "screenfreeze";
+ repo = "deskcon-desktop";
+ rev = "267804122188fa79c37f2b21f54fe05c898610e6";
+ sha256 ="0i1dd85ls6n14m9q7lkympms1w3x0pqyaxvalq82s4xnjdv585j3";
+ };
+
+ phases = [ "unpackPhase" "installPhase" ];
+
+ 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 stdenv.lib; {
+ description = "Integrates an Android device into a desktop";
+ homepage = https://github.com/screenfreeze/deskcon-desktop;
+ license = licenses.gpl3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/detox/default.nix b/nixpkgs/pkgs/development/python-modules/detox/default.nix
new file mode 100644
index 00000000000..9fbeef2488c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/detox/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, pytest, tox, py, eventlet }:
+
+buildPythonPackage rec {
+ pname = "detox";
+ version = "0.19";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "e650f95f0c7f5858578014b3b193e5dac76c89285c1bbe4bae598fd641bf9cd3";
+ };
+
+ buildInputs = [ pytest ];
+ propagatedBuildInputs = [ tox py eventlet ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ # eventlet timeout, and broken invokation 3.5
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "What is detox?";
+ homepage = https://bitbucket.org/hpk42/detox;
+ license = licenses.mit;
+ # detox is unmaintained and incompatible with tox > 3.6
+ broken = true;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/devpi-common/default.nix b/nixpkgs/pkgs/development/python-modules/devpi-common/default.nix
new file mode 100644
index 00000000000..6bdda6ac5ea
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/devpi-common/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildPythonPackage, fetchPypi, requests, py, pytest, pytest-flakes }:
+
+buildPythonPackage rec {
+ pname = "devpi-common";
+ version = "3.3.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2c7a6471c0f5b07ac9257adec3b3c3a89193ee672fdeb0a6f29487dc9d675e0c";
+ };
+
+ propagatedBuildInputs = [ requests py ];
+ checkInputs = [ pytest pytest-flakes ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with lib; {
+ homepage = https://github.com/devpi/devpi;
+ description = "Utilities jointly used by devpi-server and devpi-client";
+ license = licenses.mit;
+ maintainers = with maintainers; [ lewo makefu ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dftfit/default.nix b/nixpkgs/pkgs/development/python-modules/dftfit/default.nix
new file mode 100644
index 00000000000..016a3a919f1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dftfit/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+, pymatgen
+, marshmallow
+, pyyaml
+, pygmo
+, pandas
+, scipy
+, numpy
+, scikitlearn
+, lammps-cython
+, pymatgen-lammps
+, pytestrunner
+, pytest
+, pytestcov
+, pytest-benchmark
+, isPy3k
+, openssh
+}:
+
+buildPythonPackage rec {
+ pname = "dftfit";
+ version = "0.5.0";
+ disabled = (!isPy3k);
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "fd9e777157669d004e7c25adce3e7c697234283384c99aa0c23454173a14a7a8";
+ };
+
+ buildInputs = [ pytestrunner ];
+ checkInputs = [ pytest pytestcov pytest-benchmark openssh ];
+ propagatedBuildInputs = [ pymatgen marshmallow pyyaml pygmo
+ pandas scipy numpy scikitlearn
+ lammps-cython pymatgen-lammps ];
+
+ # tests require git lfs download. and is quite large so skip tests
+ doCheck = false;
+
+ meta = {
+ description = "Ab-Initio Molecular Dynamics Potential Development";
+ homepage = https://gitlab.com/costrouc/dftfit;
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dictionaries/default.nix b/nixpkgs/pkgs/development/python-modules/dictionaries/default.nix
new file mode 100644
index 00000000000..0deab276255
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dictionaries/default.nix
@@ -0,0 +1,19 @@
+{ buildPythonPackage, fetchPypi, lib, six }:
+
+buildPythonPackage rec {
+ pname = "dictionaries";
+ version = "0.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1jx2ph509sk4l7spslz16y8l6xn97d13nspn4ds2lxn5ward9ihy";
+ };
+
+ buildInputs = [ six ];
+
+ meta = {
+ description = "Dict implementations with attribute access";
+ license = lib.licenses.mit;
+ maintainers = [ lib.maintainers.MostAwesomeDude ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dicttoxml/default.nix b/nixpkgs/pkgs/development/python-modules/dicttoxml/default.nix
new file mode 100644
index 00000000000..7d30aad69c4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dicttoxml/default.nix
@@ -0,0 +1,23 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "dicttoxml";
+ version = "1.7.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ea44cc4ec6c0f85098c57a431a1ee891b3549347b07b7414c8a24611ecf37e45";
+ };
+
+ # No tests in archive
+ doCheck = false;
+
+ meta = {
+ description = "Converts a Python dictionary or other native data type into a valid XML string";
+ homepage = https://github.com/quandyfactory/dicttoxml;
+ license = lib.licenses.gpl2;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/diff-match-patch/default.nix b/nixpkgs/pkgs/development/python-modules/diff-match-patch/default.nix
new file mode 100644
index 00000000000..cf1bebad144
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/diff-match-patch/default.nix
@@ -0,0 +1,17 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "diff-match-patch";
+ version = "20181111";
+
+ meta = {
+ homepage = https://code.google.com/p/google-diff-match-patch/;
+ description = "Diff, Match and Patch libraries for Plain Text";
+ license = lib.licenses.asl20;
+ };
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a809a996d0f09b9bbd59e9bbd0b71eed8c807922512910e05cbd3f9480712ddb";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/diff_cover/default.nix b/nixpkgs/pkgs/development/python-modules/diff_cover/default.nix
new file mode 100644
index 00000000000..57f0a1ef238
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/diff_cover/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, buildPythonPackage, fetchPypi, jinja2, jinja2_pluralize, pygments,
+ six, inflect, mock, nose, coverage, pycodestyle, flake8, pyflakes, git,
+ pylint, pydocstyle, fetchpatch, glibcLocales }:
+
+buildPythonPackage rec {
+ pname = "diff_cover";
+ version = "1.0.2";
+
+ preCheck = ''
+ export LC_ALL=en_US.UTF-8;
+ '';
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1wbp0kfv2mjxwnq2jlqmwvb71fywwc4x4azxi7ll5dll6nhjyd61";
+ };
+
+ patches = [
+ (fetchpatch {
+ name = "tests-fix.patch";
+ url = "https://github.com/Bachmann1234/diff-cover/commit/85c30959c8ed2aa3848f400095a2418f15bb7777.patch";
+ sha256 = "0xni4syrxww9kdv8495f416vqgfdys4w2hgf5rdi35hy3ybfslh0";
+ })
+ ];
+
+ propagatedBuildInputs = [ jinja2 jinja2_pluralize pygments six inflect ];
+
+ checkInputs = [ mock nose coverage pycodestyle flake8 pyflakes pylint pydocstyle git glibcLocales ];
+
+ meta = with stdenv.lib; {
+ description = "Automatically find diff lines that need test coverage";
+ homepage = https://github.com/Bachmann1234/diff-cover;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ dzabraev ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/digitalocean/default.nix b/nixpkgs/pkgs/development/python-modules/digitalocean/default.nix
new file mode 100644
index 00000000000..e81caa66e5f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/digitalocean/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, fetchPypi, requests, jsonpickle }:
+
+buildPythonPackage rec {
+ pname = "python-digitalocean";
+ version = "1.13.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0h4drpdsmk0b3rlvg6q6cz11k23w0swj1iddk7xdcw4m7r7c52kw";
+ };
+
+ propagatedBuildInputs = [ requests jsonpickle ];
+
+ # Package doesn't distribute tests.
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "digitalocean.com API to manage Droplets and Images";
+ homepage = https://pypi.python.org/pypi/python-digitalocean;
+ license = licenses.lgpl3;
+ maintainers = with maintainers; [ teh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dill/default.nix b/nixpkgs/pkgs/development/python-modules/dill/default.nix
new file mode 100644
index 00000000000..af24ad8ed04
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dill/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "dill";
+ version = "0.2.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f6d6046f9f9195206063dd0415dff185ad593d6ee8b0e67f12597c0f4df4986f";
+ };
+
+ # Messy test suite. Even when running the tests like tox does, it fails
+ doCheck = false;
+ checkPhase = ''
+ for test in tests/*.py; do
+ ${python.interpreter} $test
+ done
+ '';
+ # Following error without setting checkPhase
+ # TypeError: don't know how to make test from: {'byref': False, 'recurse': False, 'protocol': 3, 'fmode': 0}
+
+ meta = {
+ description = "Serialize all of python (almost)";
+ homepage = http://www.cacr.caltech.edu/~mmckerns/dill.htm;
+ license = lib.licenses.bsd3;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/diofant/default.nix b/nixpkgs/pkgs/development/python-modules/diofant/default.nix
new file mode 100644
index 00000000000..c473f2fb420
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/diofant/default.nix
@@ -0,0 +1,44 @@
+{ lib
+, isPy3k
+, buildPythonPackage
+, fetchPypi
+, pytestrunner
+, setuptools_scm
+, isort
+, mpmath
+, strategies
+}:
+
+buildPythonPackage rec {
+ pname = "diofant";
+ version = "0.10.0";
+
+ src = fetchPypi {
+ inherit version;
+ pname = "Diofant";
+ sha256 = "0qjg0mmz2cqxryr610mppx3virf1gslzrsk24304502588z53v8w";
+ };
+
+ nativeBuildInputs = [
+ isort
+ pytestrunner
+ setuptools_scm
+ ];
+
+ propagatedBuildInputs = [
+ mpmath
+ strategies
+ ];
+
+ # tests take ~1h
+ doCheck = false;
+
+ disabled = !isPy3k;
+
+ meta = with lib; {
+ description = "A Python CAS library";
+ homepage = "https://diofant.readthedocs.io/";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ suhr ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/discid/default.nix b/nixpkgs/pkgs/development/python-modules/discid/default.nix
new file mode 100644
index 00000000000..2684d4a06a9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/discid/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, libdiscid, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "discid";
+ version = "1.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1fc6kvnqwaz9lrs2qgsp8wh0nabf49010r0r53wnsmpmafy315nd";
+ };
+
+ patchPhase =
+ let extension = stdenv.hostPlatform.extensions.sharedLibrary; in
+ ''
+ substituteInPlace discid/libdiscid.py \
+ --replace "_open_library(_LIB_NAME)" \
+ "_open_library('${libdiscid}/lib/libdiscid${extension}')"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Python binding of libdiscid";
+ homepage = "https://python-discid.readthedocs.org/";
+ license = licenses.lgpl3Plus;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/discogs_client/default.nix b/nixpkgs/pkgs/development/python-modules/discogs_client/default.nix
new file mode 100644
index 00000000000..c39bede9e09
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/discogs_client/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi, requests, oauthlib }:
+
+buildPythonPackage rec {
+ pname = "discogs-client";
+ version = "2.2.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1n23xy33fdp3dq0hhfdg0lx4z7rhdi74ik8v1mc7rql1jbxl7bmf";
+ };
+
+ propagatedBuildInputs = [ requests oauthlib ];
+
+ meta = with stdenv.lib; {
+ description = "Official Python API client for Discogs";
+ license = licenses.bsd2;
+ homepage = "https://github.com/discogs/discogs_client";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/discordpy/default.nix b/nixpkgs/pkgs/development/python-modules/discordpy/default.nix
new file mode 100644
index 00000000000..41188a0de6e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/discordpy/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+, pythonOlder
+, withVoice ? true, libopus
+, aiohttp
+, websockets
+, pynacl
+}:
+
+buildPythonPackage rec {
+ pname = "discord.py";
+ version = "0.16.12";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "17fb8814100fbaf7a79468baa432184db6cef3bbea4ad194fe297c7407d50108";
+ };
+
+ propagatedBuildInputs = [ aiohttp websockets pynacl ];
+ patchPhase = ''
+ substituteInPlace "requirements.txt" \
+ --replace "aiohttp>=1.0.0,<1.1.0" "aiohttp"
+ '' + lib.optionalString withVoice ''
+ substituteInPlace "discord/opus.py" \
+ --replace "ctypes.util.find_library('opus')" "'${libopus}/lib/libopus.so.0'"
+ '';
+
+ disabled = pythonOlder "3.5";
+
+ # No tests in archive
+ doCheck = false;
+
+ meta = {
+ description = "A python wrapper for the Discord API";
+ homepage = "https://discordpy.rtfd.org/";
+ license = lib.licenses.mit;
+
+ # discord.py requires websockets<4.0
+ # See https://github.com/Rapptz/discord.py/issues/973
+ broken = true;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/diskcache/default.nix b/nixpkgs/pkgs/development/python-modules/diskcache/default.nix
new file mode 100644
index 00000000000..a62393b7baf
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/diskcache/default.nix
@@ -0,0 +1,26 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, tox
+}:
+
+buildPythonPackage rec {
+ pname = "diskcache";
+ version = "4.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "7c20b58ed07d03bbfba793f823d1fc27a61e590371fe6011fa1319a25c028cd1";
+ };
+
+ checkInputs = [
+ tox
+ ];
+
+ meta = with lib; {
+ description = "Disk and file backed persistent cache";
+ homepage = https://www.grantjenks.com/docs/diskcache/;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/distlib/default.nix b/nixpkgs/pkgs/development/python-modules/distlib/default.nix
new file mode 100644
index 00000000000..aea6bcd9504
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/distlib/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "distlib";
+ version = "0.2.9.post0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ecb3d0e4f71d0fa7f38db6bcc276c7c9a1c6638a516d726495934a553eb3fbe0";
+ extension = "zip";
+ };
+
+ # Tests use pypi.org.
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Low-level components of distutils2/packaging";
+ homepage = https://distlib.readthedocs.io;
+ license = licenses.psfl;
+ maintainers = with maintainers; [ lnl7 ];
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/distorm3/default.nix b/nixpkgs/pkgs/development/python-modules/distorm3/default.nix
new file mode 100644
index 00000000000..e21e6270b91
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/distorm3/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "distorm3";
+ version = "3.3.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "1bh9xdiz9mkf9lfffimfn3hgd0mh60y7wl1micgkxzpl7hnxrpd4";
+ };
+
+ # no tests included
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Powerful Disassembler Library For x86/AMD64";
+ homepage = https://github.com/gdabah/distorm;
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/distributed/default.nix b/nixpkgs/pkgs/development/python-modules/distributed/default.nix
new file mode 100644
index 00000000000..4a892ddb705
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/distributed/default.nix
@@ -0,0 +1,62 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+, pytest-repeat
+, pytest-faulthandler
+, pytest-timeout
+, mock
+, joblib
+, click
+, cloudpickle
+, dask
+, msgpack
+, psutil
+, six
+, sortedcontainers
+, tblib
+, toolz
+, tornado
+, zict
+, pyyaml
+, isPy3k
+, futures
+, singledispatch
+, mpi4py
+, bokeh
+}:
+
+buildPythonPackage rec {
+ pname = "distributed";
+ version = "2.3.0";
+
+ # get full repository need conftest.py to run tests
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "15lb6fz3739nkyxi1igzm5p2lk40digkc9fkzjqx1jpymfac9dwl";
+ };
+
+ checkInputs = [ pytest pytest-repeat pytest-faulthandler pytest-timeout mock joblib ];
+ propagatedBuildInputs = [
+ click cloudpickle dask msgpack psutil six
+ sortedcontainers tblib toolz tornado zict pyyaml mpi4py bokeh
+ ] ++ lib.optionals (!isPy3k) [ futures singledispatch ];
+
+ # tests take about 10-15 minutes
+ # ignore 5 cli tests out of 1000 total tests that fail due to subprocesses
+ # these tests are not critical to the library (only the cli)
+ checkPhase = ''
+ py.test distributed -m "not avoid-travis" -r s --timeout-method=thread --timeout=0 --durations=20 --ignore="distributed/cli/tests"
+ '';
+
+ # when tested random tests would fail and not repeatably
+ doCheck = false;
+
+ meta = {
+ description = "Distributed computation in Python.";
+ homepage = https://distributed.readthedocs.io/en/latest/;
+ license = lib.licenses.bsd3;
+ platforms = lib.platforms.x86; # fails on aarch64
+ maintainers = with lib.maintainers; [ teh costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/distro/default.nix b/nixpkgs/pkgs/development/python-modules/distro/default.nix
new file mode 100644
index 00000000000..ad8da4255d6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/distro/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchPypi, buildPythonPackage, pytest, pytestcov }:
+
+buildPythonPackage rec {
+ pname = "distro";
+ version = "1.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0mrg75w4ap7mdzyga75yaid9n8bgb345ih5mwjp3plj6v1jxwb9n";
+ };
+
+ # TODO: Enable more tests on NixOS (20 out of 173 are failing, 10 due to the
+ # missing lsb_release binary):
+ patches = [ ./nixos.patch ];
+
+ checkInputs = [ pytest pytestcov ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/nir0s/distro;
+ description = "Linux Distribution - a Linux OS platform information API.";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ nand0p ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/distro/nixos.patch b/nixpkgs/pkgs/development/python-modules/distro/nixos.patch
new file mode 100644
index 00000000000..21aa4827b63
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/distro/nixos.patch
@@ -0,0 +1,31 @@
+diff --git a/tests/test_distro.py b/tests/test_distro.py
+index 5521068..4e1bab8 100644
+--- a/tests/test_distro.py
++++ b/tests/test_distro.py
+@@ -432,7 +432,7 @@ class TestOSRelease:
+ self._test_outcome(desired_outcome)
+
+
+-@pytest.mark.skipif(not IS_LINUX, reason='Irrelevant on non-linux')
++@pytest.mark.skip(reason='lsb_release is not available and would return exit code 3')
+ class TestLSBRelease(DistroTestCase):
+
+ def setup_method(self, test_method):
+@@ -919,7 +919,7 @@ class TestDistroRelease:
+ self._test_outcome(desired_outcome, 'cloudlinux', '7', 'redhat')
+
+
+-@pytest.mark.skipif(not IS_LINUX, reason='Irrelevant on non-linux')
++@pytest.mark.skip(reason='Unknown (TODO)')
+ class TestOverall(DistroTestCase):
+ """Test a LinuxDistribution object created with default arguments.
+
+@@ -1618,7 +1618,7 @@ def _bad_os_listdir(path='.'):
+ raise OSError()
+
+
+-@pytest.mark.skipIf(not IS_LINUX, reason='Irrelevant on non-linx')
++@pytest.mark.skip(reason='Unknown (TODO)')
+ class TestOverallWithEtcNotReadable(TestOverall):
+ def setup_method(self, test_method):
+ self._old_listdir = os.listdir
diff --git a/nixpkgs/pkgs/development/python-modules/distutils-cfg/default.nix b/nixpkgs/pkgs/development/python-modules/distutils-cfg/default.nix
new file mode 100644
index 00000000000..cbf12c17582
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/distutils-cfg/default.nix
@@ -0,0 +1,32 @@
+# global distutils configuration, see http://docs.python.org/2/install/index.html#distutils-configuration-files
+
+{ stdenv, python, writeText, extraCfg ? "", overrideCfg ? "" }:
+
+
+let
+ distutilsCfg = writeText "distutils.cfg" (
+ if overrideCfg != "" then overrideCfg else ''
+ [easy_install]
+
+ # don't allow network connections during build to ensure purity
+ allow-hosts = None
+
+ # make sure we always unzip installed packages otherwise setup hooks won't work
+ zip_ok = 0
+
+ ${extraCfg}
+ '');
+in stdenv.mkDerivation {
+ name = "${python.libPrefix}-distutils.cfg";
+
+ buildInputs = [ python ];
+
+ dontUnpack = true;
+
+ installPhase = ''
+ dest="$out/lib/${python.libPrefix}/site-packages/distutils"
+ mkdir -p $dest
+ ln -s ${python}/lib/${python.libPrefix}/distutils/* $dest
+ ln -s ${distutilsCfg} $dest/distutils.cfg
+ '';
+}
diff --git a/nixpkgs/pkgs/development/python-modules/distutils_extra/default.nix b/nixpkgs/pkgs/development/python-modules/distutils_extra/default.nix
new file mode 100644
index 00000000000..42e7fe6e9f4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/distutils_extra/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+}:
+
+buildPythonPackage rec {
+ pname = "distutils-extra";
+ version = "2.39";
+
+ src = fetchurl {
+ url = "https://launchpad.net/python-distutils-extra/trunk/${version}/+download/python-${pname}-${version}.tar.gz";
+ sha256 = "1bv3h2p9ffbzyddhi5sccsfwrm3i6yxzn0m06fdxkj2zsvs28gvj";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = https://launchpad.net/python-distutils-extra;
+ description = "Enhancements to Python's distutils";
+ license = licenses.gpl2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dj-database-url/default.nix b/nixpkgs/pkgs/development/python-modules/dj-database-url/default.nix
new file mode 100644
index 00000000000..f334b7efeac
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dj-database-url/default.nix
@@ -0,0 +1,20 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "dj-database-url";
+ version = "0.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "4aeaeb1f573c74835b0686a2b46b85990571159ffc21aa57ecd4d1e1cb334163";
+ };
+
+ # Tests access a DB via network
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Use Database URLs in your Django Application";
+ homepage = https://github.com/kennethreitz/dj-database-url;
+ license = licenses.bsd2;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dj-email-url/default.nix b/nixpkgs/pkgs/development/python-modules/dj-email-url/default.nix
new file mode 100644
index 00000000000..c9e56017447
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dj-email-url/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+}:
+
+buildPythonPackage rec {
+ version = "0.1.0";
+ pname = "dj-email-url";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "84f32673156f58d740a14cab09f04ca92a65b2c8881b60e31e09e67d7853e544";
+ };
+
+ checkPhase = ''
+ ${python.interpreter} test_dj_email_url.py
+ '';
+
+ # tests not included with pypi release
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/migonzalvar/dj-email-url;
+ description = "Use an URL to configure email backend settings in your Django Application";
+ license = licenses.bsd0;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dj-search-url/default.nix b/nixpkgs/pkgs/development/python-modules/dj-search-url/default.nix
new file mode 100644
index 00000000000..68fe4c913d6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dj-search-url/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ version = "0.1";
+ pname = "dj-search-url";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "424d1a5852500b3c118abfdd0e30b3e0016fe68e7ed27b8553a67afa20d4fb40";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/dstufft/dj-search-url;
+ description = "Use Search URLs in your Django Haystack Application";
+ license = licenses.bsd0;
+ maintainers = [ maintainers.costrouc ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-allauth/default.nix b/nixpkgs/pkgs/development/python-modules/django-allauth/default.nix
new file mode 100644
index 00000000000..50922ccded2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-allauth/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, requests, requests_oauthlib
+, django, python3-openid, mock, coverage }:
+
+buildPythonPackage rec {
+ pname = "django-allauth";
+ version = "0.39.1";
+
+ # no tests on PyPI
+ src = fetchFromGitHub {
+ owner = "pennersr";
+ repo = pname;
+ rev = version;
+ sha256 = "1kplkanhj26z3i6p0l1r5lczha4pavcx96vj3kpcp1rvyk1v0f7r";
+ };
+
+ propagatedBuildInputs = [ requests requests_oauthlib django python3-openid ];
+
+ checkInputs = [ coverage mock ];
+
+ doCheck = false;
+ checkPhase = ''
+ cd $NIX_BUILD_TOP/$sourceRoot
+ coverage run manage.py test allauth
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Integrated set of Django applications addressing authentication, registration, account management as well as 3rd party (social) account authentication";
+ homepage = https://www.intenct.nl/projects/django-allauth;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-cache-url/default.nix b/nixpkgs/pkgs/development/python-modules/django-cache-url/default.nix
new file mode 100644
index 00000000000..6b8aac33139
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-cache-url/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+}:
+
+buildPythonPackage rec {
+ version = "3.0.0";
+ pname = "django-cache-url";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "235950e2d7cb16164082167c2974301e2f0fb2313d40bfacc9d24f5b09c3514b";
+ };
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ pytest tests
+ '';
+
+ # tests not included with pypi release
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/ghickman/django-cache-url;
+ description = "Use Cache URLs in your Django application";
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-compat/default.nix b/nixpkgs/pkgs/development/python-modules/django-compat/default.nix
new file mode 100644
index 00000000000..32d85cfadd7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-compat/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, python,
+ django, six
+}:
+buildPythonPackage rec {
+ pname = "django-compat";
+ version = "1.0.15";
+
+ # the pypi packages don't include everything required for the tests
+ src = fetchFromGitHub {
+ owner = "arteria";
+ repo = "django-compat";
+ rev = "v${version}";
+ sha256 = "1pr6v38ahrsvxlgmcx69s4b5q5082f44gzi4h3c32sccdc4pwqxp";
+ };
+
+ checkPhase = ''
+ runHook preCheck
+
+ # to convince the tests to run against the installed package, not the source directory, we extract the
+ # tests directory from it then dispose of the actual source
+ mv compat/tests .
+ rm -r compat
+ substituteInPlace runtests.py --replace compat.tests tests
+ ${python.interpreter} runtests.py
+
+ runHook postCheck
+ '';
+
+ propagatedBuildInputs = [ django six ];
+
+ meta = with stdenv.lib; {
+ description = "Forward and backwards compatibility layer for Django 1.4, 1.7, 1.8, 1.9, 1.10 and 1.11";
+ homepage = https://github.com/arteria/django-compat;
+ license = licenses.mit;
+ maintainers = with maintainers; [ ris ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-configurations/default.nix b/nixpkgs/pkgs/development/python-modules/django-configurations/default.nix
new file mode 100644
index 00000000000..0ca6c400df2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-configurations/default.nix
@@ -0,0 +1,41 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, django-discover-runner
+, mock
+, dj-database-url
+, dj-email-url
+, dj-search-url
+, django-cache-url
+, six
+, django
+}:
+
+buildPythonPackage rec {
+ version = "2.1";
+ pname = "django-configurations";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "71d9acdff33aa034f0157b0b3d23629fe0cd499bf4d0b6d699b9ca0701d952e8";
+ };
+
+ checkInputs = [ django-discover-runner mock dj-database-url dj-email-url dj-search-url django-cache-url six ];
+
+ checkPhase = ''
+ export PYTHONPATH=.:$PYTHONPATH
+ export DJANGO_SETTINGS_MODULE="tests.settings.main"
+ export DJANGO_CONFIGURATION="Test"
+ ${django}/bin/django-admin.py test
+ '';
+
+ # django.core.exceptions.ImproperlyConfigured: django-configurations settings importer wasn't correctly installed
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://django-configurations.readthedocs.io/;
+ description = "A helper for organizing Django settings";
+ license = licenses.bsd0;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-cors-headers/default.nix b/nixpkgs/pkgs/development/python-modules/django-cors-headers/default.nix
new file mode 100644
index 00000000000..24146306af7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-cors-headers/default.nix
@@ -0,0 +1,27 @@
+{ lib,
+ fetchPypi,
+ django,
+ buildPythonPackage
+}:
+
+buildPythonPackage rec {
+ pname = "django-cors-headers";
+ version = "3.0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0b11nkcviwv5dqnlmv63bgzciczb51wairm8b6wr6sda4p7y5wzb";
+ };
+
+ propagatedBuildInputs = [ django ];
+
+ # pypi release does not include tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Django app for handling server Cross-Origin Resource Sharing (CORS) headers";
+ homepage = https://github.com/OttoYiu/django-cors-headers;
+ license = licenses.mit;
+ maintainers = [ maintainers.ivegotasthma ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-csp/default.nix b/nixpkgs/pkgs/development/python-modules/django-csp/default.nix
new file mode 100644
index 00000000000..1eed9578a8a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-csp/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchPypi, buildPythonPackage, django }:
+
+buildPythonPackage rec {
+ pname = "django-csp";
+ version = "3.5";
+
+ src = fetchPypi {
+ inherit version;
+ pname = "django_csp";
+ sha256 = "0ks4zszbjx5lyqlc34pjica8hfcjzw4i5m6pivvnyv8yf0vh4q04";
+ };
+
+ # too complicated to setup - needs a running django instance
+ doCheck = false;
+
+ propagatedBuildInputs = [ django ];
+
+ meta = with stdenv.lib; {
+ description = "Adds Content-Security-Policy headers to Django";
+ homepage = "https://github.com/mozilla/django-csp";
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-discover-runner/default.nix b/nixpkgs/pkgs/development/python-modules/django-discover-runner/default.nix
new file mode 100644
index 00000000000..82895f76473
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-discover-runner/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, django
+}:
+
+buildPythonPackage rec {
+ version = "1.0";
+ pname = "django-discover-runner";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0ba91fe722c256bcbfdeb36fac7eac0f27e5bfda55d98c4c1cf9ab62b5b084fe";
+ };
+
+ propagatedBuildInputs = [ django ];
+
+ # tests not included with release
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/jezdez/django-discover-runner;
+ description = "A Django test runner based on unittest2's test discovery";
+ license = licenses.bsd0;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-extensions/default.nix b/nixpkgs/pkgs/development/python-modules/django-extensions/default.nix
new file mode 100644
index 00000000000..1e9a6ac764d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-extensions/default.nix
@@ -0,0 +1,46 @@
+{ lib, buildPythonPackage, fetchFromGitHub, pythonOlder
+, six, typing, pygments
+, django, shortuuid, python-dateutil, pytest
+, pytest-django, pytestcov, mock, vobject
+, werkzeug, glibcLocales, factory_boy
+}:
+
+buildPythonPackage rec {
+ pname = "django-extensions";
+ version = "2.1.9";
+
+ src = fetchFromGitHub {
+ owner = pname;
+ repo = pname;
+ rev = version;
+ sha256 = "08vggm6wrn5cbf8brfprif0rjrkqz06wddsw0ir1skkk8q2sp1b2";
+ };
+
+ postPatch = ''
+ substituteInPlace setup.py --replace "'tox'," ""
+
+ # not yet pytest 5 compatible?
+ rm tests/management/commands/test_set_fake_emails.py
+ rm tests/management/commands/test_set_fake_passwords.py
+ rm tests/management/commands/test_validate_templates.py
+
+ # pip should not be used during tests...
+ rm tests/management/commands/test_pipchecker.py
+ '';
+
+ propagatedBuildInputs = [ six ] ++ lib.optional (pythonOlder "3.5") typing;
+
+ checkInputs = [
+ django shortuuid python-dateutil pytest
+ pytest-django pytestcov mock vobject
+ werkzeug glibcLocales factory_boy pygments
+ ];
+
+ LC_ALL = "en_US.UTF-8";
+
+ meta = with lib; {
+ description = "A collection of custom extensions for the Django Framework";
+ homepage = https://github.com/django-extensions/django-extensions;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-gravatar2/default.nix b/nixpkgs/pkgs/development/python-modules/django-gravatar2/default.nix
new file mode 100644
index 00000000000..be153feb2a7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-gravatar2/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "django-gravatar2";
+ version = "1.4.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1qsv40xywbqsf4mkrmsswrpzqd7nfljxpfiim9an2z3dykn5rka6";
+ };
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Essential Gravatar support for Django";
+ homepage = https://github.com/twaddington/django-gravatar;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-haystack/default.nix b/nixpkgs/pkgs/development/python-modules/django-haystack/default.nix
new file mode 100644
index 00000000000..381624e5719
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-haystack/default.nix
@@ -0,0 +1,30 @@
+{ lib, buildPythonPackage, fetchPypi
+, setuptools, setuptools_scm, django, dateutil, whoosh, pysolr
+, coverage, mock, nose, geopy, requests }:
+
+buildPythonPackage rec {
+ pname = "django-haystack";
+ version = "2.8.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8b54bcc926596765d0a3383d693bcdd76109c7abb6b2323b3984a39e3576028c";
+ };
+
+ checkInputs = [ pysolr whoosh dateutil geopy coverage nose mock coverage requests ];
+ propagatedBuildInputs = [ django setuptools ];
+ nativeBuildInputs = [ setuptools_scm ];
+
+ postPatch = ''
+ sed -i 's/geopy==/geopy>=/' setup.py
+ '';
+
+ # ImportError: cannot import name django.contrib.gis.geos.prototypes
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Modular search for Django";
+ homepage = "http://haystacksearch.org/";
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-hijack-admin/default.nix b/nixpkgs/pkgs/development/python-modules/django-hijack-admin/default.nix
new file mode 100644
index 00000000000..005d61acab9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-hijack-admin/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, python,
+ django_hijack, django_nose }:
+buildPythonPackage rec {
+ pname = "django-hijack-admin";
+ version = "2.1.10";
+
+ # the pypi packages don't include everything required for the tests
+ src = fetchFromGitHub {
+ owner = "arteria";
+ repo = "django-hijack-admin";
+ rev = "v${version}";
+ sha256 = "0m98lchp2y43886n67j4s7miyd50pg2r5r966vjnxmd7nx7qkihf";
+ };
+
+ checkInputs = [ django_nose ];
+ propagatedBuildInputs = [ django_hijack ];
+
+ checkPhase = ''
+ runHook preCheck
+
+ # we have to do a little bit of tinkering to convince the tests to run against the installed package, not the
+ # source directory
+ mkdir testbase
+ pushd testbase
+ mv ../runtests.py .
+ ${python.interpreter} runtests.py hijack_admin
+ popd
+
+ runHook postCheck
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Admin integration for django-hijack";
+ homepage = https://github.com/arteria/django-hijack-admin;
+ license = licenses.mit;
+ maintainers = with maintainers; [ lsix ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-hijack/default.nix b/nixpkgs/pkgs/development/python-modules/django-hijack/default.nix
new file mode 100644
index 00000000000..f41e7d146c9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-hijack/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, python,
+ django, django_compat, django_nose
+}:
+buildPythonPackage rec {
+ pname = "django-hijack";
+ version = "2.1.10";
+
+ # the pypi packages don't include everything required for the tests
+ src = fetchFromGitHub {
+ owner = "arteria";
+ repo = "django-hijack";
+ rev = "v${version}";
+ sha256 = "01fwkjdzvw0yx2spwi7zc1yy64ndq1y72bfmk7kxnq5x803m2ak6";
+ };
+
+ checkInputs = [ django_nose ];
+ propagatedBuildInputs = [ django django_compat ];
+
+ checkPhase = ''
+ runHook preCheck
+
+ # we have to do a little bit of tinkering to convince the tests to run against the installed package, not the
+ # source directory
+ mkdir testbase
+ pushd testbase
+ mv ../runtests.py .
+ ${python.interpreter} runtests.py hijack
+ popd
+
+ runHook postCheck
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Allows superusers to hijack (=login as) and work on behalf of another user";
+ homepage = https://github.com/arteria/django-hijack;
+ license = licenses.mit;
+ maintainers = with maintainers; [ ris ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-ipware/default.nix b/nixpkgs/pkgs/development/python-modules/django-ipware/default.nix
new file mode 100644
index 00000000000..89147db63a8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-ipware/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildPythonPackage, fetchPypi, django }:
+
+buildPythonPackage rec {
+ pname = "django-ipware";
+ version = "2.1.0";
+
+ meta = {
+ description = "A Django application to retrieve user's IP address";
+ homepage = https://github.com/un33k/django-ipware;
+ license = lib.licenses.mit;
+ };
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a7c7a8fd019dbdc9c357e6e582f65034e897572fc79a7e467674efa8aef9d00b";
+ };
+
+ propagatedBuildInputs = [ django ];
+
+ # django.core.exceptions.ImproperlyConfigured: Requested setting IPWARE_TRUSTED_PROXY_LIST, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
+ doCheck = false;
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-jinja2/default.nix b/nixpkgs/pkgs/development/python-modules/django-jinja2/default.nix
new file mode 100644
index 00000000000..338af16b2e9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-jinja2/default.nix
@@ -0,0 +1,28 @@
+{ lib, buildPythonPackage, fetchPypi,
+ django, jinja2, pytz, tox
+ }:
+
+buildPythonPackage rec {
+ pname = "django-jinja";
+ version = "2.4.1";
+
+ meta = {
+ description = "Simple and nonobstructive jinja2 integration with Django";
+ homepage = https://github.com/niwinz/django-jinja;
+ license = lib.licenses.bsd3;
+ };
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8a49d73de616a12075eee14c6d3bbab936261a463457d40348d8b8e2995cfbed";
+ };
+
+ buildInputs = [ django pytz tox ];
+ propagatedBuildInputs = [ django jinja2 ];
+
+ # python installed: The directory '/homeless-shelter/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.,appdirs==1.4.3,Django==1.11.1,django-jinja==2.2.2,Jinja2==2.9.6,MarkupSafe==1.0,packaging==16.8,pyparsing==2.2.0,pytz==2017.2,six==1.10.0
+ doCheck = false;
+ checkPhase = ''
+ tox
+ '';
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-logentry-admin/default.nix b/nixpkgs/pkgs/development/python-modules/django-logentry-admin/default.nix
new file mode 100644
index 00000000000..d9734ff4a22
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-logentry-admin/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, buildPythonPackage, django, pytest, pytest-django }:
+
+buildPythonPackage rec {
+ pname = "django-logentry-admin";
+ version = "1.0.4";
+
+ src = fetchFromGitHub {
+ owner = "yprez";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "1ji04qklzhjb7fx6644vzikjb2196rxyi8hrwf2knsz41ndvq1l9";
+ };
+
+ checkInputs = [ pytest pytest-django ];
+ checkPhase = ''
+ rm -r logentry_admin __init__.py
+ pytest
+ '';
+
+ propagatedBuildInputs = [ django ];
+
+ meta = with stdenv.lib; {
+ description = "Show all LogEntry objects in the Django admin site";
+ homepage = "https://github.com/yprez/django-logentry-admin";
+ license = licenses.isc;
+ maintainers = with maintainers; [ mrmebelman ];
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/django-mailman3/default.nix b/nixpkgs/pkgs/development/python-modules/django-mailman3/default.nix
new file mode 100644
index 00000000000..91cea9b0059
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-mailman3/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, buildPythonPackage, fetchPypi, django-gravatar2, django_compressor
+, django-allauth, mailmanclient, django, mock
+}:
+
+buildPythonPackage rec {
+ pname = "django-mailman3";
+ version = "1.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0v6c1jhcc212wc2xa314irfcchl05r7nysrcy63dcaan958kmnnx";
+ };
+
+ propagatedBuildInputs = [
+ django-gravatar2 django_compressor django-allauth mailmanclient
+ ];
+ checkInputs = [ django mock ];
+
+ checkPhase = ''
+ cd $NIX_BUILD_TOP/$sourceRoot
+ PYTHONPATH=.:$PYTHONPATH django-admin.py test --settings=django_mailman3.tests.settings_test
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Django library for Mailman UIs";
+ homepage = https://gitlab.com/mailman/django-mailman3;
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ globin peti ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-multiselectfield/default.nix b/nixpkgs/pkgs/development/python-modules/django-multiselectfield/default.nix
new file mode 100644
index 00000000000..e2db26fe26b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-multiselectfield/default.nix
@@ -0,0 +1,26 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, django
+}:
+
+buildPythonPackage rec {
+ pname = "django-multiselectfield";
+ version = "0.1.8";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "52483d23aecbf6b502f9e6806e97da9288d5d7f2a3f99f736390763de68c8fd7";
+ };
+
+ propagatedBuildInputs = [ django ];
+
+ # No tests
+ doCheck = false;
+
+ meta = {
+ description = "django-multiselectfield";
+ homepage = "https://github.com/goinnn/django-multiselectfield";
+ license = lib.licenses.lgpl3;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/django-paintstore/default.nix b/nixpkgs/pkgs/development/python-modules/django-paintstore/default.nix
new file mode 100644
index 00000000000..096215a70ab
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-paintstore/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi, requests, requests_oauthlib
+, django, python3-openid }:
+
+buildPythonPackage rec {
+ pname = "django-paintstore";
+ version = "0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "12wxgwv1qbkfq7w5i7bm7aidv655c2sxp0ym73qf8606dxbjcwwg";
+ };
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Django app that integrates jQuery ColorPicker with the Django admin";
+ homepage = https://github.com/gsiegman/django-paintstore;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-pglocks/default.nix b/nixpkgs/pkgs/development/python-modules/django-pglocks/default.nix
new file mode 100644
index 00000000000..b2ee7b6f644
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-pglocks/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildPythonPackage, fetchPypi, django }:
+
+buildPythonPackage rec {
+ pname = "django-pglocks";
+ version = "1.0.2";
+
+ meta = {
+ description = "PostgreSQL locking context managers and functions for Django.";
+ homepage = https://github.com/Xof/django-pglocks;
+ license = lib.licenses.mit;
+ };
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1ks4k0bk4457wfl3xgzr4v7xb0lxmnkhxwhlp0bbnmzipdafw1cl";
+ };
+
+ buildInputs = [ django ];
+ propagatedBuildInputs = [ django ];
+
+ # tests need a postgres database
+ doCheck = false;
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-picklefield/default.nix b/nixpkgs/pkgs/development/python-modules/django-picklefield/default.nix
new file mode 100644
index 00000000000..4bcd767bd63
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-picklefield/default.nix
@@ -0,0 +1,19 @@
+{ lib, buildPythonPackage, fetchPypi, django }:
+
+buildPythonPackage rec {
+ pname = "django-picklefield";
+ version = "2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f1733a8db1b6046c0d7d738e785f9875aa3c198215de11993463a9339aa4ea24";
+ };
+
+ propagatedBuildInputs = [ django ];
+
+ meta = {
+ description = "A pickled object field for Django";
+ homepage = https://github.com/gintas/django-picklefield;
+ license = lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-pipeline/default.nix b/nixpkgs/pkgs/development/python-modules/django-pipeline/default.nix
new file mode 100644
index 00000000000..58e9d746b97
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-pipeline/default.nix
@@ -0,0 +1,36 @@
+{ lib, buildPythonPackage, fetchFromGitHub, isPy3k
+, django, futures, mock, jinja2, jsmin, slimit }:
+
+buildPythonPackage rec {
+ pname = "django-pipeline";
+ version = "1.6.14";
+
+ # no tests on PyPI
+ src = fetchFromGitHub {
+ owner = "jazzband";
+ repo = pname;
+ rev = version;
+ sha256 = "1xf732bd17mgha75jfhlnms46ib2pffhpfa0ca7bmng9jhbvsl9j";
+ };
+
+ postPatch = ''
+ substituteInPlace tests/tests/test_compiler.py \
+ --replace "/usr/bin/env" ""
+ '';
+
+ propagatedBuildInputs = [ django ] ++ lib.optional (!isPy3k) futures;
+
+ checkInputs = [ jinja2 jsmin slimit ] ++ lib.optional (!isPy3k) mock;
+
+ checkPhase = ''
+ export PYTHONPATH=.:$PYTHONPATH
+ export DJANGO_SETTINGS_MODULE=tests.settings
+ ${django}/bin/django-admin.py test tests
+ '';
+
+ meta = with lib; {
+ description = "Pipeline is an asset packaging library for Django";
+ homepage = https://github.com/cyberdelia/django-pipeline;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-polymorphic/default.nix b/nixpkgs/pkgs/development/python-modules/django-polymorphic/default.nix
new file mode 100644
index 00000000000..443f793f37b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-polymorphic/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, python, django, dj-database-url }:
+
+buildPythonPackage rec {
+ pname = "django-polymorphic";
+ version = "2.1.2";
+
+ # PyPI tarball is missing some test files
+ src = fetchFromGitHub {
+ owner = pname;
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "0zghrq7y7g2ls38cz6y98qj5xwnn992slhb95qyp6l66d420j179";
+ };
+
+ checkInputs = [ dj-database-url ];
+ propagatedBuildInputs = [ django ];
+
+ checkPhase = ''
+ ${python.interpreter} runtests.py
+ '';
+
+ meta = {
+ homepage = https://github.com/django-polymorphic/django-polymorphic;
+ description = "Improved Django model inheritance with automatic downcasting";
+ license = stdenv.lib.licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-q/default.nix b/nixpkgs/pkgs/development/python-modules/django-q/default.nix
new file mode 100644
index 00000000000..f671674ffe2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-q/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi, django-picklefield, arrow
+, blessed, django, future }:
+
+buildPythonPackage rec {
+ pname = "django-q";
+ version = "1.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "17mqxiacsp2yszak6j48fm7vx0w44pcg86flc63r9y5yhx490n5r";
+ };
+
+ propagatedBuildInputs = [
+ django-picklefield arrow blessed django future
+ ];
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A multiprocessing distributed task queue for Django";
+ homepage = https://django-q.readthedocs.org;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-raster/default.nix b/nixpkgs/pkgs/development/python-modules/django-raster/default.nix
new file mode 100644
index 00000000000..b5cb017956c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-raster/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k,
+ numpy, django_colorful, pillow, psycopg2,
+ pyparsing, django, celery, boto3
+}:
+if stdenv.lib.versionOlder django.version "2.0"
+then throw "django-raster requires Django >= 2.0. Consider overiding the python package set to use django_2."
+else
+buildPythonPackage rec {
+ version = "0.6";
+ pname = "django-raster";
+
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "9a0f8e71ebeeeb5380c6ca68e027e9de335f43bc15e89dd22e7a470c4eb7aeb8";
+ };
+
+ # Tests require a postgresql + postgis server
+ doCheck = false;
+
+ propagatedBuildInputs = [ numpy django_colorful pillow psycopg2
+ pyparsing django celery boto3 ];
+
+ meta = with stdenv.lib; {
+ description = "Basic raster data integration for Django";
+ homepage = https://github.com/geodesign/django-raster;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-rest-auth/default.nix b/nixpkgs/pkgs/development/python-modules/django-rest-auth/default.nix
new file mode 100644
index 00000000000..a6edc98b0cb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-rest-auth/default.nix
@@ -0,0 +1,29 @@
+{ lib,
+ fetchPypi,
+ django,
+ djangorestframework,
+ six,
+ buildPythonPackage
+}:
+
+buildPythonPackage rec {
+ pname = "django-rest-auth";
+ version = "0.9.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f11e12175dafeed772f50d740d22caeab27e99a3caca24ec65e66a8d6de16571";
+ };
+
+ propagatedBuildInputs = [ django djangorestframework six ];
+
+ # pypi release does not include tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Django app that makes registration and authentication easy";
+ homepage = https://github.com/Tivix/django-rest-auth;
+ license = licenses.mit;
+ maintainers = [ maintainers.ivegotasthma ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-sampledatahelper/default.nix b/nixpkgs/pkgs/development/python-modules/django-sampledatahelper/default.nix
new file mode 100644
index 00000000000..e08c296e807
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-sampledatahelper/default.nix
@@ -0,0 +1,30 @@
+{ lib, buildPythonPackage, fetchPypi,
+ django, nose, pillow, sampledata, six, versiontools
+}:
+
+buildPythonPackage rec {
+ pname = "django-sampledatahelper";
+ version = "0.4.1";
+
+ meta = {
+ description = "Helper class for generate sample data for django apps development";
+ homepage = https://github.com/kaleidos/django-sampledatahelper;
+ license = lib.licenses.bsd3;
+ };
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1795zg73lajcsfyd8i8cprb2v93d4csifjnld6bfnya90ncsbl4n";
+ };
+
+ buildInputs = [ django nose pillow sampledata six versiontools ];
+ propagatedBuildInputs = [ django sampledata ];
+
+ # HACK To prevent collision with pythonPackages.sampledata
+ preBuild = ''
+ rm tests/*
+ '';
+
+ # ERROR: test_image_from_directory (tests.tests.TestImageHelpers)
+ doCheck = false;
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-sesame/default.nix b/nixpkgs/pkgs/development/python-modules/django-sesame/default.nix
new file mode 100644
index 00000000000..68fa0dce615
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-sesame/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildPythonPackage, fetchPypi
+, django }:
+
+buildPythonPackage rec {
+ pname = "django-sesame";
+ version = "1.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "081q3vd9waiajiipg99flw0vlzk920sz07067v3n5774gx0qhbaa";
+ };
+
+ checkInputs = [ django ];
+
+ checkPhase = ''
+ PYTHONPATH="$(pwd):$PYTHONPATH" \
+ DJANGO_SETTINGS_MODULE=sesame.test_settings \
+ django-admin test sesame
+ '';
+
+ meta = with lib; {
+ description = "URLs with authentication tokens for automatic login";
+ homepage = https://github.com/aaugustin/django-sesame;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ elohmeier ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-sites/default.nix b/nixpkgs/pkgs/development/python-modules/django-sites/default.nix
new file mode 100644
index 00000000000..2882e1dc2b9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-sites/default.nix
@@ -0,0 +1,32 @@
+{ lib, buildPythonPackage, fetchPypi, django }:
+
+buildPythonPackage rec {
+ pname = "django-sites";
+ version = "0.10";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f6f9ae55a05288a95567f5844222052b6b997819e174f4bde4e7c23763be6fc3";
+ };
+ # LICENSE file appears to be missing from pypi package, but expected by the installer
+ # https://github.com/niwinz/django-sites/issues/11
+ postPatch = ''
+ touch LICENSE
+ '';
+
+ propagatedBuildInputs = [ django ];
+
+ # required files for test don't seem to be included in pypi package, full source for 0.10
+ # version doesn't appear to be present on github
+ # https://github.com/niwinz/django-sites/issues/9
+ doCheck = false;
+
+ meta = {
+ description = ''
+ Alternative implementation of django "sites" framework
+ based on settings instead of models.
+ '';
+ homepage = https://github.com/niwinz/django-sites;
+ license = lib.licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-sr/default.nix b/nixpkgs/pkgs/development/python-modules/django-sr/default.nix
new file mode 100644
index 00000000000..b8924b37bfd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-sr/default.nix
@@ -0,0 +1,20 @@
+{ lib, buildPythonPackage, fetchPypi, django, nose }:
+
+buildPythonPackage rec {
+ pname = "django-sr";
+ version = "0.0.4";
+
+ meta = {
+ description = "Django settings resolver";
+ homepage = https://github.com/jespino/django-sr;
+ license = lib.licenses.bsd3;
+ };
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0d3yqppi1q3crcn9nxx58wzm4yw61d5m7435g6rb9wcamr9bi1im";
+ };
+
+ buildInputs = [ django nose ];
+ propagatedBuildInputs = [ django ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-webpack-loader/default.nix b/nixpkgs/pkgs/development/python-modules/django-webpack-loader/default.nix
new file mode 100644
index 00000000000..af3404b2f88
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-webpack-loader/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "django-webpack-loader";
+ version = "0.6.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "087mspmx74qbcknpbksl66rsyin0dc5aglhjmmpk999pl2wvdfk0";
+ };
+
+ # django.core.exceptions.ImproperlyConfigured (path issue with DJANGO_SETTINGS_MODULE?)
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Use webpack to generate your static bundles";
+ homepage = https://github.com/owais/django-webpack-loader;
+ maintainers = with maintainers; [ peterromfeldhk ];
+ license = with licenses; [ mit ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django/1.10-gis-libs.template.patch b/nixpkgs/pkgs/development/python-modules/django/1.10-gis-libs.template.patch
new file mode 100644
index 00000000000..da154554d1b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django/1.10-gis-libs.template.patch
@@ -0,0 +1,24 @@
+diff --git a/django/contrib/gis/gdal/libgdal.py b/django/contrib/gis/gdal/libgdal.py
+--- a/django/contrib/gis/gdal/libgdal.py
++++ b/django/contrib/gis/gdal/libgdal.py
+@@ -17,7 +17,7 @@ try:
+ lib_path = settings.GDAL_LIBRARY_PATH
+ except (AttributeError, EnvironmentError,
+ ImportError, ImproperlyConfigured):
+- 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
+--- a/django/contrib/gis/geos/libgeos.py
++++ b/django/contrib/gis/geos/libgeos.py
+@@ -26,7 +26,7 @@ try:
+ lib_path = settings.GEOS_LIBRARY_PATH
+ except (AttributeError, EnvironmentError,
+ ImportError, ImproperlyConfigured):
+- 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/nixpkgs/pkgs/development/python-modules/django/1_11.nix b/nixpkgs/pkgs/development/python-modules/django/1_11.nix
new file mode 100644
index 00000000000..cb82fdc204c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django/1_11.nix
@@ -0,0 +1,34 @@
+{ stdenv, buildPythonPackage, fetchurl, substituteAll,
+ geos, gdal, pytz,
+ withGdal ? false
+}:
+
+buildPythonPackage rec {
+ pname = "Django";
+ version = "1.11.24";
+
+ src = fetchurl {
+ url = "https://www.djangoproject.com/m/releases/1.11/${pname}-${version}.tar.gz";
+ sha256 = "1qw97zcsnbnn9dqad1kps48vfaifdkvqb8c3vld6nnvp7x2jfp11";
+ };
+
+ patches = stdenv.lib.optionals withGdal [
+ (substituteAll {
+ src = ./1.10-gis-libs.template.patch;
+ geos = geos;
+ gdal = gdal;
+ extension = stdenv.hostPlatform.extensions.sharedLibrary;
+ })
+ ];
+
+ propagatedBuildInputs = [ pytz ];
+
+ # too complicated to setup
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A high-level Python Web framework";
+ homepage = https://www.djangoproject.com/;
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django/1_8.nix b/nixpkgs/pkgs/development/python-modules/django/1_8.nix
new file mode 100644
index 00000000000..d575599cbe1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django/1_8.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+}:
+
+buildPythonPackage rec {
+ pname = "Django";
+ version = "1.8.19";
+
+ src = fetchurl {
+ url = "http://www.djangoproject.com/m/releases/1.8/${pname}-${version}.tar.gz";
+ sha256 = "0iy0ni9j1rnx9b06ycgbg2dkrf3qid3y2jipk9x28cykz5f4mm1k";
+ };
+
+ # too complicated to setup
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A high-level Python Web framework";
+ homepage = https://www.djangoproject.com/;
+ license = licenses.bsd0;
+ knownVulnerabilities = [
+ # The patches were not backported due to Django 1.8 having reached EOL
+ https://www.djangoproject.com/weblog/2018/aug/01/security-releases/
+ https://www.djangoproject.com/weblog/2019/jan/04/security-releases/
+ https://www.djangoproject.com/weblog/2019/feb/11/security-releases/
+ https://www.djangoproject.com/weblog/2019/jun/03/security-releases/
+ https://www.djangoproject.com/weblog/2019/jul/01/security-releases/
+ ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django/2_1.nix b/nixpkgs/pkgs/development/python-modules/django/2_1.nix
new file mode 100644
index 00000000000..78d595082a4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django/2_1.nix
@@ -0,0 +1,38 @@
+{ stdenv, buildPythonPackage, fetchPypi, substituteAll,
+ isPy3k,
+ geos, gdal, pytz,
+ withGdal ? false
+}:
+
+buildPythonPackage rec {
+ pname = "Django";
+ version = "2.1.11";
+
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1m9bs78sh91slsjxkhxgkg715gbsgph9ky7d74czs0z2mhg86h8s";
+ };
+
+ patches = stdenv.lib.optionals withGdal [
+ (substituteAll {
+ src = ./1.10-gis-libs.template.patch;
+ geos = geos;
+ gdal = gdal;
+ extension = stdenv.hostPlatform.extensions.sharedLibrary;
+ })
+ ];
+
+ propagatedBuildInputs = [ pytz ];
+
+ # too complicated to setup
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A high-level Python Web framework";
+ homepage = https://www.djangoproject.com/;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ georgewhewell ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django/2_2.nix b/nixpkgs/pkgs/development/python-modules/django/2_2.nix
new file mode 100644
index 00000000000..95fd8a76928
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django/2_2.nix
@@ -0,0 +1,38 @@
+{ stdenv, buildPythonPackage, fetchPypi, substituteAll,
+ isPy3k,
+ geos, gdal, pytz, sqlparse,
+ withGdal ? false
+}:
+
+buildPythonPackage rec {
+ pname = "Django";
+ version = "2.2.5";
+
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0mpxmckd1mah0yrp6n8vjk6mq7hxf6d5xcbk6rcmi6z572h0mdyy";
+ };
+
+ patches = stdenv.lib.optional withGdal
+ (substituteAll {
+ src = ./1.10-gis-libs.template.patch;
+ geos = geos;
+ gdal = gdal;
+ extension = stdenv.hostPlatform.extensions.sharedLibrary;
+ })
+ ;
+
+ propagatedBuildInputs = [ pytz sqlparse ];
+
+ # too complicated to setup
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A high-level Python Web framework";
+ homepage = https://www.djangoproject.com/;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ georgewhewell lsix ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django_appconf/default.nix b/nixpkgs/pkgs/development/python-modules/django_appconf/default.nix
new file mode 100644
index 00000000000..67345cd8d6a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django_appconf/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, six, django }:
+buildPythonPackage rec {
+ pname = "django-appconf";
+ version = "1.0.3";
+
+ src = fetchFromGitHub {
+ owner = "django-compressor";
+ repo = "django-appconf";
+ rev = version;
+ sha256 = "06hwbz7362y0la9np3df25mms235fcqgpd2vn0mnf8dri9spzy1h";
+ };
+
+ propagatedBuildInputs = [ six django ];
+
+ checkPhase = ''
+ # prove we're running tests against installed package, not build dir
+ rm -r appconf
+ python -m django test --settings="tests.test_settings"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A helper class for handling configuration defaults of packaged apps gracefully";
+ homepage = https://django-appconf.readthedocs.org/;
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ desiderius ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django_classytags/default.nix b/nixpkgs/pkgs/development/python-modules/django_classytags/default.nix
new file mode 100644
index 00000000000..62efa667800
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django_classytags/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, django
+}:
+
+buildPythonPackage rec {
+ pname = "django-classy-tags";
+ version = "0.9.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0axzsigvmb17ha5mnr3xf6c851kwinjpkxksxwprwjakh1m59d1q";
+ };
+
+ propagatedBuildInputs = [ django ];
+
+ # pypi version doesn't include runtest.py, needed to run tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Class based template tags for Django";
+ homepage = https://github.com/ojii/django-classy-tags;
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django_colorful/default.nix b/nixpkgs/pkgs/development/python-modules/django_colorful/default.nix
new file mode 100644
index 00000000000..84dca56b22b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django_colorful/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, django
+}:
+
+buildPythonPackage rec {
+ pname = "django-colorful";
+ version = "1.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "fd246f2fb297ed074dc4349966d33a1c82d0308b7fb0d6ef6e2e76b90cefffb7";
+ };
+
+ # Tests aren't run
+ doCheck = false;
+
+ # Requires Django >= 1.8
+ buildInputs = [ django ];
+
+ meta = with stdenv.lib; {
+ description = "Django extension that provides database and form color fields";
+ homepage = https://github.com/charettes/django-colorful;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django_compressor/default.nix b/nixpkgs/pkgs/development/python-modules/django_compressor/default.nix
new file mode 100644
index 00000000000..0ee392756d3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django_compressor/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, buildPythonPackage, fetchPypi,
+ rcssmin, rjsmin, django_appconf }:
+buildPythonPackage rec {
+ pname = "django_compressor";
+ version = "2.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1pbygd00l0k5p1r959131khij1km1a1grfxg0r59ar2wyx3n7j27";
+ };
+ postPatch = ''
+ substituteInPlace setup.py --replace 'rcssmin == 1.0.6' 'rcssmin' \
+ --replace 'rjsmin == 1.0.12' 'rjsmin'
+ '';
+
+ # requires django-sekizai, which we don't have packaged yet
+ doCheck = false;
+
+ propagatedBuildInputs = [ rcssmin rjsmin django_appconf ];
+
+ meta = with stdenv.lib; {
+ description = "Compresses linked and inline JavaScript or CSS into single cached files";
+ homepage = https://django-compressor.readthedocs.org/en/latest/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ desiderius ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django_contrib_comments/default.nix b/nixpkgs/pkgs/development/python-modules/django_contrib_comments/default.nix
new file mode 100644
index 00000000000..96c63738eb7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django_contrib_comments/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, django
+}:
+
+buildPythonPackage rec {
+ pname = "django-contrib-comments";
+ version = "1.9.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "61b051d7bc3ff593e86b41a1ed5e969423cf55cc92768598af3315e2528e0890";
+ };
+
+ propagatedBuildInputs = [ django ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/django/django-contrib-comments;
+ description = "The code formerly known as django.contrib.comments";
+ license = licenses.bsd0;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django_environ/default.nix b/nixpkgs/pkgs/development/python-modules/django_environ/default.nix
new file mode 100644
index 00000000000..f95babfe233
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django_environ/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, django
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "django-environ";
+ version = "0.4.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6c9d87660142608f63ec7d5ce5564c49b603ea8ff25da595fd6098f6dc82afde";
+ };
+
+ # The testsuite fails to modify the base environment
+ doCheck = false;
+ propagatedBuildInputs = [ django six ];
+
+ meta = with stdenv.lib; {
+ description = "Utilize environment variables to configure your Django application";
+ homepage = https://github.com/joke2k/django-environ/;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django_evolution/default.nix b/nixpkgs/pkgs/development/python-modules/django_evolution/default.nix
new file mode 100644
index 00000000000..45447b70ae6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django_evolution/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, django
+}:
+
+buildPythonPackage rec {
+ pname = "django_evolution";
+ version = "0.7.8";
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "493ff2adad760990ce8cf87c13955af85d4dcff097427bc3619ed01672fac4a8";
+ };
+
+ propagatedBuildInputs = [ django ];
+
+ meta = with stdenv.lib; {
+ description = "A database schema evolution tool for the Django web framework";
+ homepage = http://code.google.com/p/django-evolution/;
+ license = licenses.bsd0;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django_guardian/default.nix b/nixpkgs/pkgs/development/python-modules/django_guardian/default.nix
new file mode 100644
index 00000000000..007d70ca810
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django_guardian/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, django_environ, mock, django
+, pytest, pytestrunner, pytest-django
+}:
+buildPythonPackage rec {
+ pname = "django-guardian";
+ version = "1.5.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0fixr2g5amdgqzh0rvfvd7hbxyfd5ra3y3s0fsmp8i1b68p97930";
+ };
+
+ checkInputs = [ pytest pytestrunner pytest-django django_environ mock ];
+ propagatedBuildInputs = [ django ];
+
+ meta = with stdenv.lib; {
+ description = "Per object permissions for Django";
+ homepage = https://github.com/django-guardian/django-guardian;
+ license = [ licenses.mit licenses.bsd2 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django_modelcluster/default.nix b/nixpkgs/pkgs/development/python-modules/django_modelcluster/default.nix
new file mode 100644
index 00000000000..4efd2002b1f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django_modelcluster/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytz
+, pythonOlder
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "django-modelcluster";
+ version = "5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0zcn1b0lp9dg6xvz8p8v1hrrgqj71izqalqz2dp1nz5rbj3s34x2";
+ };
+
+ disabled = pythonOlder "3.5";
+
+ doCheck = false;
+
+ propagatedBuildInputs = [ pytz six ];
+
+ meta = with stdenv.lib; {
+ description = "Django extension to allow working with 'clusters' of models as a single unit, independently of the database";
+ homepage = https://github.com/torchbox/django-modelcluster/;
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ desiderius ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django_nose/default.nix b/nixpkgs/pkgs/development/python-modules/django_nose/default.nix
new file mode 100644
index 00000000000..cf9516ce23a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django_nose/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, django
+}:
+
+buildPythonPackage rec {
+ pname = "django-nose";
+ version = "1.4.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "01wah0ci5xdpiikash68x6lprxlvnkxg72ly9kjrc9lklq34m4sq";
+ };
+
+ # vast dependency list
+ doCheck = false;
+
+ propagatedBuildInputs = [ django nose ];
+
+ meta = with stdenv.lib; {
+ description = "Provides all the goodness of nose in your Django tests";
+ homepage = https://github.com/django-nose/django-nose;
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django_redis/default.nix b/nixpkgs/pkgs/development/python-modules/django_redis/default.nix
new file mode 100644
index 00000000000..85761be9ba5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django_redis/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchPypi, buildPythonPackage,
+ mock, django, redis, msgpack }:
+buildPythonPackage rec {
+ pname = "django-redis";
+ version = "4.10.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1rxcwnv9ik0swkwvfqdi9i9baw6n8if5pj6q63fjh4p9chw3j2xg";
+ };
+
+ doCheck = false;
+
+ buildInputs = [ mock ];
+
+ propagatedBuildInputs = [
+ django
+ redis
+ msgpack
+ ];
+
+ meta = with stdenv.lib; {
+ description = "Full featured redis cache backend for Django";
+ homepage = https://github.com/niwibe/django-redis;
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django_reversion/default.nix b/nixpkgs/pkgs/development/python-modules/django_reversion/default.nix
new file mode 100644
index 00000000000..69c2f531728
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django_reversion/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, django
+}:
+
+buildPythonPackage rec {
+ pname = "django-reversion";
+ version = "3.0.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ed46722389fb2441860d471c7538967dee545bcee891d3d907b04f4baa98f5fa";
+ };
+
+ # tests assume the availability of a mysql/postgresql database
+ doCheck = false;
+
+ propagatedBuildInputs = [ django ];
+
+ meta = with stdenv.lib; {
+ description = "An extension to the Django web framework that provides comprehensive version control facilities";
+ homepage = https://github.com/etianen/django-reversion;
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django_silk/default.nix b/nixpkgs/pkgs/development/python-modules/django_silk/default.nix
new file mode 100644
index 00000000000..13ba5ef7964
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django_silk/default.nix
@@ -0,0 +1,62 @@
+{ stdenv
+, buildPythonPackage
+, python
+, fetchFromGitHub
+, django
+, pygments
+, simplejson
+, dateutil
+, requests
+, sqlparse
+, jinja2
+, autopep8
+, pytz
+, pillow
+, mock
+, gprof2dot
+, freezegun
+, contextlib2
+, networkx
+, pydot
+, factory_boy
+}:
+
+buildPythonPackage rec {
+ pname = "django-silk";
+ version = "3.0.3";
+
+ # pypi tarball doesn't include test project
+ src = fetchFromGitHub {
+ owner = "jazzband";
+ repo = "django-silk";
+ rev = version;
+ sha256 = "0j1r88zv7fvmlnrzr2h65czzdcpvl7n847ra1pfc52bfa4lf8b9j";
+ };
+ # "test_time_taken" tests aren't suitable for reproducible execution, but django's
+ # test runner doesn't have an easy way to ignore tests - so instead prevent it from picking
+ # them up as tests
+ postPatch = ''
+ substituteInPlace project/tests/test_silky_profiler.py \
+ --replace "def test_time_taken" "def _test_time_taken"
+ '';
+
+ buildInputs = [ mock ];
+ propagatedBuildInputs = [
+ django pygments simplejson dateutil requests
+ sqlparse jinja2 autopep8 pytz pillow gprof2dot
+ ];
+
+ checkInputs = [ freezegun contextlib2 networkx pydot factory_boy ];
+ checkPhase = ''
+ cd project
+ DB=sqlite3 DB_NAME=db.sqlite3 ${python.interpreter} manage.py test
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Silky smooth profiling for the Django Framework";
+ homepage = https://github.com/mtford90/silk;
+ license = licenses.mit;
+ maintainers = with maintainers; [ ris ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django_tagging/default.nix b/nixpkgs/pkgs/development/python-modules/django_tagging/default.nix
new file mode 100644
index 00000000000..fa06117a644
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django_tagging/default.nix
@@ -0,0 +1,21 @@
+{ buildPythonPackage, fetchPypi, django }:
+
+buildPythonPackage rec {
+ pname = "django-tagging";
+ version = "0.4.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "210b32af8372b8f68f261fdb7394075669222608d1e6a3bbf2031d59c826eb68";
+ };
+
+ # error: invalid command 'test'
+ doCheck = false;
+
+ propagatedBuildInputs = [ django ];
+
+ meta = {
+ description = "A generic tagging application for Django projects";
+ homepage = https://github.com/Fantomas42/django-tagging;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django_taggit/default.nix b/nixpkgs/pkgs/development/python-modules/django_taggit/default.nix
new file mode 100644
index 00000000000..b454fc32108
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django_taggit/default.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, buildPythonPackage
+, python
+, fetchPypi
+, pythonOlder
+, django
+, mock
+, isort
+}:
+
+buildPythonPackage rec {
+ pname = "django-taggit";
+ version = "1.1.0";
+ disabled = pythonOlder "2.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "044fzcpmns90kaxdi49qczlam4xsi8rl73rpfwvxx1gkcqzidgq1";
+ };
+
+ propagatedBuildInputs = [ isort django ];
+
+ checkInputs = [ mock ];
+ checkPhase = ''
+ # prove we're running tests against installed package, not build dir
+ rm -r taggit
+ ${python.interpreter} -m django test --settings=tests.settings
+ '';
+
+ meta = with stdenv.lib; {
+ description = "django-taggit is a reusable Django application for simple tagging";
+ homepage = https://github.com/alex/django-taggit/tree/master/;
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ desiderius ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django_treebeard/default.nix b/nixpkgs/pkgs/development/python-modules/django_treebeard/default.nix
new file mode 100644
index 00000000000..5c45b18be64
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django_treebeard/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, django
+}:
+
+buildPythonPackage rec {
+ pname = "django-treebeard";
+ version = "4.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c21db06a8d4943bf2a28d9d7a119058698fb76116df2679ecbf15a46a501de42";
+ };
+
+ buildInputs = [ pytest ];
+ propagatedBuildInputs = [ django ];
+
+ # tests fail "AppRegistryNotReady("Apps aren't loaded yet.")"
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Efficient tree implementations for Django 1.6+";
+ homepage = https://tabo.pe/projects/django-treebeard/;
+ maintainers = with maintainers; [ desiderius ];
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/djangoql/default.nix b/nixpkgs/pkgs/development/python-modules/djangoql/default.nix
new file mode 100644
index 00000000000..98f9c04c09f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/djangoql/default.nix
@@ -0,0 +1,28 @@
+{ lib, buildPythonPackage, fetchPypi, python
+, django, ply }:
+
+buildPythonPackage rec {
+ pname = "djangoql";
+ version = "0.12.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1mwv1ljznj9mn74ncvcyfmj6ygs8xm2rajpxm88gcac9hhdmk5gs";
+ };
+
+ propagatedBuildInputs = [ ply ];
+
+ checkInputs = [ django ];
+
+ checkPhase = ''
+ export PYTHONPATH=test_project:$PYTHONPATH
+ ${python.executable} test_project/manage.py test core.tests
+ '';
+
+ meta = with lib; {
+ description = "Advanced search language for Django";
+ homepage = https://github.com/ivelum/djangoql;
+ license = licenses.mit;
+ maintainers = with maintainers; [ earvstedt ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/djangorestframework-jwt/default.nix b/nixpkgs/pkgs/development/python-modules/djangorestframework-jwt/default.nix
new file mode 100644
index 00000000000..f50fd3ff9b6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/djangorestframework-jwt/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, fetchPypi
+, django
+, pyjwt
+, djangorestframework
+, buildPythonPackage
+}:
+
+buildPythonPackage rec {
+ pname = "djangorestframework-jwt";
+ version = "1.11.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "19rng6v1sw14mbjp5cplnrgxjnhlj8faalfw02iihi9s5w1k7zjy";
+ };
+
+ propagatedBuildInputs = [ pyjwt django djangorestframework ];
+
+ # ./runtests.py fails because the project must be tested against a django
+ # installation, there are missing database tables for User, that don't exist.
+ doCheck = false;
+
+ meta = with lib; {
+ description = "JSON Web Token Authentication support for Django REST Framework";
+ homepage = https://github.com/GetBlimp/django-rest-framework-jwt;
+ license = licenses.mit;
+ maintainers = [ maintainers.ivegotasthma ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/djangorestframework/default.nix b/nixpkgs/pkgs/development/python-modules/djangorestframework/default.nix
new file mode 100644
index 00000000000..12dcbf3993a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/djangorestframework/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi, django }:
+buildPythonPackage rec {
+ version = "3.9.4";
+ pname = "djangorestframework";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c12869cfd83c33d579b17b3cb28a2ae7322a53c3ce85580c2a2ebe4e3f56c4fb";
+ };
+
+ # Test settings are missing
+ doCheck = false;
+
+ propagatedBuildInputs = [ django ];
+
+ meta = with stdenv.lib; {
+ description = "Web APIs for Django, made easy";
+ homepage = https://www.django-rest-framework.org/;
+ maintainers = with maintainers; [ desiderius ];
+ license = licenses.bsd2;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/djmail/default.nix b/nixpkgs/pkgs/development/python-modules/djmail/default.nix
new file mode 100644
index 00000000000..1659d46abbc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/djmail/default.nix
@@ -0,0 +1,29 @@
+{ lib, buildPythonPackage, fetchPypi
+, glibcLocales
+, celery, django, psycopg2
+}:
+
+buildPythonPackage rec {
+ pname = "djmail";
+ version = "1.1.0";
+
+ meta = {
+ description = "Simple, powerfull and nonobstructive django email middleware";
+ homepage = https://github.com/bameda/djmail;
+ license = lib.licenses.bsd3;
+ };
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "87d2a8b4bdf67ae9b312e127ccc873a53116cf297ec786460d782ce82eaa76b5";
+ };
+
+ nativeBuildInputs = [ glibcLocales ];
+
+ LC_ALL = "en_US.UTF-8";
+
+ propagatedBuildInputs = [ celery django psycopg2 ];
+
+ # django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
+ doCheck = false;
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dkimpy/default.nix b/nixpkgs/pkgs/development/python-modules/dkimpy/default.nix
new file mode 100644
index 00000000000..ef0a6f90741
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dkimpy/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchPypi, openssl, buildPythonPackage
+, pytest, dnspython, pynacl, authres, python }:
+
+buildPythonPackage rec {
+ pname = "dkimpy";
+ version = "0.9.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "83d5ddc1b83304dbccba1dc7b9e0ee37bec4269bb9ad5779480991525c3811d6";
+};
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ openssl dnspython pynacl authres ];
+
+ patchPhase = ''
+ substituteInPlace dkim/dknewkey.py --replace \
+ /usr/bin/openssl ${openssl}/bin/openssl
+ '';
+
+ checkPhase = ''
+ ${python.interpreter} ./test.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "DKIM + ARC email signing/verification tools + Python module";
+ longDescription = ''
+ Python module that implements DKIM (DomainKeys Identified Mail) email
+ signing and verification. It also provides a number of convєnient tools
+ for command line signing and verification, as well as generating new DKIM
+ records. This version also supports the experimental Authenticated
+ Received Chain (ARC) protocol.
+ '';
+ homepage = https://launchpad.net/dkimpy;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ leenaars ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dlib/build-cores.patch b/nixpkgs/pkgs/development/python-modules/dlib/build-cores.patch
new file mode 100644
index 00000000000..eebc69a330f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dlib/build-cores.patch
@@ -0,0 +1,27 @@
+diff --git a/setup.py b/setup.py
+index 0c8d8f16..565ef8ef 100644
+--- a/setup.py
++++ b/setup.py
+@@ -172,21 +172,7 @@ class CMakeBuild(build_ext):
+ subprocess.check_call(cmake_build, cwd=build_folder)
+
+ def num_available_cpu_cores(ram_per_build_process_in_gb):
+- if 'TRAVIS' in os.environ and os.environ['TRAVIS']=='true':
+- # When building on travis-ci, just use 2 cores since travis-ci limits
+- # you to that regardless of what the hardware might suggest.
+- return 2
+- try:
+- mem_bytes = os.sysconf('SC_PAGE_SIZE') * os.sysconf('SC_PHYS_PAGES')
+- mem_gib = mem_bytes/(1024.**3)
+- num_cores = multiprocessing.cpu_count()
+- # make sure we have enough ram for each build process.
+- mem_cores = int(floor(mem_gib/float(ram_per_build_process_in_gb)+0.5));
+- # We are limited either by RAM or CPU cores. So pick the limiting amount
+- # and return that.
+- return max(min(num_cores, mem_cores), 1)
+- except ValueError:
+- return 2 # just assume 2 if we can't get the os to tell us the right answer.
++ return os.getenv("NIX_BUILD_CORES", 1)
+
+
+ from setuptools.command.test import test as TestCommand
diff --git a/nixpkgs/pkgs/development/python-modules/dlib/default.nix b/nixpkgs/pkgs/development/python-modules/dlib/default.nix
new file mode 100644
index 00000000000..a57d8307551
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dlib/default.nix
@@ -0,0 +1,27 @@
+{ buildPythonPackage, dlib, python, pytest, more-itertools, avxSupport ? true, lib }:
+
+buildPythonPackage {
+ inherit (dlib) name src nativeBuildInputs buildInputs meta;
+
+ # although AVX can be enabled, we never test with it. Some Hydra machines
+ # fail because of this, however their build results are probably used on hardware
+ # with AVX support.
+ checkPhase = ''
+ ${python.interpreter} nix_run_setup test --no USE_AVX_INSTRUCTIONS
+ '';
+
+ setupPyBuildFlags = lib.optional avxSupport "--no USE_AVX_INSTRUCTIONS";
+
+ patches = [ ./build-cores.patch ];
+
+ postPatch = ''
+ substituteInPlace setup.py \
+ --replace "more-itertools<6.0.0" "more-itertools" \
+ --replace "pytest==3.8" "pytest"
+ '';
+
+ checkInputs = [ pytest more-itertools ];
+
+ enableParallelBuilding = true;
+ dontUseCmakeConfigure = true;
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dm-sonnet/default.nix b/nixpkgs/pkgs/development/python-modules/dm-sonnet/default.nix
new file mode 100644
index 00000000000..4ce61680f03
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dm-sonnet/default.nix
@@ -0,0 +1,92 @@
+{ lib
+, fetchFromGitHub
+, buildBazelPackage
+, buildPythonPackage
+, git
+, python
+, six
+, absl-py
+, semantic-version
+, contextlib2
+, wrapt
+, tensorflow
+, tensorflow-probability
+, tensorflow-estimator
+}:
+
+let
+ version = "1.33";
+
+ # first build all binaries and generate setup.py using bazel
+ bazel-build = buildBazelPackage {
+ name = "dm-sonnet-bazel-${version}";
+
+ src = fetchFromGitHub {
+ owner = "deepmind";
+ repo = "sonnet";
+ rev = "v${version}";
+ sha256 = "1nqsja1s8jrkq6v1whgh7smk17313mjr9vs3k5c1m8px4yblzhqc";
+ };
+
+ nativeBuildInputs = [
+ git # needed to fetch the bazel deps (protobuf in particular)
+ ];
+
+ # see https://github.com/deepmind/sonnet/blob/master/docs/INSTALL.md
+ bazelTarget = ":install";
+
+ fetchAttrs = {
+ sha256 = "0mxma7jajm42v1hv6agl909xra0azihj588032ivhlmmh403x6wg";
+ };
+
+ bazelFlags = [
+ # https://github.com/deepmind/sonnet/issues/134
+ "--incompatible_disable_deprecated_attr_params=false"
+ ];
+
+ buildAttrs = {
+ preBuild = ''
+ patchShebangs .
+ '';
+
+ installPhase = ''
+ # do not generate a wheel, instead just copy the generated files to $out to be installed by buildPythonPackage
+ sed -i 's,.*bdist_wheel.*,cp -rL . "$out"; exit 0,' bazel-bin/install
+
+ # the target directory "dist" does not actually matter since we're not generating a wheel
+ bazel-bin/install dist
+ '';
+ };
+ };
+
+# now use pip to install the package prepared by bazel
+in buildPythonPackage {
+ pname = "dm-sonnet";
+ inherit version;
+
+ src = bazel-build;
+
+ propagatedBuildInputs = [
+ six
+ absl-py
+ semantic-version
+ contextlib2
+ wrapt
+ tensorflow
+ tensorflow-probability
+ tensorflow-estimator
+ ];
+
+ # not sure how to properly run the real test suite -- through bazel?
+ checkPhase = ''
+ ${python.interpreter} -c "import sonnet"
+ '';
+
+ meta = with lib; {
+ description = "TensorFlow-based neural network library";
+ homepage = https://sonnet.dev;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ timokau ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dmenu/default.nix b/nixpkgs/pkgs/development/python-modules/dmenu/default.nix
new file mode 100644
index 00000000000..d7ec8161ef5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dmenu/default.nix
@@ -0,0 +1,24 @@
+{ buildPythonPackage, lib, fetchPypi, dmenu }:
+
+buildPythonPackage rec {
+ pname = "dmenu-python";
+ version = "0.2.1";
+
+ src = fetchPypi {
+ inherit version;
+ pname = "dmenu";
+ sha256 = "06v2fq0ciallbib7sbk4kncj0n3gdqp1kz8n5k2669x49wyh34wm";
+ };
+
+ propagatedBuildInputs = [ dmenu ];
+
+ # No tests existing
+ doCheck = false;
+
+ meta = {
+ description = "A Python wrapper for dmenu";
+ homepage = http://dmenu.readthedocs.io;
+ license = lib.licenses.mit;
+ maintainers = [ lib.maintainers.nico202 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dnslib/default.nix b/nixpkgs/pkgs/development/python-modules/dnslib/default.nix
new file mode 100644
index 00000000000..65f45ca86f6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dnslib/default.nix
@@ -0,0 +1,20 @@
+{ lib, python, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "dnslib";
+ version = "0.9.10";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "666bf55274a630a2925411c4ea9ca724529299bbe70f91979ad99c72c5e5099e";
+ };
+
+ checkPhase = "VERSIONS=${python.interpreter} ./run_tests.sh";
+
+ meta = with lib; {
+ description = "Simple library to encode/decode DNS wire-format packets";
+ license = licenses.bsd2;
+ homepage = https://bitbucket.org/paulc/dnslib/;
+ maintainers = with maintainers; [ delroth ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dnspython/default.nix b/nixpkgs/pkgs/development/python-modules/dnspython/default.nix
new file mode 100644
index 00000000000..74b49d1fa5a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dnspython/default.nix
@@ -0,0 +1,22 @@
+{ buildPythonPackage, fetchPypi, lib }:
+
+buildPythonPackage rec {
+ pname = "dnspython";
+ version = "1.16.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "36c5e8e38d4369a08b6780b7f27d790a292b2b08eea01607865bf0936c558e01";
+ };
+
+ # needs networking for some tests
+ doCheck = false;
+
+ meta = {
+ description = "A DNS toolkit for Python 3.x";
+ homepage = http://www.dnspython.org;
+ # BSD-like, check http://www.dnspython.org/LICENSE for details
+ license = lib.licenses.free;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/doc8/default.nix b/nixpkgs/pkgs/development/python-modules/doc8/default.nix
new file mode 100644
index 00000000000..307496cc65c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/doc8/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pbr
+, docutils
+, six
+, chardet
+, stevedore
+, restructuredtext_lint
+}:
+
+buildPythonPackage rec {
+ pname = "doc8";
+ version = "0.8.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2df89f9c1a5abfb98ab55d0175fed633cae0cf45025b8b1e0ee5ea772be28543";
+ };
+
+ buildInputs = [ pbr ];
+ propagatedBuildInputs = [ docutils six chardet stevedore restructuredtext_lint ];
+
+ doCheck = false;
+
+ meta = {
+ description = "Style checker for Sphinx (or other) RST documentation";
+ homepage = "https://launchpad.net/doc8";
+ license = lib.licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/docker-py/default.nix b/nixpkgs/pkgs/development/python-modules/docker-py/default.nix
new file mode 100644
index 00000000000..84dba75e404
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/docker-py/default.nix
@@ -0,0 +1,28 @@
+{ lib, buildPythonPackage, fetchPypi, six, requests, websocket_client, docker_pycreds }:
+
+buildPythonPackage rec {
+ version = "1.10.6";
+ pname = "docker-py";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "05f49f6hnl7npmi7kigg0ibqk8s3fhzx1ivvz1kqvlv4ay3paajc";
+ };
+
+ # The tests access the network.
+ doCheck = false;
+
+ propagatedBuildInputs = [
+ six
+ requests
+ websocket_client
+ docker_pycreds
+ ];
+
+ meta = {
+ description = "Python library for the Docker Remote API";
+ homepage = https://github.com/docker/docker-py/;
+ license = lib.licenses.asl20;
+ maintainers = [ lib.maintainers.pmiddend ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/docker-pycreds/default.nix b/nixpkgs/pkgs/development/python-modules/docker-pycreds/default.nix
new file mode 100644
index 00000000000..e47196df07a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/docker-pycreds/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi, six }:
+
+buildPythonPackage rec {
+ pname = "docker-pycreds";
+ version = "0.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6ce3270bcaf404cc4c3e27e4b6c70d3521deae82fb508767870fdbf772d584d4";
+ };
+
+ # require docker-credential-helpers binaries
+ doCheck = false;
+
+ propagatedBuildInputs = [ six ];
+
+ meta = with stdenv.lib; {
+ description = "Python bindings for the docker credentials store API.";
+ homepage = https://github.com/shin-/dockerpy-creds;
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/docker/default.nix b/nixpkgs/pkgs/development/python-modules/docker/default.nix
new file mode 100644
index 00000000000..d82cc0d3f6b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/docker/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy27
+, backports_ssl_match_hostname
+, mock
+, paramiko
+, pytest
+, requests
+, six
+, websocket_client
+}:
+
+buildPythonPackage rec {
+ version = "4.0.2";
+ pname = "docker";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0r1i46h8x1vfvadayyvmh5hc6mpzgv3vvp6pv4g1wavamya2wnyc";
+ };
+
+ propagatedBuildInputs = [
+ six
+ requests
+ websocket_client
+ paramiko
+ ] ++ stdenv.lib.optional isPy27 backports_ssl_match_hostname;
+
+ checkInputs = [
+ mock
+ pytest
+ ];
+
+ # Other tests touch network
+ checkPhase = ''
+ ${pytest}/bin/pytest tests/unit/
+ '';
+
+ meta = with stdenv.lib; {
+ description = "An API client for docker written in Python";
+ homepage = https://github.com/docker/docker-py;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ jonringer ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dockerfile-parse/default.nix b/nixpkgs/pkgs/development/python-modules/dockerfile-parse/default.nix
new file mode 100644
index 00000000000..2f9e32f088e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dockerfile-parse/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, buildPythonPackage, fetchPypi, six, pytestcov, pytest }:
+
+buildPythonPackage rec {
+ version = "0.0.15";
+ pname = "dockerfile-parse";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1s05s1hc834yk6qxj2yv3fh7grj3q52d6jjy0sv1p05938baprfm";
+ };
+
+ postPatch = ''
+ echo " " > tests/requirements.txt \
+ '';
+
+ propagatedBuildInputs = [ six ];
+
+ checkInputs = [ pytestcov pytest ];
+
+ meta = with stdenv.lib; {
+ description = "Python library for parsing Dockerfile files";
+ homepage = https://github.com/DBuildService/dockerfile-parse;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ leenaars ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dockerpty/default.nix b/nixpkgs/pkgs/development/python-modules/dockerpty/default.nix
new file mode 100644
index 00000000000..f7a64481c66
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dockerpty/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi, six }:
+
+buildPythonPackage rec {
+ pname = "dockerpty";
+ version = "0.4.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1kjn64wx23jmr8dcc6g7bwlmrhfmxr77gh6iphqsl39sayfxdab9";
+ };
+
+ propagatedBuildInputs = [ six ];
+
+ meta = with stdenv.lib; {
+ description = "Functionality needed to operate the pseudo-tty (PTY) allocated to a docker container";
+ homepage = https://github.com/d11wtq/dockerpty;
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/docopt/default.nix b/nixpkgs/pkgs/development/python-modules/docopt/default.nix
new file mode 100644
index 00000000000..61c71d87c53
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/docopt/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "docopt";
+ version = "0.6.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "14f4hn6d1j4b99svwbaji8n2zj58qicyz19mm0x6pmhb50jsics9";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Pythonic argument parser, that will make you smile";
+ homepage = http://docopt.org/;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/docrep/default.nix b/nixpkgs/pkgs/development/python-modules/docrep/default.nix
new file mode 100644
index 00000000000..8e6b00d808c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/docrep/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "docrep";
+ version = "0.2.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c48939ae14d79172839a5bbaf5a570add47f6cc44d2c18f6b1fac8f1c38dec4d";
+ };
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ six ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ # tests not packaged with PyPi download
+ doCheck = false;
+
+ meta = {
+ description = "Python package for docstring repetition";
+ homepage = https://github.com/Chilipp/docrep;
+ license = lib.licenses.gpl2;
+ maintainers = with lib.maintainers; [ costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/doctest-ignore-unicode/default.nix b/nixpkgs/pkgs/development/python-modules/doctest-ignore-unicode/default.nix
new file mode 100644
index 00000000000..f3be8898760
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/doctest-ignore-unicode/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi, nose }:
+
+buildPythonPackage rec {
+ pname = "doctest-ignore-unicode";
+ version = "0.1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1m9aa4qnyj21lbq4sbvmv1vcz7zksss4rz37ddf2hxv4hk8b547w";
+ };
+
+ propagatedBuildInputs = [ nose ];
+
+ meta = with stdenv.lib; {
+ description = "Add flag to ignore unicode literal prefixes in doctests";
+ license = with licenses; [ asl20 ];
+ homepage = https://github.com/gnublade/doctest-ignore-unicode;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/docutils/default.nix b/nixpkgs/pkgs/development/python-modules/docutils/default.nix
new file mode 100644
index 00000000000..b84535c2112
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/docutils/default.nix
@@ -0,0 +1,38 @@
+{ stdenv
+, lib
+, fetchurl
+, buildPythonPackage
+, isPy3k
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "docutils";
+ version = "0.14";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/docutils/${pname}.tar.gz";
+ sha256 = "0x22fs3pdmr42kvz6c654756wja305qv6cx1zbhwlagvxgr4xrji";
+ };
+
+ # Only Darwin needs LANG, but we could set it in general.
+ # It's done here conditionally to prevent mass-rebuilds.
+ checkPhase = lib.optionalString (isPy3k && stdenv.isDarwin) ''LANG="en_US.UTF-8" LC_ALL="en_US.UTF-8" '' + (if isPy3k then ''
+ ${python.interpreter} test3/alltests.py
+ '' else ''
+ ${python.interpreter} test/alltests.py
+ '');
+
+ # Create symlinks lacking a ".py" suffix, many programs depend on these names
+ postFixup = ''
+ for f in $out/bin/*.py; do
+ ln -s $(basename $f) $out/bin/$(basename $f .py)
+ done
+ '';
+
+ meta = {
+ description = "Docutils -- Python Documentation Utilities";
+ homepage = http://docutils.sourceforge.net/;
+ maintainers = with lib.maintainers; [ AndersonTorres ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dogpile.cache/default.nix b/nixpkgs/pkgs/development/python-modules/dogpile.cache/default.nix
new file mode 100644
index 00000000000..b44597b8d13
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dogpile.cache/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, pytest, pytestcov, mock, Mako, decorator
+}:
+
+buildPythonPackage rec {
+ pname = "dogpile.cache";
+ version = "0.7.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "691b7f199561c4bd6e7e96f164a43cc3781b0c87bea29b7d59d859f873fd4a31";
+ };
+
+ # Disable concurrency tests that often fail,
+ # probably some kind of timing issue.
+ postPatch = ''
+ rm tests/test_lock.py
+ # Failing tests. https://bitbucket.org/zzzeek/dogpile.cache/issues/116
+ rm tests/cache/test_memcached_backend.py
+ '';
+
+ checkInputs = [ pytest pytestcov mock Mako ];
+
+ propagatedBuildInputs = [ decorator ];
+
+ meta = with stdenv.lib; {
+ description = "A caching front-end based on the Dogpile lock";
+ homepage = https://bitbucket.org/zzzeek/dogpile.cache;
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dogpile.core/default.nix b/nixpkgs/pkgs/development/python-modules/dogpile.core/default.nix
new file mode 100644
index 00000000000..622954f6144
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dogpile.core/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "dogpile.core";
+ version = "0.4.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0xpdvg4kr1isfkrh1rfsh7za4q5a5s6l2kf9wpvndbwf3aqjyrdy";
+ };
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A 'dogpile' lock, typically used as a component of a larger caching solution";
+ homepage = https://bitbucket.org/zzzeek/dogpile.core;
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dogtail/default.nix b/nixpkgs/pkgs/development/python-modules/dogtail/default.nix
new file mode 100644
index 00000000000..a12a63c46f1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dogtail/default.nix
@@ -0,0 +1,60 @@
+{ lib
+, buildPythonPackage
+, python
+, pygobject3
+, pyatspi
+, pycairo
+, at-spi2-core
+, gobject-introspection
+, gtk3
+, gsettings-desktop-schemas
+, fetchurl
+, dbus
+, xvfb_run
+, wrapGAppsHook
+# , fetchPypi
+}:
+
+buildPythonPackage {
+ pname = "dogtail";
+ version = "0.9.10";
+
+ # https://gitlab.com/dogtail/dogtail/issues/1
+ # src = fetchPypi {
+ # inherit pname version;
+ # sha256 = "0p5wfssvzr9w0bvhllzbbd8fnp4cca2qxcpcsc33dchrmh5n552x";
+ # };
+ src = fetchurl {
+ url = https://gitlab.com/dogtail/dogtail/raw/released/dogtail-0.9.10.tar.gz;
+ sha256 = "14sycidl8ahj3fwlhpwlpnyd43c302yqr7nqg2hj39pyj7kgk15b";
+ };
+
+ patches = [
+ ./nix-support.patch
+ ];
+
+ nativeBuildInputs = [ gobject-introspection dbus xvfb_run wrapGAppsHook ]; # for setup hooks
+ propagatedBuildInputs = [ at-spi2-core gtk3 pygobject3 pyatspi pycairo ];
+ strictDeps = false; # issue 56943
+
+ checkPhase = ''
+ runHook preCheck
+ export XDG_DATA_DIRS=${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}:$XDG_DATA_DIRS
+ # export NO_AT_BRIDGE=1
+ gsettings set org.gnome.desktop.interface toolkit-accessibility true
+ xvfb-run -s '-screen 0 800x600x24' dbus-run-session \
+ --config-file=${dbus.daemon}/share/dbus-1/session.conf \
+ ${python.interpreter} nix_run_setup test
+ runHook postCheck
+ '';
+
+ # TODO: Tests require accessibility
+ doCheck = false;
+
+ meta = {
+ description = "GUI test tool and automation framework that uses Accessibility technologies to communicate with desktop applications";
+ homepage = https://gitlab.com/dogtail/dogtail;
+ license = lib.licenses.gpl2;
+ maintainers = with lib.maintainers; [ jtojnar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dogtail/nix-support.patch b/nixpkgs/pkgs/development/python-modules/dogtail/nix-support.patch
new file mode 100644
index 00000000000..e8a65bbc87b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dogtail/nix-support.patch
@@ -0,0 +1,35 @@
+--- a/dogtail/distro.py
++++ b/dogtail/distro.py
+@@ -233,6 +233,11 @@
+ PackageDb.__init__(self)
+
+
++class _NixPackageDb(PackageDb): # pragma: no cover
++ def __init__(self):
++ PackageDb.__init__(self)
++
++
+ class JhBuildPackageDb(PackageDb): # pragma: no cover
+ def __init__(self):
+ PackageDb.__init__(self)
+@@ -324,6 +329,11 @@
+ self.packageDb = _SolarisPackageDb()
+
+
++class Nix(Distro): # pragma: no cover
++ def __init__(self):
++ self.packageDb = _NixPackageDb()
++
++
+ class JHBuild(Distro): # pragma: no cover
+ def __init__(self):
+ self.packageDb = JhBuildPackageDb()
+@@ -358,6 +368,8 @@
+ elif os.path.exists("/etc/release") and \
+ re.match(".*Solaris", open("/etc/release").readline()): # pragma: no cover
+ distro = Solaris() # pragma: no cover
++ elif os.path.exists("/nix/store"): # pragma: no cover
++ distro = Nix() # pragma: no cover
+ elif os.path.exists("/etc/os-release") and \
+ re.match(".*GNOME-Continuous", open("/etc/os-release").readline()): # pragma: no cover
+ distro = GnomeContinuous() # pragma: no cover
diff --git a/nixpkgs/pkgs/development/python-modules/dominate/default.nix b/nixpkgs/pkgs/development/python-modules/dominate/default.nix
new file mode 100644
index 00000000000..7288dee7763
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dominate/default.nix
@@ -0,0 +1,20 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k }:
+
+buildPythonPackage rec {
+ pname = "dominate";
+ version = "2.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1775cz6lipb43hmjll77m2pxh72pikng74lpg30v9n1b66s78959";
+ };
+
+ doCheck = !isPy3k;
+
+ meta = with lib; {
+ homepage = https://github.com/Knio/dominate/;
+ description = "Dominate is a Python library for creating and manipulating HTML documents using an elegant DOM API";
+ license = licenses.lgpl3;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dopy/default.nix b/nixpkgs/pkgs/development/python-modules/dopy/default.nix
new file mode 100644
index 00000000000..538a861c9f4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dopy/default.nix
@@ -0,0 +1,26 @@
+{ pkgs
+, buildPythonPackage
+, requests
+, six
+}:
+
+buildPythonPackage {
+ version = "2016-01-04";
+ pname = "dopy";
+
+ src = pkgs.fetchFromGitHub {
+ owner = "Wiredcraft";
+ repo = "dopy";
+ rev = "cb443214166a4e91b17c925f40009ac883336dc3";
+ sha256 ="0ams289qcgna96aak96jbz6wybs6qb95h2gn8lb4lmx2p5sq4q56";
+ };
+
+ propagatedBuildInputs = [ requests six ];
+
+ meta = with pkgs.lib; {
+ description = "Digital Ocean API python wrapper";
+ homepage = "https://github.com/Wiredcraft/dopy";
+ license = licenses.mit;
+ maintainers = with maintainers; [ lihop ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dot2tex/default.nix b/nixpkgs/pkgs/development/python-modules/dot2tex/default.nix
new file mode 100644
index 00000000000..f671cdc9642
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dot2tex/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, pyparsing
+}:
+
+buildPythonPackage rec {
+ pname = "dot2tex";
+ version = "2.11.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1kp77wiv7b5qib82i3y3sn9r49rym43aaqm5aw1bwnzfbbq2m6i9";
+ };
+
+ # Tests fail with 3.x. Furthermore, package is no longer maintained.
+ disabled = isPy3k;
+
+ propagatedBuildInputs = [ pyparsing ];
+
+ meta = with stdenv.lib; {
+ description = "Convert graphs generated by Graphviz to LaTeX friendly formats";
+ homepage = "https://github.com/kjellmf/dot2tex";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dotnetcore2/default.nix b/nixpkgs/pkgs/development/python-modules/dotnetcore2/default.nix
new file mode 100644
index 00000000000..caafeb54740
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dotnetcore2/default.nix
@@ -0,0 +1,59 @@
+{ stdenv, lib, buildPythonPackage, fetchPypi, python, isPy27
+, dotnet-sdk
+, substituteAll
+, distro
+, unzip
+}:
+
+buildPythonPackage rec {
+ pname = "dotnetcore2";
+ version = "2.1.8.1";
+ format = "wheel";
+ disabled = isPy27;
+
+ src = fetchPypi {
+ inherit pname version format;
+ python = "py3";
+ platform = "manylinux1_x86_64";
+ sha256 = "13zrff5j767d3f8drl397sjhl28winsrfa8pa20svf00xfcsy34s";
+ };
+
+ nativeBuildInputs = [ unzip ];
+
+ propagatedBuildInputs = [ distro ];
+
+ # needed to apply patches
+ prePatch = ''
+ unzip dist/dotnet*
+ '';
+
+ patches = [
+ ( substituteAll {
+ src = ./runtime.patch;
+ dotnet = dotnet-sdk;
+ }
+ )
+ ];
+
+ # unfortunately the noraml pip install fails because the manylinux1 format check fails with NixOS
+ installPhase = ''
+ mkdir -p $out/${python.sitePackages}/${pname}
+ # copy metadata
+ cp -r dotnetcore2-2* $out/${python.sitePackages}
+ # copy non-dotnetcore related files
+ cp -r dotnetcore2/{__init__.py,runtime.py} $out/${python.sitePackages}/${pname}
+ '';
+
+ # no tests, ensure it's one useful function works
+ checkPhase = ''
+ ${python.interpreter} -c 'from dotnetcore2 import runtime; print(runtime.get_runtime_path())'
+ '';
+
+ meta = with lib; {
+ description = "DotNet Core runtime";
+ homepage = "https://github.com/dotnet/core";
+ license = licenses.mit;
+ platforms = [ "x86_64-linux" ];
+ maintainers = with maintainers; [ jonringer ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dotnetcore2/runtime.patch b/nixpkgs/pkgs/development/python-modules/dotnetcore2/runtime.patch
new file mode 100644
index 00000000000..54322087a78
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dotnetcore2/runtime.patch
@@ -0,0 +1,19 @@
+diff a/dotnetcore2/runtime.py b/dotnetcore2/runtime.py
+--- a/dotnetcore2/runtime.py
++++ b/dotnetcore2/runtime.py
+@@ -39,13 +39,13 @@ def _get_bin_folder() -> str:
+
+
+ def get_runtime_path():
++ return "@dotnet@/dotnet"
+ search_string = os.path.join(_get_bin_folder(), 'dotnet*')
+ matches = [f for f in glob.glob(search_string, recursive=True)]
+ return matches[0]
+
+ def ensure_dependencies() -> Optional[str]:
+- if dist is None:
+- return None
++ return None
+
+ bin_folder = _get_bin_folder()
+ deps_path = os.path.join(bin_folder, 'deps')
diff --git a/nixpkgs/pkgs/development/python-modules/dpath/default.nix b/nixpkgs/pkgs/development/python-modules/dpath/default.nix
new file mode 100644
index 00000000000..3b878f7d5e4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dpath/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchPypi, buildPythonPackage
+, mock, nose
+}:
+
+buildPythonPackage rec {
+ pname = "dpath";
+ version = "1.4.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0gr7816pnzbyh9h1ia0qz0q1f9zfzacwb8dc36js8hw8x14myqqg";
+ };
+
+ checkInputs = [ mock nose ];
+ checkPhase = ''
+ nosetests
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/akesterson/dpath-python;
+ license = [ licenses.mit ];
+ description = "A python library for accessing and searching dictionaries via /slashed/paths ala xpath";
+ maintainers = [ maintainers.mmlb ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dpkt/default.nix b/nixpkgs/pkgs/development/python-modules/dpkt/default.nix
new file mode 100644
index 00000000000..c8c7f255afa
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dpkt/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchPypi, buildPythonPackage }:
+
+buildPythonPackage rec {
+ pname = "dpkt";
+ version = "1.9.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0m0ym219zsqfjl6jwivw5as3igjbmhpcn4dvabc5nkd0bk6jxaaj";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Fast, simple packet creation / parsing, with definitions for the basic TCP/IP protocols";
+ homepage = https://code.google.com/p/dpkt/;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ bjornfor ];
+ platforms = platforms.all;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/drms/default.nix b/nixpkgs/pkgs/development/python-modules/drms/default.nix
new file mode 100644
index 00000000000..4d322695ebf
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/drms/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, numpy
+, pandas
+, six
+, pytest
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "drms";
+ version = "0.5.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "95cac0e14532893a44eeab8e329ddb76150e6848153d8cb1e4e08ba55569e6af";
+ };
+
+ propagatedBuildInputs = [
+ numpy
+ pandas
+ six
+ ];
+
+ checkInputs = [
+ pytest
+ ];
+
+ checkPhase = ''
+ ${python.interpreter} -m drms.tests
+ '';
+
+ meta = with lib; {
+ description = "Access HMI, AIA and MDI data with Python";
+ homepage = https://github.com/sunpy/drms;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dropbox/default.nix b/nixpkgs/pkgs/development/python-modules/dropbox/default.nix
new file mode 100644
index 00000000000..ade485c91dc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dropbox/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, pytestrunner, requests, urllib3, mock, setuptools }:
+
+buildPythonPackage rec {
+ pname = "dropbox";
+ version = "9.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0qid094qna6bl4zpd08f6snvipwjls1yadacvmwri11djgp0wvj3";
+ };
+
+ # Set DROPBOX_TOKEN environment variable to a valid token.
+ doCheck = false;
+
+ buildInputs = [ pytestrunner ];
+ propagatedBuildInputs = [ requests urllib3 mock setuptools ];
+
+ meta = with stdenv.lib; {
+ description = "A Python library for Dropbox's HTTP-based Core and Datastore APIs";
+ homepage = https://www.dropbox.com/developers/core/docs;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ds4drv/default.nix b/nixpkgs/pkgs/development/python-modules/ds4drv/default.nix
new file mode 100644
index 00000000000..ccc5c574689
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ds4drv/default.nix
@@ -0,0 +1,27 @@
+{ lib, fetchFromGitHub, buildPythonPackage
+, evdev, pyudev
+, bluez
+}:
+
+buildPythonPackage rec {
+ pname = "ds4drv";
+ version = "0.5.1";
+
+ # PyPi only carries py3 wheel
+ src = fetchFromGitHub {
+ owner = "chrippa";
+ repo = "ds4drv";
+ rev = "v${version}";
+ sha256 = "0vinpla0apizzykcyfis79mrm1i6fhns83nkzw85svypdhkx2g8v";
+ };
+
+ propagatedBuildInputs = [ evdev pyudev ];
+
+ buildInputs = [ bluez ];
+
+ meta = {
+ description = "Userspace driver for the DualShock 4 controller";
+ homepage = https://github.com/chrippa/ds4drv;
+ license = lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dtopt/default.nix b/nixpkgs/pkgs/development/python-modules/dtopt/default.nix
new file mode 100644
index 00000000000..601ebf6d9a9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dtopt/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, 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 stdenv.lib; {
+ description = "Add options to doctest examples while they are running";
+ homepage = https://pypi.python.org/pypi/dtopt;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dugong/default.nix b/nixpkgs/pkgs/development/python-modules/dugong/default.nix
new file mode 100644
index 00000000000..09faabb98cc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dugong/default.nix
@@ -0,0 +1,14 @@
+{ buildPythonPackage, fetchPypi, pythonOlder }:
+
+buildPythonPackage rec {
+ pname = "dugong";
+ version = "3.7.4";
+
+ disabled = pythonOlder "3.3"; # Library does not support versions older than 3.3
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "tar.bz2";
+ sha256 = "1fb9kwib6jsd09bxiz70av6g0blscygkx7xzaz1b7ibd28ms77zd";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dulwich/default.nix b/nixpkgs/pkgs/development/python-modules/dulwich/default.nix
new file mode 100644
index 00000000000..5ab65ace69f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dulwich/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, urllib3, certifi
+, gevent, geventhttpclient, mock, fastimport
+, git, glibcLocales }:
+
+buildPythonPackage rec {
+ version = "0.19.11";
+ pname = "dulwich";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "afbe070f6899357e33f63f3f3696e601731fef66c64a489dea1bc9f539f4a725";
+ };
+
+ LC_ALL = "en_US.UTF-8";
+
+ propagatedBuildInputs = [ urllib3 certifi ];
+
+ # Only test dependencies
+ checkInputs = [ git glibcLocales gevent geventhttpclient mock fastimport ];
+
+ doCheck = !stdenv.isDarwin;
+
+ meta = with stdenv.lib; {
+ description = "Simple Python implementation of the Git file formats and protocols";
+ homepage = https://samba.org/~jelmer/dulwich/;
+ license = licenses.gpl2Plus;
+ maintainers = with maintainers; [ koral ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dyn/default.nix b/nixpkgs/pkgs/development/python-modules/dyn/default.nix
new file mode 100644
index 00000000000..6e03a33f29b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dyn/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytest, pytestcov, mock, pytestpep8
+, pytest_xdist, covCore, glibcLocales }:
+
+buildPythonPackage rec {
+ pname = "dyn";
+ version = "1.8.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "e112149d48b4500c18b3cfb6e0e6e780bb5aa0e56ff87cac412280200b9ec8bf";
+ };
+
+ buildInputs = [ glibcLocales ];
+
+ checkInputs = [
+ pytest
+ pytestcov
+ mock
+ pytestpep8
+ pytest_xdist
+ covCore
+ ];
+ # Disable checks because they are not stateless and require internet access.
+ doCheck = false;
+
+ LC_ALL="en_US.UTF-8";
+
+ meta = with stdenv.lib; {
+ description = "Dynect dns lib";
+ homepage = "https://dyn.readthedocs.org/en/latest/intro.html";
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dynd/default.nix b/nixpkgs/pkgs/development/python-modules/dynd/default.nix
new file mode 100644
index 00000000000..f3e4e0a8b73
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dynd/default.nix
@@ -0,0 +1,45 @@
+{ stdenv
+, buildPythonPackage
+, isPyPy
+, isPy3k
+, cython
+, numpy
+, pkgs
+}:
+
+buildPythonPackage rec {
+ version = "0.7.2";
+ pname = "dynd";
+ disabled = isPyPy || !isPy3k; # tests fail on python2, 2018-04-11
+
+ src = pkgs.fetchFromGitHub {
+ owner = "libdynd";
+ repo = "dynd-python";
+ rev = "v${version}";
+ sha256 = "19igd6ibf9araqhq9bxmzbzdz05vp089zxvddkiik3b5gb7l17nh";
+ };
+
+ # setup.py invokes git on build but we're fetching a tarball, so
+ # can't retrieve git version. We hardcode:
+ preConfigure = ''
+ substituteInPlace setup.py --replace "ver = check_output(['git', 'describe', '--dirty'," "ver = '${version}'"
+ substituteInPlace setup.py --replace "'--always', '--match', 'v*']).decode('ascii').strip('\n')" ""
+ '';
+
+ dontUseCmakeConfigure = true;
+
+ # Python 3 works but has a broken import test that I couldn't
+ # figure out.
+ doCheck = !isPy3k;
+ nativeBuildInputs = [ pkgs.cmake ];
+ buildInputs = [ pkgs.libdynd.dev cython ];
+ propagatedBuildInputs = [ numpy pkgs.libdynd ];
+
+ meta = with stdenv.lib; {
+ homepage = http://libdynd.org;
+ license = licenses.bsd2;
+ description = "Python exposure of dynd";
+ maintainers = with maintainers; [ teh ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/easy-thumbnails/default.nix b/nixpkgs/pkgs/development/python-modules/easy-thumbnails/default.nix
new file mode 100644
index 00000000000..dae1df69562
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/easy-thumbnails/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPythonPackage, fetchPypi,
+ django, pillow
+}:
+
+buildPythonPackage rec {
+ pname = "easy-thumbnails";
+ version = "2.6";
+
+ meta = {
+ description = "Easy thumbnails for Django";
+ homepage = https://github.com/SmileyChris/easy-thumbnails;
+ license = lib.licenses.bsd3;
+ };
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "23fbe3415c93b2369ece8ebdfb5faa05540943bef8b941b3118ce769ba95e275";
+ };
+
+ propagatedBuildInputs = [ django pillow ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/easydict/default.nix b/nixpkgs/pkgs/development/python-modules/easydict/default.nix
new file mode 100644
index 00000000000..4179306b8d9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/easydict/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchPypi, buildPythonPackage }:
+
+buildPythonPackage rec {
+ pname = "easydict";
+ version = "1.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "3f3f0dab07c299f0f4df032db1f388d985bb57fa4c5be30acd25c5f9a516883b";
+ };
+
+ docheck = false; # No tests in archive
+
+ meta = {
+ homepage = https://github.com/makinacorpus/easydict;
+ license = with stdenv.lib; licenses.lgpl3;
+ description = "Access dict values as attributes (works recursively)";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/easygui/default.nix b/nixpkgs/pkgs/development/python-modules/easygui/default.nix
new file mode 100644
index 00000000000..3a7046c50b3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/easygui/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchPypi, buildPythonPackage }:
+
+buildPythonPackage rec {
+ pname = "easygui";
+ version = "0.98.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1zmvmwgxyzvm83818skhn8b4wrci4kmnixaax8q3ia5cn7xrmj6v";
+ };
+
+ doCheck = false; # No tests available
+
+ meta = with stdenv.lib; {
+ description = "Very simple, very easy GUI programming in Python";
+ homepage = https://github.com/robertlugg/easygui;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ jfrankenau ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/easyprocess/default.nix b/nixpkgs/pkgs/development/python-modules/easyprocess/default.nix
new file mode 100644
index 00000000000..7f8a803740d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/easyprocess/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "EasyProcess";
+ version = "0.2.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f757cd16cdab5b87117b4ee6cf197f99bfa109253364c7bd717ad0bcd39218a0";
+ };
+
+ # No tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Easy to use python subprocess interface";
+ homepage = https://github.com/ponty/EasyProcess;
+ license = licenses.bsdOriginal;
+ maintainers = with maintainers; [ layus ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/easywatch/default.nix b/nixpkgs/pkgs/development/python-modules/easywatch/default.nix
new file mode 100644
index 00000000000..96301996fe8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/easywatch/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+, watchdog
+}:
+
+buildPythonPackage rec {
+ pname = "easywatch";
+ version = "0.0.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1b40cjigv7s9qj8hxxy6yhwv0320z7qywrigwgkasgh80q0xgphc";
+ };
+
+ propagatedBuildInputs = [ watchdog ];
+
+ # There are no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Dead-simple way to watch a directory";
+ homepage = https://github.com/Ceasar/easywatch;
+ license = licenses.mit;
+ maintainers = with maintainers; [ fgaz ];
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/ecdsa/default.nix b/nixpkgs/pkgs/development/python-modules/ecdsa/default.nix
new file mode 100644
index 00000000000..95e1835198e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ecdsa/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pkgs
+}:
+
+buildPythonPackage rec {
+ pname = "ecdsa";
+ version = "0.13.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5c034ffa23413ac923541ceb3ac14ec15a0d2530690413bff58c12b80e56d884";
+ };
+
+ # Only needed for tests
+ checkInputs = [ pkgs.openssl ];
+
+ meta = with stdenv.lib; {
+ description = "ECDSA cryptographic signature library";
+ homepage = "https://github.com/warner/python-ecdsa";
+ license = licenses.mit;
+ maintainers = with maintainers; [ aszlig ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ecpy/default.nix b/nixpkgs/pkgs/development/python-modules/ecpy/default.nix
new file mode 100644
index 00000000000..62111721ad1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ecpy/default.nix
@@ -0,0 +1,22 @@
+{ lib, fetchPypi, buildPythonPackage, isPy3k, future }:
+
+buildPythonPackage rec {
+ pname = "ECPy";
+ version = "0.10.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8889122d3a8bc1a08b4bda42c073dd22305d770b7876356de806ff91748983bd";
+ };
+
+ propagatedBuildInputs = lib.optional (!isPy3k) future;
+
+ # No tests implemented
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Pure Pyhton Elliptic Curve Library";
+ homepage = https://github.com/ubinity/ECPy;
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ed25519/default.nix b/nixpkgs/pkgs/development/python-modules/ed25519/default.nix
new file mode 100644
index 00000000000..b1026e8d446
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ed25519/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, fetchPypi, buildPythonPackage }:
+
+buildPythonPackage rec {
+ pname = "ed25519";
+ version = "1.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0ahx1nkxa0xis3cw0h5c4fpgv8mq4znkq7kajly33lc3317bk499";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Ed25519 public-key signatures";
+ homepage = https://github.com/warner/python-ed25519;
+ license = licenses.mit;
+ maintainers = with maintainers; [ np ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/editorconfig/default.nix b/nixpkgs/pkgs/development/python-modules/editorconfig/default.nix
new file mode 100644
index 00000000000..28eff473199
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/editorconfig/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, buildPythonPackage
+, fetchgit
+, cmake
+}:
+
+buildPythonPackage rec {
+ pname = "editorconfig";
+ version = "0.12.2";
+
+ # fetchgit used to ensure test submodule is available
+ src = fetchgit {
+ url = "https://github.com/editorconfig/editorconfig-core-py";
+ rev = "596da5e06ebee05bdbdc6224203c79c4d3c6486a"; # Not tagged
+ sha256 = "05cbp971b0zix7kfxkk7ndxb4ax1l21frwc00d4g78mk4sdz6dig";
+ };
+
+ nativeBuildInputs = [ cmake ];
+
+ dontUseCmakeConfigure = true;
+
+ checkPhase = ''
+ cmake .
+ # utf_8_char fails with python3
+ ctest -E "utf_8_char" .
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://editorconfig.org;
+ description = "EditorConfig File Locator and Interpreter for Python";
+ license = licenses.psfl;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/edward/default.nix b/nixpkgs/pkgs/development/python-modules/edward/default.nix
new file mode 100644
index 00000000000..1ad5ea1ab3b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/edward/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy27, pythonAtLeast
+, Keras, numpy, scipy, six, tensorflow }:
+
+buildPythonPackage rec {
+ pname = "edward";
+ version = "1.3.5";
+
+ disabled = !(isPy27 || pythonAtLeast "3.4");
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "3818b39e77c26fc1a37767a74fdd5e7d02877d75ed901ead2f40bd03baaa109f";
+ };
+
+ # disabled for now due to Tensorflow trying to create files in $HOME:
+ doCheck = false;
+
+ propagatedBuildInputs = [ Keras numpy scipy six tensorflow ];
+
+ meta = with stdenv.lib; {
+ description = "Probabilistic programming language using Tensorflow";
+ homepage = https://github.com/blei-lab/edward;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ bcdarwin ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/effect/default.nix b/nixpkgs/pkgs/development/python-modules/effect/default.nix
new file mode 100644
index 00000000000..6b8329550da
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/effect/default.nix
@@ -0,0 +1,33 @@
+{ buildPythonPackage
+, fetchPypi
+, lib
+, six
+, attrs
+, pytest
+, testtools
+}:
+buildPythonPackage rec {
+ version = "0.12.0";
+ pname = "effect";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0s8zsncq4l0ar2b4dijf8yzrk13x2swr1w2nb30s1p5jd6r24czl";
+ };
+ checkInputs = [
+ pytest
+ testtools
+ ];
+ propagatedBuildInputs = [
+ six
+ attrs
+ ];
+ checkPhase = ''
+ pytest
+ '';
+ meta = with lib; {
+ description = "Pure effects for Python";
+ homepage = https://github.com/python-effect/effect;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/eggdeps/default.nix b/nixpkgs/pkgs/development/python-modules/eggdeps/default.nix
new file mode 100644
index 00000000000..c837e46066f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/eggdeps/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, zope_interface
+, zope_testing
+}:
+
+buildPythonPackage rec {
+ pname = "tl-eggdeps";
+ version = "0.4";
+
+ src = fetchPypi {
+ inherit version;
+ pname = "tl.eggdeps";
+ sha256 = "a99de5e4652865224daab09b2e2574a4f7c1d0d9a267048f9836aa914a2caf3a";
+ };
+
+ propagatedBuildInputs = [ zope_interface zope_testing ];
+
+ # tests fail, see http://hydra.nixos.org/build/4316603/log/raw
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A tool which computes a dependency graph between active Python eggs";
+ homepage = http://thomas-lotze.de/en/software/eggdeps/;
+ license = licenses.zpl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/elasticsearch-curator/default.nix b/nixpkgs/pkgs/development/python-modules/elasticsearch-curator/default.nix
new file mode 100644
index 00000000000..e95d1aaba02
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/elasticsearch-curator/default.nix
@@ -0,0 +1,73 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, boto3
+, click
+, certifi
+, requests-aws4auth
+, voluptuous
+, pyyaml
+, elasticsearch
+, nosexcover
+, coverage
+, nose
+, mock
+, funcsigs
+} :
+
+buildPythonPackage rec {
+ pname = "elasticsearch-curator";
+ version = "5.7.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0a6q7jcqwcqf8cv76lzldf90hnj2x8gha754x515dq10zsi9sjms";
+ };
+
+ # The test hangs so we disable it.
+ doCheck = false;
+
+ propagatedBuildInputs = [
+ click
+ certifi
+ requests-aws4auth
+ voluptuous
+ pyyaml
+ elasticsearch
+ boto3
+ ];
+
+ checkInputs = [
+ nosexcover
+ coverage
+ nose
+ mock
+ funcsigs
+ ];
+
+ postPatch = ''
+ sed -i s/pyyaml==3.12/pyyaml==${pyyaml.version}/ setup.cfg setup.py
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/elastic/curator;
+ description = "Curate, or manage, your Elasticsearch indices and snapshots";
+ license = licenses.asl20;
+ longDescription = ''
+ Elasticsearch Curator helps you curate, or manage, your Elasticsearch
+ indices and snapshots by:
+
+ * Obtaining the full list of indices (or snapshots) from the cluster, as the
+ actionable list
+
+ * Iterate through a list of user-defined filters to progressively remove
+ indices (or snapshots) from this actionable list as needed.
+
+ * Perform various actions on the items which remain in the actionable list.
+ '';
+ maintainers = with maintainers; [ basvandijk ];
+
+ # https://github.com/elastic/curator/pull/1280
+ broken = versionAtLeast click.version "7.0";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/elasticsearch-dsl/default.nix b/nixpkgs/pkgs/development/python-modules/elasticsearch-dsl/default.nix
new file mode 100644
index 00000000000..b906f94b427
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/elasticsearch-dsl/default.nix
@@ -0,0 +1,38 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, elasticsearch
+, ipaddress
+, python-dateutil
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "elasticsearch-dsl";
+ version = "7.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "08kgpcf6lp8gjan6dvdx35340i4yqa77klapk8j7165svfjc5v9a";
+ };
+
+ propagatedBuildInputs = [ elasticsearch python-dateutil six ]
+ ++ stdenv.lib.optional (!isPy3k) ipaddress;
+
+ # ImportError: No module named test_elasticsearch_dsl
+ # Tests require a local instance of elasticsearch
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "High level Python client for Elasticsearch";
+ longDescription = ''
+ Elasticsearch DSL is a high-level library whose aim is to help with
+ writing and running queries against Elasticsearch. It is built on top of
+ the official low-level client (elasticsearch-py).
+ '';
+ homepage = https://github.com/elasticsearch/elasticsearch-dsl-py;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ desiderius ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/elasticsearch/default.nix b/nixpkgs/pkgs/development/python-modules/elasticsearch/default.nix
new file mode 100644
index 00000000000..dc991f529fc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/elasticsearch/default.nix
@@ -0,0 +1,29 @@
+{ buildPythonPackage
+, fetchPypi
+, urllib3, requests
+, nosexcover, mock
+, stdenv
+}:
+
+buildPythonPackage (rec {
+ pname = "elasticsearch";
+ version = "7.0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "cbc73831c63fa2824538df76fcb2c4be007b43dbd9e7788ae70ea6d24109925b";
+ };
+
+ # Check is disabled because running them destroy the content of the local cluster!
+ # https://github.com/elasticsearch/elasticsearch-py/tree/master/test_elasticsearch
+ doCheck = false;
+ propagatedBuildInputs = [ urllib3 requests ];
+ buildInputs = [ nosexcover mock ];
+
+ meta = with stdenv.lib; {
+ description = "Official low-level client for Elasticsearch";
+ homepage = https://github.com/elasticsearch/elasticsearch-py;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ desiderius ];
+ };
+})
diff --git a/nixpkgs/pkgs/development/python-modules/elementpath/default.nix b/nixpkgs/pkgs/development/python-modules/elementpath/default.nix
new file mode 100644
index 00000000000..1d2d34541fa
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/elementpath/default.nix
@@ -0,0 +1,26 @@
+{ buildPythonPackage
+, lib
+, fetchFromGitHub
+}:
+
+buildPythonPackage rec {
+ version = "1.1.8";
+ pname = "elementpath";
+
+ src = fetchFromGitHub {
+ owner = "sissaschool";
+ repo = "elementpath";
+ rev = "v${version}";
+ sha256 = "0krczvf8r6pb3hb8qaxl9h2b4qwg180xk66gyxjf002im7ri75aj";
+ };
+
+ # avoid circular dependency with xmlschema which directly depends on this
+ doCheck = false;
+
+ meta = with lib; {
+ description = "XPath 1.0/2.0 parsers and selectors for ElementTree and lxml";
+ homepage = "https://github.com/sissaschool/elementpath";
+ license = licenses.mit;
+ maintainers = with maintainers; [ jonringer ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/email-validator/default.nix b/nixpkgs/pkgs/development/python-modules/email-validator/default.nix
new file mode 100644
index 00000000000..99859ac1517
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/email-validator/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k, dnspython, idna, ipaddress }:
+
+buildPythonPackage rec {
+ pname = "email_validator";
+ version = "1.0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1ja9149l9ck5n45a72h3is7v476hjny5ybxbcamx1nw6iplsm7k6";
+ };
+
+ doCheck = false;
+
+ propagatedBuildInputs = [
+ dnspython
+ idna
+ ] ++ (if isPy3k then [ ] else [ ipaddress ]);
+
+ meta = with lib; {
+ description = "A robust email syntax and deliverability validation library for Python 2.x/3.x.";
+ homepage = https://github.com/JoshData/python-email-validator;
+ license = licenses.cc0;
+ maintainers = with maintainers; [ siddharthist ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/emailthreads/default.nix b/nixpkgs/pkgs/development/python-modules/emailthreads/default.nix
new file mode 100644
index 00000000000..0e5db1de3e9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/emailthreads/default.nix
@@ -0,0 +1,29 @@
+{ lib, fetchFromGitHub, buildPythonPackage
+, python, isPy3k }:
+
+buildPythonPackage rec {
+ pname = "emailthreads";
+ version = "0.1.0";
+ disabled = !isPy3k;
+
+ # pypi is missing files for tests
+ src = fetchFromGitHub {
+ owner = "emersion";
+ repo = "python-emailthreads";
+ rev = "v${version}";
+ sha256 = "17pfal8kbxhs025apkijqbkppw2lljca8x1cwcx49jv60h05c3cn";
+ };
+
+ PKGVER = version;
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover test
+ '';
+
+ meta = with lib; {
+ homepage = https://github.com/emersion/python-emailthreads;
+ description = "Python library to parse and format email threads";
+ license = licenses.mit;
+ maintainers = with maintainers; [ eadwu ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/emcee/default.nix b/nixpkgs/pkgs/development/python-modules/emcee/default.nix
new file mode 100644
index 00000000000..382dd508915
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/emcee/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, numpy }:
+
+buildPythonPackage rec {
+ pname = "emcee";
+ version = "2.2.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b83551e342b37311897906b3b8acf32979f4c5542e0a25786ada862d26241172";
+ };
+
+ propagatedBuildInputs = [ numpy ];
+
+ meta = with stdenv.lib; {
+ description = "Kick ass affine-invariant ensemble MCMC sampling";
+ homepage = http://dan.iel.fm/emcee;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/emoji/default.nix b/nixpkgs/pkgs/development/python-modules/emoji/default.nix
new file mode 100644
index 00000000000..01cd9190647
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/emoji/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildPythonPackage, fetchPypi, nose }:
+
+buildPythonPackage rec {
+ pname = "emoji";
+ version = "0.5.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0kn6qq1h0d6cg70wk0hji6bcwg5s18ys6gfmlmfmx8420ka150dn";
+ };
+
+ checkInputs = [ nose ];
+
+ checkPhase = ''nosetests'';
+
+ meta = with lib; {
+ description = "Emoji for Python";
+ homepage = https://pypi.python.org/pypi/emoji/;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ joachifm ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/entrypoints/default.nix b/nixpkgs/pkgs/development/python-modules/entrypoints/default.nix
new file mode 100644
index 00000000000..77d20876fe1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/entrypoints/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, configparser
+, pytest
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "entrypoints";
+ version = "0.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451";
+ };
+
+ checkInputs = [ pytest ];
+
+ propagatedBuildInputs = lib.optional (!isPy3k) configparser;
+
+ checkPhase = ''
+ py.test tests
+ '';
+
+ meta = {
+ description = "Discover and load entry points from installed packages";
+ homepage = https://github.com/takluyver/entrypoints;
+ license = lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/enum-compat/default.nix b/nixpkgs/pkgs/development/python-modules/enum-compat/default.nix
new file mode 100644
index 00000000000..29c8184bd4e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/enum-compat/default.nix
@@ -0,0 +1,20 @@
+{ lib, buildPythonPackage, fetchPypi, enum34 }:
+
+buildPythonPackage rec {
+ pname = "enum-compat";
+ version = "0.0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "14j1i963jic2vncbf9k5nq1vvv8pw2zsg7yvwhm7d9c6h7qyz74k";
+ };
+
+ propagatedBuildInputs = [ enum34 ];
+
+ meta = with lib; {
+ homepage = https://github.com/jstasiak/enum-compat;
+ description = "enum/enum34 compatibility package";
+ license = licenses.mit;
+ maintainers = with maintainers; [ abbradar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/enum/default.nix b/nixpkgs/pkgs/development/python-modules/enum/default.nix
new file mode 100644
index 00000000000..8aec63689d9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/enum/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, 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 stdenv.lib; {
+ homepage = https://pypi.python.org/pypi/enum/;
+ description = "Robust enumerated type support in Python";
+ license = licenses.gpl2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/enum34/default.nix b/nixpkgs/pkgs/development/python-modules/enum34/default.nix
new file mode 100644
index 00000000000..a5175eba49d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/enum34/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pythonAtLeast
+, python
+}:
+
+if pythonAtLeast "3.4" then null else buildPythonPackage rec {
+ pname = "enum34";
+ version = "1.1.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8ad8c4783bf61ded74527bffb48ed9b54166685e4230386a9ed9b1279e2df5b1";
+ };
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://pypi.python.org/pypi/enum34;
+ description = "Python 3.4 Enum backported to 3.3, 3.2, 3.1, 2.7, 2.6, 2.5, and 2.4";
+ license = licenses.bsd0;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/envs/default.nix b/nixpkgs/pkgs/development/python-modules/envs/default.nix
new file mode 100644
index 00000000000..600cb3b0320
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/envs/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildPythonPackage, fetchPypi
+, mock, jinja2, click, terminaltables
+}:
+
+buildPythonPackage rec {
+ pname = "envs";
+ version = "1.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ccf5cd85ddb8ed335e39ed8a22e0d23658f5a6d7da430f225e6f750c6f50ae42";
+ };
+
+ checkInputs = [ mock jinja2 click terminaltables ];
+
+ meta = with lib; {
+ description = "Easy access to environment variables from Python";
+ homepage = https://github.com/capless/envs;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ peterhoeg ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/enzyme/default.nix b/nixpkgs/pkgs/development/python-modules/enzyme/default.nix
new file mode 100644
index 00000000000..d776bfd62aa
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/enzyme/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchPypi, buildPythonPackage }:
+
+buildPythonPackage rec {
+ pname = "enzyme";
+ version = "0.4.1";
+
+ # Tests rely on files obtained over the network
+ doCheck = false;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1fv2kh2v4lwj0hhrhj9pib1pdjh01yr4xgyljhx11l94gjlpy5pj";
+ };
+
+ meta = {
+ homepage = https://github.com/Diaoul/enzyme;
+ license = with stdenv.lib; licenses.asl20;
+ description = "Python video metadata parser";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/epc/default.nix b/nixpkgs/pkgs/development/python-modules/epc/default.nix
new file mode 100644
index 00000000000..fe3cc4420c4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/epc/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, sexpdata
+}:
+
+buildPythonPackage rec {
+ pname = "epc";
+ version = "0.0.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a14d2ea74817955a20eb00812e3a4630a132897eb4d976420240f1152c0d7d25";
+ };
+
+ propagatedBuildInputs = [ sexpdata ];
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "EPC (RPC stack for Emacs Lisp) implementation in Python";
+ homepage = "https://github.com/tkf/python-epc";
+ license = licenses.gpl3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ephem/default.nix b/nixpkgs/pkgs/development/python-modules/ephem/default.nix
new file mode 100644
index 00000000000..742fdb83b72
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ephem/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k
+, glibcLocales, pytest }:
+
+buildPythonPackage rec {
+ pname = "ephem";
+ version = "3.7.6.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "7a4c82b1def2893e02aec0394f108d24adb17bd7b0ca6f4bc78eb7120c0212ac";
+ };
+
+ patchFlags = "-p0";
+ checkInputs = [ pytest glibcLocales ];
+ # JPLTest uses assets not distributed in package
+ checkPhase = ''
+ LC_ALL="en_US.UTF-8" py.test --pyargs ephem.tests -k "not JPLTest"
+ '';
+
+ # Unfortunately, the tests are broken for Python 3 in 3.7.6.0. They have been
+ # fixed in https://github.com/brandon-rhodes/pyephem/commit/c8633854e2d251a198b0f701d0528b508baa2411
+ # but there has not been a new release since then.
+ doCheck = !isPy3k;
+
+ meta = with stdenv.lib; {
+ description = "Compute positions of the planets and stars";
+ homepage = https://pypi.python.org/pypi/ephem/;
+ license = licenses.lgpl3;
+ maintainers = with maintainers; [ chrisrosset ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/eradicate/default.nix b/nixpkgs/pkgs/development/python-modules/eradicate/default.nix
new file mode 100644
index 00000000000..6b3909a5b45
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/eradicate/default.nix
@@ -0,0 +1,19 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "eradicate";
+ version = "1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "06nhs8wml5f5k96gbq7jl417bmsqnxy8aykpzbzrvm3gmqmaizag";
+ };
+
+ meta = with lib; {
+ description = "eradicate removes commented-out code from Python files.";
+ homepage = https://github.com/myint/eradicate;
+ license = [ licenses.mit ];
+
+ maintainers = [ maintainers.mmlb ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/escapism/default.nix b/nixpkgs/pkgs/development/python-modules/escapism/default.nix
new file mode 100644
index 00000000000..b2ac3658235
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/escapism/default.nix
@@ -0,0 +1,24 @@
+{ pkgs
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "escapism";
+ version = "1.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5f1cc1fa04a95f5b85b3da194750f8a71846d493ea332f62e8798949f10c9b86";
+ };
+
+ # No tests distributed
+ doCheck = false;
+
+ meta = with pkgs.lib; {
+ description = "Simple, generic API for escaping strings";
+ homepage = "https://github.com/minrk/escapism";
+ license = licenses.mit;
+ maintainers = with maintainers; [ bzizou ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/et_xmlfile/default.nix b/nixpkgs/pkgs/development/python-modules/et_xmlfile/default.nix
new file mode 100644
index 00000000000..09475329c1b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/et_xmlfile/default.nix
@@ -0,0 +1,40 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, lxml
+, pytest
+}:
+
+buildPythonPackage rec {
+ version = "1.0.1";
+ pname = "et_xmlfile";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256="0nrkhcb6jdrlb6pwkvd4rycw34y3s931hjf409ij9xkjsli9fkb1";
+ };
+
+ checkInputs = [ lxml pytest ];
+ checkPhase = ''
+ py.test $out
+ '';
+
+ meta = with stdenv.lib; {
+ description = "An implementation of lxml.xmlfile for the standard library";
+ longDescription = ''
+ et_xmlfile is a low memory library for creating large XML files.
+
+ It is based upon the xmlfile module from lxml with the aim of
+ allowing code to be developed that will work with both
+ libraries. It was developed initially for the openpyxl project
+ but is now a standalone module.
+
+ The code was written by Elias Rabel as part of the Python
+ Düsseldorf openpyxl sprint in September 2014.
+ '';
+ homepage = "https://pypi.python.org/pypi/et_xmlfile";
+ license = licenses.mit;
+ maintainers = with maintainers; [ sjourdois ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/etcd/default.nix b/nixpkgs/pkgs/development/python-modules/etcd/default.nix
new file mode 100644
index 00000000000..1e6e1e70944
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/etcd/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, simplejson
+, pytz
+, requests
+}:
+
+buildPythonPackage rec {
+ pname = "etcd";
+ version = "2.0.8";
+
+ # PyPI package is incomplete
+ src = fetchurl {
+ url = "https://github.com/dsoprea/PythonEtcdClient/archive/${version}.tar.gz";
+ sha256 = "0fi6rxa1yxvz7nwrc7dw6fax3041d6bj3iyhywjgbkg7nadi9i8v";
+ };
+
+ patchPhase = ''
+ sed -i -e '13,14d;37d' setup.py
+ '';
+
+ propagatedBuildInputs = [ simplejson pytz requests ];
+
+ # No proper tests are available
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A Python etcd client that just works";
+ homepage = https://github.com/dsoprea/PythonEtcdClient;
+ license = licenses.gpl2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/eth-hash/default.nix b/nixpkgs/pkgs/development/python-modules/eth-hash/default.nix
new file mode 100644
index 00000000000..ce5fce1b1cb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/eth-hash/default.nix
@@ -0,0 +1,45 @@
+{ lib, fetchPypi, buildPythonPackage, pythonOlder, pytest, pysha3, pycrypto,
+ pycryptodome }:
+
+buildPythonPackage rec {
+ pname = "eth-hash";
+ version = "0.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0xpiz0wrxxj11ki9yapvsibl25qnki90bl3d39nqascg14nw17a9";
+ };
+
+ checkInputs = [ pytest ];
+
+ propagatedBuildInputs = [ pysha3 pycrypto pycryptodome ];
+
+ # setuptools-markdown uses pypandoc which is broken at the moment
+ preConfigure = ''
+ substituteInPlace setup.py --replace \'setuptools-markdown\' ""
+ '';
+
+ # Run tests separately because we don't want to run tests on tests/backends/
+ # but only on its selected subdirectories. Also, the directories under
+ # tests/backends/ must be run separately because they have identically named
+ # test files so pytest would raise errors because of that.
+ #
+ # Also, tests in tests/core/test_import.py are broken so just ignore them:
+ # https://github.com/ethereum/eth-hash/issues/25
+ # There is a pull request to fix the tests:
+ # https://github.com/ethereum/eth-hash/pull/26
+ checkPhase = ''
+ pytest tests/backends/pycryptodome/
+ pytest tests/backends/pysha3/
+ # pytest tests/core/
+ '';
+
+ disabled = pythonOlder "3.5";
+
+ meta = {
+ description = "The Ethereum hashing function keccak256";
+ homepage = https://github.com/ethereum/eth-hash;
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ jluttine ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/eth-typing/default.nix b/nixpkgs/pkgs/development/python-modules/eth-typing/default.nix
new file mode 100644
index 00000000000..0fcf7731ee0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/eth-typing/default.nix
@@ -0,0 +1,35 @@
+{ lib, fetchFromGitHub, buildPythonPackage, pythonOlder, pytest }:
+
+buildPythonPackage rec {
+ pname = "eth-typing";
+ version = "2.1.0";
+
+ # Tests are missing from the PyPI source tarball so let's use GitHub
+ # https://github.com/ethereum/eth-typing/issues/8
+ src = fetchFromGitHub {
+ owner = "ethereum";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "0chrrfw3kdaihgr2ryhljf56bflipzmfxai688xrc2yk7yiqnll5";
+ };
+
+ # setuptools-markdown uses pypandoc which is broken at the moment
+ preConfigure = ''
+ substituteInPlace setup.py --replace \'setuptools-markdown\' ""
+ '';
+
+ disabled = pythonOlder "3.5";
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ pytest .
+ '';
+
+ meta = {
+ description = "Common type annotations for Ethereum Python packages";
+ homepage = https://github.com/ethereum/eth-typing;
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ jluttine ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/eth-utils/default.nix b/nixpkgs/pkgs/development/python-modules/eth-utils/default.nix
new file mode 100644
index 00000000000..116fa0273e5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/eth-utils/default.nix
@@ -0,0 +1,35 @@
+{ lib, fetchFromGitHub, buildPythonPackage, pytest, eth-hash, eth-typing,
+ cytoolz, hypothesis }:
+
+buildPythonPackage rec {
+ pname = "eth-utils";
+ version = "1.7.0";
+
+ # Tests are missing from the PyPI source tarball so let's use GitHub
+ # https://github.com/ethereum/eth-utils/issues/130
+ src = fetchFromGitHub {
+ owner = "ethereum";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "0hhhdz764xgwj5zg3pjzpx10vh54q7kbvlnj9d67qkgwl3fkfgw2";
+ };
+
+ checkInputs = [ pytest hypothesis ];
+ propagatedBuildInputs = [ eth-hash eth-typing cytoolz ];
+
+ # setuptools-markdown uses pypandoc which is broken at the moment
+ preConfigure = ''
+ substituteInPlace setup.py --replace \'setuptools-markdown\' ""
+ '';
+
+ checkPhase = ''
+ pytest .
+ '';
+
+ meta = {
+ description = "Common utility functions for codebases which interact with ethereum";
+ homepage = https://github.com/ethereum/eth-utils;
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ jluttine ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/evdev/default.nix b/nixpkgs/pkgs/development/python-modules/evdev/default.nix
new file mode 100644
index 00000000000..f44a9f22279
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/evdev/default.nix
@@ -0,0 +1,29 @@
+{ lib, buildPythonPackage, isPy34, fetchPypi, linuxHeaders }:
+
+buildPythonPackage rec {
+ pname = "evdev";
+ version = "1.1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0l837gm9cjdp3lybnam38ip0q3n1xy0j6vzgx11hdrr0ps8p5mid";
+ };
+
+ buildInputs = [ linuxHeaders ];
+
+ patchPhase = ''
+ substituteInPlace setup.py --replace /usr/include/linux ${linuxHeaders}/include/linux
+ '';
+
+ doCheck = false;
+
+ disabled = isPy34; # see http://bugs.python.org/issue21121
+
+ meta = with lib; {
+ description = "Provides bindings to the generic input event interface in Linux";
+ homepage = https://pythonhosted.org/evdev;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ goibhniu ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/eve/default.nix b/nixpkgs/pkgs/development/python-modules/eve/default.nix
new file mode 100644
index 00000000000..e23821a48e4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/eve/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, buildPythonPackage, fetchPypi, flask, events
+, pymongo, simplejson, cerberus, werkzeug }:
+
+buildPythonPackage rec {
+ pname = "Eve";
+ version = "0.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "18shfaxa1vqshnyiqx3jqsri2wxz9ibip3mdxaz8pljmk734r4b1";
+ };
+
+ propagatedBuildInputs = [
+ cerberus
+ events
+ flask
+ pymongo
+ simplejson
+ werkzeug
+ ];
+
+ # tests call a running mongodb instance
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = "https://python-eve.org/";
+ description = "Open source Python REST API framework designed for human beings";
+ license = licenses.bsd3;
+ maintainers = [ maintainers.marsam ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/eventlet/default.nix b/nixpkgs/pkgs/development/python-modules/eventlet/default.nix
new file mode 100644
index 00000000000..a72184f2c1e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/eventlet/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, dnspython
+, enum34
+, greenlet
+, monotonic
+, six
+, nose
+}:
+
+buildPythonPackage rec {
+ pname = "eventlet";
+ version = "0.24.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d9d31a3c8dbcedbcce5859a919956d934685b17323fc80e1077cb344a2ffa68d";
+ };
+
+ checkInputs = [ nose ];
+
+ doCheck = false; # too much transient errors to bother
+
+ propagatedBuildInputs = [ dnspython greenlet monotonic six ] ++ lib.optional (pythonOlder "3.4") enum34;
+
+ meta = with lib; {
+ homepage = https://pypi.python.org/pypi/eventlet/;
+ description = "A concurrent networking library for Python";
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/eventlib/default.nix b/nixpkgs/pkgs/development/python-modules/eventlib/default.nix
new file mode 100644
index 00000000000..837ffa0d86d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/eventlib/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, 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 stdenv.lib; {
+ description = "Eventlib bindings for python";
+ homepage = "http://ag-projects.com/";
+ license = licenses.lgpl2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/events/default.nix b/nixpkgs/pkgs/development/python-modules/events/default.nix
new file mode 100644
index 00000000000..93c2165ce01
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/events/default.nix
@@ -0,0 +1,17 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "Events";
+ version = "0.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f4d9c41a5c160ce504278f219fe56f44242ca63794a0ad638b52d1e087ac2a41";
+ };
+
+ meta = with lib; {
+ homepage = https://events.readthedocs.org;
+ description = "Bringing the elegance of C# EventHanlder to Python";
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/evernote/default.nix b/nixpkgs/pkgs/development/python-modules/evernote/default.nix
new file mode 100644
index 00000000000..189f282b02d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/evernote/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy27
+, oauth2
+}:
+
+buildPythonPackage rec {
+ pname = "evernote";
+ version = "1.25.3";
+ disabled = ! isPy27; #some dependencies do not work with py3
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "796847e0b7517e729041c5187fa1665c3f6fc0491cb4d71fb95a62c4f22e64eb";
+ };
+
+ propagatedBuildInputs = [ oauth2 ];
+
+ meta = with stdenv.lib; {
+ description = "Evernote SDK for Python";
+ homepage = http://dev.evernote.com;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ hbunke ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ewmh/default.nix b/nixpkgs/pkgs/development/python-modules/ewmh/default.nix
new file mode 100644
index 00000000000..a24d049fc22
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ewmh/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildPythonPackage, fetchPypi, xlib }:
+
+buildPythonPackage rec {
+ pname = "ewmh";
+ version = "0.1.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0g9l14my3v8zlgq1yd8wh5gpara0qcapsfmvg7lq2lapglzhjsy5";
+ };
+
+ propagatedBuildInputs = [ xlib ];
+
+ # No tests included
+ doCheck = false;
+
+ meta = {
+ homepage = https://github.com/parkouss/pyewmh;
+ description = "An implementation of EWMH (Extended Window Manager Hints), based on Xlib";
+ license = lib.licenses.lgpl3Plus;
+ maintainers = with lib.maintainers; [ bandresen ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/exchangelib/default.nix b/nixpkgs/pkgs/development/python-modules/exchangelib/default.nix
new file mode 100644
index 00000000000..d6f533a58bf
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/exchangelib/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, buildPythonPackage,
+ lxml, tzlocal, python-dateutil, pygments, future, requests-kerberos,
+ defusedxml, cached-property, isodate, requests_ntlm, dnspython,
+ psutil, requests-mock, pyyaml
+}:
+
+buildPythonPackage rec {
+ pname = "exchangelib";
+ version = "1.12.2";
+
+ # tests are not present in the PyPI version
+ src = fetchFromGitHub {
+ owner = "ecederstrand";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "1p24fq6f46j0qd0ccb64mncxbnm2n9w0sqpl4zk113caaaxkpjil";
+ };
+
+ # one test is failing due to it trying to send a request to example.com
+ patches = [ ./skip_failing_test.patch ];
+ checkInputs = [ psutil requests-mock pyyaml ];
+ propagatedBuildInputs = [
+ lxml tzlocal python-dateutil pygments requests-kerberos
+ future defusedxml cached-property isodate requests_ntlm dnspython ];
+
+ meta = with stdenv.lib; {
+ description = "Client for Microsoft Exchange Web Services (EWS)";
+ homepage = "https://github.com/ecederstrand/exchangelib";
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ catern ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/exchangelib/skip_failing_test.patch b/nixpkgs/pkgs/development/python-modules/exchangelib/skip_failing_test.patch
new file mode 100644
index 00000000000..6c070acaf75
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/exchangelib/skip_failing_test.patch
@@ -0,0 +1,18 @@
+--- ./tests/__init__.py 1980-01-02 00:00:00.000000000 +0000
++++ ./tests/__init__.py 1980-01-02 00:00:00.000000000 +0000
+@@ -301,6 +301,7 @@
+ self.assertEqual(id(base_p.thread_pool), id(p.thread_pool))
+ self.assertEqual(id(base_p._session_pool), id(p._session_pool))
+
++ @unittest.skip("no network connection inside the Nix sandbox")
+ def test_close(self):
+ proc = psutil.Process()
+ ip_addresses = {info[4][0] for info in socket.getaddrinfo(
+@@ -1257,6 +1258,7 @@
+ )
+
+
++@unittest.skip("no network connection inside the Nix sandbox")
+ class EWSTest(unittest.TestCase):
+ @classmethod
+ def setUpClass(cls):
diff --git a/nixpkgs/pkgs/development/python-modules/execnet/default.nix b/nixpkgs/pkgs/development/python-modules/execnet/default.nix
new file mode 100644
index 00000000000..c7766802e4e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/execnet/default.nix
@@ -0,0 +1,46 @@
+{ stdenv
+, lib
+, buildPythonPackage
+, isPyPy
+, fetchPypi
+, pytest
+, setuptools_scm
+, apipkg
+}:
+
+buildPythonPackage rec {
+ pname = "execnet";
+ version = "1.7.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "3839f3c1e9270926e7b3d9b0a52a57be89c302a3826a2b19c8d6e6c3d2b506d2";
+ };
+
+ checkInputs = [ pytest ];
+ nativeBuildInputs = [ setuptools_scm ];
+ propagatedBuildInputs = [ apipkg ];
+
+ # remove vbox tests
+ postPatch = ''
+ rm -v testing/test_termination.py
+ rm -v testing/test_channel.py
+ rm -v testing/test_xspec.py
+ rm -v testing/test_gateway.py
+ ${lib.optionalString isPyPy "rm -v testing/test_multi.py"}
+ '';
+
+ checkPhase = ''
+ py.test testing
+ '';
+
+ __darwinAllowLocalNetworking = true;
+
+ meta = with stdenv.lib; {
+ description = "Rapid multi-Python deployment";
+ license = licenses.gpl2;
+ homepage = "https://execnet.readthedocs.io/";
+ maintainers = with maintainers; [ nand0p ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/executor/default.nix b/nixpkgs/pkgs/development/python-modules/executor/default.nix
new file mode 100644
index 00000000000..8c71d63ef5c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/executor/default.nix
@@ -0,0 +1,31 @@
+{ lib, buildPythonPackage, fetchFromGitHub, coloredlogs, property-manager, fasteners, pytest, mock, virtualenv }:
+
+buildPythonPackage rec {
+ pname = "executor";
+ version = "21.3";
+
+ src = fetchFromGitHub {
+ owner = "xolox";
+ repo = "python-executor";
+ rev = version;
+ sha256 = "0rc14vjx3d6irfaw0pczzw1pn0xjl7xikv32hc1fvxv2ibnldv5d";
+ };
+
+ propagatedBuildInputs = [ coloredlogs property-manager fasteners ];
+
+ checkInputs = [ pytest mock virtualenv ];
+
+ # ignore impure tests
+ checkPhase = ''
+ pytest . -k "not option and not retry \
+ and not remote and not ssh \
+ and not foreach and not local_context"
+ '';
+
+ meta = with lib; {
+ description = "Programmer friendly subprocess wrapper";
+ homepage = https://github.com/xolox/python-executor;
+ license = licenses.mit;
+ maintainers = with maintainers; [ eyjhb ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/exifread/default.nix b/nixpkgs/pkgs/development/python-modules/exifread/default.nix
new file mode 100644
index 00000000000..61593b625f7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/exifread/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "ExifRead";
+ version = "2.1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1b90jf6m9vxh9nanhpyvqdq7hmfx5iggw1l8kq10jrs6xgr49qkr";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Easy to use Python module to extract Exif metadata from tiff and jpeg files";
+ homepage = "https://github.com/ianare/exif-py";
+ license = licenses.bsd0;
+ maintainers = with maintainers; [ vozz ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/extras/default.nix b/nixpkgs/pkgs/development/python-modules/extras/default.nix
new file mode 100644
index 00000000000..adcc43f2650
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/extras/default.nix
@@ -0,0 +1,23 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "extras";
+ version = "1.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "132e36de10b9c91d5d4cc620160a476e0468a88f16c9431817a6729611a81b4e";
+ };
+
+ # error: invalid command 'test'
+ doCheck = false;
+
+ meta = {
+ description = "A module provides basic functions for parsing mime-type names and matching them against a list of media-ranges";
+ homepage = https://code.google.com/p/mimeparse/;
+ license = lib.licenses.mit;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/eyed3/default.nix b/nixpkgs/pkgs/development/python-modules/eyed3/default.nix
new file mode 100644
index 00000000000..a06f276232e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/eyed3/default.nix
@@ -0,0 +1,59 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pythonAtLeast
+, pythonOlder
+, paver
+, python
+, isPyPy
+, six
+, pathlib
+, python_magic
+, lib
+}:
+
+buildPythonPackage rec {
+ version = "0.8.10";
+ pname = "eyeD3";
+ disabled = isPyPy;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1jb22n1jczxgbpcnfiw12r8dcs74556g1d09mzms44f52kgs7lgc";
+ };
+
+ # https://github.com/nicfit/eyeD3/pull/284
+ postPatch = lib.optionalString (pythonAtLeast "3.4") ''
+ sed -ie '/pathlib/d' requirements/requirements.yml
+ '';
+
+ buildInputs = [ paver ];
+
+ # requires special test data:
+ # https://github.com/nicfit/eyeD3/blob/103198e265e3279384f35304e8218be6717c2976/Makefile#L97
+ doCheck = false;
+
+ propagatedBuildInputs = [ six python_magic ] ++ lib.optional (pythonOlder "3.4") pathlib;
+
+ postInstall = ''
+ for prog in "$out/bin/"*; do
+ wrapProgram "$prog" --prefix PYTHONPATH : "$PYTHONPATH" \
+ --prefix PATH : ${python}/bin
+ done
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A Python module and command line program for processing ID3 tags";
+ homepage = http://eyed3.nicfit.net/;
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ lovek323 ];
+ platforms = platforms.unix;
+ longDescription = ''
+ eyeD3 is a Python module and command line program for processing ID3
+ tags. Information about mp3 files (i.e bit rate, sample frequency, play
+ time, etc.) is also provided. The formats supported are ID3 v1.0/v1.1
+ and v2.3/v2.4.
+ '';
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ezdxf/default.nix b/nixpkgs/pkgs/development/python-modules/ezdxf/default.nix
new file mode 100644
index 00000000000..94fca96b455
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ezdxf/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, buildPythonPackage, pythonOlder, fetchFromGitHub, pyparsing, pytest }:
+
+buildPythonPackage rec {
+ version = "0.9";
+ pname = "ezdxf";
+
+ disabled = pythonOlder "3.5";
+
+ src = fetchFromGitHub {
+ owner = "mozman";
+ repo = "ezdxf";
+ rev = "v${version}";
+ sha256 = "1ggimjd9060b696sgzgxy9j9sl45wh9qbxnf0035qclafshprlzl";
+ };
+
+ checkInputs = [ pytest ];
+ checkPhase = "pytest tests integration_tests";
+
+ propagatedBuildInputs = [ pyparsing ];
+
+ meta = with stdenv.lib; {
+ description = "Python package to read and write DXF drawings (interface to the DXF file format)";
+ homepage = https://github.com/mozman/ezdxf/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ hodapp ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/face/default.nix b/nixpkgs/pkgs/development/python-modules/face/default.nix
new file mode 100644
index 00000000000..10725985497
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/face/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, buildPythonPackage, fetchPypi, boltons, pytest }:
+
+buildPythonPackage rec {
+ pname = "face";
+ version = "0.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0zdp5qlrhxf4dypvvd0zr7zxj2svkz9wblp37vgw01wvcy9b1ds7";
+ };
+
+ propagatedBuildInputs = [ boltons ];
+
+ checkInputs = [ pytest ];
+ checkPhase = "pytest face/test";
+
+ # ironically, test_parse doesn't parse, but fixed in git so no point
+ # reporting
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/mahmoud/face;
+ description = "A command-line interface parser and framework";
+ longDescription = ''
+ A command-line interface parser and framework, friendly for
+ users, full-featured for developers.
+ '';
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ twey ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/face_recognition/default.nix b/nixpkgs/pkgs/development/python-modules/face_recognition/default.nix
new file mode 100644
index 00000000000..2856eeeab1b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/face_recognition/default.nix
@@ -0,0 +1,42 @@
+{ buildPythonPackage, fetchFromGitHub, pillow, click, dlib, numpy
+, face_recognition_models, stdenv, flake8, pytest, glibcLocales
+}:
+
+buildPythonPackage rec {
+ pname = "face_recognition";
+ version = "1.2.3";
+
+ src = fetchFromGitHub {
+ repo = pname;
+ owner = "ageitgey";
+ rev = "634db2e4309a365cee2503cb65d6f2e88f519d1e";
+ sha256 = "06zw5hq417d5yp17zynhxhb73074lx2qy64fqfzf711rw5vrn2mx";
+ };
+
+ postPatch = ''
+ substituteInPlace setup.py --replace "flake8==2.6.0" "flake8"
+ '';
+
+ propagatedBuildInputs = [ pillow click dlib numpy face_recognition_models ];
+
+ # Our dlib is compiled with AVX instructions by default which breaks
+ # with "Illegal instruction" on some builders due to missing hardware features.
+ #
+ # As this makes the build fairly unreliable, it's better to skip the test and to ensure that
+ # the build is working and after each change to the package, manual testing should be done.
+ doCheck = false;
+
+ # Although tests are disabled by default, checkPhase still exists, so
+ # maintainers can check the package's functionality locally before modifying it.
+ checkInputs = [ flake8 pytest glibcLocales ];
+ checkPhase = ''
+ LC_ALL="en_US.UTF-8" py.test
+ '';
+
+ meta = with stdenv.lib; {
+ license = licenses.mit;
+ homepage = https://github.com/ageitgey/face_recognition;
+ maintainers = with maintainers; [ ma27 ];
+ description = "The world's simplest facial recognition api for Python and the command line";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/face_recognition_models/default.nix b/nixpkgs/pkgs/development/python-modules/face_recognition_models/default.nix
new file mode 100644
index 00000000000..12587e6792d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/face_recognition_models/default.nix
@@ -0,0 +1,23 @@
+{ buildPythonPackage, stdenv, fetchPypi, setuptools }:
+
+buildPythonPackage rec {
+ pname = "face_recognition_models";
+ version = "0.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1kwnv3qpy5bhspk780bkyg8jd9n5f6p91ja6sjlwk1wcm00d56xp";
+ };
+
+ # no module named `tests` as no tests are available
+ doCheck = false;
+
+ propagatedBuildInputs = [ setuptools ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/ageitgey/face_recognition_models;
+ license = licenses.cc0;
+ maintainers = with maintainers; [ ma27 ];
+ description = "Trained models for the face_recognition python library";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/facebook-sdk/default.nix b/nixpkgs/pkgs/development/python-modules/facebook-sdk/default.nix
new file mode 100644
index 00000000000..d74c6e57470
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/facebook-sdk/default.nix
@@ -0,0 +1,32 @@
+{ pkgs
+, buildPythonPackage
+, fetchPypi
+, requests
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "facebook-sdk";
+ version = "3.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "138grz0n6plzdqgi4h6hhszf58bsvx9v76cwj51g1nd3kvkd5g6a";
+ };
+
+ propagatedBuildInputs = [ requests ];
+
+ # checks require network
+ doCheck = false;
+
+ checkPhase = ''
+ ${python.interpreter} test/test_facebook.py
+ '';
+
+ meta = with pkgs.lib; {
+ description = "Client library that supports the Facebook Graph API and the official Facebook JavaScript SDK";
+ homepage = https://github.com/pythonforfacebook/facebook-sdk;
+ license = licenses.asl20 ;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/facedancer/default.nix b/nixpkgs/pkgs/development/python-modules/facedancer/default.nix
new file mode 100644
index 00000000000..47147bdb01b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/facedancer/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k, pyusb, pyserial }:
+
+buildPythonPackage rec {
+ pname = "facedancer";
+ version = "2019.3.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1zhwnlfksblgp54njd9gjsrr5ibg12cx1x9xxcqkcdfhn3m2kmm0";
+ };
+
+ disabled = !isPy3k;
+
+ propagatedBuildInputs = [ pyusb pyserial ];
+
+ preBuild = ''
+ echo "$version" > VERSION
+ '';
+
+ meta = with lib; {
+ description = "library for emulating usb devices";
+ homepage = https://greatscottgadgets.com/greatfet/;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ mog ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/factory_boy/default.nix b/nixpkgs/pkgs/development/python-modules/factory_boy/default.nix
new file mode 100644
index 00000000000..0c87f309489
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/factory_boy/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, faker
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "factory_boy";
+ version = "2.12.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0w53hjgag6ad5i2vmrys8ysk54agsqvgbjy9lg8g0d8pi9h8vx7s";
+ };
+
+ propagatedBuildInputs = [ faker ];
+
+ # tests not included with pypi release
+ doCheck = false;
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A Python package to create factories for complex objects";
+ homepage = https://github.com/rbarrois/factory_boy;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fake_factory/default.nix b/nixpkgs/pkgs/development/python-modules/fake_factory/default.nix
new file mode 100644
index 00000000000..f17af02ee0f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fake_factory/default.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+, six
+, dateutil
+, ipaddress
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "fake-factory";
+ version = "9999.9.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f5bd18deb22ad8cb4402513c025877bc6b50de58902d686b6b21ba8981dce260";
+ };
+
+ propagatedBuildInputs = [ six dateutil ipaddress mock ];
+
+ # fake-factory is depreciated and single test will always fail
+ doCheck = false;
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest faker.tests
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A Python package that generates fake data for you";
+ homepage = https://pypi.python.org/pypi/fake-factory;
+ license = licenses.mit;
+ maintainers = with maintainers; [ lovek323 ];
+ platforms = platforms.unix;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/faker/default.nix b/nixpkgs/pkgs/development/python-modules/faker/default.nix
new file mode 100644
index 00000000000..e597e07ca36
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/faker/default.nix
@@ -0,0 +1,62 @@
+{ lib, buildPythonPackage, fetchPypi, pythonOlder,
+ # Build inputs
+ dateutil, six, text-unidecode, ipaddress ? null
+ # Test inputs
+ , email_validator
+ , freezegun
+ , mock
+ , more-itertools
+ , pytest
+ , pytestrunner
+ , random2
+ , ukpostcodeparser
+}:
+
+assert pythonOlder "3.3" -> ipaddress != null;
+
+buildPythonPackage rec {
+ pname = "Faker";
+ version = "1.0.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1jins8jlqyxjwx6i2h2jknwwfpi0bpz1qggvw6xnbxl0g9spyiv0";
+ };
+
+ buildInputs = [ pytestrunner ];
+ checkInputs = [
+ email_validator
+ freezegun
+ pytest
+ random2
+ ukpostcodeparser
+ ]
+ ++ lib.optionals (pythonOlder "3.3") [ mock ]
+ ++ lib.optionals (pythonOlder "3.0") [ more-itertools ];
+
+ propagatedBuildInputs = [
+ dateutil
+ six
+ text-unidecode
+ ] ++ lib.optional (pythonOlder "3.3") ipaddress;
+
+ postPatch = ''
+ substituteInPlace setup.py --replace "pytest>=3.8.0,<3.9" "pytest"
+
+ # see https://github.com/joke2k/faker/pull/911, fine since we pin correct
+ # versions for python2
+ substituteInPlace setup.py --replace "more-itertools<6.0.0" "more-itertools"
+
+ # https://github.com/joke2k/faker/issues/970
+ substituteInPlace setup.py --replace "random2==1.0.1" "random2>=1.0.1"
+ substituteInPlace setup.py --replace "freezegun==0.3.11" "freezegun>=0.3.11"
+ '';
+
+ meta = with lib; {
+ description = "A Python library for generating fake user data";
+ homepage = http://faker.rtfd.org;
+ license = licenses.mit;
+ maintainers = with maintainers; [ lovek323 ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/falcon/default.nix b/nixpkgs/pkgs/development/python-modules/falcon/default.nix
new file mode 100644
index 00000000000..20a76777413
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/falcon/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, coverage
+, ddt
+, nose
+, pyyaml
+, requests
+, testtools
+}:
+
+buildPythonPackage rec {
+ pname = "falcon";
+ version = "2.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "eea593cf466b9c126ce667f6d30503624ef24459f118c75594a69353b6c3d5fc";
+ };
+
+ checkInputs = [coverage ddt nose pyyaml requests testtools];
+
+ # The travis build fails since the migration from multiprocessing to threading for hosting the API under test.
+ # OSError: [Errno 98] Address already in use
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "An unladen web framework for building APIs and app backends";
+ homepage = "https://falconframework.org/";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ desiderius ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fastapi/default.nix b/nixpkgs/pkgs/development/python-modules/fastapi/default.nix
new file mode 100644
index 00000000000..89431d8b52f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fastapi/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, uvicorn
+, starlette
+, pydantic
+, python
+, isPy3k
+, which
+}:
+
+buildPythonPackage rec {
+ pname = "fastapi";
+ version = "0.33.0";
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1mc8ljfk6xyn2cq725s8hgapp62z5mylzw9akvkhwwz3bh8m5a7f";
+ };
+
+ propagatedBuildInputs = [
+ uvicorn
+ starlette
+ pydantic
+ ];
+
+ patches = [ ./setup.py.patch ];
+
+ checkPhase = ''
+ ${python.interpreter} -c "from fastapi import FastAPI; app = FastAPI()"
+ '';
+
+ meta = with lib; {
+ homepage = "https://github.com/tiangolo/fastapi";
+ description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production";
+ license = licenses.mit;
+ maintainers = with maintainers; [ wd15 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fastapi/setup.py.patch b/nixpkgs/pkgs/development/python-modules/fastapi/setup.py.patch
new file mode 100644
index 00000000000..43661343d74
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fastapi/setup.py.patch
@@ -0,0 +1,13 @@
+diff --git a/setup.py b/setup.py
+index ccc3d2b..77ce446 100644
+--- a/setup.py
++++ b/setup.py
+@@ -10,7 +10,7 @@ package_data = \
+ {'': ['*']}
+
+ install_requires = \
+-['starlette >=0.11.1,<=0.12.0', 'pydantic >=0.30,<=0.30.0']
++['starlette >=0.11.1', 'pydantic >=0.30']
+
+ extras_require = \
+ {'all': ['requests',
diff --git a/nixpkgs/pkgs/development/python-modules/fastcache/default.nix b/nixpkgs/pkgs/development/python-modules/fastcache/default.nix
new file mode 100644
index 00000000000..f50eb8f53bb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fastcache/default.nix
@@ -0,0 +1,20 @@
+{ lib, buildPythonPackage, fetchPypi, pytest }:
+
+buildPythonPackage rec {
+ pname = "fastcache";
+ version = "1.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0avqpswfmw5b08xx3ib6zchc5bis390fn1v74vg7nnrkf1pb3qbd";
+ };
+
+ checkInputs = [ pytest ];
+
+ meta = with lib; {
+ description = "C implementation of Python3 lru_cache for Python 2 and 3";
+ homepage = https://github.com/pbrady/fastcache;
+ license = licenses.mit;
+ maintainers = [ maintainers.bhipple ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fasteners/default.nix b/nixpkgs/pkgs/development/python-modules/fasteners/default.nix
new file mode 100644
index 00000000000..50a6dbf40df
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fasteners/default.nix
@@ -0,0 +1,35 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+, monotonic
+, testtools
+, isPy3k
+, nose
+, futures
+}:
+
+buildPythonPackage rec {
+ pname = "fasteners";
+ version = "0.15";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "3a176da6b70df9bb88498e1a18a9e4a8579ed5b9141207762368a1017bf8f5ef";
+ };
+
+ propagatedBuildInputs = [ six monotonic ];
+
+ checkInputs = [ testtools nose ] ++ stdenv.lib.optionals (!isPy3k) [ futures ];
+
+ checkPhase = ''
+ nosetests
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A python package that provides useful locks";
+ homepage = https://github.com/harlowja/fasteners;
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fastentrypoints/default.nix b/nixpkgs/pkgs/development/python-modules/fastentrypoints/default.nix
new file mode 100644
index 00000000000..e2e0a4d4d92
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fastentrypoints/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "fastentrypoints";
+ version = "0.12";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "02s1j8i2dzbpbwgq2a3fiqwm3cnmhii2qzc0k42l0rdxd4a4ya7z";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Makes entry_points specified in setup.py load more quickly";
+ homepage = https://github.com/ninjaaron/fast-entry_points;
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ nixy ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fastimport/default.nix b/nixpkgs/pkgs/development/python-modules/fastimport/default.nix
new file mode 100644
index 00000000000..02c1ea60e61
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fastimport/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, python, fetchPypi}:
+
+buildPythonPackage rec {
+ pname = "fastimport";
+ version = "0.9.8";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b2f2e8eb97000256e1aab83d2a0a053fc7b93c3aa4f7e9b971a5703dfc5963b9";
+ };
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://launchpad.net/python-fastimport;
+ description = "VCS fastimport/fastexport parser";
+ maintainers = with maintainers; [ koral ];
+ license = licenses.gpl2Plus;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fastpair/default.nix b/nixpkgs/pkgs/development/python-modules/fastpair/default.nix
new file mode 100644
index 00000000000..e9e6316bb61
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fastpair/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, pytestrunner, pytest, scipy }:
+
+buildPythonPackage {
+ pname = "fastpair";
+ version = "2016-07-05";
+
+ src = fetchFromGitHub {
+ owner = "carsonfarmer";
+ repo = "fastpair";
+ rev = "92364962f6b695661f35a117bf11f96584128a8d";
+ sha256 = "1pv9sxycxdk567s5gs947rhlqngrb9nn9yh4dhdvg1ix1i8dca71";
+ };
+
+ nativeBuildInputs = [ pytestrunner ];
+
+ checkInputs = [ pytest ];
+
+ propagatedBuildInputs = [
+ scipy
+ ];
+
+ # Does not support pytest 4 https://github.com/carsonfarmer/fastpair/issues/14
+ doCheck = false;
+
+ checkPhase = ''
+ pytest fastpair
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/carsonfarmer/fastpair;
+ description = "Data-structure for the dynamic closest-pair problem";
+ license = licenses.mit;
+ maintainers = with maintainers; [ cmcdragonkai ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fastparquet/default.nix b/nixpkgs/pkgs/development/python-modules/fastparquet/default.nix
new file mode 100644
index 00000000000..260d1b7f4b3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fastparquet/default.nix
@@ -0,0 +1,39 @@
+{ lib, buildPythonPackage, fetchPypi, fetchpatch, numba, numpy, pandas,
+pytestrunner, thrift, pytest, python-snappy, lz4 }:
+
+buildPythonPackage rec {
+ pname = "fastparquet";
+ version = "0.2.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "183wdmhnhnlsd7908n3d2g4qnb49fcipqfshghwpbdwdzjpa0day";
+ };
+
+ # Fixes for recent pandas version
+ # See https://github.com/dask/fastparquet/pull/396
+ patches = fetchpatch {
+ url = https://github.com/dask/fastparquet/commit/31fb3115598d1ab62a5c8bf7923a27c16f861529.patch;
+ sha256 = "0r1ig4rydmy4j85dgb52qbsx6knxdwn4dn9h032fg3p6xqq0zlpm";
+ };
+
+ postPatch = ''
+ # FIXME: package zstandard
+ # removing the test dependency for now
+ substituteInPlace setup.py --replace "'zstandard'," ""
+ '';
+
+ nativeBuildInputs = [ pytestrunner ];
+ propagatedBuildInputs = [ numba numpy pandas thrift ];
+ checkInputs = [ pytest python-snappy lz4 ];
+
+ # test_data/ missing in PyPI tarball
+ doCheck = false;
+
+ meta = with lib; {
+ description = "A python implementation of the parquet format";
+ homepage = https://github.com/dask/fastparquet;
+ license = with licenses; [ asl20 ];
+ maintainers = with maintainers; [ veprbl ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fastpbkdf2/default.nix b/nixpkgs/pkgs/development/python-modules/fastpbkdf2/default.nix
new file mode 100644
index 00000000000..63a7565cf55
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fastpbkdf2/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchFromGitHub, buildPythonPackage
+, openssl, pytest, cffi, six }:
+
+buildPythonPackage rec {
+ pname = "fastpbkdf2";
+ version = "0.2";
+
+ # Fetching from GitHub as tests are missing in PyPI
+ src = fetchFromGitHub {
+ owner = "Ayrx";
+ repo = "python-fastpbkdf2";
+ rev = "v${version}";
+ sha256 = "1hvvlk3j28i6nswb6gy3mq7278nq0mgfnpxh1rv6jvi7xhd7qmlc";
+ };
+
+ buildInputs = [ openssl ];
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ cffi six ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/Ayrx/python-fastpbkdf2;
+ description = "Python bindings for fastpbkdf2";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ jqueiroz ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fastrlock/default.nix b/nixpkgs/pkgs/development/python-modules/fastrlock/default.nix
new file mode 100644
index 00000000000..9b553e65db6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fastrlock/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "fastrlock";
+ version = "0.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6abdbb35205792e2d2a8c441aaa41a613d43ee2d88b3af4fd9735ae7a5f7db6b";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/scoder/fastrlock;
+ description = "A fast RLock implementation for CPython";
+ license = licenses.mit;
+ maintainers = with maintainers; [ hyphon81 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fasttext/default.nix b/nixpkgs/pkgs/development/python-modules/fasttext/default.nix
new file mode 100644
index 00000000000..9f1a8b18d7b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fasttext/default.nix
@@ -0,0 +1,28 @@
+{stdenv, buildPythonPackage, fetchFromGitHub, numpy, pybind11}:
+
+buildPythonPackage rec {
+ pname = "fasttext";
+ version = "0.9.1";
+
+ src = fetchFromGitHub {
+ owner = "facebookresearch";
+ repo = "fastText";
+ rev = "v${version}";
+ sha256 = "1cbzz98qn8aypp4r5kwwwc9wiq5bwzv51kcsb15xjfs9lz8h3rii";
+ };
+
+ buildInputs = [ pybind11 ];
+
+ propagatedBuildInputs = [ numpy ];
+
+ preBuild = ''
+ HOME=$TMPDIR
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Python module for text classification and representation learning";
+ homepage = https://fasttext.cc/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ danieldk ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/faulthandler/default.nix b/nixpkgs/pkgs/development/python-modules/faulthandler/default.nix
new file mode 100644
index 00000000000..d69c320ccaa
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/faulthandler/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, fetchPypi, buildPythonPackage }:
+
+buildPythonPackage rec {
+ pname = "faulthandler";
+ version = "3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "83301ffab03c86b291677b64b5cec7026f412cbda5ebd27e4cb3338452c40021";
+ };
+
+ meta = {
+ description = "Dump the Python traceback";
+ license = stdenv.lib.licenses.bsd2;
+ maintainers = with stdenv.lib.maintainers; [ sauyon ];
+ homepage = https://faulthandler.readthedocs.io/;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/favicon/default.nix b/nixpkgs/pkgs/development/python-modules/favicon/default.nix
new file mode 100644
index 00000000000..019f4be91c8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/favicon/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildPythonPackage, fetchPypi, requests, beautifulsoup4, pytest, requests-mock,
+ pytestrunner }:
+
+buildPythonPackage rec {
+ pname = "favicon";
+ version = "0.5.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "01jhb66nrqbf22z6ybpi8ndw6zifgysdmnh547027g96nz51669y";
+ };
+
+ buildInputs = [ pytestrunner ];
+ checkInputs = [ pytest requests-mock ];
+ propagatedBuildInputs = [ requests beautifulsoup4 ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with lib; {
+ description = "Find a website's favicon";
+ homepage = https://github.com/scottwernervt/favicon;
+ license = licenses.mit;
+ maintainers = with maintainers; [ elohmeier ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fb-re2/default.nix b/nixpkgs/pkgs/development/python-modules/fb-re2/default.nix
new file mode 100644
index 00000000000..25aae4591eb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fb-re2/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, re2
+}:
+
+buildPythonPackage rec {
+ pname = "fb-re2";
+ version = "1.0.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "83b2c2cd58d3874e6e3a784cf4cf2f1a57ce1969e50180f92b010eea24ef26cf";
+ };
+
+ buildInputs = [ re2 ];
+
+ # no tests in PyPI tarball
+ doCheck = false;
+
+ meta = {
+ description = "Python wrapper for Google's RE2";
+ homepage = https://github.com/facebook/pyre2;
+ license = lib.licenses.bsd3;
+ maintainers = with lib.maintainers; [ ivan ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fdint/default.nix b/nixpkgs/pkgs/development/python-modules/fdint/default.nix
new file mode 100644
index 00000000000..869e26d675a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fdint/default.nix
@@ -0,0 +1,36 @@
+{ stdenv
+, 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 stdenv.lib; {
+ homepage = https://github.com/scott-maddox/fdint;
+ description = "A free, open-source python package for quickly and precisely approximating Fermi-Dirac integrals";
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/feedgen/default.nix b/nixpkgs/pkgs/development/python-modules/feedgen/default.nix
new file mode 100644
index 00000000000..67ff86e8f72
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/feedgen/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi, dateutil, lxml }:
+
+buildPythonPackage rec {
+ pname = "feedgen";
+ version = "0.7.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "82c9e29884e137c3e3e7959a02f142d1f7a46cd387d572e9e40150112a27604f";
+ };
+
+ propagatedBuildInputs = [ dateutil lxml ];
+
+ # No tests in archive
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Python module to generate ATOM feeds, RSS feeds and Podcasts.";
+ downloadPage = https://github.com/lkiesow/python-feedgen/releases;
+ homepage = https://github.com/lkiesow/python-feedgen;
+ license = with licenses; [ bsd2 lgpl3 ];
+ maintainers = with maintainers; [ casey ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/feedgenerator/default.nix b/nixpkgs/pkgs/development/python-modules/feedgenerator/default.nix
new file mode 100644
index 00000000000..c8ea6df7ae0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/feedgenerator/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, glibcLocales, fetchPypi, six, pytz }:
+
+buildPythonPackage rec {
+ pname = "feedgenerator";
+ version = "1.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "01mirwkm7xfx539hmvj7g9da1j51gw5lsx74dr0glizskjm5vq2s";
+ };
+
+ buildInputs = [ glibcLocales ];
+
+ LC_ALL="en_US.UTF-8";
+
+ propagatedBuildInputs = [ six pytz ];
+
+ meta = with stdenv.lib; {
+ description = "Standalone version of django.utils.feedgenerator, compatible with Py3k";
+ homepage = https://github.com/dmdm/feedgenerator-py3k.git;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/feedparser/default.nix b/nixpkgs/pkgs/development/python-modules/feedparser/default.nix
new file mode 100644
index 00000000000..ac91fe51d89
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/feedparser/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, 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 stdenv.lib; {
+ homepage = http://code.google.com/p/feedparser/;
+ description = "Universal feed parser";
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ domenkozar ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fido2/default.nix b/nixpkgs/pkgs/development/python-modules/fido2/default.nix
new file mode 100644
index 00000000000..8922d6e0519
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fido2/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildPythonPackage, fetchPypi
+, six, cryptography
+, mock, pyfakefs
+}:
+
+buildPythonPackage rec {
+ pname = "fido2";
+ version = "0.7.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "11wdcjymw8y6wxgp29gbhdxff3lpc5yp5fcqnr5vnj88g192ic27";
+ };
+
+ propagatedBuildInputs = [ six cryptography ];
+
+ checkInputs = [ mock pyfakefs ];
+
+ meta = with lib; {
+ description = "Provides library functionality for FIDO 2.0, including communication with a device over USB.";
+ homepage = https://github.com/Yubico/python-fido2;
+ license = licenses.mpl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/filebrowser_safe/default.nix b/nixpkgs/pkgs/development/python-modules/filebrowser_safe/default.nix
new file mode 100644
index 00000000000..d0d324fb977
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/filebrowser_safe/default.nix
@@ -0,0 +1,40 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, django
+}:
+
+buildPythonPackage rec {
+ version = "0.5.0";
+ pname = "filebrowser_safe";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5dcd31dd79684025139b43841f6515af1da5a4bb0de15bc4d88003db1970648e";
+ };
+
+ buildInputs = [ django ];
+
+ # There is no test embedded
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A snapshot of django-filebrowser for the Mezzanine CMS";
+ longDescription = ''
+ filebrowser_safe was created to provide a snapshot of the
+ FileBrowser asset manager for Django, to be referenced as a
+ 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;
+ maintainers = with maintainers; [ prikhi ];
+ platforms = platforms.unix;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/filebytes/default.nix b/nixpkgs/pkgs/development/python-modules/filebytes/default.nix
new file mode 100644
index 00000000000..7102e5d73c4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/filebytes/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "filebytes";
+ version = "0.9.21";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "09e306feafd435e240b6ca22e6319ce51862dbe99e3481368fc9a2d15d2263d5";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = "https://scoding.de/filebytes-introduction";
+ license = licenses.gpl2;
+ description = "Scripts to parse ELF, PE, Mach-O and OAT (Android Runtime)";
+ maintainers = with maintainers; [ bennofs ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/filelock/default.nix b/nixpkgs/pkgs/development/python-modules/filelock/default.nix
new file mode 100644
index 00000000000..3592a1f28c7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/filelock/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "filelock";
+ version = "3.0.12";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "18d82244ee114f543149c66a6e0c14e9c4f8a1044b5cdaadd0f82159d6a6ff59";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/benediktschmitt/py-filelock;
+ description = "A platform independent file lock for Python";
+ license = licenses.unlicense;
+ maintainers = with maintainers; [ hyphon81 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/filemagic/default.nix b/nixpkgs/pkgs/development/python-modules/filemagic/default.nix
new file mode 100644
index 00000000000..cbb5ca56fed
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/filemagic/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, lib, buildPythonPackage, fetchFromGitHub, file
+, isPy3k, mock, unittest2 }:
+
+buildPythonPackage {
+ pname = "filemagic";
+ version = "1.6";
+
+ # Don't use the PyPI source because it's missing files required for testing
+ src = fetchFromGitHub {
+ owner = "aliles";
+ repo = "filemagic";
+ rev = "138649062f769fb10c256e454a3e94ecfbf3017b";
+ sha256 = "1jxf928jjl2v6zv8kdnfqvywdwql1zqkm1v5xn1d5w0qjcg38d4n";
+ };
+
+ postPatch = ''
+ substituteInPlace magic/api.py --replace "ctypes.util.find_library('magic')" \
+ "'${file}/lib/libmagic${stdenv.hostPlatform.extensions.sharedLibrary}'"
+ '';
+
+ checkInputs = [ (if isPy3k then mock else unittest2) ];
+
+ meta = with lib; {
+ description = "File type identification using libmagic";
+ homepage = https://github.com/aliles/filemagic;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ earvstedt ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/filetype/default.nix b/nixpkgs/pkgs/development/python-modules/filetype/default.nix
new file mode 100644
index 00000000000..34f7ac4e4a9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/filetype/default.nix
@@ -0,0 +1,26 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "filetype";
+ version = "1.0.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "17a3b885f19034da29640b083d767e0f13c2dcb5dcc267945c8b6e5a5a9013c7";
+ };
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover
+ '';
+
+ meta = with lib; {
+ description = "Infer file type and MIME type of any file/buffer";
+ homepage = https://github.com/h2non/filetype.py;
+ license = licenses.mit;
+ maintainers = with maintainers; [ dotlambda ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/filterpy/default.nix b/nixpkgs/pkgs/development/python-modules/filterpy/default.nix
new file mode 100644
index 00000000000..47f2c083d8a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/filterpy/default.nix
@@ -0,0 +1,35 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, numpy
+, scipy
+, matplotlib
+, pytest
+}:
+
+buildPythonPackage rec {
+ version = "1.4.5";
+ pname = "filterpy";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "4f2a4d39e4ea601b9ab42b2db08b5918a9538c168cff1c6895ae26646f3d73b1";
+ };
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ numpy scipy matplotlib ];
+
+ # single test fails (even on master branch of repository)
+ # project does not use CI
+ checkPhase = ''
+ pytest --ignore=filterpy/common/tests/test_discretization.py
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/rlabbe/filterpy;
+ description = "Kalman filtering and optimal estimation library";
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fints/default.nix b/nixpkgs/pkgs/development/python-modules/fints/default.nix
new file mode 100644
index 00000000000..f780c76fd6d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fints/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, isPy27
+, bleach
+, mt-940
+, pytest
+, requests
+, sepaxml
+}:
+
+buildPythonPackage rec {
+ version = "2.2.0";
+ pname = "fints";
+ disabled = isPy27;
+
+ src = fetchFromGitHub {
+ owner = "raphaelm";
+ repo = "python-fints";
+ rev = "v${version}";
+ sha256 = "1gx173dzdprf3jsc7dss0xax8s6l2hr02qg9m5c4rksb3dl5fl8w";
+ };
+
+ postPatch = ''
+ substituteInPlace setup.py \
+ --replace 'sepaxml==2.0.*' 'sepaxml~=2.0'
+ '';
+
+ propagatedBuildInputs = [ requests mt-940 sepaxml bleach ];
+
+ checkInputs = [ pytest ];
+
+ # ignore network calls and broken fixture
+ checkPhase = ''
+ pytest . --ignore=tests/test_client.py -k 'not robust_mode'
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/raphaelm/python-fints/;
+ description = "Pure-python FinTS (formerly known as HBCI) implementation";
+ license = licenses.lgpl3;
+ maintainers = with maintainers; [ elohmeier ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fiona/default.nix b/nixpkgs/pkgs/development/python-modules/fiona/default.nix
new file mode 100644
index 00000000000..6dd74742741
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fiona/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k, pythonOlder
+, attrs, click, cligj, click-plugins, six, munch, enum34
+, pytest, boto3, mock
+, gdal_2 # can't bump to 3 yet, https://github.com/Toblerity/Fiona/issues/745
+}:
+
+buildPythonPackage rec {
+ pname = "Fiona";
+ version = "1.8.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0gpvdrayam4qvpqvz0911nlyvf7ib3slsyml52qx172vhpldycgs";
+ };
+
+ CXXFLAGS = stdenv.lib.optionalString stdenv.cc.isClang "-std=c++11";
+
+ nativeBuildInputs = [
+ gdal_2 # for gdal-config
+ ];
+
+ buildInputs = [
+ gdal_2
+ ];
+
+ propagatedBuildInputs = [
+ attrs
+ click
+ cligj
+ click-plugins
+ six
+ munch
+ ] ++ stdenv.lib.optional (!isPy3k) enum34;
+
+ checkInputs = [
+ pytest
+ boto3
+ ] ++ stdenv.lib.optional (pythonOlder "3.4") mock;
+
+ checkPhase = ''
+ rm -r fiona # prevent importing local fiona
+ # Some tests access network, others test packaging
+ pytest -k "not test_*_http \
+ and not test_*_https \
+ and not test_*_wheel"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "OGR's neat, nimble, no-nonsense API for Python";
+ homepage = http://toblerity.org/fiona/;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ knedlsepp ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fipy/default.nix b/nixpkgs/pkgs/development/python-modules/fipy/default.nix
new file mode 100644
index 00000000000..7fbf14cf7de
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fipy/default.nix
@@ -0,0 +1,55 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, numpy
+, scipy
+, pyamg
+, pysparse
+, future
+, matplotlib
+, tkinter
+, mpi4py
+, scikit-fmm
+, isPy27
+, gmsh
+, python
+, stdenv
+}:
+
+let
+ not_darwin_inputs = lib.optionals (! stdenv.isDarwin) [ gmsh ];
+in
+ buildPythonPackage rec {
+ pname = "fipy";
+ version = "3.3";
+
+ src = fetchPypi {
+ pname = "FiPy";
+ inherit version;
+ sha256 = "11agpg3d6yrns8igkpml1mxy3mkqkjq2yrw1mw12y07dkk12ii19";
+ };
+
+ propagatedBuildInputs = [
+ numpy
+ scipy
+ pyamg
+ matplotlib
+ tkinter
+ mpi4py
+ future
+ scikit-fmm
+ ] ++ lib.optionals isPy27 [ pysparse ] ++ not_darwin_inputs;
+
+ checkInputs = not_darwin_inputs;
+
+ checkPhase = ''
+ ${python.interpreter} setup.py test --modules
+ '';
+
+ meta = with lib; {
+ homepage = https://www.ctcms.nist.gov/fipy/;
+ description = "A Finite Volume PDE Solver Using Python";
+ license = licenses.free;
+ maintainers = with maintainers; [ costrouc wd15 ];
+ };
+ }
diff --git a/nixpkgs/pkgs/development/python-modules/fire/default.nix b/nixpkgs/pkgs/development/python-modules/fire/default.nix
new file mode 100644
index 00000000000..7af8d29fce7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fire/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, fetchpatch, six, hypothesis, mock
+, python-Levenshtein, pytest, termcolor, isPy27, enum34 }:
+
+buildPythonPackage rec {
+ pname = "fire";
+ version = "0.2.1";
+
+ src = fetchFromGitHub {
+ owner = "google";
+ repo = "python-fire";
+ rev = "v${version}";
+ sha256 = "1r6cmihafd7mb6j3mvgk251my6ckb0sqqj1l2ny2azklv175b38a";
+ };
+
+ propagatedBuildInputs = [ six termcolor ] ++ stdenv.lib.optional isPy27 enum34;
+
+ checkInputs = [ hypothesis mock python-Levenshtein pytest ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A library for automatically generating command line interfaces";
+ longDescription = ''
+ Python Fire is a library for automatically generating command line
+ interfaces (CLIs) from absolutely any Python object.
+
+ * Python Fire is a simple way to create a CLI in Python.
+
+ * Python Fire is a helpful tool for developing and debugging
+ Python code.
+
+ * Python Fire helps with exploring existing code or turning other
+ people's code into a CLI.
+
+ * Python Fire makes transitioning between Bash and Python easier.
+
+ * Python Fire makes using a Python REPL easier by setting up the
+ REPL with the modules and variables you'll need already imported
+ and created.
+ '';
+ license = licenses.asl20;
+ maintainers = with maintainers; [ leenaars ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/firetv/default.nix b/nixpkgs/pkgs/development/python-modules/firetv/default.nix
new file mode 100644
index 00000000000..21e44bb4581
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/firetv/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, adb-homeassistant
+, flask
+, pure-python-adb-homeassistant
+, pycryptodome
+, pyyaml
+, rsa
+}:
+buildPythonPackage rec {
+ pname = "firetv";
+ version = "1.0.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "602de77411c2caffb322e4ff63fa6cc4eeb9a50c5f4b14e13930ed7cd87cf513";
+ };
+
+ propagatedBuildInputs = [
+ adb-homeassistant
+ flask
+ pure-python-adb-homeassistant
+ pycryptodome
+ pyyaml
+ rsa
+ ];
+
+ # No Tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Communicate with an Amazon Fire TV device via ADB over a network";
+ homepage = https://github.com/happyleavesaoc/python-firetv/;
+ license = licenses.mit;
+ maintainers = [ maintainers.makefu ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/first/default.nix b/nixpkgs/pkgs/development/python-modules/first/default.nix
new file mode 100644
index 00000000000..de7342d67ca
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/first/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "first";
+ version = "2.0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1gykyrm6zlrbf9iz318p57qwk594mx1jf0d79v79g32zql45na7z";
+ };
+
+ doCheck = false; # no tests
+
+ meta = with stdenv.lib; {
+ description = "The function you always missed in Python";
+ homepage = https://github.com/hynek/first/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ zimbatm ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fitbit/default.nix b/nixpkgs/pkgs/development/python-modules/fitbit/default.nix
new file mode 100644
index 00000000000..ef4859a749a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fitbit/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, coverage
+, dateutil
+, freezegun
+, mock
+, requests-mock
+, requests_oauthlib
+, sphinx
+}:
+
+buildPythonPackage rec {
+ pname = "fitbit";
+ version = "0.3.1";
+
+ checkInputs = [ coverage freezegun mock requests-mock sphinx ];
+ propagatedBuildInputs = [ dateutil requests_oauthlib ];
+
+ # The source package on PyPi is missing files required for unit testing.
+ # https://github.com/orcasgit/python-fitbit/issues/148
+ src = fetchFromGitHub {
+ rev = version;
+ owner = "orcasgit";
+ repo = "python-fitbit";
+ sha256 = "1w2lpgf6bs5nbnmslppaf4lbhr9cj6grg0a525xv41jip7iy3vfn";
+ };
+
+ postPatch = ''
+ substituteInPlace requirements/test.txt \
+ --replace 'Sphinx>=1.2,<1.4' 'Sphinx' \
+ --replace 'coverage>=3.7,<4.0' 'coverage'
+ '';
+
+ meta = with lib; {
+ description = "Fitbit API Python Client Implementation";
+ license = licenses.asl20;
+ homepage = https://github.com/orcasgit/python-fitbit;
+ maintainers = with maintainers; [ delroth ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fixtures/default.nix b/nixpkgs/pkgs/development/python-modules/fixtures/default.nix
new file mode 100644
index 00000000000..35bf7cb90df
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fixtures/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pbr
+, testtools
+, mock
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "fixtures";
+ version = "3.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "fcf0d60234f1544da717a9738325812de1f42c2fa085e2d9252d8fff5712b2ef";
+ };
+
+ propagatedBuildInputs = [ pbr testtools mock ];
+
+ checkPhase = ''
+ ${python.interpreter} -m testtools.run fixtures.test_suite
+ '';
+
+ meta = {
+ description = "Reusable state for writing clean tests and more";
+ homepage = "https://pypi.python.org/pypi/fixtures";
+ license = lib.licenses.asl20;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/flake8-blind-except/default.nix b/nixpkgs/pkgs/development/python-modules/flake8-blind-except/default.nix
new file mode 100644
index 00000000000..f999bab8932
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flake8-blind-except/default.nix
@@ -0,0 +1,16 @@
+{ lib, fetchPypi, buildPythonPackage }:
+
+buildPythonPackage rec {
+ pname = "flake8-blind-except";
+ version = "0.1.1";
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "16g58mkr3fcn2vlfhp3rlahj93qswc7jd5qrqp748mc26dk3b8xc";
+ };
+ meta = {
+ homepage = https://github.com/elijahandrews/flake8-blind-except;
+ description = "A flake8 extension that checks for blind except: statements";
+ maintainers = with lib.maintainers; [ johbo ];
+ license = lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flake8-debugger/default.nix b/nixpkgs/pkgs/development/python-modules/flake8-debugger/default.nix
new file mode 100644
index 00000000000..32e9a08b741
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flake8-debugger/default.nix
@@ -0,0 +1,28 @@
+{ lib, fetchPypi, buildPythonPackage, flake8, pycodestyle, pytestrunner, pytest }:
+
+buildPythonPackage rec {
+ pname = "flake8-debugger";
+ version = "3.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "be4fb88de3ee8f6dd5053a2d347e2c0a2b54bab6733a2280bb20ebd3c4ca1d97";
+ };
+
+ nativeBuildInputs = [ pytestrunner ];
+
+ propagatedBuildInputs = [ flake8 pycodestyle ];
+
+ checkInputs = [ pytest ];
+
+ # Tests not included in PyPI tarball
+ # FIXME: Remove when https://github.com/JBKahn/flake8-debugger/pull/15 is merged
+ doCheck = false;
+
+ meta = {
+ homepage = https://github.com/jbkahn/flake8-debugger;
+ description = "ipdb/pdb statement checker plugin for flake8";
+ maintainers = with lib.maintainers; [ johbo ];
+ license = lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flake8-future-import/default.nix b/nixpkgs/pkgs/development/python-modules/flake8-future-import/default.nix
new file mode 100644
index 00000000000..c9cf3fe4ca8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flake8-future-import/default.nix
@@ -0,0 +1,30 @@
+{ lib, fetchFromGitHub, buildPythonPackage, fetchpatch, flake8, six }:
+
+buildPythonPackage rec {
+ pname = "flake8-future-import";
+ version = "0.4.5";
+
+ # PyPI tarball doesn't include the test suite
+ src = fetchFromGitHub {
+ owner = "xZise";
+ repo = "flake8-future-import";
+ rev = version;
+ sha256 = "00fpxa6g8cabybnciwnpsbg60zhgydc966jgwyyggw1pcg0frdqr";
+ };
+
+ patches = [
+ # Add Python 3.7 support. Remove with the next release
+ (fetchpatch {
+ url = https://github.com/xZise/flake8-future-import/commit/cace194a44d3b95c9c1ed96640bae49183acca04.patch;
+ sha256 = "17pkqnh035j5s5c53afs8bk49bq7lnmdwqp5k7izx7sw80z73p9r";
+ })
+ ];
+
+ propagatedBuildInputs = [ flake8 six ];
+
+ meta = {
+ homepage = https://github.com/xZise/flake8-future-import;
+ description = "A flake8 extension to check for the imported __future__ modules to make it easier to have a consistent code base";
+ license = lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flake8-import-order/default.nix b/nixpkgs/pkgs/development/python-modules/flake8-import-order/default.nix
new file mode 100644
index 00000000000..8099f3318e8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flake8-import-order/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k, enum34, pycodestyle, pytest, flake8, pylama }:
+
+buildPythonPackage rec {
+ pname = "flake8-import-order";
+ version = "0.18.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "14kfvsagqc6lrplvf3x58ia6x744bk8fj91wmk0hcipa8naw73d2";
+ };
+
+ propagatedBuildInputs = [ pycodestyle ] ++ lib.optional (!isPy3k) enum34;
+
+ checkInputs = [ pytest flake8 pycodestyle pylama ];
+
+ checkPhase = ''
+ pytest --strict
+ '';
+
+ meta = with lib; {
+ description = "Flake8 and pylama plugin that checks the ordering of import statements";
+ homepage = https://github.com/PyCQA/flake8-import-order;
+ license = with licenses; [ lgpl3 mit ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flake8-polyfill/default.nix b/nixpkgs/pkgs/development/python-modules/flake8-polyfill/default.nix
new file mode 100644
index 00000000000..070e6997010
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flake8-polyfill/default.nix
@@ -0,0 +1,40 @@
+{ lib, fetchPypi, buildPythonPackage
+, flake8
+, mock, pep8, pytest }:
+
+buildPythonPackage rec {
+ pname = "flake8-polyfill";
+ version = "1.0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1nlf1mkqw856vi6782qcglqhaacb23khk9wkcgn55npnjxshhjz4";
+ };
+
+ postPatch = ''
+ # Failed: [pytest] section in setup.cfg files is no longer supported, change to [tool:pytest] instead.
+ substituteInPlace setup.cfg \
+ --replace pytest 'tool:pytest'
+ '';
+
+ propagatedBuildInputs = [
+ flake8
+ ];
+
+ checkInputs = [
+ mock
+ pep8
+ pytest
+ ];
+
+ checkPhase = ''
+ pytest tests
+ '';
+
+ meta = with lib; {
+ homepage = https://gitlab.com/pycqa/flake8-polyfill;
+ description = "Polyfill package for Flake8 plugins";
+ license = licenses.mit;
+ maintainers = with maintainers; [ eadwu ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flake8/default.nix b/nixpkgs/pkgs/development/python-modules/flake8/default.nix
new file mode 100644
index 00000000000..7016e69bd0c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flake8/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, buildPythonPackage, fetchPypi, pythonOlder
+, mock, pytest, pytestrunner
+, configparser, enum34, mccabe, pycodestyle, pyflakes, entrypoints, functools32, typing
+}:
+
+buildPythonPackage rec {
+ pname = "flake8";
+ version = "3.7.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "859996073f341f2670741b51ec1e67a01da142831aa1fdc6242dbf88dffbe661";
+ };
+
+ checkInputs = [ pytest mock pytestrunner ];
+ propagatedBuildInputs = [ entrypoints pyflakes pycodestyle mccabe ]
+ ++ stdenv.lib.optionals (pythonOlder "3.2") [ configparser functools32 ]
+ ++ stdenv.lib.optionals (pythonOlder "3.4") [ enum34 ]
+ ++ stdenv.lib.optionals (pythonOlder "3.5") [ typing ];
+
+ checkPhase = ''
+ py.test tests
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Code checking using pep8 and pyflakes";
+ homepage = https://pypi.python.org/pypi/flake8;
+ license = licenses.mit;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flaky/default.nix b/nixpkgs/pkgs/development/python-modules/flaky/default.nix
new file mode 100644
index 00000000000..523e6ac53e6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flaky/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, mock
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "flaky";
+ version = "3.5.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "12bd5e41f372b2190e8d754b6e5829c2f11dbc764e10b30f57e59f829c9ca1da";
+ };
+
+ buildInputs = [ mock pytest ];
+
+ # waiting for feedback https://github.com/box/flaky/issues/97
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/box/flaky;
+ description = "Plugin for nose or py.test that automatically reruns flaky tests";
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flask-api/default.nix b/nixpkgs/pkgs/development/python-modules/flask-api/default.nix
new file mode 100644
index 00000000000..b0f9682ed85
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flask-api/default.nix
@@ -0,0 +1,20 @@
+{ lib, buildPythonPackage, fetchPypi, flask, markdown }:
+
+buildPythonPackage rec {
+ pname = "Flask-API";
+ version = "1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0r23pdlaz6ibz9vml3m7v6v3firvykbrsi1zzxkdhls0zi9jq560";
+ };
+
+ propagatedBuildInputs = [ flask markdown ];
+
+ meta = with lib; {
+ homepage = https://github.com/miracle2k/flask-assets;
+ description = "Browsable web APIs for Flask";
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flask-assets/default.nix b/nixpkgs/pkgs/development/python-modules/flask-assets/default.nix
new file mode 100644
index 00000000000..a8e454f4a2c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flask-assets/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildPythonPackage, fetchPypi, flask, webassets, flask_script, nose }:
+
+buildPythonPackage rec {
+ pname = "Flask-Assets";
+ version = "0.12";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0ivqsihk994rxw58vdgzrx4d77d7lpzjm4qxb38hjdgvi5xm4cb0";
+ };
+
+ patchPhase = ''
+ substituteInPlace tests/test_integration.py --replace 'static_path=' 'static_url_path='
+ '';
+
+ propagatedBuildInputs = [ flask webassets flask_script nose ];
+
+ meta = with lib; {
+ homepage = https://github.com/miracle2k/flask-assets;
+ description = "Asset management for Flask, to compress and merge CSS and Javascript files";
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ abbradar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flask-autoindex/default.nix b/nixpkgs/pkgs/development/python-modules/flask-autoindex/default.nix
new file mode 100644
index 00000000000..afd3db60ffc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flask-autoindex/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, flask
+, flask-silk
+, future
+}:
+
+buildPythonPackage rec {
+ pname = "Flask-AutoIndex";
+ version = "0.6.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "af2cdb34eefe6edbf43ce19200880829e8c2df3598000e75dc63c9b7e3478706";
+ };
+
+ propagatedBuildInputs = [
+ flask
+ flask-silk
+ future
+ ];
+
+ meta = with stdenv.lib; {
+ description = "The mod_autoindex for Flask";
+ longDescription = ''
+ Flask-AutoIndex generates an index page for your Flask application automatically.
+ The result is just like mod_autoindex, but the look is more awesome!
+ '';
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ timokau ];
+ homepage = https://pythonhosted.org/Flask-AutoIndex/;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flask-babel/default.nix b/nixpkgs/pkgs/development/python-modules/flask-babel/default.nix
new file mode 100644
index 00000000000..caaf0a61152
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flask-babel/default.nix
@@ -0,0 +1,44 @@
+{ stdenv
+, buildPythonPackage
+, python
+, fetchPypi
+, flask
+, Babel
+, jinja2
+, pytz
+, speaklater
+}:
+
+buildPythonPackage rec {
+ pname = "Flask-Babel";
+ version = "0.12.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "11jwp8vvq1gnm31qh6ihy2h393hy18yn9yjp569g60r0wj1x2sii";
+ };
+
+ propagatedBuildInputs = [
+ flask
+ Babel
+ jinja2
+ pytz
+ speaklater
+ ];
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover -s tests
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Adds i18n/l10n support to Flask applications";
+ longDescription = ''
+ Implements i18n and l10n support for Flask.
+ This is based on the Python babel module as well as pytz both of which are
+ installed automatically for you if you install this library.
+ '';
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ timokau ];
+ homepage = https://github.com/python-babel/flask-babel;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flask-bootstrap/default.nix b/nixpkgs/pkgs/development/python-modules/flask-bootstrap/default.nix
new file mode 100644
index 00000000000..7c12b79bb2f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flask-bootstrap/default.nix
@@ -0,0 +1,20 @@
+{ lib, buildPythonPackage, fetchPypi, flask, visitor, dominate }:
+
+buildPythonPackage rec {
+ pname = "Flask-Bootstrap";
+ version = "3.3.7.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1j1s2bplaifsnmr8vfxa3czca4rz78xyhrg4chx39xl306afs26b";
+ };
+
+ propagatedBuildInputs = [ flask visitor dominate ];
+
+ meta = with lib; {
+ homepage = https://github.com/mbr/flask-bootstrap;
+ description = "Ready-to-use Twitter-bootstrap for use in Flask.";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flask-caching/default.nix b/nixpkgs/pkgs/development/python-modules/flask-caching/default.nix
new file mode 100644
index 00000000000..bd528af6bfa
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flask-caching/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildPythonPackage, fetchPypi, flask, pytest, pytestcov, pytest-xprocess }:
+
+buildPythonPackage rec {
+ pname = "Flask-Caching";
+ version = "1.7.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "17jnnmnpdflv120yhsfbnpick06iias6f2hcxmf1mi1nr35kdqjj";
+ };
+
+ propagatedBuildInputs = [ flask ];
+
+ checkInputs = [ pytest pytestcov pytest-xprocess ];
+
+ # backend_cache relies on pytest-cache, which is a stale package from 2013
+ checkPhase = ''
+ pytest -k 'not backend_cache'
+ '';
+
+ meta = with lib; {
+ description = "Adds caching support to your Flask application";
+ homepage = "https://github.com/sh4nks/flask-caching";
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flask-common/default.nix b/nixpkgs/pkgs/development/python-modules/flask-common/default.nix
new file mode 100644
index 00000000000..05385e08d05
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flask-common/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchPypi, buildPythonPackage
+, crayons, flask, flask-caching, gunicorn, maya, meinheld, whitenoise }:
+
+buildPythonPackage rec {
+ pname = "Flask-Common";
+ version = "0.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "13d99f2dbc0a332b8bc4b2cc394d3e48f89672c266868e372cd9d7b433d921a9";
+ };
+
+ propagatedBuildInputs = [ crayons flask flask-caching gunicorn maya meinheld whitenoise ];
+
+ meta = with stdenv.lib; {
+ description = "Flask extension with lots of common time-savers";
+ homepage = https://github.com/kennethreitz/flask-common;
+ license = licenses.asl20; # XXX: setup.py lists BSD but git repo has Apache 2.0 LICENSE
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flask-compress/default.nix b/nixpkgs/pkgs/development/python-modules/flask-compress/default.nix
new file mode 100644
index 00000000000..b602fcfd494
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flask-compress/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchPypi, buildPythonPackage, flask }:
+
+buildPythonPackage rec {
+ version = "1.4.0";
+ pname = "Flask-Compress";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1cxdbdiyxkspg7vkchfmaqr7c6q79gwvakna3fjcc6nivps971j6";
+ };
+
+ propagatedBuildInputs = [ flask ];
+
+ meta = with stdenv.lib; {
+ description = "Compress responses in your Flask app with gzip";
+ homepage = "https://libwilliam.github.io/flask-compress/";
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flask-cors/default.nix b/nixpkgs/pkgs/development/python-modules/flask-cors/default.nix
new file mode 100644
index 00000000000..2c07b68c3b8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flask-cors/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchPypi, buildPythonPackage
+, nose, flask, six }:
+
+buildPythonPackage rec {
+ pname = "Flask-Cors";
+ version = "3.0.8";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "05id72xwvhni23yasdvpdd8vsf3v4j6gzbqqff2g04j6xcih85vj";
+ };
+
+ buildInputs = [ nose ];
+ propagatedBuildInputs = [ flask six ];
+
+ meta = with stdenv.lib; {
+ description = "A Flask extension adding a decorator for CORS support";
+ homepage = https://github.com/corydolphin/flask-cors;
+ license = with licenses; [ mit ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flask-elastic/default.nix b/nixpkgs/pkgs/development/python-modules/flask-elastic/default.nix
new file mode 100644
index 00000000000..466bfb44121
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flask-elastic/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, flask, elasticsearch }:
+
+buildPythonPackage rec {
+ pname = "Flask-Elastic";
+ version = "0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0hqkwff6z78aspkf1cf815qwp02g3ch1y9dhm5v2ap8vakyac0az";
+ };
+
+ propagatedBuildInputs = [ flask elasticsearch ];
+ doCheck = false; # no tests
+
+ meta = with stdenv.lib; {
+ description = "Integrates official client for Elasticsearch into Flask";
+ license = licenses.bsd3;
+ maintainers = [ maintainers.mic92 ];
+ homepage = https://github.com/cepture/foppch/flask-elastic;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flask-jwt-extended/default.nix b/nixpkgs/pkgs/development/python-modules/flask-jwt-extended/default.nix
new file mode 100644
index 00000000000..693e733e73a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flask-jwt-extended/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchPypi, dateutil, flask, pyjwt, werkzeug, pytest }:
+
+buildPythonPackage rec {
+ pname = "Flask-JWT-Extended";
+ version = "3.23.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "05nf94dp80i68gs61pf67qj1y6i56jgdxmibqmns5wz6z33fi7wj";
+ };
+
+ propagatedBuildInputs = [ dateutil flask pyjwt werkzeug ];
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ pytest tests/
+ '';
+
+ meta = with stdenv.lib; {
+ description = "JWT extension for Flask";
+ homepage = https://flask-jwt-extended.readthedocs.io/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ gerschtli ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flask-ldap-login/default.nix b/nixpkgs/pkgs/development/python-modules/flask-ldap-login/default.nix
new file mode 100644
index 00000000000..99b57dac816
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flask-ldap-login/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, 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 stdenv.lib; {
+ homepage = https://github.com/ContinuumIO/flask-ldap-login;
+ description = "User session management for Flask";
+ license = licenses.mit;
+ platforms = platforms.all;
+ maintainers = with maintainers; [ mic92 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flask-limiter/default.nix b/nixpkgs/pkgs/development/python-modules/flask-limiter/default.nix
new file mode 100644
index 00000000000..a60c5a993ea
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flask-limiter/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchPypi, buildPythonPackage, flask, limits }:
+
+buildPythonPackage rec {
+ pname = "Flask-Limiter";
+ version = "1.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1f0diannnc6rc0ngsh222lws3qf89wxm0aschaxxvwjvybf9iklc";
+ };
+
+ propagatedBuildInputs = [ flask limits ];
+
+ meta = with stdenv.lib; {
+ description = "Rate limiting for flask applications";
+ homepage = https://flask-limiter.readthedocs.org/;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flask-login/default.nix b/nixpkgs/pkgs/development/python-modules/flask-login/default.nix
new file mode 100644
index 00000000000..d466a78a681
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flask-login/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, buildPythonPackage, fetchPypi, pythonAtLeast
+, flask, blinker, nose, mock, semantic-version }:
+
+buildPythonPackage rec {
+ pname = "Flask-Login";
+ version = "0.4.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1v2j8zd558xfmgn3rfbw0xz4vizjcnk8kqw52q4f4d9ygfnc25f8";
+ };
+
+ checkInputs = [ nose mock semantic-version ];
+ propagatedBuildInputs = [ flask blinker ];
+
+ checkPhase = "nosetests -d";
+
+ doCheck = pythonAtLeast "3.3";
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/maxcountryman/flask-login;
+ description = "User session management for Flask";
+ license = licenses.mit;
+ platforms = platforms.all;
+ maintainers = with maintainers; [ abbradar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flask-mail/default.nix b/nixpkgs/pkgs/development/python-modules/flask-mail/default.nix
new file mode 100644
index 00000000000..a1732d3ccbf
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flask-mail/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildPythonPackage, fetchPypi,
+ blinker, flask, mock, nose, speaklater
+}:
+
+buildPythonPackage rec {
+ pname = "Flask-Mail";
+ version = "0.9.1";
+
+ meta = {
+ description = "Flask-Mail is a Flask extension providing simple email sending capabilities.";
+ homepage = "https://pypi.python.org/pypi/Flask-Mail";
+ license = lib.licenses.bsd3;
+ };
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0hazjc351s3gfbhk975j8k65cg4gf31yq404yfy0gx0bjjdfpr92";
+ };
+
+ propagatedBuildInputs = [ blinker flask ];
+ buildInputs = [ blinker mock nose speaklater ];
+
+ doCheck = false;
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flask-marshmallow/default.nix b/nixpkgs/pkgs/development/python-modules/flask-marshmallow/default.nix
new file mode 100644
index 00000000000..b03f3307d08
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flask-marshmallow/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildPythonPackage, fetchPypi,
+ flask, six, marshmallow
+}:
+
+buildPythonPackage rec {
+ pname = "flask-marshmallow";
+ version = "0.10.1";
+
+ meta = {
+ homepage = "https://github.com/marshmallow-code/flask-marshmallow";
+ description = "Flask + marshmallow for beautiful APIs";
+ license = lib.licenses.mit;
+ };
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0hbp0lrdlzpcdjv1jn2hk98z9gg624nswcm0hi48k4rk28x9xsb9";
+ };
+
+ propagatedBuildInputs = [ flask marshmallow ];
+ buildInputs = [ six ];
+
+ doCheck = false;
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flask-migrate/default.nix b/nixpkgs/pkgs/development/python-modules/flask-migrate/default.nix
new file mode 100644
index 00000000000..d7fbec5715d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flask-migrate/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k, glibcLocales, flask, flask_sqlalchemy, flask_script, alembic }:
+
+with stdenv.lib;
+
+buildPythonPackage rec {
+ pname = "Flask-Migrate";
+ version = "2.5.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "00nm76w4xymsiih6hq8y46wp026v7zkzq15cx39hp929ba3z2vx9";
+ };
+
+ checkInputs = [ flask_script ] ++ optional isPy3k glibcLocales;
+ propagatedBuildInputs = [ flask flask_sqlalchemy alembic ];
+
+ # tests invoke the flask cli which uses click and therefore has py3k encoding troubles
+ preCheck = optionalString isPy3k ''
+ export LANG="en_US.UTF-8"
+ '';
+
+ meta = {
+ description = "SQLAlchemy database migrations for Flask applications using Alembic";
+ license = licenses.mit;
+ homepage = https://github.com/miguelgrinberg/Flask-Migrate;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flask-paginate/default.nix b/nixpkgs/pkgs/development/python-modules/flask-paginate/default.nix
new file mode 100644
index 00000000000..52dd77c8391
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flask-paginate/default.nix
@@ -0,0 +1,20 @@
+{ lib, buildPythonPackage, fetchPypi, flask }:
+
+buildPythonPackage rec {
+ pname = "flask-paginate";
+ version = "0.5.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "15plwkmi6i7p85q2vgyvmn0l4c2h7pj4mmiziwghyyqbd1rc0dr2";
+ };
+
+ propagatedBuildInputs = [ flask ];
+
+ meta = with lib; {
+ homepage = https://github.com/lixxu/flask-paginate;
+ description = "Pagination support for Flask";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flask-principal/default.nix b/nixpkgs/pkgs/development/python-modules/flask-principal/default.nix
new file mode 100644
index 00000000000..cbdbd989211
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flask-principal/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildPythonPackage, fetchPypi, flask, blinker, nose }:
+
+buildPythonPackage rec {
+ pname = "Flask-Principal";
+ version = "0.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0lwlr5smz8vfm5h9a9i7da3q1c24xqc6vm9jdywdpgxfbi5i7mpm";
+ };
+
+ propagatedBuildInputs = [ flask blinker ];
+
+ checkInputs = [ nose ];
+
+ meta = with lib; {
+ homepage = http://packages.python.org/Flask-Principal/;
+ description = "Identity management for flask";
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ abbradar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flask-restful/default.nix b/nixpkgs/pkgs/development/python-modules/flask-restful/default.nix
new file mode 100644
index 00000000000..89cc47cbcfb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flask-restful/default.nix
@@ -0,0 +1,40 @@
+{ lib, buildPythonPackage, fetchPypi, fetchpatch, isPy3k
+, nose, mock, blinker
+, flask, six, pytz, aniso8601, pycrypto
+}:
+
+buildPythonPackage rec {
+ pname = "Flask-RESTful";
+ version = "0.3.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "01rlvl2iq074ciyn4schmjip7cyplkwkysbb8f610zil06am35ap";
+ };
+
+ patches = [
+ (fetchpatch {
+ url = https://github.com/flask-restful/flask-restful/commit/54979f0a49b2217babc53c5b65b5df10b6de8e05.patch;
+ sha256 = "11s6ag6l42g61ccg5jw9j1f26hwgjfa3sp890cbl5r4hy5ycpyr5";
+ })
+ (fetchpatch {
+ url = https://github.com/flask-restful/flask-restful/commit/f45e81a45ed03922fd225afe27006315811077e6.patch;
+ sha256 = "16avd369j5r08d1l23mwbba26zjwnmfqvfvnfz02am3gr5l6p3gl";
+ })
+ ];
+
+ postPatch = lib.optionalString isPy3k ''
+ # TypeError: Only byte strings can be passed to C code
+ rm tests/test_crypto.py tests/test_paging.py
+ '';
+
+ checkInputs = [ nose mock blinker ];
+
+ propagatedBuildInputs = [ flask six pytz aniso8601 pycrypto ];
+
+ meta = with lib; {
+ homepage = "https://flask-restful.readthedocs.io/";
+ description = "REST API building blocks for Flask";
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flask-restplus/default.nix b/nixpkgs/pkgs/development/python-modules/flask-restplus/default.nix
new file mode 100644
index 00000000000..f7f8360fa48
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flask-restplus/default.nix
@@ -0,0 +1,44 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, nose
+, blinker
+, tzlocal
+, mock
+, rednose
+, flask
+, six
+, jsonschema
+, pytz
+, aniso8601
+, flask-restful
+, isPy27
+, enum34
+}:
+
+buildPythonPackage rec {
+ pname = "flask-restplus";
+ version = "0.12.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "3fad697e1d91dfc13c078abcb86003f438a751c5a4ff41b84c9050199d2eab62";
+ };
+
+ checkInputs = [ nose blinker tzlocal mock rednose ];
+ propagatedBuildInputs = [ flask six jsonschema pytz aniso8601 flask-restful ]
+ ++ lib.optional isPy27 enum34;
+
+ # RuntimeError: Working outside of application context.
+ doCheck = false;
+
+ checkPhase = ''
+ nosetests
+ '';
+
+ meta = {
+ homepage = https://github.com/noirbizarre/flask-restplus;
+ description = "Fast, easy and documented API development with Flask";
+ license = lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flask-script/default.nix b/nixpkgs/pkgs/development/python-modules/flask-script/default.nix
new file mode 100644
index 00000000000..51ba7ce4d7c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flask-script/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildPythonPackage, fetchPypi, flask, pytest }:
+
+buildPythonPackage rec {
+ pname = "Flask-Script";
+ version = "2.0.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0r8w2v89nj6b9p91p495cga5m72a673l2wc0hp0zqk05j4yrc9b4";
+ };
+
+ propagatedBuildInputs = [ flask ];
+ checkInputs = [ pytest ];
+
+ # No tests in archive
+ doCheck = false;
+
+ meta = with lib; {
+ homepage = https://github.com/smurfix/flask-script;
+ description = "Scripting support for Flask";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ abbradar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flask-silk/default.nix b/nixpkgs/pkgs/development/python-modules/flask-silk/default.nix
new file mode 100644
index 00000000000..653e39b1740
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flask-silk/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, flask
+}:
+
+buildPythonPackage {
+ pname = "Flask-Silk";
+ version = "2018-06-28";
+
+ # master fixes flask import syntax and has no major changes
+ # new release requested: https://github.com/sublee/flask-silk/pull/6
+ src = fetchFromGitHub {
+ owner = "sublee";
+ repo = "flask-silk";
+ rev = "3a8166550f9a0ec52edae7bf31d9818c4c15c531";
+ sha256 = "0mplziqw52jfspas6vsm210lmxqqzgj0dxm8y0i3gpbyyykwcmh0";
+ };
+
+ propagatedBuildInputs = [
+ flask
+ ];
+
+ meta = with stdenv.lib; {
+ description = "Adds silk icons to your Flask application or module, or extension";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ timokau ];
+ homepage = https://github.com/sublee/flask-silk;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flask-socketio/default.nix b/nixpkgs/pkgs/development/python-modules/flask-socketio/default.nix
new file mode 100644
index 00000000000..b97fc2430be
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flask-socketio/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, flask
+, python-socketio
+, coverage
+}:
+
+buildPythonPackage rec {
+ pname = "Flask-SocketIO";
+ version = "3.2.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ee8e2954ec3ae0abf19f50fce5ec8b7b9ff937c5353c0a72c7e1cfb86df1195d";
+ };
+
+ propagatedBuildInputs = [
+ flask
+ python-socketio
+ ];
+
+ checkInputs = [ coverage ];
+ # tests only on github, but lates release there is not tagged
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Socket.IO integration for Flask applications";
+ homepage = https://github.com/miguelgrinberg/Flask-SocketIO/;
+ license = licenses.mit;
+ maintainers = [ maintainers.mic92 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flask-sqlalchemy/default.nix b/nixpkgs/pkgs/development/python-modules/flask-sqlalchemy/default.nix
new file mode 100644
index 00000000000..2ff84f2531b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flask-sqlalchemy/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchPypi, flask, mock, sqlalchemy, pytest }:
+
+buildPythonPackage rec {
+ pname = "Flask-SQLAlchemy";
+ version = "2.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0nnllf0ddbh9jlhngnyjj98lbxgxr1csaplllx0caw98syq0k5hc";
+ };
+
+ propagatedBuildInputs = [ flask sqlalchemy ];
+ checkInputs = [ mock pytest ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with stdenv.lib; {
+ description = "SQLAlchemy extension for Flask";
+ homepage = http://flask-sqlalchemy.pocoo.org/;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ gerschtli ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flask-swagger/default.nix b/nixpkgs/pkgs/development/python-modules/flask-swagger/default.nix
new file mode 100644
index 00000000000..c690e4e64ae
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flask-swagger/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, flask, pyyaml }:
+
+buildPythonPackage rec {
+ version = "0.2.14";
+ pname = "flask-swagger";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b4085f5bc36df4c20b6548cd1413adc9cf35719b0f0695367cd542065145294d";
+ };
+
+ # No Tests
+ doCheck = false;
+
+ propagatedBuildInputs = [
+ flask
+ pyyaml
+ ];
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/gangverk/flask-swagger";
+ license = licenses.mit;
+ description = "Extract swagger specs from your flask project";
+ maintainers = with maintainers; [ vanschelven ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flask-testing/default.nix b/nixpkgs/pkgs/development/python-modules/flask-testing/default.nix
new file mode 100644
index 00000000000..04c083a3263
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flask-testing/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchPypi, buildPythonPackage, pythonOlder
+, flask, blinker, twill }:
+
+with stdenv.lib;
+
+buildPythonPackage rec {
+ pname = "Flask-Testing";
+ version = "0.7.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "dc076623d7d850653a018cb64f500948334c8aeb6b10a5a842bf1bcfb98122bc";
+ };
+
+ postPatch = ''
+ sed -i -e 's/twill==0.9.1/twill/' setup.py
+ '';
+
+ buildInputs = optionals (pythonOlder "3.0") [ twill ];
+ propagatedBuildInputs = [ flask blinker ];
+
+ meta = {
+ description = "Flask unittest integration.";
+ homepage = https://pythonhosted.org/Flask-Testing/;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.mic92 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flask-wtf/default.nix b/nixpkgs/pkgs/development/python-modules/flask-wtf/default.nix
new file mode 100644
index 00000000000..96828dcdce2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flask-wtf/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchPypi, buildPythonPackage, flask, wtforms, nose }:
+
+buildPythonPackage rec {
+ pname = "Flask-WTF";
+ version = "0.14.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0dncc5as2k61b28k8kal5yh3prmv7zya1jz7kvci7ximzmfda52x";
+ };
+
+ propagatedBuildInputs = [ flask wtforms nose ];
+
+ doCheck = false; # requires external service
+
+ meta = with stdenv.lib; {
+ description = "Simple integration of Flask and WTForms.";
+ license = licenses.bsd3;
+ maintainers = [ maintainers.mic92 ];
+ homepage = https://github.com/lepture/flask-wtf/;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flask/default.nix b/nixpkgs/pkgs/development/python-modules/flask/default.nix
new file mode 100644
index 00000000000..bc7962d4108
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flask/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, itsdangerous, click, werkzeug, jinja2, pytest }:
+
+buildPythonPackage rec {
+ version = "1.0.4";
+ pname = "Flask";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ed1330220a321138de53ec7c534c3d90cf2f7af938c7880fc3da13aa46bf870f";
+ };
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ itsdangerous click werkzeug jinja2 ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ # Tests require extra dependencies
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = http://flask.pocoo.org/;
+ description = "A microframework based on Werkzeug, Jinja 2, and good intentions";
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flaskbabel/default.nix b/nixpkgs/pkgs/development/python-modules/flaskbabel/default.nix
new file mode 100644
index 00000000000..d3a46143e6e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flaskbabel/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, flask
+, jinja2
+, speaklater
+, Babel
+, pytz
+}:
+
+buildPythonPackage rec {
+ pname = "Flask-Babel";
+ version = "0.12.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "316ad183e42003f3922957fa643d0a1e8e34a0f0301a88c3a8f605bc37ba5c86";
+ };
+
+ propagatedBuildInputs = [ flask jinja2 speaklater Babel pytz ];
+
+ meta = with stdenv.lib; {
+ description = "Adds i18n/l10n support to Flask applications";
+ homepage = https://github.com/mitsuhiko/flask-babel;
+ license = licenses.bsd0;
+ maintainers = with maintainers; [ matejc ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flexmock/default.nix b/nixpkgs/pkgs/development/python-modules/flexmock/default.nix
new file mode 100644
index 00000000000..e4da4ce7926
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flexmock/default.nix
@@ -0,0 +1,26 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "flexmock";
+ version = "0.10.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0b6qw3grhgx58kxlkj7mdma7xdvlj02zabvcf7w2qifnfjwwwcsh";
+ };
+
+ checkInputs = [ pytest ];
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with lib; {
+ description = "flexmock is a testing library for Python that makes it easy to create mocks,stubs and fakes.";
+ homepage = https://flexmock.readthedocs.org;
+ license = licenses.bsdOriginal;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/flickrapi/default.nix b/nixpkgs/pkgs/development/python-modules/flickrapi/default.nix
new file mode 100644
index 00000000000..88dfff3aa8f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flickrapi/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, requests
+, requests_toolbelt
+, requests_oauthlib
+, pytest
+, pytestrunner
+, pytestcov
+, responses
+}:
+
+buildPythonPackage rec {
+ pname = "flickrapi";
+ version = "2.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "03g2z21k6nhxgwysjrgnxj9m1yg25mnnkr10gpyfhfkd9w77pcpz";
+ };
+
+ propagatedBuildInputs = [ requests requests_toolbelt requests_oauthlib ];
+
+ checkInputs = [ pytest pytestrunner pytestcov responses ];
+ doCheck = false; # Otherwise:
+ # ========================= no tests ran in 0.01 seconds =========================
+ # builder for '/nix/store/c8a58v6aa18zci08q2l53s12ywn8jqhq-python3.6-flickrapi-2.4.0.drv' failed with exit code 5
+
+ meta = {
+ description = "A Python interface to the Flickr API";
+ homepage = https://stuvel.eu/flickrapi;
+ license = lib.licenses.psfl;
+ maintainers = with lib.maintainers; [ obadz ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flit/default.nix b/nixpkgs/pkgs/development/python-modules/flit/default.nix
new file mode 100644
index 00000000000..64decd9c41c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flit/default.nix
@@ -0,0 +1,48 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, docutils
+, requests
+, requests_download
+, zipfile36
+, pythonOlder
+, pytest
+, testpath
+, responses
+, pytoml
+}:
+
+# Flit is actually an application to build universal wheels.
+# It requires Python 3 and should eventually be moved outside of
+# python-packages.nix. When it will be used to build wheels,
+# care should be taken that there is no mingling of PYTHONPATH.
+
+buildPythonPackage rec {
+ pname = "flit";
+ version = "1.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6f6f0fb83c51ffa3a150fa41b5ac118df9ea4a87c2c06dff4ebf9adbe7b52b36";
+ };
+
+ disabled = !isPy3k;
+ propagatedBuildInputs = [ docutils requests requests_download pytoml ]
+ ++ lib.optional (pythonOlder "3.6") zipfile36;
+
+ checkInputs = [ pytest testpath responses ];
+
+ # Disable test that needs some ini file.
+ # Disable test that wants hg
+ checkPhase = ''
+ HOME=$(mktemp -d) pytest -k "not test_invalid_classifier and not test_build_sdist"
+ '';
+
+ meta = {
+ description = "A simple packaging tool for simple packages";
+ homepage = https://github.com/takluyver/flit;
+ license = lib.licenses.bsd3;
+ maintainers = [ lib.maintainers.fridh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flowlogs_reader/default.nix b/nixpkgs/pkgs/development/python-modules/flowlogs_reader/default.nix
new file mode 100644
index 00000000000..96073556ea4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flowlogs_reader/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, botocore
+, boto3
+, docutils
+, unittest2
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "flowlogs_reader";
+ version = "1.1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "cd6344fdad097c38756772624922ee37452ef1e131213c7d0b5702bcf52a5b02";
+ };
+
+ propagatedBuildInputs = [ botocore boto3 docutils ];
+ buildInputs = [ unittest2 mock ];
+
+ meta = with stdenv.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;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fluent-logger/default.nix b/nixpkgs/pkgs/development/python-modules/fluent-logger/default.nix
new file mode 100644
index 00000000000..8af0bce82f3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fluent-logger/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildPythonPackage, fetchPypi, msgpack }:
+
+buildPythonPackage rec {
+ pname = "fluent-logger";
+ version = "0.9.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "09vii0iclfq6vhz37xyybksq9m3538hkr7z40sz2dlpf2rkg98mg";
+ };
+
+ propagatedBuildInputs = [ msgpack ];
+
+ # Tests fail because absent in package
+ doCheck = false;
+
+ meta = with lib; {
+ description = "A structured logger for Fluentd (Python)";
+ homepage = https://github.com/fluent/fluent-logger-python;
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flufl/bounce.nix b/nixpkgs/pkgs/development/python-modules/flufl/bounce.nix
new file mode 100644
index 00000000000..0a2e8dff1b7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flufl/bounce.nix
@@ -0,0 +1,14 @@
+{ buildPythonPackage, fetchPypi, atpublic, zope_interface, nose2 }:
+
+buildPythonPackage rec {
+ pname = "flufl.bounce";
+ version = "3.0";
+
+ buildInputs = [ nose2 ];
+ propagatedBuildInputs = [ atpublic zope_interface ];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0k5kjqa3x6gvwwxyzb2vwi1g1i6asm1zw5fivylxz3d583y4kid2";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flufl/i18n.nix b/nixpkgs/pkgs/development/python-modules/flufl/i18n.nix
new file mode 100644
index 00000000000..6e8d77bf4f8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flufl/i18n.nix
@@ -0,0 +1,13 @@
+{ buildPythonPackage, fetchPypi, atpublic }:
+
+buildPythonPackage rec {
+ pname = "flufl.i18n";
+ version = "2.0.2";
+
+ propagatedBuildInputs = [ atpublic ];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1csgds59nx0ann9v2alqr69lakp1cnc1ikmbgn96l6n23js7c2ah";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flufl/lock.nix b/nixpkgs/pkgs/development/python-modules/flufl/lock.nix
new file mode 100644
index 00000000000..1be5d9a7c4c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flufl/lock.nix
@@ -0,0 +1,13 @@
+{ buildPythonPackage, fetchPypi, atpublic }:
+
+buildPythonPackage rec {
+ pname = "flufl.lock";
+ version = "3.2";
+
+ propagatedBuildInputs = [ atpublic ];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0nzzd6l30ff6cwsrlrb94xzfja4wkyrqv3ydc6cz0hdbr766mmm8";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flup/default.nix b/nixpkgs/pkgs/development/python-modules/flup/default.nix
new file mode 100644
index 00000000000..8256f5a1063
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flup/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, isPy3k
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "flup";
+ version = "1.0.3";
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5eb09f26eb0751f8380d8ac43d1dfb20e1d42eca0fa45ea9289fa532a79cd159";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = "http://trac.saddi.com/flup";
+ description = "FastCGI Python module set";
+ license = licenses.bsd0;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fn/default.nix b/nixpkgs/pkgs/development/python-modules/fn/default.nix
new file mode 100644
index 00000000000..550c4a71101
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fn/default.nix
@@ -0,0 +1,20 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "fn";
+ version = "0.4.3";
+
+ meta = {
+ description = ''
+ Functional programming in Python: implementation of missing
+ features to enjoy FP
+ '';
+ homepage = https://github.com/kachayev/fn.py;
+ license = lib.licenses.asl20;
+ };
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1nmsjmn8jb4gp22ksx0j0hhdf4y0zm8rjykyy2i6flzimg6q1kgq";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/folium/default.nix b/nixpkgs/pkgs/development/python-modules/folium/default.nix
new file mode 100644
index 00000000000..c89bfbfd524
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/folium/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, pytest
+, numpy
+, nbconvert
+, pandas
+, mock
+, jinja2
+, branca
+, requests
+}:
+
+buildPythonPackage rec {
+ pname = "folium";
+ version = "0.10.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "18fzxijsgrb95r0a8anc9ba5ijyw3nlnv3rpavfbkqa5v878x84f";
+ };
+
+ disabled = pythonOlder "3.5";
+
+ checkInputs = [ pytest nbconvert pandas mock ];
+ propagatedBuildInputs = [ jinja2 branca requests numpy ];
+
+ # No tests in archive
+ doCheck = false;
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = {
+ description = "Make beautiful maps with Leaflet.js & Python";
+ homepage = https://github.com/python-visualization/folium;
+ license = with lib.licenses; [ mit ];
+ maintainers = with lib.maintainers; [ fridh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fonttools/default.nix b/nixpkgs/pkgs/development/python-modules/fonttools/default.nix
new file mode 100644
index 00000000000..4e83955db55
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fonttools/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, numpy
+, pytest
+, pytestrunner
+, glibcLocales
+}:
+
+buildPythonPackage rec {
+ pname = "fonttools";
+ version = "3.42.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0w0ncs61821bnc2smfllnhfw5b8fwz972yqcgb64lr5qiwxkj2y0";
+ extension = "zip";
+ };
+
+ buildInputs = [
+ numpy
+ ];
+
+ checkInputs = [
+ pytest
+ pytestrunner
+ glibcLocales
+ ];
+
+ preCheck = ''
+ export LC_ALL="en_US.UTF-8"
+ '';
+
+ meta = {
+ homepage = https://github.com/fonttools/fonttools;
+ description = "A library to manipulate font files from Python";
+ license = lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/foolscap/default.nix b/nixpkgs/pkgs/development/python-modules/foolscap/default.nix
new file mode 100644
index 00000000000..8680ff2d2aa
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/foolscap/default.nix
@@ -0,0 +1,40 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, mock
+, twisted
+, pyopenssl
+, service-identity
+}:
+
+buildPythonPackage rec {
+ pname = "foolscap";
+ version = "0.13.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0sqxp4fshnpcv69c2j04v8c22pjak28iwscxv998h2s3054knxz2";
+ };
+
+ propagatedBuildInputs = [ mock twisted pyopenssl service-identity ];
+
+ checkPhase = ''
+ # Either uncomment this, or remove this custom check phase entirely, if
+ # you wish to do battle with the foolscap tests. ~ C.
+ # trial foolscap
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = http://foolscap.lothar.com/;
+ description = "Foolscap, an RPC protocol for Python that follows the distributed object-capability model";
+ longDescription = ''
+ "Foolscap" is the name for the next-generation RPC protocol,
+ intended to replace Perspective Broker (part of Twisted).
+ Foolscap is a protocol to implement a distributed
+ object-capabilities model in Python.
+ '';
+ # See http://foolscap.lothar.com/trac/browser/LICENSE.
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/forbiddenfruit/default.nix b/nixpkgs/pkgs/development/python-modules/forbiddenfruit/default.nix
new file mode 100644
index 00000000000..534f2cd7bb7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/forbiddenfruit/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+}:
+
+buildPythonPackage rec {
+ version = "0.1.3";
+ pname = "forbiddenfruit";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1188a07cc24a9bd2c529dad06490b80a6fc88cde968af4d7861da81686b2cc8c";
+ };
+
+ checkInputs = [ nose ];
+
+ checkPhase = ''
+ find ./build -name '*.so' -exec mv {} tests/unit \;
+ nosetests
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Patch python built-in objects";
+ homepage = https://pypi.python.org/pypi/forbiddenfruit;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/foxdot/default.nix b/nixpkgs/pkgs/development/python-modules/foxdot/default.nix
new file mode 100644
index 00000000000..ed4f950e363
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/foxdot/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, fetchPypi, tkinter, supercollider }:
+
+buildPythonPackage rec {
+ pname = "FoxDot";
+ version = "0.8.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "147n2c9rwmrby8rr6xfxlh7mfm12lqk2a7v1gxlzhq1i2jj1j5h4";
+ };
+
+ propagatedBuildInputs = [ tkinter supercollider ];
+
+ # Requires a running SuperCollider instance
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Live coding music with SuperCollider";
+ homepage = https://foxdot.org/;
+ license = licenses.cc-by-sa-40;
+ maintainers = with maintainers; [ mrmebelman ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fpdf/default.nix b/nixpkgs/pkgs/development/python-modules/fpdf/default.nix
new file mode 100644
index 00000000000..a528244cb0f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fpdf/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "fpdf";
+ version = "1.7.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0yb73c2clv581sgak5jvlvkj4wy3jav6ms5ia8jx3rw969w40n0j";
+ };
+
+ # No tests available
+ doCheck = false;
+
+ meta = {
+ homepage = https://github.com/reingart/pyfpdf;
+ description = "Simple PDF generation for Python";
+ license = lib.licenses.lgpl3;
+ maintainers = with lib.maintainers; [ geistesk ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fpylll/default.nix b/nixpkgs/pkgs/development/python-modules/fpylll/default.nix
new file mode 100644
index 00000000000..a27e9494911
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fpylll/default.nix
@@ -0,0 +1,57 @@
+{ lib
+, fetchFromGitHub
+, buildPythonPackage
+, pkgconfig
+, gmp
+, pari
+, mpfr
+, fplll
+, cython
+, cysignals
+, numpy
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "fpylll";
+ version = "0.4.1dev";
+
+ src = fetchFromGitHub {
+ owner = "fplll";
+ repo = "fpylll";
+ rev = version;
+ sha256 = "01x2sqdv0sbjj4g4waj0hj4rcn4bq7h17442xaqwbznym9azmn9w";
+ };
+
+ buildInputs = [
+ gmp
+ pari
+ mpfr
+ fplll
+ ];
+
+ propagatedBuildInputs = [
+ cython
+ cysignals
+ numpy
+ ];
+
+ nativeBuildInputs = [
+ pkgconfig
+ ];
+
+ checkInputs = [
+ pytest
+ ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = {
+ description = "A Python interface for fplll";
+ homepage = https://github.com/fplll/fpylll;
+ maintainers = with lib.maintainers; [ timokau ];
+ license = lib.licenses.gpl2Plus;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/freezegun/default.nix b/nixpkgs/pkgs/development/python-modules/freezegun/default.nix
new file mode 100644
index 00000000000..3f0fd31d8a1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/freezegun/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, dateutil
+, six
+, mock
+, nose
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "freezegun";
+ version = "0.3.12";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2a4d9c8cd3c04a201e20c313caf8b6338f1cfa4cda43f46a94cc4a9fd13ea5e7";
+ };
+
+ propagatedBuildInputs = [ dateutil six ];
+ checkInputs = [ mock nose pytest ];
+
+ meta = with stdenv.lib; {
+ description = "FreezeGun: Let your Python tests travel through time";
+ homepage = "https://github.com/spulec/freezegun";
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fritzconnection/default.nix b/nixpkgs/pkgs/development/python-modules/fritzconnection/default.nix
new file mode 100644
index 00000000000..ced7d7bdcd4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fritzconnection/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchPypi, lxml, requests, tkinter }:
+
+buildPythonPackage rec {
+ pname = "fritzconnection";
+ version = "0.6.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "14g3sxprq65lxbgkf3rjgb1bjqnj2jc5p1swlq9sk9gwnl6ca3ds";
+ };
+
+ prePatch = ''
+ substituteInPlace fritzconnection/test.py \
+ --replace "from fritzconnection import" "from .fritzconnection import"
+ '';
+
+ propagatedBuildInputs = [ lxml requests tkinter ];
+
+ meta = with stdenv.lib; {
+ description = "Python-Tool to communicate with the AVM FritzBox using the TR-064 protocol";
+ homepage = https://bitbucket.org/kbr/fritzconnection;
+ license = licenses.mit;
+ maintainers = with maintainers; [ dotlambda ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/frozendict/default.nix b/nixpkgs/pkgs/development/python-modules/frozendict/default.nix
new file mode 100644
index 00000000000..94d42206d63
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/frozendict/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "frozendict";
+ version = "1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0ibf1wipidz57giy53dh7mh68f2hz38x8f4wdq88mvxj5pr7jhbp";
+ };
+
+ # frozendict does not come with tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/slezica/python-frozendict;
+ description = "An immutable dictionary";
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fs-s3fs/default.nix b/nixpkgs/pkgs/development/python-modules/fs-s3fs/default.nix
new file mode 100644
index 00000000000..26277161b0b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fs-s3fs/default.nix
@@ -0,0 +1,23 @@
+{ buildPythonPackage, fetchPypi, lib, fs, six, boto3 }:
+
+buildPythonPackage rec {
+ pname = "fs-s3fs";
+ version = "1.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "49bfa4572bb11e37324dd43be935ab99376259eff652365aef0e4a747bb11418";
+ };
+
+ propagatedBuildInputs = [ fs six boto3 ];
+
+ # tests try to integrate an s3 bucket which can't be tested properly in an isolated environment.
+ doCheck = false;
+
+ meta = with lib; {
+ homepage = https://pypi.org/project/fs-s3fs/;
+ license = licenses.mit;
+ description = "Amazon S3 filesystem for PyFilesystem2";
+ maintainers = with maintainers; [ ma27 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fs/default.nix b/nixpkgs/pkgs/development/python-modules/fs/default.nix
new file mode 100644
index 00000000000..cbbb8886846
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fs/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, glibcLocales
+, buildPythonPackage
+, fetchPypi
+, six
+, nose
+, appdirs
+, scandir
+, backports_os
+, typing
+, pytz
+, enum34
+, pyftpdlib
+, psutil
+, mock
+, pythonAtLeast
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "fs";
+ version = "2.4.8";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5e19251e939b10d50e4b58b0cf2862851794abcf4aa4387b67c69dd61e97b3dc";
+ };
+
+ buildInputs = [ glibcLocales ];
+ checkInputs = [ nose pyftpdlib mock psutil ];
+ propagatedBuildInputs = [ six appdirs pytz ]
+ ++ lib.optionals (!isPy3k) [ backports_os ]
+ ++ lib.optionals (!pythonAtLeast "3.6") [ typing ]
+ ++ lib.optionals (!pythonAtLeast "3.5") [ scandir ]
+ ++ lib.optionals (!pythonAtLeast "3.5") [ enum34 ];
+
+ LC_ALL="en_US.utf-8";
+
+ checkPhase = ''
+ HOME=$(mktemp -d) nosetests tests []
+ '';
+
+ meta = with lib; {
+ description = "Filesystem abstraction";
+ homepage = https://github.com/PyFilesystem/pyfilesystem2;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ lovek323 ];
+ platforms = platforms.unix;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fsspec/default.nix b/nixpkgs/pkgs/development/python-modules/fsspec/default.nix
new file mode 100644
index 00000000000..8f4b9cf8c89
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fsspec/default.nix
@@ -0,0 +1,26 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+ pname = "fsspec";
+ version = "0.4.1";
+
+ disabled = pythonOlder "3.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0fvm1kdnnbf0pppv23mlfdqh220gcldmv72w2rdxp6ks1rcphzg3";
+ };
+
+ # no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "A specification that python filesystems should adhere to.";
+ homepage = "https://github.com/intake/filesystem_spec";
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ftfy/default.nix b/nixpkgs/pkgs/development/python-modules/ftfy/default.nix
new file mode 100644
index 00000000000..d7a9fd2a0b0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ftfy/default.nix
@@ -0,0 +1,46 @@
+{ stdenv
+, buildPythonPackage
+, isPy3k
+, fetchPypi
+, html5lib
+, wcwidth
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "ftfy";
+
+ version = "5.6";
+ # ftfy v5 only supports python3. Since at the moment the only
+ # packages that use ftfy are spacy and textacy which both support
+ # python 2 and 3, they have pinned ftfy to the v4 branch.
+ # I propose to stick to v4 until another package requires v5.
+ # At that point we can make a ftfy_v4 package.
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1k4vr5rfa62yafwpmb4827n50pwb79if0vhg1y4yqbb0bv20jxbd";
+ };
+
+ propagatedBuildInputs = [
+ html5lib
+ wcwidth
+ ];
+
+ checkInputs = [
+ pytest
+ ];
+
+ # We suffix PATH like this because the tests want the ftfy executable
+ checkPhase = ''
+ PATH=$out/bin:$PATH pytest
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Given Unicode text, make its representation consistent and possibly less broken";
+ homepage = https://github.com/LuminosoInsight/python-ftfy;
+ license = licenses.mit;
+ maintainers = with maintainers; [ sdll aborsu ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ftputil/default.nix b/nixpkgs/pkgs/development/python-modules/ftputil/default.nix
new file mode 100644
index 00000000000..d3d338a2c8d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ftputil/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildPythonPackage, fetchPypi, pytest }:
+
+buildPythonPackage rec {
+ version = "3.4";
+ pname = "ftputil";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "374b01e174079e91babe2a462fbd6f6c00dbfbfa299dec04239ca4229fbf8762";
+ };
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ touch Makefile
+ # Disable tests that require network access or access /home
+ py.test test \
+ -k "not test_public_servers and not test_real_ftp \
+ and not test_set_parser and not test_repr"
+ '';
+
+ 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"
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fudge/default.nix b/nixpkgs/pkgs/development/python-modules/fudge/default.nix
new file mode 100644
index 00000000000..de45a1404f5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fudge/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, 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 stdenv.lib; {
+ homepage = https://github.com/fudge-py/fudge;
+ description = "Replace real objects with fakes (mocks, stubs, etc) while testing";
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/funcparserlib/default.nix b/nixpkgs/pkgs/development/python-modules/funcparserlib/default.nix
new file mode 100644
index 00000000000..6c3f5f6d018
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/funcparserlib/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "funcparserlib";
+ version = "0.3.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b7992eac1a3eb97b3d91faa342bfda0729e990bd8a43774c1592c091e563c91d";
+ };
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover
+ '';
+
+ # Tests are Python 2.x only judging from SyntaxError
+ doCheck = !(isPy3k);
+
+ meta = with stdenv.lib; {
+ description = "Recursive descent parsing library based on functional combinators";
+ homepage = https://code.google.com/p/funcparserlib/;
+ license = licenses.mit;
+ platforms = platforms.unix;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/funcsigs/default.nix b/nixpkgs/pkgs/development/python-modules/funcsigs/default.nix
new file mode 100644
index 00000000000..5a4701df9c3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/funcsigs/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, isPyPy, isPy3k, unittest2
+}:
+
+buildPythonPackage rec {
+ pname = "funcsigs";
+ version = "1.0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0l4g5818ffyfmfs1a924811azhjj8ax9xd1cffr1mzd3ycn0zfx7";
+ };
+
+ buildInputs = [ unittest2 ];
+
+ # https://github.com/testing-cabal/funcsigs/issues/10
+ patches = stdenv.lib.optional (isPyPy && isPy3k) [ ./fix-pypy3-tests.patch ];
+
+ meta = with stdenv.lib; {
+ description = "Python function signatures from PEP362 for Python 2.6, 2.7 and 3.2+";
+ homepage = https://github.com/aliles/funcsigs;
+ maintainers = with maintainers; [ ];
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/funcsigs/fix-pypy3-tests.patch b/nixpkgs/pkgs/development/python-modules/funcsigs/fix-pypy3-tests.patch
new file mode 100644
index 00000000000..f4ecec3b613
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/funcsigs/fix-pypy3-tests.patch
@@ -0,0 +1,94 @@
+diff --git a/tests/test_inspect.py b/tests/test_inspect.py
+index 98d6592..3a2a1f2 100644
+--- a/tests/test_inspect.py
++++ b/tests/test_inspect.py
+@@ -8,6 +8,7 @@ import unittest2 as unittest
+
+ import funcsigs as inspect
+
++import platform
+
+ class TestSignatureObject(unittest.TestCase):
+ @staticmethod
+@@ -409,7 +410,7 @@ def test_signature_on_decorated(self):
+ Ellipsis))
+ """)
+
+- if sys.version_info[0] > 2:
++ if sys.version_info[0] > 2 and platform.python_implementation() != "PyPy":
+ exec("""
+ def test_signature_on_class(self):
+ class C:
+@@ -493,41 +494,44 @@ def test_signature_on_class(self):
+ Ellipsis))
+ """)
+
+- def test_signature_on_callable_objects(self):
+- class Foo(object):
+- def __call__(self, a):
+- pass
++ if platform.python_implementation() != "PyPy":
++ exec("""
++def test_signature_on_callable_objects(self):
++ class Foo(object):
++ def __call__(self, a):
++ pass
+
+- self.assertEqual(self.signature(Foo()),
+- ((('a', Ellipsis, Ellipsis, "positional_or_keyword"),),
+- Ellipsis))
++ self.assertEqual(self.signature(Foo()),
++ ((('a', Ellipsis, Ellipsis, "positional_or_keyword"),),
++ Ellipsis))
+
+- class Spam(object):
+- pass
+- with self.assertRaisesRegex(TypeError, "is not a callable object"):
+- inspect.signature(Spam())
++ class Spam(object):
++ pass
++ with self.assertRaisesRegex(TypeError, "is not a callable object"):
++ inspect.signature(Spam())
+
+- class Bar(Spam, Foo):
+- pass
++ class Bar(Spam, Foo):
++ pass
+
+- self.assertEqual(self.signature(Bar()),
+- ((('a', Ellipsis, Ellipsis, "positional_or_keyword"),),
+- Ellipsis))
++ self.assertEqual(self.signature(Bar()),
++ ((('a', Ellipsis, Ellipsis, "positional_or_keyword"),),
++ Ellipsis))
+
+- class ToFail(object):
+- __call__ = type
+- with self.assertRaisesRegex(ValueError, "not supported by signature"):
+- inspect.signature(ToFail())
++ class ToFail(object):
++ __call__ = type
++ with self.assertRaisesRegex(ValueError, "not supported by signature"):
++ inspect.signature(ToFail())
+
+- if sys.version_info[0] < 3:
+- return
++ if sys.version_info[0] < 3:
++ return
+
+- class Wrapped(object):
+- pass
+- Wrapped.__wrapped__ = lambda a: None
+- self.assertEqual(self.signature(Wrapped),
+- ((('a', Ellipsis, Ellipsis, "positional_or_keyword"),),
+- Ellipsis))
++ class Wrapped(object):
++ pass
++ Wrapped.__wrapped__ = lambda a: None
++ self.assertEqual(self.signature(Wrapped),
++ ((('a', Ellipsis, Ellipsis, "positional_or_keyword"),),
++ Ellipsis))
++""")
+
+ def test_signature_on_lambdas(self):
+ self.assertEqual(self.signature((lambda a=10: a)),
diff --git a/nixpkgs/pkgs/development/python-modules/functools32/default.nix b/nixpkgs/pkgs/development/python-modules/functools32/default.nix
new file mode 100644
index 00000000000..fea79db3d05
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/functools32/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+}:
+
+if isPy3k then null else buildPythonPackage rec {
+ pname = "functools32";
+ version = "3.2.3-2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0v8ya0b58x47wp216n1zamimv4iw57cxz3xxhzix52jkw3xks9gn";
+ };
+
+ meta = with stdenv.lib; {
+ description = "This is a backport of the functools standard library module from";
+ homepage = "https://github.com/MiCHiLU/python-functools32";
+ license = licenses.psfl;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/funcy/default.nix b/nixpkgs/pkgs/development/python-modules/funcy/default.nix
new file mode 100644
index 00000000000..0220fd1aeb9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/funcy/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "funcy";
+ version = "1.13";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1hxii7g4fn301vr8wg53jc1jkvbjlbaz1fbpgpn4362xcwzk73wi";
+ };
+
+ # No tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Collection of fancy functional tools focused on practicality";
+ homepage = "https://funcy.readthedocs.org/";
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fuse-python/default.nix b/nixpkgs/pkgs/development/python-modules/fuse-python/default.nix
new file mode 100644
index 00000000000..cf965dd244f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fuse-python/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchPypi, pkgconfig, fuse }:
+
+buildPythonPackage rec {
+ pname = "fuse-python";
+ version = "0.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0p1f01gah1y8skirrwsbxapz3g6drqihnkjh27b45ifg43h45g7x";
+ };
+
+ buildInputs = [ fuse ];
+ nativeBuildInputs = [ pkgconfig ];
+
+ # no tests in the Pypi archive
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Python bindings for FUSE";
+ homepage = https://github.com/libfuse/python-fuse;
+ license = licenses.lgpl21;
+ maintainers = with maintainers; [ psyanticy ];
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/fusepy/default.nix b/nixpkgs/pkgs/development/python-modules/fusepy/default.nix
new file mode 100644
index 00000000000..80ca5099f34
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fusepy/default.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pkgs
+}:
+
+buildPythonPackage rec {
+ pname = "fusepy";
+ version = "3.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1gg69qfi9pjcic3g98l8ya64rw2vc1bp8gsf76my6gglq8z7izvj";
+ };
+
+ propagatedBuildInputs = [ pkgs.fuse ];
+
+ # No tests included
+ doCheck = false;
+
+ patchPhase = ''
+ substituteInPlace fuse.py --replace \
+ "find_library('fuse')" "'${pkgs.fuse}/lib/libfuse.so'"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Simple ctypes bindings for FUSE";
+ longDescription = ''
+ Python module that provides a simple interface to FUSE and MacFUSE.
+ It's just one file and is implemented using ctypes.
+ '';
+ homepage = https://github.com/terencehonles/fusepy;
+ license = licenses.isc;
+ platforms = platforms.unix;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/future-fstrings/default.nix b/nixpkgs/pkgs/development/python-modules/future-fstrings/default.nix
new file mode 100644
index 00000000000..c9b49fee4cb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/future-fstrings/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildPythonPackage, fetchPypi, pythonOlder }:
+
+buildPythonPackage rec {
+ pname = "future-fstrings";
+ version = "1.0.0";
+
+ src = fetchPypi {
+ inherit version;
+ pname = "future_fstrings";
+ sha256 = "1pra33in6rinrcs5wvdb1rbxmx223j93ahdwhzwgf7wyfsnjda98";
+ };
+
+ # No tests included in Pypi archive
+ doCheck = false;
+
+ meta = with lib; {
+ homepage = https://github.com/asottile/future-fstrings;
+ description = "A backport of fstrings to python<3.6";
+ license = licenses.mit;
+ maintainers = with maintainers; [ nyanloutre ];
+ broken = pythonOlder "3.6"; # dependency tokenize-rt not packaged
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/future/default.nix b/nixpkgs/pkgs/development/python-modules/future/default.nix
new file mode 100644
index 00000000000..ecaa1c08b2c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/future/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "future";
+ version = "0.17.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "67045236dcfd6816dc439556d009594abf643e5eb48992e36beac09c2ca659b8";
+ };
+
+ doCheck = false;
+
+ meta = {
+ description = "Clean single-source support for Python 3 and 2";
+ longDescription = ''
+ python-future is the missing compatibility layer between Python 2 and
+ Python 3. It allows you to use a single, clean Python 3.x-compatible
+ codebase to support both Python 2 and Python 3 with minimal overhead.
+
+ It provides future and past packages with backports and forward ports
+ of features from Python 3 and 2. It also comes with futurize and
+ pasteurize, customized 2to3-based scripts that helps you to convert
+ either Py2 or Py3 code easily to support both Python 2 and 3 in a
+ single clean Py3-style codebase, module by module.
+ '';
+ homepage = https://python-future.org;
+ downloadPage = https://github.com/PythonCharmers/python-future/releases;
+ license = with lib.licenses; [ mit ];
+ maintainers = with lib.maintainers; [ prikhi ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/futures/default.nix b/nixpkgs/pkgs/development/python-modules/futures/default.nix
new file mode 100644
index 00000000000..e7397950643
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/futures/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k, python, stdenv }:
+
+buildPythonPackage rec {
+ pname = "futures";
+ version = "3.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "9ec02aa7d674acb8618afb127e27fde7fc68994c0437ad759fa094a574adb265";
+ };
+
+ # 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/nixpkgs/pkgs/development/python-modules/fuzzywuzzy/default.nix b/nixpkgs/pkgs/development/python-modules/fuzzywuzzy/default.nix
new file mode 100644
index 00000000000..7091799deca
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fuzzywuzzy/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi, python-Levenshtein, pycodestyle, hypothesis, pytest }:
+
+buildPythonPackage rec {
+ pname = "fuzzywuzzy";
+ version = "0.17.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6f49de47db00e1c71d40ad16da42284ac357936fa9b66bea1df63fed07122d62";
+ };
+
+ propagatedBuildInputs = [ python-Levenshtein ];
+ checkInputs = [ pycodestyle hypothesis pytest ];
+
+ meta = with stdenv.lib; {
+ description = "Fuzzy string matching for Python";
+ homepage = https://github.com/seatgeek/fuzzywuzzy;
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ earvstedt ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fx2/default.nix b/nixpkgs/pkgs/development/python-modules/fx2/default.nix
new file mode 100644
index 00000000000..fa5edc1077c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fx2/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, buildPythonPackage
+, python
+, fetchFromGitHub
+, sdcc
+, libusb1
+, crcmod
+}:
+
+buildPythonPackage {
+ pname = "fx2";
+ version = "unstable-2019-08-27";
+
+ src = fetchFromGitHub {
+ owner = "whitequark";
+ repo = "libfx2";
+ rev = "dd1e42c7b46ff410dbb18beab46111bb5491400c";
+ sha256 = "0xvlmx6ym0ylrvnlqzf18d475wa0mfci7wkdbv30gl3hgdhsppjz";
+ };
+
+ nativeBuildInputs = [ sdcc ];
+
+ propagatedBuildInputs = [ libusb1 crcmod ];
+
+ preBuild = ''
+ cd software
+ ${python.pythonForBuild.interpreter} setup.py build_ext
+ '';
+
+ preInstall = ''
+ mkdir -p $out/share/libfx2
+ cp -R ../firmware/library/{.stamp,lib,include,fx2{rules,conf}.mk} \
+ $out/share/libfx2
+ '';
+
+ # installCheckPhase tries to run build_ext again and there are no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Chip support package for Cypress EZ-USB FX2 series microcontrollers";
+ homepage = https://github.com/whitequark/libfx2;
+ license = licenses.bsd0;
+ maintainers = with maintainers; [ emily ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gast/default.nix b/nixpkgs/pkgs/development/python-modules/gast/default.nix
new file mode 100644
index 00000000000..a85f78dccb2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gast/default.nix
@@ -0,0 +1,16 @@
+{ stdenv, fetchPypi, buildPythonPackage, astunparse }:
+
+buildPythonPackage rec {
+ pname = "gast";
+ version = "0.2.2";
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1w5dzdb3gpcfmd2s0b93d8gff40a1s41rv31458z14inb3s9v4zy";
+ };
+ checkInputs = [ astunparse ] ;
+ meta = with stdenv.lib; {
+ description = "GAST provides a compatibility layer between the AST of various Python versions, as produced by ast.parse from the standard ast module.";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ jyp ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gateone/default.nix b/nixpkgs/pkgs/development/python-modules/gateone/default.nix
new file mode 100644
index 00000000000..f9ad118673a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gateone/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, buildPythonPackage
+, tornado
+, futures
+, html5lib
+, pkgs
+, isPy3k
+}:
+
+buildPythonPackage {
+ name = "gateone-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 stdenv.lib; {
+ homepage = https://liftoffsoftware.com/;
+ description = "GateOne is a web-based terminal emulator and SSH client";
+ maintainers = with maintainers; [ tomberek ];
+ license = licenses.gpl3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gcovr/default.nix b/nixpkgs/pkgs/development/python-modules/gcovr/default.nix
new file mode 100644
index 00000000000..e6f45a2b4c6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gcovr/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, jinja2
+}:
+
+buildPythonPackage rec {
+ pname = "gcovr";
+ version = "4.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ca94c337f2d9a70db177ec4330534fad7b2b772beda625c1ec071fbcf1361e22";
+ };
+
+ propagatedBuildInputs = [
+ jinja2
+ ];
+
+ # There are no unit tests in the pypi tarball. Most of the unit tests on the
+ # github repository currently only work with gcc5, so we just disable them.
+ # See also: https://github.com/gcovr/gcovr/issues/206
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A Python script for summarizing gcov data";
+ license = licenses.bsd0;
+ homepage = https://www.gcovr.com/;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gdata/default.nix b/nixpkgs/pkgs/development/python-modules/gdata/default.nix
new file mode 100644
index 00000000000..dbf2911ce19
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gdata/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+}:
+
+buildPythonPackage rec {
+ pname = "gdata";
+ version = "2.0.18";
+
+ src = fetchurl {
+ url = "https://gdata-python-client.googlecode.com/files/${pname}-${version}.tar.gz";
+ sha256 = "1dpxl5hwyyqd71avpm5vkvw8fhlvf9liizmhrq9jphhrx0nx5rsn";
+ };
+
+ # Fails with "error: invalid command 'test'"
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://code.google.com/p/gdata-python-client/;
+ description = "Python client library for Google data APIs";
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gdrivefs/default.nix b/nixpkgs/pkgs/development/python-modules/gdrivefs/default.nix
new file mode 100644
index 00000000000..0b2d0fbc91d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gdrivefs/default.nix
@@ -0,0 +1,48 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, isPy3k
+, gipc
+, greenlet
+, httplib2
+, six
+, dateutil
+, fusepy
+, google_api_python_client
+}:
+
+buildPythonPackage rec {
+ version = "0.14.12";
+ pname = "gdrivefs";
+ disabled = isPy3k;
+
+ src = fetchurl {
+ url = "https://github.com/dsoprea/GDriveFS/archive/${version}.tar.gz";
+ sha256 = "0m45z77idy0bs5fqlz0y534fy28ikamrd321hmqsc3q7d39kqzv0";
+ };
+
+ buildInputs = [ gipc greenlet httplib2 six ];
+ propagatedBuildInputs = [ dateutil fusepy google_api_python_client ];
+
+ patchPhase = ''
+ substituteInPlace gdrivefs/resources/requirements.txt \
+ --replace "==" ">="
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Mount Google Drive as a local file system";
+ longDescription = ''
+ GDriveFS is a FUSE wrapper for Google Drive developed. Design goals:
+ - Thread for monitoring changes via "changes" functionality of API.
+ - Complete stat() implementation.
+ - Seamlessly work around duplicate-file allowances in Google Drive.
+ - Seamlessly manage file-type versatility in Google Drive
+ (Google Doc files do not have a particular format).
+ - Allow for the same file at multiple paths.
+ '';
+ homepage = https://github.com/dsoprea/GDriveFS;
+ license = licenses.gpl2;
+ platforms = platforms.unix;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/geeknote/default.nix b/nixpkgs/pkgs/development/python-modules/geeknote/default.nix
new file mode 100644
index 00000000000..c8ff60b318b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/geeknote/default.nix
@@ -0,0 +1,38 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, isPy27
+, thrift
+, beautifulsoup4
+, markdown2
+, sqlalchemy
+, html2text
+, evernote
+}:
+
+buildPythonPackage {
+ version = "2015-05-11";
+ pname = "geeknote";
+ disabled = ! isPy27;
+
+ src = fetchFromGitHub {
+ owner = "VitaliyRodnenko";
+ repo = "geeknote";
+ rev = "8489a87d044e164edb321ba9acca8d4631de3dca";
+ sha256 = "0l16v4xnyqnsf84b1pma0jmdyxvmfwcv3sm8slrv3zv7zpmcm3lf";
+ };
+
+ /* build with tests fails with "Can not create application dirictory :
+ /homeless-shelter/.geeknotebuilder". */
+ doCheck = false;
+
+ propagatedBuildInputs = [ thrift beautifulsoup4 markdown2 sqlalchemy html2text evernote ];
+
+ meta = with stdenv.lib; {
+ description = "Work with Evernote from command line";
+ homepage = http://www.geeknote.me;
+ license = licenses.gpl1;
+ maintainers = with maintainers; [ hbunke ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/genanki/default.nix b/nixpkgs/pkgs/development/python-modules/genanki/default.nix
new file mode 100644
index 00000000000..a39d3e58733
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/genanki/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k
+, cached-property, frozendict, pystache, pyyaml, pytest, pytestrunner
+}:
+
+buildPythonPackage rec {
+ pname = "genanki";
+ version = "0.6.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6d17761e06aca2d9acb588acfdce33fd3d05571338825760622c99fc7210f15a";
+ };
+
+ propagatedBuildInputs = [
+ pytestrunner
+ cached-property
+ frozendict
+ pystache
+ pyyaml
+ ];
+
+ checkInputs = [ pytest ];
+
+ disabled = !isPy3k;
+
+ # relies on upstream anki
+ doCheck = false;
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/kerrickstaley/genanki;
+ description = "Generate Anki decks programmatically";
+ license = licenses.mit;
+ maintainers = with maintainers; [ teto ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/genpy/default.nix b/nixpkgs/pkgs/development/python-modules/genpy/default.nix
new file mode 100644
index 00000000000..c8bbeefd6ac
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/genpy/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytools
+, numpy
+}:
+
+buildPythonPackage rec {
+ pname = "genpy";
+ version = "2016.1.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1c11726f1e8ace8bbdfc87816403c9a59f53a8c3d45c99187ae17c9725d87a91";
+ };
+
+ propagatedBuildInputs = [
+ pytools
+ numpy
+ ];
+
+ meta = with lib; {
+ description = "C/C++ source generation from an AST";
+ homepage = https://github.com/inducer/genpy;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/genshi/default.nix b/nixpkgs/pkgs/development/python-modules/genshi/default.nix
new file mode 100644
index 00000000000..c86fae5d0e9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/genshi/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, setuptools
+}:
+
+buildPythonPackage rec {
+ pname = "Genshi";
+ version = "0.7.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "7933c95151d7dd2124a2b4c8dd85bb6aec881ca17c0556da0b40e56434b313a0";
+ };
+
+ # FAIL: test_sanitize_remove_script_elem (genshi.filters.tests.html.HTMLSanitizerTestCase)
+ # FAIL: test_sanitize_remove_src_javascript (genshi.filters.tests.html.HTMLSanitizerTestCase)
+ doCheck = false;
+
+ buildInputs = [ setuptools ];
+
+ meta = with stdenv.lib; {
+ description = "Python components for parsing HTML, XML and other textual content";
+ longDescription = ''
+ Python library that provides an integrated set of components for
+ parsing, generating, and processing HTML, XML or other textual
+ content for output generation on the web.
+ '';
+ homepage = https://genshi.edgewall.org/;
+ license = licenses.bsd0;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gensim/default.nix b/nixpkgs/pkgs/development/python-modules/gensim/default.nix
new file mode 100644
index 00000000000..a717a0ef6e8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gensim/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, numpy
+, six
+, scipy
+, smart_open
+, scikitlearn, testfixtures, unittest2
+}:
+
+buildPythonPackage rec {
+ pname = "gensim";
+ version = "3.8.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0rjpmxcd4hphq41y7frg6by6gwjjmrdbnim8jvx951ps5gzyfpgc";
+ };
+
+ propagatedBuildInputs = [ smart_open numpy six scipy ];
+
+ checkInputs = [ scikitlearn testfixtures unittest2 ];
+
+ # Two tests fail.
+ #
+ # ERROR: testAddMorphemesToEmbeddings (gensim.test.test_varembed_wrapper.TestVarembed)
+ # ImportError: Could not import morfessor.
+ # This package is not in nix
+ #
+ # ERROR: testWmdistance (gensim.test.test_fasttext_wrapper.TestFastText)
+ # ImportError: Please install pyemd Python package to compute WMD.
+ # This package is not in nix
+ doCheck = false;
+
+ meta = {
+ description = "Topic-modelling library";
+ homepage = https://radimrehurek.com/gensim/;
+ license = lib.licenses.lgpl21;
+ maintainers = with lib.maintainers; [ jyp ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gentools/default.nix b/nixpkgs/pkgs/development/python-modules/gentools/default.nix
new file mode 100644
index 00000000000..57105f87a7c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gentools/default.nix
@@ -0,0 +1,31 @@
+{ buildPythonPackage, lib, fetchFromGitHub, pytest
+, typing, funcsigs, pythonOlder
+}:
+
+buildPythonPackage rec {
+ pname = "gentools";
+ version = "1.1.0";
+
+ # Pypi doesn't ship the tests, so we fetch directly from GitHub
+ src = fetchFromGitHub {
+ owner = "ariebovenberg";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "1sm6cqi7fv2k3pc68r7wvvjjz8y6cjmz8bvxgqfa4v4wxibwnwrl";
+ };
+
+ propagatedBuildInputs =
+ lib.optionals (pythonOlder "3.5") [ typing ] ++
+ lib.optionals (pythonOlder "3.4") [ funcsigs ];
+
+ checkInputs = [ pytest ];
+ checkPhase = "pytest";
+
+ meta = with lib; {
+ description = "Tools for generators, generator functions, and generator-based coroutines";
+ license = licenses.mit;
+ homepage = https://gentools.readthedocs.io/;
+ maintainers = with maintainers; [ mredaelli ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/genzshcomp/default.nix b/nixpkgs/pkgs/development/python-modules/genzshcomp/default.nix
new file mode 100644
index 00000000000..d7b73071b0c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/genzshcomp/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, setuptools
+}:
+
+buildPythonPackage rec {
+ pname = "genzshcomp";
+ version = "0.5.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d28ae62b1b2727f32dc7606bc58201b8c12894ad3d1d4fdb40e1f951e3ae8f85";
+ };
+
+ buildInputs = [ setuptools ];
+
+ meta = with stdenv.lib; {
+ description = "Automatically generated zsh completion function for Python's option parser modules";
+ homepage = https://bitbucket.org/hhatto/genzshcomp/;
+ license = licenses.bsd0;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/geoalchemy2/default.nix b/nixpkgs/pkgs/development/python-modules/geoalchemy2/default.nix
new file mode 100644
index 00000000000..250942a8488
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/geoalchemy2/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, sqlalchemy
+, shapely
+}:
+
+buildPythonPackage rec {
+ pname = "GeoAlchemy2";
+ version = "0.6.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1viq85fsb119w4lmxn2iacxf2w35b8cgzamlrb685z50pp1cdi2d";
+ };
+
+ propagatedBuildInputs = [ sqlalchemy shapely ];
+
+ meta = with stdenv.lib; {
+ homepage = http://geoalchemy.org/;
+ license = licenses.mit;
+ description = "Toolkit for working with spatial databases";
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/geoip2/default.nix b/nixpkgs/pkgs/development/python-modules/geoip2/default.nix
new file mode 100644
index 00000000000..97371d1b65a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/geoip2/default.nix
@@ -0,0 +1,29 @@
+{ buildPythonPackage, lib, fetchPypi, isPy27
+, ipaddress
+, maxminddb
+, mock
+, requests
+, requests-mock
+}:
+
+buildPythonPackage rec {
+ version = "2.9.0";
+ pname = "geoip2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1w7cay5q6zawjzivqbwz5cqx1qbdjw6kbriccb7l46p7b39fkzzp";
+ };
+
+ propagatedBuildInputs = [ requests maxminddb ]
+ ++ lib.optionals isPy27 [ ipaddress ];
+
+ checkInputs = [ requests-mock ];
+
+ meta = with lib; {
+ description = "MaxMind GeoIP2 API";
+ homepage = "https://www.maxmind.com/en/home";
+ license = licenses.apsl20;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/geojson/default.nix b/nixpkgs/pkgs/development/python-modules/geojson/default.nix
new file mode 100644
index 00000000000..a41cdada4be
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/geojson/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildPythonPackage, fetchPypi, glibcLocales }:
+
+buildPythonPackage rec {
+ pname = "geojson";
+ version = "2.5.0";
+
+ format = "wheel";
+
+ src = fetchPypi {
+ inherit pname version format;
+ sha256 = "1filqm050ixy53kdv81bd4n80vjvfapnmzizy7jg8a6pilv17gfc";
+ };
+
+ LC_ALL = "en_US.UTF-8";
+ checkInputs = [ glibcLocales ];
+
+ meta = {
+ homepage = https://github.com/frewsxcv/python-geojson;
+ description = "Python bindings and utilities for GeoJSON";
+ license = lib.licenses.bsd3;
+ maintainers = with lib.maintainers; [ geistesk ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/geopandas/default.nix b/nixpkgs/pkgs/development/python-modules/geopandas/default.nix
new file mode 100644
index 00000000000..de313dc1c7d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/geopandas/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub
+, pandas, shapely, fiona, descartes, pyproj
+, pytest, Rtree }:
+
+buildPythonPackage rec {
+ pname = "geopandas";
+ version = "0.5.1";
+
+ src = fetchFromGitHub {
+ owner = "geopandas";
+ repo = "geopandas";
+ rev = "v${version}";
+ sha256 = "1j665fpkyfib17z0hn3bg2j96pbkgd36yfif6jyia4yn6g76hlfg";
+ };
+
+ checkInputs = [ pytest Rtree ];
+
+ checkPhase = ''
+ py.test geopandas -m "not web"
+ '';
+
+ propagatedBuildInputs = [
+ pandas
+ shapely
+ fiona
+ descartes
+ pyproj
+ ];
+
+ meta = with stdenv.lib; {
+ description = "Python geospatial data analysis framework";
+ homepage = https://geopandas.org;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ knedlsepp ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/geopy/default.nix b/nixpkgs/pkgs/development/python-modules/geopy/default.nix
new file mode 100644
index 00000000000..9dbfeb7472c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/geopy/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy27
+, mock
+, tox
+, pylint
+}:
+
+buildPythonPackage rec {
+ pname = "geopy";
+ version = "1.20.0";
+ disabled = !isPy27;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "9419bc90ee6231590c4ae7acf1cf126cefbd0736942da7a6a1436946e80830e2";
+ };
+
+ doCheck = false; # too much
+
+ buildInputs = [ mock tox pylint ];
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/geopy/geopy";
+ description = "Python Geocoding Toolbox";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gevent-socketio/default.nix b/nixpkgs/pkgs/development/python-modules/gevent-socketio/default.nix
new file mode 100644
index 00000000000..e95519a346c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gevent-socketio/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, versiontools
+, gevent-websocket
+, mock
+, pytest
+, gevent
+}:
+
+buildPythonPackage rec {
+ pname = "gevent-socketio";
+ version = "0.3.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1zra86hg2l1jcpl9nsnqagy3nl3akws8bvrbpgdxk15x7ywllfak";
+ };
+
+ buildInputs = [ versiontools gevent-websocket mock pytest ];
+ propagatedBuildInputs = [ gevent ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/abourget/gevent-socketio;
+ description = "SocketIO server based on the Gevent pywsgi server, a Python network library";
+ license = licenses.bsd0;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gevent-websocket/default.nix b/nixpkgs/pkgs/development/python-modules/gevent-websocket/default.nix
new file mode 100644
index 00000000000..6c9df6b571b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gevent-websocket/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, gevent
+, gunicorn
+}:
+
+buildPythonPackage rec {
+ pname = "gevent-websocket";
+ version = "0.10.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1c2zv2rahp1gil3cj66hfsqgy0n35hz9fny3ywhr2319d0lz7bky";
+ };
+
+ propagatedBuildInputs = [ gevent gunicorn ];
+
+ meta = with stdenv.lib; {
+ homepage = https://www.gitlab.com/noppo/gevent-websocket;
+ description = "Websocket handler for the gevent pywsgi server, a Python network library";
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gevent/default.nix b/nixpkgs/pkgs/development/python-modules/gevent/default.nix
new file mode 100644
index 00000000000..a8caf650016
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gevent/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchPypi, buildPythonPackage, isPyPy, python, libev, greenlet }:
+
+buildPythonPackage rec {
+ pname = "gevent";
+ version = "1.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1eb7fa3b9bd9174dfe9c3b59b7a09b768ecd496debfc4976a9530a3e15c990d1";
+ };
+
+ buildInputs = [ libev ];
+ propagatedBuildInputs = stdenv.lib.optionals (!isPyPy) [ greenlet ];
+
+ checkPhase = ''
+ cd greentest
+ ${python.interpreter} testrunner.py
+ '';
+
+ # Bunch of failures.
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Coroutine-based networking library";
+ homepage = http://www.gevent.org/;
+ license = licenses.mit;
+ platforms = platforms.unix;
+ maintainers = with maintainers; [ bjornfor ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/geventhttpclient/default.nix b/nixpkgs/pkgs/development/python-modules/geventhttpclient/default.nix
new file mode 100644
index 00000000000..6a78d60544d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/geventhttpclient/default.nix
@@ -0,0 +1,36 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, gevent
+, certifi
+, six
+, backports_ssl_match_hostname
+}:
+
+buildPythonPackage rec {
+ pname = "geventhttpclient";
+ version = "1.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "bd87af8854f5fb05738916c8973671f7035568aec69b7c842887d6faf9c0a01d";
+ };
+
+ buildInputs = [ pytest ];
+ propagatedBuildInputs = [ gevent certifi six backports_ssl_match_hostname ];
+
+ # Several tests fail that require network
+ doCheck = false;
+ checkPhase = ''
+ py.test $out
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/gwik/geventhttpclient;
+ description = "HTTP client library for gevent";
+ license = licenses.mit;
+ maintainers = with maintainers; [ koral ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gflags/default.nix b/nixpkgs/pkgs/development/python-modules/gflags/default.nix
new file mode 100644
index 00000000000..9eb8e3b2d6c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gflags/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildPythonPackage, fetchPypi, six, pytest }:
+
+buildPythonPackage rec {
+ version = "3.1.2";
+ pname = "python-gflags";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "40ae131e899ef68e9e14aa53ca063839c34f6a168afe622217b5b875492a1ee2";
+ };
+
+ checkInputs = [ pytest ];
+
+ propagatedBuildInputs = [ six ];
+
+ checkPhase = ''
+ # clashes with our pythhon wrapper (which is in argv0)
+ # AssertionError: 'gflags._helpers_test' != 'nix_run_setup.py'
+ py.test -k 'not testGetCallingModule'
+ '';
+
+ meta = {
+ homepage = https://github.com/google/python-gflags;
+ description = "A module for command line handling, similar to Google's gflags for C++";
+ license = lib.licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ghdiff/default.nix b/nixpkgs/pkgs/development/python-modules/ghdiff/default.nix
new file mode 100644
index 00000000000..3a5fbe8433c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ghdiff/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, zope_testrunner, six, chardet}:
+
+buildPythonPackage rec {
+ pname = "ghdiff";
+ version = "0.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "17mdhi2sq9017nq8rkjhhc87djpi5z99xiil0xz17dyplr7nmkqk";
+ };
+
+ checkInputs = [ zope_testrunner ];
+ propagatedBuildInputs = [ six chardet ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/kilink/ghdiff;
+ license = licenses.mit;
+ description = "Generate Github-style HTML for unified diffs.";
+ maintainers = [ maintainers.mic92 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gidgethub/default.nix b/nixpkgs/pkgs/development/python-modules/gidgethub/default.nix
new file mode 100644
index 00000000000..140f93f33f8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gidgethub/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, setuptools
+, pytestrunner
+, pytest
+, pytest-asyncio
+, twisted
+, treq
+, tornado
+, aiohttp
+, uritemplate
+}:
+
+buildPythonPackage rec {
+ pname = "gidgethub";
+ version = "3.1.0";
+
+ disabled = pythonOlder "3.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "52119435ba73ddd5e697dae7bec8b93a048bc738720b81691ebd4b4d81d2d762";
+ };
+
+ nativeBuildInputs = [ setuptools pytestrunner ];
+ checkInputs = [ pytest pytest-asyncio twisted treq tornado aiohttp ];
+ propagatedBuildInputs = [ uritemplate ];
+
+ postPatch = ''
+ substituteInPlace setup.py \
+ --replace "extras_require=extras_require," "extras_require=None,"
+ '';
+
+ # requires network (reqests github.com)
+ doCheck = false;
+
+ meta = with lib; {
+ description = "An async GitHub API library";
+ homepage = https://github.com/brettcannon/gidgethub;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gin-config/default.nix b/nixpkgs/pkgs/development/python-modules/gin-config/default.nix
new file mode 100644
index 00000000000..8701751e3a0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gin-config/default.nix
@@ -0,0 +1,29 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, six
+, enum34
+}:
+
+buildPythonPackage rec {
+ pname = "gin-config";
+ version = "0.1.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "07843fde2917f1a44f808fceb3c0227bb02ff7c4ebba8de6642206c03e7e8ba2";
+
+ };
+
+ propagatedBuildInputs = [ six enum34 ];
+
+ # PyPI archive does not ship with tests
+ doCheck= false;
+
+ meta = with lib; {
+ homepage = https://github.com/google/gin-config;
+ description = "Gin provides a lightweight configuration framework for Python, based on dependency injection.";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ jethro ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gipc/default.nix b/nixpkgs/pkgs/development/python-modules/gipc/default.nix
new file mode 100644
index 00000000000..8255668de1c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gipc/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, gevent
+}:
+
+buildPythonPackage rec {
+ pname = "gipc";
+ version = "1.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1zg5bm30lqqd8x0jqbvr4yi8i4rzzk2hdnh280qnj2bwm5nqpghi";
+ };
+
+ propagatedBuildInputs = [ gevent ];
+
+ meta = with stdenv.lib; {
+ description = "gevent-cooperative child processes and IPC";
+ longDescription = ''
+ Usage of Python's multiprocessing package in a gevent-powered
+ application may raise problems and most likely breaks the application
+ in various subtle ways. gipc (pronunciation "gipsy") is developed with
+ the motivation to solve many of these issues transparently. With gipc,
+ multiprocessing. Process-based child processes can safely be created
+ anywhere within your gevent-powered application.
+ '';
+ homepage = http://gehrcke.de/gipc;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/git-annex-adapter/default.nix b/nixpkgs/pkgs/development/python-modules/git-annex-adapter/default.nix
new file mode 100644
index 00000000000..ec58825878a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/git-annex-adapter/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, buildPythonPackage, isPy3k, fetchFromGitHub, substituteAll
+, python, utillinux, pygit2, gitMinimal, git-annex
+}:
+
+buildPythonPackage rec {
+ pname = "git-annex-adapter";
+ version = "0.2.1";
+
+ disabled = !isPy3k;
+
+ # No tests in PyPI tarball
+ src = fetchFromGitHub {
+ owner = "alpernebbi";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "146q1jhcfc7f96ajkhjffskkljk2xzivs5ih5clb8qx0sh7mj097";
+ };
+
+ patches = [
+ (substituteAll {
+ src = ./git-annex-path.patch;
+ gitAnnex = "${git-annex}/bin/git-annex";
+ })
+ ];
+
+ checkInputs = [
+ gitMinimal
+ utillinux # `rev` is needed in tests/test_process.py
+ ];
+
+ propagatedBuildInputs = [ pygit2 ];
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/alpernebbi/git-annex-adapter;
+ description = "Call git-annex commands from Python";
+ license = licenses.gpl3Plus;
+ maintainers = with maintainers; [ dotlambda ma27 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/git-annex-adapter/git-annex-path.patch b/nixpkgs/pkgs/development/python-modules/git-annex-adapter/git-annex-path.patch
new file mode 100644
index 00000000000..8b1b854058b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/git-annex-adapter/git-annex-path.patch
@@ -0,0 +1,75 @@
+diff --git a/git_annex_adapter/process.py b/git_annex_adapter/process.py
+index 6ddb985..bbd0ab8 100644
+--- a/git_annex_adapter/process.py
++++ b/git_annex_adapter/process.py
+@@ -389,7 +389,7 @@ class GitAnnexBatchProcess:
+ _procclass = Process
+
+ def __init__(self, args, workdir):
+- self.args = ('git', 'annex', *args)
++ self.args = ('@gitAnnex@', *args)
+ self.workdir = workdir
+ self._process = None
+ self._dead_process = None
+@@ -586,7 +586,7 @@ class ProcessRunner:
+ class GitAnnexRunner(ProcessRunner):
+ """Helper class to run git-annex commands."""
+ def __init__(self, args_prefix, workdir):
+- args_prefix = ('git-annex', *args_prefix)
++ args_prefix = ('@gitAnnex@', *args_prefix)
+ super().__init__(args_prefix, workdir)
+
+ def __call__(self, *args_suffix):
+diff --git a/tests/test_process.py b/tests/test_process.py
+index ed619bb..9335078 100644
+--- a/tests/test_process.py
++++ b/tests/test_process.py
+@@ -181,7 +181,7 @@ class TestProcessOnEmptyAnnex(TempAnnexTestCase):
+ def test_process_annex_metadata_batch(self):
+ """Process should be able to read one line"""
+ with Process(
+- ['git', 'annex', 'metadata', '--batch', '--json'],
++ ['@gitAnnex@', 'metadata', '--batch', '--json'],
+ str(self.tempdir),
+ ) as proc:
+ proc.writeline(
+@@ -202,7 +202,7 @@ class TestProcessOnEmptyAnnex(TempAnnexTestCase):
+ def test_jsonprocess_annex_metadata_batch(self):
+ """JsonProcess should encode and decode properly"""
+ with JsonProcess(
+- ['git', 'annex', 'metadata', '--batch', '--json'],
++ ['@gitAnnex@', 'metadata', '--batch', '--json'],
+ str(self.tempdir),
+ ) as proc:
+ obj = proc({'key':'SHA256E-s0--0'})
+@@ -218,7 +218,7 @@ class TestProcessOnEmptyAnnex(TempAnnexTestCase):
+ def test_process_annex_info_batch(self):
+ """Process should be able to read multiple lines"""
+ with Process(
+- ['git', 'annex', 'info', '--batch'],
++ ['@gitAnnex@', 'info', '--batch'],
+ str(self.tempdir),
+ ) as proc:
+ proc.writeline('here')
+diff --git a/tests/utils.py b/tests/utils.py
+index 281ee3f..969aedc 100644
+--- a/tests/utils.py
++++ b/tests/utils.py
+@@ -107,7 +107,7 @@ class TempAnnexTestCase(TempRepoTestCase):
+ # Have to uninit before cleaning directory, since git-annex
+ # marks its objects read-only so that they don't get deleted.
+ subprocess.run(
+- ['git', 'annex', 'uninit'],
++ ['@gitAnnex@', 'uninit'],
+ cwd=self.repo.workdir,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE,
+@@ -122,7 +122,7 @@ class TempAnnexTestCase(TempRepoTestCase):
+ path.write_text(text)
+
+ subprocess.run(
+- ['git', 'annex', 'add', '--quiet', relpath],
++ ['@gitAnnex@', 'add', '--quiet', relpath],
+ cwd=self.repo.workdir,
+ check=True,
+ )
diff --git a/nixpkgs/pkgs/development/python-modules/git-revise/default.nix b/nixpkgs/pkgs/development/python-modules/git-revise/default.nix
new file mode 100644
index 00000000000..86d4decc6d8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/git-revise/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonAtLeast
+, tox
+, pytest
+, pylint
+, mypy
+, black
+}:
+
+buildPythonPackage rec {
+ pname = "git-revise";
+ version = "0.4.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1mq1fh8m6jxl052d811cgpl378hiq20a8zrhdjn0i3dqmxrcb8vs";
+ };
+
+ disabled = !(pythonAtLeast "3.6");
+
+ checkInputs = [ tox pytest pylint mypy black ];
+
+ checkPhase = ''
+ tox
+ '';
+
+ meta = with lib; {
+ description = "Efficiently update, split, and rearrange git commits";
+ homepage = https://github.com/mystor/git-revise;
+ license = licenses.mit;
+ maintainers = with maintainers; [ emily ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/git-sweep/default.nix b/nixpkgs/pkgs/development/python-modules/git-sweep/default.nix
new file mode 100644
index 00000000000..e2182892e85
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/git-sweep/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, GitPython
+}:
+
+buildPythonPackage rec {
+ pname = "git-sweep";
+ version = "0.1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1csp0zd049d643d409rfivbswwzrayb4i6gkypp5mc27fb1z2afd";
+ };
+
+ propagatedBuildInputs = [ GitPython ];
+
+ meta = with stdenv.lib; {
+ description = "A command-line tool that helps you clean up Git branches";
+ homepage = https://github.com/arc90/git-sweep;
+ license = licenses.mit;
+ maintainers = with maintainers; [ pSub ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gitdb/default.nix b/nixpkgs/pkgs/development/python-modules/gitdb/default.nix
new file mode 100644
index 00000000000..ceca6e3719b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gitdb/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildPythonPackage, fetchPypi, smmap }:
+
+buildPythonPackage rec {
+ pname = "gitdb";
+ version = "0.6.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0n4n2c7rxph9vs2l6xlafyda5x1mdr8xy16r9s3jwnh3pqkvrsx3";
+ };
+
+ propagatedBuildInputs = [ smmap ];
+
+ # Bunch of tests fail because they need an actual git repo
+ doCheck = false;
+
+ meta = {
+ description = "Git Object Database";
+ maintainers = [ ];
+ homepage = https://github.com/gitpython-developers/gitdb;
+ license = lib.licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gitdb2/default.nix b/nixpkgs/pkgs/development/python-modules/gitdb2/default.nix
new file mode 100644
index 00000000000..2b6a118885c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gitdb2/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildPythonPackage, fetchPypi, smmap2 }:
+
+buildPythonPackage rec {
+ pname = "gitdb2";
+ version = "2.0.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "83361131a1836661a155172932a13c08bda2db3674e4caa32368aa6eb02f38c2";
+ };
+
+ propagatedBuildInputs = [ smmap2 ];
+
+ # Bunch of tests fail because they need an actual git repo
+ doCheck = false;
+
+ meta = {
+ description = "Git Object Database";
+ maintainers = [ ];
+ homepage = https://github.com/gitpython-developers/gitdb;
+ license = lib.licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/github-webhook/default.nix b/nixpkgs/pkgs/development/python-modules/github-webhook/default.nix
new file mode 100644
index 00000000000..c9814b94d82
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/github-webhook/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildPythonPackage, fetchPypi
+, flask
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "github-webhook";
+ version = "1.0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "04jdf595gv97s4br0ym8izca3i6d1nfwcrpi4s26hkvn3czz84sv";
+ };
+
+ propagatedBuildInputs = [ flask six ];
+
+ # touches network
+ doCheck = false;
+
+ meta = with lib; {
+ description = "A framework for writing webhooks for GitHub";
+ homepage = "https://github.com/bloomberg/python-github-webhook";
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/github3_py/default.nix b/nixpkgs/pkgs/development/python-modules/github3_py/default.nix
new file mode 100644
index 00000000000..d0d82adf491
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/github3_py/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, pythonOlder
+, buildPythonPackage
+, fetchPypi
+, betamax
+, pytest
+, betamax-matchers
+, unittest2
+, mock
+, requests
+, uritemplate
+, dateutil
+, jwcrypto
+, pyopenssl
+, ndg-httpsclient
+, pyasn1
+}:
+
+buildPythonPackage rec {
+ pname = "github3.py";
+ version = "1.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "15a115c18f7bfcf934dfef7ab103844eb9f620c586bad65967708926da47cbda";
+ };
+
+ checkInputs = [ betamax pytest betamax-matchers ]
+ ++ lib.optional (pythonOlder "3") unittest2
+ ++ lib.optional (pythonOlder "3.3") mock;
+ propagatedBuildInputs = [ requests uritemplate dateutil jwcrypto pyopenssl ndg-httpsclient pyasn1 ];
+
+ postPatch = ''
+ sed -i -e 's/unittest2 ==0.5.1/unittest2>=0.5.1/' setup.py
+ '';
+
+ # TODO: only disable the tests that require network
+ doCheck = false;
+
+ meta = with lib; {
+ homepage = https://github3py.readthedocs.org/en/master/;
+ description = "A wrapper for the GitHub API written in python";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ pSub ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/glances/default.nix b/nixpkgs/pkgs/development/python-modules/glances/default.nix
new file mode 100644
index 00000000000..0f4bb4ce9c4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/glances/default.nix
@@ -0,0 +1,42 @@
+{ buildPythonPackage, fetchFromGitHub, isPyPy, lib
+, psutil, setuptools, bottle, batinfo, pysnmp
+, hddtemp, future
+# Optional dependencies:
+, netifaces # IP module
+# Tests:
+, unittest2
+}:
+
+buildPythonPackage rec {
+ pname = "glances";
+ version = "3.1.2";
+ disabled = isPyPy;
+
+ src = fetchFromGitHub {
+ owner = "nicolargo";
+ repo = "glances";
+ rev = "v${version}";
+ sha256 = "1z9sq0chhm8m4gq98yfknxj408cj017h7j375blngjk2zvhw39qd";
+ };
+
+ # Some tests fail in the sandbox (they e.g. require access to /sys/class/power_supply):
+ patches = lib.optional doCheck ./skip-failing-tests.patch;
+
+ doCheck = true;
+ checkInputs = [ unittest2 ];
+
+ propagatedBuildInputs = [ psutil setuptools bottle batinfo pysnmp hddtemp future
+ netifaces
+ ];
+
+ preConfigure = ''
+ sed -i 's/data_files\.append((conf_path/data_files.append(("etc\/glances"/' setup.py;
+ '';
+
+ meta = with lib; {
+ homepage = https://nicolargo.github.io/glances/;
+ description = "Cross-platform curses-based monitoring tool";
+ license = licenses.lgpl3;
+ maintainers = with maintainers; [ primeos koral ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/glances/skip-failing-tests.patch b/nixpkgs/pkgs/development/python-modules/glances/skip-failing-tests.patch
new file mode 100644
index 00000000000..e3116af6a2c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/glances/skip-failing-tests.patch
@@ -0,0 +1,60 @@
+diff --git a/unitest.py b/unitest.py
+--- a/unitest.py
++++ b/unitest.py
+@@ -59,6 +59,7 @@ class TestGlances(unittest.TestCase):
+ """The function is called *every time* before test_*."""
+ print('\n' + '=' * 78)
+
++ @unittest.skip("Requires access to /etc/mtab")
+ def test_000_update(self):
+ """Update stats (mandatory step for all the stats).
+
+@@ -87,6 +88,7 @@ class TestGlances(unittest.TestCase):
+ for plugin in plugins_to_check:
+ self.assertTrue(plugin in plugins_list)
+
++ @unittest.skip("Fails on NixOS")
+ def test_002_system(self):
+ """Check SYSTEM plugin."""
+ stats_to_check = ['hostname', 'os_name']
+@@ -97,6 +99,7 @@ class TestGlances(unittest.TestCase):
+ self.assertTrue(stat in stats_grab, msg='Cannot find key: %s' % stat)
+ print('INFO: SYSTEM stats: %s' % stats_grab)
+
++ @unittest.skip("Fails on NixOS")
+ def test_003_cpu(self):
+ """Check CPU plugin."""
+ stats_to_check = ['system', 'user', 'idle']
+@@ -110,7 +113,7 @@ class TestGlances(unittest.TestCase):
+ self.assertLessEqual(stats_grab[stat], 100)
+ print('INFO: CPU stats: %s' % stats_grab)
+
+- @unittest.skipIf(WINDOWS, "Load average not available on Windows")
++ @unittest.skip("Fails on NixOS")
+ def test_004_load(self):
+ """Check LOAD plugin."""
+ stats_to_check = ['cpucore', 'min1', 'min5', 'min15']
+@@ -123,6 +126,7 @@ class TestGlances(unittest.TestCase):
+ self.assertGreaterEqual(stats_grab[stat], 0)
+ print('INFO: LOAD stats: %s' % stats_grab)
+
++ @unittest.skip("Fails on NixOS")
+ def test_005_mem(self):
+ """Check MEM plugin."""
+ stats_to_check = ['available', 'used', 'free', 'total']
+@@ -135,6 +139,7 @@ class TestGlances(unittest.TestCase):
+ self.assertGreaterEqual(stats_grab[stat], 0)
+ print('INFO: MEM stats: %s' % stats_grab)
+
++ @unittest.skip("Fails on NixOS")
+ def test_006_swap(self):
+ """Check MEMSWAP plugin."""
+ stats_to_check = ['used', 'free', 'total']
+@@ -191,6 +196,7 @@ class TestGlances(unittest.TestCase):
+ self.assertTrue(type(stats_grab) is list, msg='Folders stats is not a list')
+ print('INFO: Folders stats: %s' % stats_grab)
+
++ @unittest.skip("Fails on NixOS (TODO)")
+ def test_012_ip(self):
+ """Check IP plugin."""
+ print('INFO: [TEST_012] Check IP stats')
diff --git a/nixpkgs/pkgs/development/python-modules/glasgow/default.nix b/nixpkgs/pkgs/development/python-modules/glasgow/default.nix
new file mode 100644
index 00000000000..264a13aed5e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/glasgow/default.nix
@@ -0,0 +1,66 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, sdcc
+, nmigen
+, fx2
+, libusb1
+, aiohttp
+, pyvcd
+, bitarray
+, crcmod
+, yosys
+, icestorm
+, nextpnr
+}:
+
+buildPythonPackage rec {
+ pname = "glasgow";
+ version = "unstable-2019-08-31";
+ realVersion = lib.substring 0 7 src.rev;
+
+ src = fetchFromGitHub {
+ owner = "GlasgowEmbedded";
+ repo = "Glasgow";
+ rev = "21641a13c6a0daaf8618aff3c5bfffcb26ef6cca";
+ sha256 = "1dpm1jmm4fg8xf17s6h9g5sc09gq8b6xq955sv2x11nrbqf98l4v";
+ };
+
+ nativeBuildInputs = [ sdcc ];
+
+ propagatedBuildInputs = [
+ nmigen
+ fx2
+ libusb1
+ aiohttp
+ pyvcd
+ bitarray
+ crcmod
+ ];
+
+ postPatch = ''
+ substituteInPlace software/setup.py \
+ --replace 'versioneer.get_version()' '"${realVersion}"'
+ '';
+
+ preBuild = ''
+ make -C firmware LIBFX2=${fx2}/share/libfx2
+ cp firmware/glasgow.ihex software/glasgow
+ cd software
+ '';
+
+ # a couple failing tests and also installCheck tries to build_ext again
+ doInstallCheck = false;
+ doCheck = false;
+
+ checkPhase = ''
+ python -m unittest discover
+ '';
+
+ meta = with lib; {
+ description = "Software for Glasgow, a digital interface multitool";
+ homepage = https://github.com/GlasgowEmbedded/Glasgow;
+ license = licenses.bsd0;
+ maintainers = with maintainers; [ emily ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/glob2/default.nix b/nixpkgs/pkgs/development/python-modules/glob2/default.nix
new file mode 100644
index 00000000000..bce69bffff2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/glob2/default.nix
@@ -0,0 +1,26 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "glob2";
+ version = "0.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "135bj8gm6vn45vv0phrvhyir36kfm17y7kmasxinv8lagk8dphw5";
+ };
+
+ checkPhase = ''
+ ${python.interpreter} test.py
+ '';
+
+ meta = with lib; {
+ description = "Version of the glob module that can capture patterns and supports recursive wildcards";
+ homepage = https://github.com/miracle2k/python-glob2/;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/globus-sdk/default.nix b/nixpkgs/pkgs/development/python-modules/globus-sdk/default.nix
new file mode 100644
index 00000000000..45ae5fe00de
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/globus-sdk/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, flake8
+, nose2
+, mock
+, requests
+, pyjwt
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "globus-sdk";
+ version = "1.8.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0ggxa3av4rwva9h5idg1vfdybr7wkajw7g0sn42k04sxxa0cigwz";
+ };
+
+ checkPhase = ''
+ py.test tests
+ '';
+
+ # No tests in archive
+ doCheck = false;
+
+ checkInputs = [ flake8 nose2 mock ];
+
+ propagatedBuildInputs = [ requests pyjwt ];
+
+ meta = with lib; {
+ description = "A convenient Pythonic 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/nixpkgs/pkgs/development/python-modules/glom/default.nix b/nixpkgs/pkgs/development/python-modules/glom/default.nix
new file mode 100644
index 00000000000..ac193e61dcb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/glom/default.nix
@@ -0,0 +1,38 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, boltons
+, attrs
+, face
+, pytest
+, pyyaml
+, isPy37
+}:
+
+buildPythonPackage rec {
+ pname = "glom";
+ version = "19.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5c47dc6dc97bb1c20e5607f3d58eac81e13b16880a284b52d503eea92d7b5fc2";
+ };
+
+ propagatedBuildInputs = [ boltons attrs face ];
+
+ checkInputs = [ pytest pyyaml ];
+ checkPhase = "pytest glom/test";
+
+ doCheck = !isPy37; # https://github.com/mahmoud/glom/issues/72
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/mahmoud/glom;
+ description = "Restructuring data, the Python way";
+ longDescription = ''
+ glom helps pull together objects from other objects in a
+ declarative, dynamic, and downright simple way.
+ '';
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ twey ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/glymur/default.nix b/nixpkgs/pkgs/development/python-modules/glymur/default.nix
new file mode 100644
index 00000000000..3da367c445f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/glymur/default.nix
@@ -0,0 +1,51 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, numpy
+, setuptools
+, python
+, scikitimage
+, openjpeg
+, procps
+, contextlib2
+, mock
+, importlib-resources
+, isPy27
+}:
+
+buildPythonPackage rec {
+ pname = "glymur";
+ version = "0.8.18";
+
+ src = fetchFromGitHub {
+ owner = "quintusdias";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "1zbghzw1q4fljb019lsrhka9xrnn4425qnxrjbmbv7dssgkkywd7";
+ };
+
+ propagatedBuildInputs = [
+ numpy
+ ] ++ stdenv.lib.optional isPy27 [ contextlib2 mock importlib-resources ];
+
+ checkInputs = [
+ scikitimage
+ procps
+ ];
+
+ postConfigure = ''
+ substituteInPlace glymur/config.py \
+ --replace "path = read_config_file(libname)" "path = '${openjpeg}/lib' + libname + ${if stdenv.isDarwin then "'.dylib'" else "'.so'"}"
+ '';
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Tools for accessing JPEG2000 files";
+ homepage = https://github.com/quintusdias/glymur;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gmpy/default.nix b/nixpkgs/pkgs/development/python-modules/gmpy/default.nix
new file mode 100644
index 00000000000..73f1175e0bd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gmpy/default.nix
@@ -0,0 +1,24 @@
+{ buildPythonPackage, fetchurl, isPyPy, gmp } :
+
+let
+ pname = "gmpy";
+ version = "1.17";
+in
+
+buildPythonPackage {
+ inherit pname version;
+
+ disabled = isPyPy;
+
+ src = fetchurl {
+ url = "mirror://pypi/g/gmpy/${pname}-${version}.zip";
+ sha256 = "1a79118a5332b40aba6aa24b051ead3a31b9b3b9642288934da754515da8fa14";
+ };
+
+ buildInputs = [ gmp ];
+
+ meta = {
+ description = "GMP or MPIR interface to Python 2.4+ and 3.x";
+ homepage = https://github.com/aleaxit/gmpy/;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gmpy2/default.nix b/nixpkgs/pkgs/development/python-modules/gmpy2/default.nix
new file mode 100644
index 00000000000..fc554906409
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gmpy2/default.nix
@@ -0,0 +1,46 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, fetchpatch
+, isPyPy
+, gmp
+, mpfr
+, libmpc
+}:
+
+let
+ pname = "gmpy2";
+ version = "2.1a4";
+in
+
+buildPythonPackage {
+ inherit pname version;
+
+ disabled = isPyPy;
+
+ src = fetchFromGitHub {
+ owner = "aleaxit";
+ repo = "gmpy";
+ rev = "gmpy2-${version}";
+ sha256 = "1wg4w4q2l7n26ksrdh4rwqmifgfm32n7x29cgdvmmbv5lmilb5hz";
+ };
+
+ patches = [
+ # Backport of two bugfixes (including a segfault):
+ # https://github.com/aleaxit/gmpy/pull/217
+ # https://github.com/aleaxit/gmpy/pull/218
+ (fetchpatch {
+ name = "bugfixes.patch";
+ url = "https://git.sagemath.org/sage.git/plain/build/pkgs/gmpy2/patches/PR217_PR218_conversion_methods.patch?id=b7fbb9a4dac5d6882f6b83a57447dd79ecafb84c";
+ sha256 = "1x3gwvqac36k4ypclxq37fcvi6p790k4xdpm2bj2b3xsvjb80ycz";
+ })
+ ];
+
+ buildInputs = [ gmp mpfr libmpc ];
+
+ meta = with stdenv.lib; {
+ description = "GMP/MPIR, MPFR, and MPC interface to Python 2.6+ and 3.x";
+ homepage = https://github.com/aleaxit/gmpy/;
+ license = licenses.gpl3Plus;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gmusicapi/default.nix b/nixpkgs/pkgs/development/python-modules/gmusicapi/default.nix
new file mode 100644
index 00000000000..f8dfc4ff2d3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gmusicapi/default.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, validictory
+, decorator
+, mutagen
+, protobuf
+, setuptools
+, requests
+, dateutil
+, proboscis
+, mock
+, appdirs
+, oauth2client
+, pyopenssl
+, gpsoauth
+, MechanicalSoup
+, future
+}:
+
+buildPythonPackage rec {
+ pname = "gmusicapi";
+ version = "12.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6e066f38bbfce068e0e89f34ccdbc7056fd5fdc446d3c33c70f53b26078eb78b";
+ };
+
+ propagatedBuildInputs = [ validictory decorator mutagen protobuf setuptools requests dateutil proboscis mock appdirs oauth2client pyopenssl gpsoauth MechanicalSoup future ];
+
+ meta = with stdenv.lib; {
+ description = "An unofficial API for Google Play Music";
+ homepage = https://pypi.python.org/pypi/gmusicapi/;
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gnureadline/default.nix b/nixpkgs/pkgs/development/python-modules/gnureadline/default.nix
new file mode 100644
index 00000000000..2e802e05c07
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gnureadline/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPyPy
+, pkgs
+}:
+
+buildPythonPackage rec {
+ version = "8.0.0";
+ pname = "gnureadline";
+ disabled = isPyPy;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0xllr43dizvybmb68i0ybk1xhaqx5abjwxa9vrg43b9ds0pggvk1";
+ };
+
+ buildInputs = [ pkgs.ncurses ];
+ patchPhase = ''
+ substituteInPlace setup.py --replace "/bin/bash" "${pkgs.bash}/bin/bash"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "The standard Python readline extension statically linked against the GNU readline library";
+ homepage = https://github.com/ludwigschwardt/python-gnureadline;
+ license = licenses.gpl3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gnutls/default.nix b/nixpkgs/pkgs/development/python-modules/gnutls/default.nix
new file mode 100644
index 00000000000..61c799589a9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gnutls/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, pkgs
+}:
+
+buildPythonPackage rec {
+ pname = "python-gnutls";
+ version = "3.1.2";
+
+ # https://github.com/AGProjects/python-gnutls/issues/2
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "28748e02a8035c31826152944e41217ebcc58ab7793ae5a22850cd23d3cfbbbe";
+ };
+
+ propagatedBuildInputs = [ pkgs.gnutls ];
+ patchPhase = ''
+ substituteInPlace gnutls/library/__init__.py --replace "/usr/local/lib" "${pkgs.gnutls.out}/lib"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Python wrapper for the GnuTLS library";
+ homepage = https://github.com/AGProjects/python-gnutls;
+ license = licenses.lgpl2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/goobook/default.nix b/nixpkgs/pkgs/development/python-modules/goobook/default.nix
new file mode 100644
index 00000000000..e63c97c6793
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/goobook/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k
+, google_api_python_client, simplejson, oauth2client
+}:
+
+buildPythonPackage rec {
+ pname = "goobook";
+ version = "3.3";
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0sanlki1rcqvhbds7a049v2kzglgpm761i728115mdracw0s6i3h";
+ };
+
+ propagatedBuildInputs = [ google_api_python_client simplejson oauth2client ];
+
+ meta = with stdenv.lib; {
+ description = "Search your google contacts from the command-line or mutt";
+ homepage = https://pypi.python.org/pypi/goobook;
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ primeos ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/goocalendar/default.nix b/nixpkgs/pkgs/development/python-modules/goocalendar/default.nix
new file mode 100644
index 00000000000..e746b304e8b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/goocalendar/default.nix
@@ -0,0 +1,44 @@
+{ stdenv
+, fetchPypi
+, buildPythonPackage
+, pkgconfig
+, gtk3
+, gobject-introspection
+, pygtk
+, pygobject3
+, goocanvas2
+, isPy3k
+ }:
+
+with stdenv.lib;
+
+buildPythonPackage rec {
+ pname = "GooCalendar";
+ version = "0.4";
+
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ca3950c2728916d9fb703c886f3940ac9b76739f99ec840b0e1c2c282510e1ab";
+ };
+ nativeBuildInputs = [ pkgconfig gobject-introspection ];
+ propagatedBuildInputs = [
+ pygtk
+ pygobject3
+ ];
+ buildInputs = [
+ gtk3
+ goocanvas2
+ ];
+
+ # No upstream tests available
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A calendar widget for GTK using PyGoocanvas.";
+ homepage = https://goocalendar.tryton.org/;
+ license = licenses.gpl2;
+ maintainers = [ maintainers.udono ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google-api-python-client/default.nix b/nixpkgs/pkgs/development/python-modules/google-api-python-client/default.nix
new file mode 100644
index 00000000000..e81f8274086
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google-api-python-client/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildPythonPackage, fetchPypi
+, httplib2, google_auth, google-auth-httplib2, six, uritemplate, oauth2client }:
+
+buildPythonPackage rec {
+ pname = "google-api-python-client";
+ version = "1.7.11";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "137vwb9544vjxkwnbr98x0f4p6ri5i678wxxxgbsx4kdyrs83a58";
+ };
+
+ # No tests included in archive
+ doCheck = false;
+
+ propagatedBuildInputs = [ httplib2 google_auth google-auth-httplib2 six uritemplate oauth2client ];
+
+ meta = with lib; {
+ description = "The core Python library for accessing Google APIs";
+ homepage = https://github.com/google/google-api-python-client;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ primeos ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google-auth-httplib2/default.nix b/nixpkgs/pkgs/development/python-modules/google-auth-httplib2/default.nix
new file mode 100644
index 00000000000..c76f5c572e4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google-auth-httplib2/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, flask
+, mock
+, six
+, pytest
+, pytest-localserver
+, google_auth
+, httplib2
+
+}:
+
+buildPythonPackage rec {
+ pname = "google-auth-httplib2";
+ version = "0.0.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "098fade613c25b4527b2c08fa42d11f3c2037dda8995d86de0745228e965d445";
+ };
+
+ checkInputs = [
+ flask mock six pytest pytest-localserver
+ ];
+
+ propagatedBuildInputs = [
+ google_auth httplib2
+ ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = {
+ description = "Google Authentication Library: httplib2 transport";
+ homepage = https://github.com/GoogleCloudPlatform/google-auth-library-python-httplib2;
+ license = lib.licenses.asl20;
+ };
+
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/google-auth-oauthlib/default.nix b/nixpkgs/pkgs/development/python-modules/google-auth-oauthlib/default.nix
new file mode 100644
index 00000000000..2cc1513812f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google-auth-oauthlib/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, click
+, mock
+, pytest
+, futures
+, google_auth
+, requests_oauthlib
+}:
+
+buildPythonPackage rec {
+ pname = "google-auth-oauthlib";
+ version = "0.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1fl3w23c93hlgqf0l57cdy17wmvyhrv3bh133ksd2h490ir012va";
+ };
+
+ checkInputs = [
+ click mock pytest
+ ] ++ lib.optionals (!isPy3k) [ futures ];
+
+ propagatedBuildInputs = [
+ google_auth requests_oauthlib
+ ];
+
+ checkPhase = ''
+ rm -fr tests/__pycache__/
+ py.test
+ '';
+
+ meta = with lib; {
+ description = "Google Authentication Library: oauthlib integration";
+ homepage = https://github.com/GoogleCloudPlatform/google-auth-library-python-oauthlib;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ terlar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google-i18n-address/default.nix b/nixpkgs/pkgs/development/python-modules/google-i18n-address/default.nix
new file mode 100644
index 00000000000..6a9a3160c9b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google-i18n-address/default.nix
@@ -0,0 +1,22 @@
+{ buildPythonPackage, fetchPypi, lib, requests, pytest, pytestcov, mock }:
+
+buildPythonPackage rec {
+ pname = "google-i18n-address";
+ version = "2.3.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1kkg3x92m40z0mw712z9apnrw08qsx0f9lj7lfgddkdbx4vd8v3w";
+ };
+
+ propagatedBuildInputs = [ requests ];
+
+ checkInputs = [ pytest pytestcov mock ];
+
+ meta = with lib; {
+ description = "Google's i18n address data packaged for Python";
+ homepage = https://pypi.org/project/google-i18n-address/;
+ maintainers = with maintainers; [ ma27 ];
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google-music-proto/default.nix b/nixpkgs/pkgs/development/python-modules/google-music-proto/default.nix
new file mode 100644
index 00000000000..6a882e29c19
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google-music-proto/default.nix
@@ -0,0 +1,37 @@
+{ lib, buildPythonPackage, fetchPypi, pythonOlder
+, attrs
+, audio-metadata
+, marshmallow
+, pendulum
+, protobuf
+}:
+
+buildPythonPackage rec {
+ pname = "google-music-proto";
+ version = "2.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "798ac14408593525d1865f608b30f71cce291b1a239f4d63f14bb4dcf79d7528";
+ };
+
+ propagatedBuildInputs = [
+ attrs
+ audio-metadata
+ marshmallow
+ pendulum
+ protobuf
+ ];
+
+ # No tests
+ doCheck = false;
+
+ disabled = pythonOlder "3.6";
+
+ meta = with lib; {
+ homepage = https://github.com/thebigmunch/google-music-proto;
+ description = "Sans-I/O wrapper of Google Music API calls";
+ license = licenses.mit;
+ maintainers = with maintainers; [ jakewaksbaum ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google-music-utils/default.nix b/nixpkgs/pkgs/development/python-modules/google-music-utils/default.nix
new file mode 100644
index 00000000000..84f677d4d4e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google-music-utils/default.nix
@@ -0,0 +1,35 @@
+{ lib, buildPythonPackage, fetchFromGitHub, pythonOlder
+, audio-metadata, multidict, wrapt
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "google-music-utils";
+ version = "2.1.0";
+
+ # Pypi tarball doesn't contain tests
+ src = fetchFromGitHub {
+ owner = "thebigmunch";
+ repo = "google-music-utils";
+ rev = version;
+ sha256 = "0fn4zp0gf1wx2x06dbc840qcq21j4p3ajghxp7646w2n6n9gxhh7";
+ };
+
+ propagatedBuildInputs = [
+ audio-metadata multidict wrapt
+ ];
+
+ checkInputs = [ pytest ];
+ checkPhase = ''
+ pytest
+ '';
+
+ disabled = pythonOlder "3.6";
+
+ meta = with lib; {
+ homepage = https://github.com/thebigmunch/google-music-utils;
+ description = "A set of utility functionality for google-music and related projects";
+ license = licenses.mit;
+ maintainers = with maintainers; [ jakewaksbaum ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google-music/default.nix b/nixpkgs/pkgs/development/python-modules/google-music/default.nix
new file mode 100644
index 00000000000..71aa37d0086
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google-music/default.nix
@@ -0,0 +1,44 @@
+{ lib, buildPythonPackage, fetchPypi, pythonOlder
+, appdirs
+, audio-metadata
+, google-music-proto
+, protobuf
+, requests_oauthlib
+, tenacity
+}:
+
+buildPythonPackage rec {
+ pname = "google-music";
+ version = "3.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "13i9nd62wqfg0f5r7ykr15q83397vdpw0js50fy5nbgs33sbf6b7";
+ };
+
+ postPatch = ''
+ substituteInPlace setup.py \
+ --replace "audio-metadata>=0.3,<0.4" "audio-metadata"
+ '';
+
+ propagatedBuildInputs = [
+ appdirs
+ audio-metadata
+ google-music-proto
+ protobuf
+ requests_oauthlib
+ tenacity
+ ];
+
+ # No tests
+ doCheck = false;
+
+ disabled = pythonOlder "3.6";
+
+ meta = with lib; {
+ homepage = https://github.com/thebigmunch/google-music;
+ description = "A Google Music API wrapper";
+ license = licenses.mit;
+ maintainers = with maintainers; [ jakewaksbaum ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google-pasta/default.nix b/nixpkgs/pkgs/development/python-modules/google-pasta/default.nix
new file mode 100644
index 00000000000..e469de924f6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google-pasta/default.nix
@@ -0,0 +1,26 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "google-pasta";
+ version = "0.1.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1zmqfvy28i2509277s6sz098kddd16cx21vpxyc8xml1nclcxlbr";
+ };
+
+ propagatedBuildInputs = [
+ six
+ ];
+
+ meta = {
+ description = "An AST-based Python refactoring library";
+ homepage = https://github.com/google/pasta;
+ license = lib.licenses.asl20;
+ maintainers = with lib.maintainers; [ timokau ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_api_core/default.nix b/nixpkgs/pkgs/development/python-modules/google_api_core/default.nix
new file mode 100644
index 00000000000..5cb027eef46
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_api_core/default.nix
@@ -0,0 +1,29 @@
+{ lib, buildPythonPackage, fetchPypi, pythonOlder
+, google_auth, protobuf, googleapis_common_protos, requests, grpcio, futures, mock, pytest }:
+
+buildPythonPackage rec {
+ pname = "google-api-core";
+ version = "1.7.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "85693e163a1a6faea69a74f8feaf35d54dfa2559fbdbbe389c93ffb3bb4c9a79";
+ };
+
+ propagatedBuildInputs = [
+ googleapis_common_protos protobuf
+ google_auth requests grpcio
+ ] ++ lib.optional (pythonOlder "3.2") futures;
+ checkInputs = [ mock pytest ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with lib; {
+ description = "This library is not meant to stand-alone. Instead it defines common helpers used by all Google API clients.";
+ homepage = "https://github.com/GoogleCloudPlatform/google-cloud-python";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ vanschelven ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_apputils/default.nix b/nixpkgs/pkgs/development/python-modules/google_apputils/default.nix
new file mode 100644
index 00000000000..51b03bf5594
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_apputils/default.nix
@@ -0,0 +1,39 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytz
+, gflags
+, dateutil
+, mox
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "google-apputils";
+ version = "0.4.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "47959d0651c32102c10ad919b8a0ffe0ae85f44b8457ddcf2bdc0358fb03dc29";
+ };
+
+ preConfigure = ''
+ sed -i '/ez_setup/d' setup.py
+ '';
+
+ propagatedBuildInputs = [ pytz gflags 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 stdenv.lib; {
+ description = "Google Application Utilities for Python";
+ homepage = http://code.google.com/p/google-apputils-python;
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_auth/default.nix b/nixpkgs/pkgs/development/python-modules/google_auth/default.nix
new file mode 100644
index 00000000000..315d4756e0d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_auth/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, buildPythonPackage, fetchpatch, fetchPypi
+, pytest, mock, oauth2client, flask, requests, urllib3, pytest-localserver, six, pyasn1-modules, cachetools, rsa }:
+
+buildPythonPackage rec {
+ pname = "google-auth";
+ version = "1.6.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0f7c6a64927d34c1a474da92cfc59e552a5d3b940d3266606c6a28b72888b9e4";
+ };
+ patches = [
+ (fetchpatch {
+ name = "use-new-pytest-api-to-keep-building-with-pytest5.patch";
+ url = "https://github.com/googleapis/google-auth-library-python/commit/b482417a04dbbc207fcd6baa7a67e16b1a9ffc77.patch";
+ sha256 = "07jpa7pa6sffbcwlsg5fgcv2vvngil5qpmv6fhjqp7fnvx0674s0";
+ })
+ ];
+
+ checkInputs = [ pytest mock oauth2client flask requests urllib3 pytest-localserver ];
+ propagatedBuildInputs = [ six pyasn1-modules cachetools rsa ];
+
+ # The removed test tests the working together of google_auth and google's https://pypi.python.org/pypi/oauth2client
+ # but the latter is deprecated. Since it is not currently part of the nixpkgs collection and deprecated it will
+ # probably never be. We just remove the test to make the tests work again.
+ postPatch = ''rm tests/test__oauth2client.py'';
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with stdenv.lib; {
+ description = "This library simplifies using Google’s various server-to-server authentication mechanisms to access Google APIs.";
+ homepage = "https://google-auth.readthedocs.io/en/latest/";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ vanschelven ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_asset/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_asset/default.nix
new file mode 100644
index 00000000000..90c8e752d41
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_asset/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, enum34
+, grpc_google_iam_v1
+, google_api_core
+, pytest
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "google-cloud-asset";
+ version = "0.1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "233157c5d902a084477fb5fe6ca1f946d6fe7911577d4a36aee0227777db61b7";
+ };
+
+ checkInputs = [ pytest mock ];
+ propagatedBuildInputs = [ enum34 grpc_google_iam_v1 google_api_core ];
+
+ checkPhase = ''
+ pytest tests/unit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Cloud Asset API API client library";
+ homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_automl/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_automl/default.nix
new file mode 100644
index 00000000000..7f605d73c97
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_automl/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, enum34
+, google_api_core
+, pytest
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "google-cloud-automl";
+ version = "0.1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "32890d1e043eb09a86ff1839096dfb49051cd436bdf1a1708299484cfd06db1a";
+ };
+
+ checkInputs = [ pytest mock ];
+ propagatedBuildInputs = [ enum34 google_api_core ];
+
+ checkPhase = ''
+ pytest tests/unit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Cloud AutoML API client library";
+ homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_bigquery/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_bigquery/default.nix
new file mode 100644
index 00000000000..1646888b36a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_bigquery/default.nix
@@ -0,0 +1,36 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, google_resumable_media
+, google_api_core
+, google_cloud_core
+, pandas
+, pyarrow
+, pytest
+, mock
+, ipython
+}:
+
+buildPythonPackage rec {
+ pname = "google-cloud-bigquery";
+ version = "1.9.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "169ffdb1b677f69f1f9d032bd38f724aed73e0565153ac17199472c083a3852f";
+ };
+
+ checkInputs = [ pytest mock ipython ];
+ propagatedBuildInputs = [ google_resumable_media google_api_core google_cloud_core pandas pyarrow ];
+
+ checkPhase = ''
+ pytest tests/unit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Google BigQuery API client library";
+ homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_bigquery_datatransfer/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_bigquery_datatransfer/default.nix
new file mode 100644
index 00000000000..23f08f3bbef
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_bigquery_datatransfer/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, google_api_core
+, pytest
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "google-cloud-bigquery-datatransfer";
+ version = "0.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "02bf1a508ffbc730904fd8a5e7d7c33946f0aa539127c1b1e235dfdedd7bc9a5";
+ };
+
+ checkInputs = [ pytest mock ];
+ propagatedBuildInputs = [ google_api_core ];
+
+ checkPhase = ''
+ pytest tests/unit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "BigQuery Data Transfer API client library";
+ homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_bigtable/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_bigtable/default.nix
new file mode 100644
index 00000000000..51782dce167
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_bigtable/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, grpc_google_iam_v1
+, google_api_core
+, google_cloud_core
+, pytest
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "google-cloud-bigtable";
+ version = "0.32.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "40d1fc8009c228f70bd0e2176e73a3f101051ad73889b3d25a5df672c029a8bd";
+ };
+
+ checkInputs = [ pytest mock ];
+ propagatedBuildInputs = [ grpc_google_iam_v1 google_api_core google_cloud_core ];
+
+ checkPhase = ''
+ pytest tests/unit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Google Cloud Bigtable API client library";
+ homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_container/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_container/default.nix
new file mode 100644
index 00000000000..f0a47d7c30f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_container/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, google_api_core
+, pytest
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "google-cloud-container";
+ version = "0.2.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "566834ef43e79917b112e3bd2848e84cfb0f4d7b565581607e2548f5c8e5d87a";
+ };
+
+ checkInputs = [ pytest mock ];
+ propagatedBuildInputs = [ google_api_core ];
+
+ checkPhase = ''
+ pytest tests/unit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Google Container Engine API client library";
+ homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_core/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_core/default.nix
new file mode 100644
index 00000000000..c57433a3ebd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_core/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, google_api_core, grpcio, pytest, mock }:
+
+buildPythonPackage rec {
+ pname = "google-cloud-core";
+ version = "0.29.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d85b1aaaf3bad9415ad1d8ee5eadce96d7007a82f13ce0a0629a003a11e83f29";
+ };
+
+ propagatedBuildInputs = [ google_api_core grpcio ];
+ checkInputs = [ pytest mock ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with stdenv.lib; {
+ description = "API Client library for Google Cloud: Core Helpers";
+ homepage = "https://github.com/GoogleCloudPlatform/google-cloud-python";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ vanschelven ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_dataproc/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_dataproc/default.nix
new file mode 100644
index 00000000000..9475c792fb9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_dataproc/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, google_api_core
+, pytest
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "google-cloud-dataproc";
+ version = "0.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "e6a6c380757e22e9a45cf5b261be6d6a4262f87ee172a6c21f6f7ad6013827cd";
+ };
+
+ checkInputs = [ pytest mock ];
+ propagatedBuildInputs = [ google_api_core ];
+
+ checkPhase = ''
+ pytest tests/unit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Google Cloud Dataproc API client library";
+ homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_datastore/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_datastore/default.nix
new file mode 100644
index 00000000000..f514d22ef08
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_datastore/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, google_api_core
+, google_cloud_core
+, pytest
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "google-cloud-datastore";
+ version = "1.7.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "7a44d9b0263cbbe05963522f61ba177e64282043f30999e0bc3368fd79a3af12";
+ };
+
+ checkInputs = [ pytest mock ];
+ propagatedBuildInputs = [ google_api_core google_cloud_core ];
+
+ checkPhase = ''
+ pytest tests/unit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Google Cloud Datastore API client library";
+ homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_dlp/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_dlp/default.nix
new file mode 100644
index 00000000000..0f46ff36a39
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_dlp/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, enum34
+, google_api_core
+, pytest
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "google-cloud-dlp";
+ version = "0.10.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5cc7e40842b6c3dc586d04e3d2b2326b44afbe3896da6a30032d64650a7c6b00";
+ };
+
+ checkInputs = [ pytest mock ];
+ propagatedBuildInputs = [ enum34 google_api_core ];
+
+ checkPhase = ''
+ pytest tests/unit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Cloud Data Loss Prevention (DLP) API API client library";
+ homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_dns/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_dns/default.nix
new file mode 100644
index 00000000000..398c2b66467
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_dns/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, google_api_core
+, google_cloud_core
+, pytest
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "google-cloud-dns";
+ version = "0.29.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a876811e44554fb8a8db4df4a2be649f356e1d9d97eefccfaf5a8d5273819d22";
+ };
+
+ checkInputs = [ pytest mock ];
+ propagatedBuildInputs = [ google_api_core google_cloud_core ];
+
+ checkPhase = ''
+ pytest tests/unit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Google Cloud DNS API client library";
+ homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_error_reporting/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_error_reporting/default.nix
new file mode 100644
index 00000000000..d6f89aefc5f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_error_reporting/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, google_cloud_logging
+, pytest
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "google-cloud-error-reporting";
+ version = "0.30.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "29d04cb6cc2053468addb78351b841df00cb56066e89b6aec0970cb003dd2fab";
+ };
+
+ checkInputs = [ pytest mock ];
+ propagatedBuildInputs = [ google_cloud_logging ];
+
+ checkPhase = ''
+ pytest tests/unit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Stackdriver Error Reporting API client library";
+ homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_firestore/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_firestore/default.nix
new file mode 100644
index 00000000000..98778ddf321
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_firestore/default.nix
@@ -0,0 +1,35 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, google_api_core
+, google_cloud_core
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "google-cloud-firestore";
+ version = "0.31.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5349d1a112dc8ff1b96d400a04ab18949503b542c72f526847e2066eef6cbc25";
+ };
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ google_api_core google_cloud_core ];
+
+ # tests were not included with release
+ # See issue https://github.com/googleapis/google-cloud-python/issues/6380
+ doCheck = false;
+
+ checkPhase = ''
+ pytest tests/unit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Google Cloud Firestore API client library";
+ homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_iot/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_iot/default.nix
new file mode 100644
index 00000000000..1e103ab1425
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_iot/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, enum34
+, grpc_google_iam_v1
+, google_api_core
+, pytest
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "google-cloud-iot";
+ version = "0.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b274fb5d38cfaa556a07943d9c9a23ca4aa3ecca51135a70325e1c95fa699474";
+ };
+
+ checkInputs = [ pytest mock ];
+ propagatedBuildInputs = [ enum34 grpc_google_iam_v1 google_api_core ];
+
+ checkPhase = ''
+ pytest tests/unit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Cloud IoT API API client library";
+ homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+ license = licenses.asl20;
+ # maintainers = [ maintainers. ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_kms/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_kms/default.nix
new file mode 100644
index 00000000000..383ed1bdbb9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_kms/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, enum34
+, grpc_google_iam_v1
+, google_api_core
+, pytest
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "google-cloud-kms";
+ version = "1.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0ypn95swjj93kvdcrvmijmh3vzpr499a3krk923a86m8vlcwcvjm";
+ };
+
+ checkInputs = [ pytest mock ];
+ propagatedBuildInputs = [ enum34 grpc_google_iam_v1 google_api_core ];
+
+ checkPhase = ''
+ pytest tests/unit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Cloud Key Management Service (KMS) API API client library";
+ homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_language/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_language/default.nix
new file mode 100644
index 00000000000..c48c0c7b16c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_language/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, enum34
+, google_api_core
+, pytest
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "google-cloud-language";
+ version = "1.1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "e4742b98e2d69ca21864e3218805a9db7e04e06f0672f2385cf6b5361ee35605";
+ };
+
+ checkInputs = [ pytest mock ];
+ propagatedBuildInputs = [ enum34 google_api_core ];
+
+ checkPhase = ''
+ pytest tests/unit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Google Cloud Natural Language API client library";
+ homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_logging/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_logging/default.nix
new file mode 100644
index 00000000000..5dc45ad469d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_logging/default.nix
@@ -0,0 +1,35 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, google_api_core
+, google_cloud_core
+, pytest
+, mock
+, webapp2
+, django
+, flask
+}:
+
+buildPythonPackage rec {
+ pname = "google-cloud-logging";
+ version = "1.10.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a70201ca9f3972ff0e3272c5628b22ed9227e10ac00e570c28087377733632df";
+ };
+
+ checkInputs = [ pytest mock webapp2 django flask ];
+ propagatedBuildInputs = [ google_api_core google_cloud_core ];
+
+ checkPhase = ''
+ pytest tests/unit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Stackdriver Logging API client library";
+ homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_monitoring/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_monitoring/default.nix
new file mode 100644
index 00000000000..da5f06da82a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_monitoring/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, google_api_core
+, pandas
+, pytest
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "google-cloud-monitoring";
+ version = "0.31.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ac0a7657a11459894abf35d3e35e804df0fb81ef35bc18f80199d4ce02440c2d";
+ };
+
+ checkInputs = [ pytest mock ];
+ propagatedBuildInputs = [ google_api_core pandas ];
+
+ checkPhase = ''
+ pytest tests/unit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Stackdriver Monitoring API client library";
+ homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_pubsub/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_pubsub/default.nix
new file mode 100644
index 00000000000..774d494e71a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_pubsub/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, enum34
+, grpc_google_iam_v1
+, google_api_core
+, pytest
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "google-cloud-pubsub";
+ version = "0.39.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "4186386aec02752e982eeb1e399d76f1cf70eed56312934df04bfa68d8cfabf0";
+ };
+
+ checkInputs = [ pytest mock ];
+ propagatedBuildInputs = [ enum34 grpc_google_iam_v1 google_api_core ];
+
+ checkPhase = ''
+ pytest tests/unit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Google Cloud Pub/Sub API client library";
+ homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_redis/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_redis/default.nix
new file mode 100644
index 00000000000..4b574b85923
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_redis/default.nix
@@ -0,0 +1,38 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, enum34
+, google_api_core
+, pytest
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "google-cloud-redis";
+ version = "0.2.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "449fd11699f9ae23ec2ccf1b06681bb90b4c1788f82fbbf1ce1c1d2e77833eb1";
+ };
+
+ checkInputs = [ pytest mock ];
+ propagatedBuildInputs = [ enum34 google_api_core ];
+
+ # requires old version of google-api-core (override)
+ preBuild = ''
+ sed -i "s/'google-api-core\[grpc\] >= 0.1.0, < 0.2.0dev'/'google-api-core'/g" setup.py
+ sed -i "s/google-api-core\[grpc\]<0.2.0dev,>=0.1.0/google-api-core/g" google_cloud_redis.egg-info/requires.txt
+ '';
+
+ checkPhase = ''
+ pytest tests/unit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Google Cloud Memorystore for Redis API client library";
+ homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_resource_manager/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_resource_manager/default.nix
new file mode 100644
index 00000000000..1bdd3635b21
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_resource_manager/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, google_cloud_core
+, google_api_core
+, pytest
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "google-cloud-resource-manager";
+ version = "0.28.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ae43be426532b875c161625626ab759ecef633801e21f14b2ef8380884a2193b";
+ };
+
+ checkInputs = [ pytest mock ];
+ propagatedBuildInputs = [ google_cloud_core google_api_core ];
+
+ checkPhase = ''
+ pytest tests/unit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Google Cloud Resource Manager API client library";
+ homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_runtimeconfig/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_runtimeconfig/default.nix
new file mode 100644
index 00000000000..f347a1f2553
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_runtimeconfig/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, google_api_core
+, google_cloud_core
+, pytest
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "google-cloud-runtimeconfig";
+ version = "0.28.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d5b097a15fa9bb50442ccaf25fdb4622fdf09b8a873abf549c432d8fdc16c2f1";
+ };
+
+ checkInputs = [ pytest mock ];
+ propagatedBuildInputs = [ google_api_core google_cloud_core ];
+
+ checkPhase = ''
+ pytest tests/unit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Google Cloud RuntimeConfig API client library";
+ homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_securitycenter/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_securitycenter/default.nix
new file mode 100644
index 00000000000..f9e4161d80d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_securitycenter/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, enum34
+, grpc_google_iam_v1
+, google_api_core
+, pytest
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "google-cloud-securitycenter";
+ version = "0.1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "11d19052c84dd8e5bc936f5276443e14c2a5ccaae031b2a39415a9f3832a1029";
+ };
+
+ checkInputs = [ pytest mock ];
+ propagatedBuildInputs = [ enum34 grpc_google_iam_v1 google_api_core ];
+
+ checkPhase = ''
+ pytest tests/unit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Cloud Security Command Center API API client library";
+ homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_spanner/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_spanner/default.nix
new file mode 100644
index 00000000000..87f2915d6c5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_spanner/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, grpc_google_iam_v1
+, grpcio-gcp
+, google_api_core
+, google_cloud_core
+, pytest
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "google-cloud-spanner";
+ version = "1.7.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "422a1bd5bded723151faeb4d1b1711f5776d2cc23d5c192cf53634eaf55c74aa";
+ };
+
+ checkInputs = [ pytest mock ];
+ propagatedBuildInputs = [ grpcio-gcp grpc_google_iam_v1 google_api_core google_cloud_core ];
+
+ checkPhase = ''
+ pytest tests/unit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Cloud Spanner API client library";
+ homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_speech/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_speech/default.nix
new file mode 100644
index 00000000000..5fb1cb65320
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_speech/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, google_api_core, pytest, mock }:
+
+buildPythonPackage rec {
+ pname = "google-cloud-speech";
+ version = "1.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1d0ysapqrcwcyiil7nyh8vbj4i6hk9v23rrm4rdhgm0lwax7i0aj";
+ };
+
+ propagatedBuildInputs = [ google_api_core ];
+ checkInputs = [ pytest mock ];
+
+ checkPhase = ''
+ pytest tests/unit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Cloud Speech API enables integration of Google speech recognition into applications.";
+ homepage = "https://googlecloudplatform.github.io/google-cloud-python/latest/speech/";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ vanschelven ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_storage/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_storage/default.nix
new file mode 100644
index 00000000000..efb0c6aacd8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_storage/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, google_resumable_media
+, google_api_core
+, google_cloud_core
+, pytest
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "google-cloud-storage";
+ version = "1.15.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8032e576e2f91a1d3de2355118040c3bcd9916e0453a6b3f64c1b42ed151690a";
+ };
+
+ checkInputs = [ pytest mock ];
+ propagatedBuildInputs = [ google_resumable_media google_api_core google_cloud_core ];
+
+ checkPhase = ''
+ pytest tests/unit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Google Cloud Storage API client library";
+ homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_tasks/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_tasks/default.nix
new file mode 100644
index 00000000000..2036b9aea97
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_tasks/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, enum34
+, grpc_google_iam_v1
+, google_api_core
+, pytest
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "google-cloud-tasks";
+ version = "0.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "3c5f26dd3750f9b222a69c37e85ee1acf198456dfebe1e0058f366dd27729559";
+ };
+
+ checkInputs = [ pytest mock ];
+ propagatedBuildInputs = [ enum34 grpc_google_iam_v1 google_api_core ];
+
+ checkPhase = ''
+ pytest tests/unit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Cloud Tasks API API client library";
+ homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_testutils/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_testutils/default.nix
new file mode 100644
index 00000000000..311815ef331
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_testutils/default.nix
@@ -0,0 +1,35 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, six
+, google_auth
+}:
+
+buildPythonPackage {
+ pname = "google-cloud-testutils";
+ version = "unstable-36ffa923c7037e8b4fdcaa76272cb6267e908a9d";
+
+ # google-cloud-testutils is not "really"
+ # released as a python package
+ # but it is required for google-cloud-* tests
+ # so why not package it as a module
+ src = fetchFromGitHub {
+ owner = "googleapis";
+ repo = "google-cloud-python";
+ rev = "36ffa923c7037e8b4fdcaa76272cb6267e908a9d";
+ sha256 = "1fvcnssmpgf4lfr7l9h7cz984rbc5mfr1j1br12japcib5biwzjy";
+ };
+
+ propagatedBuildInputs = [ six google_auth ];
+
+ postPatch = ''
+ cd test_utils
+ '';
+
+ meta = with stdenv.lib; {
+ description = "System test utilities for google-cloud-python";
+ homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_texttospeech/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_texttospeech/default.nix
new file mode 100644
index 00000000000..74c9370dad3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_texttospeech/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, google_api_core
+, pytest
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "google-cloud-texttospeech";
+ version = "0.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ec1d049cb54fc036887d946ce0391bde481a3da7263e55908eaf9694079ec46f";
+ };
+
+ checkInputs = [ pytest mock ];
+ propagatedBuildInputs = [ google_api_core ];
+
+ checkPhase = ''
+ pytest tests/unit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Google Cloud Text-to-Speech API client library";
+ homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_trace/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_trace/default.nix
new file mode 100644
index 00000000000..1422469784d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_trace/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, google_api_core
+, google_cloud_core
+, pytest
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "google-cloud-trace";
+ version = "0.20.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "438ac953248c93972a5b1a0be24ec9bf75c947cee4159dd731b585ce81911f87";
+ };
+
+ checkInputs = [ pytest mock ];
+ propagatedBuildInputs = [ google_api_core google_cloud_core ];
+
+ checkPhase = ''
+ pytest tests/unit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Stackdriver Trace API client library";
+ homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_translate/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_translate/default.nix
new file mode 100644
index 00000000000..01caeed4866
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_translate/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, google_api_core
+, google_cloud_core
+, pytest
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "google-cloud-translate";
+ version = "1.3.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0f204a1cc95bcd708102ad86665da2dff53c1b9f47d490506e45cc96c93978ad";
+ };
+
+ checkInputs = [ pytest mock ];
+ propagatedBuildInputs = [ google_api_core google_cloud_core ];
+
+ checkPhase = ''
+ pytest tests/unit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Google Cloud Translation API client library";
+ homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_videointelligence/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_videointelligence/default.nix
new file mode 100644
index 00000000000..2da82fc4933
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_videointelligence/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, google_api_core
+, pytest
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "google-cloud-videointelligence";
+ version = "1.6.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "382ec37eab72b37571a2a76ad25c9dda51744dbff76ad9a85cc3791fee0c96ef";
+ };
+
+ checkInputs = [ pytest mock ];
+ propagatedBuildInputs = [ google_api_core ];
+
+ checkPhase = ''
+ pytest tests/unit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Google Cloud Video Intelligence API client library";
+ homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_vision/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_vision/default.nix
new file mode 100644
index 00000000000..aabc73f571c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_vision/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, enum34
+, google_api_core
+, pytest
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "google-cloud-vision";
+ version = "0.35.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "25b537d4b76305e9758fe2f57fd5929a04bf3a46cb4e8d0f731e984f46405be8";
+ };
+
+ checkInputs = [ pytest mock ];
+ propagatedBuildInputs = [ enum34 google_api_core ];
+
+ checkPhase = ''
+ pytest tests/unit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Cloud Vision API API client library";
+ homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_cloud_websecurityscanner/default.nix b/nixpkgs/pkgs/development/python-modules/google_cloud_websecurityscanner/default.nix
new file mode 100644
index 00000000000..afe1f1db11a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_cloud_websecurityscanner/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, google_api_core
+, pytest
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "google-cloud-websecurityscanner";
+ version = "0.1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d965d986053b49e4005b6b6cdf035d7dd4a3b64dcfb6325050b70c97831f8d6f";
+ };
+
+ checkInputs = [ pytest mock ];
+ propagatedBuildInputs = [ google_api_core ];
+
+ checkPhase = ''
+ pytest tests/unit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Google Cloud Web Security Scanner API client library";
+ homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google_resumable_media/default.nix b/nixpkgs/pkgs/development/python-modules/google_resumable_media/default.nix
new file mode 100644
index 00000000000..096f93b017f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google_resumable_media/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+, requests
+, pytest
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "google-resumable-media";
+ version = "0.3.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "3e38923493ca0d7de0ad91c31acfefc393c78586db89364e91cb4f11990e51ba";
+ };
+
+ checkInputs = [ pytest mock ];
+ propagatedBuildInputs = [ six requests ];
+
+ checkPhase = ''
+ py.test tests/unit
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Utilities for Google Media Downloads and Resumable Uploads";
+ homepage = https://github.com/GoogleCloudPlatform/google-resumable-media-python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/googleapis_common_protos/default.nix b/nixpkgs/pkgs/development/python-modules/googleapis_common_protos/default.nix
new file mode 100644
index 00000000000..337624012aa
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/googleapis_common_protos/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, protobuf, pytest }:
+
+buildPythonPackage rec {
+ pname = "googleapis-common-protos";
+ version = "1.5.10";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d564872083af40bbcc7091340f17db778a316525c7c76497d58d11b98ca2aa74";
+ };
+
+ propagatedBuildInputs = [ protobuf ];
+ checkInputs = [ pytest ];
+
+ doCheck = false; # there are no tests
+
+ meta = with stdenv.lib; {
+ description = "Common protobufs used in Google APIs";
+ homepage = "https://github.com/googleapis/googleapis";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ vanschelven ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gpapi/default.nix b/nixpkgs/pkgs/development/python-modules/gpapi/default.nix
new file mode 100644
index 00000000000..13ba4f934e8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gpapi/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi, requests, protobuf, pycryptodome }:
+
+buildPythonPackage rec {
+ version = "0.4.3";
+ pname = "gpapi";
+
+ src = fetchPypi {
+ inherit version pname;
+ sha256 = "9fd1351eb29c4da92d3a0ed2cd4e3c1634ea16afddbca133f6acc54766d61b02";
+ };
+
+ propagatedBuildInputs = [ requests protobuf pycryptodome ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/NoMore201/googleplay-api;
+ license = licenses.gpl3;
+ description = "Google Play Unofficial Python API";
+ maintainers = with maintainers; [ ma27 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gphoto2/default.nix b/nixpkgs/pkgs/development/python-modules/gphoto2/default.nix
new file mode 100644
index 00000000000..9d760b37d37
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gphoto2/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchPypi, buildPythonPackage
+, pkgconfig
+, libgphoto2 }:
+
+buildPythonPackage rec {
+ pname = "gphoto2";
+ version = "2.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "01vcbjsy5zpfd9rzshk2d6150vhb66m5n420j0wd0k0i0p74ya98";
+ };
+
+ nativeBuildInputs = [ pkgconfig ];
+
+ buildInputs = [ libgphoto2 ];
+
+ doCheck = false; # No tests available
+
+ meta = with stdenv.lib; {
+ description = "Python interface to libgphoto2";
+ homepage = https://github.com/jim-easterbrook/python-gphoto2;
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ jfrankenau ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gplaycli/default.nix b/nixpkgs/pkgs/development/python-modules/gplaycli/default.nix
new file mode 100644
index 00000000000..0c7fa8db01c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gplaycli/default.nix
@@ -0,0 +1,26 @@
+{ buildPythonPackage, stdenv, libffi, isPy3k, pyasn1, clint, ndg-httpsclient
+, protobuf, requests, args, gpapi, pyaxmlparser, fetchFromGitHub
+}:
+
+buildPythonPackage rec {
+ pname = "gplaycli";
+ version = "3.25";
+
+ src = fetchFromGitHub {
+ owner = "matlink";
+ repo = "gplaycli";
+ rev = version;
+ sha256 = "1rygx5cg4b1vwpkiaq6jcpbc1ly7cspslv3sy7x8n8ba61ryq6h4";
+ };
+
+ disabled = !isPy3k;
+
+ propagatedBuildInputs = [ libffi pyasn1 clint ndg-httpsclient protobuf requests args gpapi pyaxmlparser ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/matlink/gplaycli;
+ description = "Google Play Downloader via Command line";
+ license = licenses.agpl3Plus;
+ maintainers = with maintainers; [ ma27 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gprof2dot/default.nix b/nixpkgs/pkgs/development/python-modules/gprof2dot/default.nix
new file mode 100644
index 00000000000..48abf5058df
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gprof2dot/default.nix
@@ -0,0 +1,22 @@
+{ lib, fetchFromGitHub, buildPythonApplication, python, graphviz }:
+
+buildPythonApplication {
+ name = "gprof2dot-2017-09-19";
+
+ src = fetchFromGitHub {
+ owner = "jrfonseca";
+ repo = "gprof2dot";
+ rev = "2017.09.19";
+ sha256 = "1b5wvjv5ykbhz7aix7l3y7mg1hxi0vgak4a49gr92sdlz8blj51v";
+ };
+
+ checkInputs = [ graphviz ];
+ checkPhase = "${python.interpreter} tests/test.py";
+
+ meta = with lib; {
+ homepage = https://github.com/jrfonseca/gprof2dot;
+ description = "Python script to convert the output from many profilers into a dot graph";
+ license = licenses.lgpl3Plus;
+ maintainers = [ maintainers.pmiddend ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gpsoauth/default.nix b/nixpkgs/pkgs/development/python-modules/gpsoauth/default.nix
new file mode 100644
index 00000000000..57130a7aa52
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gpsoauth/default.nix
@@ -0,0 +1,36 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, cffi
+, cryptography
+, enum34
+, idna
+, ipaddress
+, ndg-httpsclient
+, pyopenssl
+, pyasn1
+, pycparser
+, pycryptodomex
+, requests
+, six
+}:
+
+buildPythonPackage rec {
+ version = "0.4.1";
+ pname = "gpsoauth";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1c3f45824d45ac3d06b9d9a0c0eccafe1052505d31ac9a698aef8b00fb0dfc37";
+ };
+
+ propagatedBuildInputs = [ cffi cryptography enum34 idna ipaddress ndg-httpsclient pyopenssl pyasn1 pycparser pycryptodomex requests six ];
+
+ meta = with stdenv.lib; {
+ description = "A python client library for Google Play Services OAuth";
+ homepage = "https://github.com/simon-weber/gpsoauth";
+ license = licenses.mit;
+ maintainers = with maintainers; [ jgillich ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gpy/default.nix b/nixpkgs/pkgs/development/python-modules/gpy/default.nix
new file mode 100644
index 00000000000..2a65df18fa5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gpy/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, numpy, scipy, six, paramz, nose, matplotlib, cython }:
+
+buildPythonPackage rec {
+ pname = "GPy";
+ version = "1.9.8";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "33a55bb99fe5c7cdd8df4f8e220e3b87574afde49f5654b3ef7c0445018af4a0";
+ };
+
+ # running tests produces "ImportError: cannot import name 'linalg_cython'"
+ # even though Cython has run
+ checkPhase = "nosetests -d";
+ doCheck = false;
+
+ checkInputs = [ nose ];
+
+ buildInputs = [ cython ];
+
+ propagatedBuildInputs = [ numpy scipy six paramz matplotlib ];
+
+ meta = with stdenv.lib; {
+ description = "Gaussian process framework in Python";
+ homepage = https://sheffieldml.github.io/GPy;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ bcdarwin ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/grammalecte/default.nix b/nixpkgs/pkgs/development/python-modules/grammalecte/default.nix
new file mode 100644
index 00000000000..01c052bfdce
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/grammalecte/default.nix
@@ -0,0 +1,29 @@
+{ lib
+, buildPythonPackage
+, fetchurl
+, bottle
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "grammalecte";
+ version = "0.6.5";
+
+ src = fetchurl {
+ url = "http://www.dicollecte.org/grammalecte/zip/Grammalecte-fr-v${version}.zip";
+ sha256 = "11byjs3ggdhia5f4vyfqfvbbczsfqimll98h98g7hlsrm7vrifb0";
+ };
+
+ propagatedBuildInputs = [ bottle ];
+
+ preBuild = "cd ..";
+
+ disabled = !isPy3k;
+
+ meta = {
+ description = "Grammalecte is an open source grammar checker for the French language";
+ homepage = https://grammalecte.net;
+ license = with lib.licenses; [ gpl3 ];
+ maintainers = with lib.maintainers; [ apeyroux ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/grandalf/default.nix b/nixpkgs/pkgs/development/python-modules/grandalf/default.nix
new file mode 100644
index 00000000000..79413b26544
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/grandalf/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pyparsing
+, future
+, pytest
+, pytestrunner
+}:
+
+buildPythonPackage rec {
+ pname = "grandalf";
+ version = "0.6";
+
+ # fetch from github to acquire tests
+ src = fetchFromGitHub {
+ owner = "bdcht";
+ repo = "grandalf";
+ rev = "v${version}";
+ sha256 = "1f1l288sqna0bca7dwwvyw7wzg9b2613g6vc0g0vfngm7k75b2jg";
+ };
+
+ propagatedBuildInputs = [
+ pyparsing
+ future
+ ];
+
+ checkInputs = [ pytest pytestrunner ];
+
+ patches = [ ./no-setup-requires-pytestrunner.patch ];
+
+ checkPhase = ''
+ pytest tests
+ '';
+
+ meta = with lib; {
+ description = "A python package made for experimentations with graphs and drawing algorithms";
+ homepage = https://github.com/bdcht/grandalf;
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ cmcdragonkai ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/grandalf/no-setup-requires-pytestrunner.patch b/nixpkgs/pkgs/development/python-modules/grandalf/no-setup-requires-pytestrunner.patch
new file mode 100644
index 00000000000..80e12e246eb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/grandalf/no-setup-requires-pytestrunner.patch
@@ -0,0 +1,15 @@
+diff --git a/setup.py b/setup.py
+index 0470622..d574ceb 100755
+--- a/setup.py
++++ b/setup.py
+@@ -75,8 +75,8 @@ setup(
+ # your project is installed. For an analysis of "install_requires" vs pip's
+ # requirements files see:
+ # https://packaging.python.org/en/latest/requirements.html
+- setup_requires=['pytest-runner',],
+- tests_require=['pytest',],
++ setup_requires=[],
++ tests_require=['pytest','pytest-runner',],
+
+ install_requires=['pyparsing','future'],
+
diff --git a/nixpkgs/pkgs/development/python-modules/graph-tool/2.x.x.nix b/nixpkgs/pkgs/development/python-modules/graph-tool/2.x.x.nix
new file mode 100644
index 00000000000..4b0e665de09
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/graph-tool/2.x.x.nix
@@ -0,0 +1,74 @@
+{ stdenv, fetchurl, python, cairomm, sparsehash, pycairo, autoreconfHook
+, pkgconfig, boost, expat, scipy, cgal, gmp, mpfr
+, gobject-introspection, pygobject3, gtk3, matplotlib, ncurses
+, buildPythonPackage
+, fetchpatch
+, pythonAtLeast
+, lib
+}:
+
+buildPythonPackage rec {
+ pname = "graph-tool";
+ format = "other";
+ version = "2.27";
+
+ meta = with stdenv.lib; {
+ description = "Python module for manipulation and statistical analysis of graphs";
+ homepage = https://graph-tool.skewed.de/;
+ license = licenses.gpl3;
+ maintainers = [ stdenv.lib.maintainers.joelmo ];
+ };
+
+ src = fetchurl {
+ url = "https://downloads.skewed.de/graph-tool/graph-tool-${version}.tar.bz2";
+ sha256 = "04s31qwlfcl7bwsggnic8gqcqmx2wsrmfw77nf7vzgnz42bwch27";
+ };
+
+ patches = [
+ # fix build with cgal 4.13 (https://git.skewed.de/count0/graph-tool/issues/509)
+ (fetchpatch {
+ name = "cgal-4.13.patch";
+ url = "https://git.skewed.de/count0/graph-tool/commit/aa39e4a6b42d43fac30c841d176c75aff92cc01a.patch";
+ sha256 = "1578inb4jqwq2fhhwscn5z95nzmaxvmvk30nzs5wirr26iznap4m";
+ })
+ ] ++ (lib.optionals (pythonAtLeast "3.7") [
+ # # python 3.7 compatibility (`async` is now reserved)
+ (fetchpatch {
+ name = "async-reserved.patch";
+ url = "https://git.skewed.de/count0/graph-tool/commit/0407f41a35b6be7c670927fb5dc578cbd0e88be4.patch";
+ sha256 = "1fklznhmfvbb3ykwzyf8p2hiczby6y7r0xnkkjl2jkxlvr24000q";
+ })
+ ]);
+
+ configureFlags = [
+ "--with-python-module-path=$(out)/${python.sitePackages}"
+ "--with-boost-libdir=${boost}/lib"
+ "--with-expat=${expat}"
+ "--with-cgal=${cgal}"
+ "--enable-openmp"
+ ];
+
+ nativeBuildInputs = [ autoreconfHook pkgconfig ];
+ buildInputs = [ ncurses ];
+
+ propagatedBuildInputs = [
+ boost
+ cgal
+ expat
+ gmp
+ mpfr
+ python
+ scipy
+ # optional
+ sparsehash
+ # drawing
+ cairomm
+ gobject-introspection
+ gtk3
+ pycairo
+ matplotlib
+ pygobject3
+ ];
+
+ enableParallelBuilding = false;
+}
diff --git a/nixpkgs/pkgs/development/python-modules/graph_nets/default.nix b/nixpkgs/pkgs/development/python-modules/graph_nets/default.nix
new file mode 100644
index 00000000000..41c13b1fbd4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/graph_nets/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, tensorflow
+, absl-py
+, dm-sonnet
+, networkx
+, numpy
+, setuptools
+, six
+, future
+}:
+
+buildPythonPackage rec {
+ pname = "graph_nets";
+ version = "1.0.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6f27f0358a477d4ec3ab300bf09944b4dfdd5c10b0a5f7ac06bcb32d1327ebe1";
+ };
+
+ buildInputs = [];
+
+ postPatch = ''
+ # https://github.com/deepmind/graph_nets/issues/63
+ sed -i 's/dm-sonnet==1.23/dm-sonnet/' setup.py
+ '';
+
+ propagatedBuildInputs = [
+ tensorflow
+ absl-py
+ dm-sonnet
+ networkx
+ numpy
+ setuptools
+ six
+ future
+ ];
+
+ meta = with lib; {
+ description = "Build Graph Nets in Tensorflow";
+ homepage = https://github.com/deepmind/graph_nets;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ timokau ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/graphite-api/default.nix b/nixpkgs/pkgs/development/python-modules/graphite-api/default.nix
new file mode 100644
index 00000000000..7f1726a2c4b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/graphite-api/default.nix
@@ -0,0 +1,45 @@
+{ buildPythonPackage, fetchFromGitHub, lib, flask, flask-caching, cairocffi, pyparsing, pytz, pyyaml
+, raven, six, structlog, tzlocal, nose, mock, cairo, isPyPy
+}:
+
+buildPythonPackage rec {
+ pname = "graphite-api";
+ version = "1.1.3";
+
+ disabled = isPyPy;
+
+ src = fetchFromGitHub {
+ owner = "brutasse";
+ repo = "graphite-api";
+ rev = version;
+ sha256 = "0sz3kav2024ms2z4q03pigcf080gsr5v774z9bp3zw29k2p47ass";
+ };
+
+ # https://github.com/brutasse/graphite-api/pull/239 rebased onto 1.1.3
+ patches = [ ./flask-caching-rebased.patch ];
+
+ checkPhase = "nosetests";
+
+ propagatedBuildInputs = [
+ flask
+ flask-caching
+ cairocffi
+ pyparsing
+ pytz
+ pyyaml
+ raven
+ six
+ structlog
+ tzlocal
+ ];
+
+ checkInputs = [ nose mock ];
+
+ LD_LIBRARY_PATH = "${cairo.out}/lib";
+
+ meta = with lib; {
+ description = "Graphite-web, without the interface. Just the rendering HTTP API";
+ homepage = https://github.com/brutasse/graphite-api;
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/graphite-api/flask-caching-rebased.patch b/nixpkgs/pkgs/development/python-modules/graphite-api/flask-caching-rebased.patch
new file mode 100644
index 00000000000..2d4a2f29bc4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/graphite-api/flask-caching-rebased.patch
@@ -0,0 +1,132 @@
+diff --git a/graphite_api/config.py b/graphite_api/config.py
+index 5e1e382..dc033a8 100644
+--- a/graphite_api/config.py
++++ b/graphite_api/config.py
+@@ -112,11 +112,11 @@ def configure(app):
+ app.cache = None
+ if 'cache' in config:
+ try:
+- from flask.ext.cache import Cache
++ from flask_caching import Cache
+ except ImportError:
+ warnings.warn("'cache' is provided in the configuration but "
+- "Flask-Cache is not installed. Please `pip install "
+- "Flask-Cache`.")
++ "flask-caching is not installed. Please `pip "
++ "install flask-caching`.")
+ else:
+ cache_conf = {'CACHE_DEFAULT_TIMEOUT': 60,
+ 'CACHE_KEY_PREFIX': 'graphite-api:'}
+diff --git a/requirements.txt b/requirements.txt
+index c68b446..7826b0c 100644
+--- a/requirements.txt
++++ b/requirements.txt
+@@ -1,5 +1,5 @@
+ Flask
+-Flask-Cache
++Flask-Caching
+ cairocffi
+ pyparsing>=1.5.7
+ pytz
+diff --git a/setup.py b/setup.py
+index 0337cbe..df07989 100644
+--- a/setup.py
++++ b/setup.py
+@@ -38,7 +38,7 @@ setup(
+ extras_require={
+ 'sentry': ['raven[flask]'],
+ 'cyanite': ['cyanite'],
+- 'cache': ['Flask-Cache'],
++ 'cache': ['Flask-Caching'],
+ 'statsd': ['statsd'],
+ },
+ zip_safe=False,
+diff --git a/tests/test_render.py b/tests/test_render.py
+index be5609d..a0e7190 100644
+--- a/tests/test_render.py
++++ b/tests/test_render.py
+@@ -8,7 +8,7 @@ from graphite_api._vendor import whisper
+ from . import TestCase, WHISPER_DIR
+
+ try:
+- from flask.ext.cache import Cache
++ from flask_caching import Cache
+ except ImportError:
+ Cache = None
+
+diff --git a/tox.ini b/tox.ini
+index 85a0abb..c820393 100644
+--- a/tox.ini
++++ b/tox.ini
+@@ -47,7 +47,7 @@ basepython = python2.7
+ deps =
+ {[testenv]deps}
+ Flask
+- Flask-Cache
++ Flask-Caching
+ pyparsing
+ mock
+
+@@ -56,7 +56,7 @@ basepython = python3.3
+ deps =
+ {[testenv]deps}
+ Flask
+- Flask-Cache
++ Flask-Caching
+ pyparsing
+
+ [testenv:py34]
+@@ -66,7 +66,7 @@ commands =
+ deps =
+ {[testenv]deps}
+ Flask
+- Flask-Cache
++ Flask-Caching
+ pyparsing
+
+ [testenv:py35]
+@@ -76,7 +76,7 @@ commands =
+ deps =
+ {[testenv]deps}
+ Flask
+- Flask-Cache
++ Flask-Caching
+ pyparsing
+
+ [testenv:pyparsing1]
+@@ -84,7 +84,7 @@ basepython = python2.7
+ deps =
+ {[testenv]deps}
+ Flask
+- Flask-Cache
++ Flask-Caching
+ pyparsing==1.5.7
+ mock
+
+@@ -93,7 +93,7 @@ basepython = pypy
+ deps =
+ {[testenv]deps}
+ Flask
+- Flask-Cache
++ Flask-Caching
+ pyparsing
+ mock
+
+@@ -102,7 +102,7 @@ basepython = python2.7
+ deps =
+ {[testenv]deps}
+ Flask<0.9
+- Flask-Cache
++ Flask-Caching
+ pyparsing
+ mock
+
+@@ -111,7 +111,7 @@ basepython = python2.7
+ deps =
+ {[testenv]deps}
+ Flask<0.10
+- Flask-Cache
++ Flask-Caching
+ pyparsing
+ mock
+
diff --git a/nixpkgs/pkgs/development/python-modules/graphite-web/default.nix b/nixpkgs/pkgs/development/python-modules/graphite-web/default.nix
new file mode 100644
index 00000000000..ecdb76173fa
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/graphite-web/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k, which
+, django, django_tagging, whisper, pycairo, cairocffi, ldap, memcached, pytz, urllib3, scandir
+}:
+if django.version != "1.8.19"
+|| django_tagging.version != "0.4.3"
+then throw "graphite-web should be build with django_1_8 and django_tagging_0_4_3"
+else buildPythonPackage rec {
+ pname = "graphite-web";
+ version = "1.1.5";
+
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d43945d190f2b3a6d18daa6ace9a1bd3695e93dc593f50cd72c2af420883b99d";
+ };
+
+ propagatedBuildInputs = [
+ django django_tagging whisper pycairo cairocffi
+ ldap memcached pytz urllib3 scandir
+ ];
+
+ postInstall = ''
+ wrapProgram $out/bin/run-graphite-devel-server.py \
+ --prefix PATH : ${which}/bin
+ '';
+
+ preConfigure = ''
+ # graphite is configured by storing a local_settings.py file inside the
+ # graphite python package. Since that package is stored in the immutable
+ # Nix store we can't modify it. So how do we configure graphite?
+ #
+ # First of all we rename "graphite.local_settings" to
+ # "graphite_local_settings" so that the settings are not looked up in the
+ # graphite package anymore. Secondly we place a directory containing a
+ # graphite_local_settings.py on the PYTHONPATH in the graphite module
+ # <nixpkgs/nixos/modules/services/monitoring/graphite.nix>.
+ substituteInPlace webapp/graphite/settings.py \
+ --replace "graphite.local_settings" " graphite_local_settings"
+
+ substituteInPlace webapp/graphite/settings.py \
+ --replace "join(WEBAPP_DIR, 'content')" "join('$out', 'webapp', 'content')"
+ '';
+
+ # error: invalid command 'test'
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = http://graphite.wikidot.com/;
+ description = "Enterprise scalable realtime graphing";
+ maintainers = with maintainers; [ offline basvandijk ];
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/graphite_beacon/default.nix b/nixpkgs/pkgs/development/python-modules/graphite_beacon/default.nix
new file mode 100644
index 00000000000..b94a92bc02f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/graphite_beacon/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, tornado, pyyaml, funcparserlib
+}:
+buildPythonPackage rec {
+ pname = "graphite_beacon";
+ version = "0.27.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "03bp4wyfn3xhcqyvs5hnk1n87m4smsmm1p7qp459m7j8hwpbq2ks";
+ };
+
+ propagatedBuildInputs = [ tornado pyyaml funcparserlib ];
+
+ postPatch = ''
+ substituteInPlace requirements.txt --replace "==" ">="
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A simple alerting application for Graphite metrics";
+ homepage = https://github.com/klen/graphite-beacon;
+ maintainers = [ maintainers.offline ];
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/graphitepager/default.nix b/nixpkgs/pkgs/development/python-modules/graphitepager/default.nix
new file mode 100644
index 00000000000..d2ab8d547fd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/graphitepager/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, jinja2, markupsafe, pagerduty, pushbullet, python_magic, python-simple-hipchat
+, pyyaml, redis, requests, six, websocket_client, nose
+}:
+buildPythonPackage rec {
+ pname = "graphitepager";
+ version = "0.2.11";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0v3g1qcgnkpgjzh6phnv13lnk8qjrcs9sq2qg6k0dk5ik31jfk3d";
+ };
+
+ propagatedBuildInputs = [
+ jinja2 markupsafe pagerduty pushbullet python_magic python-simple-hipchat
+ pyyaml redis requests six websocket_client
+ ];
+
+ postPatch = ''
+ substituteInPlace requirements.txt --replace "==" ">="
+ '';
+
+ checkInputs = [ nose ];
+ checkPhase = "nosetests";
+
+ meta = with stdenv.lib; {
+ description = "A simple alerting application for Graphite metrics";
+ homepage = https://github.com/seatgeek/graphite-pager;
+ maintainers = with maintainers; [ offline basvandijk ];
+ license = licenses.bsd2;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/graphviz/default.nix b/nixpkgs/pkgs/development/python-modules/graphviz/default.nix
new file mode 100644
index 00000000000..572fdcaee51
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/graphviz/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, substituteAll
+, graphviz
+, makeFontsConf
+, freefont_ttf
+, mock
+, pytest
+, pytest-mock
+, pytestcov
+}:
+
+buildPythonPackage rec {
+ pname = "graphviz";
+ version = "0.10.1";
+
+ # patch does not apply to PyPI tarball due to different line endings
+ src = fetchFromGitHub {
+ owner = "xflr6";
+ repo = "graphviz";
+ rev = version;
+ sha256 = "1vqk4xy45c72la56j24z9jmjp5a0aa2k32fybnlbkzqjvvbl72d8";
+ };
+
+ patches = [
+ (substituteAll {
+ src = ./hardcode-graphviz-path.patch;
+ inherit graphviz;
+ })
+ ];
+
+ # Fontconfig error: Cannot load default config file
+ FONTCONFIG_FILE = makeFontsConf {
+ fontDirectories = [ freefont_ttf ];
+ };
+
+ checkInputs = [ mock pytest pytest-mock pytestcov ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with lib; {
+ description = "Simple Python interface for Graphviz";
+ homepage = https://github.com/xflr6/graphviz;
+ license = licenses.mit;
+ maintainers = with maintainers; [ dotlambda ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/graphviz/hardcode-graphviz-path.patch b/nixpkgs/pkgs/development/python-modules/graphviz/hardcode-graphviz-path.patch
new file mode 100644
index 00000000000..ad632974c28
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/graphviz/hardcode-graphviz-path.patch
@@ -0,0 +1,95 @@
+diff --git a/graphviz/backend.py b/graphviz/backend.py
+index 704017b..fe4aefe 100644
+--- a/graphviz/backend.py
++++ b/graphviz/backend.py
+@@ -114,7 +114,7 @@ def command(engine, format, filepath=None, renderer=None, formatter=None):
+ suffix = '.'.join(reversed(format_arg))
+ format_arg = ':'.join(format_arg)
+
+- cmd = [engine, '-T%s' % format_arg]
++ cmd = [os.path.join('@graphviz@/bin', engine), '-T%s' % format_arg]
+ rendered = None
+ if filepath is not None:
+ cmd.extend(['-O', filepath])
+@@ -217,7 +217,7 @@ def version():
+ subprocess.CalledProcessError: If the exit status is non-zero.
+ RuntimmeError: If the output cannot be parsed into a version number.
+ """
+- cmd = ['dot', '-V']
++ cmd = ['@graphviz@/bin/dot', '-V']
+ out, _ = run(cmd, check=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+
+ info = out.decode('ascii')
+diff --git a/tests/test_backend.py b/tests/test_backend.py
+index 7ec12f7..2e8550d 100644
+--- a/tests/test_backend.py
++++ b/tests/test_backend.py
+@@ -47,6 +47,7 @@ def test_render_formatter_unknown():
+ render('dot', 'ps', 'nonfilepath', 'ps', '')
+
+
++@pytest.mark.skip(reason='empty $PATH has no effect')
+ @pytest.mark.usefixtures('empty_path')
+ def test_render_missing_executable():
+ with pytest.raises(ExecutableNotFound, match=r'execute'):
+@@ -85,7 +86,7 @@ def test_render_mocked(capsys, mocker, Popen, quiet):
+
+ assert render('dot', 'pdf', 'nonfilepath', quiet=quiet) == 'nonfilepath.pdf'
+
+- Popen.assert_called_once_with(['dot', '-Tpdf', '-O', 'nonfilepath'],
++ Popen.assert_called_once_with(['@graphviz@/bin/dot', '-Tpdf', '-O', 'nonfilepath'],
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE,
+ startupinfo=mocker.ANY)
+@@ -94,6 +95,7 @@ def test_render_mocked(capsys, mocker, Popen, quiet):
+ assert capsys.readouterr() == ('', '' if quiet else 'stderr')
+
+
++@pytest.mark.skip(reason='empty $PATH has no effect')
+ @pytest.mark.usefixtures('empty_path')
+ def test_pipe_missing_executable():
+ with pytest.raises(ExecutableNotFound, match=r'execute'):
+@@ -143,7 +145,7 @@ def test_pipe_pipe_invalid_data_mocked(mocker, py2, Popen, quiet): # noqa: N803
+ assert e.value.returncode is mocker.sentinel.returncode
+ assert e.value.stdout is mocker.sentinel.out
+ assert e.value.stderr is err
+- Popen.assert_called_once_with(['dot', '-Tpng'],
++ Popen.assert_called_once_with(['@graphviz@/bin/dot', '-Tpng'],
+ stdin=subprocess.PIPE,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE,
+@@ -166,7 +168,7 @@ def test_pipe_mocked(capsys, mocker, Popen, quiet): # noqa: N803
+
+ assert pipe('dot', 'png', b'nongraph', quiet=quiet) is mocker.sentinel.out
+
+- Popen.assert_called_once_with(['dot', '-Tpng'],
++ Popen.assert_called_once_with(['@graphviz@/bin/dot', '-Tpng'],
+ stdin=subprocess.PIPE,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE,
+@@ -176,6 +178,7 @@ def test_pipe_mocked(capsys, mocker, Popen, quiet): # noqa: N803
+ assert capsys.readouterr() == ('', '' if quiet else 'stderr')
+
+
++@pytest.mark.skip(reason='empty $PATH has no effect')
+ @pytest.mark.usefixtures('empty_path')
+ def test_version_missing_executable():
+ with pytest.raises(ExecutableNotFound, match=r'execute'):
+@@ -196,7 +199,7 @@ def test_version_parsefail_mocked(mocker, Popen):
+ with pytest.raises(RuntimeError):
+ version()
+
+- Popen.assert_called_once_with(['dot', '-V'],
++ Popen.assert_called_once_with(['@graphviz@/bin/dot', '-V'],
+ stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT,
+ startupinfo=mocker.ANY)
+@@ -211,7 +214,7 @@ def test_version_mocked(mocker, Popen):
+
+ assert version() == (1, 2, 3)
+
+- Popen.assert_called_once_with(['dot', '-V'],
++ Popen.assert_called_once_with(['@graphviz@/bin/dot', '-V'],
+ stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT,
+ startupinfo=mocker.ANY)
diff --git a/nixpkgs/pkgs/development/python-modules/grappelli_safe/default.nix b/nixpkgs/pkgs/development/python-modules/grappelli_safe/default.nix
new file mode 100644
index 00000000000..5a845f733f5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/grappelli_safe/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ version = "0.5.2";
+ pname = "grappelli_safe";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "35b7ccaf9acc54684c73aeefbeaddc63b8a16143bd981bd5b3ebef253def07df";
+ };
+
+ meta = with stdenv.lib; {
+ description = "A snapshot of django-grappelli for the Mezzanine CMS";
+ longDescription = ''
+ grappelli_safe was created to provide a snapshot of the
+ Grappelli admin skin for Django, to be referenced as a
+ dependency for the Mezzanine CMS for Django.
+
+ At the time of grappelli_safe's creation, Grappelli was
+ incorrectly packaged on PyPI, and had also dropped compatibility
+ with Django 1.1 - grappelli_safe was therefore created to
+ address these specific issues.
+ '';
+ homepage = https://github.com/stephenmcd/grappelli-safe;
+ downloadPage = http://pypi.python.org/pypi/grappelli_safe/;
+ license = licenses.free;
+ maintainers = with maintainers; [ prikhi ];
+ platforms = platforms.unix;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/greatfet/default.nix b/nixpkgs/pkgs/development/python-modules/greatfet/default.nix
new file mode 100644
index 00000000000..c6fddd1554c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/greatfet/default.nix
@@ -0,0 +1,34 @@
+{ lib, fetchFromGitHub, buildPythonPackage, isPy3k, future, pyusb, ipython, pygreat }:
+
+buildPythonPackage {
+ pname = "GreatFET";
+ version = "2019.5.1.dev0";
+
+ src = fetchFromGitHub {
+ owner = "greatscottgadgets";
+ repo = "greatfet";
+ rev = "a927f21d59ccface00635146103a807c1d2b0ad8";
+ sha256 = "054vkx4xkbhxhh5grjbs9kw3pjkv1zapp91ysrqr0c8mg1pc7zxv";
+ };
+
+ disabled = !isPy3k;
+
+ propagatedBuildInputs = [ future pyusb ipython pygreat ];
+
+ doCheck = false;
+
+ preBuild = ''
+ cd host
+ echo "$version" > ../VERSION
+ '';
+
+ meta = {
+ description = "Hardware hacking with the greatfet";
+ homepage = https://greatscottgadgets.com/greatfet;
+ license = lib.licenses.bsd3;
+ platforms = lib.platforms.all;
+ maintainers = with lib.maintainers; [ mog ];
+ };
+}
+
+
diff --git a/nixpkgs/pkgs/development/python-modules/green/default.nix b/nixpkgs/pkgs/development/python-modules/green/default.nix
new file mode 100644
index 00000000000..1493c78df83
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/green/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k, colorama, coverage, termstyle, unidecode, mock, backports_shutil_get_terminal_size }:
+
+buildPythonPackage rec {
+ pname = "green";
+ version = "2.13.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ea6e2699a2e58df834d2c845fb2b076c12d4835daecfcb658c6bd5583ebf4b7d";
+ };
+
+ propagatedBuildInputs = [
+ colorama coverage termstyle unidecode
+ ] ++ lib.optionals (!isPy3k) [ mock backports_shutil_get_terminal_size ];
+
+ meta = with lib; {
+ description = "Python test runner";
+ homepage = https://github.com/CleanCut/green;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/greenlet/default.nix b/nixpkgs/pkgs/development/python-modules/greenlet/default.nix
new file mode 100644
index 00000000000..3754f08c28b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/greenlet/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, six
+, isPyPy
+}:
+
+
+buildPythonPackage rec {
+ pname = "greenlet";
+ version = "0.4.15";
+ disabled = isPyPy; # builtin for pypy
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "9416443e219356e3c31f1f918a91badf2e37acf297e2fa13d24d1cc2380f8fbc";
+ };
+
+ propagatedBuildInputs = [ six ];
+
+ # see https://github.com/python-greenlet/greenlet/issues/85
+ preCheck = ''
+ rm tests/test_leaks.py
+ '';
+
+ meta = {
+ homepage = https://pypi.python.org/pypi/greenlet;
+ description = "Module for lightweight in-process concurrent programming";
+ license = lib.licenses.lgpl2;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/grequests/default.nix b/nixpkgs/pkgs/development/python-modules/grequests/default.nix
new file mode 100644
index 00000000000..c42ace2e695
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/grequests/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, requests
+, gevent
+}:
+
+buildPythonPackage rec {
+ pname = "grequests";
+ version = "0.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0lafzax5igbh8y4x0krizr573wjsxz7bhvwygiah6qwrzv83kv5c";
+ };
+
+ # No tests in archive
+ doCheck = false;
+
+ propagatedBuildInputs = [ requests gevent ];
+
+ meta = with stdenv.lib; {
+ description = "Asynchronous HTTP requests";
+ homepage = https://github.com/kennethreitz/grequests;
+ license = with licenses; [ bsd2 ];
+ maintainers = with maintainers; [ matejc ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/grip/default.nix b/nixpkgs/pkgs/development/python-modules/grip/default.nix
new file mode 100644
index 00000000000..d812d58b74c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/grip/default.nix
@@ -0,0 +1,51 @@
+{ stdenv
+, fetchFromGitHub
+, fetchpatch
+# Python bits:
+, buildPythonPackage
+, pytest
+, responses
+, docopt
+, flask
+, markdown
+, path-and-address
+, pygments
+, requests
+, tabulate
+}:
+
+buildPythonPackage rec {
+ pname = "grip";
+ version = "4.5.2";
+
+ src = fetchFromGitHub {
+ owner = "joeyespo";
+ repo = "grip";
+ rev = "v${version}";
+ sha256 = "0hphplnyi903jx7ghfxplg1qlj2kpcav1frr2js7p45pbh5ib9rm";
+ };
+
+ patches = [
+ # Render "front matter", used in our RFC template and elsewhere
+ (fetchpatch {
+ url = https://github.com/joeyespo/grip/pull/249.patch;
+ sha256 = "07za5iymfv647dfrvi6hhj54a96hgjyarys51zbi08c51shqyzpg";
+ })
+ ];
+
+ checkInputs = [ pytest responses ];
+
+ propagatedBuildInputs = [ docopt flask markdown path-and-address pygments requests tabulate ];
+
+ checkPhase = ''
+ export PATH="$PATH:$out/bin"
+ py.test -xm "not assumption"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Preview GitHub Markdown files like Readme locally before committing them";
+ homepage = https://github.com/joeyespo/grip;
+ license = licenses.mit;
+ maintainers = with maintainers; [ koral ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/grpc_google_iam_v1/default.nix b/nixpkgs/pkgs/development/python-modules/grpc_google_iam_v1/default.nix
new file mode 100644
index 00000000000..68ca4b04c0e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/grpc_google_iam_v1/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, grpcio
+, googleapis_common_protos
+}:
+
+buildPythonPackage rec {
+ pname = "grpc-google-iam-v1";
+ version = "0.11.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5009e831dcec22f3ff00e89405249d6a838d1449a46ac8224907aa5b0e0b1aec";
+ };
+
+ propagatedBuildInputs = [ grpcio googleapis_common_protos ];
+
+ meta = with stdenv.lib; {
+ description = "GRPC library for the google-iam-v1 service";
+ homepage = https://github.com/googleapis/googleapis;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/grpcio-gcp/default.nix b/nixpkgs/pkgs/development/python-modules/grpcio-gcp/default.nix
new file mode 100644
index 00000000000..067b27c8ffd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/grpcio-gcp/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, grpcio
+}:
+
+buildPythonPackage rec {
+ pname = "grpcio-gcp";
+ version = "0.2.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "e292605effc7da39b7a8734c719afb12ec4b5362add3528d8afad3aa3aa9057c";
+ };
+
+ propagatedBuildInputs = [ grpcio ];
+
+ meta = with stdenv.lib; {
+ description = "gRPC extensions for Google Cloud Platform";
+ homepage = https://grpc.io;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/grpcio-tools/default.nix b/nixpkgs/pkgs/development/python-modules/grpcio-tools/default.nix
new file mode 100644
index 00000000000..cb6e47a6002
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/grpcio-tools/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchPypi, protobuf, grpcio }:
+
+buildPythonPackage rec {
+ pname = "grpcio-tools";
+ version = "1.23.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "cbc35031ec2b29af36947d085a7fbbcd8b79b84d563adf6156103d82565f78db";
+ };
+
+ enableParallelBuilding = true;
+
+ propagatedBuildInputs = [ protobuf grpcio ];
+
+ # no tests in the package
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Protobuf code generator for gRPC";
+ license = licenses.asl20;
+ homepage = "https://grpc.io/grpc/python/";
+ maintainers = with maintainers; [ vanschelven ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/grpcio/default.nix b/nixpkgs/pkgs/development/python-modules/grpcio/default.nix
new file mode 100644
index 00000000000..65e9e3fb599
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/grpcio/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, darwin
+, six, protobuf, enum34, futures, isPy27, pkgconfig
+, cython}:
+
+buildPythonPackage rec {
+ pname = "grpcio";
+ version = "1.23.0";
+
+ src = fetchFromGitHub {
+ owner = "grpc";
+ repo = "grpc";
+ rev = "v${version}";
+ fetchSubmodules = true;
+ sha256 = "18hf794frncqvq3n4j5n8kip0gp6ch4pf5b3n6809q0c1paf6rp5";
+ };
+
+ nativeBuildInputs = [ cython pkgconfig ]
+ ++ stdenv.lib.optional stdenv.isDarwin darwin.cctools;
+
+ propagatedBuildInputs = [ six protobuf ]
+ ++ stdenv.lib.optionals (isPy27) [ enum34 futures ];
+
+ preBuild = stdenv.lib.optionalString stdenv.isDarwin "unset AR";
+
+ meta = with stdenv.lib; {
+ description = "HTTP/2-based RPC framework";
+ license = licenses.asl20;
+ homepage = "https://grpc.io/grpc/python/";
+ maintainers = with maintainers; [ vanschelven ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gsd/default.nix b/nixpkgs/pkgs/development/python-modules/gsd/default.nix
new file mode 100644
index 00000000000..567cc6f8930
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gsd/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, 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 stdenv.lib; {
+ homepage = https://bitbucket.org/glotzer/gsd;
+ description = "General simulation data file format";
+ license = licenses.bsd2;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gspread/default.nix b/nixpkgs/pkgs/development/python-modules/gspread/default.nix
new file mode 100644
index 00000000000..2a20d610485
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gspread/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, requests
+}:
+
+buildPythonPackage rec {
+ version = "3.1.0";
+ pname = "gspread";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f7ce6c06250f694976c3cd4944e3b607b0810b93383839e5b67c7199ce2f0d3d";
+ };
+
+ propagatedBuildInputs = [ requests ];
+
+ meta = with stdenv.lib; {
+ description = "Google Spreadsheets client library";
+ homepage = "https://github.com/burnash/gspread";
+ license = licenses.mit;
+ };
+
+ # No tests included
+ doCheck = false;
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gssapi/default.nix b/nixpkgs/pkgs/development/python-modules/gssapi/default.nix
new file mode 100644
index 00000000000..00c9b86c5eb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gssapi/default.nix
@@ -0,0 +1,70 @@
+{ stdenv
+, lib
+, buildPythonPackage
+, fetchFromGitHub
+, six
+, enum34
+, decorator
+, nose
+, krb5Full
+, darwin
+, isPy27
+, parameterized
+, shouldbe
+, cython
+, python
+, k5test
+}:
+
+buildPythonPackage rec {
+ pname = "gssapi";
+ version = "1.6.1";
+
+ src = fetchFromGitHub {
+ owner = "pythongssapi";
+ repo = "python-${pname}";
+ rev = "v${version}";
+ sha256 = "0n13vb3v50vr04vrnql2w00gri0gcf08i0pr0q2p4w8scbsw7kjk";
+ };
+
+ # It's used to locate headers
+ postPatch = ''
+ substituteInPlace setup.py \
+ --replace "get_output('krb5-config gssapi --prefix')" "'${lib.getDev krb5Full}'"
+ '';
+
+ nativeBuildInputs = [
+ cython
+ krb5Full
+ ];
+
+ propagatedBuildInputs = [
+ decorator
+ six
+ ] ++ lib.optional isPy27 enum34;
+
+ buildInputs = lib.optionals stdenv.isDarwin [
+ darwin.apple_sdk.frameworks.GSS
+ ];
+
+ checkInputs = [
+ k5test
+ nose
+ parameterized
+ shouldbe
+ six
+ ];
+
+ doCheck = !stdenv.isDarwin; # many failures on darwin
+
+ checkPhase = ''
+ export PYTHONPATH="$out/${python.sitePackages}:$PYTHONPATH"
+ ${python.interpreter} setup.py nosetests
+ '';
+
+ meta = with lib; {
+ homepage = https://pypi.python.org/pypi/gssapi;
+ description = "Python GSSAPI Wrapper";
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gst-python/default.nix b/nixpkgs/pkgs/development/python-modules/gst-python/default.nix
new file mode 100644
index 00000000000..a26b02ee030
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gst-python/default.nix
@@ -0,0 +1,71 @@
+{ buildPythonPackage, fetchurl, meson, ninja, stdenv, pkgconfig, python, pygobject3
+, gobject-introspection, gst-plugins-base, isPy3k
+}:
+
+let
+ pname = "gst-python";
+ version = "1.14.4";
+ name = "${pname}-${version}";
+in buildPythonPackage rec {
+ inherit pname version;
+ format = "other";
+
+ outputs = [ "out" "dev" ];
+
+ src = fetchurl {
+ urls = [
+ "${meta.homepage}/src/gst-python/${name}.tar.xz"
+ "mirror://gentoo/distfiles/${name}.tar.xz"
+ ];
+ sha256 = "06ssx19fs6pg4d32p9ph9w4f0xwmxaw2dxfj17rqkn5njd7v5zfh";
+ };
+
+ patches = [
+ # Meson build does not support Python 2 at the moment
+ # https://bugzilla.gnome.org/show_bug.cgi?id=796092
+ (fetchurl {
+ name = "0002-meson-use-new-python-module.patch";
+ url = https://bugzilla.gnome.org/attachment.cgi?id=371989;
+ sha256 = "1k46nvw175c1wvkqnx783i9d4w9vn431spcl48jb3y224jj3va08";
+ })
+ # Fixes `from gi.repository import Gst` when gst-python's site-package is in
+ # PYTHONPATH
+ (fetchurl {
+ url = https://gitlab.freedesktop.org/gstreamer/gst-python/commit/d64bbc1e0c3c948c148f505cc5f856ce56732880.diff;
+ sha256 = "1n9pxmcl1x491mp47avpcw2a6n71lm0haz6mfas168prkgsk8q3r";
+ })
+ # Fixes python2 build from the above changes
+ (fetchurl {
+ url = https://gitlab.freedesktop.org/gstreamer/gst-python/commit/f79ac2d1434d7ba9717f3e943cfdc76e121eb5dd.diff;
+ sha256 = "17a164b0v36g0kwiqdlkjx6g0pjhcs6ilizck7iky8bgjnmiypm1";
+ })
+ ];
+
+ # TODO: First python_dep in meson.build needs to be removed
+ postPatch = ''
+ substituteInPlace meson.build --replace python3 python${if isPy3k then "3" else "2"}
+ '';
+
+ nativeBuildInputs = [ meson ninja pkgconfig python gobject-introspection gst-plugins-base ];
+
+ mesonFlags = [
+ "-Dpython=python${if isPy3k then "3" else "2"}"
+ "-Dpygi-overrides-dir=${placeholder "out"}/${python.sitePackages}/gi/overrides"
+ ];
+
+ doCheck = true;
+
+ # TODO: Meson setup hook does not like buildPythonPackage
+ # https://github.com/NixOS/nixpkgs/issues/47390
+ installCheckPhase = "meson test --print-errorlogs";
+
+ propagatedBuildInputs = [ gst-plugins-base pygobject3 ];
+
+ meta = {
+ homepage = https://gstreamer.freedesktop.org;
+
+ description = "Python bindings for GStreamer";
+
+ license = stdenv.lib.licenses.lgpl2Plus;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gtimelog/default.nix b/nixpkgs/pkgs/development/python-modules/gtimelog/default.nix
new file mode 100644
index 00000000000..17dc8dea4f8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gtimelog/default.nix
@@ -0,0 +1,43 @@
+{ stdenv
+, buildPythonPackage
+, pkgs
+, python
+, pygobject3
+}:
+
+buildPythonPackage rec {
+ pname = "gtimelog";
+ version = "0.9.1";
+
+ src = pkgs.fetchurl {
+ url = "https://github.com/gtimelog/gtimelog/archive/${version}.tar.gz";
+ sha256 = "0qk8fv8cszzqpdi3wl9vvkym1jil502ycn6sic4jrxckw5s9jsfj";
+ };
+
+ buildInputs = [ pkgs.glibcLocales ];
+
+ LC_ALL="en_US.UTF-8";
+
+ # TODO: AppIndicator
+ propagatedBuildInputs = [ pkgs.gobject-introspection pygobject3 pkgs.makeWrapper pkgs.gtk3 ];
+
+ checkPhase = ''
+ substituteInPlace runtests --replace "/usr/bin/env python" "${python}/bin/${python.executable}"
+ ./runtests
+ '';
+
+ preFixup = ''
+ wrapProgram $out/bin/gtimelog \
+ --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
+ --prefix LD_LIBRARY_PATH ":" "${pkgs.gtk3.out}/lib" \
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A small GTK app for keeping track of your time. It's main goal is to be as unintrusive as possible";
+ homepage = https://mg.pov.lt/gtimelog/;
+ license = licenses.gpl2Plus;
+ maintainers = with maintainers; [ ocharles ];
+ platforms = platforms.unix;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gtts-token/default.nix b/nixpkgs/pkgs/development/python-modules/gtts-token/default.nix
new file mode 100644
index 00000000000..62d709aa921
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gtts-token/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, requests
+}:
+
+buildPythonPackage rec {
+ pname = "gtts-token";
+ version = "1.1.3";
+
+ src = fetchPypi {
+ pname = "gTTS-token";
+ inherit version;
+ sha256 = "9d6819a85b813f235397ef931ad4b680f03d843c9b2a9e74dd95175a4bc012c5";
+ };
+
+ propagatedBuildInputs = [
+ requests
+ ];
+
+ # Tests only in github repo, require working internet connection
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Calculates a token to run the Google Translate text to speech";
+ homepage = https://github.com/boudewijn26/gTTS-token;
+ license = licenses.mit;
+ maintainers = [ maintainers.makefu ];
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/guessit/default.nix b/nixpkgs/pkgs/development/python-modules/guessit/default.nix
new file mode 100644
index 00000000000..494860d4dc2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/guessit/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytestrunner
+, dateutil
+, babelfish
+, rebulk
+}:
+
+buildPythonPackage rec {
+ pname = "guessit";
+ version = "3.0.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1h9f4car26mkck360dxaf9ccdff3inbvpqyz4la2w3zjsz03x01p";
+ };
+
+ # Tests require more packages.
+ doCheck = false;
+ buildInputs = [ pytestrunner ];
+ propagatedBuildInputs = [
+ dateutil babelfish rebulk
+ ];
+
+ meta = {
+ homepage = https://pypi.python.org/pypi/guessit;
+ license = lib.licenses.lgpl3;
+ description = "A library for guessing information from video files";
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/guestfs/default.nix b/nixpkgs/pkgs/development/python-modules/guestfs/default.nix
new file mode 100644
index 00000000000..238a1e9980b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/guestfs/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchurl, libguestfs, qemu }:
+
+buildPythonPackage rec {
+ pname = "guestfs";
+ version = "1.40.1";
+
+ src = fetchurl {
+ url = "http://download.libguestfs.org/python/guestfs-${version}.tar.gz";
+ sha256 = "06a4b5xf1rkhnzfvck91n0z9mlkrgy90s9na5a8da2g4p776lhkf";
+ };
+
+ propagatedBuildInputs = [ libguestfs qemu ];
+
+ meta = with stdenv.lib; {
+ homepage = "http://libguestfs.org/guestfs-python.3.html";
+ description = "Use libguestfs from Python";
+ license = licenses.lgpl2Plus;
+ maintainers = with maintainers; [ grahamc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gumath/default.nix b/nixpkgs/pkgs/development/python-modules/gumath/default.nix
new file mode 100644
index 00000000000..2937b876dec
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gumath/default.nix
@@ -0,0 +1,28 @@
+{ buildPythonPackage
+, numba
+, ndtypes
+, xnd
+, libndtypes
+, libxnd
+, libgumath
+, isPy27
+}:
+
+buildPythonPackage {
+ pname = "gumath";
+ disabled = isPy27;
+ inherit (libgumath) src version meta;
+
+ checkInputs = [ numba ];
+ propagatedBuildInputs = [ ndtypes xnd ];
+
+ postPatch = ''
+ substituteInPlace setup.py \
+ --replace 'add_include_dirs = [".", "libgumath", "ndtypes/python/ndtypes", "xnd/python/xnd"] + INCLUDES' \
+ 'add_include_dirs = [".", "${libndtypes}/include", "${libxnd}/include", "${libgumath}/include"]' \
+ --replace 'add_library_dirs = ["libgumath", "ndtypes/libndtypes", "xnd/libxnd"] + LIBS' \
+ 'add_library_dirs = ["${libndtypes}/lib", "${libxnd}/lib", "${libgumath}/lib"]' \
+ --replace 'add_runtime_library_dirs = ["$ORIGIN"]' \
+ 'add_runtime_library_dirs = ["${libndtypes}/lib", "${libxnd}/lib", "${libgumath}/lib"]'
+ '';
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gunicorn/default.nix b/nixpkgs/pkgs/development/python-modules/gunicorn/default.nix
new file mode 100644
index 00000000000..58d5c414cf0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gunicorn/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, pytest, mock, pytestcov, coverage }:
+
+buildPythonPackage rec {
+ pname = "gunicorn";
+ version = "19.9.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "fa2662097c66f920f53f70621c6c58ca4a3c4d3434205e608e121b5b3b71f4f3";
+ };
+
+ checkInputs = [ pytest mock pytestcov coverage ];
+
+ prePatch = ''
+ substituteInPlace requirements_test.txt --replace "==" ">=" \
+ --replace "coverage>=4.0,<4.4" "coverage"
+ '';
+
+ # Test failures but patch does not apply cleanly
+ # https://github.com/benoitc/gunicorn/commit/f38f717539b1b7296720805b8ae3969c3509b9c1
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://pypi.python.org/pypi/gunicorn;
+ description = "WSGI HTTP Server for UNIX";
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gurobipy/darwin.nix b/nixpkgs/pkgs/development/python-modules/gurobipy/darwin.nix
new file mode 100644
index 00000000000..3bd3b3b2a32
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gurobipy/darwin.nix
@@ -0,0 +1,33 @@
+{ fetchurl, python, xar, cpio, cctools, insert_dylib }:
+assert python.pkgs.isPy27 && python.ucsEncoding == 2;
+python.pkgs.buildPythonPackage
+ { pname = "gurobipy";
+ version = "7.5.2";
+ src = fetchurl
+ { url = "http://packages.gurobi.com/7.5/gurobi7.5.2_mac64.pkg";
+ sha256 = "10zgn8741x48xjdiknj59x66mwj1azhihi1j5a1ajxi2n5fsak2h";
+ };
+ buildInputs = [ xar cpio cctools insert_dylib ];
+ unpackPhase =
+ ''
+ xar -xf $src
+ zcat gurobi*mac64tar.pkg/Payload | cpio -i
+ tar xf gurobi*_mac64.tar.gz
+ sourceRoot=$(echo gurobi*/*64)
+ runHook postUnpack
+ '';
+ patches = [ ./no-clever-setup.patch ];
+ postInstall = "mv lib/lib*.so $out/lib";
+ postFixup =
+ ''
+ install_name_tool -change \
+ /System/Library/Frameworks/Python.framework/Versions/2.7/Python \
+ ${python}/lib/libpython2.7.dylib \
+ $out/lib/python2.7/site-packages/gurobipy/gurobipy.so
+ install_name_tool -change /Library/gurobi752/mac64/lib/libgurobi75.so \
+ $out/lib/libgurobi75.so \
+ $out/lib/python2.7/site-packages/gurobipy/gurobipy.so
+ insert_dylib --inplace $out/lib/libaes75.so \
+ $out/lib/python2.7/site-packages/gurobipy/gurobipy.so
+ '';
+ }
diff --git a/nixpkgs/pkgs/development/python-modules/gurobipy/linux.nix b/nixpkgs/pkgs/development/python-modules/gurobipy/linux.nix
new file mode 100644
index 00000000000..d572b10fd62
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gurobipy/linux.nix
@@ -0,0 +1,21 @@
+{ fetchurl, python }:
+assert python.pkgs.isPy27;
+
+python.pkgs.buildPythonPackage
+ { pname = "gurobipy";
+ version = "7.5.2";
+ src = fetchurl
+ { url = "http://packages.gurobi.com/7.5/gurobi7.5.2_linux64.tar.gz";
+ sha256 = "13i1dl22lnmg7z9mb48zl3hy1qnpwdpr0zl2aizda0qnb7my5rnj";
+ };
+ setSourceRoot = "sourceRoot=$(echo gurobi*/*64)";
+ patches = [ ./no-clever-setup.patch ];
+ postInstall = "mv lib/libaes*.so* lib/libgurobi*.so* $out/lib";
+ postFixup =
+ ''
+ patchelf --set-rpath $out/lib \
+ $out/lib/python2.7/site-packages/gurobipy/gurobipy.so
+ patchelf --add-needed libaes75.so \
+ $out/lib/python2.7/site-packages/gurobipy/gurobipy.so
+ '';
+ }
diff --git a/nixpkgs/pkgs/development/python-modules/gurobipy/no-clever-setup.patch b/nixpkgs/pkgs/development/python-modules/gurobipy/no-clever-setup.patch
new file mode 100644
index 00000000000..c71ac7d6863
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gurobipy/no-clever-setup.patch
@@ -0,0 +1,55 @@
+diff -Naur a/setup.py b/setup.py
+--- a/setup.py 2017-12-22 10:52:43.730264611 -0500
++++ b/setup.py 2017-12-22 10:53:27.660104199 -0500
+@@ -15,30 +15,6 @@
+ from distutils.command.install import install
+ import os,sys,shutil
+
+-class GurobiClean(Command):
+- description = "remove the build directory"
+- user_options = []
+- def initialize_options(self):
+- self.cwd = None
+- def finalize_options(self):
+- self.cwd = os.path.dirname(os.path.realpath(__file__))
+- def run(self):
+- assert os.getcwd() == self.cwd, 'Must be run from setup.py directory: %s' % self.cwd
+- build_dir = os.path.join(os.getcwd(), "build")
+- if os.path.exists(build_dir):
+- print('removing %s' % build_dir)
+- shutil.rmtree(build_dir)
+-
+-class GurobiInstall(install):
+-
+- # Calls the default run command, then deletes the build area
+- # (equivalent to "setup clean --all").
+- def run(self):
+- install.run(self)
+- c = GurobiClean(self.distribution)
+- c.finalize_options()
+- c.run()
+-
+ License = """
+ This software is covered by the Gurobi End User License Agreement.
+ By completing the Gurobi installation process and using the software,
+@@ -79,20 +55,4 @@
+ packages = ['gurobipy'],
+ package_dir={'gurobipy' : srcpath },
+ package_data = {'gurobipy' : [srcfile] },
+- cmdclass={'install' : GurobiInstall,
+- 'clean' : GurobiClean }
+ )
+-
+-if os.name == 'posix' and sys.platform == 'darwin': # update Mac paths
+- verstr = sys.version[:3]
+- default = '/Library/Frameworks/Python.framework/Versions/%s/Python' % verstr
+- default = '/System'+default if verstr == '2.7' else default
+- modified = sys.prefix + '/Python'
+- if default != modified:
+- import subprocess
+- from distutils.sysconfig import get_python_lib
+- sitelib = get_python_lib() + '/gurobipy/gurobipy.so'
+- if not os.path.isfile(modified): # Anaconda
+- libver = verstr if verstr == '2.7' else verstr+'m'
+- modified = sys.prefix + '/lib/libpython%s.dylib' % libver # For Anaconda
+- subprocess.call(('install_name_tool', '-change', default, modified, sitelib))
diff --git a/nixpkgs/pkgs/development/python-modules/guzzle_sphinx_theme/default.nix b/nixpkgs/pkgs/development/python-modules/guzzle_sphinx_theme/default.nix
new file mode 100644
index 00000000000..08b42b80799
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/guzzle_sphinx_theme/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, sphinx, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "guzzle_sphinx_theme";
+ version = "0.7.11";
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1rnkzrrsbnifn3vsb4pfaia3nlvgvw6ndpxp7lzjrh23qcwid34v";
+ };
+
+ doCheck = false; # no tests
+
+ propagatedBuildInputs = [ sphinx ];
+
+ meta = with stdenv.lib; {
+ description = "Sphinx theme used by Guzzle: http://guzzlephp.org";
+ homepage = https://github.com/guzzle/guzzle_sphinx_theme/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ flokli ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gym/default.nix b/nixpkgs/pkgs/development/python-modules/gym/default.nix
new file mode 100644
index 00000000000..e27aed0627b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gym/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage, fetchPypi
+, numpy, requests, six, pyglet, scipy
+}:
+
+buildPythonPackage rec {
+ pname = "gym";
+ version = "0.12.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "027422f59b662748eae3420b804e35bbf953f62d40cd96d2de9f842c08de822e";
+ };
+
+ propagatedBuildInputs = [
+ numpy requests six pyglet scipy
+ ];
+
+ # The test needs MuJoCo that is not free library.
+ doCheck = false;
+
+ meta = with lib; {
+ description = "A toolkit by OpenAI for developing and comparing your reinforcement learning agents";
+ homepage = https://gym.openai.com/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ hyphon81 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gyp/default.nix b/nixpkgs/pkgs/development/python-modules/gyp/default.nix
new file mode 100644
index 00000000000..3cd89a7d0e1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gyp/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, buildPythonPackage
+, fetchgit
+, isPy3k
+}:
+
+buildPythonPackage {
+ pname = "gyp";
+ version = "2015-06-11";
+ disabled = isPy3k;
+
+ src = fetchgit {
+ url = "https://chromium.googlesource.com/external/gyp.git";
+ rev = "fdc7b812f99e48c00e9a487bd56751bbeae07043";
+ sha256 = "1imgxsl4mr1662vsj2mlnpvvrbz71yk00w8p85vi5bkgmc6awgiz";
+ };
+
+ prePatch = stdenv.lib.optionals stdenv.isDarwin ''
+ sed -i 's/raise.*No Xcode or CLT version detected.*/version = "7.0.0"/' pylib/gyp/xcode_emulation.py
+ '';
+
+ patches = stdenv.lib.optionals stdenv.isDarwin [
+ ./no-darwin-cflags.patch
+ ./no-xcode.patch
+ ];
+
+ meta = with stdenv.lib; {
+ description = "A tool to generate native build files";
+ homepage = https://chromium.googlesource.com/external/gyp/+/master/README.md;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ codyopel ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gyp/no-darwin-cflags.patch b/nixpkgs/pkgs/development/python-modules/gyp/no-darwin-cflags.patch
new file mode 100644
index 00000000000..798d0f0b16d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gyp/no-darwin-cflags.patch
@@ -0,0 +1,40 @@
+Index: gyp/pylib/gyp/xcode_emulation.py
+===================================================================
+--- gyp/pylib/gyp/xcode_emulation.py
++++ gyp/pylib/gyp/xcode_emulation.py
+@@ -483,9 +483,6 @@
+ if self._Test('GCC_CHAR_IS_UNSIGNED_CHAR', 'YES', default='NO'):
+ cflags.append('-funsigned-char')
+
+- if self._Test('GCC_CW_ASM_SYNTAX', 'YES', default='YES'):
+- cflags.append('-fasm-blocks')
+-
+ if 'GCC_DYNAMIC_NO_PIC' in self._Settings():
+ if self._Settings()['GCC_DYNAMIC_NO_PIC'] == 'YES':
+ cflags.append('-mdynamic-no-pic')
+@@ -495,9 +492,6 @@
+ # mdynamic-no-pic by default for executable and possibly static lib
+ # according to mento
+
+- if self._Test('GCC_ENABLE_PASCAL_STRINGS', 'YES', default='YES'):
+- cflags.append('-mpascal-strings')
+-
+ self._Appendf(cflags, 'GCC_OPTIMIZATION_LEVEL', '-O%s', default='s')
+
+ if self._Test('GCC_GENERATE_DEBUGGING_SYMBOLS', 'YES', default='YES'):
+@@ -553,7 +541,6 @@
+ # TODO: Supporting fat binaries will be annoying.
+ self._WarnUnimplemented('ARCHS')
+ archs = ['i386']
+- cflags.append('-arch ' + archs[0])
+
+ if archs[0] in ('i386', 'x86_64'):
+ if self._Test('GCC_ENABLE_SSE3_EXTENSIONS', 'YES', default='NO'):
+@@ -811,7 +798,6 @@
+ # TODO: Supporting fat binaries will be annoying.
+ self._WarnUnimplemented('ARCHS')
+ archs = ['i386']
+- ldflags.append('-arch ' + archs[0])
+
+ # Xcode adds the product directory by default.
+ ldflags.append('-L' + product_dir)
diff --git a/nixpkgs/pkgs/development/python-modules/gyp/no-xcode.patch b/nixpkgs/pkgs/development/python-modules/gyp/no-xcode.patch
new file mode 100644
index 00000000000..d202b722474
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gyp/no-xcode.patch
@@ -0,0 +1,12 @@
+--- a/pylib/gyp/xcode_emulation.py
++++ b/pylib/gyp/xcode_emulation.py
+@@ -1470,7 +1470,8 @@
+ sdk_root = xcode_settings._SdkRoot(configuration)
+ if not sdk_root:
+ sdk_root = xcode_settings._XcodeSdkPath('')
+- env['SDKROOT'] = sdk_root
++ if sdk_root:
++ env['SDKROOT'] = sdk_root
+
+ if not additional_settings:
+ additional_settings = {}
diff --git a/nixpkgs/pkgs/development/python-modules/h11/default.nix b/nixpkgs/pkgs/development/python-modules/h11/default.nix
new file mode 100644
index 00000000000..361ac0c59d1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/h11/default.nix
@@ -0,0 +1,33 @@
+{ lib, buildPythonPackage, fetchPypi, pytest, fetchpatch }:
+
+buildPythonPackage rec {
+ pname = "h11";
+ version = "0.9.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1qfad70h59hya21vrzz8dqyyaiqhac0anl2dx3s3k80gpskvrm1k";
+ };
+
+ patches = [
+ # pytest5 compatability
+ (fetchpatch {
+ url = https://github.com/python-hyper/h11/commit/241e220493a511a5f5a5d472cb88d72661a92ab1.patch;
+ sha256 = "1s3ipf9s41m1lksws3xv3j133q7jnjdqvmgk4sfnm8q7li2dww39";
+ })
+ ];
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ # Some of the tests use localhost networking.
+ __darwinAllowLocalNetworking = true;
+
+ meta = with lib; {
+ description = "Pure-Python, bring-your-own-I/O implementation of HTTP/1.1";
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/h2/default.nix b/nixpkgs/pkgs/development/python-modules/h2/default.nix
new file mode 100644
index 00000000000..c267b6d4726
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/h2/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, enum34, hpack, hyperframe }:
+
+buildPythonPackage rec {
+ pname = "h2";
+ version = "3.1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1d1svhixk3hr78ph3nx8wi7sagx1xrvm712mmk028i2rhb92p8xq";
+ };
+
+ propagatedBuildInputs = [ enum34 hpack hyperframe ];
+
+ meta = with stdenv.lib; {
+ description = "HTTP/2 State-Machine based protocol implementation";
+ homepage = "http://hyper.rtfd.org/";
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/h5py/default.nix b/nixpkgs/pkgs/development/python-modules/h5py/default.nix
new file mode 100644
index 00000000000..23e659ea7ae
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/h5py/default.nix
@@ -0,0 +1,52 @@
+{ stdenv, fetchPypi, isPy27, python, buildPythonPackage
+, numpy, hdf5, cython, six, pkgconfig, unittest2, fetchpatch
+, mpi4py ? null, openssh }:
+
+assert hdf5.mpiSupport -> mpi4py != null && hdf5.mpi == mpi4py.mpi;
+
+with stdenv.lib;
+
+let
+ mpi = hdf5.mpi;
+ mpiSupport = hdf5.mpiSupport;
+in buildPythonPackage rec {
+ version = "2.9.0";
+ pname = "h5py";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "9d41ca62daf36d6b6515ab8765e4c8c4388ee18e2a665701fef2b41563821002";
+ };
+
+ patches = [ ( fetchpatch {
+ # Skip a test that probes an already fixed bug in HDF5 (upstream patch)
+ url = "https://github.com/h5py/h5py/commit/141eafa531c6c09a06efe6a694251a1eea84908d.patch";
+ sha256 = "0lmdn0gznr7gadx7qkxybl945fvwk6r0cc4lg3ylpf8ril1975h8";
+ })];
+
+ configure_flags = "--hdf5=${hdf5}" + optionalString mpiSupport " --mpi";
+
+ postConfigure = ''
+ ${python.executable} setup.py configure ${configure_flags}
+
+ # Needed to run the tests reliably. See:
+ # https://bitbucket.org/mpi4py/mpi4py/issues/87/multiple-test-errors-with-openmpi-30
+ ${optionalString mpiSupport "export OMPI_MCA_rmaps_base_oversubscribe=yes"}
+ '';
+
+ preBuild = if mpiSupport then "export CC=${mpi}/bin/mpicc" else "";
+
+ checkInputs = optional isPy27 unittest2 ++ [ openssh ];
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [ hdf5 cython ]
+ ++ optional mpiSupport mpi;
+ propagatedBuildInputs = [ numpy six]
+ ++ optionals mpiSupport [ mpi4py openssh ];
+
+ meta = {
+ description =
+ "Pythonic interface to the HDF5 binary data format";
+ homepage = http://www.h5py.org/;
+ license = stdenv.lib.licenses.bsd2;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ha-ffmpeg/default.nix b/nixpkgs/pkgs/development/python-modules/ha-ffmpeg/default.nix
new file mode 100644
index 00000000000..0b702901ae7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ha-ffmpeg/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k
+, ffmpeg, async-timeout }:
+
+buildPythonPackage rec {
+ pname = "ha-ffmpeg";
+ version = "1.11";
+
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "386cc5bbec3a341d8bafec1c524bd8e64f41f9be8195808dec80f76661bf1cc3";
+ };
+
+ buildInputs = [ ffmpeg ];
+
+ propagatedBuildInputs = [ async-timeout ];
+
+ # only manual tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/pvizeli/ha-ffmpeg;
+ description = "Library for home-assistant to handle ffmpeg";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ peterhoeg ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/habanero/default.nix b/nixpkgs/pkgs/development/python-modules/habanero/default.nix
new file mode 100644
index 00000000000..b58d4a30020
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/habanero/default.nix
@@ -0,0 +1,29 @@
+{ buildPythonPackage, lib, fetchFromGitHub
+, requests
+, nose, vcrpy
+}:
+
+buildPythonPackage rec {
+ pname = "habanero";
+ version = "0.6.0";
+
+ # Install from Pypi is failing because of a missing file (Changelog.rst)
+ src = fetchFromGitHub {
+ owner = "sckott";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "1l2cgl6iiq8jff2w2pib6w8dwaj8344crhwsni2zzq0p44dwi13d";
+ };
+
+ propagatedBuildInputs = [ requests ];
+
+ checkInputs = [ nose vcrpy ];
+ checkPhase = "make test";
+
+ meta = {
+ description = "Python interface to Library Genesis";
+ homepage = https://habanero.readthedocs.io/en/latest/;
+ license = lib.licenses.mit;
+ maintainers = [ lib.maintainers.nico202 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/handout/default.nix b/nixpkgs/pkgs/development/python-modules/handout/default.nix
new file mode 100644
index 00000000000..9a398080609
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/handout/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, imageio, imageio-ffmpeg }:
+
+buildPythonPackage rec {
+ pname = "handout";
+ version = "1.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "16y1wqx8j4kf6fa94x22njrkdfb2cfi0dvc7a4q2qsa8m3ri0b43";
+ };
+
+ propagatedBuildInputs = [ imageio imageio-ffmpeg ];
+
+ meta = with stdenv.lib; {
+ description = "Turn Python scripts into handouts with Markdown and figures";
+ homepage = "https://github.com/danijar/handout";
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ averelld ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/hawkauthlib/default.nix b/nixpkgs/pkgs/development/python-modules/hawkauthlib/default.nix
new file mode 100644
index 00000000000..46e49ba6b88
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/hawkauthlib/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchgit
+, requests
+, webob
+}:
+
+buildPythonPackage rec {
+ pname = "hawkauthlib";
+ version = "0.1.1";
+
+ src = fetchgit {
+ url = https://github.com/mozilla-services/hawkauthlib.git;
+ rev = "refs/tags/v${version}";
+ sha256 = "0mr1mpx4j9q7sch9arwfvpysnpf2p7ijy7072wilxm8pnj0bwvsi";
+ };
+
+ propagatedBuildInputs = [ requests webob ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/mozilla-services/hawkauthlib;
+ description = "Hawk Access Authentication protocol";
+ license = licenses.mpl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/hbmqtt/default.nix b/nixpkgs/pkgs/development/python-modules/hbmqtt/default.nix
new file mode 100644
index 00000000000..cd3264b78bb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/hbmqtt/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k
+, transitions, websockets, passlib, docopt, pyyaml, nose }:
+
+buildPythonPackage rec {
+ pname = "hbmqtt";
+ version = "0.9.5";
+
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "9886b1c8321d16e971376dc609b902e0c84118846642b5e09f08a4ca876a7f2a";
+ };
+
+ propagatedBuildInputs = [ transitions websockets passlib docopt pyyaml ];
+
+ checkInputs = [ nose ];
+
+ checkPhase = ''
+ nosetests -e test_connect_tcp
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/beerfactory/hbmqtt;
+ description = "MQTT client/broker using Python asynchronous I/O";
+ license = licenses.mit;
+ maintainers = with maintainers; [ dotlambda ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/hcs_utils/default.nix b/nixpkgs/pkgs/development/python-modules/hcs_utils/default.nix
new file mode 100644
index 00000000000..51d42e5c8b7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/hcs_utils/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, pythonOlder, buildPythonPackage, fetchPypi, six, glibcLocales, pytest }:
+
+buildPythonPackage rec {
+ pname = "hcs_utils";
+ version = "2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "04xq69hrys8lf9kp8pva0c4aphjjfw412km7c32ydkwq0i59rhp2";
+ };
+
+ LC_ALL="en_US.UTF-8";
+
+ checkPhase = ''
+ # root does not has /root as home in sandbox
+ py.test -k 'not test_expand' hcs_utils/test
+ '';
+
+ buildInputs = [ six glibcLocales ];
+ checkInputs = [ pytest ];
+
+ disabled = pythonOlder "3.4";
+
+ meta = with stdenv.lib; {
+ description = "Library collecting some useful snippets";
+ homepage = https://pypi.python.org/pypi/hcs_utils/1.3;
+ license = licenses.isc;
+ maintainers = with maintainers; [ lovek323 ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/hdbscan/default.nix b/nixpkgs/pkgs/development/python-modules/hdbscan/default.nix
new file mode 100644
index 00000000000..02f888b175d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/hdbscan/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, cython
+, numpy
+, nose
+, scipy
+, scikitlearn
+, fetchPypi
+, joblib
+}:
+
+buildPythonPackage rec {
+ pname = "hdbscan";
+ version = "0.8.22";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5cfdc25375123eb9a72363449979141cc928c1953f220f0f81d7baabcaccec2d";
+ };
+
+ checkInputs = [ nose ];
+
+ nativeBuildInputs = [ cython ];
+ propagatedBuildInputs = [ numpy scipy scikitlearn joblib ];
+
+ meta = with lib; {
+ description = "Hierarchical Density-Based Spatial Clustering of Applications with Noise, a clustering algorithm with a scikit-learn compatible API";
+ homepage = https://github.com/scikit-learn-contrib/hdbscan;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ ixxie ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/hdmedians/default.nix b/nixpkgs/pkgs/development/python-modules/hdmedians/default.nix
new file mode 100644
index 00000000000..3a573f69c70
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/hdmedians/default.nix
@@ -0,0 +1,35 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, cython
+, numpy
+}:
+
+buildPythonPackage rec {
+ version = "0.13";
+ pname = "hdmedians";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "230f80e064d905c49a1941af1b7e806e2f22b3c9a90ad5c21fd17d72636ea277";
+ };
+
+ # nose was specified in setup.py as a build dependency...
+ buildInputs = [ cython nose ];
+ propagatedBuildInputs = [ numpy ];
+
+ # cannot resolve path for packages in tests
+ doCheck = false;
+
+ checkPhase = ''
+ nosetests
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/daleroberts/hdmedians;
+ description = "High-dimensional medians";
+ license = licenses.gpl3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/heapdict/default.nix b/nixpkgs/pkgs/development/python-modules/heapdict/default.nix
new file mode 100644
index 00000000000..34c01091ddf
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/heapdict/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k }:
+
+buildPythonPackage rec {
+ pname = "HeapDict";
+ version = "1.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0nhvxyjq6fp6zd7jzmk5x4fg6xhakqx9lhkp5yadzkqn0rlf7ja0";
+ };
+
+ doCheck = !isPy3k;
+
+ meta = with stdenv.lib; {
+ description = "a heap with decrease-key and increase-key operations.";
+ homepage = http://stutzbachenterprises.com;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ teh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/helper/default.nix b/nixpkgs/pkgs/development/python-modules/helper/default.nix
new file mode 100644
index 00000000000..8aa6e1e921f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/helper/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, fetchPypi, pyyaml, mock }:
+
+buildPythonPackage rec {
+ pname = "helper";
+ version = "2.4.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0p56dvjpaz9wnr0ik2wmvgqjf9ji180bhjky7q272l5dan94lgd6";
+ };
+
+ checkInputs = [ mock ];
+ propagatedBuildInputs = [ pyyaml ];
+
+ # No tests in the pypi tarball
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Development library for quickly writing configurable applications and daemons";
+ homepage = https://helper.readthedocs.org/;
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/hetzner/default.nix b/nixpkgs/pkgs/development/python-modules/hetzner/default.nix
new file mode 100644
index 00000000000..2909d2c2a6c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/hetzner/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+}:
+
+buildPythonPackage rec {
+ pname = "hetzner";
+ version = "0.8.2";
+
+ src = fetchFromGitHub {
+ repo = "hetzner";
+ owner = "aszlig";
+ rev = "v${version}";
+ sha256 = "152fklxff08s71v0b78yp5ajwpqyszm3sd7j0qsrwa2x9ik4968h";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/RedMoonStudios/hetzner";
+ description = "High-level Python API for accessing the Hetzner robot";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ aszlig ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/hg-git/default.nix b/nixpkgs/pkgs/development/python-modules/hg-git/default.nix
new file mode 100644
index 00000000000..452b946a042
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/hg-git/default.nix
@@ -0,0 +1,36 @@
+{ stdenv
+, 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://bitbucket.org/durin42/hg-git/issues/264/unexpected-keyword-argument-createopts-hg
+ patches =
+ fetchpatch {
+ url = "https://bitbucket.org/rsalmaso/hg-git/commits/a778506fd4be0bf1afa75755f6ee9260fa234a0f/raw";
+ sha256 = "12r4qzbc5xcqwv0kvf8g4wjji7n45421zkbf6i75vyi4nl6n4j15";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Push and pull from a Git server using Mercurial";
+ homepage = http://hg-git.github.com/;
+ maintainers = with maintainers; [ koral ];
+ license = stdenv.lib.licenses.gpl2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/hglib/default.nix b/nixpkgs/pkgs/development/python-modules/hglib/default.nix
new file mode 100644
index 00000000000..eab8ffe2bfd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/hglib/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, buildPythonPackage, fetchPypi, substituteAll, python, nose, mercurial }:
+
+buildPythonPackage rec {
+ pname = "python-hglib";
+ version = "2.6.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "7c1fa0cb4d332dd6ec8409b04787ceba4623e97fb378656f7cab0b996c6ca3b2";
+ };
+
+ patches = [
+ (substituteAll {
+ src = ./hgpath.patch;
+ hg = "${mercurial}/bin/hg";
+ })
+ ];
+
+ checkInputs = [ nose ];
+
+ checkPhase = ''
+ ${python.interpreter} test.py --with-hg "${mercurial}/bin/hg"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Mercurial Python library";
+ homepage = "http://selenic.com/repo/python-hglib";
+ license = licenses.mit;
+ maintainers = with maintainers; [ dfoxfranke ];
+ platforms = platforms.all;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/hglib/hgpath.patch b/nixpkgs/pkgs/development/python-modules/hglib/hgpath.patch
new file mode 100644
index 00000000000..2141aa32a13
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/hglib/hgpath.patch
@@ -0,0 +1,24 @@
+diff -r 2d0ec6097d78 hglib/__init__.py
+--- a/hglib/__init__.py Mon Apr 30 15:43:29 2018 +0900
++++ b/hglib/__init__.py Tue Mar 19 23:30:01 2019 +0100
+@@ -1,7 +1,7 @@
+ import subprocess
+ from hglib import client, util, error
+
+-HGPATH = 'hg'
++HGPATH = '@hg@'
+
+ def open(path=None, encoding=None, configs=None):
+ '''starts a cmdserver for the given path (or for a repository found
+diff -r 2d0ec6097d78 tests/common.py
+--- a/tests/common.py Mon Apr 30 15:43:29 2018 +0900
++++ b/tests/common.py Tue Mar 19 23:30:01 2019 +0100
+@@ -26,7 +26,7 @@
+ os.mkdir(self._testtmp)
+ os.chdir(self._testtmp)
+ # until we can run norepo commands in the cmdserver
+- os.system('hg init')
++ os.system('@hg@ init')
+ self.client = hglib.open()
+
+ def tearDown(self):
diff --git a/nixpkgs/pkgs/development/python-modules/hgsvn/default.nix b/nixpkgs/pkgs/development/python-modules/hgsvn/default.nix
new file mode 100644
index 00000000000..056415df4f6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/hgsvn/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, 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 stdenv.lib; {
+ homepage = https://pypi.python.org/pypi/hgsvn;
+ description = "A set of scripts to work locally on Subversion checkouts using Mercurial";
+ license = licenses.gpl2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/hidapi/default.nix b/nixpkgs/pkgs/development/python-modules/hidapi/default.nix
new file mode 100644
index 00000000000..2d78a45da8c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/hidapi/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, libusb1, udev, darwin, fetchPypi, buildPythonPackage, cython }:
+
+buildPythonPackage rec {
+ pname = "hidapi";
+ version = "0.7.99.post21";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "e0be1aa6566979266a8fc845ab0e18613f4918cf2c977fe67050f5dc7e2a9a97";
+ };
+
+ propagatedBuildInputs =
+ stdenv.lib.optionals stdenv.isLinux [ libusb1 udev ] ++
+ stdenv.lib.optionals stdenv.isDarwin [ darwin.IOKit darwin.apple_sdk.frameworks.CoreFoundation ] ++
+ [ cython ];
+
+ # Fix the USB backend library lookup
+ postPatch = stdenv.lib.optionalString stdenv.isLinux ''
+ libusb=${libusb1.dev}/include/libusb-1.0
+ test -d $libusb || { echo "ERROR: $libusb doesn't exist, please update/fix this build expression."; exit 1; }
+ sed -i -e "s|/usr/include/libusb-1.0|$libusb|" setup.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A Cython interface to the hidapi from https://github.com/signal11/hidapi";
+ homepage = https://github.com/trezor/cython-hidapi;
+ # license can actually be either bsd3 or gpl3
+ # see https://github.com/trezor/cython-hidapi/blob/master/LICENSE-orig.txt
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ np ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/hieroglyph/default.nix b/nixpkgs/pkgs/development/python-modules/hieroglyph/default.nix
new file mode 100644
index 00000000000..9fa28126452
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/hieroglyph/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchPypi, buildPythonPackage, sphinx }:
+
+buildPythonPackage rec {
+ pname = "hieroglyph";
+ version = "1.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8e137f0b1cd60c47b870011089790d3c8ddb74fcf409a75ddf2c7f2516ff337c";
+ };
+
+ propagatedBuildInputs = [ sphinx ];
+
+ # all tests fail; don't know why:
+ # test_absolute_paths_made_relative (hieroglyph.tests.test_path_fixing.PostProcessImageTests) ... ERROR
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Generate HTML presentations from plain text sources";
+ homepage = https://github.com/nyergler/hieroglyph/;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ juliendehos ];
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/hiro/default.nix b/nixpkgs/pkgs/development/python-modules/hiro/default.nix
new file mode 100644
index 00000000000..4d9ebdb0129
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/hiro/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi, six, mock }:
+buildPythonPackage rec {
+ pname = "hiro";
+ version = "0.5";
+ src = fetchPypi {
+ inherit pname version;
+
+ sha256 = "57d9dac63077f24c3d0132c02ac5c71e4bd1d79bdac30dccad4c83fadd49fa1c";
+ };
+
+ propagatedBuildInputs = [ six mock ];
+
+ meta = with stdenv.lib; {
+ description = "Time manipulation utilities for Python";
+ homepage = https://hiro.readthedocs.io/en/latest/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ nyarly ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/histbook/default.nix b/nixpkgs/pkgs/development/python-modules/histbook/default.nix
new file mode 100644
index 00000000000..c9ea7010a6f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/histbook/default.nix
@@ -0,0 +1,20 @@
+{ lib, buildPythonPackage, fetchPypi, numpy, pandas }:
+
+buildPythonPackage rec {
+ pname = "histbook";
+ version = "1.2.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "76d1f143f8abccf5539029fbef8133db84f377fc7752ac9e7e6d19ac9a277967";
+ };
+
+ propagatedBuildInputs = [ numpy pandas ];
+
+ meta = with lib; {
+ homepage = https://github.com/scikit-hep/histbook;
+ description = "Versatile, high-performance histogram toolkit for Numpy";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ veprbl ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/hkdf/default.nix b/nixpkgs/pkgs/development/python-modules/hkdf/default.nix
new file mode 100644
index 00000000000..347cd94c8f5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/hkdf/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+}:
+
+buildPythonPackage rec {
+ pname = "hkdf";
+ version = "0.0.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1jhxk5vhxmxxjp3zj526ry521v9inzzl8jqaaf0ma65w6k332ak2";
+ };
+
+ checkInputs = [ nose ];
+
+ checkPhase = ''
+ nosetests
+ '';
+
+ # no tests in PyPI tarball
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "HMAC-based Extract-and-Expand Key Derivation Function (HKDF)";
+ homepage = "https://github.com/casebeer/python-hkdf";
+ license = licenses.bsd2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/hmmlearn/default.nix b/nixpkgs/pkgs/development/python-modules/hmmlearn/default.nix
new file mode 100644
index 00000000000..32c79b17136
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/hmmlearn/default.nix
@@ -0,0 +1,26 @@
+{ lib, fetchurl, buildPythonPackage, numpy, scikitlearn, setuptools_scm, cython, pytest }:
+
+buildPythonPackage rec {
+ pname = "hmmlearn";
+ version = "0.2.2";
+
+ src = fetchurl {
+ url = "mirror://pypi/h/hmmlearn/${pname}-${version}.tar.gz";
+ sha256 = "081c53xs5wn5vikwslallwdv0am09w9cbbggl5dbkqpnic9zx4h4";
+ };
+
+ buildInputs = [ setuptools_scm cython ];
+ propagatedBuildInputs = [ numpy scikitlearn ];
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ pytest --doctest-modules --pyargs hmmlearn
+ '';
+
+ meta = with lib; {
+ description = "Hidden Markov Models in Python with scikit-learn like API";
+ homepage = https://github.com/hmmlearn/hmmlearn;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ abbradar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/hocr-tools/default.nix b/nixpkgs/pkgs/development/python-modules/hocr-tools/default.nix
new file mode 100644
index 00000000000..810d9ee6148
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/hocr-tools/default.nix
@@ -0,0 +1,31 @@
+{ buildPythonPackage
+, fetchFromGitHub
+, lxml
+, pillow
+, reportlab
+, stdenv
+}:
+buildPythonPackage rec {
+ pname = "hocr-tools";
+ version = "1.3.0";
+
+ src = fetchFromGitHub {
+ owner = "tmbdev";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "14f9hkp7pr677085w8iidwd0la9cjzy3pyj3rdg9b03nz9pc0w6p";
+ };
+
+ # hocr-tools uses a test framework that requires internet access
+ doCheck = false;
+
+ propagatedBuildInputs = [ pillow lxml reportlab ];
+
+ meta = with stdenv.lib; {
+ description = "
+Tools for manipulating and evaluating the hOCR format for representing multi-lingual OCR results by embedding them into HTML";
+ homepage = https://github.com/tmbdev/hocr-tools;
+ license = licenses.asl20;
+ maintainers = [ maintainers.kiwi ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/holoviews/default.nix b/nixpkgs/pkgs/development/python-modules/holoviews/default.nix
new file mode 100644
index 00000000000..bd0cbda48d8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/holoviews/default.nix
@@ -0,0 +1,47 @@
+{ buildPythonPackage
+, fetchPypi
+, lib
+, param
+, numpy
+, pyviz-comms
+, ipython
+, notebook
+, pandas
+, matplotlib
+, bokeh
+, scipy
+, panel
+}:
+
+buildPythonPackage rec {
+ pname = "holoviews";
+ version = "1.12.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "df64c0f163fe8b43d28cf5bcdeb8abc45d882aedca525b870f17987edd0c80a2";
+ };
+
+ propagatedBuildInputs = [
+ param
+ numpy
+ pyviz-comms
+ ipython
+ notebook
+ pandas
+ matplotlib
+ bokeh
+ scipy
+ panel
+ ];
+
+ # tests not fully included with pypi release
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Python data analysis and visualization seamless and simple";
+ homepage = http://www.holoviews.org/;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/homeassistant-pyozw/default.nix b/nixpkgs/pkgs/development/python-modules/homeassistant-pyozw/default.nix
new file mode 100644
index 00000000000..5851d62842b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/homeassistant-pyozw/default.nix
@@ -0,0 +1,14 @@
+{ python_openzwave, fetchPypi }:
+
+python_openzwave.overridePythonAttrs (oldAttrs: rec {
+ pname = "homeassistant_pyozw";
+ version = "0.1.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "a4ec26b95dba630df8c95c617c510e4a33db93a6a39e8a97056eec7dc9a49d1e";
+ };
+
+ meta.homepage = https://github.com/home-assistant/python-openzwave;
+})
diff --git a/nixpkgs/pkgs/development/python-modules/hoomd-blue/default.nix b/nixpkgs/pkgs/development/python-modules/hoomd-blue/default.nix
new file mode 100644
index 00000000000..59528723d80
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/hoomd-blue/default.nix
@@ -0,0 +1,65 @@
+{ stdenv, fetchgit
+, cmake, pkgconfig
+, python
+, mpi ? null
+}:
+
+let components = {
+ cgcmm = true;
+ depreciated = true;
+ hpmc = true;
+ md = true;
+ metal = true;
+ };
+ onOffBool = b: if b then "ON" else "OFF";
+ withMPI = (mpi != null);
+in
+stdenv.mkDerivation rec {
+ version = "2.3.4";
+ pname = "hoomd-blue";
+
+ src = fetchgit {
+ url = "https://bitbucket.org/glotzer/hoomd-blue";
+ rev = "v${version}";
+ sha256 = "0in49f1dvah33nl5n2qqbssfynb31pw1ds07j8ziryk9w252j1al";
+ };
+
+ passthru = {
+ inherit components mpi;
+ };
+
+ nativeBuildInputs = [ cmake pkgconfig ];
+ buildInputs = stdenv.lib.optionals withMPI [ mpi ];
+ propagatedBuildInputs = [ python.pkgs.numpy ]
+ ++ stdenv.lib.optionals withMPI [ python.pkgs.mpi4py ];
+
+ enableParallelBuilding = true;
+
+ dontAddPrefix = true;
+ cmakeFlags = [
+ "-DENABLE_MPI=${onOffBool withMPI}"
+ "-DBUILD_CGCMM=${onOffBool components.cgcmm}"
+ "-DBUILD_DEPRECIATED=${onOffBool components.depreciated}"
+ "-DBUILD_HPMC=${onOffBool components.hpmc}"
+ "-DBUILD_MD=${onOffBool components.md}"
+ "-DBUILD_METAL=${onOffBool components.metal}"
+ ];
+
+ preConfigure = ''
+ # Since we can't expand $out in `cmakeFlags`
+ cmakeFlags="$cmakeFlags -DCMAKE_INSTALL_PREFIX=$out/${python.sitePackages}"
+ '';
+
+ # tests fail but have tested that package runs properly
+ doCheck = false;
+ checkTarget = "test";
+
+ meta = with stdenv.lib; {
+ homepage = http://glotzerlab.engin.umich.edu/hoomd-blue/;
+ description = "HOOMD-blue is a general-purpose particle simulation toolkit";
+ license = licenses.bsdOriginal;
+ platforms = [ "x86_64-linux" ];
+ maintainers = [ maintainers.costrouc ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/hopcroftkarp/default.nix b/nixpkgs/pkgs/development/python-modules/hopcroftkarp/default.nix
new file mode 100644
index 00000000000..4acf05b4142
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/hopcroftkarp/default.nix
@@ -0,0 +1,24 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "hopcroftkarp";
+ version = "1.2.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "cc6fc7ad348bbe5c9451f8116845c46ae26290c92b2dd14690aae2d55ba5e3a6";
+ };
+
+ # tests fail due to bad package name
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Implementation of HopcroftKarp's algorithm";
+ homepage = https://github.com/sofiat-olaosebikan/hopcroftkarp;
+ license = licenses.gpl1;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/howdoi/default.nix b/nixpkgs/pkgs/development/python-modules/howdoi/default.nix
new file mode 100644
index 00000000000..53e42027ba2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/howdoi/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, six
+, requests-cache
+, pygments
+, pyquery
+}:
+
+buildPythonPackage rec {
+ pname = "howdoi";
+ version = "1.1.14";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b85b8e551bf47ff157392660f0fc5b9eb3eacb78516a5823f7b774ec61955db5";
+ };
+
+ propagatedBuildInputs = [ six requests-cache pygments pyquery ];
+
+ preCheck = ''
+ export HOME=$(mktemp -d)
+ '';
+
+ meta = with lib; {
+ description = "Instant coding answers via the command line";
+ homepage = https://pypi.python.org/pypi/howdoi;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/hpack/default.nix b/nixpkgs/pkgs/development/python-modules/hpack/default.nix
new file mode 100644
index 00000000000..a10882417fc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/hpack/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "hpack";
+ version = "3.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8eec9c1f4bfae3408a3f30500261f7e6a65912dc138526ea054f9ad98892e9d2";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Pure-Python HPACK header compression";
+ homepage = "http://hyper.rtfd.org";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/hsaudiotag/default.nix b/nixpkgs/pkgs/development/python-modules/hsaudiotag/default.nix
new file mode 100644
index 00000000000..d08d9e06b71
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/hsaudiotag/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, 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 stdenv.lib; {
+ description = "A pure Python library that lets one to read metadata from media files";
+ homepage = http://hg.hardcoded.net/hsaudiotag/;
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/hsaudiotag3k/default.nix b/nixpkgs/pkgs/development/python-modules/hsaudiotag3k/default.nix
new file mode 100644
index 00000000000..06f89f73333
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/hsaudiotag3k/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "hsaudiotag3k";
+ version = "1.1.3";
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0bv5k5594byr2bmhh77xv10fkdpckcmxg3w380yp30aqf83rcsx3";
+ };
+
+ # no tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A pure Python library that lets one to read metadata from media files";
+ homepage = http://hg.hardcoded.net/hsaudiotag/;
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/html2text/default.nix b/nixpkgs/pkgs/development/python-modules/html2text/default.nix
new file mode 100644
index 00000000000..cac88c55794
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/html2text/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "html2text";
+ version = "2018.1.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "627514fb30e7566b37be6900df26c2c78a030cc9e6211bda604d8181233bcdd4";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Turn HTML into equivalent Markdown-structured text";
+ homepage = https://github.com/Alir3z4/html2text/;
+ license = licenses.gpl3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/html5-parser/default.nix b/nixpkgs/pkgs/development/python-modules/html5-parser/default.nix
new file mode 100644
index 00000000000..f3b24b3d371
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/html5-parser/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi, pkgs, pkgconfig, chardet, lxml }:
+
+buildPythonPackage rec {
+ pname = "html5-parser";
+ version = "0.4.8";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "00d1zfk72xzyibh7l4ib57y0isn5gic7avgbh7afbkk99iwd5smi";
+ };
+
+ nativeBuildInputs = [ pkgconfig ];
+ propagatedBuildInputs = [ chardet lxml pkgs.libxml2 ];
+
+ doCheck = false; # No such file or directory: 'run_tests.py'
+
+ meta = with stdenv.lib; {
+ description = "Fast C based HTML 5 parsing for python";
+ homepage = https://html5-parser.readthedocs.io;
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/html5lib/default.nix b/nixpkgs/pkgs/development/python-modules/html5lib/default.nix
new file mode 100644
index 00000000000..5a59b63cea4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/html5lib/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, flake8
+, pytest
+, pytest-expect
+, mock
+, six
+, webencodings
+}:
+
+buildPythonPackage rec {
+ pname = "html5lib";
+ version = "1.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "66cb0dcfdbbc4f9c3ba1a63fdb511ffdbd4f513b2b6d81b80cd26ce6b3fb3736";
+ };
+
+ checkInputs = [ flake8 pytest pytest-expect mock ];
+ propagatedBuildInputs = [
+ six webencodings
+ ];
+
+ checkPhase = ''
+ # remove test causing error
+ # https://github.com/html5lib/html5lib-python/issues/411
+ rm html5lib/tests/test_stream.py
+ py.test
+ '';
+
+ meta = {
+ homepage = https://github.com/html5lib/html5lib-python;
+ downloadPage = https://github.com/html5lib/html5lib-python/releases;
+ description = "HTML parser based on WHAT-WG HTML5 specification";
+ longDescription = ''
+ html5lib is a pure-python library for parsing HTML. It is designed to
+ conform to the WHATWG HTML specification, as is implemented by all
+ major web browsers.
+ '';
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ domenkozar prikhi ];
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/htmllaundry/default.nix b/nixpkgs/pkgs/development/python-modules/htmllaundry/default.nix
new file mode 100644
index 00000000000..787163d477e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/htmllaundry/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi, nose
+, six
+, lxml
+}:
+
+buildPythonPackage rec {
+ pname = "htmllaundry";
+ version = "2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "e428cba78d5a965e959f5dac2eb7d5f7d627dd889990d5efa8d4e03f3dd768d9";
+ };
+
+ buildInputs = [ nose ];
+ propagatedBuildInputs = [ six lxml ];
+
+ # some tests fail, probably because of changes in lxml
+ # not relevant for me, if releavnt for you, fix it...
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Simple HTML cleanup utilities";
+ license = licenses.bsd3;
+ homepage = https://pypi.org/project/htmllaundry/;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/htmlmin/default.nix b/nixpkgs/pkgs/development/python-modules/htmlmin/default.nix
new file mode 100644
index 00000000000..538b75c3dd0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/htmlmin/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+buildPythonPackage rec {
+ pname = "htmlmin";
+ version = "0.1.12";
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "50c1ef4630374a5d723900096a961cff426dff46b48f34d194a81bbe14eca178";
+ };
+
+ # Tests run fine in a normal source checkout, but not when being built by nix.
+ doCheck = false;
+
+ meta = {
+ description = "A configurable HTML Minifier with safety features";
+ homepage = https://pypi.python.org/pypi/htmlmin;
+ license = stdenv.lib.licenses.bsd3;
+ maintainers = [stdenv.lib.maintainers.ahmedtd];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/htmltreediff/default.nix b/nixpkgs/pkgs/development/python-modules/htmltreediff/default.nix
new file mode 100644
index 00000000000..c2c7f4e12f4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/htmltreediff/default.nix
@@ -0,0 +1,26 @@
+{ buildPythonPackage, fetchFromGitHub, isPy3k, lxml, html5lib, nose, stdenv }:
+
+buildPythonPackage rec {
+ version = "0.1.2";
+ pname = "htmltreediff";
+
+ disabled = isPy3k;
+
+ src = fetchFromGitHub {
+ owner = "christian-oudard";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "16mqp2jyznrw1mgd3qzybq28h2k5wz7vmmz1m6xpgscazyjhvvd1";
+ };
+
+ propagatedBuildInputs = [ lxml html5lib ];
+
+ checkInputs = [ nose ];
+
+ meta = with stdenv.lib; {
+ description = " Structure-aware diff for html and xml documents";
+ homepage = https://github.com/christian-oudard/htmltreediff;
+ license = licenses.bsdOriginal;
+ maintainers = with maintainers; [ ma27 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/httmock/default.nix b/nixpkgs/pkgs/development/python-modules/httmock/default.nix
new file mode 100644
index 00000000000..53447544ca9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/httmock/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, requests }:
+
+buildPythonPackage rec {
+ pname = "httmock";
+ version = "1.3.0";
+
+ src = fetchFromGitHub {
+ owner = "patrys";
+ repo = "httmock";
+ rev = version;
+ sha256 = "1dy7pjq4gz476jcnbbpzk8w8qxr9l8wwgw9x2c7lf6fzsgnf404q";
+ };
+
+ checkInputs = [ requests ];
+
+ meta = with stdenv.lib; {
+ description = "A mocking library for requests";
+ homepage = https://github.com/patrys/httmock;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ nyanloutre ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/http-ece/default.nix b/nixpkgs/pkgs/development/python-modules/http-ece/default.nix
new file mode 100644
index 00000000000..1f50608d3d1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/http-ece/default.nix
@@ -0,0 +1,24 @@
+{ lib, fetchPypi, buildPythonPackage
+, coverage, flake8, mock, nose
+, cryptography }:
+
+buildPythonPackage rec {
+ pname = "http_ece";
+ version = "1.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1y5ln09ji4dwpzhxr77cggk02kghq7lql60a6969a5n2lwpvqblk";
+ };
+
+ propagatedBuildInputs = [ cryptography ];
+
+ checkInputs = [ coverage flake8 mock nose ];
+
+ meta = with lib; {
+ description = "Encipher HTTP Messages";
+ homepage = https://github.com/martinthomson/encrypted-content-encoding;
+ license = licenses.mit;
+ maintainers = with maintainers; [ peterhoeg ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/http_signature/default.nix b/nixpkgs/pkgs/development/python-modules/http_signature/default.nix
new file mode 100644
index 00000000000..48f06db1ba5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/http_signature/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, 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 stdenv.lib; {
+ homepage = https://github.com/atl/py-http-signature;
+ description = "Simple secure signing for HTTP requests using http-signature";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/httpauth/default.nix b/nixpkgs/pkgs/development/python-modules/httpauth/default.nix
new file mode 100644
index 00000000000..f1afd41ebed
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/httpauth/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ version = "0.3";
+ pname = "httpauth";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0qas7876igyz978pgldp5r7n7pis8n4vf0v87gxr9l7p7if5lr3l";
+ };
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "WSGI HTTP Digest Authentication middleware";
+ homepage = https://github.com/jonashaag/httpauth;
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/httpbin/default.nix b/nixpkgs/pkgs/development/python-modules/httpbin/default.nix
new file mode 100644
index 00000000000..77dc27f1096
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/httpbin/default.nix
@@ -0,0 +1,45 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, fetchpatch
+, flask
+, flask-common
+, flask-limiter
+, markupsafe
+, decorator
+, itsdangerous
+, raven
+, six
+, brotlipy
+}:
+
+buildPythonPackage rec {
+ pname = "httpbin";
+ version = "0.6.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0afa0486a76305cac441b5cc80d5d4ccd82b20875da7c5119ecfe616cefef45f";
+ };
+
+ patches = [
+ # https://github.com/kennethreitz/httpbin/issues/403
+ # https://github.com/kennethreitz/flask-common/issues/7
+ # https://github.com/evansd/whitenoise/issues/166
+ (fetchpatch {
+ url = "https://github.com/javabrett/httpbin/commit/5735c888e1e51b369fcec41b91670a90535e661e.patch";
+ sha256 = "167h8mscdjagml33dyqk8nziiz3dqbggnkl6agsirk5270nl5f7q";
+ })
+ ];
+
+ propagatedBuildInputs = [ brotlipy flask flask-common flask-limiter markupsafe decorator itsdangerous raven six ];
+
+ # No tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/kennethreitz/httpbin;
+ description = "HTTP Request & Response Service";
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/httplib2/default.nix b/nixpkgs/pkgs/development/python-modules/httplib2/default.nix
new file mode 100644
index 00000000000..5a9e9f84747
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/httplib2/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "httplib2";
+ version = "0.12.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a18121c7c72a56689efbf1aef990139ad940fee1e64c6f2458831736cd593600";
+ };
+
+ # Needs setting up
+ doCheck = false;
+
+ meta = with lib; {
+ homepage = http://code.google.com/p/httplib2;
+ description = "A comprehensive HTTP client library";
+ license = licenses.mit;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/httpretty/default.nix b/nixpkgs/pkgs/development/python-modules/httpretty/default.nix
new file mode 100644
index 00000000000..3a76bd9f148
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/httpretty/default.nix
@@ -0,0 +1,47 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, tornado
+, requests
+, httplib2
+, sure
+, nose
+, nose-exclude
+, coverage
+, rednose
+, nose-randomly
+, six
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "httpretty";
+ version = "0.9.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "01b52d45077e702eda491f4fe75328d3468fd886aed5dcc530003e7b2b5939dc";
+ };
+
+ 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 = stdenv.lib.concatStringsSep "," [
+ "tests.functional.test_httplib2.test_callback_response"
+ "tests.functional.test_requests.test_streaming_responses"
+ "tests.functional.test_httplib2.test_callback_response"
+ ];
+
+ meta = with stdenv.lib; {
+ homepage = "https://httpretty.readthedocs.org/";
+ description = "HTTP client request mocking tool";
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/httpserver/default.nix b/nixpkgs/pkgs/development/python-modules/httpserver/default.nix
new file mode 100644
index 00000000000..3bd61ec8afa
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/httpserver/default.nix
@@ -0,0 +1,26 @@
+{ lib, fetchPypi, buildPythonPackage, docopt, pythonOlder }:
+
+buildPythonPackage rec {
+ pname = "httpserver";
+ version = "1.1.0";
+
+ buildInputs = [ docopt ];
+
+ # Tests pull in lots of other dependencies to emulate different web
+ # drivers.
+ doCheck = false;
+
+ # Because it uses asyncio
+ disabled = pythonOlder "3.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1q62g324dvb0hqdwwrnj41sqr4d3ly78v9nc26rz1whj4pwdmhsv";
+ };
+
+ meta = {
+ description = "Asyncio implementation of an HTTP server";
+ homepage = https://github.com/thomwiggers/httpserver;
+ license = with lib.licenses; [ bsd3 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/httpsig/default.nix b/nixpkgs/pkgs/development/python-modules/httpsig/default.nix
new file mode 100644
index 00000000000..24ba9be1382
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/httpsig/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, setuptools_scm
+, pycryptodome
+, requests
+}:
+
+buildPythonPackage rec {
+ pname = "httpsig";
+ version = "1.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1rkc3zwsq53rjsmc47335m4viljiwdbmw3y2zry4z70j8q1dbmki";
+ };
+
+ buildInputs = [ setuptools_scm ];
+ propagatedBuildInputs = [ pycryptodome requests ];
+
+ # Jailbreak pycryptodome
+ preBuild = ''
+ substituteInPlace setup.py --replace "==3.4.7" ""
+ '';
+
+ meta = with lib; {
+ description = "Sign HTTP requests with secure signatures";
+ license = licenses.mit;
+ maintainers = with maintainers; [ srhb ];
+ homepage = https://github.com/ahknight/httpsig;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/httptools/default.nix b/nixpkgs/pkgs/development/python-modules/httptools/default.nix
new file mode 100644
index 00000000000..fc83675fd65
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/httptools/default.nix
@@ -0,0 +1,21 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "httptools";
+ version = "0.0.13";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "e00cbd7ba01ff748e494248183abc6e153f49181169d8a3d41bb49132ca01dfc";
+ };
+
+ meta = with lib; {
+ description = "A collection of framework independent HTTP protocol utils";
+ homepage = https://github.com/MagicStack/httptools;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/hug/default.nix b/nixpkgs/pkgs/development/python-modules/hug/default.nix
new file mode 100644
index 00000000000..bb38c738760
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/hug/default.nix
@@ -0,0 +1,39 @@
+{ lib , buildPythonPackage, fetchFromGitHub, isPy27
+, falcon
+, pytestrunner
+, requests
+, pytest
+, marshmallow
+, mock
+, numpy
+}:
+
+buildPythonPackage rec {
+ pname = "hug";
+ version = "2.6.0";
+ disabled = isPy27;
+
+ src = fetchFromGitHub {
+ owner = "hugapi";
+ repo = pname;
+ rev = version;
+ sha256 = "05rsv16g7ph100p8kl4l2jba0y4wcpp3xblc02mfp67zp1279vaq";
+ };
+
+ nativeBuildInputs = [ pytestrunner ];
+ propagatedBuildInputs = [ falcon requests ];
+
+ checkInputs = [ mock marshmallow pytest numpy ];
+ checkPhase = ''
+ mv hug hug.hidden
+ # some tests attempt network access
+ PATH=$out/bin:$PATH pytest -k "not (test_request or test_datagram_request)"
+ '';
+
+ meta = with lib; {
+ description = "A Python framework that makes developing APIs as simple as possible, but no simpler";
+ homepage = https://github.com/timothycrosley/hug;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/humanfriendly/default.nix b/nixpkgs/pkgs/development/python-modules/humanfriendly/default.nix
new file mode 100644
index 00000000000..bef32f947c3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/humanfriendly/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, pythonOlder
+, buildPythonPackage
+, fetchPypi
+, monotonic
+}:
+
+buildPythonPackage rec {
+ pname = "humanfriendly";
+ version = "4.18";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "33ee8ceb63f1db61cce8b5c800c531e1a61023ac5488ccde2ba574a85be00a85";
+ };
+
+ propagatedBuildInputs = lib.optional (pythonOlder "3.3") monotonic;
+
+ # humanfriendly tests depends on coloredlogs which itself depends on
+ # humanfriendly. This lead to infinite recursion when trying to
+ # build this package so we have to disable the test suite :(
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Human friendly output for text interfaces using Python";
+ homepage = https://humanfriendly.readthedocs.io/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ montag451 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/humanize/default.nix b/nixpkgs/pkgs/development/python-modules/humanize/default.nix
new file mode 100644
index 00000000000..f1fac28dd93
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/humanize/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, mock
+}:
+
+buildPythonPackage rec {
+ version = "0.5.1";
+ pname = "humanize";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a43f57115831ac7c70de098e6ac46ac13be00d69abbf60bdcac251344785bb19";
+ };
+
+ buildInputs = [ mock ];
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Python humanize utilities";
+ homepage = https://github.com/jmoiron/humanize;
+ license = licenses.mit;
+ maintainers = with maintainers; [ ];
+ platforms = platforms.unix;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/hupper/default.nix b/nixpkgs/pkgs/development/python-modules/hupper/default.nix
new file mode 100644
index 00000000000..c6b0a2c64bc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/hupper/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, pytest, pytestcov, watchdog, mock
+}:
+
+buildPythonPackage rec {
+ pname = "hupper";
+ version = "1.6.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "fe8febd68cec7fbed174fcbb0b42c427f96c8a7471c1cd4999fc698dd8dc6c34";
+ };
+
+ checkPhase = ''
+ py.test
+ '';
+
+ # FIXME: watchdog dependency is disabled on Darwin because of #31865, which causes very silent
+ # segfaults in the testsuite that end up failing the tests in a background thread (in myapp)
+ checkInputs = [ pytest pytestcov mock ] ++ stdenv.lib.optional (!stdenv.isDarwin) watchdog;
+}
diff --git a/nixpkgs/pkgs/development/python-modules/hvac/default.nix b/nixpkgs/pkgs/development/python-modules/hvac/default.nix
new file mode 100644
index 00000000000..4eda2d864c8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/hvac/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildPythonPackage, fetchPypi, requests }:
+
+buildPythonPackage rec {
+ pname = "hvac";
+ version = "0.7.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "773775fa827c74299abd96079eeeeb0cefbb23b484195c03cff27d04716539ba";
+ };
+
+ propagatedBuildInputs = [ requests ];
+
+ # Requires running a Vault server
+ doCheck = false;
+
+ meta = with lib; {
+ description = "HashiCorp Vault API client";
+ homepage = https://github.com/ianunruh/hvac;
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/hvplot/default.nix b/nixpkgs/pkgs/development/python-modules/hvplot/default.nix
new file mode 100644
index 00000000000..dfec9ffc200
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/hvplot/default.nix
@@ -0,0 +1,46 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, bokeh
+, holoviews
+, pandas
+, pytest
+, parameterized
+, nbsmoke
+, flake8
+, coveralls
+, xarray
+, networkx
+, streamz
+}:
+
+buildPythonPackage rec {
+ pname = "hvplot";
+ version = "0.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "bce169cf2d1b3ff9ce607d1787f608758e72a498434eaa2bece31eea1f51963a";
+ };
+
+ checkInputs = [ pytest parameterized nbsmoke flake8 coveralls xarray networkx streamz ];
+ propagatedBuildInputs = [
+ bokeh
+ holoviews
+ pandas
+ ];
+
+ preCheck = ''
+ export HOME=$(mktemp -d)
+ '';
+
+ # many tests require a network connection
+ doCheck = false;
+
+ meta = with lib; {
+ description = "A high-level plotting API for the PyData ecosystem built on HoloViews";
+ homepage = https://hvplot.pyviz.org;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/hypchat/default.nix b/nixpkgs/pkgs/development/python-modules/hypchat/default.nix
new file mode 100644
index 00000000000..8337fd2230b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/hypchat/default.nix
@@ -0,0 +1,14 @@
+{ buildPythonPackage, fetchPypi
+, requests, six, dateutil }:
+
+buildPythonPackage rec {
+ pname = "hypchat";
+ version = "0.21";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1sd8f3gihagaqd848dqy6xw457fa4f9bla1bfyni7fq3h76sjdzg";
+ };
+
+ propagatedBuildInputs = [ requests six dateutil ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/hyperframe/default.nix b/nixpkgs/pkgs/development/python-modules/hyperframe/default.nix
new file mode 100644
index 00000000000..a8f847c53bb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/hyperframe/default.nix
@@ -0,0 +1,16 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+buildPythonPackage rec {
+ pname = "hyperframe";
+ version = "5.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a9f5c17f2cc3c719b917c4f33ed1c61bd1f8dfac4b1bd23b7c80b3400971b41f";
+ };
+
+ meta = with stdenv.lib; {
+ description = "HTTP/2 framing layer for Python";
+ homepage = "http://hyper.rtfd.org/";
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/hyperlink/default.nix b/nixpkgs/pkgs/development/python-modules/hyperlink/default.nix
new file mode 100644
index 00000000000..d7950d3adb6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/hyperlink/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi, idna }:
+
+buildPythonPackage rec {
+ pname = "hyperlink";
+ version = "18.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f01b4ff744f14bc5d0a22a6b9f1525ab7d6312cb0ff967f59414bbac52f0a306";
+ };
+
+ propagatedBuildInputs = [ idna ];
+
+ meta = with stdenv.lib; {
+ description = "A featureful, correct URL for Python";
+ license = licenses.mit;
+ platforms = platforms.all;
+ maintainers = with maintainers; [ apeschar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/hypothesis/default.nix b/nixpkgs/pkgs/development/python-modules/hypothesis/default.nix
new file mode 100644
index 00000000000..9c105ffe3fb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/hypothesis/default.nix
@@ -0,0 +1,40 @@
+{ lib, buildPythonPackage, fetchFromGitHub
+, isPy3k, attrs, coverage, enum34
+, doCheck ? true, pytest, pytest_xdist, flaky, mock
+}:
+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.7.3";
+ pname = "hypothesis";
+
+ # Use github tarballs that includes tests
+ src = fetchFromGitHub {
+ owner = "HypothesisWorks";
+ repo = "hypothesis-python";
+ rev = "hypothesis-python-${version}";
+ sha256 = "03l4hp0p7i2k04arnqkav0ygc23ml46dy3cfrlwviasrj7yzk5hc";
+ };
+
+ postUnpack = "sourceRoot=$sourceRoot/hypothesis-python";
+
+ propagatedBuildInputs = [ attrs coverage ] ++ lib.optional (!isPy3k) [ enum34 ];
+
+ checkInputs = [ pytest pytest_xdist flaky mock ];
+ 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/nixpkgs/pkgs/development/python-modules/i3-py/default.nix b/nixpkgs/pkgs/development/python-modules/i3-py/default.nix
new file mode 100644
index 00000000000..ea6e449947c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/i3-py/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ version = "0.6.4";
+ pname = "i3-py";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1sgl438jrb4cdyl7hbc3ymwsf7y3zy09g1gh7ynilxpllp37jc8y";
+ };
+
+ # no tests in tarball
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Tools for i3 users and developers";
+ homepage = "https://github.com/ziberna/i3-py";
+ license = licenses.gpl3;
+ platforms = platforms.unix;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/i3ipc/default.nix b/nixpkgs/pkgs/development/python-modules/i3ipc/default.nix
new file mode 100644
index 00000000000..482a51a099e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/i3ipc/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub
+, enum-compat
+, xorgserver, pytest, i3, python
+}:
+
+buildPythonPackage rec {
+ pname = "i3ipc";
+ version = "1.6.0";
+
+ src = fetchFromGitHub {
+ owner = "acrisci";
+ repo = "i3ipc-python";
+ rev = "v${version}";
+ sha256 = "0sb525wvwcnikjaqzha94xr97r1gjys30csmaj17swlxgyczxvq5";
+ };
+
+ propagatedBuildInputs = [ enum-compat ];
+
+ checkInputs = [ xorgserver pytest i3 ];
+
+ checkPhase = ''${python.interpreter} run-tests.py'';
+
+ meta = with stdenv.lib; {
+ description = "An improved Python library to control i3wm and sway";
+ homepage = https://github.com/acrisci/i3ipc-python;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ vanzef ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ibis-framework/default.nix b/nixpkgs/pkgs/development/python-modules/ibis-framework/default.nix
new file mode 100644
index 00000000000..56aaf6ec71a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ibis-framework/default.nix
@@ -0,0 +1,57 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, multipledispatch
+, numpy
+, pandas
+, pytz
+, regex
+, toolz
+, isPy27
+, pytest
+, sqlalchemy
+, requests
+, tables
+, pyarrow
+, graphviz
+}:
+
+buildPythonPackage rec {
+ pname = "ibis-framework";
+ version = "1.2.0";
+ disabled = isPy27;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "3a0b79dae6924be0a79669c881a9a1d4817997ad2f81a0f3b1cd03d70aebb071";
+ };
+
+ propagatedBuildInputs = [
+ multipledispatch
+ numpy
+ pandas
+ pytz
+ regex
+ toolz
+ sqlalchemy
+ requests
+ graphviz
+ tables
+ pyarrow
+ ];
+
+ checkInputs = [
+ pytest
+ ];
+
+ checkPhase = ''
+ pytest ibis
+ '';
+
+ meta = with lib; {
+ description = "Productivity-centric Python Big Data Framework";
+ homepage = https://github.com/ibis-project/ibis;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ibis/default.nix b/nixpkgs/pkgs/development/python-modules/ibis/default.nix
new file mode 100644
index 00000000000..6b405366c7e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ibis/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, python
+, isPy27
+}:
+
+buildPythonPackage rec {
+ pname = "ibis";
+ version = "1.6.0";
+ disabled = isPy27;
+
+ src = fetchFromGitHub {
+ owner = "dmulholl";
+ repo = pname;
+ rev = version;
+ sha256 = "0xqhk397gzanvj2znwcgy4n5l1lc9r310smxkhjbm1xwvawpixx0";
+ };
+
+ checkPhase = ''
+ ${python.interpreter} test_ibis.py
+ '';
+
+ meta = with lib; {
+ description = "A lightweight template engine";
+ homepage = https://github.com/dmulholland/ibis;
+ license = licenses.publicDomain;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ibmquantumexperience/default.nix b/nixpkgs/pkgs/development/python-modules/ibmquantumexperience/default.nix
new file mode 100644
index 00000000000..dcf39dd24f0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ibmquantumexperience/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, requests
+, requests_ntlm
+}:
+
+buildPythonPackage rec {
+ pname = "IBMQuantumExperience";
+ version = "2.0.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0szn743sbm3cs80982cf4994c1xcg6iz5xkhdbpm1kfv5qn1phja";
+ };
+
+ propagatedBuildInputs = [
+ requests
+ requests_ntlm
+ ];
+
+ # test requires an API token
+ doCheck = false;
+
+ meta = {
+ description = "A Python library for the Quantum Experience API";
+ homepage = https://github.com/QISKit/qiskit-api-py;
+ license = lib.licenses.asl20;
+ maintainers = with lib.maintainers; [
+ pandaman
+ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/icalendar/default.nix b/nixpkgs/pkgs/development/python-modules/icalendar/default.nix
new file mode 100644
index 00000000000..48da3da6bc4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/icalendar/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, setuptools
+, dateutil
+, pytz
+}:
+
+buildPythonPackage rec {
+ version = "4.0.3";
+ pname = "icalendar";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0mk3dk1dxkcm46jy48v27j2w2349iv4sbimqj1yb5js43mx49hh7";
+ };
+
+ buildInputs = [ setuptools ];
+ propagatedBuildInputs = [ dateutil pytz ];
+
+ meta = with stdenv.lib; {
+ description = "A parser/generator of iCalendar files";
+ homepage = "https://icalendar.readthedocs.org/";
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ olcai ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/identify/default.nix b/nixpkgs/pkgs/development/python-modules/identify/default.nix
new file mode 100644
index 00000000000..8987ce97c71
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/identify/default.nix
@@ -0,0 +1,20 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "identify";
+ version = "1.4.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1z8xjvpkj599h3s76q05y10iysjjky7b0s5g3zicfyxhzm7x59a3";
+ };
+
+ # Tests not included in PyPI tarball
+ doCheck = false;
+
+ meta = with lib; {
+ description = "File identification library for Python";
+ homepage = https://github.com/chriskuehl/identify;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/idna-ssl/default.nix b/nixpkgs/pkgs/development/python-modules/idna-ssl/default.nix
new file mode 100644
index 00000000000..a8a040d39e2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/idna-ssl/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildPythonPackage, fetchPypi, idna }:
+
+buildPythonPackage rec {
+ pname = "idna-ssl";
+ version = "1.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a933e3bb13da54383f9e8f35dc4f9cb9eb9b3b78c6b36f311254d6d0d92c6c7c";
+ };
+
+ propagatedBuildInputs = [ idna ];
+
+ # Infinite recursion: tests require aiohttp, aiohttp requires idna-ssl
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Patch ssl.match_hostname for Unicode(idna) domains support";
+ homepage = https://github.com/aio-libs/idna-ssl;
+ license = licenses.mit;
+ maintainers = with maintainers; [ dotlambda ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/idna/default.nix b/nixpkgs/pkgs/development/python-modules/idna/default.nix
new file mode 100644
index 00000000000..5e5d623ff10
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/idna/default.nix
@@ -0,0 +1,20 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "idna";
+ version = "2.8";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407";
+ };
+
+ meta = {
+ homepage = "https://github.com/kjd/idna/";
+ description = "Internationalized Domain Names in Applications (IDNA)";
+ license = lib.licenses.bsd3;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/ifaddr/default.nix b/nixpkgs/pkgs/development/python-modules/ifaddr/default.nix
new file mode 100644
index 00000000000..e5087a10536
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ifaddr/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, ipaddress
+, python
+}:
+
+buildPythonPackage rec {
+ version = "0.1.6";
+ pname = "ifaddr";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c19c64882a7ad51a394451dabcbbed72e98b5625ec1e79789924d5ea3e3ecb93";
+ };
+
+ propagatedBuildInputs = [ ipaddress ];
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/pydron/ifaddr;
+ description = "Enumerates all IP addresses on all network adapters of the system";
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ijson/default.nix b/nixpkgs/pkgs/development/python-modules/ijson/default.nix
new file mode 100644
index 00000000000..eb10edeaca9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ijson/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "ijson";
+ version = "2.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "135rwh7izzmj4lwkrfb9xw4ik0gcwjz34ygnmx3vyvki2xbbp2xp";
+ };
+
+ doCheck = false; # something about yajl
+
+ meta = with stdenv.lib; {
+ description = "Iterative JSON parser with a standard Python iterator interface";
+ homepage = "https://github.com/isagalaev/ijson";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ rvl ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/image-match/default.nix b/nixpkgs/pkgs/development/python-modules/image-match/default.nix
new file mode 100644
index 00000000000..49d1062abc3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/image-match/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, pytestrunner, scikitimage }:
+
+buildPythonPackage {
+ pname = "image-match";
+ version = "1.1.2";
+
+ src = fetchFromGitHub {
+ owner = "ascribe";
+ repo = "image-match";
+ rev = "1c5f3170555540bdf43ff8b8189c4e8c13a8b950";
+ sha256 = "0vlmpidmhkpgdzw2k03x5layhijcrjpmyfd93yv2ls77ihz00ix5";
+ };
+
+ buildInputs = [ pytestrunner ];
+
+ propagatedBuildInputs = [
+ scikitimage
+ ];
+
+ # remove elasticsearch requirement due to version incompatibility
+ postPatch = ''
+ substituteInPlace setup.py --replace "'elasticsearch>=5.0.0,<6.0.0'," ""
+ '';
+
+ # tests cannot work without elasticsearch
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/ascribe/image-match;
+ description = "Quickly search over billions of images";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ cmcdragonkai ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/imagecodecs-lite/default.nix b/nixpkgs/pkgs/development/python-modules/imagecodecs-lite/default.nix
new file mode 100644
index 00000000000..6374b882718
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/imagecodecs-lite/default.nix
@@ -0,0 +1,25 @@
+{ lib, fetchPypi, buildPythonPackage
+, pytest
+, numpy
+, cython
+}:
+
+buildPythonPackage rec {
+ pname = "imagecodecs-lite";
+ version = "2019.4.20";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1cp88g7g91gdhjhaz6gvb4jzvi5ad817id9f2bnc5r95ag93bqb0";
+ };
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ numpy cython ];
+
+ meta = with lib; {
+ description = "Block-oriented, in-memory buffer transformation, compression, and decompression functions";
+ homepage = "https://www.lfd.uci.edu/~gohlke/";
+ maintainers = [ maintainers.tbenst ];
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/imageio-ffmpeg/default.nix b/nixpkgs/pkgs/development/python-modules/imageio-ffmpeg/default.nix
new file mode 100644
index 00000000000..5d07024656e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/imageio-ffmpeg/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "imageio-ffmpeg";
+ version = "0.3.0";
+
+ src = fetchPypi {
+ sha256 = "1hnn00xz9jyksnx1g0r1icv6ynbdnxq4cfnmb58ikg6ymi20al18";
+ inherit pname version;
+ };
+
+ disabled = !isPy3k;
+
+ # No test infrastructure in repository.
+ doCheck = false;
+
+ meta = with lib; {
+ description = "FFMPEG wrapper for Python";
+ homepage = https://github.com/imageio/imageio-ffmpeg;
+ license = licenses.bsd2;
+ maintainers = [ maintainers.pmiddend ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/imageio/default.nix b/nixpkgs/pkgs/development/python-modules/imageio/default.nix
new file mode 100644
index 00000000000..f7b3ff63c53
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/imageio/default.nix
@@ -0,0 +1,57 @@
+{ stdenv
+, buildPythonPackage
+, pathlib
+, fetchPypi
+, pillow
+, psutil
+, imageio-ffmpeg
+, pytest
+, numpy
+, isPy3k
+, ffmpeg
+, futures
+, enum34
+}:
+
+buildPythonPackage rec {
+ pname = "imageio";
+ version = "2.5.0";
+
+ src = fetchPypi {
+ sha256 = "1bdcrr5190jvk0msw2lswj4pbdhrcggjpj8m6q2a2mrxzjnmmrj2";
+ inherit pname version;
+ };
+
+ checkInputs = [ pytest psutil ] ++ stdenv.lib.optionals isPy3k [
+ imageio-ffmpeg ffmpeg
+ ];
+ propagatedBuildInputs = [ numpy pillow ] ++ stdenv.lib.optionals (!isPy3k) [
+ futures
+ enum34
+ pathlib
+ ];
+
+ checkPhase = ''
+ export IMAGEIO_USERDIR="$TMP"
+ export IMAGEIO_NO_INTERNET="true"
+ export HOME="$(mktemp -d)"
+ py.test
+ '';
+
+ # For some reason, importing imageio also imports xml on Nix, see
+ # https://github.com/imageio/imageio/issues/395
+
+ # Also, there are tests that test the downloading of ffmpeg if it's not installed.
+ # "Uncomment" those by renaming.
+ postPatch = ''
+ substituteInPlace tests/test_meta.py --replace '"urllib",' "\"urllib\",\"xml\","
+ substituteInPlace tests/test_ffmpeg.py --replace 'test_get_exe_installed' 'get_exe_installed'
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Library for reading and writing a wide range of image, video, scientific, and volumetric data formats";
+ homepage = http://imageio.github.io/;
+ license = licenses.bsd2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/imagesize/default.nix b/nixpkgs/pkgs/development/python-modules/imagesize/default.nix
new file mode 100644
index 00000000000..6be9f76d380
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/imagesize/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "imagesize";
+ version = "1.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f3832918bc3c66617f92e35f5d70729187676313caa60c187eb0f28b8fe5e3b5";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Getting image size from png/jpeg/jpeg2000/gif file";
+ homepage = https://github.com/shibukawa/imagesize_py;
+ license = with licenses; [ mit ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/imapclient/default.nix b/nixpkgs/pkgs/development/python-modules/imapclient/default.nix
new file mode 100644
index 00000000000..e45cdb3eab8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/imapclient/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, isPy34
+, isPy35
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "IMAPClient";
+ version = "0.13";
+ disabled = isPy34 || isPy35;
+
+ src = fetchurl {
+ url = "https://freshfoo.com/projects/IMAPClient/${pname}-${version}.tar.gz";
+ sha256 = "0v7kd1crdbff0rmh4ddm5qszkis6hpk9084qh94al8h7g4y9l3is";
+ };
+
+ buildInputs = [ mock ];
+
+ preConfigure = ''
+ sed -i '/distribute_setup/d' setup.py
+ substituteInPlace setup.py --replace "mock==0.8.0" "mock"
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://imapclient.readthedocs.io/en/2.1.0/;
+ description = "Easy-to-use, Pythonic and complete IMAP client library";
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/imaplib2/default.nix b/nixpkgs/pkgs/development/python-modules/imaplib2/default.nix
new file mode 100644
index 00000000000..0ceff353f9a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/imaplib2/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "imaplib2";
+ version = "2.45.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a35b6d88258696e80aabecfb784e08730b8558fcaaa3061ff2c7f8637afbd0b3";
+ };
+
+ # No tests on PyPI and no tags on GitHub :(
+ doCheck = false;
+
+ meta = with lib; {
+ description = "A threaded Python IMAP4 client";
+ homepage = https://github.com/bcoe/imaplib2;
+ # See https://github.com/bcoe/imaplib2/issues/25
+ license = licenses.psfl;
+ maintainers = with maintainers; [ dotlambda ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/imbalanced-learn/0.4.nix b/nixpkgs/pkgs/development/python-modules/imbalanced-learn/0.4.nix
new file mode 100644
index 00000000000..e7d2c2f3714
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/imbalanced-learn/0.4.nix
@@ -0,0 +1,29 @@
+{ stdenv, buildPythonPackage, fetchPypi, scikitlearn, pandas, nose, pytest }:
+
+buildPythonPackage rec {
+ pname = "imbalanced-learn";
+ version = "0.4.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5bd9e86e40ce4001a57426541d7c79b18143cbd181e3330c1a3e5c5c43287083";
+ };
+
+ propagatedBuildInputs = [ scikitlearn ];
+ 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 stdenv.lib; {
+ description = "Library offering a number of re-sampling techniques commonly used in datasets showing strong between-class imbalance";
+ homepage = https://github.com/scikit-learn-contrib/imbalanced-learn;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/imbalanced-learn/default.nix b/nixpkgs/pkgs/development/python-modules/imbalanced-learn/default.nix
new file mode 100644
index 00000000000..6de97aff7d3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/imbalanced-learn/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy27
+, nose
+, pandas
+, pytest
+, scikitlearn
+, tensorflow
+}:
+
+buildPythonPackage rec {
+ pname = "imbalanced-learn";
+ version = "0.5.0";
+ disabled = isPy27; # scikit-learn>=0.21 doesn't work on python2
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1m8r055mvkws0s449s1dyrkgricls6basnszwbwqwrw6g19n1xsx";
+ };
+
+ propagatedBuildInputs = [ scikitlearn ];
+ checkInputs = [ nose pytest pandas ];
+ checkPhase = ''
+ export HOME=$TMPDIR
+ # skip some tests that fail because of minimal rounding errors
+ # or very large dependencies (keras + tensorflow)
+ py.test imblearn -k 'not estimator \
+ and not classification \
+ and not _generator'
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Library offering a number of re-sampling techniques commonly used in datasets showing strong between-class imbalance";
+ homepage = https://github.com/scikit-learn-contrib/imbalanced-learn;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/imgaug/default.nix b/nixpkgs/pkgs/development/python-modules/imgaug/default.nix
new file mode 100644
index 00000000000..3946c0df6bc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/imgaug/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, buildPythonPackage, fetchPypi, numpy, scipy, scikitimage, opencv3, six }:
+
+buildPythonPackage rec {
+ pname = "imgaug";
+ version = "0.2.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "42b0c4c8cbe197d4f5dbd33960a1140f8a0d9c22c0a8851306ecbbc032092de8";
+ };
+
+ propagatedBuildInputs = [
+ numpy
+ scipy
+ scikitimage
+ opencv3
+ six
+ ];
+
+ # disable tests when there are no tests in the PyPI archive
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/aleju/imgaug;
+ description = "Image augmentation for machine learning experiments";
+ license = licenses.mit;
+ maintainers = with maintainers; [ cmcdragonkai ];
+ broken = true; # opencv-python bindings aren't available yet, and look non-trivial
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/immutables/default.nix b/nixpkgs/pkgs/development/python-modules/immutables/default.nix
new file mode 100644
index 00000000000..5662f8896cc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/immutables/default.nix
@@ -0,0 +1,19 @@
+{ lib, buildPythonPackage, fetchPypi, pythonOlder }:
+
+buildPythonPackage rec {
+ pname = "immutables";
+ version = "0.9";
+ disabled = pythonOlder "3.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1h7i00x6sdbw62rdipp0kaw1mcrvfipxv0054x1n2r4q4j11q7fp";
+ };
+
+ meta = {
+ description = "An immutable mapping type for Python";
+ homepage = https://github.com/MagicStack/immutables;
+ license = with lib.licenses; [ asl20 ];
+ maintainers = with lib.maintainers; [ catern ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/impacket/default.nix b/nixpkgs/pkgs/development/python-modules/impacket/default.nix
new file mode 100644
index 00000000000..e4e14cf7bbf
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/impacket/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k }:
+
+buildPythonPackage rec {
+ pname = "impacket";
+ version = "0.9.15";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1sq1698g7wqj731h24f7gr4lc0fz0mxrqv6mm3j4hm2j6h3rrbr6";
+ };
+
+ disabled = isPy3k;
+
+ # no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Network protocols Constructors and Dissectors";
+ homepage = "https://github.com/CoreSecurity/impacket";
+ # Modified Apache Software License, Version 1.1
+ license = licenses.free;
+ maintainers = with maintainers; [ peterhoeg ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/importlib-metadata/default.nix b/nixpkgs/pkgs/development/python-modules/importlib-metadata/default.nix
new file mode 100644
index 00000000000..59fdb35be12
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/importlib-metadata/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, setuptools_scm
+, zipp
+, pathlib2
+, contextlib2
+, configparser
+, isPy3k
+, importlib-resources
+, packaging
+}:
+
+buildPythonPackage rec {
+ pname = "importlib-metadata";
+ version = "0.18";
+
+ src = fetchPypi {
+ pname = "importlib_metadata";
+ inherit version;
+ sha256 = "cb6ee23b46173539939964df59d3d72c3e0c1b5d54b84f1d8a7e912fe43612db";
+ };
+
+ nativeBuildInputs = [ setuptools_scm ];
+
+ propagatedBuildInputs = [ zipp ]
+ ++ lib.optionals (!isPy3k) [ pathlib2 contextlib2 configparser ];
+
+ checkInputs = [ importlib-resources packaging ];
+
+ # Two failing tests: https://gitlab.com/python-devs/importlib_metadata/issues/72
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Read metadata from Python packages";
+ homepage = https://importlib-metadata.readthedocs.io/;
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/importlib-resources/default.nix b/nixpkgs/pkgs/development/python-modules/importlib-resources/default.nix
new file mode 100644
index 00000000000..f5769bf0b2d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/importlib-resources/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pathlib2
+, typing
+, isPy3k
+, pythonOlder
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "importlib_resources";
+ version = "1.0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d3279fd0f6f847cced9f7acc19bd3e5df54d34f93a2e7bb5f238f81545787078";
+ };
+
+ propagatedBuildInputs = [
+ ] ++ lib.optional (!isPy3k) pathlib2
+ ++ lib.optional (pythonOlder "3.5") 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;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/importmagic/default.nix b/nixpkgs/pkgs/development/python-modules/importmagic/default.nix
new file mode 100644
index 00000000000..0aa4a295f5d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/importmagic/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "importmagic";
+ version = "0.1.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "3f7757a5b74c9a291e20e12023bb3bf71bc2fa3adfb15a08570648ab83eaf8d8";
+ };
+
+ propagatedBuildInputs = [ six ];
+
+ doCheck = false; # missing json file from tarball
+
+ meta = with stdenv.lib; {
+ description = "Python Import Magic - automagically add, remove and manage imports";
+ homepage = https://github.com/alecthomas/importmagic;
+ license = licenses.bsd0;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/imread/default.nix b/nixpkgs/pkgs/development/python-modules/imread/default.nix
new file mode 100644
index 00000000000..0711283a1b8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/imread/default.nix
@@ -0,0 +1,36 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, pkgconfig
+, libjpeg
+, libpng
+, libtiff
+, libwebp
+, numpy
+}:
+
+buildPythonPackage rec {
+ pname = "python-imread";
+ version = "0.7.0";
+
+ src = fetchPypi {
+ inherit version;
+ pname = "imread";
+ sha256 = "0yb0fmy6ilh5fvbk69wl2bzqgss2g0951668mx8z9yyj4jhr1z2y";
+ };
+
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [ nose libjpeg libpng libtiff libwebp ];
+ propagatedBuildInputs = [ numpy ];
+
+ meta = with stdenv.lib; {
+ description = "Python package to load images as numpy arrays";
+ homepage = https://imread.readthedocs.io/en/latest/;
+ maintainers = with maintainers; [ luispedro ];
+ license = licenses.mit;
+ platforms = platforms.unix;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/imutils/default.nix b/nixpkgs/pkgs/development/python-modules/imutils/default.nix
new file mode 100644
index 00000000000..c5530d7c1d0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/imutils/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, opencv3
+}:
+
+buildPythonPackage rec {
+ version = "0.5.2";
+ pname = "imutils";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1d2bdf373e3e6cfbdc113d4e91547d3add3774d8722c8d4f225fa39586fb8076";
+ };
+
+ propagatedBuildInputs = [ opencv3 ];
+
+ # no tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/jrosebr1/imutils;
+ description = "A series of convenience functions to make basic image processing functions";
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/incremental/default.nix b/nixpkgs/pkgs/development/python-modules/incremental/default.nix
new file mode 100644
index 00000000000..a97a98b207a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/incremental/default.nix
@@ -0,0 +1,18 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "incremental";
+ version = "17.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "7b751696aaf36eebfab537e458929e194460051ccad279c72b755a167eebd4b3";
+ };
+
+ meta = with lib; {
+ homepage = https://github.com/twisted/treq;
+ description = "Incremental is a small library that versions your Python projects";
+ license = licenses.mit;
+ maintainers = with maintainers; [ nand0p ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/inflect/default.nix b/nixpkgs/pkgs/development/python-modules/inflect/default.nix
new file mode 100644
index 00000000000..147cc8753eb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/inflect/default.nix
@@ -0,0 +1,15 @@
+{ buildPythonPackage, fetchPypi, setuptools_scm, nose, six }:
+
+buildPythonPackage rec {
+ pname = "inflect";
+ version = "2.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "4ded1b2a6fcf0fc0397419c7727f131a93b67b80d899f2973be7758628e12b73";
+ };
+
+ buildInputs = [ setuptools_scm ];
+ checkInputs = [ nose ];
+ propagatedBuildInputs = [ six ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/inflection/default.nix b/nixpkgs/pkgs/development/python-modules/inflection/default.nix
new file mode 100644
index 00000000000..bccf49c56ad
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/inflection/default.nix
@@ -0,0 +1,23 @@
+{ lib, fetchPypi, buildPythonPackage, pytest } :
+
+buildPythonPackage rec {
+ pname = "inflection";
+ version = "0.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1jhnxgnw8y3mbzjssixh6qkc7a3afc4fygajhqrqalnilyvpzshq";
+ };
+
+ checkInputs = [ pytest ];
+ # Suppress overly verbose output if tests run successfully
+ checkPhase = ''pytest >/dev/null || pytest'';
+
+ meta = {
+ homepage = https://github.com/jpvanhal/inflection;
+ description = "A port of Ruby on Rails inflector to Python";
+ maintainers = with lib.maintainers; [ NikolaMandic ilya-kolpakov ];
+ license = lib.licenses.mit;
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/influxdb/default.nix b/nixpkgs/pkgs/development/python-modules/influxdb/default.nix
new file mode 100644
index 00000000000..657a8178440
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/influxdb/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, requests
+, dateutil
+, pytz
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "influxdb";
+ version = "5.2.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0hriag4d4gx4bsqisiz29478sj54b215p6xzmshlw6x9af4z5vxg";
+ };
+
+ # ImportError: No module named tests
+ doCheck = false;
+ propagatedBuildInputs = [ requests dateutil pytz six ];
+
+ meta = with stdenv.lib; {
+ description = "Python client for InfluxDB";
+ homepage = https://github.com/influxdb/influxdb-python;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/influxgraph/default.nix b/nixpkgs/pkgs/development/python-modules/influxgraph/default.nix
new file mode 100644
index 00000000000..eeb27b14080
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/influxgraph/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k
+, influxdb, graphite_api, memcached
+}:
+
+buildPythonPackage rec {
+ pname = "influxgraph";
+ version = "1.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0l33sfwdh4bfprmzp2kx0d9098g6yxbnhyyx9qr3kzczpm0jg9vy";
+ };
+
+ patchPhase = stdenv.lib.optionalString isPy3k ''
+ sed 's/python-memcached/python3-memcached/' \
+ -i ./influxgraph.egg-info/requires.txt \
+ -i ./setup.py
+ '';
+
+ propagatedBuildInputs = [ influxdb graphite_api memcached ];
+
+ passthru.moduleName = "influxgraph.InfluxDBFinder";
+
+ meta = with stdenv.lib; {
+ description = "InfluxDB storage plugin for Graphite-API";
+ homepage = https://github.com/InfluxGraph/influxgraph;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ basvandijk ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/infoqscraper/default.nix b/nixpkgs/pkgs/development/python-modules/infoqscraper/default.nix
new file mode 100644
index 00000000000..ce265d01378
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/infoqscraper/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, html5lib
+, six
+, beautifulsoup4
+, pkgs
+}:
+
+buildPythonPackage rec {
+ version = "0.1.0";
+ pname = "infoqscraper";
+
+ src = pkgs.fetchFromGitHub {
+ owner = "cykl";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "07mxp4mla7fwfc032f3mxrhjarnhkjqdxxibf9ba87c93z3dq8jj";
+ };
+
+ # requires network
+ doCheck = false;
+
+ buildInputs = [ html5lib ];
+ propagatedBuildInputs = [ six beautifulsoup4 pkgs.ffmpeg pkgs.swftools pkgs.rtmpdump ];
+
+ meta = with stdenv.lib; {
+ description = "Discover presentations and/or create a movie consisting of slides and audio track from an infoq url";
+ homepage = "https://github.com/cykl/infoqscraper/wiki";
+ license = licenses.mit;
+ maintainers = with maintainers; [ edwtjo ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/inifile/default.nix b/nixpkgs/pkgs/development/python-modules/inifile/default.nix
new file mode 100644
index 00000000000..e64ef76356d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/inifile/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "inifile";
+ version = "0.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0zgd53czc1irwx6b5zip8xlmyfr40hz2pd498d8yv61znj6lm16h";
+ };
+
+ meta = with stdenv.lib; {
+ description = "A small INI library for Python";
+ homepage = "https://github.com/mitsuhiko/python-inifile";
+ license = licenses.bsd0;
+ maintainers = with maintainers; [ vozz ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/iniparse/default.nix b/nixpkgs/pkgs/development/python-modules/iniparse/default.nix
new file mode 100644
index 00000000000..e0c2fd765c9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/iniparse/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "iniparse";
+ version = "0.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0m60k46vr03x68jckachzsipav0bwhhnqb8715hm1cngs89fxhdb";
+ };
+
+ checkPhase = ''
+ ${python.interpreter} runtests.py
+ '';
+
+ # Does not install tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Accessing and Modifying INI files";
+ homepage = http://code.google.com/p/iniparse/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ danbst ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/inotify-simple/default.nix b/nixpkgs/pkgs/development/python-modules/inotify-simple/default.nix
new file mode 100644
index 00000000000..2d5e9d78094
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/inotify-simple/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "inotify-simple";
+ version = "1.1.8";
+
+ src = fetchPypi {
+ pname = "inotify_simple";
+ inherit version;
+ sha256 = "1pfqvnynwh318cakldhg7535kbs02asjsgv6s0ki12i7fgfi0b7w";
+ };
+
+ # The package has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "A simple Python wrapper around inotify";
+ homepage = https://github.com/chrisjbillington/inotify_simple;
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ earvstedt ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/inquirer/default.nix b/nixpkgs/pkgs/development/python-modules/inquirer/default.nix
new file mode 100644
index 00000000000..58e7f61b676
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/inquirer/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, buildPythonPackage, fetchPypi, python-editor, readchar, blessings, pytest, pytestcov, pexpect, pytest-mock }:
+
+buildPythonPackage rec {
+ pname = "inquirer";
+ version = "2.6.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "01lf51y3bxsxkghbdk9hr42yvihpwi2s5zpxnra3bx41r35msvjz";
+ };
+
+ propagatedBuildInputs = [ python-editor readchar blessings ];
+
+ # No real changes in 2.0.0...e0edfa3
+ postPatch = ''
+ substituteInPlace setup.py \
+ --replace "readchar == 2.0.1" "readchar >= 2.0.0"
+ '';
+
+ checkInputs = [ pytest pytestcov pexpect pytest-mock ];
+
+ checkPhase = ''
+ pytest --cov-report=term-missing --cov inquirer --no-cov-on-fail tests/unit tests/integration
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/magmax/python-inquirer";
+ description = "A collection of common interactive command line user interfaces, based on Inquirer.js";
+ license = licenses.mit;
+ maintainers = [ maintainers.mmahut ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/intake/default.nix b/nixpkgs/pkgs/development/python-modules/intake/default.nix
new file mode 100644
index 00000000000..f89b7ab1ce6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/intake/default.nix
@@ -0,0 +1,70 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, appdirs
+, dask
+, holoviews
+, hvplot
+, jinja2
+, msgpack-numpy
+, msgpack-python
+, numpy
+, pandas
+, panel
+, python-snappy
+, requests
+, ruamel_yaml
+, six
+, tornado
+, pytest
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+ pname = "intake";
+ version = "0.5.3";
+
+ disabled = pythonOlder "3.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1mbjr4xl4i523bg8k08s5986v2289fznd8cr3j3czn5adi8519j7";
+ };
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [
+ appdirs
+ dask
+ holoviews
+ hvplot
+ jinja2
+ msgpack-numpy
+ msgpack-python
+ numpy
+ pandas
+ panel
+ python-snappy
+ requests
+ ruamel_yaml
+ six
+ tornado
+ ];
+
+ postPatch = ''
+ # Is in setup_requires but not used in setup.py...
+ substituteInPlace setup.py --replace "'pytest-runner'" ""
+ '';
+
+ # test_discover requires driver_with_entrypoints-0.1.dist-info, which is not included in tarball
+ # test_filtered_compressed_cache requires calvert_uk_filter.tar.gz, which is not included in tarball
+ checkPhase = ''
+ PATH=$out/bin:$PATH HOME=$(mktemp -d) pytest -k "not test_discover and not test_filtered_compressed_cache"
+ '';
+
+ meta = with lib; {
+ description = "Data load and catalog system";
+ homepage = https://github.com/ContinuumIO/intake;
+ license = licenses.bsd2;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/intelhex/default.nix b/nixpkgs/pkgs/development/python-modules/intelhex/default.nix
new file mode 100644
index 00000000000..20098485ad4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/intelhex/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, fetchpatch
+}:
+
+buildPythonPackage rec {
+ pname = "intelhex";
+ version = "2.2.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0ckqjbxd8gwcg98gfzpn4vq1qxzfvq3rdbrr1hikj1nmw08qb780";
+ };
+
+ patches = [
+ # patch the tests to check for the correct version string (2.2.1)
+ (fetchpatch {
+ url = "https://patch-diff.githubusercontent.com/raw/bialix/intelhex/pull/26.patch";
+ sha256 = "1f3f2cyf9ipb9zdifmjs8rqhg028dhy91vabxxn3l7br657s8r2l";
+ })
+ ];
+
+ meta = {
+ homepage = https://github.com/bialix/intelhex;
+ description = "Python library for Intel HEX files manipulations";
+ license = lib.licenses.bsd3;
+ maintainers = with lib.maintainers; [ pjones ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/internetarchive/default.nix b/nixpkgs/pkgs/development/python-modules/internetarchive/default.nix
new file mode 100644
index 00000000000..dda0680f537
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/internetarchive/default.nix
@@ -0,0 +1,42 @@
+{ buildPythonPackage, fetchFromGitHub, pytest, six, clint, pyyaml, docopt
+, requests, jsonpatch, args, schema, responses, backports_csv, isPy3k
+, lib, glibcLocales }:
+
+buildPythonPackage rec {
+ pname = "internetarchive";
+ version = "1.8.1";
+
+ # Can't use pypi, data files for tests missing
+ src = fetchFromGitHub {
+ owner = "jjjake";
+ repo = "internetarchive";
+ rev = "v${version}";
+ sha256 = "1fdb0kr9hzgyh0l8d02khcjpsgyd63nbablhc49ncdsav3dhhr3f";
+ };
+
+ propagatedBuildInputs = [
+ six
+ clint
+ pyyaml
+ docopt
+ requests
+ jsonpatch
+ args
+ schema
+ ] ++ lib.optional (!isPy3k) backports_csv;
+
+ checkInputs = [ pytest responses glibcLocales ];
+
+ # tests depend on network
+ doCheck = false;
+
+ checkPhase = ''
+ LC_ALL=en_US.utf-8 pytest tests
+ '';
+
+ meta = with lib; {
+ description = "A python wrapper for the various Internet Archive APIs";
+ homepage = https://github.com/jjjake/internetarchive;
+ license = licenses.agpl3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/interruptingcow/default.nix b/nixpkgs/pkgs/development/python-modules/interruptingcow/default.nix
new file mode 100644
index 00000000000..ee81c40febc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/interruptingcow/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+buildPythonPackage rec {
+ pname = "interruptingcow";
+ version = "0.8";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "3e8cd5058b651e625702cba53e3b1fb76d7a5ec07ab69c52a167a9f784e3306c";
+ };
+
+ meta = with stdenv.lib; {
+ description = "A watchdog that interrupts long running code";
+ homepage = https://bitbucket.org/evzijst/interruptingcow;
+ license = licenses.mit;
+ maintainers = with maintainers; [ benley ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/intervaltree/default.nix b/nixpkgs/pkgs/development/python-modules/intervaltree/default.nix
new file mode 100644
index 00000000000..b60eb0c7327
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/intervaltree/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, python, pytest, sortedcontainers }:
+
+buildPythonPackage rec {
+ version = "3.0.2";
+ pname = "intervaltree";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0wz234g6irlm4hivs2qzmnywk0ss06ckagwh15nflkyb3p462kyb";
+ };
+
+ buildInputs = [ pytest ];
+
+ propagatedBuildInputs = [ sortedcontainers ];
+
+ checkPhase = ''
+ runHook preCheck
+ rm build -rf
+ ${python.interpreter} nix_run_setup test
+ runHook postCheck
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Editable interval tree data structure for Python 2 and 3";
+ homepage = https://github.com/chaimleib/intervaltree;
+ license = [ licenses.asl20 ];
+ maintainers = [ maintainers.bennofs ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/invoke/default.nix b/nixpkgs/pkgs/development/python-modules/invoke/default.nix
new file mode 100644
index 00000000000..a07dd9e727c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/invoke/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, bash
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "invoke";
+ version = "1.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1nn7gad0rvy492acpyhkrp01zsk86acf34qhsvq4xmm6x39788n5";
+ };
+
+ patchPhase = ''
+ sed -e 's|/bin/bash|${bash}/bin/bash|g' -i invoke/config.py
+ '';
+
+ # errors with vendored libs
+ doCheck = false;
+
+ meta = {
+ description = "Pythonic task execution";
+ license = lib.licenses.bsd2;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/iocapture/default.nix b/nixpkgs/pkgs/development/python-modules/iocapture/default.nix
new file mode 100644
index 00000000000..1e333d923a0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/iocapture/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, flexmock
+, pytest
+, pytestcov
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "iocapture";
+ version = "0.1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "86670e1808bcdcd4f70112f43da72ae766f04cd8311d1071ce6e0e0a72e37ee8";
+ };
+
+ checkInputs = [
+ flexmock
+ pytest
+ pytestcov
+ six
+ ];
+
+ # No tests in archive
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Capture stdout, stderr easily.";
+ homepage = https://github.com/oinume/iocapture;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/iowait/default.nix b/nixpkgs/pkgs/development/python-modules/iowait/default.nix
new file mode 100644
index 00000000000..c67d56b153e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/iowait/default.nix
@@ -0,0 +1,16 @@
+{ buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "iowait";
+ version = "0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "16djvxd9sxm7cr57clhqkyrq3xvdzgwj803sy5hwyb62hkmw46xb";
+ };
+
+ meta = {
+ description = "Platform-independent module for I/O completion events";
+ homepage = https://launchpad.net/python-iowait;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ipaddr/default.nix b/nixpkgs/pkgs/development/python-modules/ipaddr/default.nix
new file mode 100644
index 00000000000..6aecf5959ff
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ipaddr/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "ipaddr";
+ version = "2.2.0";
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1ml8r8z3f0mnn381qs1snbffa920i9ycp6mm2am1d3aqczkdz4j0";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Google's IP address manipulation library";
+ homepage = http://code.google.com/p/ipaddr-py/;
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ipaddress/default.nix b/nixpkgs/pkgs/development/python-modules/ipaddress/default.nix
new file mode 100644
index 00000000000..0ce2abff596
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ipaddress/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pythonAtLeast
+, python
+}:
+
+if (pythonAtLeast "3.3") then null else buildPythonPackage rec {
+ pname = "ipaddress";
+ version = "1.0.22";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b146c751ea45cad6188dd6cf2d9b757f6f4f8d6ffb96a023e6f2e26eea02a72c";
+ };
+
+ checkPhase = ''
+ ${python.interpreter} test_ipaddress.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Port of the 3.3+ ipaddress module to 2.6, 2.7, and 3.2";
+ homepage = https://github.com/phihag/ipaddress;
+ license = licenses.psfl;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ipdb/default.nix b/nixpkgs/pkgs/development/python-modules/ipdb/default.nix
new file mode 100644
index 00000000000..18a2d570497
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ipdb/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, ipython
+, isPyPy
+}:
+
+buildPythonPackage rec {
+ pname = "ipdb";
+ version = "0.12.2";
+ disabled = isPyPy; # setupterm: could not find terminfo database
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0mzfv2sa8qabqzh2vqgwhavb15gsmcgqn6i3jgq6b5q9i9wxsgs7";
+ };
+
+ propagatedBuildInputs = [ ipython ];
+
+ preCheck = ''
+ export HOME=$(mktemp -d)
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/gotcha/ipdb;
+ description = "IPython-enabled pdb";
+ license = licenses.bsd0;
+ maintainers = [ maintainers.costrouc ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ipdbplugin/default.nix b/nixpkgs/pkgs/development/python-modules/ipdbplugin/default.nix
new file mode 100644
index 00000000000..b092a9fa2ae
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ipdbplugin/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, ipython
+}:
+
+buildPythonPackage rec {
+ pname = "ipdbplugin";
+ version = "1.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "cdcd6bc1e995c3c2c4971ed95f207e680aa44980b716fa43fb675ff2dcc7894f";
+ };
+
+ propagatedBuildInputs = [ nose ipython ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/flavioamieiro/nose-ipdb/tree/master;
+ description = "Nose plugin to use iPdb instead of Pdb when tests fail";
+ license = licenses.lgpl2;
+ maintainers = [ maintainers.costrouc ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ipfsapi/default.nix b/nixpkgs/pkgs/development/python-modules/ipfsapi/default.nix
new file mode 100644
index 00000000000..1778e5a81af
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ipfsapi/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, isPy27
+, six
+, requests
+}:
+
+buildPythonPackage {
+ pname = "ipfsapi";
+ version = "0.4.2.post1";
+ disabled = isPy27;
+
+ src = fetchFromGitHub {
+ owner = "ipfs";
+ repo = "py-ipfs-api";
+ rev = "0c485544a114f580c65e2ffbb5782efbf7fd9f61";
+ sha256 = "1v7f77cv95yv0v80gisdh71mj7jcq41xcfip6bqm57zfdbsa0xpn";
+ };
+
+ propagatedBuildInputs = [ six requests ];
+
+ meta = with stdenv.lib; {
+ description = "A python client library for the IPFS API";
+ license = licenses.mit;
+ maintainers = with maintainers; [ mguentner ];
+ homepage = "https://pypi.python.org/pypi/ipfsapi";
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/iptools/default.nix b/nixpkgs/pkgs/development/python-modules/iptools/default.nix
new file mode 100644
index 00000000000..6b33edfca3c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/iptools/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+}:
+
+buildPythonPackage rec {
+ version = "0.7.0";
+ pname = "iptools";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1sp2v76qqsgqjk0vqfbm2s4sc4mi0gkkpzjnvwih3ymmidilz2hi";
+ };
+
+ buildInputs = [ nose ];
+
+ meta = with stdenv.lib; {
+ description = "Utilities for manipulating IP addresses including a class that can be used to include CIDR network blocks in Django's INTERNAL_IPS setting";
+ homepage = https://pypi.python.org/pypi/iptools;
+ license = licenses.bsd0;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ipykernel/4.nix b/nixpkgs/pkgs/development/python-modules/ipykernel/4.nix
new file mode 100644
index 00000000000..49dfbf6ad8e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ipykernel/4.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, nose
+, isPy27
+, mock
+, ipython
+, jupyter_client
+, pexpect
+, traitlets
+, tornado
+}:
+
+buildPythonPackage rec {
+ pname = "ipykernel";
+ version = "4.10.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "699103c8e64886e3ec7053f2a6aa83bb90426063526f63a818732ff385202bad";
+ };
+
+ checkInputs = [ nose ] ++ lib.optional isPy27 mock;
+ propagatedBuildInputs = [
+ ipython
+ jupyter_client
+ pexpect
+ traitlets
+ tornado
+ ];
+
+ # Tests require backends.
+ # I don't want to add all supported backends as propagatedBuildInputs
+ doCheck = false;
+
+ meta = {
+ description = "IPython Kernel for Jupyter";
+ homepage = http://ipython.org/;
+ license = lib.licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ipykernel/default.nix b/nixpkgs/pkgs/development/python-modules/ipykernel/default.nix
new file mode 100644
index 00000000000..4bdd9011d1e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ipykernel/default.nix
@@ -0,0 +1,49 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, fetchpatch
+, ipython
+, jupyter_client
+, traitlets
+, tornado
+, pythonOlder
+, pytest
+, nose
+}:
+
+buildPythonPackage rec {
+ pname = "ipykernel";
+ version = "5.1.1";
+ disabled = pythonOlder "3.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "173nm29g85w8cac3fg40b27qaq26g41wgg6qn79ql1hq4w2n5sgh";
+ };
+
+ checkInputs = [ pytest nose ];
+ propagatedBuildInputs = [ ipython jupyter_client traitlets tornado ];
+
+ # https://github.com/ipython/ipykernel/pull/377
+ patches = [
+ (fetchpatch {
+ url = "https://github.com/ipython/ipykernel/commit/a3bf849dbd368a1826deb9dfc94c2bd3e5ed04fe.patch";
+ sha256 = "1yhpwqixlf98a3n620z92mfips3riw6psijqnc5jgs2p58fgs2yc";
+ })
+ ];
+
+ # For failing tests, see https://github.com/ipython/ipykernel/issues/387
+ checkPhase = ''
+ HOME=$(mktemp -d) pytest ipykernel -k "not (test_sys_path or test_sys_path_profile_dir or test_complete)"
+ '';
+
+ # Some of the tests use localhost networking.
+ __darwinAllowLocalNetworking = true;
+
+ meta = {
+ description = "IPython Kernel for Jupyter";
+ homepage = http://ipython.org/;
+ license = lib.licenses.bsd3;
+ maintainers = with lib.maintainers; [ fridh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ipyparallel/default.nix b/nixpkgs/pkgs/development/python-modules/ipyparallel/default.nix
new file mode 100644
index 00000000000..3fa1acb875a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ipyparallel/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, nose
+, dateutil
+, ipython_genutils
+, decorator
+, pyzmq
+, ipython
+, jupyter_client
+, ipykernel
+, tornado
+, isPy3k
+, futures
+}:
+
+buildPythonPackage rec {
+ pname = "ipyparallel";
+ version = "6.2.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0rf0dbpxf5z82bw8lsjj45r3wdd4wc74anz4wiiaf2rbjqlb1ivn";
+ };
+
+ buildInputs = [ nose ];
+
+ propagatedBuildInputs = [ dateutil ipython_genutils decorator pyzmq ipython jupyter_client ipykernel tornado
+ ] ++ lib.optionals (!isPy3k) [ futures ];
+
+ # Requires access to cluster
+ doCheck = false;
+
+ meta = {
+ description = "Interactive Parallel Computing with IPython";
+ homepage = http://ipython.org/;
+ license = lib.licenses.bsd3;
+ maintainers = with lib.maintainers; [ fridh ];
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/ipython/5.nix b/nixpkgs/pkgs/development/python-modules/ipython/5.nix
new file mode 100644
index 00000000000..15e7d00bcec
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ipython/5.nix
@@ -0,0 +1,62 @@
+{ lib
+, stdenv
+, buildPythonPackage
+, fetchPypi
+# 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 = stdenv.lib.optionalString stdenv.isDarwin ''
+ substituteInPlace setup.py --replace "'gnureadline'" " "
+ '';
+
+ buildInputs = [ glibcLocales ];
+
+ checkInputs = [ nose pygments testpath ] ++ lib.optional isPy27 mock;
+
+ propagatedBuildInputs = [
+ backports_shutil_get_terminal_size decorator pickleshare prompt_toolkit
+ simplegeneric traitlets requests pathlib2 pexpect
+ ] ++ lib.optionals stdenv.isDarwin [ appnope ];
+
+ LC_ALL="en_US.UTF-8";
+
+ doCheck = false; # Circular dependency with ipykernel
+
+ checkPhase = ''
+ nosetests
+ '';
+
+ meta = {
+ description = "IPython: Productive Interactive Computing";
+ homepage = http://ipython.org/;
+ license = lib.licenses.bsd3;
+ maintainers = with lib.maintainers; [ bjornfor orivej lnl7 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ipython/default.nix b/nixpkgs/pkgs/development/python-modules/ipython/default.nix
new file mode 100644
index 00000000000..14b083ab500
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ipython/default.nix
@@ -0,0 +1,66 @@
+{ lib
+, stdenv
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+# Build dependencies
+, glibcLocales
+# Test dependencies
+, nose
+, pygments
+# Runtime dependencies
+, jedi
+, decorator
+, pickleshare
+, traitlets
+, prompt_toolkit
+, pexpect
+, appnope
+, backcall
+, fetchpatch
+}:
+
+buildPythonPackage rec {
+ pname = "ipython";
+ version = "7.6.1";
+ disabled = pythonOlder "3.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "11067ab11d98b1e6c7f0993506f7a5f8a91af420f7e82be6575fcb7a6ca372a0";
+ };
+
+ 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
+ '';
+
+ meta = {
+ description = "IPython: Productive Interactive Computing";
+ homepage = http://ipython.org/;
+ license = lib.licenses.bsd3;
+ maintainers = with lib.maintainers; [ bjornfor fridh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ipython_genutils/default.nix b/nixpkgs/pkgs/development/python-modules/ipython_genutils/default.nix
new file mode 100644
index 00000000000..0f3504780c2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ipython_genutils/default.nix
@@ -0,0 +1,29 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, nose
+, glibcLocales
+}:
+
+buildPythonPackage rec {
+ pname = "ipython_genutils";
+ version = "0.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8";
+ };
+
+ checkInputs = [ nose glibcLocales ];
+
+ checkPhase = ''
+ LC_ALL="en_US.UTF-8" nosetests -v ipython_genutils/tests
+ '';
+
+ meta = {
+ description = "Vestigial utilities from IPython";
+ homepage = http://ipython.org/;
+ license = lib.licenses.bsd3;
+ maintainers = with lib.maintainers; [ fridh ];
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/ipywidgets/default.nix b/nixpkgs/pkgs/development/python-modules/ipywidgets/default.nix
new file mode 100644
index 00000000000..fd71569e293
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ipywidgets/default.nix
@@ -0,0 +1,46 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, python
+, nose
+, pytest
+, mock
+, ipython
+, ipykernel
+, traitlets
+, notebook
+, widgetsnbextension
+}:
+
+buildPythonPackage rec {
+ pname = "ipywidgets";
+ version = "7.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "cb263c6974aca902d00a435711823bb4aaf6614a5f997f517e15fa84151e8fa2";
+ };
+
+ # Tests are not distributed
+ # doCheck = false;
+
+ buildInputs = [ nose pytest mock ];
+ propagatedBuildInputs = [
+ ipython
+ ipykernel
+ traitlets
+ notebook
+ widgetsnbextension
+ ];
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover
+ '';
+
+ meta = {
+ description = "IPython HTML widgets for Jupyter";
+ homepage = http://ipython.org/;
+ license = lib.licenses.bsd3;
+ maintainers = with lib.maintainers; [ fridh ];
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/irc/default.nix b/nixpkgs/pkgs/development/python-modules/irc/default.nix
new file mode 100644
index 00000000000..b422b368ffb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/irc/default.nix
@@ -0,0 +1,29 @@
+{ buildPythonPackage, fetchPypi, isPy3k
+, six, jaraco_logging, jaraco_text, jaraco_stream, pytz, jaraco_itertools
+, setuptools_scm, jaraco_collections
+}:
+
+buildPythonPackage rec {
+ pname = "irc";
+ version = "17.0";
+
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f9c5fcb72dd230e1387fd4a0114a1935605e0f59ac09dec962313baed74e1365";
+ };
+
+ doCheck = false;
+
+ buildInputs = [ setuptools_scm ];
+ propagatedBuildInputs = [
+ six
+ jaraco_logging
+ jaraco_text
+ jaraco_stream
+ pytz
+ jaraco_itertools
+ jaraco_collections
+ ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/isbnlib/default.nix b/nixpkgs/pkgs/development/python-modules/isbnlib/default.nix
new file mode 100644
index 00000000000..319bf7f24a2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/isbnlib/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, nose
+, coverage
+}:
+
+buildPythonPackage rec {
+ pname = "isbnlib";
+ version = "3.9.8";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ca27dc15763759d038a22f4e05d849acc121ffcb8ffe008768f09a0d844f7172";
+ };
+
+ checkInputs = [
+ nose
+ coverage
+ ];
+
+ # requires network connection
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Extract, clean, transform, hyphenate and metadata for ISBNs";
+ homepage = https://github.com/xlcnd/isbnlib;
+ license = licenses.lgpl3;
+ maintainers = with maintainers; [ dotlambda ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/islpy/default.nix b/nixpkgs/pkgs/development/python-modules/islpy/default.nix
new file mode 100644
index 00000000000..6274da95b32
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/islpy/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, isl
+, pytest
+, cffi
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "islpy";
+ version = "2018.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "be422a53b576210a0bb9775866abb6580b1e568222fc3e4e39d9e82f6d1d7253";
+ };
+
+ postConfigure = ''
+ substituteInPlace setup.py \
+ --replace "\"pytest>=2\"," ""
+ '';
+
+ buildInputs = [ isl ];
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [
+ cffi
+ six
+ ];
+
+ checkPhase = ''
+ pytest test
+ '';
+
+ meta = with lib; {
+ description = "Python wrapper around isl, an integer set library";
+ homepage = https://github.com/inducer/islpy;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/iso-639/default.nix b/nixpkgs/pkgs/development/python-modules/iso-639/default.nix
new file mode 100644
index 00000000000..59d0d27b8b6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/iso-639/default.nix
@@ -0,0 +1,20 @@
+{ lib, fetchPypi, buildPythonPackage, setuptools }:
+
+buildPythonPackage rec {
+ pname = "iso-639";
+ version = "0.4.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "dc9cd4b880b898d774c47fe9775167404af8a85dd889d58f9008035109acce49";
+ };
+
+ propagatedBuildInputs = [ setuptools ];
+
+ meta = with lib; {
+ homepage = https://github.com/noumar/iso639;
+ description = "ISO 639 library for Python";
+ license = licenses.agpl3;
+ maintainers = with maintainers; [ zraexy ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/iso3166/default.nix b/nixpkgs/pkgs/development/python-modules/iso3166/default.nix
new file mode 100644
index 00000000000..54d9aff280f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/iso3166/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, buildPythonPackage, pytest }:
+
+buildPythonPackage {
+ pname = "iso3166";
+ version = "0.8";
+
+ src = fetchFromGitHub {
+ owner = "deactivated";
+ repo = "python-iso3166";
+ # repo has no version tags
+ rev = "f04e499447bbff10af701cf3dd81f6bcdf02f7d7";
+ sha256 = "0zs9za9dr2nl5srxir08yibmp6nffcapmzala0fgh8ny7y6rafrx";
+ };
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/deactivated/python-iso3166;
+ description = "Self-contained ISO 3166-1 country definitions";
+ license = licenses.mit;
+ maintainers = with maintainers; [ zraexy ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/iso8601/default.nix b/nixpkgs/pkgs/development/python-modules/iso8601/default.nix
new file mode 100644
index 00000000000..4f9ff70556b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/iso8601/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "iso8601";
+ version = "0.1.12";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "49c4b20e1f38aa5cf109ddcd39647ac419f928512c869dc01d5c7098eddede82";
+ };
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ py.test iso8601
+ '';
+
+ meta = {
+ homepage = https://bitbucket.org/micktwomey/pyiso8601/;
+ description = "Simple module to parse ISO 8601 dates";
+ maintainers = with lib.maintainers; [ phreedom ];
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/isodate/default.nix b/nixpkgs/pkgs/development/python-modules/isodate/default.nix
new file mode 100644
index 00000000000..425a295e5a5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/isodate/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "isodate";
+ version = "0.6.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2e364a3d5759479cdb2d37cce6b9376ea504db2ff90252a2e5b7cc89cc9ff2d8";
+ };
+
+ propagatedBuildInputs = [ six ];
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover -s src/isodate/tests
+ '';
+
+ meta = with stdenv.lib; {
+ description = "ISO 8601 date/time parser";
+ homepage = http://cheeseshop.python.org/pypi/isodate;
+ license = licenses.bsd0;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/isort/default.nix b/nixpkgs/pkgs/development/python-modules/isort/default.nix
new file mode 100644
index 00000000000..979213f945b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/isort/default.nix
@@ -0,0 +1,30 @@
+{ lib, buildPythonPackage, fetchPypi, 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.20"; # Note 4.x is the last version that supports Python2
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c40744b6bc5162bbb39c1257fe298b7a393861d50978b565f3ccd9cb9de0182a";
+ };
+
+ propagatedBuildInputs = lib.optionals isPy27 [ futures backports_functools_lru_cache ];
+
+ checkInputs = [ mock pytest ];
+
+ # isort excludes paths that contain /build/, so test fixtures don't work with TMPDIR=/build/
+ checkPhase = ''
+ PATH=$out/bin:$PATH TMPDIR=/tmp/ pytest ${testOpts}
+ '';
+
+ 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 nand0p ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/isoweek/default.nix b/nixpkgs/pkgs/development/python-modules/isoweek/default.nix
new file mode 100644
index 00000000000..65de70b20b5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/isoweek/default.nix
@@ -0,0 +1,19 @@
+{ lib, fetchPypi, buildPythonPackage }:
+
+buildPythonPackage rec {
+ pname = "isoweek";
+ version = "1.3.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1s7zsf0pab0l9gn6456qadnz5i5h90hafcjwnhx5mq23qjxggwvk";
+ };
+
+ meta = with lib; {
+ description = "The module provide the class Week. Instances represent specific weeks spanning Monday to Sunday.";
+ homepage = "https://github.com/gisle/isoweek";
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ mrmebelman ];
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/itsdangerous/default.nix b/nixpkgs/pkgs/development/python-modules/itsdangerous/default.nix
new file mode 100644
index 00000000000..4761a98dc30
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/itsdangerous/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "itsdangerous";
+ version = "1.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19";
+ };
+
+ meta = with stdenv.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/nixpkgs/pkgs/development/python-modules/j2cli/default.nix b/nixpkgs/pkgs/development/python-modules/j2cli/default.nix
new file mode 100644
index 00000000000..98725ca4767
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/j2cli/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, jinja2
+, pyyaml
+}:
+
+buildPythonPackage rec {
+ pname = "j2cli";
+ version = "0.3.10";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6f6f643b3fa5c0f72fbe9f07e246f8e138052b9f689e14c7c64d582c59709ae4";
+ };
+
+ checkInputs = [ nose ];
+ propagatedBuildInputs = [ jinja2 pyyaml ];
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/kolypto/j2cli";
+ description = "Jinja2 Command-Line Tool";
+ license = licenses.bsd2;
+ longDescription = ''
+ J2Cli is a command-line tool for templating in shell-scripts,
+ leveraging the Jinja2 library.
+ '';
+ maintainers = with maintainers; [ rushmorem ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jabberbot/default.nix b/nixpkgs/pkgs/development/python-modules/jabberbot/default.nix
new file mode 100644
index 00000000000..6c04e6945de
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jabberbot/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, isPy3k, fetchPypi, xmpppy }:
+
+buildPythonPackage rec {
+ pname = "jabberbot";
+ version = "0.16";
+
+ disabled = isPy3k;
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1qr7c5p9a0nzsvri1djnd5r3d7ilh2mdxvviqn1s2hcc70rha65d";
+ };
+
+ propagatedBuildInputs = [ xmpppy ];
+
+ doCheck = false; # lol, it does not even specify dependencies properly
+
+ meta = with stdenv.lib; {
+ description = "A framework for writing Jabber/XMPP bots and services";
+ homepage = http://thp.io/2007/python-jabberbot/;
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ mic92 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jaraco_classes/default.nix b/nixpkgs/pkgs/development/python-modules/jaraco_classes/default.nix
new file mode 100644
index 00000000000..dadbb810465
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jaraco_classes/default.nix
@@ -0,0 +1,13 @@
+{ buildPythonPackage, fetchPypi, setuptools_scm, six }:
+
+buildPythonPackage rec {
+ pname = "jaraco.classes";
+ version = "2.0";
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1xfal9085bjh4fv57d6v9ibr5wf4llj73gp1ybdlqd2bralc9hnw";
+ };
+ doCheck = false;
+ buildInputs = [ setuptools_scm ];
+ propagatedBuildInputs = [ six ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jaraco_collections/default.nix b/nixpkgs/pkgs/development/python-modules/jaraco_collections/default.nix
new file mode 100644
index 00000000000..8fde41e9b49
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jaraco_collections/default.nix
@@ -0,0 +1,21 @@
+{ buildPythonPackage, fetchPypi, setuptools_scm
+, six, jaraco_classes, jaraco_text
+}:
+
+buildPythonPackage rec {
+ pname = "jaraco.collections";
+ version = "2.0";
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "eb43fb9a7b29cff20767caf838c14bdf80a89395aba67a97d61c8f16e0e22c97";
+ };
+
+ doCheck = false;
+ buildInputs = [ setuptools_scm ];
+ propagatedBuildInputs = [ six jaraco_classes jaraco_text ];
+
+ # break dependency cycle
+ patchPhase = ''
+ sed -i "/'jaraco.text',/d" setup.py
+ '';
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jaraco_functools/default.nix b/nixpkgs/pkgs/development/python-modules/jaraco_functools/default.nix
new file mode 100644
index 00000000000..7fc90d63f69
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jaraco_functools/default.nix
@@ -0,0 +1,25 @@
+{ 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 = "35ba944f52b1a7beee8843a5aa6752d1d5b79893eeb7770ea98be6b637bf9345";
+ };
+
+ propagatedBuildInputs = [ more-itertools backports_functools_lru_cache ];
+
+ doCheck = false;
+
+ buildInputs = [ setuptools_scm ];
+
+ meta = with lib; {
+ description = "Additional functools in the spirit of stdlib's functools";
+ homepage = https://github.com/jaraco/jaraco.functools;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jaraco_itertools/0001-Don-t-run-flake8-checks-during-the-build.patch b/nixpkgs/pkgs/development/python-modules/jaraco_itertools/0001-Don-t-run-flake8-checks-during-the-build.patch
new file mode 100644
index 00000000000..43530fcc328
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jaraco_itertools/0001-Don-t-run-flake8-checks-during-the-build.patch
@@ -0,0 +1,38 @@
+From fcffcc61e432e5250e7fbfb1ecbe0f1cac3006cf Mon Sep 17 00:00:00 2001
+From: Maximilian Bosch <maximilian@mbosch.me>
+Date: Sun, 10 Mar 2019 13:10:18 +0100
+Subject: [PATCH] Don't run flake8 checks during the build
+
+If the code simply violates their code style, the Nix package shouldn't fail.
+---
+ pytest.ini | 2 +-
+ setup.cfg | 1 -
+ 2 files changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/pytest.ini b/pytest.ini
+index d165e5e..d8e4694 100644
+--- a/pytest.ini
++++ b/pytest.ini
+@@ -1,6 +1,6 @@
+ [pytest]
+ norecursedirs=dist build .tox .eggs
+-addopts=--doctest-modules --flake8
++addopts=--doctest-modules
+ doctest_optionflags=ALLOW_UNICODE ELLIPSIS ALLOW_BYTES
+ filterwarnings=
+ ignore:Possible nested set::pycodestyle:113
+diff --git a/setup.cfg b/setup.cfg
+index 9f3517f..c9033ec 100644
+--- a/setup.cfg
++++ b/setup.cfg
+@@ -30,7 +30,6 @@ setup_requires = setuptools_scm >= 1.15.0
+ testing =
+ pytest >= 3.5, !=3.7.3
+ pytest-checkdocs
+- pytest-flake8
+ docs =
+ sphinx
+ jaraco.packaging >= 3.2
+--
+2.18.1
+
diff --git a/nixpkgs/pkgs/development/python-modules/jaraco_itertools/default.nix b/nixpkgs/pkgs/development/python-modules/jaraco_itertools/default.nix
new file mode 100644
index 00000000000..59d8538bb1e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jaraco_itertools/default.nix
@@ -0,0 +1,29 @@
+{ lib, buildPythonPackage, fetchPypi, setuptools_scm
+, inflect, more-itertools, six, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "jaraco.itertools";
+ version = "4.4.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0zxx8ffk5ycapy2d41dfgzskl5jfwjc10hsd91jsrax5alkhrh7x";
+ };
+
+ patches = [ ./0001-Don-t-run-flake8-checks-during-the-build.patch ];
+
+ buildInputs = [ setuptools_scm ];
+ propagatedBuildInputs = [ inflect more-itertools six ];
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with lib; {
+ description = "Tools for working with iterables";
+ homepage = https://github.com/jaraco/jaraco.itertools;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jaraco_logging/0001-Don-t-run-flake8-checks-during-the-build.patch b/nixpkgs/pkgs/development/python-modules/jaraco_logging/0001-Don-t-run-flake8-checks-during-the-build.patch
new file mode 100644
index 00000000000..aab9604b9ce
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jaraco_logging/0001-Don-t-run-flake8-checks-during-the-build.patch
@@ -0,0 +1,38 @@
+From 4b9801d9bbe535fd6719933b96278915573e3595 Mon Sep 17 00:00:00 2001
+From: Maximilian Bosch <maximilian@mbosch.me>
+Date: Sun, 10 Mar 2019 16:42:21 +0100
+Subject: [PATCH] Don't run flake8 checks during the build
+
+If the code simply violates their code style, the Nix package shouldn't fail.
+---
+ pytest.ini | 2 +-
+ setup.cfg | 1 -
+ 2 files changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/pytest.ini b/pytest.ini
+index 9b3c1ec..a5189c1 100644
+--- a/pytest.ini
++++ b/pytest.ini
+@@ -1,6 +1,6 @@
+ [pytest]
+ norecursedirs=dist build .tox .eggs
+-addopts=--doctest-modules --flake8
++addopts=--doctest-modules
+ doctest_optionflags=ALLOW_UNICODE ELLIPSIS
+ filterwarnings=
+ ignore:Possible nested set::pycodestyle:113
+diff --git a/setup.cfg b/setup.cfg
+index 3e7bbed..5cac7a2 100644
+--- a/setup.cfg
++++ b/setup.cfg
+@@ -29,7 +29,6 @@ setup_requires = setuptools_scm >= 1.15.0
+ testing =
+ pytest >= 3.5, !=3.7.3
+ pytest-checkdocs
+- pytest-flake8
+ docs =
+ sphinx
+ jaraco.packaging >= 3.2
+--
+2.18.1
+
diff --git a/nixpkgs/pkgs/development/python-modules/jaraco_logging/default.nix b/nixpkgs/pkgs/development/python-modules/jaraco_logging/default.nix
new file mode 100644
index 00000000000..ae05a76da1d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jaraco_logging/default.nix
@@ -0,0 +1,29 @@
+{ lib, buildPythonPackage, fetchPypi, setuptools_scm
+, tempora, six, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "jaraco.logging";
+ version = "2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1lb846j7qs1hgqwkyifv51nhl3f8jimbc4lk8yn9nkaynw0vyzcg";
+ };
+
+ patches = [ ./0001-Don-t-run-flake8-checks-during-the-build.patch ];
+
+ buildInputs = [ setuptools_scm ];
+ propagatedBuildInputs = [ tempora six ];
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ PYTHONPATH=".:$PYTHONPATH" pytest
+ '';
+
+ meta = with lib; {
+ description = "Support for Python logging facility";
+ homepage = https://github.com/jaraco/jaraco.logging;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jaraco_stream/default.nix b/nixpkgs/pkgs/development/python-modules/jaraco_stream/default.nix
new file mode 100644
index 00000000000..492d903f24d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jaraco_stream/default.nix
@@ -0,0 +1,13 @@
+{ buildPythonPackage, fetchPypi, setuptools_scm, six }:
+
+buildPythonPackage rec {
+ pname = "jaraco.stream";
+ version = "2.0";
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c2e9d507d8cf04a3ff916b57eaf46bacb8a9f8895b55ead853de9c47b8f5daa4";
+ };
+ doCheck = false;
+ buildInputs = [ setuptools_scm ];
+ propagatedBuildInputs = [ six ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jaraco_text/default.nix b/nixpkgs/pkgs/development/python-modules/jaraco_text/default.nix
new file mode 100644
index 00000000000..6087258a289
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jaraco_text/default.nix
@@ -0,0 +1,15 @@
+{ buildPythonPackage, fetchPypi, setuptools_scm
+, jaraco_functools
+}:
+
+buildPythonPackage rec {
+ pname = "jaraco.text";
+ version = "3.0";
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1l5hq2jvz9xj05aayc42f85v8wx8rpi16lxph8blw51wgnvymsyx";
+ };
+ doCheck = false;
+ buildInputs =[ setuptools_scm ];
+ propagatedBuildInputs = [ jaraco_functools ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jdatetime/default.nix b/nixpkgs/pkgs/development/python-modules/jdatetime/default.nix
new file mode 100644
index 00000000000..675dba0ea72
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jdatetime/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi, six }:
+
+buildPythonPackage rec {
+ pname = "jdatetime";
+ version = "3.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "42d0d08c0d36dcf1c4e1ddb1d10338d0dffb94105a02d74b6ea655ee8dd93cc2";
+ };
+
+ propagatedBuildInputs = [ six ];
+
+ meta = with stdenv.lib; {
+ description = "Jalali datetime binding for python";
+ homepage = https://pypi.python.org/pypi/jdatetime;
+ license = licenses.psfl;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jdcal/default.nix b/nixpkgs/pkgs/development/python-modules/jdcal/default.nix
new file mode 100644
index 00000000000..4fd89c83abc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jdcal/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "jdcal";
+ version = "1.4.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "472872e096eb8df219c23f2689fc336668bdb43d194094b5cc1707e1640acfc8";
+ };
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = {
+ description = "A module containing functions for converting between Julian dates and calendar dates";
+ homepage = "https://github.com/phn/jdcal";
+ license = lib.licenses.bsd2;
+ maintainers = with lib.maintainers; [ lihop ];
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/jedi/default.nix b/nixpkgs/pkgs/development/python-modules/jedi/default.nix
new file mode 100644
index 00000000000..dbd87f23254
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jedi/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytest, glibcLocales, tox, pytestcov, parso }:
+
+buildPythonPackage rec {
+ pname = "jedi";
+ version = "0.13.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2bb0603e3506f708e792c7f4ad8fc2a7a9d9c2d292a358fbbd58da531695595b";
+ };
+
+ postPatch = ''
+ substituteInPlace requirements.txt --replace "parso==0.1.0" "parso"
+ '';
+
+ checkInputs = [ pytest glibcLocales tox pytestcov ];
+
+ propagatedBuildInputs = [ parso ];
+
+ checkPhase = ''
+ LC_ALL="en_US.UTF-8" py.test test
+ '';
+
+ # tox required for tests: https://github.com/davidhalter/jedi/issues/808
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/davidhalter/jedi;
+ description = "An autocompletion tool for Python that can be used for text editors";
+ license = licenses.lgpl3Plus;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jeepney/default.nix b/nixpkgs/pkgs/development/python-modules/jeepney/default.nix
new file mode 100644
index 00000000000..8b1100cd3f4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jeepney/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, pytest
+, testpath
+, tornado
+}:
+
+buildPythonPackage rec {
+ pname = "jeepney";
+ version = "0.4";
+
+ disabled = pythonOlder "3.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0w1w1rawl9k4lx91w16d19kbmf1349mhy8ph8x3w0qp1blm432b0";
+ };
+
+ propagatedBuildInputs = [
+ tornado
+ ];
+
+ checkInputs = [
+ pytest
+ testpath
+ ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with lib; {
+ homepage = https://gitlab.com/takluyver/jeepney;
+ description = "Pure Python DBus interface";
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jellyfish/default.nix b/nixpkgs/pkgs/development/python-modules/jellyfish/default.nix
new file mode 100644
index 00000000000..fa8ce7b6298
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jellyfish/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, pytest
+, unicodecsv
+}:
+
+buildPythonPackage rec {
+ pname = "jellyfish";
+ version = "0.7.2";
+
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "11jja4wlzcr2pwvp3blj1jg6570zr0mpcm3nzhkbkdrbgq6wa2fb";
+ };
+
+ checkInputs = [ pytest unicodecsv ];
+
+ meta = {
+ homepage = https://github.com/sunlightlabs/jellyfish;
+ description = "Approximate and phonetic matching of strings";
+ maintainers = with lib.maintainers; [ koral ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jenkins-job-builder/default.nix b/nixpkgs/pkgs/development/python-modules/jenkins-job-builder/default.nix
new file mode 100644
index 00000000000..e6c4086c386
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jenkins-job-builder/default.nix
@@ -0,0 +1,41 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pbr
+, mock
+, python-jenkins
+, pyyaml
+, six
+, stevedore
+, isPy27
+, fasteners
+, jinja2
+}:
+
+buildPythonPackage rec {
+ pname = "jenkins-job-builder";
+ version = "3.0.1";
+ disabled = !isPy27;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "16x97pdr90x3xsc1xl66l7q77pgja5dzsk921by2h09k7dvxaqmh";
+ };
+
+ postPatch = ''
+ export HOME=$TMPDIR
+ '';
+
+ propagatedBuildInputs = [ pbr mock python-jenkins pyyaml six stevedore fasteners jinja2 ];
+
+ # Need to fix test deps
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Jenkins Job Builder is a system for configuring Jenkins jobs using simple YAML files stored in Git";
+ homepage = "https://docs.openstack.org/infra/system-config/jjb.html";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jenkinsapi/default.nix b/nixpkgs/pkgs/development/python-modules/jenkinsapi/default.nix
new file mode 100644
index 00000000000..edfeb0a5971
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jenkinsapi/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytz
+, requests
+, coverage
+, mock
+, nose
+, unittest2
+}:
+
+buildPythonPackage rec {
+ pname = "jenkinsapi";
+ version = "0.3.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "bf35b208fe05e65508f3b8bbb0f91d164b007632e27ebe5f54041174b681b696";
+ };
+
+ propagatedBuildInputs = [ pytz requests ];
+ buildInputs = [ coverage mock nose unittest2 ];
+
+ meta = with stdenv.lib; {
+ description = "A Python API for accessing resources on a Jenkins continuous-integration server";
+ homepage = https://github.com/salimfadhley/jenkinsapi;
+ maintainers = with maintainers; [ drets ];
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jieba/default.nix b/nixpkgs/pkgs/development/python-modules/jieba/default.nix
new file mode 100644
index 00000000000..df21c0f4186
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jieba/default.nix
@@ -0,0 +1,33 @@
+{ lib, buildPythonPackage, fetchFromGitHub, glibcLocales, python, isPy3k }:
+
+buildPythonPackage rec {
+ pname = "jieba";
+ version = "0.39";
+
+ # no tests in PyPI tarball
+ src = fetchFromGitHub {
+ owner = "fxsjy";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "0hbq0l1jbgcvm58qg4p37im4jl5a9igvq3wlhlk22pmbkbvqqgzs";
+ };
+
+ checkInputs = [ glibcLocales ];
+
+ # UnicodeEncodeError
+ doCheck = isPy3k;
+
+ # Citing https://github.com/fxsjy/jieba/issues/384: "testcases is in a mess"
+ # So just picking random ones that currently work
+ checkPhase = ''
+ export LC_ALL=en_US.UTF-8
+ ${python.interpreter} test/test.py
+ ${python.interpreter} test/test_tokenize.py
+ '';
+
+ meta = with lib; {
+ description = "Chinese Words Segementation Utilities";
+ homepage = https://github.com/fxsjy/jieba;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jinja2/default.nix b/nixpkgs/pkgs/development/python-modules/jinja2/default.nix
new file mode 100644
index 00000000000..c8b7f740363
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jinja2/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, pytest, markupsafe }:
+
+buildPythonPackage rec {
+ pname = "Jinja2";
+ version = "2.10.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "065c4f02ebe7f7cf559e49ee5a95fb800a9e4528727aec6f24402a5374c65013";
+ };
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ markupsafe ];
+
+ checkPhase = ''
+ pytest -v tests
+ '';
+
+ meta = with stdenv.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/nixpkgs/pkgs/development/python-modules/jinja2_pluralize/default.nix b/nixpkgs/pkgs/development/python-modules/jinja2_pluralize/default.nix
new file mode 100644
index 00000000000..5f80f4e4b20
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jinja2_pluralize/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, fetchPypi, jinja2, inflect }:
+
+buildPythonPackage rec {
+ pname = "jinja2_pluralize";
+ version = "0.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "071wnzzz20wjb0iw7grxgj1lb2f0kz50qyfbcq54rddr2x82sp6z";
+ };
+
+ propagatedBuildInputs = [
+ jinja2
+ inflect
+ ];
+
+ meta = with stdenv.lib; {
+ description = "Jinja2 pluralize filters";
+ homepage = https://github.com/audreyr/jinja2_pluralize;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ dzabraev ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jinja2_time/default.nix b/nixpkgs/pkgs/development/python-modules/jinja2_time/default.nix
new file mode 100644
index 00000000000..69fbffa92b2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jinja2_time/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, arrow
+, jinja2
+}:
+
+buildPythonPackage rec {
+ version = "0.2.0";
+ pname = "jinja2-time";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0h0dr7cfpjnjj8bgl2vk9063a53649pn37wnlkd8hxjy656slkni";
+ };
+
+ propagatedBuildInputs = [ arrow jinja2 ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/hackebrot/jinja2-time;
+ description = "Jinja2 Extension for Dates and Times";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jira/default.nix b/nixpkgs/pkgs/development/python-modules/jira/default.nix
new file mode 100644
index 00000000000..b9bc923e7e0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jira/default.nix
@@ -0,0 +1,35 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k
+, pytest, pytestrunner, pbr, glibcLocales , pytestcov
+, requests, requests_oauthlib, requests_toolbelt, defusedxml
+, ipython
+}:
+
+buildPythonPackage rec {
+ pname = "jira";
+ version = "2.0.0";
+
+ PBR_VERSION = version;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "e2a94adff98e45b29ded030adc76103eab34fa7d4d57303f211f572bedba0e93";
+ };
+
+ buildInputs = [ glibcLocales pytest pytestcov pytestrunner pbr ];
+ propagatedBuildInputs = [ requests requests_oauthlib requests_toolbelt defusedxml pbr ipython ];
+
+ # impure tests because of connectivity attempts to jira servers
+ doCheck = false;
+
+ patches = [ ./sphinx-fix.patch ];
+
+ LC_ALL = "en_US.utf8";
+
+ disabled = !isPy3k;
+
+ meta = with lib; {
+ description = "This library eases the use of the JIRA REST API from Python.";
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ globin ma27 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jira/sphinx-fix.patch b/nixpkgs/pkgs/development/python-modules/jira/sphinx-fix.patch
new file mode 100644
index 00000000000..ccc47ac4b9c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jira/sphinx-fix.patch
@@ -0,0 +1,11 @@
+diff --git a/setup.py b/setup.py
+index c49a24d..31aeec2 100644
+--- a/setup.py
++++ b/setup.py
+@@ -11,5 +11,5 @@ except ImportError:
+
+
+ setuptools.setup(
+- setup_requires=['pbr>=3.0.0', 'setuptools>=17.1', 'pytest-runner', 'sphinx>=1.6.5'],
++ setup_requires=['pbr>=3.0.0', 'setuptools>=17.1', 'pytest-runner'],
+ pbr=True)
diff --git a/nixpkgs/pkgs/development/python-modules/jmespath/default.nix b/nixpkgs/pkgs/development/python-modules/jmespath/default.nix
new file mode 100644
index 00000000000..cc0a78872b2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jmespath/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, ply
+, nose
+}:
+
+buildPythonPackage rec {
+ pname = "jmespath";
+ version = "0.9.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "bde2aef6f44302dfb30320115b17d030798de8c4110e28d5cf6cf91a7a31074c";
+ };
+
+ buildInputs = [ nose ];
+ propagatedBuildInputs = [ ply ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/boto/jmespath;
+ description = "JMESPath allows you to declaratively specify how to extract elements from a JSON document";
+ license = "BSD";
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/joblib/default.nix b/nixpkgs/pkgs/development/python-modules/joblib/default.nix
new file mode 100644
index 00000000000..c16c7687c8a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/joblib/default.nix
@@ -0,0 +1,54 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, fetchpatch
+, stdenv
+, sphinx
+, numpydoc
+, pytest
+, python-lz4
+}:
+
+
+buildPythonPackage rec {
+ pname = "joblib";
+ version = "0.13.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "315d6b19643ec4afd4c41c671f9f2d65ea9d787da093487a81ead7b0bac94524";
+ };
+
+ # python-lz4 compatibility
+ # https://github.com/joblib/joblib/pull/847
+ patches = [
+ (fetchpatch {
+ url = https://github.com/joblib/joblib/commit/d3235fd601f40c91e074d48a411d7380329fe155.patch;
+ sha256 = "1hg1vfbba7mfilrpvmd97s68v03vs4bhlp1c1dj9lizi51mj2q2h";
+ })
+ (fetchpatch {
+ url = https://github.com/joblib/joblib/commit/884c92cd2aa5c2c1975ab48786da75556d779833.patch;
+ sha256 = "11kvpkvi428dq13ayy7vfyrib8isvcrdw8cd5hxkp5axr7sl12ba";
+ })
+ (fetchpatch {
+ url = https://github.com/joblib/joblib/commit/f1e177d781cc0d64420ec964a0b17d8268cb42a0.patch;
+ sha256 = "1sq6wcw4bhaq8cqwcd43fdws3467qy342xx3pgv62hp2nn75a21d";
+ })
+ ];
+
+ checkInputs = [ sphinx numpydoc pytest ];
+ propagatedBuildInputs = [ python-lz4 ];
+
+ # test_disk_used is broken: https://github.com/joblib/joblib/issues/57
+ # test_dispatch_multiprocessing is broken only on Darwin.
+ checkPhase = ''
+ py.test -k 'not test_disk_used${lib.optionalString (stdenv.isDarwin) " and not test_dispatch_multiprocessing"}' joblib/test
+ '';
+
+ meta = {
+ description = "Lightweight pipelining: using Python functions as pipeline jobs";
+ homepage = https://pythonhosted.org/joblib/;
+ license = lib.licenses.bsd3;
+ maintainers = with lib.maintainers; [ costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/josepy/default.nix b/nixpkgs/pkgs/development/python-modules/josepy/default.nix
new file mode 100644
index 00000000000..d3b5ad79d6c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/josepy/default.nix
@@ -0,0 +1,35 @@
+{ lib, fetchPypi, buildPythonPackage
+# buildInputs
+, six
+, setuptools
+, pyopenssl
+, cryptography
+}:
+
+buildPythonPackage rec {
+ pname = "josepy";
+ version = "1.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1lq2s1649zinfii9ccl1wk6aqpaj35r8xwz44020ylp9ky1rmv4w";
+ };
+
+ propagatedBuildInputs = [
+ pyopenssl
+ cryptography
+ six
+ setuptools
+ ];
+
+ # too many unpackaged check requirements
+ doCheck = false;
+
+ meta = with lib; {
+ description = "JOSE protocol implementation in Python";
+ homepage = https://github.com/jezdez/josepy;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ ];
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/jpylyzer/default.nix b/nixpkgs/pkgs/development/python-modules/jpylyzer/default.nix
new file mode 100644
index 00000000000..0d6398a768a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jpylyzer/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, fetchFromGitHub
+, buildPythonPackage
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "jpylyzer";
+ version = "1.18.0";
+
+ src = fetchFromGitHub {
+ owner = "openpreserve";
+ repo = pname;
+ rev = version;
+ sha256 = "0vhrq15l6jd5fm6vj7mczjzjpl2ph1dk8jp89dw4vlccky8660ll";
+ };
+
+ propagatedBuildInputs = [ six ];
+
+ # there don't appear to be any in-tree tests as such, but the builder's automatic
+ # runner seems to be upset by the project layout
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "JP2 (JPEG 2000 Part 1) image validator and properties extractor";
+ homepage = "https://jpylyzer.openpreservation.org/";
+ license = licenses.lgpl3;
+ maintainers = with maintainers; [ ris ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jq/default.nix b/nixpkgs/pkgs/development/python-modules/jq/default.nix
new file mode 100644
index 00000000000..adcdd2b9d82
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jq/default.nix
@@ -0,0 +1,27 @@
+{ buildPythonPackage, fetchPypi, lib, cython, jq }:
+
+buildPythonPackage rec {
+ pname = "jq";
+ version = "0.1.6";
+
+ srcs = fetchPypi {
+ inherit pname version;
+ sha256 = "34bdf9f9e49e522e1790afc03f3584c6b57329215ea0567fb2157867d6d6f602";
+ };
+ patches = [ ./jq-py-setup.patch ];
+
+ nativeBuildInputs = [ cython ];
+
+ preBuild = ''
+ cython jq.pyx
+ '';
+
+ buildInputs = [ jq ];
+
+ meta = {
+ description = "Python bindings for jq, the flexible JSON processor";
+ homepage = "https://github.com/mwilliamson/jq.py";
+ license = lib.licenses.bsd2;
+ maintainers = with lib.maintainers; [ benley ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jq/jq-py-setup.patch b/nixpkgs/pkgs/development/python-modules/jq/jq-py-setup.patch
new file mode 100644
index 00000000000..53092b8a1f5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jq/jq-py-setup.patch
@@ -0,0 +1,130 @@
+From 3f369cf8b9f7134d0792f6b141d39b5342a8274f Mon Sep 17 00:00:00 2001
+From: Benjamin Staffin <benley@gmail.com>
+Date: Mon, 14 Jan 2019 17:27:06 -0500
+Subject: [PATCH] Vastly simplify setup.py for distro compatibility
+
+---
+ setup.py | 81 +-------------------------------------------------------
+ 1 file changed, 1 insertion(+), 80 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index 77933f2..2b71e25 100644
+--- a/setup.py
++++ b/setup.py
+@@ -1,10 +1,6 @@
+ #!/usr/bin/env python
+
+ import os
+-import platform
+-import subprocess
+-import tarfile
+-import shutil
+
+ try:
+ import sysconfig
+@@ -14,88 +10,15 @@ except ImportError:
+
+ from setuptools import setup
+ from distutils.extension import Extension
+-from distutils.command.build_ext import build_ext
+-
+-try:
+- from urllib import urlretrieve
+-except ImportError:
+- from urllib.request import urlretrieve
+-
+-def path_in_dir(relative_path):
+- return os.path.abspath(os.path.join(os.path.dirname(__file__), relative_path))
+
+ def read(fname):
+ return open(os.path.join(os.path.dirname(__file__), fname)).read()
+
+
+-jq_lib_tarball_path = path_in_dir("_jq-lib-1.5.tar.gz")
+-jq_lib_dir = path_in_dir("jq-jq-1.5")
+-
+-oniguruma_lib_tarball_path = path_in_dir("_onig-5.9.6.tar.gz")
+-oniguruma_lib_build_dir = path_in_dir("onig-5.9.6")
+-oniguruma_lib_install_dir = path_in_dir("onig-install-5.9.6")
+-
+-class jq_build_ext(build_ext):
+- def run(self):
+- self._build_oniguruma()
+- self._build_libjq()
+- build_ext.run(self)
+-
+- def _build_oniguruma(self):
+- self._build_lib(
+- source_url="https://github.com/kkos/oniguruma/releases/download/v5.9.6/onig-5.9.6.tar.gz",
+- tarball_path=oniguruma_lib_tarball_path,
+- lib_dir=oniguruma_lib_build_dir,
+- commands=[
+- ["./configure", "CFLAGS=-fPIC", "--prefix=" + oniguruma_lib_install_dir],
+- ["make"],
+- ["make", "install"],
+- ])
+-
+-
+- def _build_libjq(self):
+- self._build_lib(
+- source_url="https://github.com/stedolan/jq/archive/jq-1.5.tar.gz",
+- tarball_path=jq_lib_tarball_path,
+- lib_dir=jq_lib_dir,
+- commands=[
+- ["autoreconf", "-i"],
+- ["./configure", "CFLAGS=-fPIC", "--disable-maintainer-mode", "--with-oniguruma=" + oniguruma_lib_install_dir],
+- ["make"],
+- ])
+-
+- def _build_lib(self, source_url, tarball_path, lib_dir, commands):
+- self._download_tarball(source_url, tarball_path)
+-
+- macosx_deployment_target = sysconfig.get_config_var("MACOSX_DEPLOYMENT_TARGET")
+- if macosx_deployment_target:
+- os.environ['MACOSX_DEPLOYMENT_TARGET'] = macosx_deployment_target
+-
+- def run_command(args):
+- print("Executing: %s" % ' '.join(args))
+- subprocess.check_call(args, cwd=lib_dir)
+-
+- for command in commands:
+- run_command(command)
+-
+- def _download_tarball(self, source_url, tarball_path):
+- if os.path.exists(tarball_path):
+- os.unlink(tarball_path)
+- urlretrieve(source_url, tarball_path)
+-
+- if os.path.exists(jq_lib_dir):
+- shutil.rmtree(jq_lib_dir)
+- tarfile.open(tarball_path, "r:gz").extractall(path_in_dir("."))
+-
+-
+ jq_extension = Extension(
+ "jq",
+ sources=["jq.c"],
+- include_dirs=[jq_lib_dir],
+- extra_objects=[
+- os.path.join(jq_lib_dir, ".libs/libjq.a"),
+- os.path.join(oniguruma_lib_install_dir, "lib/libonig.a"),
+- ],
++ libraries=["jq"],
+ )
+
+ setup(
+@@ -107,7 +30,6 @@ setup(
+ url='https://github.com/mwilliamson/jq.py',
+ license='BSD 2-Clause',
+ ext_modules = [jq_extension],
+- cmdclass={"build_ext": jq_build_ext},
+ classifiers=[
+ 'Development Status :: 4 - Beta',
+ 'Intended Audience :: Developers',
+@@ -123,4 +45,3 @@ setup(
+ 'Programming Language :: Python :: 3.5',
+ ],
+ )
+-
+--
+2.19.2
+
diff --git a/nixpkgs/pkgs/development/python-modules/jsbeautifier/default.nix b/nixpkgs/pkgs/development/python-modules/jsbeautifier/default.nix
new file mode 100644
index 00000000000..10d0004f74a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jsbeautifier/default.nix
@@ -0,0 +1,21 @@
+{ lib, fetchPypi, buildPythonApplication, editorconfig, pytest, six }:
+
+buildPythonApplication rec {
+ pname = "jsbeautifier";
+ version = "1.10.0";
+
+ propagatedBuildInputs = [ six editorconfig ];
+ checkInputs = [ pytest ];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1e389572ade865173605471e98df4002f4b6e5235121c13f1e4497a3eac69108";
+ };
+
+ meta = with lib; {
+ homepage = "http://jsbeautifier.org";
+ description = "JavaScript unobfuscator and beautifier.";
+ license = licenses.mit;
+ maintainers = with maintainers; [ apeyroux ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jsmin/default.nix b/nixpkgs/pkgs/development/python-modules/jsmin/default.nix
new file mode 100644
index 00000000000..f11fccb086b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jsmin/default.nix
@@ -0,0 +1,17 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "jsmin";
+ version = "2.2.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0fsmqbjvpxvff0984x7c0y8xmf49ax9mncz48b9xjx8wrnr9kpxn";
+ };
+
+ meta = with lib; {
+ description = "JavaScript minifier";
+ homepage = "https://github.com/tikitu/jsmin/";
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jsondate/default.nix b/nixpkgs/pkgs/development/python-modules/jsondate/default.nix
new file mode 100644
index 00000000000..7888a6df23c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jsondate/default.nix
@@ -0,0 +1,22 @@
+{ lib, fetchFromGitHub, buildPythonPackage, six }:
+
+buildPythonPackage rec {
+ version = "0.1.3";
+ pname = "jsondate";
+
+ src = fetchFromGitHub {
+ owner = "ilya-kolpakov";
+ repo = "jsondate";
+ rev = "refs/tags/v${version}";
+ sha256 = "0nhvi48nc0bmad5ncyn6c9yc338krs3xf10bvv55xgz25c5gdgwy";
+ fetchSubmodules = true; # Fetching by tag does not work otherwise
+ };
+
+ propagatedBuildInputs = [ six ];
+
+ meta = {
+ homepage = "https://github.com/ilya-kolpakov/jsondate";
+ description = "JSON with datetime handling";
+ license = lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jsondiff/default.nix b/nixpkgs/pkgs/development/python-modules/jsondiff/default.nix
new file mode 100644
index 00000000000..6b254a7221a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jsondiff/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "jsondiff";
+ version = "1.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "00v3689175aqzdscrxpffm712ylp8jvcpqdg51ca22ni6721p51l";
+ };
+
+ postPatch = ''
+ sed -e "/'jsondiff=jsondiff.cli:main_deprecated',/d" -i setup.py
+ '';
+
+ # No tests
+ doCheck = false;
+
+ meta = {
+ description = "Diff JSON and JSON-like structures in Python";
+ homepage = https://github.com/ZoomerAnalytics/jsondiff;
+ license = lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jsonmerge/default.nix b/nixpkgs/pkgs/development/python-modules/jsonmerge/default.nix
new file mode 100644
index 00000000000..44944c03500
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jsonmerge/default.nix
@@ -0,0 +1,25 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, jsonschema
+}:
+
+buildPythonPackage rec {
+ pname = "jsonmerge";
+ version = "1.6.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "03l2j1lrcwcp7af4x8agxnkib0ndybfrbhn2gi7mnk6gbxfw1aw3";
+ };
+
+ propagatedBuildInputs = [ jsonschema ];
+
+ meta = with lib; {
+ description = "Merge a series of JSON documents";
+ homepage = https://github.com/avian2/jsonmerge;
+ changelog = "https://github.com/avian2/jsonmerge/blob/jsonmerge-${version}/ChangeLog";
+ license = licenses.mit;
+ maintainers = with maintainers; [ emily ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jsonpatch/default.nix b/nixpkgs/pkgs/development/python-modules/jsonpatch/default.nix
new file mode 100644
index 00000000000..52fc3bd5e04
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jsonpatch/default.nix
@@ -0,0 +1,25 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, jsonpointer
+}:
+
+buildPythonPackage rec {
+ pname = "jsonpatch";
+ version = "1.23";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "49f29cab70e9068db3b1dc6b656cbe2ee4edf7dfe9bf5a0055f17a4b6804a4b9";
+ };
+
+ # test files are missing
+ doCheck = false;
+ propagatedBuildInputs = [ jsonpointer ];
+
+ meta = {
+ description = "Library to apply JSON Patches according to RFC 6902";
+ homepage = "https://github.com/stefankoegl/python-json-patch";
+ license = lib.licenses.bsd2; # "Modified BSD license, says pypi"
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jsonpath_rw/default.nix b/nixpkgs/pkgs/development/python-modules/jsonpath_rw/default.nix
new file mode 100644
index 00000000000..a109404c06f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jsonpath_rw/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPyPy
+, ply
+, six
+, decorator
+}:
+
+buildPythonPackage rec {
+ pname = "jsonpath-rw";
+ version = "1.4.0";
+ disabled = isPyPy;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "05c471281c45ae113f6103d1268ec7a4831a2e96aa80de45edc89b11fac4fbec";
+ };
+
+ propagatedBuildInputs = [ ply six decorator ];
+
+ # ImportError: No module named tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/kennknowles/python-jsonpath-rw;
+ description = "A robust and significantly extended implementation of JSONPath for Python, with a clear AST for metaprogramming";
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jsonpickle/default.nix b/nixpkgs/pkgs/development/python-modules/jsonpickle/default.nix
new file mode 100644
index 00000000000..d21864d2682
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jsonpickle/default.nix
@@ -0,0 +1,26 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "jsonpickle";
+ version = "1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "16xj4r31pnd90slax5mmd5wps5s73wp9mn6sy9nhkl5ih7bj5sfk";
+ };
+
+ checkInputs = [ pytest ];
+
+ checkPhase = "pytest tests/jsonpickle_test.py";
+
+ meta = {
+ description = "Python library for serializing any arbitrary object graph into JSON";
+ homepage = http://jsonpickle.github.io/;
+ license = lib.licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jsonpointer/default.nix b/nixpkgs/pkgs/development/python-modules/jsonpointer/default.nix
new file mode 100644
index 00000000000..6971393b80c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jsonpointer/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "jsonpointer";
+ version = "2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0qjkjy1qlyc1nl3k95wd03ssxac0a717x8889ypgs1cfcj3bm4n1";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Resolve JSON Pointers in Python";
+ homepage = "https://github.com/stefankoegl/python-json-pointer";
+ license = stdenv.lib.licenses.bsd2; # "Modified BSD license, says pypi"
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jsonref/default.nix b/nixpkgs/pkgs/development/python-modules/jsonref/default.nix
new file mode 100644
index 00000000000..c174a011b5f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jsonref/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, pytest, mock }:
+
+buildPythonPackage rec {
+ pname = "jsonref";
+ version = "0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "15v69rg2lkcykb2spnq6vbbirv9sfq480fnwmfppw9gn3h95pi7k";
+ };
+
+ checkInputs = [ pytest mock ];
+
+ checkPhase = ''
+ py.test tests.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "An implementation of JSON Reference for Python";
+ homepage = "https://github.com/gazpachoking/jsonref";
+ license = licenses.mit;
+ maintainers = with maintainers; [ nand0p ];
+ platforms = platforms.all;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jsonrpc-async/default.nix b/nixpkgs/pkgs/development/python-modules/jsonrpc-async/default.nix
new file mode 100644
index 00000000000..d4bc1dd523d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jsonrpc-async/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, aiohttp, jsonrpc-base }:
+
+buildPythonPackage rec {
+ pname = "jsonrpc-async";
+ version = "1.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "488ab3b63a96c246f7ded14b3458eb13a36e3e16eb4319aa56806476517c7433";
+ };
+
+ propagatedBuildInputs = [ aiohttp jsonrpc-base ];
+
+ meta = with stdenv.lib; {
+ description = "A JSON-RPC client library for asyncio";
+ homepage = https://github.com/armills/jsonrpc-async;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ peterhoeg ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jsonrpc-base/default.nix b/nixpkgs/pkgs/development/python-modules/jsonrpc-base/default.nix
new file mode 100644
index 00000000000..35244e092da
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jsonrpc-base/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "jsonrpc-base";
+ version = "1.0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f9baac32aa51c3052d03b86ff30a9856900b8b4a4eb175f7bf2c8722520b8637";
+ };
+
+ propagatedBuildInputs = [ ];
+
+ meta = with stdenv.lib; {
+ description = "A JSON-RPC client library base interface";
+ homepage = https://github.com/armills/jsonrpc-base;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ peterhoeg ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jsonrpc-websocket/default.nix b/nixpkgs/pkgs/development/python-modules/jsonrpc-websocket/default.nix
new file mode 100644
index 00000000000..eff4f41979a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jsonrpc-websocket/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, aiohttp, jsonrpc-base }:
+
+buildPythonPackage rec {
+ pname = "jsonrpc-websocket";
+ version = "1.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "e74e490fefa3b8f33620fca98f7cd9a53fb765b9ed6f78360482a3f364230885";
+ };
+
+ propagatedBuildInputs = [ aiohttp jsonrpc-base ];
+
+ meta = with stdenv.lib; {
+ description = "A JSON-RPC websocket client library for asyncio";
+ homepage = https://github.com/armills/jsonrpc-websocket;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ peterhoeg ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jsonrpclib-pelix/default.nix b/nixpkgs/pkgs/development/python-modules/jsonrpclib-pelix/default.nix
new file mode 100644
index 00000000000..4697fb0c113
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jsonrpclib-pelix/default.nix
@@ -0,0 +1,23 @@
+{ buildPythonPackage
+, fetchPypi
+, lib
+}:
+
+buildPythonPackage rec {
+ pname = "jsonrpclib-pelix";
+ version = "0.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1pimyq95w99ik5av96j0n9i6n12mr9kk0y28jnrq0555d7hmii8r";
+ };
+
+ doCheck = false; # test_suite="tests" in setup.py but no tests in pypi.
+
+ meta = with lib; {
+ description = "JSON RPC client library - Pelix compatible fork";
+ homepage = https://pypi.python.org/pypi/jsonrpclib-pelix/;
+ license = lib.licenses.asl20;
+ maintainers = with maintainers; [ moredread ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jsonrpclib/default.nix b/nixpkgs/pkgs/development/python-modules/jsonrpclib/default.nix
new file mode 100644
index 00000000000..81dcdc07473
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jsonrpclib/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, cjson
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "jsonrpclib";
+ version = "0.1.7";
+
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "02vgirw2bcgvpcxhv5hf3yvvb4h5wzd1lpjx8na5psdmaffj6l3z";
+ };
+
+ propagatedBuildInputs = [ cjson ];
+
+ meta = with lib; {
+ description = "JSON RPC client library";
+ homepage = https://pypi.python.org/pypi/jsonrpclib/;
+ license = lib.licenses.asl20;
+ maintainers = [ lib.maintainers.joachifm ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jsonschema/default.nix b/nixpkgs/pkgs/development/python-modules/jsonschema/default.nix
new file mode 100644
index 00000000000..db6be9f9918
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jsonschema/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, buildPythonPackage, fetchPypi, python
+, nose, mock, vcversioner, functools32 }:
+
+buildPythonPackage rec {
+ pname = "jsonschema";
+ version = "2.6.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "00kf3zmpp9ya4sydffpifn0j0mzm342a2vzh82p6r0vh10cg7xbg";
+ };
+
+ checkInputs = [ nose mock vcversioner ];
+ propagatedBuildInputs = [ functools32 ];
+
+ postPatch = ''
+ substituteInPlace jsonschema/tests/test_jsonschema_test_suite.py \
+ --replace "python" "${python.pythonForBuild.interpreter}"
+ '';
+
+ checkPhase = ''
+ nosetests
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/Julian/jsonschema;
+ description = "An implementation of JSON Schema validation for Python";
+ license = licenses.mit;
+ maintainers = with maintainers; [ domenkozar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jsonwatch/default.nix b/nixpkgs/pkgs/development/python-modules/jsonwatch/default.nix
new file mode 100644
index 00000000000..1b859e21e90
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jsonwatch/default.nix
@@ -0,0 +1,35 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, six
+, isPyPy
+}:
+
+buildPythonPackage {
+ pname = "jsonwatch";
+ version = "0.2.0";
+ disabled = isPyPy; # doesn't find setuptools
+
+ src = fetchurl {
+ url = "https://github.com/dbohdan/jsonwatch/archive/v0.2.0.tar.gz";
+ sha256 = "04b616ef97b9d8c3887004995420e52b72a4e0480a92dbf60aa6c50317261e06";
+ };
+
+ propagatedBuildInputs = [ six ];
+
+ meta = with stdenv.lib; {
+ description = "Like watch -d but for JSON";
+ longDescription = ''
+ jsonwatch is a command line utility with which you can track
+ changes in JSON data delivered by a shell command or a web
+ (HTTP/HTTPS) API. jsonwatch requests data from the designated
+ source repeatedly at a set interval and displays the
+ differences when the data changes. It is similar in its
+ behavior to how watch(1) with the -d switch works for
+ plain-text data.
+ '';
+ homepage = "https://github.com/dbohdan/jsonwatch";
+ license = licenses.mit;
+ platforms = platforms.all;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jug/default.nix b/nixpkgs/pkgs/development/python-modules/jug/default.nix
new file mode 100644
index 00000000000..ad26b62931d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jug/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, buildPythonPackage, fetchPypi, fetchpatch
+, nose, numpy
+, bottle, pyyaml, redis, six
+, zlib }:
+
+buildPythonPackage rec {
+ pname = "Jug";
+ version = "1.6.9";
+ buildInputs = [ nose numpy ];
+ propagatedBuildInputs = [
+ bottle
+ pyyaml
+ redis
+ six
+
+ zlib
+ ];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0193hp8ap6caw57jdch3vw0hl5m8942lxhjdsfaxk4bfb239l5kz";
+ };
+
+ meta = with stdenv.lib; {
+ description = "A Task-Based Parallelization Framework";
+ license = licenses.mit;
+ homepage = https://jug.readthedocs.io/;
+ maintainers = with maintainers; [ luispedro ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/junos-eznc/default.nix b/nixpkgs/pkgs/development/python-modules/junos-eznc/default.nix
new file mode 100644
index 00000000000..6970efd0914
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/junos-eznc/default.nix
@@ -0,0 +1,42 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+, scp
+, pyserial
+, paramiko
+, netaddr
+, ncclient
+, lxml
+, jinja2
+, pyyaml
+, nose
+}:
+
+buildPythonPackage rec {
+ pname = "junos-eznc";
+ version = "2.2.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0133a10ba3d46ddf70f0ba6620aa3b92e5533f08c57edd000dbffd8fe60d586d";
+ };
+
+
+ checkInputs = [ nose ];
+
+ propagatedBuildInputs = [
+ scp six pyserial paramiko netaddr ncclient lxml jinja2 pyyaml
+ ];
+
+ checkPhase = ''
+ nosetests -v --with-coverage --cover-package=jnpr.junos --cover-inclusive -a unit
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = http://www.github.com/Juniper/py-junos-eznc;
+ description = "Junos 'EZ' automation for non-programmers";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ xnaveira ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jupyter-repo2docker/default.nix b/nixpkgs/pkgs/development/python-modules/jupyter-repo2docker/default.nix
new file mode 100644
index 00000000000..a400dd4d18c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jupyter-repo2docker/default.nix
@@ -0,0 +1,40 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pkgs-docker
+, docker
+, traitlets
+, python-json-logger
+, escapism
+, jinja2
+, ruamel_yaml
+, pyyaml
+, pytest
+, wheel
+, pytestcov
+, pythonAtLeast
+}:
+
+buildPythonPackage rec {
+ version = "0.7.0";
+ pname = "jupyter-repo2docker";
+ disabled = !(pythonAtLeast "3.4");
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "cf93ddf283de8c6b8f4ad983f8bf9b7b2a2c37812e387c245f8ba229d4f180c4";
+ };
+
+ checkInputs = [ pytest pyyaml wheel pytestcov ];
+ propagatedBuildInputs = [ pkgs-docker docker traitlets python-json-logger escapism jinja2 ruamel_yaml ];
+
+ # tests not packaged with pypi release
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://repo2docker.readthedocs.io/en/latest/;
+ description = "Repo2docker: Turn code repositories into Jupyter enabled Docker Images";
+ license = licenses.bsdOriginal;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jupyter/default.nix b/nixpkgs/pkgs/development/python-modules/jupyter/default.nix
new file mode 100644
index 00000000000..b6d2a5e5a90
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jupyter/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, notebook
+, qtconsole
+, jupyter_console
+, nbconvert
+, ipykernel
+, ipywidgets
+}:
+
+buildPythonPackage rec {
+ version = "1.0.0";
+ pname = "jupyter";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f";
+ };
+
+ propagatedBuildInputs = [ notebook qtconsole jupyter_console nbconvert ipykernel ipywidgets ];
+
+ # Meta-package, no tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Installs all the Jupyter components in one go";
+ homepage = "https://jupyter.org/";
+ license = licenses.bsd3;
+ platforms = platforms.all;
+ priority = 100; # This is a metapackage which is unimportant
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jupyter_client/default.nix b/nixpkgs/pkgs/development/python-modules/jupyter_client/default.nix
new file mode 100644
index 00000000000..01830514b46
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jupyter_client/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, traitlets
+, jupyter_core
+, pyzmq
+, dateutil
+, isPyPy
+, py
+, tornado
+}:
+
+buildPythonPackage rec {
+ pname = "jupyter_client";
+ version = "5.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "102qgc7isfxwq0zsj6m9apcyj2hk8c8c4fz7656lxlpmvxgazs4q";
+ };
+
+ propagatedBuildInputs = [
+ traitlets
+ jupyter_core
+ pyzmq
+ 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; [ fridh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jupyter_console/5.nix b/nixpkgs/pkgs/development/python-modules/jupyter_console/5.nix
new file mode 100644
index 00000000000..440f22b1332
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jupyter_console/5.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, nose
+, jupyter_client
+, ipython
+, ipykernel
+, prompt_toolkit
+, pygments
+}:
+
+buildPythonPackage rec {
+ pname = "jupyter_console";
+ version = "5.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "545dedd3aaaa355148093c5609f0229aeb121b4852995c2accfa64fe3e0e55cd";
+ };
+
+ checkInputs = [ nose ];
+ propagatedBuildInputs = [
+ jupyter_client
+ ipython
+ ipykernel
+ prompt_toolkit
+ pygments
+ ];
+
+ # ValueError: underlying buffer has been detached
+ doCheck = false;
+
+ meta = {
+ description = "Jupyter terminal console";
+ homepage = "https://jupyter.org/";
+ license = lib.licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jupyter_console/default.nix b/nixpkgs/pkgs/development/python-modules/jupyter_console/default.nix
new file mode 100644
index 00000000000..f8cf8b3076a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jupyter_console/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, nose
+, jupyter_client
+, ipython
+, ipykernel
+, prompt_toolkit
+, pygments
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+ pname = "jupyter_console";
+ version = "6.0.0";
+ disabled = pythonOlder "3.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "308ce876354924fb6c540b41d5d6d08acfc946984bf0c97777c1ddcb42e0b2f5";
+ };
+
+ checkInputs = [ nose ];
+ propagatedBuildInputs = [
+ jupyter_client
+ ipython
+ ipykernel
+ prompt_toolkit
+ pygments
+ ];
+
+ # ValueError: underlying buffer has been detached
+ doCheck = false;
+
+ meta = {
+ description = "Jupyter terminal console";
+ homepage = "https://jupyter.org/";
+ license = lib.licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jupyter_core/default.nix b/nixpkgs/pkgs/development/python-modules/jupyter_core/default.nix
new file mode 100644
index 00000000000..112e680ea9a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jupyter_core/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, ipython
+, traitlets
+, glibcLocales
+, mock
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "jupyter_core";
+ version = "4.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1xr4pbghwk5hayn5wwnhb7z95380r45p79gf5if5pi1akwg7qvic";
+ };
+
+ checkInputs = [ pytest mock glibcLocales ];
+ propagatedBuildInputs = [ ipython traitlets ];
+
+ patches = [ ./tests_respect_pythonpath.patch ];
+
+ checkPhase = ''
+ HOME=$TMPDIR LC_ALL=en_US.utf8 py.test
+ '';
+
+ meta = with lib; {
+ description = "Jupyter core package. A base package on which Jupyter projects rely";
+ homepage = https://jupyter.org/;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ fridh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jupyter_core/tests_respect_pythonpath.patch b/nixpkgs/pkgs/development/python-modules/jupyter_core/tests_respect_pythonpath.patch
new file mode 100644
index 00000000000..7e7e9ae93a0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jupyter_core/tests_respect_pythonpath.patch
@@ -0,0 +1,20 @@
+--- a/jupyter_core/tests/test_command.py
++++ b/jupyter_core/tests/test_command.py
+@@ -131,7 +131,7 @@ def test_not_on_path(tmpdir):
+ witness_src = '#!%s\n%s\n' % (sys.executable, 'print("WITNESS ME")')
+ write_executable(witness, witness_src)
+
+- env = {'PATH': ''}
++ env = {'PATH': '', 'PYTHONPATH': os.environ['PYTHONPATH']}
+ if 'SYSTEMROOT' in os.environ: # Windows http://bugs.python.org/issue20614
+ env[str('SYSTEMROOT')] = os.environ['SYSTEMROOT']
+ if sys.platform == 'win32':
+@@ -157,7 +157,7 @@ def test_path_priority(tmpdir):
+ witness_b_src = '#!%s\n%s\n' % (sys.executable, 'print("WITNESS B")')
+ write_executable(witness_b, witness_b_src)
+
+- env = {'PATH': str(b)}
++ env = {'PATH': str(b), 'PYTHONPATH': os.environ['PYTHONPATH']}
+ if 'SYSTEMROOT' in os.environ: # Windows http://bugs.python.org/issue20614
+ env[str('SYSTEMROOT')] = os.environ['SYSTEMROOT']
+ if sys.platform == 'win32':
diff --git a/nixpkgs/pkgs/development/python-modules/jupyterhub-ldapauthenticator/default.nix b/nixpkgs/pkgs/development/python-modules/jupyterhub-ldapauthenticator/default.nix
new file mode 100644
index 00000000000..8a228bebb0b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jupyterhub-ldapauthenticator/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, jupyterhub
+, ldap3
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "jupyterhub-ldapauthenticator";
+ version = "1.2.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5bba2ee246834130c9f86c13d39585b1af21563b814fa03aacb26b6696dd7e20";
+ };
+
+ # No tests implemented
+ doCheck = false;
+
+ propagatedBuildInputs = [ jupyterhub ldap3 ];
+
+ meta = with lib; {
+ description = "Simple LDAP Authenticator Plugin for JupyterHub";
+ homepage = https://github.com/jupyterhub/ldapauthenticator;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ ixxie ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jupyterhub/default.nix b/nixpkgs/pkgs/development/python-modules/jupyterhub/default.nix
new file mode 100644
index 00000000000..b291a2b0d3b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jupyterhub/default.nix
@@ -0,0 +1,123 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, fetchzip
+, alembic
+, ipython
+, jinja2
+, python-oauth2
+, prometheus_client
+, async_generator
+, pamela
+, sqlalchemy
+, tornado
+, traitlets
+, requests
+, notebook
+, pythonOlder
+, nodePackages
+}:
+
+let
+ # js/css assets that setup.py tries to fetch via `npm install` when building
+ # from source.
+ bootstrap =
+ fetchzip {
+ url = "https://registry.npmjs.org/bootstrap/-/bootstrap-3.3.7.tgz";
+ sha256 = "0r7s54bbf68ri1na9bbabyf12mcpb6zk5ja2q6z82aw1fa4xi3yd";
+ };
+ font-awesome =
+ fetchzip {
+ url = "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz";
+ sha256 = "1xnxbdlfdd60z5ix152m8r2kk9dkwlqwpypky1mm3dv64ajnzdbk";
+ };
+ jquery =
+ fetchzip {
+ url = "https://registry.npmjs.org/jquery/-/jquery-3.2.1.tgz";
+ sha256 = "1j6y18miwzafdj8kfpwbmbn9qvgnbnpc7l4arqrhqj33m04xrlgi";
+ };
+ moment =
+ fetchzip {
+ url = "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz";
+ sha256 = "12gb3p0rz5wyjwykv9g0pix7dd352lx1z7rzdjsf2brhwc4ffyip";
+ };
+ requirejs =
+ fetchzip {
+ url = "https://registry.npmjs.org/requirejs/-/requirejs-2.3.4.tgz";
+ sha256 = "0q6mkj0iv341kks06dya6lfs2kdw0n6vc7n4a7aa3ia530fk9vja";
+ };
+
+in
+
+buildPythonPackage rec {
+ pname = "jupyterhub";
+ version = "0.9.4";
+ disabled = pythonOlder "3.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "7848bbb299536641a59eb1977ec3c7c95d931bace4a2803d7e9b28b9256714da";
+ };
+
+ # Most of this only applies when building from source (e.g. js/css assets are
+ # pre-built and bundled in the official release tarball on pypi).
+ #
+ # Stuff that's always needed:
+ # * At runtime, we need configurable-http-proxy, so we substitute the store
+ # path.
+ #
+ # Other stuff that's only needed when building from source:
+ # * js/css assets are fetched from npm.
+ # * substitute store path for `lessc` commmand.
+ # * set up NODE_PATH so `lessc` can find `less-plugin-clean-css`.
+ # * don't run `npm install`.
+ preBuild = ''
+ export NODE_PATH=${nodePackages.less-plugin-clean-css}/lib/node_modules
+
+ substituteInPlace jupyterhub/proxy.py --replace \
+ "'configurable-http-proxy'" \
+ "'${nodePackages.configurable-http-proxy}/bin/configurable-http-proxy'"
+
+ substituteInPlace jupyterhub/tests/test_proxy.py --replace \
+ "'configurable-http-proxy'" \
+ "'${nodePackages.configurable-http-proxy}/bin/configurable-http-proxy'"
+
+ substituteInPlace setup.py --replace \
+ "'npm', 'run', 'lessc', '--'" \
+ "'${nodePackages.less}/bin/lessc'"
+
+ substituteInPlace setup.py --replace \
+ "'npm', 'install', '--progress=false'" \
+ "'true'"
+
+ declare -A deps
+ deps[bootstrap]=${bootstrap}
+ deps[font-awesome]=${font-awesome}
+ deps[jquery]=${jquery}
+ deps[moment]=${moment}
+ deps[requirejs]=${requirejs}
+
+ mkdir -p share/jupyter/hub/static/components
+ for dep in "''${!deps[@]}"; do
+ if [ ! -e share/jupyter/hub/static/components/$dep ]; then
+ cp -r ''${deps[$dep]} share/jupyter/hub/static/components/$dep
+ fi
+ done
+ '';
+
+ propagatedBuildInputs = [
+ alembic ipython jinja2 pamela python-oauth2 requests sqlalchemy tornado
+ traitlets prometheus_client async_generator notebook
+ ];
+
+ # Disable tests because they take an excessive amount of time to complete.
+ doCheck = false;
+
+
+ meta = with lib; {
+ description = "Serves multiple Jupyter notebook instances";
+ homepage = https://jupyter.org/;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ ixxie cstrahan ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jupyterlab/default.nix b/nixpkgs/pkgs/development/python-modules/jupyterlab/default.nix
new file mode 100644
index 00000000000..db8c5b774e4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jupyterlab/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, jupyterlab_server
+, notebook
+, pythonOlder
+, fetchpatch
+}:
+
+buildPythonPackage rec {
+ pname = "jupyterlab";
+ version = "0.35.6";
+ disabled = pythonOlder "3.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2ec845845d51221e39d0d753884a19342c953f39febf3148a68631bf57ecb774";
+ };
+
+ propagatedBuildInputs = [ jupyterlab_server notebook ];
+
+ makeWrapperArgs = [
+ "--set" "JUPYTERLAB_DIR" "$out/share/jupyter/lab"
+ ];
+
+ patches = [
+ (fetchpatch {
+ name = "bump-jupyterlab_server-version";
+ url = https://github.com/jupyterlab/jupyterlab/commit/3b8d451e6f9a4c609e60cde5fbb3cc84aae79951.patch;
+ sha256 = "08vv6rp1k5fbmvj4v9x1d9zb6ymm9pv8ml80j7p45r9fay34rndf";
+ })
+ ];
+
+ # Depends on npm
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Jupyter lab environment notebook server extension.";
+ license = with licenses; [ bsd3 ];
+ homepage = "https://jupyter.org/";
+ maintainers = with maintainers; [ zimbatm costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jupyterlab_launcher/default.nix b/nixpkgs/pkgs/development/python-modules/jupyterlab_launcher/default.nix
new file mode 100644
index 00000000000..15b53f523b5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jupyterlab_launcher/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildPythonPackage, fetchPypi, jsonschema, notebook, pythonOlder }:
+buildPythonPackage rec {
+ pname = "jupyterlab_launcher";
+ version = "0.13.1";
+ disabled = pythonOlder "3.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f880eada0b8b1f524d5951dc6fcae0d13b169897fc8a247d75fb5beadd69c5f0";
+ };
+
+ propagatedBuildInputs = [
+ jsonschema
+ notebook
+ ];
+
+ # depends on requests and a bunch of other libraries
+ doCheck = false;
+
+ meta = with lib; {
+ description = "This package is used to launch an application built using JupyterLab";
+ license = with licenses; [ bsd3 ];
+ homepage = "https://jupyter.org/";
+ maintainers = with maintainers; [ zimbatm ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jupyterlab_server/default.nix b/nixpkgs/pkgs/development/python-modules/jupyterlab_server/default.nix
new file mode 100644
index 00000000000..b74e31c39f3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jupyterlab_server/default.nix
@@ -0,0 +1,38 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, notebook
+, jsonschema
+, pythonOlder
+, requests
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "jupyterlab_server";
+ version = "0.3.0";
+ disabled = pythonOlder "3.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "13b728z5ls0g3p1gq5hvfqg7302clxna5grvgjfwbfzss0avlpjc";
+ };
+
+ checkInputs = [ requests pytest ];
+ propagatedBuildInputs = [ notebook jsonschema ];
+
+ # test_listing test fails
+ # this is a new package and not all tests pass
+ doCheck = false;
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with stdenv.lib; {
+ description = "JupyterLab Server";
+ homepage = https://jupyter.org;
+ license = licenses.bsdOriginal;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jupytext/default.nix b/nixpkgs/pkgs/development/python-modules/jupytext/default.nix
new file mode 100644
index 00000000000..ae6796825f1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jupytext/default.nix
@@ -0,0 +1,39 @@
+{ lib, buildPythonPackage, fetchPypi, isPy27
+, mock
+, nbformat
+, pytest
+, pyyaml
+}:
+
+buildPythonPackage rec {
+ pname = "jupytext";
+ version = "1.2.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "05vwxgjh7pzxgdzj0775562bfps8j7w3p7dcf1zfh169whqw9vg8";
+ };
+
+ propagatedBuildInputs = [
+ pyyaml
+ nbformat
+ ] ++ lib.optionals isPy27 [ mock ]; # why they put it in install_requires, who knows
+
+ checkInputs = [
+ pytest
+ ];
+
+ # requires test notebooks which are not shipped with the pypi release
+ # also, pypi no longer includes tests
+ doCheck = false;
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with lib; {
+ description = "Jupyter notebooks as Markdown documents, Julia, Python or R scripts";
+ homepage = https://github.com/mwouts/jupytext;
+ license = licenses.mit;
+ maintainers = with maintainers; [ timokau ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jwcrypto/default.nix b/nixpkgs/pkgs/development/python-modules/jwcrypto/default.nix
new file mode 100644
index 00000000000..9b219127069
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jwcrypto/default.nix
@@ -0,0 +1,26 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, cryptography
+}:
+
+buildPythonPackage rec {
+ pname = "jwcrypto";
+ version = "0.6.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a87ac0922d09d9a65011f76d99849f1fbad3d95439c7452cebf4ab0871c2b665";
+ };
+
+ propagatedBuildInputs = [
+ cryptography
+ ];
+
+ meta = with lib; {
+ description = "Implementation of JOSE Web standards";
+ homepage = https://github.com/latchset/jwcrypto;
+ license = licenses.lgpl3Plus;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/k5test/default.nix b/nixpkgs/pkgs/development/python-modules/k5test/default.nix
new file mode 100644
index 00000000000..d3937300a5e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/k5test/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, substituteAll
+, six
+, krb5Full
+, findutils
+, which
+}:
+
+buildPythonPackage rec {
+ pname = "k5test";
+ version = "0.9.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1lqp3jgfngyhaxjgj3n230hn90wsylwilh120yjf62h7b1s02mh8";
+ };
+
+ patches = [
+ (substituteAll {
+ src = ./fix-paths.patch;
+ inherit findutils krb5Full;
+ # krb5-config is in dev output
+ krb5FullDev = krb5Full.dev;
+ which = "${which}/bin/which";
+ })
+ ];
+
+ propagatedBuildInputs = [
+ six
+ ];
+
+ # No tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Library for setting up self-contained Kerberos 5 environment";
+ homepage = https://github.com/pythongssapi/k5test;
+ license = licenses.mit;
+ maintainers = [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/k5test/fix-paths.patch b/nixpkgs/pkgs/development/python-modules/k5test/fix-paths.patch
new file mode 100644
index 00000000000..f99835b5f2a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/k5test/fix-paths.patch
@@ -0,0 +1,90 @@
+diff --git a/k5test/_utils.py b/k5test/_utils.py
+index e289fac..e2f486a 100644
+--- a/k5test/_utils.py
++++ b/k5test/_utils.py
+@@ -65,12 +65,12 @@ def find_plugin_dir():
+
+ # if there was no LD_LIBRARY_PATH, or the above failed
+ if _PLUGIN_DIR is None:
+- lib_dir = os.path.join(get_output('krb5-config --prefix'), 'lib64')
++ lib_dir = os.path.join(get_output('@krb5FullDev@/bin/krb5-config --prefix'), 'lib64')
+ _PLUGIN_DIR = _decide_plugin_dir(_find_plugin_dirs_installed(lib_dir))
+
+ # /usr/lib64 seems only to be distinct on Fedora/RHEL/Centos family
+ if _PLUGIN_DIR is None:
+- lib_dir = os.path.join(get_output('krb5-config --prefix'), 'lib')
++ lib_dir = os.path.join(get_output('@krb5FullDev@/bin/krb5-config --prefix'), 'lib')
+ _PLUGIN_DIR = _decide_plugin_dir(_find_plugin_dirs_installed(lib_dir))
+
+ if _PLUGIN_DIR is not None:
+@@ -89,7 +89,7 @@ def _decide_plugin_dir(dirs):
+
+ for path in shortest_first:
+ # check to see if it actually contains .so files
+- if get_output('find %s -name "*.so"' % path):
++ if get_output('@findutils@/bin/find %s -name "*.so"' % path):
+ return path
+
+ return None
+@@ -97,7 +97,7 @@ def _decide_plugin_dir(dirs):
+
+ def _find_plugin_dirs_installed(search_path):
+ try:
+- options_raw = get_output('find %s/ -type d \( ! -executable -o ! -readable \) '
++ options_raw = get_output('@findutils@/bin/find %s/ -type d \( ! -executable -o ! -readable \) '
+ '-prune -o '
+ '-type d -path "*/krb5/plugins" -print' % search_path,
+ stderr=subprocess.STDOUT)
+@@ -111,7 +111,7 @@ def _find_plugin_dirs_installed(search_path):
+
+
+ def _find_plugin_dirs_src(search_path):
+- options_raw = get_output('find %s/../ -type d -name plugins' % search_path)
++ options_raw = get_output('@findutils@/bin/find %s/../ -type d -name plugins' % search_path)
+
+ if options_raw:
+ return options_raw.split('\n')
+diff --git a/k5test/realm.py b/k5test/realm.py
+index f57946b..ad78579 100644
+--- a/k5test/realm.py
++++ b/k5test/realm.py
+@@ -181,19 +181,13 @@ class K5Realm(object):
+ return path
+
+ def _init_paths(self, **paths):
+- self.kdb5_util = self._discover_path('kdb5_util',
+- '/usr/sbin/kdb5_util', paths)
+- self.krb5kdc = self._discover_path('krb5kdc',
+- '/usr/sbin/krb5kdc', paths)
+- self.kadmin_local = self._discover_path('kadmin_local',
+- '/usr/sbin/kadmin.local',
+- paths)
+- self.kprop = self._discover_path('kprop', '/usr/sbin/kprop', paths)
+- self.kadmind = self._discover_path('kadmind',
+- '/usr/sbin/kadmind', paths)
+-
+- self._kinit = self._discover_path('kinit', '/usr/bin/kinit', paths)
+- self._klist = self._discover_path('klist', '/usr/bin/klist', paths)
++ self.kdb5_util = '@krb5Full@/bin/kdb5_util'
++ self.krb5kdc = '@krb5Full@/bin/krb5kdc'
++ self.kadmin_local = '@krb5Full@/bin/kadmin.local'
++ self.kprop = '@krb5Full@/bin/kprop'
++ self.kadmind = '@krb5Full@/bin/kadmind'
++ self._kinit = '@krb5Full@/bin/kinit'
++ self._klist = '@krb5Full@/bin/klist'
+
+ def _create_conf(self, profile, filename):
+ with open(filename, 'w') as conf_file:
+diff --git a/k5test/unit.py b/k5test/unit.py
+index 4ee7f98..543d662 100644
+--- a/k5test/unit.py
++++ b/k5test/unit.py
+@@ -38,7 +38,7 @@ _KRB_VERSION = None
+ def krb_minversion_test(target_version, problem):
+ global _KRB_VERSION
+ if _KRB_VERSION is None:
+- _KRB_VERSION = _utils.get_output("krb5-config --version")
++ _KRB_VERSION = _utils.get_output("@krb5FullDev@/bin/krb5-config --version")
+ _KRB_VERSION = _KRB_VERSION.split(' ')[-1].split('.')
+
+ def make_ext_test(func):
diff --git a/nixpkgs/pkgs/development/python-modules/kaa-base/default.nix b/nixpkgs/pkgs/development/python-modules/kaa-base/default.nix
new file mode 100644
index 00000000000..f0994cebe11
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/kaa-base/default.nix
@@ -0,0 +1,51 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPyPy
+, isPy3k
+, python
+}:
+
+buildPythonPackage rec {
+ version = "0.99.2dev-384-2b73caca";
+ pname = "kaa-base";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0k3zzz84wzz9q1fl3vvqr2ys96z9pcf4viq9q6s2a63zaysmcfd2";
+ };
+
+ doCheck = false;
+
+ disabled = isPyPy || isPy3k;
+
+ # Same as in buildPythonPackage except that it does not pass --old-and-unmanageable
+ installPhase = ''
+ runHook preInstall
+
+ mkdir -p "$out/lib/${python.libPrefix}/site-packages"
+
+ export PYTHONPATH="$out/lib/${python.libPrefix}/site-packages:$PYTHONPATH"
+
+ ${python}/bin/${python.executable} setup.py install \
+ --install-lib=$out/lib/${python.libPrefix}/site-packages \
+ --prefix="$out"
+
+ eapth="$out/lib/${python.libPrefix}"/site-packages/easy-install.pth
+ if [ -e "$eapth" ]; then
+ mv "$eapth" $(dirname "$eapth")/${pname}-${version}.pth
+ fi
+
+ rm -f "$out/lib/${python.libPrefix}"/site-packages/site.py*
+
+ runHook postInstall
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Generic application framework, providing the foundation for other modules";
+ homepage = https://github.com/freevo/kaa-base;
+ license = licenses.lgpl21;
+ maintainers = with maintainers; [ ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/kaa-metadata/default.nix b/nixpkgs/pkgs/development/python-modules/kaa-metadata/default.nix
new file mode 100644
index 00000000000..d78adf7fd39
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/kaa-metadata/default.nix
@@ -0,0 +1,56 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, kaa-base
+, isPyPy
+, isPy3k
+, python
+, pkgs
+}:
+
+buildPythonPackage rec {
+ version = "0.7.8dev-r4569-20111003";
+ pname = "kaa-metadata";
+ disabled = isPyPy || isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0bkbzfgxvmby8lvzkqjp86anxvv3vjd9nksv2g4l7shsk1n7y27a";
+ };
+
+ doCheck = false;
+
+ buildInputs = [ pkgs.libdvdread ];
+
+ propagatedBuildInputs = [ kaa-base ];
+
+ # Same as in buildPythonPackage except that it does not pass --old-and-unmanageable
+ installPhase = ''
+ runHook preInstall
+
+ mkdir -p "$out/lib/${python.libPrefix}/site-packages"
+
+ export PYTHONPATH="$out/lib/${python.libPrefix}/site-packages:$PYTHONPATH"
+
+ ${python}/bin/${python.executable} setup.py install \
+ --install-lib=$out/lib/${python.libPrefix}/site-packages \
+ --prefix="$out"
+
+ eapth="$out/lib/${python.libPrefix}"/site-packages/easy-install.pth
+ if [ -e "$eapth" ]; then
+ mv "$eapth" $(dirname "$eapth")/${pname}-${version}.pth
+ fi
+
+ rm -f "$out/lib/${python.libPrefix}"/site-packages/site.py*
+
+ runHook postInstall
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Python library for parsing media metadata, which can extract metadata (e.g., such as id3 tags) from a wide range of media files";
+ homepage = https://github.com/freevo/kaa-metadata;
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/kafka-python/default.nix b/nixpkgs/pkgs/development/python-modules/kafka-python/default.nix
new file mode 100644
index 00000000000..891aa3f3394
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/kafka-python/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytest, six, mock }:
+
+buildPythonPackage rec {
+ version = "1.4.6";
+ pname = "kafka-python";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "08f83d8e0af2e64d25f94314d4bef6785b34e3b0df0effe9eebf76b98de66eeb";
+ };
+
+ checkInputs = [ pytest six mock ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ # Upstream uses tox but we don't on Nix. Running tests manually produces however
+ # from . import unittest
+ # E ImportError: cannot import name 'unittest'
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Pure Python client for Apache Kafka";
+ homepage = https://github.com/dpkp/kafka-python;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/kaitaistruct/default.nix b/nixpkgs/pkgs/development/python-modules/kaitaistruct/default.nix
new file mode 100644
index 00000000000..a1e795421b0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/kaitaistruct/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "kaitaistruct";
+ version = "0.8";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d1d17c7f6839b3d28fc22b21295f787974786c2201e8788975e72e2a1d109ff5";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Kaitai Struct: runtime library for Python";
+ homepage = "https://github.com/kaitai-io/kaitai_struct_python_runtime";
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/kajiki/default.nix b/nixpkgs/pkgs/development/python-modules/kajiki/default.nix
new file mode 100644
index 00000000000..ba71e03ce99
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/kajiki/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, Babel
+, pytz
+, nine
+, nose
+}:
+
+buildPythonPackage rec {
+ pname = "Kajiki";
+ version = "0.7.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "4e7aaf838f298958cf171f220e1d0dc4220338c76c97746a46d0cc389f90b10a";
+ };
+
+ propagatedBuildInputs = [ Babel pytz nine ];
+ checkInputs = [ nose ];
+
+ meta = with stdenv.lib; {
+ description = "Kajiki provides fast well-formed XML templates";
+ homepage = "https://github.com/nandoflorestan/kajiki";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/kaptan/default.nix b/nixpkgs/pkgs/development/python-modules/kaptan/default.nix
new file mode 100644
index 00000000000..5a6cf80a835
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/kaptan/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pyyaml
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "kaptan";
+ version = "0.5.12";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1abd1f56731422fce5af1acc28801677a51e56f5d3c3e8636db761ed143c3dd2";
+ };
+
+ postPatch = ''
+ sed -i "s/==.*//g" requirements/test.txt
+ '';
+
+ propagatedBuildInputs = [ pyyaml ];
+
+ checkInputs = [ pytest ];
+
+ meta = with stdenv.lib; {
+ description = "Configuration manager for python applications";
+ homepage = https://kaptan.readthedocs.io/;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/kazoo/default.nix b/nixpkgs/pkgs/development/python-modules/kazoo/default.nix
new file mode 100644
index 00000000000..7d384ba7cc3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/kazoo/default.nix
@@ -0,0 +1,44 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+, eventlet
+, gevent
+, nose
+, mock
+, coverage
+, pkgs
+}:
+
+buildPythonPackage rec {
+ pname = "kazoo";
+ version = "2.6.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "4a73c2c62a7163ca1c4aef82aa042d795560497cc81034f212ef13cc037cc783";
+ };
+
+ propagatedBuildInputs = [ six ];
+ buildInputs = [ eventlet gevent nose mock coverage pkgs.openjdk8 ];
+
+ # not really needed
+ preBuild = ''
+ sed -i '/flake8/d' setup.py
+ '';
+
+ preCheck = ''
+ sed -i 's/test_unicode_auth/noop/' kazoo/tests/test_client.py
+ '';
+
+ # tests take a long time to run and leave threads hanging
+ doCheck = false;
+ #ZOOKEEPER_PATH = "${pkgs.zookeeper}";
+
+ meta = with stdenv.lib; {
+ homepage = "https://kazoo.readthedocs.org";
+ description = "Higher Level Zookeeper Client";
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/kconfiglib/default.nix b/nixpkgs/pkgs/development/python-modules/kconfiglib/default.nix
new file mode 100644
index 00000000000..7d83d2c4338
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/kconfiglib/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "kconfiglib";
+ version = "10.36.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1qhy4vv1rpgx4r1la14symxv3cpz7klqakn1rqdagwyaqp667g9b";
+ };
+
+ # doesnt work out of the box but might be possible
+ doCheck = false;
+
+ meta = with lib; {
+ description = "A flexible Python 2/3 Kconfig implementation and library";
+ homepage = https://github.com/ulfalizer/Kconfiglib;
+ license = licenses.isc;
+ maintainers = with maintainers; [ teto ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/keepalive/default.nix b/nixpkgs/pkgs/development/python-modules/keepalive/default.nix
new file mode 100644
index 00000000000..c53bc25d198
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/keepalive/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "keepalive";
+ version = "0.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "3c6b96f9062a5a76022f0c9d41e9ef5552d80b1cadd4fccc1bf8f183ba1d1ec1";
+ };
+
+ # No tests included
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "An HTTP handler for `urllib2` that supports HTTP 1.1 and keepalive";
+ homepage = "https://github.com/wikier/keepalive";
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/keepkey/default.nix b/nixpkgs/pkgs/development/python-modules/keepkey/default.nix
new file mode 100644
index 00000000000..bbe72befb6d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/keepkey/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, buildPythonPackage, pytest
+, ecdsa , mnemonic, protobuf, hidapi, trezor }:
+
+buildPythonPackage rec {
+ pname = "keepkey";
+ version = "6.0.3";
+
+ src = fetchFromGitHub {
+ owner = "keepkey";
+ repo = "python-keepkey";
+ rev = "v${version}";
+ sha256 = "0jnkh1nin1lwnx32ak6sv8gzmpnkvcy6vm23wzm1ymzfndxk6rnm";
+ };
+
+ propagatedBuildInputs = [ protobuf hidapi trezor ];
+
+ buildInputs = [ ecdsa mnemonic ];
+
+ checkInputs = [ pytest ];
+
+ # tests requires hardware
+ doCheck = false;
+
+ # Remove impossible dependency constraint
+ postPatch = "sed -i -e 's|hidapi==|hidapi>=|' setup.py";
+
+ meta = with stdenv.lib; {
+ description = "KeepKey Python client";
+ homepage = https://github.com/keepkey/python-keepkey;
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ np ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/keras-applications/default.nix b/nixpkgs/pkgs/development/python-modules/keras-applications/default.nix
new file mode 100644
index 00000000000..c6fdd21d2eb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/keras-applications/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildPythonPackage, fetchPypi, numpy, h5py }:
+
+buildPythonPackage rec {
+ pname = "Keras_Applications";
+ version = "1.0.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1yk9brcvr96s1slpgj9vr6np7fk8limcrw9v2pjq72c6k0mpnq30";
+ };
+
+ # Cyclic dependency: keras-applications requires keras, which requires keras-applications
+ postPatch = ''
+ sed -i "s/keras>=[^']*//" setup.py
+ '';
+
+ # No tests in PyPI tarball
+ doCheck = false;
+
+ propagatedBuildInputs = [ numpy h5py ];
+
+ meta = with lib; {
+ description = "Reference implementations of popular deep learning models";
+ homepage = https://github.com/keras-team/keras-applications;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/keras-preprocessing/default.nix b/nixpkgs/pkgs/development/python-modules/keras-preprocessing/default.nix
new file mode 100644
index 00000000000..96c38f3cd89
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/keras-preprocessing/default.nix
@@ -0,0 +1,35 @@
+{ lib, buildPythonPackage, fetchPypi, numpy, six, scipy, pillow, pytest, Keras }:
+
+buildPythonPackage rec {
+ pname = "Keras_Preprocessing";
+ version = "1.0.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5e3700117981c2db762e512ed6586638124fac5842170701628088a11aeb51ac";
+ };
+
+ propagatedBuildInputs = [
+ # required
+ numpy six
+ # optional
+ scipy pillow
+ ];
+
+ checkInputs = [
+ pytest Keras
+ ];
+
+ checkPhase = ''
+ py.test tests/
+ '';
+
+ # Cyclic dependency: keras-preprocessing's tests require Keras, which requires keras-preprocessing
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Easy data preprocessing and data augmentation for deep learning models";
+ homepage = https://github.com/keras-team/keras-preprocessing;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/keras/default.nix b/nixpkgs/pkgs/development/python-modules/keras/default.nix
new file mode 100644
index 00000000000..dde820876d8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/keras/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, pytest, pytestcov, pytestpep8, pytest_xdist
+, six, numpy, scipy, pyyaml, h5py
+, keras-applications, keras-preprocessing
+}:
+
+buildPythonPackage rec {
+ pname = "Keras";
+ version = "2.2.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "90b610a3dbbf6d257b20a079eba3fdf2eed2158f64066a7c6f7227023fd60bc9";
+ };
+
+ checkInputs = [
+ pytest
+ pytestcov
+ pytestpep8
+ pytest_xdist
+ ];
+
+ propagatedBuildInputs = [
+ six pyyaml numpy scipy h5py
+ keras-applications keras-preprocessing
+ ];
+
+ # Couldn't get tests working
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Deep Learning library for Theano and TensorFlow";
+ homepage = https://keras.io;
+ license = licenses.mit;
+ maintainers = with maintainers; [ NikolaMandic ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/kerberos/default.nix b/nixpkgs/pkgs/development/python-modules/kerberos/default.nix
new file mode 100644
index 00000000000..3d581d763a5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/kerberos/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, kerberos
+}:
+
+buildPythonPackage rec {
+ pname = "kerberos";
+ version = "1.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "19663qxmma0i8bfbjc2iwy5hgq0g4pfb75r023v5dps68zfvffgh";
+ };
+
+ nativeBuildInputs = [ kerberos ];
+
+ # No tests in archive
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Kerberos high-level interface";
+ homepage = https://pypi.python.org/pypi/kerberos;
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/keyring/default.nix b/nixpkgs/pkgs/development/python-modules/keyring/default.nix
new file mode 100644
index 00000000000..cf1eeb5392c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/keyring/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, dbus-python, setuptools_scm, entrypoints, secretstorage
+, pytest, pytest-flake8 }:
+
+buildPythonPackage rec {
+ pname = "keyring";
+ version = "19.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "13frfmws03jdyz9wxb4ylkvk80qiyb6a3h3sn7wx3ry97bn5li3a";
+ };
+
+ nativeBuildInputs = [ setuptools_scm ];
+
+ checkInputs = [ pytest pytest-flake8 ];
+
+ propagatedBuildInputs = [ dbus-python entrypoints ] ++ stdenv.lib.optional stdenv.isLinux secretstorage;
+
+ # checks try to access a darwin path on linux
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Store and access your passwords safely";
+ homepage = "https://pypi.python.org/pypi/keyring";
+ license = licenses.psfl;
+ maintainers = with maintainers; [ lovek323 ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/keyrings-alt/default.nix b/nixpkgs/pkgs/development/python-modules/keyrings-alt/default.nix
new file mode 100644
index 00000000000..3fe986fc335
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/keyrings-alt/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, buildPythonPackage, fetchPypi, pythonOlder, six
+, pytest, backports_unittest-mock, keyring, setuptools_scm
+}:
+
+buildPythonPackage rec {
+ pname = "keyrings.alt";
+ version = "3.1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0lgp2d3hrpvbb2rfz18vrv5lrck72k3l2f2cpkbks2kigrfbgiqb";
+ };
+
+ postPatch = ''
+ substituteInPlace pytest.ini \
+ --replace "--flake8" ""
+ '';
+
+ nativeBuildInputs = [ setuptools_scm ];
+ propagatedBuildInputs = [ six ];
+
+ checkInputs = [ pytest keyring ] ++ stdenv.lib.optional (pythonOlder "3.3") backports_unittest-mock;
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with stdenv.lib; {
+ license = licenses.mit;
+ description = "Alternate keyring implementations";
+ homepage = https://github.com/jaraco/keyrings.alt;
+ maintainers = with maintainers; [ nyarly ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/keyutils/default.nix b/nixpkgs/pkgs/development/python-modules/keyutils/default.nix
new file mode 100644
index 00000000000..a109659ebdd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/keyutils/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildPythonPackage, fetchFromGitHub, keyutils, pytestrunner, pytest }:
+
+buildPythonPackage rec {
+ pname = "keyutils";
+ version = "0.6";
+
+ # github version comes bundled with tests
+ src = fetchFromGitHub {
+ owner = "sassoftware";
+ repo = "python-keyutils";
+ rev = version;
+ sha256 = "0pfqfr5xqgsqkxzrmj8xl2glyl4nbq0irs0k6ik7iy3gd3mxf5g1";
+ };
+
+ buildInputs = [ keyutils ];
+ checkInputs = [ pytest pytestrunner ];
+
+ meta = {
+ description = "A set of python bindings for keyutils";
+ homepage = https://github.com/sassoftware/python-keyutils;
+ license = lib.licenses.asl20;
+ maintainers = with lib.maintainers; [ primeos ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/kitchen/default.nix b/nixpkgs/pkgs/development/python-modules/kitchen/default.nix
new file mode 100644
index 00000000000..494a4f8fc06
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/kitchen/default.nix
@@ -0,0 +1,16 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+buildPythonPackage rec {
+ pname = "kitchen";
+ version = "1.2.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0g5hq2icnng9vy4www5hnr3r5srisfwp0wxw1sv5c5dxy61gak5q";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Kitchen contains a cornucopia of useful code";
+ license = licenses.lgpl2;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/kiwisolver/default.nix b/nixpkgs/pkgs/development/python-modules/kiwisolver/default.nix
new file mode 100644
index 00000000000..c0c3b09e7b4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/kiwisolver/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, stdenv
+, libcxx
+}:
+
+buildPythonPackage rec {
+ pname = "kiwisolver";
+ version = "1.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ce3be5d520b4d2c3e5eeb4cd2ef62b9b9ab8ac6b6fedbaa0e39cdb6f50644278";
+ };
+
+ NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.isDarwin "-I${libcxx}/include/c++/v1";
+
+ # Does not include tests
+ doCheck = false;
+
+ meta = {
+ description = "A fast implementation of the Cassowary constraint solver";
+ homepage = https://github.com/nucleic/kiwi;
+ license = lib.licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/klaus/default.nix b/nixpkgs/pkgs/development/python-modules/klaus/default.nix
new file mode 100644
index 00000000000..687798735d3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/klaus/default.nix
@@ -0,0 +1,40 @@
+{ lib, python, fetchFromGitHub }:
+
+python.pkgs.buildPythonPackage rec {
+ pname = "klaus";
+ version = "1.4.0";
+
+ src = fetchFromGitHub {
+ owner = "jonashaag";
+ repo = pname;
+ rev = version;
+ sha256 = "041l5dpymi9h0yyr55r6m0skp0m2ags3miay0s1bgfcp469k0l20";
+ };
+
+ prePatch = ''
+ substituteInPlace runtests.sh \
+ --replace "mkdir -p \$builddir" "mkdir -p \$builddir && pwd"
+ '';
+
+ propagatedBuildInputs = with python.pkgs; [
+ six flask pygments dulwich httpauth humanize
+ ];
+
+ checkInputs = with python.pkgs; [
+ pytest requests python-ctags3
+ ] ++ lib.optional (!isPy3k) mock;
+
+ checkPhase = ''
+ ./runtests.sh
+ '';
+
+ # Needs to set up some git repos
+ doCheck = false;
+
+ meta = with lib; {
+ description = "The first Git web viewer that Just Works";
+ homepage = https://github.com/jonashaag/klaus;
+ license = licenses.isc;
+ maintainers = with maintainers; [ pSub ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/klein/default.nix b/nixpkgs/pkgs/development/python-modules/klein/default.nix
new file mode 100644
index 00000000000..9b96ae038ca
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/klein/default.nix
@@ -0,0 +1,35 @@
+{ lib, buildPythonPackage, fetchPypi, fetchpatch
+, six, twisted, werkzeug, incremental
+, mock }:
+
+buildPythonPackage rec {
+ pname = "klein";
+ version = "17.10.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "30aaf0d78a987d5dbfe0968a07367ad0c73e02823cc8eef4c54f80ab848370d0";
+ };
+
+ patches = [
+ (fetchpatch {
+ name = "tests-expect-werkzeug-308.patch";
+ url = https://github.com/twisted/klein/commit/e2a5835b83e37a2bc5faefbfe1890c529b18b9c6.patch;
+ sha256 = "03j0bj3l3hnf7f96rb27i4bzy1iih79ll5bcah7gybdi1wpznh8w";
+ })
+ ];
+
+ propagatedBuildInputs = [ six twisted werkzeug incremental ];
+
+ checkInputs = [ mock twisted ];
+
+ checkPhase = ''
+ trial klein
+ '';
+
+ meta = with lib; {
+ description = "Klein Web Micro-Framework";
+ homepage = "https://github.com/twisted/klein";
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/kmapper/default.nix b/nixpkgs/pkgs/development/python-modules/kmapper/default.nix
new file mode 100644
index 00000000000..3904473f1a3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/kmapper/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, scikitlearn
+, numpy
+, scipy
+, jinja2
+, pytest
+, networkx
+, matplotlib
+, python-igraph
+, plotly
+, ipywidgets
+}:
+
+buildPythonPackage rec {
+ pname = "kmapper";
+ version = "1.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0879294680c5d01a928847b818a3c4e07eded3f602f96e510858e68e74fa3783";
+ };
+
+ propagatedBuildInputs = [
+ scikitlearn
+ numpy
+ scipy
+ jinja2
+ ];
+
+ checkInputs = [
+ pytest
+ networkx
+ matplotlib
+ python-igraph
+ plotly
+ ipywidgets
+ ];
+
+ checkPhase = ''
+ pytest test --ignore test/test_drawing.py
+ '';
+
+ meta = with lib; {
+ description = "Python implementation of Mapper algorithm for Topological Data Analysis";
+ homepage = http://kepler-mapper.scikit-tda.org;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/knack/default.nix b/nixpkgs/pkgs/development/python-modules/knack/default.nix
new file mode 100644
index 00000000000..c3025311e10
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/knack/default.nix
@@ -0,0 +1,54 @@
+{ stdenv
+, lib
+, buildPythonPackage
+, fetchPypi
+, argcomplete
+, colorama
+, jmespath
+, knack
+, pygments
+, pyyaml
+, six
+, tabulate
+, mock
+, vcrpy
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "knack";
+ version = "0.6.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "08g15kwfppdr7vhbsg6qclpqbf11d9k3hwgrmvhh5fa1jrk95b5i";
+ };
+
+ propagatedBuildInputs = [
+ argcomplete
+ colorama
+ jmespath
+ pygments
+ pyyaml
+ six
+ tabulate
+ ];
+
+ checkInputs = [
+ mock
+ vcrpy
+ pytest
+ ];
+
+ checkPhase = ''
+ HOME=$TMPDIR pytest .
+ '';
+
+ meta = with lib; {
+ homepage = https://github.com/microsoft/knack;
+ description = "A Command-Line Interface framework";
+ platforms = platforms.all;
+ license = licenses.mit;
+ maintainers = with maintainers; [ jonringer ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/koji/default.nix b/nixpkgs/pkgs/development/python-modules/koji/default.nix
new file mode 100644
index 00000000000..033ab821135
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/koji/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, buildPythonPackage, pycurl, six, rpm, dateutil }:
+
+buildPythonPackage rec {
+ pname = "koji";
+ version = "1.13.0";
+ format = "other";
+
+ src = fetchurl {
+ url = "https://releases.pagure.org/koji/${pname}-${version}.tar.bz2";
+ sha256 = "18b18rcbdqqw33g7h20hf5bpbci2ixdi05yda1fvpv30c1kkzd8w";
+ };
+
+ propagatedBuildInputs = [ pycurl six rpm 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 = {
+ maintainers = [ ];
+ platforms = stdenv.lib.platforms.unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/kombu/default.nix b/nixpkgs/pkgs/development/python-modules/kombu/default.nix
new file mode 100644
index 00000000000..fef8345a980
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/kombu/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildPythonPackage, fetchPypi, pytest, case, pytz, Pyro4, amqp }:
+
+buildPythonPackage rec {
+ pname = "kombu";
+ version = "4.6.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "eb365ea795cd7e629ba2f1f398e0c3ba354b91ef4de225ffdf6ab45fdfc7d581";
+ };
+
+ postPatch = ''
+ substituteInPlace requirements/test.txt --replace "pytest-sugar" ""
+ '';
+
+ checkInputs = [ pytest case pytz Pyro4 ];
+
+ propagatedBuildInputs = [ amqp ];
+
+ meta = with lib; {
+ description = "Messaging library for Python";
+ homepage = https://github.com/celery/kombu;
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/konfig/default.nix b/nixpkgs/pkgs/development/python-modules/konfig/default.nix
new file mode 100644
index 00000000000..e7062bad5ee
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/konfig/default.nix
@@ -0,0 +1,48 @@
+{ lib, buildPythonPackage, fetchFromGitHub, isPy3k, writeText, configparser, six, pytest, glibcLocales }:
+
+buildPythonPackage rec {
+ pname = "konfig";
+ version = "1.1";
+
+ # konfig unconditionaly depend on configparser, even if it is part of
+ # the standard library in python 3.2 or above.
+ disabled = isPy3k;
+
+ # PyPI tarball is missing utf8.ini, required for tests
+ src = fetchFromGitHub {
+ owner = "mozilla-services";
+ repo = pname;
+ rev = version;
+ sha256 = "1h780fbrv275dcik4cs3rincza805z6q726b48r4a0qmh5d8160c";
+ };
+
+ propagatedBuildInputs = [ configparser six ];
+
+ patches = [ (writeText "konfig.patch" ''
+ diff --git a/setup.py b/setup.py
+ index 96fd858..bb4db06 100644
+ --- a/setup.py
+ +++ b/setup.py
+ @@ -20,7 +20,7 @@ setup(name='konfig',
+ author_email="tarek@mozilla.com",
+ include_package_data=True,
+ install_requires = [
+ - 'configparser', 'argparse', 'six'
+ + 'configparser', 'six'
+ ],
+ zip_safe=False,
+ classifiers=classifiers,
+ '') ];
+
+ checkInputs = [ pytest glibcLocales ];
+
+ checkPhase = ''
+ LC_ALL=en_US.utf8 pytest -v konfig/tests
+ '';
+
+ meta = with lib; {
+ description = "Yet Another Config Parser";
+ homepage = "https://github.com/mozilla-services/konfig";
+ license = licenses.mpl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/kubernetes/default.nix b/nixpkgs/pkgs/development/python-modules/kubernetes/default.nix
new file mode 100644
index 00000000000..8ba7b109264
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/kubernetes/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, buildPythonPackage, fetchPypi, pythonAtLeast,
+ ipaddress, websocket_client, urllib3, pyyaml, requests_oauthlib, python-dateutil, google_auth, adal,
+ isort, pytest, coverage, mock, sphinx, autopep8, pep8, codecov, recommonmark, nose }:
+
+buildPythonPackage rec {
+ pname = "kubernetes";
+ version = "10.0.0";
+
+ prePatch = ''
+ sed -e 's/sphinx>=1.2.1,!=1.3b1,<1.4 # BSD/sphinx/' -i test-requirements.txt
+
+ # This is used to randomize tests, which is not reproducible. Drop it.
+ sed -e '/randomize/d' -i test-requirements.txt
+ ''
+ # This is a python2 and python3.2 only requiremet since it is a backport of a python-3.3 api.
+ + (if (pythonAtLeast "3.3") then ''
+ sed -e '/ipaddress/d' -i requirements.txt
+ '' else "");
+
+ checkPhase = ''
+ py.test
+ '';
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0v3hiy427ca010k8brys3aafgb5013i32yva1nmiibk3xcf7f90f";
+ };
+
+ checkInputs = [ isort coverage pytest mock sphinx autopep8 pep8 codecov recommonmark nose ];
+ propagatedBuildInputs = [ ipaddress websocket_client urllib3 pyyaml requests_oauthlib python-dateutil google_auth adal ];
+
+ meta = with stdenv.lib; {
+ description = "Kubernetes python client";
+ homepage = https://github.com/kubernetes-client/python;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ lsix ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/lammps-cython/default.nix b/nixpkgs/pkgs/development/python-modules/lammps-cython/default.nix
new file mode 100644
index 00000000000..501e4adc21d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/lammps-cython/default.nix
@@ -0,0 +1,53 @@
+{ lib
+, fetchurl
+, buildPythonPackage
+, lammps-mpi
+, mpi
+, mpi4py
+, numpy
+, cython
+, pymatgen
+, ase
+, pytestrunner
+, pytest
+, pytestcov
+, isPy3k
+, openssh
+}:
+
+buildPythonPackage rec {
+ pname = "lammps-cython";
+ version = "0.5.7";
+ disabled = (!isPy3k);
+
+ src = fetchurl {
+ url = "https://gitlab.com/costrouc/${pname}/-/archive/v${version}/${pname}-v${version}.tar.gz";
+ sha256 = "1wj9scmjdl00af13b5ihfccrjpikrdgkzd88ialam1nkxvxi42bl";
+ };
+
+ buildInputs = [ cython pytestrunner ];
+ checkInputs = [ pytest pytestcov openssh ];
+ propagatedBuildInputs = [ mpi4py pymatgen ase numpy ];
+
+ preBuild = ''
+ echo "Creating lammps.cfg file..."
+ cat << EOF > lammps.cfg
+ [lammps]
+ lammps_include_dir = ${lammps-mpi}/include
+ lammps_library_dir = ${lammps-mpi}/lib
+ lammps_library = lammps_mpi
+
+ [mpi]
+ mpi_include_dir = ${mpi}/include
+ mpi_library_dir = ${mpi}/lib
+ mpi_library = mpi
+ EOF
+ '';
+
+ meta = {
+ description = "Pythonic Wrapper to LAMMPS using cython";
+ homepage = https://gitlab.com/costrouc/lammps-cython;
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/langcodes/default.nix b/nixpkgs/pkgs/development/python-modules/langcodes/default.nix
new file mode 100644
index 00000000000..d73940e56a6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/langcodes/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, marisa-trie
+, pythonOlder
+, fetchPypi
+, nose
+}:
+
+buildPythonPackage rec {
+ pname = "langcodes";
+ version = "1.4.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1axdiva2qglsjmnx2ak7i6hm0yhp6kbc4lcsgn8ckwy0nq1z3kr2";
+ };
+
+ propagatedBuildInputs = [ marisa-trie ];
+
+ disabled = pythonOlder "3.3";
+
+ checkInputs = [ nose ];
+
+ checkPhase = ''
+ nosetests
+ '';
+
+ meta = with lib; {
+ description = "A toolkit for working with and comparing the standardized codes for languages, such as ‘en’ for English or ‘es’ for Spanish";
+ homepage = https://github.com/LuminosoInsight/langcodes;
+ license = licenses.mit;
+ maintainers = with maintainers; [ ixxie ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/langdetect/default.nix b/nixpkgs/pkgs/development/python-modules/langdetect/default.nix
new file mode 100644
index 00000000000..dcd90dd89bd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/langdetect/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPythonPackage, fetchPypi, six }:
+
+buildPythonPackage rec {
+ pname = "langdetect";
+ version = "1.0.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "0c5zm6c7xzsigbb9c7v4r33fcpz911zscfwvh3dq1qxdy3ap18ci";
+ };
+
+ propagatedBuildInputs = [ six ];
+
+ meta = with lib; {
+ description = "Python port of Google's language-detection library";
+ homepage = https://github.com/Mimino666/langdetect;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ earvstedt ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/larch/default.nix b/nixpkgs/pkgs/development/python-modules/larch/default.nix
new file mode 100644
index 00000000000..9942168607e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/larch/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, 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 stdenv.lib; {
+ homepage = http://liw.fi/larch/;
+ description = "Python B-tree library";
+ license = licenses.gpl3;
+ maintainers = [];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/lark-parser/default.nix b/nixpkgs/pkgs/development/python-modules/lark-parser/default.nix
new file mode 100644
index 00000000000..590ca988023
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/lark-parser/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+}:
+
+buildPythonPackage rec {
+ pname = "lark-parser";
+ version = "0.7.3";
+
+ src = fetchFromGitHub {
+ owner = "lark-parser";
+ repo = "lark";
+ rev = version;
+ sha256 = "1d8dbn8wwqqvvjyhai813sqkx6366d8jkjq0gkyh51692pflmwrp";
+ };
+
+ # tests of Nearley support require js2py
+ preCheck = ''
+ rm -r tests/test_nearley
+ '';
+
+ meta = {
+ description = "A modern parsing library for Python, implementing Earley & LALR(1) and an easy interface";
+ homepage = https://github.com/lark-parser/lark;
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ fridh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/lasagne/default.nix b/nixpkgs/pkgs/development/python-modules/lasagne/default.nix
new file mode 100644
index 00000000000..febd38acc63
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/lasagne/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, 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 stdenv.lib; {
+ description = "Lightweight library to build and train neural networks in Theano";
+ homepage = "https://github.com/Lasagne/Lasagne";
+ maintainers = with maintainers; [ NikolaMandic ];
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/latexcodec/default.nix b/nixpkgs/pkgs/development/python-modules/latexcodec/default.nix
new file mode 100644
index 00000000000..2873c8f9622
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/latexcodec/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi, six }:
+
+buildPythonPackage rec {
+ pname = "latexcodec";
+ version = "1.0.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0wnp3yqcgx0rpy8dz51vh75lbp2qif67da19zi7m3ca98n887hgb";
+ };
+
+ propagatedBuildInputs = [ six ];
+
+ meta = {
+ homepage = "https://github.com/mcmtroffaes/latexcodec";
+ description = "Lexer and codec to work with LaTeX code in Python";
+ license = stdenv.lib.licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/lazr/config.nix b/nixpkgs/pkgs/development/python-modules/lazr/config.nix
new file mode 100644
index 00000000000..759c9689bc9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/lazr/config.nix
@@ -0,0 +1,13 @@
+{ buildPythonPackage, fetchPypi, lazr_delegates }:
+
+buildPythonPackage rec {
+ pname = "lazr.config";
+ version = "2.2.1";
+
+ propagatedBuildInputs = [ lazr_delegates ];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1s7pyvlq06qjrkaw9r6nc290lb095n25ybzgavvy51ygpxkgqxwn";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/lazr/delegates.nix b/nixpkgs/pkgs/development/python-modules/lazr/delegates.nix
new file mode 100644
index 00000000000..40e2e47d517
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/lazr/delegates.nix
@@ -0,0 +1,15 @@
+{ buildPythonPackage, fetchPypi, nose, zope_interface }:
+
+buildPythonPackage rec {
+ pname = "lazr.delegates";
+ version = "2.0.4";
+
+ propagatedBuildInputs = [ nose zope_interface ];
+
+ doCheck = false; # cannot import name 'ClassType' from 'types'
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1rdnl85j9ayp8n85l0ciip621j9dcziz5qnmv2m7krgwgcn31vfx";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/lazy-object-proxy/default.nix b/nixpkgs/pkgs/development/python-modules/lazy-object-proxy/default.nix
new file mode 100644
index 00000000000..430e43a129b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/lazy-object-proxy/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "lazy-object-proxy";
+ version = "1.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "eb91be369f945f10d3a49f5f9be8b3d0b93a4c2be8f8a5b83b0571b8123e0a7a";
+ };
+
+ buildInputs = [ pytest ];
+ checkPhase = ''
+ py.test tests
+ '';
+
+ # Broken tests. Seem to be fixed upstream according to Travis.
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A fast and thorough lazy object proxy";
+ homepage = https://github.com/ionelmc/python-lazy-object-proxy;
+ license = with licenses; [ bsd2 ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ldap/default.nix b/nixpkgs/pkgs/development/python-modules/ldap/default.nix
new file mode 100644
index 00000000000..8f5cd7e7e88
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ldap/default.nix
@@ -0,0 +1,37 @@
+{ buildPythonPackage, fetchPypi
+, pyasn1, pyasn1-modules, pytest
+, openldap, cyrus_sasl, stdenv }:
+
+buildPythonPackage rec {
+ pname = "python-ldap";
+ version = "3.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "13nvrhp85yr0jyxixcjj012iw8l9wynxxlykm9j3alss6waln73x";
+ };
+
+ propagatedBuildInputs = [ pyasn1 pyasn1-modules ];
+
+ buildInputs = [ openldap cyrus_sasl ];
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ # Needed by tests to setup a mockup ldap server.
+ export BIN="${openldap}/bin"
+ export SBIN="${openldap}/bin"
+ export SLAPD="${openldap}/libexec/slapd"
+ export SCHEMA="${openldap}/etc/schema"
+
+ py.test
+ '';
+
+ doCheck = !stdenv.isDarwin;
+
+ meta = with stdenv.lib; {
+ description = "Python modules for implementing LDAP clients";
+ homepage = https://www.python-ldap.org/;
+ license = licenses.psfl;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ldap3/default.nix b/nixpkgs/pkgs/development/python-modules/ldap3/default.nix
new file mode 100644
index 00000000000..13fe196e471
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ldap3/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchPypi, buildPythonPackage, pyasn1 }:
+
+buildPythonPackage rec {
+ pname = "ldap3";
+ version = "2.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1f0v82584b7gkzrnnnl4fc88w4i73x7cxqbzy0r0bknm33yfwcq5";
+ };
+
+ propagatedBuildInputs = [ pyasn1 ];
+
+ doCheck = false; # requires network
+
+ meta = with stdenv.lib; {
+ homepage = https://pypi.python.org/pypi/ldap3;
+ description = "A strictly RFC 4510 conforming LDAP V3 pure Python client library";
+ license = licenses.lgpl3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ldappool/default.nix b/nixpkgs/pkgs/development/python-modules/ldappool/default.nix
new file mode 100644
index 00000000000..e22ab22d5a7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ldappool/default.nix
@@ -0,0 +1,30 @@
+{ lib, buildPythonPackage, fetchPypi
+, pbr, ldap, prettytable, fixtures, testresources, testtools }:
+
+buildPythonPackage rec {
+ pname = "ldappool";
+ version = "2.4.1";
+
+ src = fetchPypi {
+ pname = "ldappool";
+ inherit version;
+ sha256 = "23edef09cba4b1ae764f1ddada828d8e39d72cf32a457e599f5a70064310ea00";
+ };
+
+ postPatch = ''
+ # Tests run without most of the dependencies
+ echo "" > test-requirements.txt
+ '';
+
+ nativeBuildInputs = [ pbr ];
+
+ propagatedBuildInputs = [ ldap prettytable ];
+
+ checkInputs = [ fixtures testresources testtools ];
+
+ meta = with lib; {
+ description = "A simple connector pool for python-ldap";
+ homepage = https://git.openstack.org/cgit/openstack/ldappool;
+ license = licenses.mpl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ldaptor/default.nix b/nixpkgs/pkgs/development/python-modules/ldaptor/default.nix
new file mode 100644
index 00000000000..4eab700ff14
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ldaptor/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, twisted
+, pycrypto
+, pyopenssl
+, pyparsing
+, zope_interface
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "ldaptor";
+ version = "16.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6b9ebe5814e9e7091703c4e3bfeae73b46508b4678e2ff403cddaedf8213815d";
+ };
+
+ propagatedBuildInputs = [
+ twisted pycrypto pyopenssl pyparsing zope_interface
+ ];
+
+ disabled = isPy3k;
+
+ # TypeError: None is neither bytes nor unicode
+ doCheck = false;
+
+ meta = {
+ description = "A Pure-Python Twisted library for LDAP";
+ homepage = https://github.com/twisted/ldaptor;
+ license = lib.licenses.mit;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/le/default.nix b/nixpkgs/pkgs/development/python-modules/le/default.nix
new file mode 100644
index 00000000000..cb0a8bc6348
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/le/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, isPy3k
+, simplejson
+, psutil
+}:
+
+buildPythonPackage rec {
+ pname = "le";
+ version = "1.4.29";
+
+ src = fetchurl {
+ url = "https://github.com/logentries/le/archive/v${version}.tar.gz";
+ sha256 = "d29738937cb6e714b6ec2ae74b66b1983482ffd54b4faa40767af18509521d4c";
+ };
+
+ disabled = isPy3k;
+
+ doCheck = false;
+
+ propagatedBuildInputs = [ simplejson psutil ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/rapid7/le;
+ description = "Logentries agent";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/leather/default.nix b/nixpkgs/pkgs/development/python-modules/leather/default.nix
new file mode 100644
index 00000000000..98cc3a42074
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/leather/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchPypi, buildPythonPackage, six }:
+
+buildPythonPackage rec {
+ pname = "leather";
+ version = "0.3.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "125r372q7bwcajfdysp7w5zh5wccwxf1mkhqawl8h518nl1icv87";
+ };
+
+ propagatedBuildInputs = [ six ];
+
+ meta = with stdenv.lib; {
+ homepage = http://leather.rtfd.io;
+ description = "Python charting library";
+ license = licenses.mit;
+ platforms = platforms.all;
+ maintainers = with maintainers; [ vrthra ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ledgerblue/default.nix b/nixpkgs/pkgs/development/python-modules/ledgerblue/default.nix
new file mode 100644
index 00000000000..3e2c1f1356a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ledgerblue/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchPypi, buildPythonPackage, hidapi
+, pycrypto, pillow, protobuf, future, ecpy, python-u2flib-host, pycryptodomex
+, websocket_client
+}:
+
+buildPythonPackage rec {
+ pname = "ledgerblue";
+ version = "0.1.28";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1jfh4gb3f16ga1ircwiyg7dldldmhn0a5slbpqsqr2g6mlqihpmd";
+ };
+
+ propagatedBuildInputs = [
+ hidapi pycrypto pillow protobuf future ecpy python-u2flib-host pycryptodomex websocket_client
+ ];
+
+ # No tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Python library to communicate with Ledger Blue/Nano S";
+ homepage = https://github.com/LedgerHQ/blue-loader-python;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ np ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/lektor/default.nix b/nixpkgs/pkgs/development/python-modules/lektor/default.nix
new file mode 100644
index 00000000000..0fe3a11ae26
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/lektor/default.nix
@@ -0,0 +1,58 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, click
+, watchdog
+, exifread
+, requests
+, mistune
+, inifile
+, Babel
+, jinja2
+, flask
+, pyopenssl
+, ndg-httpsclient
+, pytest
+, pytestcov
+, pytest-mock
+, pytest-pylint
+, pytest-click
+, isPy27
+, functools32
+}:
+
+buildPythonPackage rec {
+ pname = "lektor";
+ version = "3.1.3";
+
+ src = fetchFromGitHub {
+ owner = "lektor";
+ repo = "lektor";
+ rev = version;
+ sha256 = "16qw68rz5q77w84lwyhjpfd3bm4mfrhcjrnxwwnz3vmi610h68hx";
+ };
+
+ propagatedBuildInputs = [
+ click watchdog exifread requests mistune inifile Babel jinja2
+ flask pyopenssl ndg-httpsclient
+ ] ++ lib.optionals isPy27 [ functools32 ];
+
+ checkInputs = [
+ pytest pytestcov pytest-mock pytest-pylint pytest-click
+ ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ # many errors -- tests assume inside of git repo, linting errors 13/317 fail
+ doCheck = false;
+
+ meta = with lib; {
+ description = "A static content management system";
+ homepage = "https://www.getlektor.com/";
+ license = licenses.bsd0;
+ maintainers = with maintainers; [ vozz costrouc ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/leveldb/default.nix b/nixpkgs/pkgs/development/python-modules/leveldb/default.nix
new file mode 100644
index 00000000000..4d6336ce757
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/leveldb/default.nix
@@ -0,0 +1,19 @@
+{ lib, fetchPypi, buildPythonPackage }:
+
+buildPythonPackage rec {
+ pname = "leveldb";
+ version = "0.194";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0f6d1y65k6miimic82n8zsx50z9k982mvzp90crwcv1knjrphcww";
+ };
+
+ meta = with lib; {
+ homepage = "https://code.google.com/archive/p/py-leveldb/";
+ description = "Thread-safe Python bindings for LevelDB";
+ platforms = [ "x86_64-linux" "i686-linux" ];
+ license = licenses.bsd3;
+ maintainers = [ maintainers.aanderse ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/libagent/default.nix b/nixpkgs/pkgs/development/python-modules/libagent/default.nix
new file mode 100644
index 00000000000..e55887a49f5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/libagent/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchPypi, buildPythonPackage, ed25519, ecdsa , semver, mnemonic,
+ unidecode, mock, pytest , backports-shutil-which, ConfigArgParse,
+ python-daemon, pymsgbox }:
+
+buildPythonPackage rec {
+ pname = "libagent";
+ version = "0.13.1";
+
+ src = fetchPypi{
+ inherit pname version;
+ sha256 = "b9afa0851f668612702fcd648cee47af4dc7cfe4f86d4c4a84b1a6b4a4960b41";
+ };
+
+ propagatedBuildInputs = [ unidecode backports-shutil-which ConfigArgParse
+ python-daemon pymsgbox ecdsa ed25519 mnemonic semver ];
+
+ checkInputs = [ mock pytest ];
+
+ checkPhase = ''
+ py.test libagent/tests
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Using hardware wallets as SSH/GPG agent";
+ homepage = https://github.com/romanz/trezor-agent;
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ np ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/libais/default.nix b/nixpkgs/pkgs/development/python-modules/libais/default.nix
new file mode 100644
index 00000000000..2fbe7207f4f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/libais/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchPypi,
+ six, pytest, pytestrunner, pytestcov, coverage
+}:
+buildPythonPackage rec {
+ pname = "libais";
+ version = "0.17";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0pyka09h8nb0vlzh14npq4nxmzg1046lr3klgn97dsf5k0iflapb";
+ };
+
+ # data files missing
+ doCheck = false;
+
+ checkInputs = [ pytest pytestrunner pytestcov coverage ];
+ propagatedBuildInputs = [ six ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/schwehr/libais;
+ description = "Library for decoding maritime Automatic Identification System messages";
+ license = licenses.asl20;
+ platforms = platforms.unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/libarchive-c/default.nix b/nixpkgs/pkgs/development/python-modules/libarchive-c/default.nix
new file mode 100644
index 00000000000..52cca5d36fb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/libarchive-c/default.nix
@@ -0,0 +1,38 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, glibcLocales
+, libarchive
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "libarchive-c";
+ version = "2.8";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "06d44d5b9520bdac93048c72b7ed66d11a6626da16d2086f9aad079674d8e061";
+ };
+
+ checkInputs = [ mock pytest glibcLocales ];
+
+ LC_ALL="en_US.UTF-8";
+
+ postPatch = ''
+ substituteInPlace libarchive/ffi.py --replace \
+ "find_library('archive')" "'${libarchive.lib}/lib/libarchive${stdenv.hostPlatform.extensions.sharedLibrary}'"
+ '';
+
+ checkPhase = ''
+ py.test tests -k 'not test_check_archiveentry_with_unicode_entries_and_name_zip and not test_check_archiveentry_using_python_testtar'
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/Changaco/python-libarchive-c;
+ description = "Python interface to libarchive";
+ license = licenses.cc0;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/libarcus/default.nix b/nixpkgs/pkgs/development/python-modules/libarcus/default.nix
new file mode 100644
index 00000000000..54d9193c25b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/libarcus/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, buildPythonPackage, python, fetchFromGitHub
+, cmake, sip, protobuf, pythonOlder }:
+
+buildPythonPackage rec {
+ pname = "libarcus";
+ version = "4.2.0";
+ format = "other";
+
+ src = fetchFromGitHub {
+ owner = "Ultimaker";
+ repo = "libArcus";
+ rev = version;
+ sha256 = "0pk0g80ay9aghzmb8gfpqh0chl9rk47jh0ziicpianhklxx2jb44";
+ };
+
+ disabled = pythonOlder "3.4.0";
+
+ propagatedBuildInputs = [ sip ];
+ nativeBuildInputs = [ cmake ];
+ buildInputs = [ protobuf ];
+
+ postPatch = ''
+ sed -i 's#''${Python3_SITEARCH}#${placeholder "out"}/${python.sitePackages}#' cmake/SIPMacros.cmake
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Communication library between internal components for Ultimaker software";
+ homepage = https://github.com/Ultimaker/libArcus;
+ license = licenses.lgpl3Plus;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ abbradar gebner ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/libasyncns/default.nix b/nixpkgs/pkgs/development/python-modules/libasyncns/default.nix
new file mode 100644
index 00000000000..aed76728d7e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/libasyncns/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchurl
+, libasyncns, pkgconfig }:
+
+buildPythonPackage rec {
+ pname = "libasyncns-python";
+ version = "0.7.1";
+
+ src = fetchurl {
+ url = "https://launchpad.net/libasyncns-python/trunk/${version}/+download/libasyncns-python-${version}.tar.bz2";
+ sha256 = "1q4l71b2h9q756x4pjynp6kczr2d8c1jvbdp982hf7xzv7w5gxqg";
+ };
+
+ patches = [ ./libasyncns-fix-res-consts.patch ];
+
+ buildInputs = [ libasyncns ];
+ nativeBuildInputs = [ pkgconfig ];
+ doCheck = false; # requires network access
+
+ meta = with stdenv.lib; {
+ description = "libasyncns-python is a python binding for the asynchronous name service query library";
+ license = licenses.lgpl21;
+ maintainers = [ maintainers.mic92 ];
+ homepage = https://launchpad.net/libasyncns-python;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/libasyncns/libasyncns-fix-res-consts.patch b/nixpkgs/pkgs/development/python-modules/libasyncns/libasyncns-fix-res-consts.patch
new file mode 100644
index 00000000000..62877300a27
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/libasyncns/libasyncns-fix-res-consts.patch
@@ -0,0 +1,14 @@
+diff --git a/libasyncns.c b/libasyncns.c
+index 99a73de..85709b0 100644
+--- a/libasyncns.c
++++ b/libasyncns.c
+@@ -134,9 +134,8 @@ PyMODINIT_FUNC initlibasyncns(void)
+ ADDNSCONST(ns_t_mailb);
+ ADDNSCONST(ns_t_maila);
+ ADDNSCONST(ns_t_any);
+- ADDNSCONST(ns_t_zxfr);
+ ADDNSCONST(ns_t_max);
+
+ ADDNSCONST(ns_c_invalid);
+ ADDNSCONST(ns_c_in);
+ ADDNSCONST(ns_c_2);
diff --git a/nixpkgs/pkgs/development/python-modules/libcloud/default.nix b/nixpkgs/pkgs/development/python-modules/libcloud/default.nix
new file mode 100644
index 00000000000..734a51c7be6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/libcloud/default.nix
@@ -0,0 +1,35 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, mock
+, pycrypto
+, requests
+, pytestrunner
+, pytest
+, requests-mock
+}:
+
+buildPythonPackage rec {
+ pname = "apache-libcloud";
+ version = "2.6.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1spjkw5nxhbawblj5db8izff05kjw425iyydipajb7qh73vm25r0";
+ };
+
+ checkInputs = [ mock pytest pytestrunner requests-mock ];
+ propagatedBuildInputs = [ pycrypto requests ];
+
+ preConfigure = "cp libcloud/test/secrets.py-dist libcloud/test/secrets.py";
+
+ # requires a certificates file
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A unified interface to many cloud providers";
+ homepage = http://incubator.apache.org/libcloud/;
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/libgpuarray/default.nix b/nixpkgs/pkgs/development/python-modules/libgpuarray/default.nix
new file mode 100644
index 00000000000..40a4f6f7429
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/libgpuarray/default.nix
@@ -0,0 +1,83 @@
+{ stdenv
+, lib
+, buildPythonPackage
+, fetchFromGitHub
+, cmake
+, cython
+, numpy
+, six
+, nose
+, Mako
+, cudaSupport ? false, cudatoolkit , nvidia_x11
+, openclSupport ? true, ocl-icd, clblas
+}:
+
+assert cudaSupport -> nvidia_x11 != null
+ && cudatoolkit != null;
+
+buildPythonPackage rec {
+ pname = "libgpuarray";
+ version = "0.7.5";
+
+ src = fetchFromGitHub {
+ owner = "Theano";
+ repo = "libgpuarray";
+ rev = "v${version}";
+ sha256 = "0zkdwjq3k6ciiyf8y5w663fbsnmzhgy27yvpxfhkpxazw9vg3l5v";
+ };
+
+ # requires a GPU
+ doCheck = false;
+
+ configurePhase = "cmakeConfigurePhase";
+
+ libraryPath = lib.makeLibraryPath (
+ []
+ ++ lib.optionals cudaSupport [ cudatoolkit.lib cudatoolkit.out nvidia_x11 ]
+ ++ lib.optionals openclSupport ([ clblas ] ++ lib.optional (!stdenv.isDarwin) ocl-icd)
+ );
+
+ preBuild = ''
+ make -j$NIX_BUILD_CORES
+ make install
+
+ export NIX_CFLAGS_COMPILE="-L $out/lib -I $out/include $NIX_CFLAGS_COMPILE"
+
+ cd ..
+ '';
+
+ postFixup = ''
+ rm $out/lib/libgpuarray-static.a
+ '' + stdenv.lib.optionalString (!stdenv.isDarwin) ''
+ function fixRunPath {
+ p=$(patchelf --print-rpath $1)
+ patchelf --set-rpath "$p:$libraryPath" $1
+ }
+
+ fixRunPath $out/lib/libgpuarray.so
+ '';
+
+ propagatedBuildInputs = [
+ numpy
+ six
+ Mako
+ ];
+
+ enableParallelBuilding = true;
+
+ nativeBuildInputs = [ cmake ];
+
+ buildInputs = [
+ cython
+ nose
+ ];
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/Theano/libgpuarray";
+ description = "Library to manipulate tensors on GPU.";
+ license = licenses.free;
+ maintainers = with maintainers; [ artuuge ];
+ platforms = platforms.unix;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/libkeepass/default.nix b/nixpkgs/pkgs/development/python-modules/libkeepass/default.nix
new file mode 100644
index 00000000000..09177f16bc6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/libkeepass/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchPypi, buildPythonPackage
+, lxml, pycryptodome, colorama }:
+
+buildPythonPackage rec {
+ pname = "libkeepass";
+ version = "0.3.1.post1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0pwg7n9xqcjia1qmz6g48h5s31slh3mxmcqag73gq4zhl4xb6bai";
+ };
+
+ propagatedBuildInputs = [ lxml pycryptodome colorama ];
+
+ # No tests on PyPI
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/libkeepass/libkeepass;
+ description = "A library to access KeePass 1.x/KeePassX (v3) and KeePass 2.x (v4) files";
+ license = licenses.gpl2Plus;
+ maintainers = with maintainers; [ jqueiroz ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/libmr/default.nix b/nixpkgs/pkgs/development/python-modules/libmr/default.nix
new file mode 100644
index 00000000000..c258b8dd865
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/libmr/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchPypi, numpy, cython }:
+
+buildPythonPackage rec {
+ pname = "libmr";
+ version = "0.1.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "43ccd86693b725fa3abe648c8cdcef17ba5fa46b5528168829e5f9b968dfeb70";
+ };
+
+ propagatedBuildInputs = [ numpy cython ];
+
+ # No tests in the pypi tarball
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "libMR provides core MetaRecognition and Weibull fitting functionality";
+ homepage = https://github.com/Vastlab/libMR;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ psyanticy ];
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/libnacl/default.nix b/nixpkgs/pkgs/development/python-modules/libnacl/default.nix
new file mode 100644
index 00000000000..54b98cf2136
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/libnacl/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, pytest, libsodium }:
+
+buildPythonPackage rec {
+ pname = "libnacl";
+ version = "1.6.1";
+
+ src = fetchFromGitHub {
+ owner = "saltstack";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "05iamhbsqm8binqhc2zchfqdkajlx2icf8xl5vkd5fbrhw6yylad";
+ };
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ libsodium ];
+
+ postPatch =
+ let soext = stdenv.hostPlatform.extensions.sharedLibrary; in ''
+ substituteInPlace "./libnacl/__init__.py" --replace "ctypes.cdll.LoadLibrary('libsodium${soext}')" "ctypes.cdll.LoadLibrary('${libsodium}/lib/libsodium${soext}')"
+ '';
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with stdenv.lib; {
+ maintainers = with maintainers; [ xvapx ];
+ description = "Python bindings for libsodium based on ctypes";
+ homepage = https://pypi.python.org/pypi/libnacl;
+ license = licenses.asl20;
+ platforms = platforms.unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/librosa/default.nix b/nixpkgs/pkgs/development/python-modules/librosa/default.nix
new file mode 100644
index 00000000000..258c2d6932d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/librosa/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, joblib
+, matplotlib
+, six
+, scikitlearn
+, decorator
+, audioread
+, resampy
+}:
+
+buildPythonPackage rec {
+ pname = "librosa";
+ version = "0.6.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b332225ac29bfae1ba386deca2b6566271576de3ab17617ad0a71892c799b118";
+ };
+
+ propagatedBuildInputs = [ joblib matplotlib six scikitlearn decorator audioread resampy ];
+
+ # No tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Python module for audio and music processing";
+ homepage = http://librosa.github.io/;
+ license = licenses.isc;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/libsavitar/default.nix b/nixpkgs/pkgs/development/python-modules/libsavitar/default.nix
new file mode 100644
index 00000000000..657df2dfb7c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/libsavitar/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, buildPythonPackage, python, pythonOlder, fetchFromGitHub, cmake, sip }:
+
+buildPythonPackage rec {
+ pname = "libsavitar";
+ version = "4.2.0";
+ format = "other";
+
+ src = fetchFromGitHub {
+ owner = "Ultimaker";
+ repo = "libSavitar";
+ rev = version;
+ sha256 = "0cqskd8rcg7pih8nj3s2i137lwxpibmdmym6f8hii14ashny73i1";
+ };
+
+ postPatch = ''
+ sed -i 's#''${Python3_SITEARCH}#${placeholder "out"}/${python.sitePackages}#' cmake/SIPMacros.cmake
+ '';
+
+ nativeBuildInputs = [ cmake ];
+
+ propagatedBuildInputs = [ sip ];
+
+ disabled = pythonOlder "3.4.0";
+
+ meta = with stdenv.lib; {
+ description = "C++ implementation of 3mf loading with SIP python bindings";
+ homepage = https://github.com/Ultimaker/libSavitar;
+ license = licenses.lgpl3Plus;
+ platforms = platforms.unix;
+ maintainers = with maintainers; [ abbradar orivej gebner ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/libsexy/default.nix b/nixpkgs/pkgs/development/python-modules/libsexy/default.nix
new file mode 100644
index 00000000000..78e0dae2634
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/libsexy/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, buildPythonPackage, libsexy, pkgconfig, libxml2, pygtk, pango, glib, python }:
+
+buildPythonPackage rec {
+ pname = "libsexy";
+ version = "0.1.9";
+ format = "other";
+
+ src = fetchurl {
+ url = "http://releases.chipx86.com/libsexy/sexy-python/sexy-python-${version}.tar.gz";
+ sha256 = "05bgcsxwkp63rlr8wg6znd46cfbhrzc5wh70jabsi654pxxjb39d";
+ };
+
+ nativeBuildInputs = [ pkgconfig pygtk ];
+
+ propagatedBuildInputs = [
+ pygtk libsexy glib pango libxml2
+ ];
+
+ postInstall = ''
+ ln -s $out/${python.sitePackages}/gtk-2.0/* $out/${python.sitePackages}
+ '';
+
+ meta = {
+ description = "Python libsexy bindings";
+ platforms = stdenv.lib.platforms.linux;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/libsoundtouch/default.nix b/nixpkgs/pkgs/development/python-modules/libsoundtouch/default.nix
new file mode 100644
index 00000000000..e89b606879b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/libsoundtouch/default.nix
@@ -0,0 +1,34 @@
+{ buildPythonPackage
+, fetchFromGitHub
+, stdenv
+, lib
+, pythonOlder
+, requests
+, enum34
+}:
+
+buildPythonPackage {
+ pname = "libsoundtouch";
+ version = "0.4.0";
+
+ src = fetchFromGitHub {
+ owner = "CharlesBlonde";
+ repo = "libsoundtouch";
+ rev = "875074b7a23734021974345b3dc297918e453aa2";
+ sha256 = "1psd556j4x77hjxahxxgdgnq2mcd769whvnf0gmwf3jy2svfkqlg";
+ };
+
+ postPatch = lib.optionalString (! (pythonOlder "3.4")) ''
+ substituteInPlace setup.py --replace "'enum34>=1.1.6'" ""
+ '';
+
+ propagatedBuildInputs = [ requests enum34 ];
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Bose Soundtouch Python library";
+ homepage = https://github.com/CharlesBlonde/libsoundtouch;
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/libthumbor/default.nix b/nixpkgs/pkgs/development/python-modules/libthumbor/default.nix
new file mode 100644
index 00000000000..6c9987a5b8e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/libthumbor/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, django
+, six
+, pycrypto
+}:
+
+buildPythonPackage rec {
+ pname = "libthumbor";
+ version = "1.3.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1vjhszsf8wl9k16wyg2rfjycjnawzl7z8j39bhiysbz5x4lqg91b";
+ };
+
+ buildInputs = [ django ];
+ propagatedBuildInputs = [ six pycrypto ];
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "libthumbor is the python extension to thumbor";
+ homepage = https://github.com/heynemann/libthumbor;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/libtmux/default.nix b/nixpkgs/pkgs/development/python-modules/libtmux/default.nix
new file mode 100644
index 00000000000..d1220a6abbf
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/libtmux/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchPypi, buildPythonPackage, pytest }:
+
+buildPythonPackage rec {
+ pname = "libtmux";
+ version = "0.8.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0nh6dvf8g93hv7cma6r8l88k8l20zck6a0ax29mrdg03f9hqdk9a";
+ };
+
+ checkInputs = [ pytest ];
+ postPatch = ''
+ sed -i 's/==.*$//' requirements/test.txt
+ '';
+
+ # No tests in archive
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Scripting library for tmux";
+ homepage = https://libtmux.readthedocs.io/;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/libusb1/default.nix b/nixpkgs/pkgs/development/python-modules/libusb1/default.nix
new file mode 100644
index 00000000000..b63704bf8e0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/libusb1/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, buildPythonPackage, fetchPypi, libusb1, pytest }:
+
+buildPythonPackage rec {
+ pname = "libusb1";
+ version = "1.7.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "adf64a4f3f5c94643a1286f8153bcf4bc787c348b38934aacd7fe17fbeebc571";
+ };
+
+ postPatch = ''
+ substituteInPlace usb1/libusb1.py --replace \
+ "ctypes.util.find_library(base_name)" \
+ "'${libusb1}/lib/libusb-1.0${stdenv.hostPlatform.extensions.sharedLibrary}'"
+ '';
+
+ buildInputs = [ libusb1 ];
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ # USBPollerThread is unreliable. Let's not test it.
+ # See: https://github.com/vpelletier/python-libusb1/issues/16
+ py.test -k 'not testUSBPollerThreadExit' usb1/testUSB1.py
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/vpelletier/python-libusb1;
+ description = "Python ctype-based wrapper around libusb1";
+ license = licenses.lgpl2Plus;
+ maintainers = with maintainers; [ rnhmjoj ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/libversion/default.nix b/nixpkgs/pkgs/development/python-modules/libversion/default.nix
new file mode 100644
index 00000000000..e5741176426
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/libversion/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, fetchPypi, pkgconfig, libversion, pythonOlder }:
+
+buildPythonPackage rec {
+ pname = "libversion";
+ version = "1.1.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0xp0wv4s1537s0iqa1ih3kfh1p70s7d1fkwhvrnbj8m98yjij84q";
+ };
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [ libversion ];
+
+ disabled = pythonOlder "3.6";
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/repology/py-libversion;
+ description = "Python bindings for libversion, which provides fast, powerful and correct generic version string comparison algorithm";
+ license = licenses.mit;
+ maintainers = [ maintainers.ryantm ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/libvirt/default.nix b/nixpkgs/pkgs/development/python-modules/libvirt/default.nix
new file mode 100644
index 00000000000..f4a07b9635f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/libvirt/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, buildPythonPackage, fetchgit, pkgconfig, lxml, libvirt, nose }:
+
+buildPythonPackage rec {
+ pname = "libvirt";
+ version = "5.4.0";
+
+ src = assert version == libvirt.version; fetchgit {
+ url = git://libvirt.org/libvirt-python.git;
+ rev = "v${version}";
+ sha256 = "0ja35z90i3m7vsjfpzfm7awkmja3h0150376i5pzmf2q8vp61fi5";
+ };
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [ libvirt lxml ];
+
+ checkInputs = [ nose ];
+ checkPhase = ''
+ nosetests
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = http://www.libvirt.org/;
+ description = "libvirt Python bindings";
+ license = licenses.lgpl2;
+ maintainers = [ maintainers.fpletz ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/license-expression/default.nix b/nixpkgs/pkgs/development/python-modules/license-expression/default.nix
new file mode 100644
index 00000000000..2bf204a9a62
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/license-expression/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildPythonPackage, fetchFromGitHub
+, boolean-py
+}:
+
+buildPythonPackage rec {
+ pname = "license-expression";
+ version = "0.999";
+
+ src = fetchFromGitHub {
+ owner = "nexB";
+ repo = "license-expression";
+ rev = "v${version}";
+ sha256 = "0q8sha38w7ajg7ar0rmbqrwv0n58l8yzyl96cqwcbvp578fn3ir0";
+ };
+ postPatch = "patchShebangs ./configure";
+
+ propagatedBuildInputs = [ boolean-py ];
+
+ meta = with lib; {
+ homepage = "https://github.com/nexB/license-expression";
+ description = "Utility library to parse, normalize and compare License expressions for Python using a boolean logic engine";
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/lightblue/default.nix b/nixpkgs/pkgs/development/python-modules/lightblue/default.nix
new file mode 100644
index 00000000000..f826bbecb0a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/lightblue/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, 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 stdenv.lib; {
+ homepage = http://lightblue.sourceforge.net;
+ description = "Cross-platform Bluetooth API for Python";
+ maintainers = with maintainers; [ leenaars ];
+ license = licenses.gpl3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/lightgbm/default.nix b/nixpkgs/pkgs/development/python-modules/lightgbm/default.nix
new file mode 100644
index 00000000000..f428e7dbfba
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/lightgbm/default.nix
@@ -0,0 +1,62 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, cmake
+, numpy
+, scipy
+, scikitlearn
+, llvmPackages ? null
+}:
+
+buildPythonPackage rec {
+ pname = "lightgbm";
+ version = "2.2.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "40354d21da6bfa73c7ada4d01b2e0b22eaae00f93e90bdaf3fc423020c273890";
+ };
+
+ nativeBuildInputs = [
+ cmake
+ ];
+
+ dontUseCmakeConfigure = true;
+
+ # we never actually explicitly call the install command so this is the only way
+ # to inject these options to it - however, openmp-library doesn't appear to have
+ # any effect, so we have to inject it into NIX_LDFLAGS manually below
+ postPatch = stdenv.lib.optionalString stdenv.cc.isClang ''
+ cat >> setup.cfg <<EOF
+
+ [install]
+ openmp-include-dir=${llvmPackages.openmp}/include
+ openmp-library=${llvmPackages.openmp}/lib/libomp.dylib
+
+ EOF
+ '';
+
+ propagatedBuildInputs = [
+ numpy
+ scipy
+ scikitlearn
+ ];
+
+ postConfigure = ''
+ export HOME=$(mktemp -d)
+ '' + stdenv.lib.optionalString stdenv.cc.isClang ''
+ export NIX_LDFLAGS="$NIX_LDFLAGS -L${llvmPackages.openmp}/lib -lomp"
+ '';
+
+ # The pypi package doesn't distribute the tests from the GitHub
+ # repository. It contains c++ tests which don't seem to wired up to
+ # `make check`.
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A fast, distributed, high performance gradient boosting (GBDT, GBRT, GBM or MART) framework";
+ homepage = https://github.com/Microsoft/LightGBM;
+ license = licenses.mit;
+ maintainers = with maintainers; [ teh costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/lightning/default.nix b/nixpkgs/pkgs/development/python-modules/lightning/default.nix
new file mode 100644
index 00000000000..d0e1a10ae00
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/lightning/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, jinja2
+, matplotlib
+, numpy
+, requests
+, six
+}:
+
+buildPythonPackage rec {
+ version = "1.2.1";
+ pname = "lightning-python";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "3987d7d4a634bdb6db9bcf212cf4d2f72bab5bc039f4f6cbc02c9d01c4ade792";
+ };
+
+ buildInputs = [ pytest ];
+ propagatedBuildInputs = [ jinja2 matplotlib numpy requests six ];
+
+ meta = with stdenv.lib; {
+ description = "A Python client library for the Lightning data visualization server";
+ homepage = http://lightning-viz.org;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/limitlessled/default.nix b/nixpkgs/pkgs/development/python-modules/limitlessled/default.nix
new file mode 100644
index 00000000000..c2029aa6d6b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/limitlessled/default.nix
@@ -0,0 +1,18 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "limitlessled";
+ version = "1.1.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0pd71wxqjvznx10brsj1sgy3420bz7awbzk9jlj422rrdxql754j";
+ };
+
+ meta = with lib; {
+ description = "Control LimitlessLED products";
+ homepage = https://github.com/happyleavesaoc/python-limitlessled/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ sephalon ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/limits/default.nix b/nixpkgs/pkgs/development/python-modules/limits/default.nix
new file mode 100644
index 00000000000..57f47ff5fd8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/limits/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchPypi, buildPythonPackage, six }:
+
+buildPythonPackage rec {
+ pname = "limits";
+ version = "1.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a017b8d9e9da6761f4574642149c337f8f540d4edfe573fb91ad2c4001a2bc76";
+ };
+
+ propagatedBuildInputs = [ six ];
+
+ doCheck = false; # ifilter
+
+ meta = with stdenv.lib; {
+ description = "Rate limiting utilities";
+ license = licenses.mit;
+ homepage = https://limits.readthedocs.org/;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/limnoria/default.nix b/nixpkgs/pkgs/development/python-modules/limnoria/default.nix
new file mode 100644
index 00000000000..604f9bad3c3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/limnoria/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pkgs
+}:
+
+buildPythonPackage rec {
+ pname = "limnoria";
+ version = "2019.02.23";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0rlv9l1w80n2jpw2yy1g6x83rvldwzkmkafdalxkar32czbi2xv4";
+ };
+
+ patchPhase = ''
+ sed -i 's/version=version/version="${version}"/' setup.py
+ '';
+ buildInputs = [ pkgs.git ];
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A modified version of Supybot, an IRC bot";
+ homepage = http://supybot.fr.cr;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ goibhniu ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/line_profiler/default.nix b/nixpkgs/pkgs/development/python-modules/line_profiler/default.nix
new file mode 100644
index 00000000000..00ea8dba663
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/line_profiler/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, cython
+, isPyPy
+, ipython
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "line_profiler";
+ version = "2.1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "efa66e9e3045aa7cb1dd4bf0106e07dec9f80bc781a993fbaf8162a36c20af5c";
+ };
+
+ patches = [ ./python37.patch ];
+
+ buildInputs = [ cython ];
+
+ propagatedBuildInputs = [ ipython ];
+
+ disabled = isPyPy;
+
+ preBuild = ''
+ rm -f _line_profiler.c
+ '';
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover -s tests
+ '';
+
+ meta = {
+ description = "Line-by-line profiler";
+ homepage = https://github.com/rkern/line_profiler;
+ license = lib.licenses.bsd3;
+ maintainers = with lib.maintainers; [ fridh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/line_profiler/python37.patch b/nixpkgs/pkgs/development/python-modules/line_profiler/python37.patch
new file mode 100644
index 00000000000..0b6e93732c4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/line_profiler/python37.patch
@@ -0,0 +1,36 @@
+From 542baf59f3b2eada13bde48e8a89e484c2cfeeef Mon Sep 17 00:00:00 2001
+From: Hanaasagi <ambiguous404@gmail.com>
+Date: Wed, 17 Apr 2019 06:46:03 +0000
+Subject: [PATCH] Support Python 3.7 Generator (PEP 479)
+
+---
+ kernprof.py | 2 ++
+ line_profiler.py | 2 ++
+ 2 files changed, 4 insertions(+)
+
+diff --git a/kernprof.py b/kernprof.py
+index 108d36e..6461cf6 100755
+--- a/kernprof.py
++++ b/kernprof.py
+@@ -102,6 +102,8 @@ def wrapper(*args, **kwds):
+ self.enable_by_count()
+ try:
+ item = g.send(input)
++ except StopIteration:
++ return
+ finally:
+ self.disable_by_count()
+ input = (yield item)
+diff --git a/line_profiler.py b/line_profiler.py
+index a481dd2..5744d05 100755
+--- a/line_profiler.py
++++ b/line_profiler.py
+@@ -100,6 +100,8 @@ def wrapper(*args, **kwds):
+ self.enable_by_count()
+ try:
+ item = g.send(input)
++ except StopIteration:
++ return
+ finally:
+ self.disable_by_count()
+ input = (yield item)
diff --git a/nixpkgs/pkgs/development/python-modules/linecache2/default.nix b/nixpkgs/pkgs/development/python-modules/linecache2/default.nix
new file mode 100644
index 00000000000..9890d382742
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/linecache2/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pbr
+}:
+
+buildPythonPackage rec {
+ pname = "linecache2";
+ version = "1.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0z79g3ds5wk2lvnqw0y2jpakjf32h95bd9zmnvp7dnqhf57gy9jb";
+ };
+
+ buildInputs = [ pbr ];
+ # circular dependencies for tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A backport of linecache to older supported Pythons";
+ homepage = "https://github.com/testing-cabal/linecache2";
+ license = licenses.psfl;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/linode-api/default.nix b/nixpkgs/pkgs/development/python-modules/linode-api/default.nix
new file mode 100644
index 00000000000..4689050ba6c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/linode-api/default.nix
@@ -0,0 +1,41 @@
+{ stdenv,
+ buildPythonPackage,
+ fetchFromGitHub,
+ pythonOlder,
+ lib,
+ requests,
+ future,
+ enum34,
+ mock }:
+
+buildPythonPackage rec {
+ pname = "linode-api";
+ version = "4.1.8b1"; # NOTE: this is a beta, and the API may change in future versions.
+
+ disabled = (pythonOlder "2.7");
+
+ propagatedBuildInputs = [ requests future ]
+ ++ stdenv.lib.optionals (pythonOlder "3.4") [ enum34 ];
+
+ postPatch = (stdenv.lib.optionalString (!pythonOlder "3.4") ''
+ sed -i -e '/"enum34",/d' setup.py
+ '');
+
+ doCheck = true;
+ checkInputs = [ mock ];
+
+ # Sources from Pypi exclude test fixtures
+ src = fetchFromGitHub {
+ rev = "v${version}";
+ owner = "linode";
+ repo = "python-linode-api";
+ sha256 = "0qfqn92fr876dncwbkf2vhm90hnf7lwpg80hzwyzyzwz1hcngvjg";
+ };
+
+ meta = {
+ homepage = "https://github.com/linode/python-linode-api";
+ description = "The official python library for the Linode API v4 in python.";
+ license = lib.licenses.bsd3;
+ maintainers = with lib.maintainers; [ glenns ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/linode/default.nix b/nixpkgs/pkgs/development/python-modules/linode/default.nix
new file mode 100644
index 00000000000..d0c8b0ff794
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/linode/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, requests
+}:
+
+buildPythonPackage rec {
+ pname = "linode";
+ version = "0.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "db3c2a7fab8966d903a63f16c515bff241533e4ef2d746aa7aae4a49bba5e573";
+ };
+
+ propagatedBuildInputs = [ requests ];
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/ghickman/linode";
+ description = "A thin python wrapper around Linode's API";
+ license = licenses.mit;
+ maintainers = with maintainers; [ nslqqq ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/linuxfd/default.nix b/nixpkgs/pkgs/development/python-modules/linuxfd/default.nix
new file mode 100644
index 00000000000..e5b8fe6f34c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/linuxfd/default.nix
@@ -0,0 +1,24 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "linuxfd";
+ version = "1.4.4";
+
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b8bf6847b5c8e50e0842024d2911bfc1048db9abf37582a310cd57070971d692";
+ };
+
+ # no tests
+ doCheck = false;
+
+ meta = {
+ description = "Python bindings for the Linux eventfd/signalfd/timerfd/inotify syscalls";
+ homepage = https://github.com/FrankAbelbeck/linuxfd;
+ license = with lib.licenses; [ lgpl3 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/livereload/default.nix b/nixpkgs/pkgs/development/python-modules/livereload/default.nix
new file mode 100644
index 00000000000..e329f36a716
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/livereload/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, nose
+, django
+, tornado
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "livereload";
+ version = "2.6.1";
+
+ src = fetchFromGitHub {
+ owner = "lepture";
+ repo = "python-livereload";
+ rev = "v${version}";
+ sha256 = "15v2a0af897ijnsfjh2r8f7l5zi5i2jdm6z0xzlyyvp9pxd6mpfm";
+ };
+
+ buildInputs = [ django ];
+
+ propagatedBuildInputs = [ tornado six ];
+
+ checkInputs = [ nose ];
+ # TODO: retry running all tests after v2.6.1
+ checkPhase = "NOSE_EXCLUDE=test_watch_multiple_dirs nosetests -s";
+
+ meta = {
+ description = "Runs a local server that reloads as you develop";
+ homepage = "https://github.com/lepture/python-livereload";
+ license = lib.licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/livestreamer-curses/default.nix b/nixpkgs/pkgs/development/python-modules/livestreamer-curses/default.nix
new file mode 100644
index 00000000000..bf3b2cc1164
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/livestreamer-curses/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, isPyPy
+, livestreamer
+}:
+
+buildPythonPackage rec {
+ version = "1.5.2";
+ pname = "livestreamer-curses";
+ disabled = isPyPy;
+
+ src = fetchurl {
+ url = "https://github.com/gapato/livestreamer-curses/archive/v${version}.tar.gz";
+ sha256 = "1v49sym6mrci9dxy0a7cpbp4bv6fg2ijj6rwk4wzg18c2x4qzkhn";
+ };
+
+ propagatedBuildInputs = [ livestreamer ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/gapato/livestreamer-curses;
+ description = "Curses frontend for livestreamer";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/livestreamer/default.nix b/nixpkgs/pkgs/development/python-modules/livestreamer/default.nix
new file mode 100644
index 00000000000..a316edaf80a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/livestreamer/default.nix
@@ -0,0 +1,43 @@
+{ stdenv
+, buildPythonPackage
+, pkgs
+, isPyPy
+, pycrypto
+, requests
+, singledispatch
+, futures
+, isPy27
+, isPy33
+}:
+
+buildPythonPackage rec {
+ version = "1.12.2";
+ pname = "livestreamer";
+ disabled = isPyPy;
+
+ src = pkgs.fetchurl {
+ url = "https://github.com/chrippa/livestreamer/archive/v${version}.tar.gz";
+ sha256 = "1fp3d3z2grb1ls97smjkraazpxnvajda2d1g1378s6gzmda2jvjd";
+ };
+
+ buildInputs = [ pkgs.makeWrapper ];
+
+ propagatedBuildInputs = [ pkgs.rtmpdump pycrypto requests ]
+ ++ stdenv.lib.optionals isPy27 [ singledispatch futures ]
+ ++ stdenv.lib.optionals isPy33 [ singledispatch ];
+
+ postInstall = ''
+ wrapProgram $out/bin/livestreamer --prefix PATH : ${pkgs.rtmpdump}/bin
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = http://livestreamer.tanuki.se;
+ description = ''
+ Livestreamer is CLI program that extracts streams from various
+ services and pipes them into a video player of choice.
+ '';
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ fuuzetsu ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/llfuse/default.nix b/nixpkgs/pkgs/development/python-modules/llfuse/default.nix
new file mode 100644
index 00000000000..6a497358404
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/llfuse/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, buildPythonPackage, pkgconfig, pytest, fuse, attr, which
+, contextlib2
+}:
+
+buildPythonPackage rec {
+ pname = "llfuse";
+ version = "1.3.6";
+
+ src = fetchurl {
+ url = "mirror://pypi/l/llfuse/${pname}-${version}.tar.bz2";
+ sha256 = "1j9fzxpgmb4rxxyl9jcf84zvznhgi3hnh4hg5vb0qaslxkvng8ii";
+ };
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [ fuse ];
+ checkInputs = [ pytest attr which ];
+
+ propagatedBuildInputs = [ contextlib2 ];
+
+ checkPhase = ''
+ py.test -k "not test_listdir"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Python bindings for the low-level FUSE API";
+ homepage = https://github.com/python-llfuse/python-llfuse;
+ license = licenses.lgpl2Plus;
+ platforms = platforms.unix;
+ maintainers = with maintainers; [ bjornfor ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/llvmlite/default.nix b/nixpkgs/pkgs/development/python-modules/llvmlite/default.nix
new file mode 100644
index 00000000000..e70438a8817
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/llvmlite/default.nix
@@ -0,0 +1,50 @@
+{ stdenv
+, fetchPypi
+, buildPythonPackage
+, python
+, llvm
+, pythonOlder
+, isPyPy
+, enum34
+}:
+
+buildPythonPackage rec {
+ pname = "llvmlite";
+ version = "0.29.0";
+
+ disabled = isPyPy;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "3adb0d4c9a17ad3dca82c7e88118babd61eeee0ee985ce31fa43ec27aa98c963";
+ };
+
+ nativeBuildInputs = [ llvm ];
+ propagatedBuildInputs = [ ] ++ stdenv.lib.optional (pythonOlder "3.4") enum34;
+
+ # Disable static linking
+ # https://github.com/numba/llvmlite/issues/93
+ postPatch = ''
+ substituteInPlace ffi/Makefile.linux --replace "-static-libstdc++" ""
+
+ substituteInPlace llvmlite/tests/test_binding.py --replace "test_linux" "nope"
+ '';
+ # Set directory containing llvm-config binary
+ preConfigure = ''
+ export LLVM_CONFIG=${llvm}/bin/llvm-config
+ '';
+ checkPhase = ''
+ ${python.executable} runtests.py
+ '';
+
+ __impureHostDeps = stdenv.lib.optionals stdenv.isDarwin [ "/usr/lib/libm.dylib" ];
+
+ passthru.llvm = llvm;
+
+ meta = {
+ description = "A lightweight LLVM python binding for writing JIT compilers";
+ homepage = http://llvmlite.pydata.org/;
+ license = stdenv.lib.licenses.bsd2;
+ maintainers = with stdenv.lib.maintainers; [ fridh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/lmdb/default.nix b/nixpkgs/pkgs/development/python-modules/lmdb/default.nix
new file mode 100644
index 00000000000..13adad603d1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/lmdb/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, cffi
+}:
+
+buildPythonPackage rec {
+ pname = "lmdb";
+ version = "0.97";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0jw3n14x6qg5wps2w4qkqf4pyan949h1s2nbkrz2qh7xwnnp2g8p";
+ };
+
+ checkInputs = [ pytest cffi ];
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Universal Python binding for the LMDB 'Lightning' Database";
+ homepage = "https://github.com/dw/py-lmdb";
+ license = licenses.openldap;
+ maintainers = with maintainers; [ copumpkin ivan ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/lmtpd/default.nix b/nixpkgs/pkgs/development/python-modules/lmtpd/default.nix
new file mode 100644
index 00000000000..bc91139728b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/lmtpd/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "lmtpd";
+ version = "6.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "192d1j9lj9i6f4llwg51817am4jj8pjvlqmkx03spmsay6f832bm";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/moggers87/lmtpd;
+ description = "LMTP counterpart to smtpd in the Python standard library";
+ license = licenses.mit;
+ maintainers = with maintainers; [ jluttine ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/locket/default.nix b/nixpkgs/pkgs/development/python-modules/locket/default.nix
new file mode 100644
index 00000000000..a4d7a8ce706
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/locket/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytest }:
+
+buildPythonPackage rec {
+ pname = "locket";
+ version = "0.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1d4z2zngrpqkrfhnd4yhysh66kjn4mblys2l06sh5dix2p0n7vhz";
+ };
+
+ buildInputs = [ pytest ];
+
+ # weird test requirements (spur.local>=0.3.7,<0.4)
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Locket implements a lock that can be used by multiple processes provided they use the same path.";
+ homepage = https://github.com/mwilliamson/locket.py;
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ teh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/lockfile/default.nix b/nixpkgs/pkgs/development/python-modules/lockfile/default.nix
new file mode 100644
index 00000000000..15cfee67f84
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/lockfile/default.nix
@@ -0,0 +1,29 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pbr
+, nose
+}:
+
+buildPythonPackage rec {
+ pname = "lockfile";
+ version = "0.12.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6aed02de03cba24efabcd600b30540140634fc06cfa603822d508d5361e9f799";
+ };
+
+ buildInputs = [ pbr ];
+ checkInputs = [ nose ];
+
+ checkPhase = ''
+ nosetests
+ '';
+
+ meta = with lib; {
+ homepage = https://launchpad.net/pylockfile;
+ description = "Platform-independent advisory file locking capability for Python applications";
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/locustio/default.nix b/nixpkgs/pkgs/development/python-modules/locustio/default.nix
new file mode 100644
index 00000000000..2203fa4c6ad
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/locustio/default.nix
@@ -0,0 +1,30 @@
+{ buildPythonPackage
+, fetchFromGitHub
+, mock
+, unittest2
+, msgpack
+, requests
+, flask
+, gevent
+, pyzmq
+}:
+
+buildPythonPackage rec {
+ pname = "locustio";
+ version = "0.9.0";
+
+ src = fetchFromGitHub {
+ owner = "locustio";
+ repo = "locust";
+ rev = version;
+ sha256 = "1645d63ig4ymw716b6h53bhmjqqc13p9r95k1xfx66ck6vdqnisd";
+ };
+
+ propagatedBuildInputs = [ msgpack requests flask gevent pyzmq ];
+ buildInputs = [ mock unittest2 ];
+
+ meta = {
+ homepage = https://locust.io/;
+ description = "A load testing tool";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/logfury/default.nix b/nixpkgs/pkgs/development/python-modules/logfury/default.nix
new file mode 100644
index 00000000000..a52f194b8be
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/logfury/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, funcsigs
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "logfury";
+ version = "0.1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1lywirv3d1lw691mc4mfpz7ak6r49klri43bbfgdnvsfppxminj2";
+ };
+
+ propagatedBuildInputs = [
+ funcsigs
+ six
+ ];
+
+ # No tests
+ doCheck = false;
+
+ meta = {
+ description = "Logfury is for python library maintainers. It allows for responsible, low-boilerplate logging of method calls.";
+ homepage = "https://github.com/ppolewicz/logfury";
+ license = lib.licenses.bsd3;
+ maintainers = with lib.maintainers; [ jwiegley ];
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/logilab/common.nix b/nixpkgs/pkgs/development/python-modules/logilab/common.nix
new file mode 100644
index 00000000000..2dd997765cf
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/logilab/common.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, fetchPypi, unittest2, six }:
+
+buildPythonPackage rec {
+ pname = "logilab-common";
+ version = "1.4.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1zw8bijlcmqrigsqvzj7gwh3qbd33dmpi9ij6h56b41x0dpm957d";
+ };
+
+ propagatedBuildInputs = [ unittest2 six ];
+
+ # package supports 3.x but tests require egenix-mx-base which is python 2.x only
+ # and is not currently in nixos
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Python packages and modules used by Logilab ";
+ homepage = https://www.logilab.org/project/logilab-common;
+ license = licenses.lgpl21;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/logilab/constraint.nix b/nixpkgs/pkgs/development/python-modules/logilab/constraint.nix
new file mode 100644
index 00000000000..aa26f21820b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/logilab/constraint.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi, logilab_common, six }:
+
+buildPythonPackage rec {
+ pname = "logilab-constraint";
+ version = "0.6.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1n0xim4ij1n4yvyqqvyc0wllhjs22szglsd5av0j8k2qmck4njcg";
+ };
+
+ propagatedBuildInputs = [
+ logilab_common six
+ ];
+
+
+ meta = with stdenv.lib; {
+ description = "logilab-database provides some classes to make unified access to different";
+ homepage = "https://www.logilab.org/project/logilab-database";
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/logilab_astng/default.nix b/nixpkgs/pkgs/development/python-modules/logilab_astng/default.nix
new file mode 100644
index 00000000000..53284d12228
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/logilab_astng/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, logilab_common
+}:
+
+buildPythonPackage rec {
+ pname = "logilab-astng";
+ version = "0.24.3";
+
+ src = fetchurl {
+ url = "http://download.logilab.org/pub/astng/${pname}-${version}.tar.gz";
+ sha256 = "0np4wpxyha7013vkkrdy54dvnil67gzi871lg60z8lap0l5h67wn";
+ };
+
+ propagatedBuildInputs = [ logilab_common ];
+
+ meta = with stdenv.lib; {
+ homepage = https://www.logilab.org/project/logilab-astng;
+ description = "Python Abstract Syntax Tree New Generation";
+ license = licenses.lgpl2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/logster/default.nix b/nixpkgs/pkgs/development/python-modules/logster/default.nix
new file mode 100644
index 00000000000..e4b57e4ce40
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/logster/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPythonPackage, fetchFromGitHub, pygtail }:
+
+buildPythonPackage rec {
+ pname = "logster";
+ version = "1.0.1";
+
+ src = fetchFromGitHub {
+ owner = "etsy";
+ repo = pname;
+ rev = version;
+ sha256 = "06ac5hydas24h2cn8l5i69v1z0min5hwh6a1lcm1b08xnvpsi85q";
+ };
+
+ propagatedBuildInputs = [ pygtail ];
+
+ meta = with lib; {
+ description = "Parses log files, generates metrics for Graphite and Ganglia";
+ license = licenses.gpl3Plus;
+ homepage = https://github.com/etsy/logster;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/loguru/default.nix b/nixpkgs/pkgs/development/python-modules/loguru/default.nix
new file mode 100644
index 00000000000..67134fdfd95
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/loguru/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildPythonPackage, fetchPypi, isPy27, pytest, colorama }:
+
+buildPythonPackage rec {
+ pname = "loguru";
+ version = "0.3.2";
+
+ disabled = isPy27;
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0apd3wcjbyhwzgw0fgzzn4dcgy10pqa8f1vf58d4hmszxvyqn4z3";
+ };
+
+ checkInputs = [ pytest colorama ];
+ checkPhase = ''
+ pytest -k 'not test_time_rotation_reopening'
+ '';
+
+ meta = with lib; {
+ homepage = https://github.com/Delgan/loguru;
+ description = "Python logging made (stupidly) simple";
+ license = licenses.mit;
+ maintainers = with maintainers; [ jakewaksbaum ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/logutils/default.nix b/nixpkgs/pkgs/development/python-modules/logutils/default.nix
new file mode 100644
index 00000000000..ce48978d677
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/logutils/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "logutils";
+ version = "0.3.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "bc058a25d5c209461f134e1f03cab637d66a7a5ccc12e593db56fbb279899a82";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Logging utilities";
+ homepage = http://code.google.com/p/logutils/;
+ license = licenses.bsd0;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/logzero/default.nix b/nixpkgs/pkgs/development/python-modules/logzero/default.nix
new file mode 100644
index 00000000000..098d9f3e06d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/logzero/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildPythonPackage, fetchPypi, pytest }:
+
+buildPythonPackage rec {
+ pname = "logzero";
+ version = "1.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0hli2wgwxxackrk1ybmlpdd0rzms6blm11zzwlvrzykd8cp1xyil";
+ };
+
+ checkInputs = [ pytest ];
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with lib; {
+ homepage = https://github.com/metachris/logzero;
+ description = "Robust and effective logging for Python 2 and 3";
+ license = licenses.mit;
+ maintainers = with maintainers; [ jakewaksbaum ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/loo-py/default.nix b/nixpkgs/pkgs/development/python-modules/loo-py/default.nix
new file mode 100644
index 00000000000..fe765f5ff0a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/loo-py/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytools
+, pymbolic
+, genpy
+, cgen
+, islpy
+, six
+, colorama
+, mako
+, pyopencl
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "loo-py";
+ version = "2017.2";
+
+ src = fetchPypi {
+ pname = "loo.py";
+ inherit version;
+ sha256 = "c656992de48b328cdaccd7d1f14eb522b9dd5a1d0d15f54623f4ab18fd219abc";
+ };
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [
+ pytools
+ pymbolic
+ genpy
+ cgen
+ islpy
+ six
+ colorama
+ mako
+ pyopencl
+ ];
+
+ # pyopencl._cl.LogicError: clGetPlatformIDs failed: PLATFORM_NOT_FOUND_KHR
+ doCheck = false;
+ checkPhase = ''
+ HOME=$(mktemp -d) pytest test
+ '';
+
+ meta = with lib; {
+ description = "A code generator for array-based code on CPUs and GPUs";
+ homepage = https://mathema.tician.de/software/loopy;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/lpod/default.nix b/nixpkgs/pkgs/development/python-modules/lpod/default.nix
new file mode 100644
index 00000000000..9b262007706
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/lpod/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, 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 stdenv.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/nixpkgs/pkgs/development/python-modules/lsi/default.nix b/nixpkgs/pkgs/development/python-modules/lsi/default.nix
new file mode 100644
index 00000000000..2277a2be92f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/lsi/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, 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 stdenv.lib; {
+ description = "CLI for querying and SSHing onto AWS EC2 instances";
+ homepage = https://github.com/NarrativeScience/lsi;
+ maintainers = [maintainers.adnelson];
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ludios_wpull/default.nix b/nixpkgs/pkgs/development/python-modules/ludios_wpull/default.nix
new file mode 100644
index 00000000000..f0b3aa60f17
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ludios_wpull/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, isPy3k
+, chardet
+, dnspython
+, html5-parser
+, lxml
+, namedlist
+, sqlalchemy
+, tornado_4
+, Yapsy
+}:
+
+buildPythonPackage rec {
+ pname = "ludios_wpull";
+ version = "3.0.7";
+
+ disabled = !isPy3k;
+
+ src = fetchFromGitHub {
+ rev = version;
+ owner = "ludios";
+ repo = "wpull";
+ sha256 = "1j96avm0ynbazypzp766wh26n4qc73y7wgsiqfrdfl6x7rx20wgf";
+ };
+
+ propagatedBuildInputs = [ chardet dnspython html5-parser lxml namedlist sqlalchemy tornado_4 Yapsy ];
+
+ # Test suite has tests that fail on all platforms
+ doCheck = false;
+
+ meta = {
+ description = "Web crawler; fork of wpull used by grab-site";
+ homepage = https://github.com/ludios/wpull;
+ license = lib.licenses.gpl3;
+ maintainers = with lib.maintainers; [ ivan ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/luftdaten/default.nix b/nixpkgs/pkgs/development/python-modules/luftdaten/default.nix
new file mode 100644
index 00000000000..0138d866ff0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/luftdaten/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildPythonPackage, isPy3k, fetchPypi, aiohttp, async-timeout }:
+
+buildPythonPackage rec {
+ pname = "luftdaten";
+ version = "0.6.2";
+
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0919hcycv2rkn99lv4dn78i827mgvm3vagm9xcc6qgawsli8vrlp";
+ };
+
+ propagatedBuildInputs = [ aiohttp async-timeout ];
+
+ # No tests implemented
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Python API for interacting with luftdaten.info";
+ homepage = https://github.com/fabaff/python-luftdaten;
+ license = licenses.mit;
+ maintainers = with maintainers; [ dotlambda ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/lxc/default.nix b/nixpkgs/pkgs/development/python-modules/lxc/default.nix
new file mode 100644
index 00000000000..26be7020c66
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/lxc/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, 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 stdenv.lib; {
+ description = "Out of tree python 2.7 binding for liblxc";
+ homepage = https://github.com/lxc/python2-lxc;
+ license = licenses.lgpl2;
+ maintainers = with maintainers; [ mic92 ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/lxml/default.nix b/nixpkgs/pkgs/development/python-modules/lxml/default.nix
new file mode 100644
index 00000000000..fca4366e8a0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/lxml/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, libxml2
+, libxslt
+}:
+
+buildPythonPackage rec {
+ pname = "lxml";
+ version = "4.3.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "4a03dd682f8e35a10234904e0b9508d705ff98cf962c5851ed052e9340df3d90";
+ };
+
+ nativeBuildInputs = [ libxml2.dev libxslt.dev ];
+ propagatedBuildInputs = [ libxml2 libxslt ];
+
+ hardeningDisable = stdenv.lib.optional stdenv.isDarwin "format";
+
+ meta = {
+ description = "Pythonic binding for the libxml2 and libxslt libraries";
+ homepage = https://lxml.de;
+ license = stdenv.lib.licenses.bsd3;
+ maintainers = with stdenv.lib.maintainers; [ sjourdois ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/lzstring/default.nix b/nixpkgs/pkgs/development/python-modules/lzstring/default.nix
new file mode 100644
index 00000000000..cfd30082c1c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/lzstring/default.nix
@@ -0,0 +1,24 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, future
+}:
+
+buildPythonPackage rec {
+ pname = "lzstring";
+ version = "1.0.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "18ly9pppy2yspxzw7k1b23wk77k7m44rz2g0271bqgqrk3jn3yhs";
+ };
+
+ propagatedBuildInputs = [ future ];
+
+ meta = {
+ description = "lz-string for python";
+ homepage = https://github.com/gkovacs/lz-string-python;
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ obadz ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/m2crypto/default.nix b/nixpkgs/pkgs/development/python-modules/m2crypto/default.nix
new file mode 100644
index 00000000000..cd9781dbc88
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/m2crypto/default.nix
@@ -0,0 +1,46 @@
+{ stdenv
+, fetchpatch
+, buildPythonPackage
+, fetchPypi
+, swig2
+, openssl
+, typing
+}:
+
+
+buildPythonPackage rec {
+ version = "0.35.2";
+ pname = "M2Crypto";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "09yirf3w77w6f49q6nxhrjm9c3a4y9s30s1k09chqrw8zdgx8sjc";
+ };
+
+ patches = [
+ (fetchpatch {
+ url = "https://github.com/void-linux/void-packages/raw/7946d12eb3d815e5ecd4578f1a6133d948694370/srcpkgs/python-M2Crypto/patches/libressl.patch";
+ sha256 = "0z5qnkndg6ma5f5qqrid5m95i9kybsr000v3fdy1ab562kf65a27";
+ })
+ ];
+ patchFlags = "-p0";
+
+ nativeBuildInputs = [ swig2 ];
+ buildInputs = [ swig2 openssl ];
+
+ propagatedBuildInputs = [ typing ];
+
+ preConfigure = ''
+ substituteInPlace setup.py --replace "self.openssl = '/usr'" "self.openssl = '${openssl.dev}'"
+ '';
+
+ doCheck = false; # another test that depends on the network.
+
+ meta = with stdenv.lib; {
+ description = "A Python crypto and SSL toolkit";
+ homepage = https://gitlab.com/m2crypto/m2crypto;
+ license = licenses.mit;
+ maintainers = with maintainers; [ andrew-d ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/m2r/default.nix b/nixpkgs/pkgs/development/python-modules/m2r/default.nix
new file mode 100644
index 00000000000..612e2fd76b2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/m2r/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi,
+ mistune, docutils } :
+buildPythonPackage rec {
+ pname = "m2r";
+ version = "0.2.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "bf90bad66cda1164b17e5ba4a037806d2443f2a4d5ddc9f6a5554a0322aaed99";
+ };
+
+ propagatedBuildInputs = [ mistune docutils ];
+
+ # Some tests interfeere with each other (test.md and test.rst are
+ # deleted by some tests and not properly regenerated)
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/miyakogi/m2r;
+ description = "converts a markdown file including reST markups to a valid reST format";
+ license = licenses.mit;
+ maintainers = [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/macfsevents/default.nix b/nixpkgs/pkgs/development/python-modules/macfsevents/default.nix
new file mode 100644
index 00000000000..8dfa0038cdd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/macfsevents/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildPythonPackage, fetchPypi, CoreFoundation, CoreServices }:
+
+buildPythonPackage rec {
+ pname = "MacFSEvents";
+ version = "0.8.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1324b66b356051de662ba87d84f73ada062acd42b047ed1246e60a449f833e10";
+ };
+
+ buildInputs = [ CoreFoundation CoreServices ];
+
+ # Some tests fail under nix build directory
+ doCheck = false;
+
+ meta = with lib; {
+ homepage = https://github.com/malthe/macfsevents;
+ description = "Thread-based interface to file system observation primitives";
+ license = licenses.bsd2;
+ maintainers = [ maintainers.marsam ];
+ platforms = platforms.darwin;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/macropy/default.nix b/nixpkgs/pkgs/development/python-modules/macropy/default.nix
new file mode 100644
index 00000000000..952740d7837
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/macropy/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, python
+, isPy27
+, pinqSupport ? false, sqlalchemy
+, pyxlSupport ? false, pyxl3
+}:
+
+buildPythonPackage rec {
+ # https://github.com/lihaoyi/macropy/issues/94
+ version = "1.1.0b2";
+ pname = "macropy";
+ disabled = isPy27;
+
+ src = fetchFromGitHub {
+ owner = "lihaoyi";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "1bd2fzpa30ddva3f8lw2sbixxf069idwib8srd64s5v46ricm2cf";
+ };
+
+ # js_snippets extra only works with python2
+ propagatedBuildInputs = [ ]
+ ++ lib.optional pinqSupport sqlalchemy
+ ++ lib.optional pyxlSupport pyxl3;
+
+ checkPhase = ''
+ ${python.interpreter} run_tests.py
+ '';
+
+ meta = with lib; {
+ homepage = https://github.com/lihaoyi/macropy;
+ description = "Macros in Python: quasiquotes, case classes, LINQ and more";
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/magic-wormhole-mailbox-server/default.nix b/nixpkgs/pkgs/development/python-modules/magic-wormhole-mailbox-server/default.nix
new file mode 100644
index 00000000000..4347f07d9c2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/magic-wormhole-mailbox-server/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi, six, attrs, twisted, pyopenssl, service-identity, autobahn, treq, mock }:
+
+buildPythonPackage rec {
+ version = "0.3.1";
+ pname = "magic-wormhole-mailbox-server";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1q6zhbx8fcpk7rchclm7yqcxdsc1x97hki2ji61sa544r5xvxv55";
+ };
+
+ propagatedBuildInputs = [ six attrs twisted pyopenssl service-identity autobahn ];
+ checkInputs = [ treq mock ];
+
+ meta = with stdenv.lib; {
+ description = "Securely transfer data between computers";
+ homepage = https://github.com/warner/magic-wormhole-mailbox-server;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/magic-wormhole-transit-relay/default.nix b/nixpkgs/pkgs/development/python-modules/magic-wormhole-transit-relay/default.nix
new file mode 100644
index 00000000000..5ddece686fa
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/magic-wormhole-transit-relay/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildPythonPackage, fetchPypi, twisted, mock }:
+
+buildPythonPackage rec {
+ pname = "magic-wormhole-transit-relay";
+ version = "0.1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b13f1bfab295150b25958014d93fcd9f744d92011d186d7381575465587b8587";
+ };
+
+ propagatedBuildInputs = [ twisted ];
+
+ checkInputs = [ mock ];
+
+ checkPhase = ''
+ ${twisted}/bin/trial wormhole_transit_relay
+ '';
+
+ meta = with lib; {
+ description = "Transit Relay server for Magic-Wormhole";
+ homepage = https://github.com/warner/magic-wormhole-transit-relay;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/magic-wormhole/default.nix b/nixpkgs/pkgs/development/python-modules/magic-wormhole/default.nix
new file mode 100644
index 00000000000..532eeca07df
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/magic-wormhole/default.nix
@@ -0,0 +1,60 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, spake2
+, pynacl
+, six
+, attrs
+, twisted
+, autobahn
+, automat
+, hkdf
+, tqdm
+, click
+, humanize
+, txtorcon
+, nettools
+, glibcLocales
+, mock
+, magic-wormhole-transit-relay
+, magic-wormhole-mailbox-server
+}:
+
+buildPythonPackage rec {
+ pname = "magic-wormhole";
+ version = "0.11.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "01fr4bi6kc6fz9n3c4qq892inrc3nf6p2djy65yvm7xkvdxncydf";
+ };
+
+ buildInputs = [ glibcLocales ];
+ propagatedBuildInputs = [ spake2 pynacl six attrs twisted autobahn automat hkdf tqdm click humanize txtorcon ];
+ checkInputs = [ mock magic-wormhole-transit-relay magic-wormhole-mailbox-server ];
+
+ postPatch = ''
+ sed -i -e "s|'ifconfig'|'${nettools}/bin/ifconfig'|" src/wormhole/ipaddrs.py
+ '';
+
+ postInstall = ''
+ install -Dm644 docs/wormhole.1 $out/share/man/man1/wormhole.1
+ '';
+
+ preCheck = ''
+ export PATH=$out/bin:$PATH
+ export LANG="en_US.UTF-8"
+ export LC_ALL="en_US.UTF-8"
+ substituteInPlace src/wormhole/test/test_cli.py \
+ --replace 'getProcessOutputAndValue("locale", ["-a"])' 'getProcessOutputAndValue("locale", ["-a"], env=os.environ)' \
+ --replace 'if (os.path.dirname(os.path.abspath(wormhole))' 'if not os.path.abspath(wormhole).startswith("/nix/store") and (os.path.dirname(os.path.abspath(wormhole))' \
+ --replace 'locale_env = dict(LC_ALL=locale, LANG=locale)' 'locale_env = dict(LC_ALL=locale, LANG=locale, LOCALE_ARCHIVE=os.getenv("LOCALE_ARCHIVE"))'
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Securely transfer data between computers";
+ homepage = https://github.com/warner/magic-wormhole;
+ license = licenses.mit;
+ maintainers = with maintainers; [ asymmetric ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/magic/default.nix b/nixpkgs/pkgs/development/python-modules/magic/default.nix
new file mode 100644
index 00000000000..ee2c38fed53
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/magic/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, pkgs
+}:
+
+buildPythonPackage {
+ name = pkgs.file.name;
+
+ src = pkgs.file.src;
+
+ patchPhase = ''
+ substituteInPlace python/magic.py --replace "find_library('magic')" "'${pkgs.file}/lib/libmagic${stdenv.hostPlatform.extensions.sharedLibrary}'"
+ '';
+
+ buildInputs = [ pkgs.file ];
+
+ preConfigure = "cd python";
+
+ # No test suite
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A Python wrapper around libmagic";
+ homepage = http://www.darwinsys.com/file/;
+ license = licenses.lgpl2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mahotas/default.nix b/nixpkgs/pkgs/development/python-modules/mahotas/default.nix
new file mode 100644
index 00000000000..101468da09f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mahotas/default.nix
@@ -0,0 +1,33 @@
+{ buildPythonPackage, fetchFromGitHub, nose, pillow, scipy, numpy, imread, stdenv }:
+
+buildPythonPackage rec {
+ pname = "mahotas";
+ version = "1.4.7";
+
+ src = fetchFromGitHub {
+ owner = "luispedro";
+ repo = "mahotas";
+ rev = "v${version}";
+ sha256 = "1a3nzxb7is8n7lpxwq1fw3fr03qflig334rb1zzr2znjrhq6g94b";
+ };
+
+ # remove this as soon as https://github.com/luispedro/mahotas/issues/97 is fixed
+ patches = [ ./disable-impure-tests.patch ];
+
+ propagatedBuildInputs = [ numpy imread pillow scipy ];
+ checkInputs = [ nose ];
+
+ checkPhase= ''
+ python setup.py test
+ '';
+
+ disabled = stdenv.isi686; # Failing tests
+
+ meta = with stdenv.lib; {
+ description = "Computer vision package based on numpy";
+ homepage = http://mahotas.readthedocs.io/;
+ maintainers = with maintainers; [ luispedro ];
+ license = licenses.mit;
+ platforms = platforms.unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mahotas/disable-impure-tests.patch b/nixpkgs/pkgs/development/python-modules/mahotas/disable-impure-tests.patch
new file mode 100644
index 00000000000..f19bd329e66
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mahotas/disable-impure-tests.patch
@@ -0,0 +1,76 @@
+diff --git a/mahotas/tests/test_colors.py b/mahotas/tests/test_colors.py
+index 8a8183b..0d34c9f 100644
+--- a/mahotas/tests/test_colors.py
++++ b/mahotas/tests/test_colors.py
+@@ -2,7 +2,9 @@ import mahotas
+ import numpy as np
+ from mahotas.tests.utils import luispedro_jpg
+ from mahotas.colors import rgb2xyz, rgb2lab, xyz2rgb, rgb2grey, rgb2sepia
++from nose.tools import nottest
+
++@nottest
+ def test_colors():
+ f = luispedro_jpg()
+ lab = rgb2lab(f)
+diff --git a/mahotas/tests/test_features_shape.py b/mahotas/tests/test_features_shape.py
+index 462f467..2381793 100644
+--- a/mahotas/tests/test_features_shape.py
++++ b/mahotas/tests/test_features_shape.py
+@@ -2,6 +2,7 @@ import mahotas.features.shape
+ import numpy as np
+ import mahotas as mh
+ from mahotas.features.shape import roundness, eccentricity
++from nose.tools import nottest
+
+ def test_eccentricity():
+ D = mh.disk(32, 2)
+@@ -29,6 +30,7 @@ def test_zeros():
+ I[8:4:12] = 1
+ assert eccentricity(I) == 0
+
++@nottest
+ def test_ellipse_axes():
+ Y,X = np.mgrid[:1024,:1024]
+ Y = Y/1024.
+diff --git a/mahotas/tests/test_moments.py b/mahotas/tests/test_moments.py
+index 686c7c3..ba3487b 100644
+--- a/mahotas/tests/test_moments.py
++++ b/mahotas/tests/test_moments.py
+@@ -1,6 +1,7 @@
+ import numpy as np
+ import mahotas as mh
+ from mahotas.features.moments import moments
++from nose.tools import nottest
+
+ def _slow(A, p0, p1, cm):
+ c0,c1 = cm
+@@ -28,7 +29,7 @@ def test_against_slow():
+ yield perform, 1, 2, (0, 0), A
+ yield perform, 1, 0, (0, 0), A
+
+-
++@nottest
+ def test_normalize():
+ A,B = np.meshgrid(np.arange(128),np.arange(128))
+ for p0,p1 in [(1,1), (1,2), (2,1), (2,2)]:
+diff --git a/mahotas/tests/test_texture.py b/mahotas/tests/test_texture.py
+index 7e101ba..af1305d 100644
+--- a/mahotas/tests/test_texture.py
++++ b/mahotas/tests/test_texture.py
+@@ -2,7 +2,7 @@ import numpy as np
+ from mahotas.features import texture
+ import mahotas as mh
+ import mahotas.features._texture
+-from nose.tools import raises
++from nose.tools import raises, nottest
+
+ def test__cooccurence():
+ cooccurence = mahotas.features._texture.cooccurence
+@@ -149,6 +149,7 @@ def test_float_haralick():
+ A[2,2]=12
+ texture.haralick(A)
+
++@nottest
+ def test_haralick3d():
+ np.random.seed(22)
+ img = mahotas.stretch(255*np.random.rand(20,20,4))
diff --git a/nixpkgs/pkgs/development/python-modules/mail-parser/default.nix b/nixpkgs/pkgs/development/python-modules/mail-parser/default.nix
new file mode 100644
index 00000000000..1f06f7f250a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mail-parser/default.nix
@@ -0,0 +1,41 @@
+{ lib, buildPythonPackage, python, pythonOlder, glibcLocales, fetchFromGitHub, ipaddress, six, simplejson }:
+
+buildPythonPackage rec {
+ pname = "mail-parser";
+ version = "3.9.3";
+
+ # no tests in PyPI tarball
+ src = fetchFromGitHub {
+ owner = "SpamScope";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "0v6hgsz6yvp6csgx4y440ksqj24rdsd06vyfqcihiy3dfvp9229y";
+ };
+
+ LC_ALL = "en_US.utf-8";
+
+ # ipaddress is part of the standard library of Python 3.3+
+ prePatch = lib.optionalString (!pythonOlder "3.3") ''
+ substituteInPlace requirements.txt \
+ --replace "ipaddress" ""
+ '';
+
+ nativeBuildInputs = [ glibcLocales ];
+ propagatedBuildInputs = [ simplejson six ] ++ lib.optional (pythonOlder "3.3") ipaddress;
+
+ # Taken from .travis.yml
+ checkPhase = ''
+ ${python.interpreter} tests/test_main.py
+ ${python.interpreter} -m mailparser -v
+ ${python.interpreter} -m mailparser -h
+ ${python.interpreter} -m mailparser -f tests/mails/mail_malformed_3 -j
+ cat tests/mails/mail_malformed_3 | ${python.interpreter} -m mailparser -k -j
+ '';
+
+ meta = with lib; {
+ description = "A mail parser for python 2 and 3";
+ homepage = https://github.com/SpamScope/mail-parser;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ psyanticy ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mailcap-fix/default.nix b/nixpkgs/pkgs/development/python-modules/mailcap-fix/default.nix
new file mode 100644
index 00000000000..886a3ed66b3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mailcap-fix/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy36
+}:
+
+buildPythonPackage rec {
+ pname = "mailcap-fix";
+ version = "1.0.1";
+ disabled = isPy36; # this fix is merged into python 3.6
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "02lijkq6v379r8zkqg9q2srin3i80m4wvwik3hcbih0s14v0ng0i";
+ };
+
+ meta = with stdenv.lib; {
+ description = "A patched mailcap module that conforms to RFC 1524";
+ homepage = "https://github.com/michael-lazar/mailcap_fix";
+ license = licenses.unlicense;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mailchimp/default.nix b/nixpkgs/pkgs/development/python-modules/mailchimp/default.nix
new file mode 100644
index 00000000000..b9640a4ab5d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mailchimp/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, docopt
+, requests
+}:
+
+buildPythonPackage rec {
+ version = "2.0.9";
+ pname = "mailchimp";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0351ai0jqv3dzx0xxm1138sa7mb42si6xfygl5ak8wnfc95ff770";
+ };
+
+ buildInputs = [ docopt ];
+ propagatedBuildInputs = [ requests ];
+ patchPhase = ''
+ sed -i 's/==/>=/' setup.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A CLI client and Python API library for the MailChimp email platform";
+ homepage = "http://apidocs.mailchimp.com/api/2.0/";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/maildir-deduplicate/default.nix b/nixpkgs/pkgs/development/python-modules/maildir-deduplicate/default.nix
new file mode 100644
index 00000000000..1a16e253f29
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/maildir-deduplicate/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy27
+, click
+}:
+
+buildPythonPackage rec {
+ pname = "maildir-deduplicate";
+ version = "2.1.0";
+ disabled = !isPy27;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "263c7f2c85dafe06eaa15e8d7ab83817204f70a5f08cc25a607f3f01ed130b42";
+ };
+
+ propagatedBuildInputs = [ click ];
+
+ meta = with stdenv.lib; {
+ description = "Command-line tool to deduplicate mails from a set of maildir folders";
+ homepage = "https://github.com/kdeldycke/maildir-deduplicate";
+ license = licenses.gpl2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mailman-hyperkitty/default.nix b/nixpkgs/pkgs/development/python-modules/mailman-hyperkitty/default.nix
new file mode 100644
index 00000000000..fd89260ab94
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mailman-hyperkitty/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, buildPythonPackage, fetchPypi, mailman, mock }:
+
+buildPythonPackage rec {
+ pname = "mailman-hyperkitty";
+ version = "1.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1lfqa9admhvdv71f528jmz2wl0i5cv77v6l64px2pm4zqr9ckkjx";
+ };
+
+ propagatedBuildInputs = [ mailman ];
+ checkInputs = [ mock ];
+
+ checkPhase = ''
+ python -m nose2 -v
+ '';
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Mailman archiver plugin for HyperKitty";
+ homepage = https://gitlab.com/mailman/mailman-hyperkitty;
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ globin peti ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mailman-rss/default.nix b/nixpkgs/pkgs/development/python-modules/mailman-rss/default.nix
new file mode 100644
index 00000000000..afce4521d5b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mailman-rss/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, python3Packages, withTwitter ? false}:
+
+python3Packages.buildPythonApplication rec {
+ pname = "mailman-rss";
+ version = "0.2.4";
+
+ src = python3Packages.fetchPypi {
+ inherit pname version;
+ sha256 = "1brrik70jyagxa9l0cfmlxvqpilwj1q655bphxnvjxyganxf4c00";
+ };
+
+ propagatedBuildInputs = with python3Packages; [ dateutil future requests beautifulsoup4 ]
+ ++ stdenv.lib.optional withTwitter python3Packages.twitter
+ ;
+
+ # No tests in Pypi Tarball
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Mailman archive -> rss converter";
+ homepage = https://github.com/kyamagu/mailman-rss;
+ license = licenses.mit;
+ maintainers = with maintainers; [ samueldr ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mailmanclient/default.nix b/nixpkgs/pkgs/development/python-modules/mailmanclient/default.nix
new file mode 100644
index 00000000000..95e9e4fdd3e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mailmanclient/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi, six, httplib2 }:
+
+buildPythonPackage rec {
+ pname = "mailmanclient";
+ version = "3.2.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0xsrzdrsmfhnxv68zwm1g6awk7in08k6yhkyd27ipn0mq1wjm5jd";
+ };
+
+ propagatedBuildInputs = [ six httplib2 ];
+
+ meta = with stdenv.lib; {
+ homepage = "http://www.gnu.org/software/mailman/";
+ description = "REST client for driving Mailman 3";
+ license = licenses.lgpl3;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ peti globin ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/manhole/default.nix b/nixpkgs/pkgs/development/python-modules/manhole/default.nix
new file mode 100644
index 00000000000..c8b77e9668f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/manhole/default.nix
@@ -0,0 +1,47 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, requests
+, process-tests
+}:
+
+buildPythonPackage rec {
+ pname = "manhole";
+ version = "1.6.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d4ab98198481ed54a5b95c0439f41131f56d7d3755eedaedce5a45ca7ff4aa42";
+ };
+
+ # test_help expects architecture-dependent Linux signal numbers.
+ #
+ # {test_locals,test_socket_path} fail to remove /tmp/manhole-socket
+ # on the x86_64-darwin builder.
+ #
+ # TODO: change this back to `doCheck = stdenv.isLinux` after
+ # https://github.com/ionelmc/python-manhole/issues/54 is fixed
+ doCheck = false;
+
+ checkInputs = [ pytest requests process-tests ];
+ checkPhase = ''
+ # Based on its tox.ini
+ export PYTHONUNBUFFERED=yes
+ export PYTHONPATH=.:tests:$PYTHONPATH
+
+ # The tests use manhole-cli
+ export PATH="$PATH:$out/bin"
+
+ # test_uwsgi fails with:
+ # http.client.RemoteDisconnected: Remote end closed connection without response
+ py.test -vv -k "not test_uwsgi"
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/ionelmc/python-manhole;
+ description = "Debugging manhole for Python applications";
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ ivan ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/manuel/default.nix b/nixpkgs/pkgs/development/python-modules/manuel/default.nix
new file mode 100644
index 00000000000..f9fa3a090eb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/manuel/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+, zope_testing
+}:
+
+buildPythonPackage rec {
+ pname = "manuel";
+ version = "1.10.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1bdzay7j70fly5fy6wbdi8fbrxjrrlxnxnw226rwry1c8a351rpy";
+ };
+
+ propagatedBuildInputs = [ six ];
+ checkInputs = [ zope_testing ];
+
+ meta = with stdenv.lib; {
+ description = "A documentation builder";
+ homepage = https://pypi.python.org/pypi/manuel;
+ license = licenses.zpl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mapsplotlib/default.nix b/nixpkgs/pkgs/development/python-modules/mapsplotlib/default.nix
new file mode 100644
index 00000000000..a046cfd9610
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mapsplotlib/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, isPy3k
+, fetchPypi
+, matplotlib
+, scipy
+, pandas
+, requests
+, pillow
+}:
+
+buildPythonPackage rec {
+ pname = "mapsplotlib";
+ version = "1.1.2";
+
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "99ff773a298bdf0f3185a4c7ac20677a843df818583b368925dcf766cd99f09a";
+ };
+
+ propagatedBuildInputs = [ matplotlib scipy pandas requests pillow ];
+
+ meta = with stdenv.lib; {
+ description = "Custom Python plots on a Google Maps background";
+ homepage = https://github.com/tcassou/mapsplotlib;
+ license = licenses.mit;
+ maintainers = [ maintainers.rob ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/marionette-harness/default.nix b/nixpkgs/pkgs/development/python-modules/marionette-harness/default.nix
new file mode 100644
index 00000000000..ff1a6e49b01
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/marionette-harness/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, mozprofile
+, mozversion
+, moztest
+, manifestparser
+, marionette_driver
+, browsermob-proxy
+, wptserve
+}:
+
+buildPythonPackage rec {
+ pname = "marionette-harness";
+ version = "4.5.0";
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "241c7f6032d01b0d78f5c0d13ea691935ddce9f8fce991319cc4fe860d61a7c4";
+ };
+
+ propagatedBuildInputs = [ mozprofile mozversion browsermob-proxy moztest
+ wptserve manifestparser marionette_driver ];
+
+ meta = {
+ description = "Mozilla Marionette protocol test automation harness";
+ homepage = https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette;
+ license = lib.licenses.mpl20;
+ maintainers = with lib.maintainers; [ raskin ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/marionette-harness/manifestparser.nix b/nixpkgs/pkgs/development/python-modules/marionette-harness/manifestparser.nix
new file mode 100644
index 00000000000..7316526aa28
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/marionette-harness/manifestparser.nix
@@ -0,0 +1,26 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "manifestparser";
+ version = "1.1";
+
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "06cnj682ynacwpi63k1427vbf7ydnwh3dchc4b11yw8ii25wbc5d";
+ };
+
+ propagatedBuildInputs = [ ];
+
+ meta = {
+ description = "Mozilla test manifest handling";
+ homepage = https://wiki.mozilla.org/Auto-tools/Projects/Mozbase;
+ license = lib.licenses.mpl20;
+ maintainers = with lib.maintainers; [ raskin ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/marionette-harness/marionette_driver.nix b/nixpkgs/pkgs/development/python-modules/marionette-harness/marionette_driver.nix
new file mode 100644
index 00000000000..b6d761f077c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/marionette-harness/marionette_driver.nix
@@ -0,0 +1,27 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, mozversion
+, mozrunner
+}:
+
+buildPythonPackage rec {
+ pname = "marionette_driver";
+ version = "2.7.0";
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "15c77ba548847dc05ce1b663a22c3324623f217dce5a859c3aaced31fd16707b";
+ };
+
+ propagatedBuildInputs = [ mozversion mozrunner ];
+
+ meta = {
+ description = "Mozilla Marionette driver";
+ homepage = https://wiki.mozilla.org/Auto-tools/Projects/Marionette;
+ license = lib.licenses.mpl20;
+ maintainers = with lib.maintainers; [ raskin ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/marionette-harness/mozcrash.nix b/nixpkgs/pkgs/development/python-modules/marionette-harness/mozcrash.nix
new file mode 100644
index 00000000000..3f7710acb3c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/marionette-harness/mozcrash.nix
@@ -0,0 +1,25 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, mozfile
+, mozlog
+}:
+
+buildPythonPackage rec {
+ pname = "mozcrash";
+ version = "1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "02101v6v2jqlv6cbrmmggj12asz9vz6m50b6mk9mq17b1dr1zik3";
+ };
+
+ propagatedBuildInputs = [ mozfile mozlog ];
+
+ meta = {
+ description = "Minidump stack trace extractor";
+ homepage = https://wiki.mozilla.org/Auto-tools/Projects/Mozbase;
+ license = lib.licenses.mpl20;
+ maintainers = with lib.maintainers; [ raskin ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/marionette-harness/mozdevice.nix b/nixpkgs/pkgs/development/python-modules/marionette-harness/mozdevice.nix
new file mode 100644
index 00000000000..02da75bfd96
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/marionette-harness/mozdevice.nix
@@ -0,0 +1,25 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, moznetwork
+, mozprocess
+}:
+
+buildPythonPackage rec {
+ pname = "mozdevice";
+ version = "1.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0026241bff3ad10a73fe24eb4f59c1313c94e5950f397b2f6b8cc4e4dfbfdd73";
+ };
+
+ propagatedBuildInputs = [ moznetwork mozprocess ];
+
+ meta = {
+ description = "Mozilla-authored device management";
+ homepage = https://wiki.mozilla.org/Auto-tools/Projects/Mozbase;
+ license = lib.licenses.mpl20;
+ maintainers = with lib.maintainers; [ raskin ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/marionette-harness/mozfile.nix b/nixpkgs/pkgs/development/python-modules/marionette-harness/mozfile.nix
new file mode 100644
index 00000000000..34350dd4821
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/marionette-harness/mozfile.nix
@@ -0,0 +1,26 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "mozfile";
+ version = "1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0mz941np62mg0zncy74d8fbq9fafsxjsxlwdsydl92badhrhzc6k";
+ };
+
+ propagatedBuildInputs = [ ];
+
+ # mozhttpd -> moznetwork -> mozinfo -> mozfile
+ doCheck = false;
+
+ meta = {
+ description = "File utilities for Mozilla testing";
+ homepage = https://wiki.mozilla.org/Auto-tools/Projects/Mozbase;
+ license = lib.licenses.mpl20;
+ maintainers = with lib.maintainers; [ raskin ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/marionette-harness/mozhttpd.nix b/nixpkgs/pkgs/development/python-modules/marionette-harness/mozhttpd.nix
new file mode 100644
index 00000000000..6862967e420
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/marionette-harness/mozhttpd.nix
@@ -0,0 +1,24 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, moznetwork
+}:
+
+buildPythonPackage rec {
+ pname = "mozhttpd";
+ version = "0.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "10y1cr933ajx9ni701ayb7r361pak9wrzr7pdpyx81kkbjddq7qa";
+ };
+
+ propagatedBuildInputs = [ moznetwork ];
+
+ meta = {
+ description = "Webserver for Mozilla testing";
+ homepage = https://wiki.mozilla.org/Auto-tools/Projects/Mozbase;
+ license = lib.licenses.mpl20;
+ maintainers = with lib.maintainers; [ raskin ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/marionette-harness/mozinfo.nix b/nixpkgs/pkgs/development/python-modules/marionette-harness/mozinfo.nix
new file mode 100644
index 00000000000..d44dc108ff3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/marionette-harness/mozinfo.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, mozfile
+}:
+
+buildPythonPackage rec {
+ pname = "mozinfo";
+ version = "0.10";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "dcd53a1b1793340418e1ae42bf300e3e56d8f12047972378c6f9318b220b1023";
+ };
+
+ disabled = isPy3k;
+
+ propagatedBuildInputs = [ mozfile ];
+
+ meta = with stdenv.lib; {
+ description = "System information utilities for Mozilla testing";
+ homepage = https://wiki.mozilla.org/Auto-tools/Projects/Mozbase;
+ license = licenses.mpl20;
+ maintainers = with maintainers; [ raskin ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/marionette-harness/mozlog.nix b/nixpkgs/pkgs/development/python-modules/marionette-harness/mozlog.nix
new file mode 100644
index 00000000000..b8d0c077d66
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/marionette-harness/mozlog.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, blessings
+, mozterm
+, six
+, mozfile
+}:
+
+buildPythonPackage rec {
+ pname = "mozlog";
+ version = "3.8";
+
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "00x28z6diw06gakb5isbfha5z2n63yyncv4za303nsgzxvlihmx0";
+ };
+
+ propagatedBuildInputs = [ blessings mozterm six ];
+
+ checkInputs = [ mozfile ];
+
+ meta = {
+ description = "Mozilla logging library";
+ homepage = https://wiki.mozilla.org/Auto-tools/Projects/Mozbase;
+ license = lib.licenses.mpl20;
+ maintainers = with lib.maintainers; [ raskin ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/marionette-harness/moznetwork.nix b/nixpkgs/pkgs/development/python-modules/marionette-harness/moznetwork.nix
new file mode 100644
index 00000000000..3901f7c310d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/marionette-harness/moznetwork.nix
@@ -0,0 +1,25 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, mozlog
+, mozinfo
+}:
+
+buildPythonPackage rec {
+ pname = "moznetwork";
+ version = "0.27";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "09ypx5wif0mly6fk3491nlzg8whg6qw24x7h9w70hykdqindbh2s";
+ };
+
+ propagatedBuildInputs = [ mozlog mozinfo ];
+
+ meta = {
+ description = "Network utilities for Mozilla testing";
+ homepage = https://wiki.mozilla.org/Auto-tools/Projects/Mozbase;
+ license = lib.licenses.mpl20;
+ maintainers = with lib.maintainers; [ raskin ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/marionette-harness/mozprocess.nix b/nixpkgs/pkgs/development/python-modules/marionette-harness/mozprocess.nix
new file mode 100644
index 00000000000..e8130e8038f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/marionette-harness/mozprocess.nix
@@ -0,0 +1,24 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, mozinfo
+}:
+
+buildPythonPackage rec {
+ pname = "mozprocess";
+ version = "0.26";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "9f471c45bee9ff14e936c6ee216a6cc4941223659c01fa626bce628001d8485c";
+ };
+
+ propagatedBuildInputs = [ mozinfo ];
+
+ meta = {
+ description = "Mozilla-authored process handling";
+ homepage = https://wiki.mozilla.org/Auto-tools/Projects/Mozbase;
+ license = lib.licenses.mpl20;
+ maintainers = with lib.maintainers; [ raskin ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/marionette-harness/mozprofile.nix b/nixpkgs/pkgs/development/python-modules/marionette-harness/mozprofile.nix
new file mode 100644
index 00000000000..3620248904c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/marionette-harness/mozprofile.nix
@@ -0,0 +1,26 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, mozlog
+, mozfile
+, mozhttpd
+}:
+
+buildPythonPackage rec {
+ pname = "mozprofile";
+ version = "1.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "aa7fe7248719a224dd63cdc0498c9971d07cfc62fee7a69f51d593316b6bc1d8";
+ };
+
+ propagatedBuildInputs = [ mozlog mozfile mozhttpd ];
+
+ meta = {
+ description = "Mozilla application profile handling library";
+ homepage = https://wiki.mozilla.org/Auto-tools/Projects/Mozbase;
+ license = lib.licenses.mpl20;
+ maintainers = with lib.maintainers; [ raskin ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/marionette-harness/mozrunner.nix b/nixpkgs/pkgs/development/python-modules/marionette-harness/mozrunner.nix
new file mode 100644
index 00000000000..ac8631362fb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/marionette-harness/mozrunner.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, mozdevice
+, mozfile
+, mozinfo
+, mozlog
+, mozprocess
+, mozprofile
+, mozcrash
+}:
+
+buildPythonPackage rec {
+ pname = "mozrunner";
+ version = "7.0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8034898a36fece171b52e25792f64011e761e5aa694cd67fb6a19c12cb3fa978";
+ };
+
+ propagatedBuildInputs = [ mozdevice mozfile mozinfo mozlog mozprocess
+ mozprofile mozcrash ];
+
+ meta = {
+ description = "Mozilla application start/stop helpers";
+ homepage = https://wiki.mozilla.org/Auto-tools/Projects/Mozbase;
+ license = lib.licenses.mpl20;
+ maintainers = with lib.maintainers; [ raskin ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/marionette-harness/moztest.nix b/nixpkgs/pkgs/development/python-modules/marionette-harness/moztest.nix
new file mode 100644
index 00000000000..2ff50e1fa92
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/marionette-harness/moztest.nix
@@ -0,0 +1,24 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, mozinfo
+}:
+
+buildPythonPackage rec {
+ pname = "moztest";
+ version = "0.8";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1pg9pqq4xnn14k1jqbyqg81zag2v66y725537v6hixi41yiqkdas";
+ };
+
+ propagatedBuildInputs = [ mozinfo ];
+
+ meta = {
+ description = "Mozilla test result storage and output";
+ homepage = https://wiki.mozilla.org/Auto-tools/Projects/Mozbase;
+ license = lib.licenses.mpl20;
+ maintainers = with lib.maintainers; [ raskin ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/marionette-harness/mozversion.nix b/nixpkgs/pkgs/development/python-modules/marionette-harness/mozversion.nix
new file mode 100644
index 00000000000..dbe3cb4bc2d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/marionette-harness/mozversion.nix
@@ -0,0 +1,25 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, mozlog
+, mozdevice
+}:
+
+buildPythonPackage rec {
+ pname = "mozversion";
+ version = "1.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "e9b11e4a46bf7a4a11469ea4589c75f3ba50b34b7801e7edf1a09147af8bf70f";
+ };
+
+ propagatedBuildInputs = [ mozlog mozdevice ];
+
+ meta = {
+ description = "Application version information library";
+ homepage = https://wiki.mozilla.org/Auto-tools/Projects/Mozbase;
+ license = lib.licenses.mpl20;
+ maintainers = with lib.maintainers; [ raskin ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/marisa-trie/default.nix b/nixpkgs/pkgs/development/python-modules/marisa-trie/default.nix
new file mode 100644
index 00000000000..71be4f5726d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/marisa-trie/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytestrunner
+, pytest
+, hypothesis
+}:
+
+buildPythonPackage rec {
+ pname = "marisa-trie";
+ version = "0.7.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c73bc25d868e8c4ea7aa7f1e19892db07bba2463351269b05340ccfa06eb2baf";
+ };
+
+ postPatch = ''
+ substituteInPlace setup.py \
+ --replace "hypothesis==" "hypothesis>="
+ '';
+
+ nativeBuildInputs = [ pytestrunner ];
+
+ checkInputs = [ pytest hypothesis ];
+
+ meta = with lib; {
+ description = "Static memory-efficient Trie-like structures for Python (2.x and 3.x) based on marisa-trie C++ library";
+ longDescription = "There are official SWIG-based Python bindings included in C++ library distribution; this package provides alternative Cython-based pip-installable Python bindings.";
+ homepage = https://github.com/kmike/marisa-trie;
+ license = licenses.mit;
+ maintainers = with maintainers; [ ixxie ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/marisa/default.nix b/nixpkgs/pkgs/development/python-modules/marisa/default.nix
new file mode 100644
index 00000000000..006e3a9051b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/marisa/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, 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 stdenv.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/nixpkgs/pkgs/development/python-modules/markdown-macros/default.nix b/nixpkgs/pkgs/development/python-modules/markdown-macros/default.nix
new file mode 100644
index 00000000000..98dce913046
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/markdown-macros/default.nix
@@ -0,0 +1,40 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, fetchpatch
+, markdown
+}:
+
+buildPythonPackage rec {
+ pname = "markdown-macros";
+ version = "0.1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1lzvrb7nci22yp21ab2qqc9p0fhkazqj29vw0wln2r4ckb2nbawv";
+ };
+
+ patches = [
+ # Fixes a bug with markdown>2.4
+ (fetchpatch {
+ url = "https://github.com/wnielson/markdown-macros/pull/1.patch";
+ sha256 = "17njbgq2srzkf03ar6yn92frnsbda3g45cdi529fdh0x8mmyxci0";
+ })
+ ];
+
+ prePatch = ''
+ substituteInPlace setup.py --replace "distribute" "setuptools"
+ '';
+
+ propagatedBuildInputs = [ markdown ];
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "An extension for python-markdown that makes writing trac-like macros easy";
+ homepage = https://github.com/wnielson/markdown-macros;
+ license = licenses.mit;
+ maintainers = [ maintainers.abigailbuccaneer ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/markdown/default.nix b/nixpkgs/pkgs/development/python-modules/markdown/default.nix
new file mode 100644
index 00000000000..1438391dc40
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/markdown/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, setuptools
+, nose
+, pyyaml
+}:
+
+buildPythonPackage rec {
+ pname = "Markdown";
+ version = "3.1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2e50876bcdd74517e7b71f3e7a76102050edec255b3983403f1a63e7c8a41e7a";
+ };
+
+ propagatedBuildInputs = [ setuptools ];
+
+ 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/nixpkgs/pkgs/development/python-modules/markdown2/default.nix b/nixpkgs/pkgs/development/python-modules/markdown2/default.nix
new file mode 100644
index 00000000000..a07e0b14fdc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/markdown2/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "markdown2";
+ version = "2.3.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "08a124043aa0ad36ba2136239547d5011a2b770278abb11a5609611e0040ea05";
+ };
+
+ meta = with stdenv.lib; {
+ description = "A fast and complete Python implementation of Markdown";
+ homepage = https://github.com/trentm/python-markdown2;
+ license = licenses.mit;
+ maintainers = with maintainers; [ hbunke ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/markdownsuperscript/default.nix b/nixpkgs/pkgs/development/python-modules/markdownsuperscript/default.nix
new file mode 100644
index 00000000000..1212651aec8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/markdownsuperscript/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, buildPythonPackage, fetchPypi, markdown,
+ pytest, pytestrunner, pytestcov, coverage }:
+
+buildPythonPackage rec {
+ pname = "MarkdownSuperscript";
+ version = "2.1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2c255b5959c1f5dd364ae80762bd0a568a0fcc9fd4e4a3d7e7b192e88adf8900";
+ };
+
+ propagatedBuildInputs = [ markdown ];
+
+ postPatch = ''
+ # remove version bounds for Markdown dependency
+ sed 's/\["Markdown.*"\]/["Markdown"]/' -i setup.py
+
+ # remove version bounds for test dependencies
+ sed 's/=.*//' -i requirements/*.txt
+ '';
+
+ checkInputs = [ pytest pytestrunner pytestcov coverage ];
+
+ meta = {
+ description = "An extension to the Python Markdown package enabling superscript text";
+ homepage = https://github.com/jambonrose/markdown_superscript_extension;
+ license = stdenv.lib.licenses.bsd2;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/markerlib/default.nix b/nixpkgs/pkgs/development/python-modules/markerlib/default.nix
new file mode 100644
index 00000000000..640b11a6f28
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/markerlib/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, setuptools
+, nose
+}:
+
+buildPythonPackage rec {
+ version = "0.6.0";
+ pname = "markerlib";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2fdb3939441f5bf4f090b1979a34f84a11d33eed6c0e3995de88ae5c06b6e3ae";
+ };
+
+ buildInputs = [ setuptools ];
+ checkInputs = [ nose ];
+
+ checkPhase = ''
+ nosetests
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://bitbucket.org/dholth/markerlib/;
+ description = "A compiler for PEP 345 environment markers";
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/markupsafe/default.nix b/nixpkgs/pkgs/development/python-modules/markupsafe/default.nix
new file mode 100644
index 00000000000..d15aa82c3a9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/markupsafe/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "MarkupSafe";
+ version = "1.1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b";
+ };
+
+ meta = with stdenv.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/nixpkgs/pkgs/development/python-modules/marshmallow-sqlalchemy/default.nix b/nixpkgs/pkgs/development/python-modules/marshmallow-sqlalchemy/default.nix
new file mode 100644
index 00000000000..22f9b445d24
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/marshmallow-sqlalchemy/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildPythonPackage, fetchPypi,
+ marshmallow, sqlalchemy
+}:
+
+buildPythonPackage rec {
+ pname = "marshmallow-sqlalchemy";
+ version = "0.17.0";
+
+ meta = {
+ homepage = "https://github.com/marshmallow-code/marshmallow-sqlalchemy";
+ description = "SQLAlchemy integration with marshmallow ";
+ license = lib.licenses.mit;
+ };
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "17pnbv28n9vy3q66ckxfdbb9k1riy6s8lg63zfm5jsx00f0zqqnn";
+ };
+
+ propagatedBuildInputs = [ marshmallow sqlalchemy ];
+
+ doCheck = false;
+}
diff --git a/nixpkgs/pkgs/development/python-modules/marshmallow/default.nix b/nixpkgs/pkgs/development/python-modules/marshmallow/default.nix
new file mode 100644
index 00000000000..513c277bcac
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/marshmallow/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildPythonPackage, fetchPypi,
+ dateutil, simplejson
+}:
+
+buildPythonPackage rec {
+ pname = "marshmallow";
+ version = "2.18.1";
+
+ meta = {
+ homepage = "https://github.com/marshmallow-code/marshmallow";
+ description = ''
+ A lightweight library for converting complex objects to and from
+ simple Python datatypes.
+ '';
+ license = lib.licenses.mit;
+ };
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6eeaf1301a5f5942bfe8ab2c2eaf03feb793072b56d5fae563638bddd7bb62e6";
+ };
+
+ propagatedBuildInputs = [ dateutil simplejson ];
+
+ doCheck = false;
+}
diff --git a/nixpkgs/pkgs/development/python-modules/matchpy/default.nix b/nixpkgs/pkgs/development/python-modules/matchpy/default.nix
new file mode 100644
index 00000000000..2a0544cf6d8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/matchpy/default.nix
@@ -0,0 +1,49 @@
+{ lib
+, buildPythonPackage
+, fetchpatch
+, fetchPypi
+, hopcroftkarp
+, multiset
+, pytest
+, pytestrunner
+, hypothesis
+, setuptools_scm
+, isPy27
+}:
+
+buildPythonPackage rec {
+ pname = "matchpy";
+ version = "0.5.1";
+ disabled = isPy27;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1vvf1cd9kw5z1mzvypc9f030nd18lgvvjc8j56b1s9b7dyslli2r";
+ };
+
+ patches = [
+ # Fix tests for pytest 4. Remove with the next release
+ (fetchpatch {
+ url = "https://github.com/HPAC/matchpy/commit/b405a2717a7793d58c47b2e2197d9d00c06fb13c.patch";
+ includes = [ "tests/conftest.py" ];
+ sha256 = "1b6gqf2vy9qxg384nqr9k8il335afhbdmlyx4vhd8r8rqpv7gax9";
+ })
+ ];
+
+ postPatch = ''
+ substituteInPlace setup.cfg \
+ --replace "hypothesis>=3.6,<4.0" "hypothesis" \
+ --replace "pytest>=3.0,<4.0" "pytest"
+ '';
+
+ buildInputs = [ setuptools_scm pytestrunner ];
+ checkInputs = [ pytest hypothesis ];
+ propagatedBuildInputs = [ hopcroftkarp multiset ];
+
+ meta = with lib; {
+ description = "A library for pattern matching on symbolic expressions";
+ homepage = https://github.com/HPAC/matchpy;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mathics/default.nix b/nixpkgs/pkgs/development/python-modules/mathics/default.nix
new file mode 100644
index 00000000000..b20cc070909
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mathics/default.nix
@@ -0,0 +1,50 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, django
+, python
+, cython
+, sympy
+, ply
+, mpmath
+, dateutil
+, colorama
+, six
+, pexpect
+}:
+
+if (stdenv.lib.versionOlder django.version "1.8") ||
+ (stdenv.lib.versionAtLeast django.version "1.9")
+ then throw "mathics only supports django-1.8.x"
+ else buildPythonPackage rec {
+ pname = "mathics";
+ version = "0.9";
+
+ src = fetchFromGitHub {
+ owner = "mathics";
+ repo = "Mathics";
+ rev = "v${version}";
+ sha256 = "0xzz7j8xskj5y6as178mjmm0i2xbhd4q4mwmdnvghpd2aqq3qx1c";
+ };
+
+ buildInputs = [ pexpect ];
+
+ prePatch = ''
+ substituteInPlace setup.py --replace "sympy==0.7.6" "sympy"
+ '';
+
+ postFixup = ''
+ wrapPythonProgramsIn $out/bin $out
+ patchPythonScript $out/${python.sitePackages}/mathics/manage.py
+ '';
+
+ propagatedBuildInputs = [ cython sympy django ply mpmath dateutil colorama six ];
+
+ meta = with stdenv.lib; {
+ description = "A general-purpose computer algebra system";
+ homepage = http://www.mathics.org;
+ license = licenses.gpl3;
+ maintainers = [ maintainers.benley ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/matplotlib/2.nix b/nixpkgs/pkgs/development/python-modules/matplotlib/2.nix
new file mode 100644
index 00000000000..5a45b02a240
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/matplotlib/2.nix
@@ -0,0 +1,102 @@
+{ stdenv, fetchPypi, python, buildPythonPackage, pycairo, backports_functools_lru_cache
+, which, cycler, dateutil, nose, numpy, pyparsing, sphinx, tornado, kiwisolver
+, freetype, libpng, pkgconfig, mock, pytz, pygobject3, functools32, subprocess32
+, fetchpatch
+, enableGhostscript ? false, ghostscript ? null, gtk3
+, enableGtk2 ? false, pygtk ? null, gobject-introspection
+, enableGtk3 ? false, cairo
+# darwin has its own "MacOSX" backend
+, enableTk ? !stdenv.isDarwin, tcl ? null, tk ? null, tkinter ? null, libX11 ? null
+, enableQt ? false, pyqt4
+, libcxx
+, Cocoa
+, pythonOlder
+}:
+
+assert enableGhostscript -> ghostscript != null;
+assert enableGtk2 -> pygtk != null;
+assert enableTk -> (tcl != null)
+ && (tk != null)
+ && (tkinter != null)
+ && (libX11 != null)
+ ;
+assert enableQt -> pyqt4 != null;
+
+buildPythonPackage rec {
+ version = "2.2.3";
+ pname = "matplotlib";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "7355bf757ecacd5f0ac9dd9523c8e1a1103faadf8d33c22664178e17533f8ce5";
+ };
+
+ NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.isDarwin "-I${libcxx}/include/c++/v1";
+
+ XDG_RUNTIME_DIR = "/tmp";
+
+ nativeBuildInputs = [ pkgconfig ];
+
+ buildInputs = [ python which sphinx stdenv ]
+ ++ stdenv.lib.optional enableGhostscript ghostscript
+ ++ stdenv.lib.optional stdenv.isDarwin [ Cocoa ];
+
+ propagatedBuildInputs =
+ [ cycler dateutil nose numpy pyparsing tornado freetype kiwisolver
+ libpng mock pytz ]
+ ++ stdenv.lib.optional (pythonOlder "3.3") backports_functools_lru_cache
+ ++ stdenv.lib.optional enableGtk2 pygtk
+ ++ stdenv.lib.optionals enableGtk3 [ cairo pycairo gtk3 gobject-introspection pygobject3 ]
+ ++ stdenv.lib.optionals enableTk [ tcl tk tkinter libX11 ]
+ ++ stdenv.lib.optionals enableQt [ pyqt4 ]
+ ++ stdenv.lib.optionals python.isPy2 [ functools32 subprocess32 ];
+
+ patches = [
+ ./basedirlist.patch
+
+ # 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";
+ })
+ ];
+
+ # 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
+ inherit (stdenv.lib.strings) substring;
+ tcl_tk_cache = ''"${tk}/lib", "${tcl}/lib", "${substring 0 3 tk.version}"'';
+ in
+ stdenv.lib.optionalString enableTk
+ "sed -i '/self.tcl_tk_cache = None/s|None|${tcl_tk_cache}|' setupext.py";
+
+ checkPhase = ''
+ ${python.interpreter} tests.py
+ '';
+
+ # Test data is not included in the distribution (the `tests` folder
+ # is missing)
+ doCheck = false;
+
+ prePatch = ''
+ # Failing test: ERROR: matplotlib.tests.test_style.test_use_url
+ sed -i 's/test_use_url/fails/' lib/matplotlib/tests/test_style.py
+ # Failing test: ERROR: test suite for <class 'matplotlib.sphinxext.tests.test_tinypages.TestTinyPages'>
+ sed -i 's/TestTinyPages/fails/' lib/matplotlib/sphinxext/tests/test_tinypages.py
+ # Transient errors
+ sed -i 's/test_invisible_Line_rendering/noop/' lib/matplotlib/tests/test_lines.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Python plotting library, making publication quality plots";
+ homepage = "https://matplotlib.org/";
+ maintainers = with maintainers; [ lovek323 ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/matplotlib/basedirlist.patch b/nixpkgs/pkgs/development/python-modules/matplotlib/basedirlist.patch
new file mode 100644
index 00000000000..0a84a05bbae
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/matplotlib/basedirlist.patch
@@ -0,0 +1,8 @@
+diff --git a/setup.cfg b/setup.cfg
+new file mode 100644
+index 0000000..6f81985
+--- /dev/null
++++ b/setup.cfg
+@@ -0,0 +1,2 @@
++[directories]
++basedirlist = .
diff --git a/nixpkgs/pkgs/development/python-modules/matplotlib/default.nix b/nixpkgs/pkgs/development/python-modules/matplotlib/default.nix
new file mode 100644
index 00000000000..bb7e75449c8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/matplotlib/default.nix
@@ -0,0 +1,94 @@
+{ stdenv, fetchPypi, python, buildPythonPackage, isPy3k, pycairo, backports_functools_lru_cache
+, which, cycler, dateutil, nose, numpy, pyparsing, sphinx, tornado, kiwisolver
+, freetype, libpng, pkgconfig, mock, pytz, pygobject3
+, enableGhostscript ? true, ghostscript ? null, gtk3
+, enableGtk2 ? false, pygtk ? null, gobject-introspection
+, enableGtk3 ? false, cairo
+# darwin has its own "MacOSX" backend
+, enableTk ? !stdenv.isDarwin, tcl ? null, tk ? null, tkinter ? null, libX11 ? null
+, enableQt ? false, pyqt4
+, libcxx
+, Cocoa
+, pythonOlder
+}:
+
+assert enableGhostscript -> ghostscript != null;
+assert enableGtk2 -> pygtk != null;
+assert enableTk -> (tcl != null)
+ && (tk != null)
+ && (tkinter != null)
+ && (libX11 != null)
+ ;
+assert enableQt -> pyqt4 != null;
+
+buildPythonPackage rec {
+ version = "3.1.1";
+ pname = "matplotlib";
+
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1febd22afe1489b13c6749ea059d392c03261b2950d1d45c17e3aed812080c93";
+ };
+
+ NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.isDarwin "-I${libcxx}/include/c++/v1";
+
+ XDG_RUNTIME_DIR = "/tmp";
+
+ nativeBuildInputs = [ pkgconfig ];
+
+ buildInputs = [ python which sphinx stdenv ]
+ ++ stdenv.lib.optional enableGhostscript ghostscript
+ ++ stdenv.lib.optional stdenv.isDarwin [ Cocoa ];
+
+ propagatedBuildInputs =
+ [ cycler dateutil nose numpy pyparsing tornado freetype kiwisolver
+ libpng mock pytz ]
+ ++ stdenv.lib.optional (pythonOlder "3.3") backports_functools_lru_cache
+ ++ stdenv.lib.optional enableGtk2 pygtk
+ ++ stdenv.lib.optionals enableGtk3 [ cairo pycairo gtk3 gobject-introspection pygobject3 ]
+ ++ stdenv.lib.optionals enableTk [ tcl tk tkinter libX11 ]
+ ++ stdenv.lib.optionals enableQt [ pyqt4 ];
+
+ patches =
+ [ ./basedirlist.patch ];
+
+ # 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
+ inherit (stdenv.lib.strings) substring;
+ tcl_tk_cache = ''"${tk}/lib", "${tcl}/lib", "${substring 0 3 tk.version}"'';
+ in
+ stdenv.lib.optionalString enableTk
+ "sed -i '/self.tcl_tk_cache = None/s|None|${tcl_tk_cache}|' setupext.py";
+
+ checkPhase = ''
+ ${python.interpreter} tests.py
+ '';
+
+ # Test data is not included in the distribution (the `tests` folder
+ # is missing)
+ doCheck = false;
+
+ prePatch = ''
+ # Failing test: ERROR: matplotlib.tests.test_style.test_use_url
+ sed -i 's/test_use_url/fails/' lib/matplotlib/tests/test_style.py
+ # Failing test: ERROR: test suite for <class 'matplotlib.sphinxext.tests.test_tinypages.TestTinyPages'>
+ sed -i 's/TestTinyPages/fails/' lib/matplotlib/sphinxext/tests/test_tinypages.py
+ # Transient errors
+ sed -i 's/test_invisible_Line_rendering/noop/' lib/matplotlib/tests/test_lines.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Python plotting library, making publication quality plots";
+ homepage = "https://matplotlib.org/";
+ maintainers = with maintainers; [ lovek323 ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/matrix-client/default.nix b/nixpkgs/pkgs/development/python-modules/matrix-client/default.nix
new file mode 100644
index 00000000000..19c4baca8b2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/matrix-client/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, requests
+, pytest, pytestrunner, responses
+}:
+
+buildPythonPackage rec {
+ pname = "matrix_client";
+ version = "0.3.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1mgjd0ymf9mvqjkvgx3xjhxap7rzdmpa21wfy0cxbw2xcswcrqyw";
+ };
+
+ checkInputs = [ pytest pytestrunner responses ];
+
+ propagatedBuildInputs = [ requests ];
+
+ meta = with stdenv.lib; {
+ description = "Matrix Client-Server SDK";
+ homepage = https://github.com/matrix-org/matrix-python-sdk;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ olejorgenb ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mautrix-appservice/default.nix b/nixpkgs/pkgs/development/python-modules/mautrix-appservice/default.nix
new file mode 100644
index 00000000000..ba96e7d734b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mautrix-appservice/default.nix
@@ -0,0 +1,28 @@
+{ lib, buildPythonPackage, fetchPypi, aiohttp, future-fstrings, pythonOlder }:
+
+buildPythonPackage rec {
+ pname = "mautrix-appservice";
+ version = "0.3.11";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "60192920cff75afdd096eea3a43276e33ec15f4f00bd04d2d1dda616c84f22a5";
+ };
+
+ propagatedBuildInputs = [
+ aiohttp
+ future-fstrings
+ ];
+
+ # No tests available
+ doCheck = false;
+
+ disabled = pythonOlder "3.5";
+
+ meta = with lib; {
+ homepage = https://github.com/tulir/mautrix-appservice-python;
+ description = "A Python 3 asyncio-based Matrix application service framework";
+ license = licenses.mit;
+ maintainers = with maintainers; [ nyanloutre ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/maxminddb/default.nix b/nixpkgs/pkgs/development/python-modules/maxminddb/default.nix
new file mode 100644
index 00000000000..c24823d1812
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/maxminddb/default.nix
@@ -0,0 +1,26 @@
+{ buildPythonPackage, lib, fetchPypi
+, ipaddress
+, mock
+, nose
+}:
+
+buildPythonPackage rec {
+ version = "1.4.1";
+ pname = "maxminddb";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "04mpilsj76m29id5xfi8mmasdmh27ldn7r0dmh2rj6a8v2y5256z";
+ };
+
+ propagatedBuildInputs = [ ipaddress ];
+
+ checkInputs = [ nose mock ];
+
+ meta = with lib; {
+ description = "Reader for the MaxMind DB format";
+ homepage = "https://www.maxmind.com/en/home";
+ license = licenses.apsl20;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/maya/default.nix b/nixpkgs/pkgs/development/python-modules/maya/default.nix
new file mode 100644
index 00000000000..9c6cb241fea
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/maya/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchPypi, fetchpatch, buildPythonPackage
+, dateparser, humanize, pendulum, ruamel_yaml, tzlocal }:
+
+buildPythonPackage rec {
+ pname = "maya";
+ version = "0.3.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1x88k4irpckvd7jf2yvqjw1s52hjqbxym1r1d928yb3fkj7rvlxs";
+ };
+
+ patches = [
+ (fetchpatch {
+ # https://github.com/kennethreitz/maya/issues/112
+ # Merged, so should be in next release.
+ url = "https://github.com/kennethreitz/maya/commit/f69a93b1103130139cdec30511777823957fb659.patch";
+ sha256 = "152ba7amv9dhhx1wcklfalsdzsxggik9f7rsrikms921lq9xqc8h";
+ })
+ ];
+
+ propagatedBuildInputs = [ dateparser humanize pendulum ruamel_yaml tzlocal ];
+
+ # No tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Datetimes for Humans";
+ homepage = https://github.com/kennethreitz/maya;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mccabe/default.nix b/nixpkgs/pkgs/development/python-modules/mccabe/default.nix
new file mode 100644
index 00000000000..520e872c91e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mccabe/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytest, pytestrunner }:
+
+buildPythonPackage rec {
+ pname = "mccabe";
+ version = "0.6.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "07w3p1qm44hgxf3vvwz84kswpsx6s7kvaibzrsx5dzm0hli1i3fx";
+ };
+
+ buildInputs = [ pytest pytestrunner ];
+
+ meta = with stdenv.lib; {
+ description = "McCabe checker, plugin for flake8";
+ homepage = https://github.com/flintwork/mccabe;
+ license = licenses.mit;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mdp/default.nix b/nixpkgs/pkgs/development/python-modules/mdp/default.nix
new file mode 100644
index 00000000000..9fbaced9b65
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mdp/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytest, future, numpy }:
+
+buildPythonPackage rec {
+ pname = "MDP";
+ version = "3.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0aw1zxmyvx6gfmmnixbqmdaah28jl7rmqkzhxv53091asc23iw9k";
+ };
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ future numpy ];
+
+ # Tests disabled because of missing dependencies not in nix
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Library for building complex data processing software by combining widely used machine learning algorithms";
+ homepage = http://mdp-toolkit.sourceforge.net;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ nico202 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mecab-python3/default.nix b/nixpkgs/pkgs/development/python-modules/mecab-python3/default.nix
new file mode 100644
index 00000000000..df691fb05c8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mecab-python3/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, mecab
+, swig
+, setuptools_scm
+}:
+
+buildPythonPackage rec {
+ pname = "mecab-python3";
+ version = "0.996.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a80383fba343dad247b486a9afa486b7f0ec6244cb8bbf2d6a24d2fab5f19180";
+ };
+
+ nativeBuildInputs = [
+ mecab # for mecab-config
+ swig
+ setuptools_scm
+ ];
+
+ buildInputs = [ mecab ];
+
+ doCheck = false;
+
+ meta = with lib; {
+ description = "A python wrapper for mecab: Morphological Analysis engine";
+ homepage = https://github.com/SamuraiT/mecab-python3;
+ license = with licenses; [ gpl2 lgpl21 bsd3 ]; # any of the three
+ maintainers = with maintainers; [ ixxie ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mechanize/default.nix b/nixpkgs/pkgs/development/python-modules/mechanize/default.nix
new file mode 100644
index 00000000000..f23c3c9e20b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mechanize/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, html5lib
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "mechanize";
+ version = "0.4.2";
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b680ca1b4fabe5ef52024d120f40b8e2ed7d175ed4d67225d2c477dac7c7a58b";
+ };
+
+ propagatedBuildInputs = [ html5lib ];
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Stateful programmatic web browsing in Python";
+ homepage = http://wwwsearch.sourceforge.net/;
+ license = "BSD-style";
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/meinheld/default.nix b/nixpkgs/pkgs/development/python-modules/meinheld/default.nix
new file mode 100644
index 00000000000..526cd3ed4ee
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/meinheld/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchPypi, buildPythonPackage, greenlet }:
+
+buildPythonPackage rec {
+ pname = "meinheld";
+ version = "0.6.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0rg5878njn66cc0x2fwrakikz24946r0cxxl6j8vvz5phd4zygi9";
+ };
+
+ propagatedBuildInputs = [ greenlet ];
+
+ # No tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "High performance asynchronous Python WSGI Web Server";
+ homepage = http://meinheld.org/;
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/meld3/default.nix b/nixpkgs/pkgs/development/python-modules/meld3/default.nix
new file mode 100644
index 00000000000..018a634a43a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/meld3/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "meld3";
+ version = "1.0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0n4mkwlpsqnmn0dm0wm5hn9nkda0nafl0jdy5sdl5977znh59dzp";
+ };
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "An HTML/XML templating engine used by supervisor";
+ homepage = https://github.com/supervisor/meld3;
+ license = licenses.free;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/meliae/default.nix b/nixpkgs/pkgs/development/python-modules/meliae/default.nix
new file mode 100644
index 00000000000..b0cdbd60c3e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/meliae/default.nix
@@ -0,0 +1,41 @@
+{ stdenv
+, 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 stdenv.lib; {
+ description = "Python Memory Usage Analyzer";
+ homepage = https://launchpad.net/meliae;
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ xvapx ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/memcached/default.nix b/nixpkgs/pkgs/development/python-modules/memcached/default.nix
new file mode 100644
index 00000000000..854f7440daa
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/memcached/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, fetchPypi
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "memcached-1.51";
+ version = "1.51";
+
+ src = if isPy3k then fetchPypi {
+ inherit pname version;
+ sha256 = "0na8b369q8fivh3y0nvzbvhh3lgvxiyyv9xp93cnkvwfsr8mkgkw";
+ } else fetchurl {
+ url = "http://ftp.tummy.com/pub/python-memcached/old-releases/python-${pname}-${version}.tar.gz";
+ sha256 = "124s98m6hvxj6x90d7aynsjfz878zli771q96ns767r2mbqn7192";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Python API for communicating with the memcached distributed memory object cache daemon";
+ homepage = http://www.tummy.com/Community/software/python-memcached/;
+ license = licenses.psfl;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/memory_profiler/default.nix b/nixpkgs/pkgs/development/python-modules/memory_profiler/default.nix
new file mode 100644
index 00000000000..e0367e6c505
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/memory_profiler/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, python
+}:
+
+python.pkgs.buildPythonPackage rec {
+ pname = "memory_profiler";
+ version = "0.55.0";
+
+ src = python.pkgs.fetchPypi {
+ inherit pname version;
+ sha256 = "1hdgh5f59bya079w4ahx4l0hf4gc5yvaz44irp5x57cj9hkpp92z";
+ };
+
+ propagatedBuildInputs = with python.pkgs; [
+ psutil # needed to profile child processes
+ matplotlib # needed for plotting memory usage
+ ];
+
+ meta = with stdenv.lib; {
+ description = "A module for monitoring memory usage of a process";
+ longDescription = ''
+ This is a python module for monitoring memory consumption of a process as
+ well as line-by-line analysis of memory consumption for python programs.
+ '';
+ homepage = https://pypi.python.org/pypi/memory_profiler;
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/metaphone/default.nix b/nixpkgs/pkgs/development/python-modules/metaphone/default.nix
new file mode 100644
index 00000000000..e167ee494a8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/metaphone/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, 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 stdenv.lib; {
+ homepage = https://github.com/oubiwann/metaphone;
+ description = "A Python implementation of the metaphone and double metaphone algorithms";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ ris ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mezzanine/default.nix b/nixpkgs/pkgs/development/python-modules/mezzanine/default.nix
new file mode 100644
index 00000000000..a831618134b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mezzanine/default.nix
@@ -0,0 +1,70 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPyPy
+, pyflakes
+, pep8
+, django
+, django_contrib_comments
+, filebrowser_safe
+, grappelli_safe
+, bleach
+, tzlocal
+, beautifulsoup4
+, requests
+, requests_oauthlib
+, future
+, pillow
+, chardet
+}:
+
+buildPythonPackage rec {
+ version = "4.3.1";
+ pname = "Mezzanine";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "42c7909953cc5aea91921b47d804b61e14893bf48a2a476ce49a96559a0fa1d3";
+ };
+
+ disabled = isPyPy;
+
+ buildInputs = [ pyflakes pep8 ];
+ propagatedBuildInputs = [ django django_contrib_comments filebrowser_safe grappelli_safe bleach tzlocal beautifulsoup4 requests requests_oauthlib future pillow chardet ];
+
+ # Tests Fail Due to Syntax Warning, Fixed for v3.1.11+
+ doCheck = false;
+ # sed calls will be unecessary in v3.1.11+
+ preConfigure = ''
+ sed -i 's/==/>=/' setup.py
+ '';
+
+ LC_ALL="en_US.UTF-8";
+
+ meta = with stdenv.lib; {
+ description = ''
+ A content management platform built using the Django framework
+ '';
+ longDescription = ''
+ Mezzanine is a powerful, consistent, and flexible content
+ management platform. Built using the Django framework, Mezzanine
+ provides a simple yet highly extensible architecture that
+ encourages diving in and hacking on the code. Mezzanine is BSD
+ licensed and supported by a diverse and active community.
+
+ In some ways, Mezzanine resembles tools such as Wordpress that
+ provide an intuitive interface for managing pages, blog posts,
+ form data, store products, and other types of content. But
+ Mezzanine is also different. Unlike many other platforms that
+ make extensive use of modules or reusable applications,
+ Mezzanine provides most of its functionality by default. This
+ approach yields a more integrated and efficient platform.
+ '';
+ homepage = http://mezzanine.jupo.org/;
+ downloadPage = https://github.com/stephenmcd/mezzanine/releases;
+ license = licenses.free;
+ maintainers = with maintainers; [ prikhi ];
+ platforms = platforms.unix;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/micawber/default.nix b/nixpkgs/pkgs/development/python-modules/micawber/default.nix
new file mode 100644
index 00000000000..bc94202a070
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/micawber/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, buildPythonPackage, fetchPypi, beautifulsoup4 }:
+
+buildPythonPackage rec {
+ pname = "micawber";
+ version = "0.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0vk4xkby306f79gkwrn3cx94qdqil285dand8kb6lnlsdi90sb25";
+ };
+
+ propagatedBuildInputs = [ beautifulsoup4 ];
+
+ meta = with stdenv.lib; {
+ homepage = http://micawber.readthedocs.io/en/latest/;
+ description = "A small library for extracting rich content from urls";
+ license = licenses.mit;
+ longDescription = ''
+ micawber supplies a few methods for retrieving rich metadata
+ about a variety of links, such as links to youtube videos.
+ micawber also provides functions for parsing blocks of text and html
+ and replacing links to videos with rich embedded content.
+ '';
+ maintainers = with maintainers; [ davidak ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/midiutil/default.nix b/nixpkgs/pkgs/development/python-modules/midiutil/default.nix
new file mode 100644
index 00000000000..0b9945f97d3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/midiutil/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "MIDIUtil";
+ version = "1.2.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "02m9sqv36zrzgz5zg2w9qmz8snzlm27yg3ways2hgipgs4xriykr";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/MarkCWirt/MIDIUtil";
+ description = "A pure python library for creating multi-track MIDI files";
+ license = licenses.mit;
+ maintainers = [ maintainers.gnidorah ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/milksnake/default.nix b/nixpkgs/pkgs/development/python-modules/milksnake/default.nix
new file mode 100644
index 00000000000..014bb223225
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/milksnake/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildPythonPackage, fetchPypi, cffi }:
+
+buildPythonPackage rec {
+ pname = "milksnake";
+ version = "0.1.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "120nprd8lqis7x7zy72536gk2j68f7gxm8gffmx8k4ygifvl7kfz";
+ };
+
+ propagatedBuildInputs = [
+ cffi
+ ];
+
+ # tests rely on pip/venv
+ doCheck = false;
+
+ meta = with lib; {
+ description = "A python library that extends setuptools for binary extensions";
+ homepage = https://github.com/getsentry/milksnake;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ matthiasbeyer ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/minidb/default.nix b/nixpkgs/pkgs/development/python-modules/minidb/default.nix
new file mode 100644
index 00000000000..bf66a886f76
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/minidb/default.nix
@@ -0,0 +1,31 @@
+{ lib, buildPythonPackage, fetchFromGitHub, isPy3k
+, nose
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "minidb";
+ version = "2.0.2";
+
+ src = fetchFromGitHub {
+ owner = "thp";
+ repo = "minidb";
+ rev = version;
+ sha256 = "14y5vf8vhgviczhzy9h3xv99fjvrg975nz4w1fj5c1jv37da1lq3";
+ };
+
+ # module imports are incompatible with python2
+ doCheck = isPy3k;
+ checkInputs = [ nose pytest ];
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with lib; {
+ description = "A simple SQLite3-based store for Python objects";
+ homepage = "https://thp.io/2010/minidb/";
+ license = licenses.isc;
+ maintainers = [ maintainers.tv ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/minimock/default.nix b/nixpkgs/pkgs/development/python-modules/minimock/default.nix
new file mode 100644
index 00000000000..856f7b45adf
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/minimock/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, nose
+}:
+
+buildPythonPackage rec {
+ version = "1.2.8";
+ pname = "minimock";
+
+ src = fetchurl {
+ url = "https://bitbucket.org/jab/minimock/get/${version}.zip";
+ sha256 = "c88fa8a7120623f23990a7f086a9657f6ced09025a55e3be8649a30b4945441a";
+ };
+
+ checkInputs = [ nose ];
+
+ checkPhase = ''
+ ./test
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A minimalistic mocking library for python";
+ homepage = https://pypi.python.org/pypi/MiniMock;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/minio/default.nix b/nixpkgs/pkgs/development/python-modules/minio/default.nix
new file mode 100644
index 00000000000..f5a37832e8f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/minio/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildPythonPackage, isPy3k, fetchPypi
+, urllib3, python-dateutil , pytz, faker, mock, nose }:
+
+buildPythonPackage rec {
+ pname = "minio";
+ version = "4.0.17";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0fb1faab701008a1ff05b9b2497b6ba52d1aff963323356ed86f2771b186db6b";
+ };
+
+ disabled = !isPy3k;
+
+ checkInputs = [ faker mock nose ];
+ propagatedBuildInputs = [ urllib3 python-dateutil pytz ];
+
+ meta = with lib; {
+ description = "Simple APIs to access any Amazon S3 compatible object storage server";
+ homepage = https://github.com/minio/minio-py;
+ maintainers = with maintainers; [ peterromfeldhk ];
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/miniupnpc/default.nix b/nixpkgs/pkgs/development/python-modules/miniupnpc/default.nix
new file mode 100644
index 00000000000..d267cb6a976
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/miniupnpc/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "miniupnpc";
+ version = "2.0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0ca94zz7sr2x57j218aypxqcwkr23n8js30f3yrvvqbg929nr93y";
+ };
+
+ meta = with stdenv.lib; {
+ description = "miniUPnP client";
+ homepage = http://miniupnp.free.fr/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ peterhoeg ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/misaka/default.nix b/nixpkgs/pkgs/development/python-modules/misaka/default.nix
new file mode 100644
index 00000000000..85511d3ad25
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/misaka/default.nix
@@ -0,0 +1,22 @@
+{ lib, fetchPypi, buildPythonPackage, cffi }:
+buildPythonPackage rec {
+ pname = "misaka";
+ version = "2.1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1mzc29wwyhyardclj1vg2xsfdibg2lzb7f1azjcxi580ama55wv2";
+ };
+
+ propagatedBuildInputs = [ cffi ];
+
+ # The tests require write access to $out
+ doCheck = false;
+
+ meta = with lib; {
+ description = "A CFFI binding for Hoedown, a markdown parsing library";
+ homepage = "http://misaka.61924.nl/";
+ license = licenses.mit;
+ maintainers = with maintainers; [ fgaz ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mistune/default.nix b/nixpkgs/pkgs/development/python-modules/mistune/default.nix
new file mode 100644
index 00000000000..75011a8219f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mistune/default.nix
@@ -0,0 +1,23 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, nose
+}:
+
+buildPythonPackage rec {
+ pname = "mistune";
+ version = "0.8.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "59a3429db53c50b5c6bcc8a07f8848cb00d7dc8bdb431a4ab41920d201d4756e";
+ };
+
+ buildInputs = [ nose ];
+
+ meta = with lib; {
+ description = "The fastest markdown parser in pure Python";
+ homepage = https://github.com/lepture/mistune;
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mixpanel/default.nix b/nixpkgs/pkgs/development/python-modules/mixpanel/default.nix
new file mode 100644
index 00000000000..e770eedbfc3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mixpanel/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchzip
+, pytest
+, mock
+, six
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ version = "4.0.2";
+ pname = "mixpanel";
+ disabled = isPy3k;
+
+ src = fetchzip {
+ url = "https://github.com/mixpanel/mixpanel-python/archive/${version}.zip";
+ sha256 = "0yq1bcsjzsz7yz4rp69izsdn47rvkld4wki2xmapp8gg2s9i8709";
+ };
+
+ checkInputs = [ pytest mock ];
+ propagatedBuildInputs = [ six ];
+ checkPhase = "py.test tests.py";
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/mixpanel/mixpanel-python;
+ description = ''This is the official Mixpanel Python library'';
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mkl-service/default.nix b/nixpkgs/pkgs/development/python-modules/mkl-service/default.nix
new file mode 100644
index 00000000000..ad3f30a66da
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mkl-service/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildPythonPackage, fetchFromGitHub, cython, mkl, nose, six }:
+
+buildPythonPackage rec {
+ pname = "mkl-service";
+ version = "2.1.0";
+
+ src = fetchFromGitHub {
+ owner = "IntelPython";
+ repo = "mkl-service";
+ rev = "v${version}";
+ sha256 = "1bnpgx629rxqf0yhn0jn68ypj3dqv6njc3981j1g8j8rsm5lycrn";
+ };
+
+ MKLROOT = mkl;
+
+ checkInputs = [ nose ];
+ nativeBuildInputs = [ cython ];
+ propagatedBuildInputs = [ mkl six ];
+
+ meta = with lib; {
+ description = "Python hooks for Intel(R) Math Kernel Library runtime control settings";
+ homepage = "https://github.com/IntelPython/mkl-service";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ bhipple ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mlrose/default.nix b/nixpkgs/pkgs/development/python-modules/mlrose/default.nix
new file mode 100644
index 00000000000..f7d43115a1b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mlrose/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi, scikitlearn }:
+
+buildPythonPackage rec {
+ pname = "mlrose";
+ version = "1.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0vsvqrf1wbbj8i198rqd87hf8rlq7fmv8mmibv8f9rhj0w8729p5";
+ };
+
+ propagatedBuildInputs = [ scikitlearn ];
+
+ postPatch = ''
+ sed -i 's,sklearn,scikit-learn,g' setup.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Machine Learning, Randomized Optimization and SEarch";
+ homepage = "https://github.com/gkhayes/mlrose";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ abbradar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mmpython/default.nix b/nixpkgs/pkgs/development/python-modules/mmpython/default.nix
new file mode 100644
index 00000000000..0a41b6e3c87
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mmpython/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, isPyPy
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ version = "0.4.10";
+ pname = "mmpython";
+
+ src = fetchurl {
+ url = https://sourceforge.net/projects/mmpython/files/latest/download;
+ sha256 = "1b7qfad3shgakj37gcj1b9h78j1hxlz6wp9k7h76pb4sq4bfyihy";
+ name = "${pname}-${version}.tar.gz";
+ };
+
+ disabled = isPyPy || isPy3k;
+
+ meta = with stdenv.lib; {
+ description = "Media Meta Data retrieval framework";
+ homepage = https://sourceforge.net/projects/mmpython/;
+ license = licenses.gpl2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mnemonic/default.nix b/nixpkgs/pkgs/development/python-modules/mnemonic/default.nix
new file mode 100644
index 00000000000..182bbf3f075
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mnemonic/default.nix
@@ -0,0 +1,20 @@
+{ lib, fetchPypi, buildPythonPackage, pbkdf2 }:
+
+buildPythonPackage rec {
+ pname = "mnemonic";
+ version = "0.18";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "02a7306a792370f4a0c106c2cf1ce5a0c84b9dbd7e71c6792fdb9ad88a727f1d";
+ };
+
+ propagatedBuildInputs = [ pbkdf2 ];
+
+ meta = {
+ description = "Implementation of Bitcoin BIP-0039";
+ homepage = https://github.com/trezor/python-mnemonic;
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ np ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mock-open/default.nix b/nixpkgs/pkgs/development/python-modules/mock-open/default.nix
new file mode 100644
index 00000000000..edb3407270f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mock-open/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildPythonPackage, fetchFromGitHub, pythonOlder, mock }:
+
+buildPythonPackage rec {
+ pname = "mock-open";
+ version = "1.3.1";
+
+ # no tests in PyPI tarball
+ src = fetchFromGitHub {
+ owner = "nivbend";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "0ikhrhlkl5c7qbigpsv44jw89ws1z7j06gzyg5dh1ki533ifbjm2";
+ };
+
+ propagatedBuildInputs = lib.optional (pythonOlder "3.3") mock;
+
+ meta = with lib; {
+ homepage = https://github.com/nivbend/mock-open;
+ description = "A better mock for file I/O";
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mock/default.nix b/nixpkgs/pkgs/development/python-modules/mock/default.nix
new file mode 100644
index 00000000000..8ab724144f7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mock/default.nix
@@ -0,0 +1,39 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, unittest2
+, funcsigs
+, six
+, pbr
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "mock";
+ version = "2.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1flbpksir5sqrvq2z0dp8sl4bzbadg21sj4d42w3klpdfvgvcn5i";
+ };
+
+ buildInputs = [ unittest2 ];
+ propagatedBuildInputs = [ funcsigs six pbr ];
+
+ # 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);
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Mock objects for Python";
+ homepage = http://python-mock.sourceforge.net/;
+ license = stdenv.lib.licenses.bsd2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mockito/default.nix b/nixpkgs/pkgs/development/python-modules/mockito/default.nix
new file mode 100644
index 00000000000..bfef79b0f72
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mockito/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k, funcsigs, pytest, numpy }:
+
+buildPythonPackage rec {
+ version = "1.1.1";
+ pname = "mockito";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "142f5e8865a422ad2d67b9c67a382e3296e8f1633dbccd0e322180fba7d5303d";
+ };
+
+ # Failing tests due 2to3
+ doCheck = !isPy3k;
+
+ propagatedBuildInputs = stdenv.lib.optionals (!isPy3k) [ funcsigs ];
+ checkInputs = [ pytest numpy ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Spying framework";
+ homepage = https://github.com/kaste/mockito-python;
+ license = licenses.mit;
+ maintainers = [ maintainers.marsam ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/modeled/default.nix b/nixpkgs/pkgs/development/python-modules/modeled/default.nix
new file mode 100644
index 00000000000..298c69194f2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/modeled/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, zetup
+, six
+, moretools
+, pathpy
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "modeled";
+ version = "0.1.8";
+
+ src = fetchPypi {
+ extension = "zip";
+ inherit pname version;
+ sha256 = "64934c68cfcdb75ed4a1ccadcfd5d2a46bf1b8e8e81dde89ef0f042c401e94f1";
+ };
+
+ buildInputs = [
+ zetup
+ ];
+
+ propagatedBuildInputs = [
+ six
+ moretools
+ pathpy
+ ];
+
+ checkInputs = [
+ pytest
+ ];
+
+ checkPhase = ''
+ pytest test
+ '';
+
+ meta = with lib; {
+ description = "Universal data modeling for Python";
+ homepage = https://bitbucket.org/userzimmermann/python-modeled;
+ license = licenses.lgpl3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/moderngl/default.nix b/nixpkgs/pkgs/development/python-modules/moderngl/default.nix
new file mode 100644
index 00000000000..a45a24b7a2a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/moderngl/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, libGL
+, libX11
+}:
+
+buildPythonPackage rec {
+ pname = "moderngl";
+ version = "5.5.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1k2yf2yglzx65gcv2bqql6w6lmgyp3f1jz4ddq9vylf09a8j7fga";
+ };
+
+ disabled = !isPy3k;
+
+ buildInputs = [ libGL libX11 ];
+
+ # Tests need a display to run.
+ doCheck = false;
+
+ meta = with lib; {
+ homepage = https://github.com/moderngl/moderngl;
+ description = "High performance rendering for Python 3";
+ license = licenses.mit;
+ platforms = platforms.linux; # should be mesaPlatforms, darwin build breaks.
+ maintainers = with maintainers; [ c0deaddict ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/modestmaps/default.nix b/nixpkgs/pkgs/development/python-modules/modestmaps/default.nix
new file mode 100644
index 00000000000..b25e6f5644e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/modestmaps/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pillow
+, isPy27
+}:
+
+buildPythonPackage rec {
+ pname = "ModestMaps";
+ version = "1.4.7";
+ disabled = !isPy27;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "698442a170f02923f8ea55f18526b56c17178162e44304f896a8a5fd65ab4457";
+ };
+
+ propagatedBuildInputs = [ pillow ];
+
+ meta = with stdenv.lib; {
+ description = "A library for building interactive maps";
+ homepage = http://modestmaps.com;
+ license = stdenv.lib.licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/moinmoin/default.nix b/nixpkgs/pkgs/development/python-modules/moinmoin/default.nix
new file mode 100644
index 00000000000..cc00643b71a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/moinmoin/default.nix
@@ -0,0 +1,35 @@
+{ lib, buildPythonPackage, fetchurl, isPy3k
+, pytest, werkzeug, pygments
+}:
+
+buildPythonPackage rec {
+ pname = "moinmoin";
+ version = "1.9.10";
+
+ # SyntaxError in setup.py
+ disabled = isPy3k;
+
+ src = fetchurl {
+ url = "http://static.moinmo.in/files/moin-${version}.tar.gz";
+ sha256 = "0g05lnl1s8v61phi3z1g3b6lfj4g98grj9kw8nyjl246x0c489ja";
+ };
+
+ patches = [
+ # Recommended to install on their download page.
+ ./fix_tests.patch
+ ];
+
+ prePatch = ''
+ sed -i "s/\xfc/ü/" setup.cfg
+ '';
+
+ checkInputs = [ pytest werkzeug pygments ];
+
+ meta = with lib; {
+ description = "Advanced, easy to use and extensible WikiEngine";
+
+ homepage = "https://moinmo.in/";
+
+ license = licenses.gpl2Plus;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/moinmoin/fix_tests.patch b/nixpkgs/pkgs/development/python-modules/moinmoin/fix_tests.patch
new file mode 100644
index 00000000000..e9856eeffca
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/moinmoin/fix_tests.patch
@@ -0,0 +1,16 @@
+diff -ru3 moin-1.9.9-old/MoinMoin/conftest.py moin-1.9.9-new/MoinMoin/conftest.py
+--- moin-1.9.9-old/MoinMoin/conftest.py 2016-10-31 23:44:02.000000000 +0300
++++ moin-1.9.9-new/MoinMoin/conftest.py 2018-02-18 12:13:19.551929093 +0300
+@@ -22,10 +22,11 @@
+
+ import atexit
+ import sys
++import os
+
+ import py
+
+-rootdir = py.magic.autopath().dirpath()
++rootdir = os.path.abspath(os.path.dirname(__file__))
+ moindir = rootdir.join("..")
+ sys.path.insert(0, str(moindir))
+
diff --git a/nixpkgs/pkgs/development/python-modules/mongodict/default.nix b/nixpkgs/pkgs/development/python-modules/mongodict/default.nix
new file mode 100644
index 00000000000..932160bb9fa
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mongodict/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pymongo
+}:
+
+buildPythonPackage rec {
+ pname = "mongodict";
+ version = "0.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0nv5amfs337m0gbxpjb0585s20rndqfc3mfrzq1iwgnds5gxcrlw";
+ };
+
+ propagatedBuildInputs = [ pymongo ];
+
+ meta = with stdenv.lib; {
+ description = "MongoDB-backed Python dict-like interface";
+ homepage = "https://github.com/turicas/mongodict/";
+ license = licenses.gpl3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/monotonic/default.nix b/nixpkgs/pkgs/development/python-modules/monotonic/default.nix
new file mode 100644
index 00000000000..c784730da6e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/monotonic/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "monotonic";
+ version = "1.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "23953d55076df038541e648a53676fb24980f7a1be290cdda21300b3bc21dfb0";
+ };
+
+ __propagatedImpureHostDeps = stdenv.lib.optional stdenv.isDarwin "/usr/lib/libc.dylib";
+
+ patchPhase = stdenv.lib.optionalString stdenv.isLinux ''
+ substituteInPlace monotonic.py --replace \
+ "ctypes.util.find_library('c')" "'${stdenv.glibc.out}/lib/libc.so.6'"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "An implementation of time.monotonic() for Python 2 & < 3.3";
+ homepage = https://github.com/atdt/monotonic;
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/monty/default.nix b/nixpkgs/pkgs/development/python-modules/monty/default.nix
new file mode 100644
index 00000000000..4675a386054
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/monty/default.nix
@@ -0,0 +1,46 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, nose
+, numpy
+, six
+, ruamel_yaml
+, msgpack-python
+, coverage
+, coveralls
+, pymongo
+, lsof
+}:
+
+buildPythonPackage rec {
+ pname = "monty";
+ version = "1.0.4";
+
+ # No tests in Pypi
+ src = fetchFromGitHub {
+ owner = "materialsvirtuallab";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "0vqaaz0dw0ypl6sfwbycpb0qs3ap04c4ghbggklxih66spdlggh6";
+ };
+
+ checkInputs = [ lsof nose numpy msgpack-python coverage coveralls pymongo];
+ propagatedBuildInputs = [ six ruamel_yaml ];
+
+ preCheck = ''
+ substituteInPlace tests/test_os.py \
+ --replace 'self.assertEqual("/usr/bin/find", which("/usr/bin/find"))' '#'
+ '';
+
+ meta = with lib; {
+ description = "Serves as a complement to the Python standard library by providing a suite of tools to solve many common problems";
+ longDescription = "
+ Monty implements supplementary useful functions for Python that are not part of the
+ standard library. Examples include useful utilities like transparent support for zipped files, useful design
+ patterns such as singleton and cached_class, and many more.
+ ";
+ homepage = https://github.com/materialsvirtuallab/monty;
+ license = licenses.mit;
+ maintainers = with maintainers; [ psyanticy ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/more-itertools/2.7.nix b/nixpkgs/pkgs/development/python-modules/more-itertools/2.7.nix
new file mode 100644
index 00000000000..e0786aefa2c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/more-itertools/2.7.nix
@@ -0,0 +1,31 @@
+{ 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/nixpkgs/pkgs/development/python-modules/more-itertools/default.nix b/nixpkgs/pkgs/development/python-modules/more-itertools/default.nix
new file mode 100644
index 00000000000..999708697a9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/more-itertools/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, nose
+, six
+, stdenv
+}:
+
+
+buildPythonPackage rec {
+ pname = "more-itertools";
+ version = "6.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "590044e3942351a1bdb1de960b739ff4ce277960f2425ad4509446dbace8d9d1";
+ };
+
+ 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/nixpkgs/pkgs/development/python-modules/moretools/default.nix b/nixpkgs/pkgs/development/python-modules/moretools/default.nix
new file mode 100644
index 00000000000..6f11b01481b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/moretools/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, six, pathpy, zetup, pytest
+, decorator }:
+
+buildPythonPackage rec {
+ pname = "moretools";
+ version = "0.1.10";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1rvd9kl0163gm5kqwsb2m44x87sp72k5pirvcmhy2ffix4pzadqp";
+ };
+
+ checkPhase = ''
+ py.test test
+ '';
+
+ nativeBuildInputs = [ zetup ];
+ checkInputs = [ six pathpy pytest ];
+ propagatedBuildInputs = [ decorator ];
+
+ meta = with stdenv.lib; {
+ description = ''
+ Many more basic tools for python 2/3 extending itertools, functools, operator and collections
+ '';
+ homepage = https://bitbucket.org/userzimmermann/python-moretools;
+ license = licenses.gpl3Plus;
+ platforms = platforms.unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/moto/default.nix b/nixpkgs/pkgs/development/python-modules/moto/default.nix
new file mode 100644
index 00000000000..876b57dd01f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/moto/default.nix
@@ -0,0 +1,86 @@
+{ lib, buildPythonPackage, fetchPypi, isPy27, fetchpatch
+, aws-xray-sdk
+, backports_tempfile
+, boto
+, boto3
+, botocore
+, cfn-lint
+, docker
+, flask
+, freezegun
+, jinja2
+, jsondiff
+, mock
+, nose
+, pyaml
+, python-jose
+, pytz
+, requests
+, responses
+, six
+, sshpubkeys
+, sure
+, werkzeug
+, xmltodict
+}:
+
+buildPythonPackage rec {
+ pname = "moto";
+ version = "1.3.13";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0rhbjvqi1khp80gfnl3x632kwlpq3k7m8f13nidznixdpa78vm4m";
+ };
+
+ # Backported fix from 1.3.14.dev for compatibility with botocore >= 1.9.198.
+ patches = [
+ (fetchpatch {
+ url = "https://github.com/spulec/moto/commit/e4a4e6183560489e98b95e815b439c7a1cf3566c.diff";
+ sha256 = "1fixr7riimnldiikv33z4jwjgcsccps0c6iif40x8wmpvgcfs0cb";
+ })
+ ];
+
+ postPatch = ''
+ substituteInPlace setup.py \
+ --replace "jsondiff==1.1.2" "jsondiff~=1.1"
+ sed -i '/datetime/d' setup.py # should be taken care of by std library
+ '';
+
+ propagatedBuildInputs = [
+ aws-xray-sdk
+ boto
+ boto3
+ botocore
+ cfn-lint
+ docker
+ flask # required for server
+ jinja2
+ jsondiff
+ mock
+ pyaml
+ python-jose
+ pytz
+ six
+ requests
+ responses
+ sshpubkeys
+ werkzeug
+ xmltodict
+ ] ++ lib.optionals isPy27 [ backports_tempfile ];
+
+ checkInputs = [ boto3 freezegun nose sure ];
+
+ checkPhase = ''nosetests -v ./tests/ \
+ -e test_invoke_function_from_sns \
+ -e test_invoke_requestresponse_function \
+ -e test_context_manager \
+ -e test_decorator_start_and_stop'';
+
+ meta = with lib; {
+ description = "Allows your tests to easily mock out AWS Services";
+ homepage = https://github.com/spulec/moto;
+ license = licenses.asl20;
+ maintainers = [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/moviepy/default.nix b/nixpkgs/pkgs/development/python-modules/moviepy/default.nix
new file mode 100644
index 00000000000..73c2f6c8e68
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/moviepy/default.nix
@@ -0,0 +1,52 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pythonAtLeast
+, numpy
+, decorator
+, imageio
+, imageio-ffmpeg
+, proglog
+, requests
+, tqdm
+# Advanced image processing (triples size of output)
+, advancedProcessing ? false
+, opencv ? null
+, scikitimage ? null
+, scikitlearn ? null
+, scipy ? null
+, matplotlib ? null
+, youtube-dl ? null
+}:
+
+assert advancedProcessing -> (
+ opencv != null && scikitimage != null && scikitlearn != null
+ && scipy != null && matplotlib != null && youtube-dl != null);
+
+buildPythonPackage rec {
+ pname = "moviepy";
+ version = "1.0.0";
+
+ disabled = !(pythonAtLeast "3.4");
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "16c7ffca23d90c76dd7b163f648c8166dfd589b7c180b8ff75aa327ae0a2fc6d";
+ };
+
+ # No tests, require network connection
+ doCheck = false;
+
+ propagatedBuildInputs = [
+ numpy decorator imageio imageio-ffmpeg tqdm requests proglog
+ ] ++ (stdenv.lib.optionals advancedProcessing [
+ opencv scikitimage scikitlearn scipy matplotlib youtube-dl
+ ]);
+
+ meta = with stdenv.lib; {
+ description = "Video editing with Python";
+ homepage = http://zulko.github.io/moviepy/;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mox/default.nix b/nixpkgs/pkgs/development/python-modules/mox/default.nix
new file mode 100644
index 00000000000..d9b5a5aa111
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mox/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+}:
+
+buildPythonPackage rec {
+ pname = "mox";
+ version = "0.5.3";
+
+ src = fetchurl {
+ url = "http://pymox.googlecode.com/files/${pname}-${version}.tar.gz";
+ sha256 = "4d18a4577d14da13d032be21cbdfceed302171c275b72adaa4c5997d589a5030";
+ };
+
+ # error: invalid command 'test'
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = http://code.google.com/p/pymox/;
+ description = "A mock object framework for Python";
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mox3/default.nix b/nixpkgs/pkgs/development/python-modules/mox3/default.nix
new file mode 100644
index 00000000000..8885401ae5f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mox3/default.nix
@@ -0,0 +1,36 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+, subunit
+, testrepository
+, testtools
+, six
+, pbr
+, fixtures
+, isPy36
+}:
+
+buildPythonPackage rec {
+ pname = "mox3";
+ version = "0.26.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b13c0b8459d6fb0688f9a4e70feeec43fa2cca05b727fc01156789596e083bb1";
+ };
+
+ buildInputs = [ subunit testrepository testtools six ];
+ propagatedBuildInputs = [ pbr fixtures ];
+
+ # Disabling as several tests depdencies are missing:
+ # https://opendev.org/openstack/mox3/src/branch/master/test-requirements.txt
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Mock object framework for Python";
+ homepage = https://docs.openstack.org/mox3/latest/;
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mozsvc/default.nix b/nixpkgs/pkgs/development/python-modules/mozsvc/default.nix
new file mode 100644
index 00000000000..a7b3984b912
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mozsvc/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, 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 stdenv.lib; {
+ homepage = https://github.com/mozilla-services/mozservices;
+ description = "Various utilities for Mozilla apps";
+ license = licenses.mpl20;
+ maintainers = with maintainers; [ nadrieril ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mozterm/default.nix b/nixpkgs/pkgs/development/python-modules/mozterm/default.nix
new file mode 100644
index 00000000000..c7f2b4cbc34
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mozterm/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k, six }:
+
+buildPythonPackage rec {
+ pname = "mozterm";
+ version = "1.0.0";
+
+ # name 'unicode' is not defined
+ disabled = isPy3k;
+
+ propagatedBuildInputs = [six];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b1e91acec188de07c704dbb7b0100a7be5c1e06567b3beb67f6ea11d00a483a4";
+ };
+
+ meta = with lib; {
+ description = "Terminal abstractions built around the blessings module";
+ license = licenses.mpl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mpd/default.nix b/nixpkgs/pkgs/development/python-modules/mpd/default.nix
new file mode 100644
index 00000000000..48693293458
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mpd/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "python-mpd";
+ version = "0.3.0";
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "02812eba1d2e0f46e37457f5a6fa23ba203622e4bcab0a19b265e66b08cd21b4";
+ };
+
+ meta = with stdenv.lib; {
+ description = "An MPD (Music Player Daemon) client library written in pure Python";
+ homepage = http://jatreuman.indefero.net/p/python-mpd/;
+ license = licenses.gpl3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mpd2/default.nix b/nixpkgs/pkgs/development/python-modules/mpd2/default.nix
new file mode 100644
index 00000000000..95ee5c5001a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mpd2/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "python-mpd2";
+ version = "1.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "tar.bz2";
+ sha256 = "772fa6861273bb9f363a97987c2c45ca3965eb770570f1f02566efec9c89fc5f";
+ };
+
+ buildInputs = [ mock ];
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest mpd.tests
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A Python client module for the Music Player Daemon";
+ homepage = "https://github.com/Mic92/python-mpd2";
+ license = licenses.lgpl3Plus;
+ maintainers = with maintainers; [ rvl mic92 ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mpi4py/default.nix b/nixpkgs/pkgs/development/python-modules/mpi4py/default.nix
new file mode 100644
index 00000000000..e2028d9332b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mpi4py/default.nix
@@ -0,0 +1,52 @@
+{ stdenv, fetchPypi, python, buildPythonPackage, mpi, openssh }:
+
+buildPythonPackage rec {
+ pname = "mpi4py";
+ version = "3.0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1q28xl36difma1wq0acq111cqxjya32kn3lxp6fbidz3wg8jkmpq";
+ };
+
+ passthru = {
+ inherit mpi;
+ };
+
+ postPatch = ''
+ substituteInPlace test/test_spawn.py --replace \
+ "unittest.skipMPI('openmpi(<3.0.0)')" \
+ "unittest.skipMPI('openmpi')"
+ '';
+
+ configurePhase = "";
+
+ installPhase = ''
+ mkdir -p "$out/lib/${python.libPrefix}/site-packages"
+ export PYTHONPATH="$out/lib/${python.libPrefix}/site-packages:$PYTHONPATH"
+
+ ${python}/bin/${python.executable} setup.py install \
+ --install-lib=$out/lib/${python.libPrefix}/site-packages \
+ --prefix="$out"
+
+ # --install-lib:
+ # sometimes packages specify where files should be installed outside the usual
+ # python lib prefix, we override that back so all infrastructure (setup hooks)
+ # work as expected
+
+ # Needed to run the tests reliably. See:
+ # https://bitbucket.org/mpi4py/mpi4py/issues/87/multiple-test-errors-with-openmpi-30
+ export OMPI_MCA_rmaps_base_oversubscribe=yes
+ '';
+
+ setupPyBuildFlags = ["--mpicc=${mpi}/bin/mpicc"];
+
+ nativeBuildInputs = [ mpi openssh ];
+
+ meta = {
+ description =
+ "Python bindings for the Message Passing Interface standard";
+ homepage = http://code.google.com/p/mpi4py/;
+ license = stdenv.lib.licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mpi4py/tests.patch b/nixpkgs/pkgs/development/python-modules/mpi4py/tests.patch
new file mode 100644
index 00000000000..168e3b4b38d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mpi4py/tests.patch
@@ -0,0 +1,13 @@
+diff --git i/test/test_dl.py w/test/test_dl.py
+index a3211a3..9d25569 100644
+--- i/test/test_dl.py
++++ w/test/test_dl.py
+@@ -12,7 +12,7 @@ class TestDL(unittest.TestCase):
+ if sys.platform == 'darwin':
+ libm = 'libm.dylib'
+ else:
+- libm = 'libm.so'
++ libm = 'libm.so.6'
+
+ handle = dl.dlopen(libm, dl.RTLD_LOCAL|dl.RTLD_LAZY)
+ self.assertTrue(handle != 0)
diff --git a/nixpkgs/pkgs/development/python-modules/mplleaflet/default.nix b/nixpkgs/pkgs/development/python-modules/mplleaflet/default.nix
new file mode 100644
index 00000000000..62c5282b335
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mplleaflet/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, jinja2
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "mplleaflet";
+ version = "0.0.5";
+
+ propagatedBuildInputs = [ jinja2 six ];
+
+ # No tests in archive
+ doCheck = false;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "049e0b91797ce5b462853395138161fed9e8dfc1f4723f482ebb0739a0bbd289";
+ };
+
+ meta = {
+ description = "Convert Matplotlib plots into Leaflet web maps";
+ homepage = https://github.com/jwass/mplleaflet;
+ license = with lib.licenses; [ bsd3 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mpmath/default.nix b/nixpkgs/pkgs/development/python-modules/mpmath/default.nix
new file mode 100644
index 00000000000..9da56cad881
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mpmath/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "mpmath";
+ version = "1.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "fc17abe05fbab3382b61a123c398508183406fa132e0223874578e20946499f6";
+ };
+
+ # error: invalid command 'test'
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = http://mpmath.googlecode.com;
+ description = "A pure-Python library for multiprecision floating arithmetic";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ lovek323 ];
+ platforms = platforms.unix;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mps-youtube/default.nix b/nixpkgs/pkgs/development/python-modules/mps-youtube/default.nix
new file mode 100644
index 00000000000..39ad7c47215
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mps-youtube/default.nix
@@ -0,0 +1,35 @@
+{ lib, buildPythonPackage, fetchFromGitHub, isPy3k
+, pafy
+}:
+
+buildPythonPackage rec {
+ pname = "mps-youtube";
+ version = "0.2.8";
+ disabled = (!isPy3k);
+
+ src = fetchFromGitHub {
+ owner = "mps-youtube";
+ repo = "mps-youtube";
+ rev = "v${version}";
+ sha256 = "1w1jhw9rg3dx7vp97cwrk5fymipkcy2wrbl1jaa38ivcjhqg596y";
+ };
+
+ propagatedBuildInputs = [ pafy ];
+
+ # disabled due to error in loading unittest
+ # don't know how to make test from: <mps_youtube. ...>
+ doCheck = false;
+
+ # before check create a directory and redirect XDG_CONFIG_HOME to it
+ preCheck = ''
+ mkdir -p check-phase
+ export XDG_CONFIG_HOME=$(pwd)/check-phase
+ '';
+
+ meta = with lib; {
+ description = "Terminal based YouTube player and downloader";
+ homepage = https://github.com/np1/mps-youtube;
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ odi ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mpv/default.nix b/nixpkgs/pkgs/development/python-modules/mpv/default.nix
new file mode 100644
index 00000000000..f5ae020c71c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mpv/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, python, isPy27
+, mpv
+}:
+
+buildPythonPackage rec {
+ pname = "mpv";
+ version = "0.3.9";
+ disabled = isPy27;
+
+ src = fetchFromGitHub {
+ owner = "jaseg";
+ repo = "python-mpv";
+ rev = "v${version}";
+ sha256 = "112kr9wppcyy3shsb7v7kq0s1pdw6vw3v2fvqicm7qb2f49y2p4q";
+ };
+
+ buildInputs = [ mpv ];
+
+ postPatch = ''
+ substituteInPlace mpv.py \
+ --replace "sofile = ctypes.util.find_library('mpv')" \
+ 'sofile = "${mpv}/lib/libmpv${stdenv.targetPlatform.extensions.sharedLibrary}"'
+ '';
+
+ # tests impure, will error if it can't load libmpv.so
+ checkPhase = "${python.interpreter} -c 'import mpv'";
+
+ meta = with stdenv.lib; {
+ description = "A python interface to the mpv media player";
+ homepage = "https://github.com/jaseg/python-mpv";
+ license = licenses.agpl3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mpyq/default.nix b/nixpkgs/pkgs/development/python-modules/mpyq/default.nix
new file mode 100644
index 00000000000..5660e1b0dc5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mpyq/default.nix
@@ -0,0 +1,21 @@
+{ buildPythonPackage
+, lib
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "mpyq";
+ version = "0.2.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "01q0xh2fy3zzsrfr45d2ypj4whs7s060cy1rnprg6sg55fbgbaih";
+ };
+
+ meta = {
+ description = "A Python library for extracting MPQ (MoPaQ) files.";
+ homepage = "https://github.com/eagleflo/mpyq";
+ license = lib.licenses.bsd2;
+ maintainers = with lib.maintainers; [ danharaj ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mrbob/default.nix b/nixpkgs/pkgs/development/python-modules/mrbob/default.nix
new file mode 100644
index 00000000000..dd255d4d004
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mrbob/default.nix
@@ -0,0 +1,29 @@
+{ buildPythonPackage, stdenv, 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 stdenv.lib; {
+ homepage = https://github.com/domenkozar/mr.bob;
+ description = "A tool to generate code skeletons from templates";
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/msgpack-numpy/default.nix b/nixpkgs/pkgs/development/python-modules/msgpack-numpy/default.nix
new file mode 100644
index 00000000000..c23f0b6572e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/msgpack-numpy/default.nix
@@ -0,0 +1,38 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, cython
+, msgpack
+, numpy
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "msgpack-numpy";
+ version = "0.4.4.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a02c0069fb580c6a2dda9b98d40d34fda3840863112a5465ba9b54fa2ee005a5";
+ };
+
+ buildInputs = [
+ cython
+ ];
+
+ propagatedBuildInputs = [
+ msgpack
+ numpy
+ ];
+
+ checkPhase = ''
+ ${python.interpreter} msgpack_numpy.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Numpy data type serialization using msgpack";
+ homepage = https://github.com/lebedov/msgpack-numpy;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ aborsu ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/msgpack/default.nix b/nixpkgs/pkgs/development/python-modules/msgpack/default.nix
new file mode 100644
index 00000000000..d48d0995a76
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/msgpack/default.nix
@@ -0,0 +1,28 @@
+{ buildPythonPackage
+, fetchPypi
+, pytest
+, lib
+}:
+
+buildPythonPackage rec {
+ pname = "msgpack";
+ version = "0.6.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "4008c72f5ef2b7936447dcb83db41d97e9791c83221be13d5e19db0796df1972";
+ };
+
+ checkPhase = ''
+ py.test
+ '';
+
+ checkInputs = [ pytest ];
+
+ meta = {
+ homepage = https://github.com/msgpack/msgpack-python;
+ description = "MessagePack serializer implementation for Python";
+ license = lib.licenses.asl20;
+ # maintainers = ?? ;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/msrest/default.nix b/nixpkgs/pkgs/development/python-modules/msrest/default.nix
new file mode 100644
index 00000000000..ede8e0801df
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/msrest/default.nix
@@ -0,0 +1,53 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, isPy3k
+, requests
+, requests_oauthlib
+, isodate
+, certifi
+, enum34
+, typing
+, aiohttp
+, aiodns
+, pytest
+, httpretty
+, mock
+, futures
+, trio
+}:
+
+buildPythonPackage rec {
+ version = "0.6.9";
+ pname = "msrest";
+
+ # no tests in PyPI tarball
+ # see https://github.com/Azure/msrest-for-python/pull/152
+ src = fetchFromGitHub {
+ owner = "Azure";
+ repo = "msrest-for-python";
+ rev = "v${version}";
+ sha256 = "0540dmxz90jsmwvd4q06cr1ficixknjk8q06f2dqcp06w92vnl8r";
+ };
+
+ propagatedBuildInputs = [
+ requests requests_oauthlib isodate certifi
+ ] ++ lib.optionals (!isPy3k) [ enum34 typing ]
+ ++ lib.optionals isPy3k [ aiohttp aiodns ];
+
+ checkInputs = [ pytest httpretty ]
+ ++ lib.optionals (!isPy3k) [ mock futures ]
+ ++ lib.optional isPy3k trio;
+
+ # Deselected tests require network access
+ checkPhase = ''
+ pytest tests/ -k "not test_conf_async_trio_requests"
+ '';
+
+ meta = with lib; {
+ description = "The runtime library 'msrest' for AutoRest generated Python clients.";
+ homepage = https://github.com/Azure/msrest-for-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ bendlas jonringer mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/msrestazure/default.nix b/nixpkgs/pkgs/development/python-modules/msrestazure/default.nix
new file mode 100644
index 00000000000..0ef06cd8fb1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/msrestazure/default.nix
@@ -0,0 +1,42 @@
+{ pkgs
+, lib
+, buildPythonPackage
+, fetchFromGitHub
+, isPy3k
+, adal
+, msrest
+, mock
+, httpretty
+, pytest
+, pytest-asyncio
+}:
+
+buildPythonPackage rec {
+ version = "0.6.1";
+ pname = "msrestazure";
+
+ # Pypi tarball doesnt include tests
+ # see https://github.com/Azure/msrestazure-for-python/pull/133
+ src = fetchFromGitHub {
+ owner = "Azure";
+ repo = "msrestazure-for-python";
+ rev = "v${version}";
+ sha256 = "09swndz57131b8x57mzibnsr1sv0l80pk62p89q99gsd6mvc389c";
+ };
+
+ propagatedBuildInputs = [ adal msrest ];
+
+ checkInputs = [ httpretty mock pytest ]
+ ++ lib.optional isPy3k [ pytest-asyncio ];
+
+ checkPhase = ''
+ pytest tests/
+ '';
+
+ meta = with pkgs.lib; {
+ description = "The runtime library 'msrestazure' for AutoRest generated Python clients.";
+ homepage = "https://azure.microsoft.com/en-us/develop/python/";
+ license = licenses.mit;
+ maintainers = with maintainers; [ bendlas jonringer ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/msrplib/default.nix b/nixpkgs/pkgs/development/python-modules/msrplib/default.nix
new file mode 100644
index 00000000000..bba72ea62bb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/msrplib/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, 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 stdenv.lib; {
+ homepage = https://github.com/AGProjects/python-msrplib;
+ description = "Client library for MSRP protocol and its relay extension (RFC 4975 and RFC4976)";
+ license = licenses.lgpl3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mt-940/default.nix b/nixpkgs/pkgs/development/python-modules/mt-940/default.nix
new file mode 100644
index 00000000000..f3965b8a74a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mt-940/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k
+, enum34, pyyaml, pytest
+}:
+
+buildPythonPackage rec {
+ version = "4.15.0";
+ pname = "mt-940";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "4c1d5c23a9c3fec12a61ce3f61d8be107b4693be4a4b97381eca23f4a4dca8ed";
+ };
+
+ propagatedBuildInputs = lib.optional (!isPy3k) enum34;
+
+ checkInputs = [ pyyaml pytest ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with lib; {
+ description = "A library to parse MT940 files and returns smart Python collections for statistics and manipulation";
+ homepage = https://github.com/WoLpH/mt940;
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/multi_key_dict/default.nix b/nixpkgs/pkgs/development/python-modules/multi_key_dict/default.nix
new file mode 100644
index 00000000000..a094b373f8f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/multi_key_dict/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "multi_key_dict";
+ version = "2.0.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "17lkx4rf4waglwbhc31aak0f28c63zl3gx5k5i1iq2m3gb0xxsyy";
+ };
+
+ meta = with stdenv.lib; {
+ description = "multi_key_dict";
+ homepage = "https://github.com/formiaczek/multi_key_dict";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/multidict/default.nix b/nixpkgs/pkgs/development/python-modules/multidict/default.nix
new file mode 100644
index 00000000000..76a49423006
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/multidict/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+, pytest, pytestrunner, pytestcov
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "multidict";
+ version = "4.5.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "024b8129695a952ebd93373e45b5d341dbb87c17ce49637b34000093f243dd4f";
+ };
+
+ checkInputs = [ pytest pytestrunner pytestcov ];
+
+ disabled = !isPy3k;
+
+ meta = with lib; {
+ description = "Multidict implementation";
+ homepage = https://github.com/aio-libs/multidict/;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ dotlambda ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/multipledispatch/default.nix b/nixpkgs/pkgs/development/python-modules/multipledispatch/default.nix
new file mode 100644
index 00000000000..8b2de6c5af1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/multipledispatch/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "multipledispatch";
+ version = "0.6.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a7ab1451fd0bf9b92cab3edbd7b205622fb767aeefb4fb536c2e3de9e0a38bea";
+ };
+
+ # No tests in archive
+ doCheck = false;
+
+ propagatedBuildInputs = [ six ];
+
+ meta = {
+ homepage = https://github.com/mrocklin/multipledispatch/;
+ description = "A relatively sane approach to multiple dispatch in Python";
+ license = lib.licenses.bsd3;
+ maintainers = with lib.maintainers; [ fridh ];
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/multiprocess/default.nix b/nixpkgs/pkgs/development/python-modules/multiprocess/default.nix
new file mode 100644
index 00000000000..a98697039a8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/multiprocess/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildPythonPackage, fetchPypi, dill }:
+
+buildPythonPackage rec {
+ pname = "multiprocess";
+ version = "0.70.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "46479a327388df8e77ad268892f2e73eac06d6271189b868ce9d4f95474e58e3";
+ };
+
+ propagatedBuildInputs = [ dill ];
+
+ # Python-version dependent tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Better multiprocessing and multithreading in python";
+ homepage = https://github.com/uqfoundation/multiprocess;
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/multiset/default.nix b/nixpkgs/pkgs/development/python-modules/multiset/default.nix
new file mode 100644
index 00000000000..5cc159dc205
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/multiset/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, setuptools_scm
+, pytestrunner
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "multiset";
+ version = "2.1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "4801569c08bfcecfe7b0927b17f079c90f8607aca8fecaf42ded92b737162bc7";
+ };
+
+ buildInputs = [ setuptools_scm pytestrunner ];
+ checkInputs = [ pytest ];
+
+ meta = with lib; {
+ description = "An implementation of a multiset";
+ homepage = https://github.com/wheerd/multiset;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/munch/default.nix b/nixpkgs/pkgs/development/python-modules/munch/default.nix
new file mode 100644
index 00000000000..f4ecc2ff306
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/munch/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "munch";
+ version = "2.3.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6ae3d26b837feacf732fb8aa5b842130da1daf221f5af9f9d4b2a0a6414b0d51";
+ };
+
+ propagatedBuildInputs = [ six ];
+
+ # No tests in archive
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A dot-accessible dictionary (a la JavaScript objects)";
+ license = licenses.mit;
+ homepage = https://github.com/Infinidat/munch;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/munkres/default.nix b/nixpkgs/pkgs/development/python-modules/munkres/default.nix
new file mode 100644
index 00000000000..5e83818a014
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/munkres/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, nose
+}:
+
+buildPythonPackage rec {
+ pname = "munkres";
+ version = "1.1.2";
+
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "81e9ced40c3d0ffc48be4b6da5cfdfaa49041faaaba8075b159974ec47926aea";
+ };
+
+ checkInputs = [ nose ];
+
+ checkPhase = "nosetests";
+
+ meta = with stdenv.lib; {
+ homepage = http://bmc.github.com/munkres/;
+ description = "Munkres algorithm for the Assignment Problem";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ domenkozar ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/murmurhash/default.nix b/nixpkgs/pkgs/development/python-modules/murmurhash/default.nix
new file mode 100644
index 00000000000..2e826ab61e8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/murmurhash/default.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, cython
+}:
+
+buildPythonPackage rec {
+ pname = "murmurhash";
+ version = "1.0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c7a646f6b07b033642b4f52ae2e45efd8b80780b3b90e8092a0cec935fbf81e2";
+ };
+
+ postPatch = ''
+ substituteInPlace setup.py --replace "'wheel>=0.32.0,<0.33.0'" ""
+ '';
+
+ buildInputs = [
+ cython
+ ];
+
+ # No test
+ doCheck = false;
+
+ checkPhase = ''
+ pytest murmurhash
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Cython bindings for MurmurHash2";
+ homepage = https://github.com/explosion/murmurhash;
+ license = licenses.mit;
+ maintainers = with maintainers; [ aborsu sdll ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/musicbrainzngs/default.nix b/nixpkgs/pkgs/development/python-modules/musicbrainzngs/default.nix
new file mode 100644
index 00000000000..0f18163883e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/musicbrainzngs/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pkgs
+}:
+
+buildPythonPackage rec {
+ pname = "musicbrainzngs";
+ version = "0.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1dddarpjawryll2wss65xq3v9q8ln8dan7984l5dxzqx88d2dvr8";
+ };
+
+ buildInputs = [ pkgs.glibcLocales ];
+
+ LC_ALL="en_US.UTF-8";
+
+ preCheck = ''
+ # Remove tests that rely on networking (breaks sandboxed builds)
+ rm test/test_submit.py
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = http://alastair/python-musicbrainz-ngs;
+ description = "Python bindings for musicbrainz NGS webservice";
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ domenkozar ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mutag/default.nix b/nixpkgs/pkgs/development/python-modules/mutag/default.nix
new file mode 100644
index 00000000000..0d5d8d75a36
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mutag/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchgit
+, isPy3k
+, pyparsing
+}:
+
+buildPythonPackage {
+ name = "mutag-0.0.2-2ffa0258ca";
+ disabled = ! isPy3k;
+
+ src = fetchgit {
+ url = "https://github.com/aroig/mutag.git";
+ sha256 = "0axdnwdypfd74a9dnw0g25m16xx1yygyl828xy0kpj8gyqdc6gb1";
+ rev = "2ffa0258cadaf79313241f43bf2c1caaf197d9c2";
+ };
+
+ propagatedBuildInputs = [ pyparsing ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/aroig/mutag;
+ description = "A script to change email tags in a mu indexed maildir";
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mutagen/default.nix b/nixpkgs/pkgs/development/python-modules/mutagen/default.nix
new file mode 100644
index 00000000000..0bd08a82b93
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mutagen/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, fetchpatch
+, hypothesis
+, pycodestyle
+, pyflakes
+, pytest
+, pkgs
+}:
+
+buildPythonPackage rec {
+ pname = "mutagen";
+ version = "1.42.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "bb61e2456f59a9a4a259fbc08def6d01ba45a42da8eeaa97d00633b0ec5de71c";
+ };
+
+ # fix tests with updated pycodestyle
+ patches = fetchpatch {
+ url = https://github.com/quodlibet/mutagen/commit/0ee86ef9d7e06639a388d0638732810b79998608.patch;
+ sha256 = "1bj3mpbv7krh5m1mvfl0z18s8wdxb1949zcnkcqxp2xl5fzsi288";
+ };
+
+ 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;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/muttils/default.nix b/nixpkgs/pkgs/development/python-modules/muttils/default.nix
new file mode 100644
index 00000000000..868700b6223
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/muttils/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, 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 stdenv.lib; {
+ description = "Utilities for use with console mail clients, like mutt";
+ homepage = https://www.blacktrash.org/hg/muttils;
+ license = licenses.gpl2Plus;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mwclient/default.nix b/nixpkgs/pkgs/development/python-modules/mwclient/default.nix
new file mode 100644
index 00000000000..ce987311a74
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mwclient/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub
+, requests, requests_oauthlib, six
+, pytest, pytestpep8, pytestcache, pytestcov, responses, mock
+}:
+
+buildPythonPackage rec {
+ version = "0.10.0";
+ pname = "mwclient";
+
+ src = fetchFromGitHub {
+ owner = "mwclient";
+ repo = "mwclient";
+ rev = "v${version}";
+ sha256 = "1c3q6lwmb05yqywc4ya98ca7hsl15niili8rccl4n1yqp77c103v";
+ };
+
+ checkInputs = [ pytest pytestpep8 pytestcache pytestcov responses mock ];
+
+ propagatedBuildInputs = [ requests requests_oauthlib six ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Python client library to the MediaWiki API";
+ license = licenses.mit;
+ homepage = https://github.com/mwclient/mwclient;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mwlib-ext/default.nix b/nixpkgs/pkgs/development/python-modules/mwlib-ext/default.nix
new file mode 100644
index 00000000000..cfcbdc2d0ac
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mwlib-ext/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, 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 stdenv.lib; {
+ description = "Dependencies for mwlib markup";
+ homepage = "http://pediapress.com/code/";
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mwlib-rl/default.nix b/nixpkgs/pkgs/development/python-modules/mwlib-rl/default.nix
new file mode 100644
index 00000000000..21820d95c7f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mwlib-rl/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, 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 stdenv.lib; {
+ description = "Generate pdfs from mediawiki markup";
+ homepage = "http://pediapress.com/code/";
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mwlib/default.nix b/nixpkgs/pkgs/development/python-modules/mwlib/default.nix
new file mode 100644
index 00000000000..55a19e1a6da
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mwlib/default.nix
@@ -0,0 +1,55 @@
+{ stdenv
+, 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 stdenv.lib; {
+ description = "Library for parsing MediaWiki articles and converting them to different output formats";
+ homepage = "http://pediapress.com/code/";
+ license = licenses.bsd3;
+ # broken = true; # Requires different versions of packages
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mwoauth/default.nix b/nixpkgs/pkgs/development/python-modules/mwoauth/default.nix
new file mode 100644
index 00000000000..d22bd460f5f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mwoauth/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildPythonPackage
+, six
+, pyjwt
+, requests
+, oauthlib
+, requests_oauthlib
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "mwoauth";
+ version = "0.3.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8a57a315732733240e9522d3c4e370cbdf2c045d00fe0dab433d6119fa09038f";
+ };
+
+ # package has no tests
+ doCheck = false;
+
+ propagatedBuildInputs = [ six pyjwt requests oauthlib requests_oauthlib ];
+
+ meta = with lib; {
+ description = "A library designed to provide a simple means to performing an OAuth handshake with a MediaWiki installation with the OAuth Extension installed.";
+ homepage = https://github.com/mediawiki-utilities/python-mwoauth;
+ license = licenses.mit;
+ maintainers = with maintainers; [ ixxie ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mwparserfromhell/default.nix b/nixpkgs/pkgs/development/python-modules/mwparserfromhell/default.nix
new file mode 100644
index 00000000000..e52e033cdb0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mwparserfromhell/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "mwparserfromhell";
+ version = "0.5.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "aaf5416ab9b75e99e286f8a4216f77a2f7d834afd4c8f81731e701e59bf99305";
+ };
+
+ meta = with stdenv.lib; {
+ description = "MWParserFromHell is a parser for MediaWiki wikicode";
+ homepage = "https://mwparserfromhell.readthedocs.io/en/latest/";
+ license = licenses.mit;
+ maintainers = with maintainers; [ melling ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mxnet/default.nix b/nixpkgs/pkgs/development/python-modules/mxnet/default.nix
new file mode 100644
index 00000000000..65eb2d44ffc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mxnet/default.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, buildPythonPackage
+, pkgs
+, requests
+, numpy
+, graphviz
+, python
+, isPy3k
+}:
+
+buildPythonPackage {
+ inherit (pkgs.mxnet) name version src meta;
+
+ buildInputs = [ pkgs.mxnet ];
+ propagatedBuildInputs = [ requests numpy graphviz ];
+
+ LD_LIBRARY_PATH = stdenv.lib.makeLibraryPath [ pkgs.mxnet ];
+
+ doCheck = !isPy3k;
+
+ postPatch = ''
+ substituteInPlace python/setup.py \
+ --replace "graphviz<0.9.0," "graphviz" \
+ --replace "numpy<=1.15.2," "numpy" \
+ --replace "requests<2.19.0," "requests"
+ '';
+
+ preConfigure = ''
+ cd python
+ '';
+
+ postInstall = ''
+ rm -rf $out/mxnet
+ ln -s ${pkgs.mxnet}/lib/libmxnet.so $out/${python.sitePackages}/mxnet
+ '';
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mygpoclient/default.nix b/nixpkgs/pkgs/development/python-modules/mygpoclient/default.nix
new file mode 100644
index 00000000000..5f30316eb71
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mygpoclient/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, buildPythonPackage, nose, minimock }:
+
+buildPythonPackage rec {
+ pname = "mypgoclient";
+ version = "1.8";
+
+ src = fetchFromGitHub {
+ owner = "gpodder";
+ repo = "mygpoclient";
+ rev = version;
+ sha256 = "0aa28wc55x3rxa7clwfv5v5500ffyaq0vkxaa3v01y1r93dxkdvp";
+ };
+
+ checkInputs = [ nose minimock ];
+
+ checkPhase = ''
+ nosetests
+ '';
+
+ doCheck = (!stdenv.isDarwin);
+
+ meta = with stdenv.lib; {
+ description = "A gpodder.net client library";
+ longDescription = ''
+ The mygpoclient library allows developers to utilize a Pythonic interface
+ to the gpodder.net web services.
+ '';
+ homepage = https://github.com/gpodder/mygpoclient;
+ license = with licenses; [ gpl3 ];
+ maintainers = with maintainers; [ skeidel ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mypy-protobuf/default.nix b/nixpkgs/pkgs/development/python-modules/mypy-protobuf/default.nix
new file mode 100644
index 00000000000..a06a378a076
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mypy-protobuf/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchPypi, buildPythonApplication, protobuf }:
+
+buildPythonApplication rec {
+ pname = "mypy-protobuf";
+ version = "1.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "be1f14b0b841b49adb2f6018eaa1ce9529c8147eb561909baaa757e8cf9e821b";
+ };
+
+ propagatedBuildInputs = [ protobuf ];
+
+ meta = with stdenv.lib; {
+ description = "Generate mypy stub files from protobuf specs";
+ homepage = "https://github.com/dropbox/mypy-protobuf";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ lnl7 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mypy/default.nix b/nixpkgs/pkgs/development/python-modules/mypy/default.nix
new file mode 100644
index 00000000000..d4361baf903
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mypy/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchPypi, buildPythonPackage, typed-ast, psutil, isPy3k
+,mypy_extensions }:
+
+buildPythonPackage rec {
+ pname = "mypy";
+ version = "0.711";
+
+ # Tests not included in pip package.
+ doCheck = false;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0s1kwi1dhrv55v0c9w7c1g6mq5d2dpw7x1jj5mcnniw77mclmvdv";
+ };
+
+ disabled = !isPy3k;
+
+ propagatedBuildInputs = [ typed-ast psutil mypy_extensions ];
+
+ meta = with stdenv.lib; {
+ description = "Optional static typing for Python";
+ homepage = "http://www.mypy-lang.org";
+ license = licenses.mit;
+ maintainers = with maintainers; [ martingms lnl7 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mypy/extensions.nix b/nixpkgs/pkgs/development/python-modules/mypy/extensions.nix
new file mode 100644
index 00000000000..36407fd684a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mypy/extensions.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchPypi, buildPythonPackage, typing, pythonOlder }:
+
+buildPythonPackage rec {
+ pname = "mypy_extensions";
+ version = "0.4.1";
+
+ # Tests not included in pip package.
+ doCheck = false;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "04h8brrbbx151dfa2cvvlnxgmb5wa00mhd2z7nd20s8kyibfkq1p";
+ };
+
+ propagatedBuildInputs = if pythonOlder "3.5" then [ typing ] else [ ];
+
+ meta = with stdenv.lib; {
+ description = "Experimental type system extensions for programs checked with the mypy typechecker";
+ homepage = "http://www.mypy-lang.org";
+ license = licenses.mit;
+ maintainers = with maintainers; [ martingms lnl7 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mysql-connector/default.nix b/nixpkgs/pkgs/development/python-modules/mysql-connector/default.nix
new file mode 100644
index 00000000000..1db93922725
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mysql-connector/default.nix
@@ -0,0 +1,33 @@
+{ lib, buildPythonPackage, fetchFromGitHub
+, protobuf
+}:
+
+buildPythonPackage rec {
+ pname = "mysql-connector";
+ version = "8.0.17";
+
+ src = fetchFromGitHub {
+ owner = "mysql";
+ repo = "mysql-connector-python";
+ rev = version;
+ sha256 = "1by0g7hrbmb1wj2wh3q9y92mjimck2izh1i4fm1xfbp278p2acbd";
+ };
+
+ propagatedBuildInputs = [ protobuf ];
+
+ # Tests are failing (TODO: unknown reason)
+ # TypeError: __init__() missing 1 required positional argument: 'string'
+ # But the library should be working as expected.
+ doCheck = false;
+
+ meta = {
+ description = "A MySQL driver";
+ longDescription = ''
+ A MySQL driver that does not depend on MySQL C client libraries and
+ implements the DB API v2.0 specification.
+ '';
+ homepage = https://github.com/mysql/mysql-connector-python;
+ license = [ lib.licenses.gpl2 ];
+ maintainers = with lib.maintainers; [ primeos ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mysqlclient/default.nix b/nixpkgs/pkgs/development/python-modules/mysqlclient/default.nix
new file mode 100644
index 00000000000..488f6f9a7bb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mysqlclient/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, buildPythonPackage, fetchPypi, mysql }:
+
+buildPythonPackage rec {
+ pname = "mysqlclient";
+ version = "1.4.4";
+
+ nativeBuildInputs = [
+ mysql.connector-c
+ ];
+
+ buildInputs = [
+ mysql.connector-c
+ ];
+
+ # Tests need a MySQL database
+ doCheck = false;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1379hab7spjp9v5fypqgy0b8vr8vnalxahm9hcsxvj2xbb2pqwww";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Python interface to MySQL";
+ homepage = "https://github.com/PyMySQL/mysqlclient-python";
+ license = licenses.gpl1;
+ maintainers = with maintainers; [ y0no ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/namebench/default.nix b/nixpkgs/pkgs/development/python-modules/namebench/default.nix
new file mode 100644
index 00000000000..a930f250d80
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/namebench/default.nix
@@ -0,0 +1,50 @@
+{ stdenv
+, buildPythonPackage
+, isPy3k
+, isPyPy
+, fetchurl
+, tkinter
+}:
+
+buildPythonPackage rec {
+ pname = "namebench";
+ version = "1.3.1";
+ disabled = isPy3k || isPyPy;
+
+ src = fetchurl {
+ url = "http://namebench.googlecode.com/files/${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 stdenv.lib; {
+ homepage = http://namebench.googlecode.com/;
+ description = "Find fastest DNS servers available";
+ license = with licenses; [
+ asl20
+ # third-party program licenses (embedded in the sources)
+ "LGPL" # Crystal_Clear
+ free # dns
+ asl20 # graphy
+ "BSD" # jinja2
+ ];
+ longDescription = ''
+ It hunts down the fastest DNS servers available for your computer to
+ use. namebench runs a fair and thorough benchmark using your web
+ browser history, tcpdump output, or standardized datasets in order
+ to provide an individualized recommendation. namebench is completely
+ free and does not modify your system in any way.
+ '';
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/namedlist/default.nix b/nixpkgs/pkgs/development/python-modules/namedlist/default.nix
new file mode 100644
index 00000000000..ae07076bb05
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/namedlist/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "namedlist";
+ version = "1.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "11n9c4a5ak9971awkf1g92m6mcmiprhrw98ik2cmjsqxmz73j2qr";
+ };
+
+ # Test file has a `unittest.main()` at the bottom that fails the tests;
+ # py.test can run the tests without it.
+ postPatch = ''
+ substituteInPlace test/test_namedlist.py --replace "unittest.main()" ""
+ '';
+
+ checkInputs = [ pytest ];
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = {
+ description = "Similar to namedtuple, but instances are mutable";
+ homepage = https://bitbucket.org/ericvsmith/namedlist;
+ license = lib.licenses.asl20;
+ maintainers = with lib.maintainers; [ ivan ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nameparser/default.nix b/nixpkgs/pkgs/development/python-modules/nameparser/default.nix
new file mode 100644
index 00000000000..e8d2c209eb5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nameparser/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, glibcLocales
+}:
+
+buildPythonPackage rec {
+ pname = "nameparser";
+ version = "1.0.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1kc2phcz22r7vim3hmq0vrp2zqxl6v49hq40jmp4p81pdvgh5c6b";
+ };
+
+ LC_ALL="en_US.UTF-8";
+ buildInputs = [ glibcLocales ];
+
+ meta = with stdenv.lib; {
+ description = "A simple Python module for parsing human names into their individual components";
+ homepage = https://github.com/derek73/python-nameparser;
+ license = licenses.lgpl21Plus;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nanoleaf/default.nix b/nixpkgs/pkgs/development/python-modules/nanoleaf/default.nix
new file mode 100644
index 00000000000..ccf0be4ae6d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nanoleaf/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchPypi, requests }:
+
+buildPythonPackage rec {
+ pname = "nanoleaf";
+ version = "0.4.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "17dmxibfjmwnrs6ng5cmvfis3cv6iw267xb8n1pijy15y9dz0s8s";
+ };
+
+ prePatch = ''
+ sed -i '/^gitVersion =/d' setup.py
+ substituteInPlace setup.py --replace 'gitVersion' '"${version}"'
+ '';
+
+ propagatedBuildInputs = [ requests ];
+
+ meta = with stdenv.lib; {
+ description = "A python interface for Nanoleaf Aurora lighting";
+ homepage = https://github.com/software-2/nanoleaf;
+ license = licenses.mit;
+ maintainers = with maintainers; [ elseym ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nanomsg-python/default.nix b/nixpkgs/pkgs/development/python-modules/nanomsg-python/default.nix
new file mode 100644
index 00000000000..31662cd3941
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nanomsg-python/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, nanomsg }:
+
+buildPythonPackage {
+ pname = "nanomsg-python";
+ version = "1.0.20190114";
+
+ src = fetchFromGitHub {
+ owner = "tonysimpson";
+ repo = "nanomsg-python";
+ rev = "3acd9160f90f91034d4a43ce603aaa19fbaf1f2e";
+ sha256 = "1qgybcpmm9xxrn39alcgdcpvwphgm1glkbnwx0ljpz4nd1jsnyrl";
+ };
+
+ buildInputs = [ nanomsg ];
+
+ # Tests requires network connections
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Bindings for nanomsg";
+ homepage = https://github.com/tonysimpson/nanomsg-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ bgamari ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nanotime/default.nix b/nixpkgs/pkgs/development/python-modules/nanotime/default.nix
new file mode 100644
index 00000000000..8dd520a04e9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nanotime/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildPythonPackage, fetchPypi, nose }:
+
+buildPythonPackage rec {
+ pname = "nanotime";
+ version = "0.5.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c7cc231fc5f6db401b448d7ab51c96d0a4733f4b69fabe569a576f89ffdf966b";
+ };
+
+ checkInputs = [ nose ];
+
+ checkPhase = ''
+ nosetests
+ '';
+
+ # tests currently fail
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Provides a time object that keeps time as the number of nanoseconds since the UNIX epoch";
+ homepage = https://github.com/jbenet/nanotime/tree/master/python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ cmcdragonkai ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/natsort/default.nix b/nixpkgs/pkgs/development/python-modules/natsort/default.nix
new file mode 100644
index 00000000000..da8e953826f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/natsort/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchPypi
+, pytest
+, pytestcov
+, pytest-mock
+, hypothesis
+, glibcLocales
+, pathlib ? null
+}:
+
+buildPythonPackage rec {
+ pname = "natsort";
+ version = "6.0.0";
+
+ checkInputs = [
+ pytest
+ pytestcov
+ pytest-mock
+ hypothesis
+ glibcLocales
+ ]
+ # pathlib was made part of standard library in 3.5:
+ ++ (lib.optionals (pythonOlder "3.4") [ pathlib ]);
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ff3effb5618232866de8d26e5af4081a4daa9bb0dfed49ac65170e28e45f2776";
+ };
+
+ # testing based on project's tox.ini
+ checkPhase = ''
+ pytest --doctest-modules natsort
+ pytest
+ '';
+
+ meta = {
+ description = "Natural sorting for python";
+ homepage = https://github.com/SethMMorton/natsort;
+ license = lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/naturalsort/default.nix b/nixpkgs/pkgs/development/python-modules/naturalsort/default.nix
new file mode 100644
index 00000000000..f7dcbe4d827
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/naturalsort/default.nix
@@ -0,0 +1,20 @@
+{ lib, buildPythonPackage, fetchFromGitHub }:
+
+buildPythonPackage rec {
+ pname = "naturalsort";
+ version = "1.5.1";
+
+ src = fetchFromGitHub {
+ owner = "xolox";
+ repo = "python-naturalsort";
+ rev = version;
+ sha256 = "0w43vlddzh97hffnvxp2zkrns9qyirx5g8ijxnxkbx1c4b4gq5ih";
+ };
+
+ meta = with lib; {
+ description = "Simple natural order sorting API for Python that just works";
+ homepage = https://github.com/xolox/python-naturalsort;
+ license = licenses.mit;
+ maintainers = with maintainers; [ eyjhb ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nbconvert/default.nix b/nixpkgs/pkgs/development/python-modules/nbconvert/default.nix
new file mode 100644
index 00000000000..2f0090b5967
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nbconvert/default.nix
@@ -0,0 +1,56 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+, nose
+, glibcLocales
+, entrypoints
+, bleach
+, mistune
+, jinja2
+, pygments
+, traitlets
+, testpath
+, jupyter_core
+, nbformat
+, ipykernel
+, pandocfilters
+, tornado
+, jupyter_client
+, defusedxml
+}:
+
+buildPythonPackage rec {
+ pname = "nbconvert";
+ version = "5.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "138381baa41d83584459b5cfecfc38c800ccf1f37d9ddd0bd440783346a4c39c";
+ };
+
+ checkInputs = [ nose pytest glibcLocales ];
+
+ propagatedBuildInputs = [
+ entrypoints bleach mistune jinja2 pygments traitlets testpath
+ jupyter_core nbformat ipykernel pandocfilters tornado jupyter_client
+ defusedxml
+ ];
+
+ # disable preprocessor tests for ipython 7
+ # see issue https://github.com/jupyter/nbconvert/issues/898
+ checkPhase = ''
+ export LC_ALL=en_US.UTF-8
+ HOME=$(mktemp -d) py.test -v --ignore="nbconvert/preprocessors/tests/test_execute.py"
+ '';
+
+ # Some of the tests use localhost networking.
+ __darwinAllowLocalNetworking = true;
+
+ meta = {
+ description = "Converting Jupyter Notebooks";
+ homepage = https://jupyter.org/;
+ license = lib.licenses.bsd3;
+ maintainers = with lib.maintainers; [ fridh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nbformat/default.nix b/nixpkgs/pkgs/development/python-modules/nbformat/default.nix
new file mode 100644
index 00000000000..fbc71202d28
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nbformat/default.nix
@@ -0,0 +1,41 @@
+{ 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; [ fridh globin ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nbmerge/default.nix b/nixpkgs/pkgs/development/python-modules/nbmerge/default.nix
new file mode 100644
index 00000000000..79900197133
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nbmerge/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, nbformat
+, nose
+}:
+
+buildPythonPackage rec {
+ pname = "nbmerge";
+ version = "unstable-2017-10-23";
+
+ src = fetchFromGitHub {
+ owner = "jbn";
+ repo = pname;
+ rev = "fc0ba95e8422340317358ffec4404235defbc06a";
+ sha256 = "1cn550kjadnxc1sx2xy814248fpzrj3lgvrmsbrwmk03vwaa2hmi";
+ };
+
+ propagatedBuildInputs = [ nbformat ];
+ checkInputs = [ nose ];
+
+ checkPhase = ''
+ patchShebangs .
+ nosetests -v
+ PATH=$PATH:$out/bin ./cli_tests.sh
+ '';
+
+ meta = {
+ description = "A tool to merge/concatenate Jupyter (IPython) notebooks";
+ inherit (src.meta) homepage;
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nbsmoke/default.nix b/nixpkgs/pkgs/development/python-modules/nbsmoke/default.nix
new file mode 100644
index 00000000000..ee4434c1d1d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nbsmoke/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+, jupyter_client
+, ipykernel
+, nbformat
+, nbconvert
+, pyflakes
+, requests
+, beautifulsoup4
+}:
+
+buildPythonPackage rec {
+ pname = "nbsmoke";
+ version = "0.2.8";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "eeda6c59b61130b9116a3d935e7c80ec5f617d7db8918d23289b2426efa229eb";
+ };
+
+ propagatedBuildInputs = [
+ pytest
+ jupyter_client
+ ipykernel
+ nbformat
+ nbconvert
+ pyflakes
+ requests
+ beautifulsoup4
+ ];
+
+ # tests not included with pypi release
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Basic notebook checks and linting";
+ homepage = https://github.com/pyviz/nbsmoke;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nbsphinx/default.nix b/nixpkgs/pkgs/development/python-modules/nbsphinx/default.nix
new file mode 100644
index 00000000000..ad6de3d3175
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nbsphinx/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, docutils
+, jinja2
+, nbconvert
+, nbformat
+, sphinx
+, traitlets
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "nbsphinx";
+ version = "0.4.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b794219e465b3aab500b800884ff40fd152bb19d8b6f87580de1f3a07170aef8";
+ };
+
+ propagatedBuildInputs = [
+ docutils
+ jinja2
+ nbconvert
+ nbformat
+ sphinx
+ traitlets
+ ];
+
+ checkPhase = ''
+ ${python.interpreter} -m nbsphinx
+ '';
+
+ meta = with lib; {
+ description = "Jupyter Notebook Tools for Sphinx";
+ homepage = https://nbsphinx.readthedocs.io/;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nbval/default.nix b/nixpkgs/pkgs/development/python-modules/nbval/default.nix
new file mode 100644
index 00000000000..860142f1e94
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nbval/default.nix
@@ -0,0 +1,57 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, coverage
+, ipykernel
+, jupyter_client
+, nbformat
+, pytest
+, six
+, glibcLocales
+, matplotlib
+, sympy
+, pytestcov
+}:
+
+buildPythonPackage rec {
+ pname = "nbval";
+ version = "0.9.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0g8xl4158ngyhiynrkk72jpawnk4isznbijz0w085g269fps0vp2";
+ };
+
+ checkInputs = [
+ pytest
+ matplotlib
+ sympy
+ pytestcov
+ ];
+
+ buildInputs = [ glibcLocales ];
+
+ propagatedBuildInputs = [
+ coverage
+ ipykernel
+ jupyter_client
+ nbformat
+ pytest
+ six
+ ];
+
+ # ignore impure tests
+ checkPhase = ''
+ pytest tests --ignore tests/test_timeouts.py
+ '';
+
+ # Some of the tests use localhost networking.
+ __darwinAllowLocalNetworking = true;
+
+ meta = with lib; {
+ description = "A py.test plugin to validate Jupyter notebooks";
+ homepage = https://github.com/computationalmodelling/nbval;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nbxmpp/default.nix b/nixpkgs/pkgs/development/python-modules/nbxmpp/default.nix
new file mode 100644
index 00000000000..0f84486674e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nbxmpp/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, buildPythonPackage, fetchzip, pyopenssl, python }:
+
+let
+ pname = "nbxmpp";
+ version = "0.6.10";
+ name = "${pname}-${version}";
+in buildPythonPackage {
+ inherit pname version;
+ # Tests aren't included in PyPI tarball.
+ src = fetchzip {
+ name = "${name}.tar.bz2";
+ url = "https://dev.gajim.org/gajim/python-nbxmpp/repository/archive.tar.bz2?"
+ + "ref=${name}";
+ sha256 = "1w31a747mj9rvlp3n20z0fnvyvihphkgkyr22sk2kap3migw8vai";
+ };
+
+ propagatedBuildInputs = [ pyopenssl ];
+
+ checkPhase = ''
+ # Disable tests requiring networking
+ echo "" > test/unit/test_xmpp_transports_nb2.py
+ ${python.executable} test/runtests.py
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "https://dev.gajim.org/gajim/python-nbxmpp";
+ description = "Non-blocking Jabber/XMPP module";
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ abbradar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ncclient/default.nix b/nixpkgs/pkgs/development/python-modules/ncclient/default.nix
new file mode 100644
index 00000000000..02e2a1b472a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ncclient/default.nix
@@ -0,0 +1,39 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, paramiko
+, selectors2
+, lxml
+, nose
+, rednose
+}:
+
+buildPythonPackage rec {
+ pname = "ncclient";
+ version = "0.6.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2b367354d1cd25b79b8798a0b4c1949590d890057f2a252e6e970a9ab744e009";
+ };
+
+ checkInputs = [ nose rednose ];
+
+ propagatedBuildInputs = [
+ paramiko lxml selectors2
+ ];
+
+ checkPhase = ''
+ nosetests test --rednose --verbosity=3 --with-coverage --cover-package ncclient
+ '';
+
+ #Unfortunately the test hangs at te end
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = http://ncclient.org/;
+ description = "Python library for NETCONF clients";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ xnaveira ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ndg-httpsclient/default.nix b/nixpkgs/pkgs/development/python-modules/ndg-httpsclient/default.nix
new file mode 100644
index 00000000000..d9c7e41c576
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ndg-httpsclient/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, pyopenssl
+}:
+
+buildPythonPackage rec {
+ version = "0.5.1";
+ pname = "ndg-httpsclient";
+
+ propagatedBuildInputs = [ pyopenssl ];
+
+ src = fetchFromGitHub {
+ owner = "cedadev";
+ repo = "ndg_httpsclient";
+ rev = version;
+ sha256 = "0lhsgs4am4xyjssng5p0vkfwqncczj1dpa0vss4lrhzq86mnn5rz";
+ };
+
+ # uses networking
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/cedadev/ndg_httpsclient/;
+ description = "Provide enhanced HTTPS support for httplib and urllib2 using PyOpenSSL";
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ndtypes/default.nix b/nixpkgs/pkgs/development/python-modules/ndtypes/default.nix
new file mode 100644
index 00000000000..0d5923820d2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ndtypes/default.nix
@@ -0,0 +1,28 @@
+{ buildPythonPackage
+, numpy
+, libndtypes
+, isPy27
+}:
+
+buildPythonPackage {
+ pname = "ndtypes";
+ disabled = isPy27;
+ inherit (libndtypes) version src meta;
+
+ propagatedBuildInputs = [ numpy ];
+
+ postPatch = ''
+ substituteInPlace setup.py \
+ --replace 'include_dirs = ["libndtypes"]' \
+ 'include_dirs = ["${libndtypes}/include"]' \
+ --replace 'library_dirs = ["libndtypes"]' \
+ 'library_dirs = ["${libndtypes}/lib"]' \
+ --replace 'runtime_library_dirs = ["$ORIGIN"]' \
+ 'runtime_library_dirs = ["${libndtypes}/lib"]'
+ '';
+
+ postInstall = ''
+ mkdir $out/include
+ cp python/ndtypes/*.h $out/include
+ '';
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nest-asyncio/default.nix b/nixpkgs/pkgs/development/python-modules/nest-asyncio/default.nix
new file mode 100644
index 00000000000..59c13bc0a63
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nest-asyncio/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pythonAtLeast
+}:
+
+buildPythonPackage rec {
+ version = "1.0.0";
+ pname = "nest_asyncio";
+ disabled = !(pythonAtLeast "3.5");
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "bd1cb7df2ea979e57d8ad02493ad85f9afbf1fcea3dfe34239da8c0dda98087e";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/erdewit/nest_asyncio;
+ description = "Patch asyncio to allow nested event loops";
+ license = licenses.bsdOriginal;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/netaddr/default.nix b/nixpkgs/pkgs/development/python-modules/netaddr/default.nix
new file mode 100644
index 00000000000..ed56e6803f4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/netaddr/default.nix
@@ -0,0 +1,41 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, fetchpatch
+, glibcLocales
+}:
+
+buildPythonPackage rec {
+ pname = "netaddr";
+ version = "0.7.19";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "38aeec7cdd035081d3a4c306394b19d677623bf76fa0913f6695127c7753aefd";
+ };
+
+ LC_ALL = "en_US.UTF-8";
+ checkInputs = [ glibcLocales pytest ];
+
+ checkPhase = ''
+ # fails on python3.7: https://github.com/drkjam/netaddr/issues/182
+ py.test \
+ -k 'not test_ip_splitter_remove_prefix_larger_than_input_range' \
+ netaddr/tests
+ '';
+
+ patches = [
+ (fetchpatch {
+ url = https://github.com/drkjam/netaddr/commit/2ab73f10be7069c9412e853d2d0caf29bd624012.patch;
+ sha256 = "0s1cdn9v5alpviabhcjmzc0m2pnpq9dh2fnnk2x96dnry1pshg39";
+ })
+ ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/drkjam/netaddr/;
+ description = "A network address manipulation library for Python";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/netcdf4/default.nix b/nixpkgs/pkgs/development/python-modules/netcdf4/default.nix
new file mode 100644
index 00000000000..d3a1cfe3907
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/netcdf4/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPyPy, pytest
+, numpy, zlib, netcdf, hdf5, curl, libjpeg, cython, cftime
+}:
+buildPythonPackage rec {
+ pname = "netCDF4";
+ version = "1.5.1.2";
+
+ disabled = isPyPy;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "161pqb7xc9nj0dlnp6ply8c6zv68y1frq619xqfrpmc9s1932jzk";
+ };
+
+ checkInputs = [ pytest ];
+
+ buildInputs = [
+ cython
+ ];
+
+ propagatedBuildInputs = [
+ cftime
+ numpy
+ zlib
+ netcdf
+ hdf5
+ curl
+ libjpeg
+ ];
+
+ checkPhase = ''
+ py.test test/tst_*.py
+ '';
+
+ # Tests need fixing.
+ doCheck = false;
+
+ # Variables used to configure the build process
+ USE_NCCONFIG="0";
+ HDF5_DIR=hdf5;
+ NETCDF4_DIR=netcdf;
+ CURL_DIR=curl.dev;
+ JPEG_DIR=libjpeg.dev;
+
+ meta = with stdenv.lib; {
+ description = "Interface to netCDF library (versions 3 and 4)";
+ homepage = https://pypi.python.org/pypi/netCDF4;
+ license = licenses.free; # Mix of license (all MIT* like)
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/netdisco/default.nix b/nixpkgs/pkgs/development/python-modules/netdisco/default.nix
new file mode 100644
index 00000000000..1c9af258995
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/netdisco/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, buildPythonPackage, isPy3k, fetchPypi, requests, zeroconf, netifaces, pytest }:
+
+buildPythonPackage rec {
+ pname = "netdisco";
+ version = "2.6.0";
+
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2b3aca14a1807712a053f11fd80dc251dd821ee4899aefece515287981817762";
+ };
+
+ propagatedBuildInputs = [ requests zeroconf netifaces ];
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Python library to scan local network for services and devices";
+ homepage = https://github.com/home-assistant/netdisco;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ dotlambda ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/netifaces/default.nix b/nixpkgs/pkgs/development/python-modules/netifaces/default.nix
new file mode 100644
index 00000000000..1f1cc3857e4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/netifaces/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ version = "0.10.9";
+ pname = "netifaces";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2dee9ffdd16292878336a58d04a20f0ffe95555465fee7c9bd23b3490ef2abf3";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = https://alastairs-place.net/projects/netifaces/;
+ description = "Portable access to network interfaces from Python";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/networkx/default.nix b/nixpkgs/pkgs/development/python-modules/networkx/default.nix
new file mode 100644
index 00000000000..a4c66048953
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/networkx/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, nose
+, decorator
+, setuptools
+}:
+
+buildPythonPackage rec {
+ pname = "networkx";
+ # upgrade may break sage, please test the sage build or ping @timokau on upgrade
+ version = "2.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "12swxb15299v9vqjsq4z8rgh5sdhvpx497xwnhpnb0gynrx6zra5";
+ };
+
+ checkInputs = [ nose ];
+ propagatedBuildInputs = [ decorator setuptools ];
+
+ meta = {
+ homepage = "https://networkx.github.io/";
+ description = "Library for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks";
+ license = lib.licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/neuronpy/default.nix b/nixpkgs/pkgs/development/python-modules/neuronpy/default.nix
new file mode 100644
index 00000000000..1d258effda7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/neuronpy/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, numpy
+, matplotlib
+, scipy
+, isPy27
+}:
+
+buildPythonPackage rec {
+ pname = "neuronpy";
+ version = "0.1.6";
+ disabled = !isPy27;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1clhc2b5fy2l8nfrji4dagmj9419nj6kam090yqxhq5c28sngk25";
+ };
+
+ propagatedBuildInputs = [ numpy matplotlib scipy ];
+
+ #No tests included
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Interfaces and utilities for the NEURON simulator and analysis of neural data";
+ maintainers = [ maintainers.nico202 ];
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/neurotools/default.nix b/nixpkgs/pkgs/development/python-modules/neurotools/default.nix
new file mode 100644
index 00000000000..b117d7a79a3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/neurotools/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k
+, scipy, numpy, matplotlib, tables, pyaml, urllib3, rpy2, mpi4py }:
+
+buildPythonPackage rec {
+ pname = "NeuroTools";
+ version = "0.3.1";
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0ly6qa87l3afhksab06vp1iimlbm1kdnsw98mxcnpzz9q07l4nd4";
+ };
+
+ # Tests are not automatically run
+ # Many tests fail (using py.test), and some need R
+ doCheck = false;
+
+ propagatedBuildInputs = [
+ scipy
+ numpy
+ matplotlib
+ tables
+ pyaml
+ urllib3
+ rpy2
+ mpi4py
+ ];
+
+ meta = with stdenv.lib; {
+ description = "Collection of tools to support analysis of neural activity";
+ homepage = https://pypi.python.org/pypi/NeuroTools;
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ nico202 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nevow/default.nix b/nixpkgs/pkgs/development/python-modules/nevow/default.nix
new file mode 100644
index 00000000000..fa11ab3fb90
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nevow/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k, twisted }:
+
+buildPythonPackage rec {
+ pname = "Nevow";
+ version = "0.14.4";
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit version pname;
+ sha256 = "2299a0d2a0c1312040705599d5d571acfea74df82b968c0b9264f6f45266cf6e";
+ };
+
+ propagatedBuildInputs = [ twisted ];
+
+ checkInputs = [ twisted ];
+
+ checkPhase = ''
+ trial formless nevow
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Nevow, a web application construction kit for Python";
+ longDescription = ''
+ Nevow - Pronounced as the French "nouveau", or "noo-voh", Nevow
+ is a web application construction kit written in Python. It is
+ designed to allow the programmer to express as much of the view
+ logic as desired in Python, and includes a pure Python XML
+ expression syntax named stan to facilitate this. However it
+ also provides rich support for designer-edited templates, using
+ a very small XML attribute language to provide bi-directional
+ template manipulation capability.
+
+ Nevow also includes formless, a declarative syntax for
+ specifying the types of method parameters and exposing these
+ methods to the web. Forms can be rendered automatically, and
+ form posts will be validated and input coerced, rendering error
+ pages if appropriate. Once a form post has validated
+ successfully, the method will be called with the coerced values.
+ '';
+ homepage = https://github.com/twisted/nevow;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nibabel/default.nix b/nixpkgs/pkgs/development/python-modules/nibabel/default.nix
new file mode 100644
index 00000000000..365f741c57f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nibabel/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, bz2file
+, mock
+, nose
+, numpy
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "nibabel";
+ version = "2.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "07v1gsq1v43v0z06cnp82ij9sqx3972c9bc6vsdj7pa9ddpa2yjw";
+ };
+
+ propagatedBuildInputs = [
+ numpy
+ six
+ ] ++ lib.optional (!isPy3k) bz2file;
+
+ checkInputs = [ nose mock ];
+
+ checkPhase = ''
+ nosetests
+ '';
+
+ meta = with lib; {
+ homepage = https://nipy.org/nibabel/;
+ description = "Access a multitude of neuroimaging data formats";
+ license = licenses.mit;
+ maintainers = with maintainers; [ ashgillman ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nilearn/default.nix b/nixpkgs/pkgs/development/python-modules/nilearn/default.nix
new file mode 100644
index 00000000000..2da580abd92
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nilearn/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, buildPythonPackage, fetchPypi, nose, nibabel, numpy, scikitlearn
+, scipy, matplotlib }:
+
+buildPythonPackage rec {
+ pname = "nilearn";
+ version = "0.5.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "18b763d641e6903bdf8512e0ec5cdc14133fb4679e9a15648415e9be62c81b56";
+ };
+
+ # disable some failing tests
+ checkPhase = ''
+ nosetests nilearn/tests \
+ -e test_cache_mixin_with_expand_user -e test_clean_confounds -e test_detrend \
+ -e test_clean_detrending -e test_high_variance_confounds
+ '';
+
+ checkInputs = [ nose ];
+
+ propagatedBuildInputs = [
+ matplotlib
+ nibabel
+ numpy
+ scikitlearn
+ scipy
+ ];
+
+ meta = with stdenv.lib; {
+ homepage = http://nilearn.github.io;
+ description = "A module for statistical learning on neuroimaging data";
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nimfa/default.nix b/nixpkgs/pkgs/development/python-modules/nimfa/default.nix
new file mode 100644
index 00000000000..26f1ea3294b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nimfa/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, numpy
+, scipy
+, matplotlib
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "nimfa";
+ version = "1.3.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "651376eba6b049fe270dc0d29d4b2abecb5e998c2013df6735a97875503e2ffe";
+ };
+
+ propagatedBuildInputs = [ numpy scipy ];
+ checkInputs = [ matplotlib pytest ];
+ doCheck = !isPy3k; # https://github.com/marinkaz/nimfa/issues/42
+
+ meta = with stdenv.lib; {
+ description = "Nonnegative matrix factorization library";
+ homepage = "http://nimfa.biolab.si";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ ashgillman ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nine/default.nix b/nixpkgs/pkgs/development/python-modules/nine/default.nix
new file mode 100644
index 00000000000..8882b6ae745
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nine/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "nine";
+ version = "1.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "3064fbeb512e756a415606a1399f49c22de867d5ac7e2b6c91c35e757d3af42d";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Let's write Python 3 right now!";
+ homepage = "https://github.com/nandoflorestan/nine";
+ license = licenses.free;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nipy/default.nix b/nixpkgs/pkgs/development/python-modules/nipy/default.nix
new file mode 100644
index 00000000000..5b8c1e5185d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nipy/default.nix
@@ -0,0 +1,49 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, nose
+, matplotlib
+, nibabel
+, numpy
+, scipy
+, sympy
+, python
+}:
+
+buildPythonPackage rec {
+ version = "0.4.2";
+ pname = "nipy";
+ disabled = pythonOlder "2.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1pn731nsczrx198i2gadffqmfbhviglrclv6xxwhnbv6w5hfs2yk";
+ };
+
+ buildInputs = stdenv.lib.optional doCheck [ nose ];
+ propagatedBuildInputs = [ matplotlib nibabel numpy scipy sympy ];
+
+ checkPhase = '' # wants to be run in a different directory
+ mkdir nosetests
+ cd nosetests
+ ${python.interpreter} -c "import nipy; nipy.test()"
+ rm -rf .
+ '';
+
+ # failing test:
+ # nipy.algorithms.statistics.models.tests.test_olsR.test_results(11.593139639404727, 11.593140144880794, 6) # disagrees by 1 at 6th decimal place
+ # erroring tests:
+ # nipy.modalities.fmri.fmristat.tests.test_FIAC.test_altprotocol
+ # nipy.modalities.fmri.fmristat.tests.test_FIAC.test_agreement
+ # nipy.tests.test_scripts.test_nipy_4d_realign # because `nipy_4d_realign` script isn't found at test time; works from nix-shell, so could be patched
+ # nipy.tests.test_scripts.test_nipy_3_4d # ditto re.: `nipy_3_4d` script
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://nipy.org/nipy/;
+ description = "Software for structural and functional neuroimaging analysis";
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nipype/default.nix b/nixpkgs/pkgs/development/python-modules/nipype/default.nix
new file mode 100644
index 00000000000..5f33a5fe63c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nipype/default.nix
@@ -0,0 +1,105 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+# python dependencies
+, click
+, configparser ? null
+, dateutil
+, funcsigs
+, future
+, futures
+, mock
+, networkx
+, nibabel
+, numpy
+, packaging
+, prov
+, psutil
+, pybids
+, pydot
+, pytest
+, pytest_xdist
+, pytest-forked
+, scipy
+, simplejson
+, traits
+, xvfbwrapper
+, pytestcov
+, codecov
+# other dependencies
+, which
+, bash
+, glibcLocales
+, callPackage
+}:
+
+assert !isPy3k -> configparser != null;
+
+let
+
+ # This is a temporary convenience package for changes waiting to be merged into the primary rdflib repo.
+ neurdflib = callPackage ./neurdflib.nix { };
+
+in
+
+buildPythonPackage rec {
+ pname = "nipype";
+ version = "1.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "09azgfmb0992c3xqmi7n93pz95i4v37vc9kqmjh8c9jjxjzszdd5";
+ };
+
+ postPatch = ''
+ substituteInPlace nipype/interfaces/base/tests/test_core.py \
+ --replace "/usr/bin/env bash" "${bash}/bin/bash"
+ '';
+
+ propagatedBuildInputs = [
+ click
+ dateutil
+ funcsigs
+ future
+ networkx
+ neurdflib
+ nibabel
+ numpy
+ packaging
+ prov
+ psutil
+ pydot
+ scipy
+ simplejson
+ traits
+ xvfbwrapper
+ ] ++ stdenv.lib.optional (!isPy3k) [
+ configparser
+ futures
+ ];
+
+ checkInputs = [
+ pybids
+ codecov
+ glibcLocales
+ mock
+ pytest
+ pytest-forked
+ pytest_xdist
+ pytestcov
+ which
+ ];
+
+ # ignore tests which incorrect fail to detect xvfb
+ checkPhase = ''
+ LC_ALL="en_US.UTF-8" pytest -v nipype -k 'not display'
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://nipy.org/nipype/;
+ description = "Neuroimaging in Python: Pipelines and Interfaces";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ ashgillman ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nipype/neurdflib.nix b/nixpkgs/pkgs/development/python-modules/nipype/neurdflib.nix
new file mode 100644
index 00000000000..3042f715687
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nipype/neurdflib.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, isodate
+, html5lib
+, SPARQLWrapper
+, networkx
+, nose
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "neurdflib";
+ version = "5.0.0.post1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1qgmprixqxycxpjk9wjdmjykma14qqa2wcbx4nsldxi0ga7i7vv5";
+ };
+
+ propagatedBuildInputs = [ isodate html5lib SPARQLWrapper ];
+
+ checkInputs = [ networkx nose ];
+
+ # Python 2 syntax
+ # Failing doctest
+ doCheck = false;
+
+ checkPhase = ''
+ ${python.interpreter} run_tests.py
+ '';
+
+ meta = with lib; {
+ description = "A temporary convenience package for changes waiting to be merged into the primary rdflib repo";
+ homepage = https://pypi.org/project/neurdflib;
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nixpkgs-pytools/default.nix b/nixpkgs/pkgs/development/python-modules/nixpkgs-pytools/default.nix
new file mode 100644
index 00000000000..4a943e32d4c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nixpkgs-pytools/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, jinja2
+, setuptools
+, isPy27
+}:
+
+buildPythonPackage rec {
+ pname = "nixpkgs-pytools";
+ version = "1.0.1";
+ disabled = isPy27;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0796c6e95daeb3d7e61c9c53126d95ba6a48f84b995b12b60f45619caf28a574";
+ };
+
+ propagatedBuildInputs = [
+ jinja2
+ setuptools
+ ];
+
+ # tests require network ..
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Tools for removing the tedious nature of creating nixpkgs derivations";
+ homepage = https://github.com/nix-community/nixpkgs-pytools;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nixpkgs/default.nix b/nixpkgs/pkgs/development/python-modules/nixpkgs/default.nix
new file mode 100644
index 00000000000..66e8bb2a735
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nixpkgs/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pbr
+, pythonix
+, pythonAtLeast
+}:
+
+buildPythonPackage rec {
+ pname = "nixpkgs";
+ version = "0.2.4";
+ disabled = ! pythonAtLeast "3.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0dlvq4bpamhlva86042wlc0xxfsxlpdgm2adfb1c6y3vjgbm0nvd";
+ };
+
+ buildInputs = [ pbr ];
+ propagatedBuildInputs = [ pythonix ];
+
+ meta = with stdenv.lib; {
+ description = "Allows to `from nixpkgs import` stuff in interactive Python sessions";
+ homepage = https://github.com/t184256/nixpkgs-python-importer;
+ license = licenses.mit;
+ maintainers = with maintainers; [ t184256 ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nltk/default.nix b/nixpkgs/pkgs/development/python-modules/nltk/default.nix
new file mode 100644
index 00000000000..ef6d51cb19a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nltk/default.nix
@@ -0,0 +1,29 @@
+{ fetchPypi, buildPythonPackage, lib, six, singledispatch, isPy3k }:
+
+buildPythonPackage rec {
+ version = "3.4.5";
+ pname = "nltk";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "153x2clrnigs74jdgnn3qmljdjj4gprmvpdvh49i18ls4m8mbm5y";
+ };
+
+ propagatedBuildInputs = [ six ] ++ 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
+ # that into the tests (given that we need nltk itself to download the data,
+ # unless there's an easy way to download it without nltk's downloader) might
+ # be complicated. For now let's just disable the tests and hope for the
+ # best.
+ doCheck = false;
+
+ meta = {
+ description = "Natural Language Processing ToolKit";
+ homepage = http://nltk.org/;
+ license = lib.licenses.asl20;
+ maintainers = with lib.maintainers; [ lheckemann ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nmigen-boards/default.nix b/nixpkgs/pkgs/development/python-modules/nmigen-boards/default.nix
new file mode 100644
index 00000000000..4151d08b60f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nmigen-boards/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, nmigen
+}:
+
+buildPythonPackage rec {
+ pname = "nmigen-boards";
+ version = "unstable-2019-08-30";
+ realVersion = lib.substring 0 7 src.rev;
+
+ src = fetchFromGitHub {
+ owner = "m-labs";
+ repo = "nmigen-boards";
+ rev = "3b80b3a3749ae8f123ff258a25e81bd21412aed4";
+ sha256 = "01qynxip8bq23jfjc5wjd97vxfvhld2zb8sxphwf0zixrmmyaspi";
+ };
+
+ propagatedBuildInputs = [ nmigen ];
+
+ postPatch = ''
+ substituteInPlace setup.py \
+ --replace 'versioneer.get_version()' '"${realVersion}"'
+ '';
+
+ meta = with lib; {
+ description = "Board and connector definitions for nMigen";
+ homepage = https://github.com/m-labs/nmigen-boards;
+ license = licenses.bsd0;
+ maintainers = with maintainers; [ emily ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nmigen/default.nix b/nixpkgs/pkgs/development/python-modules/nmigen/default.nix
new file mode 100644
index 00000000000..345ba982b0b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nmigen/default.nix
@@ -0,0 +1,65 @@
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchFromGitHub
+, pyvcd
+, bitarray
+, jinja2
+
+# nmigen.{test,build} call out to these
+, yosys
+, symbiyosys
+, nextpnr ? null
+, icestorm ? null
+, trellis ? null
+
+# for tests
+, yices
+}:
+
+buildPythonPackage rec {
+ pname = "nmigen";
+ version = "unstable-2019-08-31";
+ realVersion = lib.substring 0 7 src.rev;
+
+ src = fetchFromGitHub {
+ owner = "m-labs";
+ repo = "nmigen";
+ rev = "2e206220462c67aa6ae97f7515a2191440fd61b3";
+ sha256 = "0y3w6vd493jqm9b8ppgwzs02v1al8w1n5gylljlsw70ci7fyk4qa";
+ };
+
+ disabled = pythonOlder "3.6";
+
+ propagatedBuildInputs = [ pyvcd bitarray jinja2 ];
+
+ checkInputs = [ yosys yices ];
+
+ postPatch = let
+ tool = pkg: name:
+ if pkg == null then {} else { ${name} = "${pkg}/bin/${name}"; };
+
+ # Only FOSS toolchain supported out of the box, sorry!
+ toolchainOverrides =
+ tool yosys "yosys" //
+ tool symbiyosys "sby" //
+ tool nextpnr "nextpnr-ice40" //
+ tool nextpnr "nextpnr-ecp5" //
+ tool icestorm "icepack" //
+ tool trellis "ecppack";
+ in ''
+ substituteInPlace setup.py \
+ --replace 'versioneer.get_version()' '"${realVersion}"'
+
+ substituteInPlace nmigen/_toolchain.py \
+ --replace 'overrides = {}' \
+ 'overrides = ${builtins.toJSON toolchainOverrides}'
+ '';
+
+ meta = with lib; {
+ description = "A refreshed Python toolbox for building complex digital hardware";
+ homepage = https://github.com/m-labs/nmigen;
+ license = licenses.bsd0;
+ maintainers = with maintainers; [ emily ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/node-semver/default.nix b/nixpkgs/pkgs/development/python-modules/node-semver/default.nix
new file mode 100644
index 00000000000..1c38918c147
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/node-semver/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchPypi, buildPythonPackage, pytest }:
+
+buildPythonPackage rec {
+ version = "0.7.0";
+ pname = "node-semver";
+
+ checkInputs = [ pytest ];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1p7ink1wajkc31r05k1yn37gk377033a9vhin8v4j757d4ha1f91";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/podhmo/python-semver;
+ description = "A port of node-semver";
+ license = licenses.mit;
+ platforms = platforms.all;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nodeenv/default.nix b/nixpkgs/pkgs/development/python-modules/nodeenv/default.nix
new file mode 100644
index 00000000000..042ee1e3e61
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nodeenv/default.nix
@@ -0,0 +1,20 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "nodeenv";
+ version = "1.3.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ad8259494cf1c9034539f6cced78a1da4840a4b157e23640bc4a0c0546b0cb7a";
+ };
+
+ # Tests not included in PyPI tarball
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Node.js virtual environment builder";
+ homepage = https://github.com/ekalinin/nodeenv;
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/noise/default.nix b/nixpkgs/pkgs/development/python-modules/noise/default.nix
new file mode 100644
index 00000000000..d136c41aa37
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/noise/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "noise";
+ version = "1.2.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0rcv40dcshqpchwkdlhsv3n68h9swm9fh4d1cgzr2hsp6rs7k8jp";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/caseman/noise;
+ description = "Native-code and shader implementations of Perlin noise";
+ license = licenses.mit;
+ platforms = platforms.all;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nose-cov/default.nix b/nixpkgs/pkgs/development/python-modules/nose-cov/default.nix
new file mode 100644
index 00000000000..1d3d6179ae6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nose-cov/default.nix
@@ -0,0 +1,20 @@
+{ buildPythonPackage, fetchPypi, lib, nose, covCore }:
+
+buildPythonPackage rec {
+ pname = "nose-cov";
+ version = "1.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "04j4fw01bv648gimqqj4z88606lcczbm1k326agcc74gb4sh7v4b";
+ };
+
+ propagatedBuildInputs = [ nose covCore ];
+
+ meta = with lib; {
+ homepage = https://pypi.org/project/nose-cov/;
+ license = licenses.mit;
+ description = "This plugin produces coverage reports. It also supports coverage of subprocesses.";
+ maintainers = with maintainers; [ ma27 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nose-cover3/default.nix b/nixpkgs/pkgs/development/python-modules/nose-cover3/default.nix
new file mode 100644
index 00000000000..273c0ab042f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nose-cover3/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+}:
+
+buildPythonPackage rec {
+ pname = "nose-cover3";
+ version = "0.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1la4hhc1yszjpcchvkqk5xmzlb2g1b3fgxj9wwc58qc549whlcc1";
+ };
+
+ propagatedBuildInputs = [ nose ];
+
+ # No tests included
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Coverage 3.x support for Nose";
+ homepage = https://github.com/ask/nosecover3;
+ license = licenses.lgpl21;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nose-cprof/default.nix b/nixpkgs/pkgs/development/python-modules/nose-cprof/default.nix
new file mode 100644
index 00000000000..c8bc7dbaf68
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nose-cprof/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+}:
+
+
+buildPythonPackage rec {
+ pname = "nose-cprof";
+ version = "0.2.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0178834759b63dc50388444d4ff8d1ae84e1ba110bb167419afee6bf4699b119";
+ };
+
+ buildInputs = [ nose ];
+
+ meta = with stdenv.lib; {
+ description = "A python nose plugin to profile using cProfile rather than the default Hotshot profiler";
+ homepage = https://github.com/msherry/nose-cprof;
+ license = licenses.bsd0;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nose-exclude/default.nix b/nixpkgs/pkgs/development/python-modules/nose-exclude/default.nix
new file mode 100644
index 00000000000..7eb6b6cc047
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nose-exclude/default.nix
@@ -0,0 +1,24 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, nose
+}:
+
+buildPythonPackage rec {
+ pname = "nose-exclude";
+ version = "0.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f78fa8b41eeb815f0486414f710f1eea0949e346cfb11d59ba6295ed69e84304";
+ };
+
+ propagatedBuildInputs = [ nose ];
+
+ meta = {
+ license = lib.licenses.lgpl21;
+ description = "Exclude specific directories from nosetests runs";
+ homepage = https://github.com/kgrandis/nose-exclude;
+ maintainers = with lib.maintainers; [ fridh ];
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/nose-focus/default.nix b/nixpkgs/pkgs/development/python-modules/nose-focus/default.nix
new file mode 100644
index 00000000000..ef86a35b304
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nose-focus/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, 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 stdenv.lib; {
+ description = "Decorator and plugin to make nose focus on specific tests";
+ homepage = https://nose-focus.readthedocs.io/en/latest/;
+ license = licenses.wtfpl;
+ maintainers = with maintainers; [ jluttine ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nose-of-yeti/default.nix b/nixpkgs/pkgs/development/python-modules/nose-of-yeti/default.nix
new file mode 100644
index 00000000000..7a783da3117
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nose-of-yeti/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, 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 stdenv.lib; {
+ description = "Nose plugin providing BDD dsl for python";
+ homepage = https://github.com/delfick/nose-of-yeti;
+ license = licenses.mit;
+ maintainers = with maintainers; [ jluttine ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nose-pattern-exclude/default.nix b/nixpkgs/pkgs/development/python-modules/nose-pattern-exclude/default.nix
new file mode 100644
index 00000000000..24d74b938af
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nose-pattern-exclude/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, fetchPypi, nose }:
+
+buildPythonPackage rec {
+ pname = "nose-pattern-exclude";
+ version = "0.1.3";
+
+ propagatedBuildInputs = [ nose ];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0apzxx8lavsdlxlpaxqw1snx5p7q8v5dfbip6v32f9pj2vyain1i";
+ };
+
+ # There are no tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Exclude specific files and directories from nosetests runs";
+ homepage = https://github.com/jakubroztocil/nose-pattern-exclude;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ jluttine ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nose-randomly/default.nix b/nixpkgs/pkgs/development/python-modules/nose-randomly/default.nix
new file mode 100644
index 00000000000..23315f9531b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nose-randomly/default.nix
@@ -0,0 +1,29 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, nose
+, numpy
+}:
+
+buildPythonPackage rec {
+ pname = "nose-randomly";
+ version = "1.2.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "7e483a3d79e13ae760d6ade57ae07ae45bb4b223b61a805e958b4c077116c67c";
+ };
+
+ checkInputs = [ numpy nose ];
+
+ checkPhase = ''
+ nosetests
+ '';
+
+ meta = with lib; {
+ description = "Nose plugin to randomly order tests and control random.seed";
+ homepage = https://github.com/adamchainz/nose-randomly;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nose/default.nix b/nixpkgs/pkgs/development/python-modules/nose/default.nix
new file mode 100644
index 00000000000..bec5156d22e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nose/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+, coverage
+}:
+
+buildPythonPackage rec {
+ version = "1.3.7";
+ pname = "nose";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f1bffef9cbc82628f6e7d7b40d7e255aefaa1adb6a1b1d26c69a8b79e6208a98";
+ };
+
+ propagatedBuildInputs = [ coverage ];
+
+ doCheck = false; # lot's of transient errors, too much hassle
+ checkPhase = if python.is_py3k or false then ''
+ ${python}/bin/${python.executable} setup.py build_tests
+ '' else "" + ''
+ rm functional_tests/test_multiprocessing/test_concurrent_shared.py* # see https://github.com/nose-devs/nose/commit/226bc671c73643887b36b8467b34ad485c2df062
+ ${python}/bin/${python.executable} selftest.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A unittest-based testing framework for python that makes writing and running tests easier";
+ homepage = http://readthedocs.org/docs/nose/;
+ license = licenses.lgpl3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nose2/default.nix b/nixpkgs/pkgs/development/python-modules/nose2/default.nix
new file mode 100644
index 00000000000..749a4d4618b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nose2/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+, pythonOlder
+, mock
+, coverage
+}:
+
+buildPythonPackage rec {
+ pname = "nose2";
+ version = "0.9.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "16drs4bc2wvgwwi1pf6pmk6c00pl16vs1v7djc4a8kwpsxpibphf";
+ };
+
+ propagatedBuildInputs = [ six coverage ]
+ ++ stdenv.lib.optionals (pythonOlder "3.4") [ mock ];
+
+ # AttributeError: 'module' object has no attribute 'collector'
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "nose2 is the next generation of nicer testing for Python";
+ homepage = https://github.com/nose-devs/nose2;
+ license = licenses.bsd0;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nose_progressive/default.nix b/nixpkgs/pkgs/development/python-modules/nose_progressive/default.nix
new file mode 100644
index 00000000000..6d9d98f27ab
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nose_progressive/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, pillow
+, blessings
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "nose-progressive";
+ version = "1.5.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1mzmgq0wnfizmg9m2wn0c9g9282rdgv1jnphp8ww5h8kwqrjhvis";
+ };
+
+ buildInputs = [ nose ];
+ propagatedBuildInputs = [ pillow blessings ];
+
+ # fails with obscure error
+ doCheck = !isPy3k;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/erikrose/nose-progressive;
+ description = "A testrunner with a progress bar and smarter tracebacks";
+ license = licenses.mit;
+ maintainers = with maintainers; [ domenkozar ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nose_warnings_filters/default.nix b/nixpkgs/pkgs/development/python-modules/nose_warnings_filters/default.nix
new file mode 100644
index 00000000000..2b1ee207cfe
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nose_warnings_filters/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, nose
+}:
+
+buildPythonPackage rec {
+ pname = "nose_warnings_filters";
+ version = "0.1.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "17dvfqfy2fm7a5cmiffw2dc3064kpx72fn5mlw01skm2rhn5nv25";
+ };
+
+ disabled = !isPy3k;
+
+ propagatedBuildInputs = [ nose ];
+
+ checkInputs = [ nose ];
+ checkPhase = ''
+ nosetests -v
+ '';
+
+ meta = {
+ description = "Allow injecting warning filters during nosetest";
+ homepage = https://github.com/Carreau/nose_warnings_filters;
+ license = lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nosejs/default.nix b/nixpkgs/pkgs/development/python-modules/nosejs/default.nix
new file mode 100644
index 00000000000..c2d3ee94c7b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nosejs/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+}:
+
+buildPythonPackage rec {
+ pname = "NoseJS";
+ version = "0.9.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0qrhkd3sga56qf6k0sqyhwfcladwi05gl6aqmr0xriiq1sgva5dy";
+ };
+
+ checkInputs = [ nose ];
+
+ checkPhase = ''
+ nosetests -v
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://pypi.org/project/NoseJS/;
+ description = "A Nose plugin for integrating JavaScript tests into a Python test suite";
+ license = licenses.free;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nosexcover/default.nix b/nixpkgs/pkgs/development/python-modules/nosexcover/default.nix
new file mode 100644
index 00000000000..2fb69838879
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nosexcover/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, coverage
+, nose
+}:
+
+buildPythonPackage rec {
+ pname = "nosexcover";
+ version = "1.0.11";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "298c3c655da587f6cab8a666e9f4b150320032431062dea91353988d45c8b883";
+ };
+
+ propagatedBuildInputs = [ coverage nose ];
+
+ meta = with stdenv.lib; {
+ description = "Extends nose.plugins.cover to add Cobertura-style XML reports";
+ homepage = https://github.com/cmheisel/nose-xcover/;
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/notebook/default.nix b/nixpkgs/pkgs/development/python-modules/notebook/default.nix
new file mode 100644
index 00000000000..d081a5a92fb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/notebook/default.nix
@@ -0,0 +1,76 @@
+{ 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.8";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "573e0ae650c5d76b18b6e564ba6d21bf321d00847de1d215b418acb64f056eb8";
+ };
+
+ 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; [ fridh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/notify/default.nix b/nixpkgs/pkgs/development/python-modules/notify/default.nix
new file mode 100644
index 00000000000..f3a1d6514eb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/notify/default.nix
@@ -0,0 +1,41 @@
+{ 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 = stdenv.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.pkgconfig ];
+ 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 stdenv.lib; {
+ description = "Python bindings for libnotify";
+ homepage = http://www.galago-project.org/;
+ license = licenses.lgpl3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/notify2/default.nix b/nixpkgs/pkgs/development/python-modules/notify2/default.nix
new file mode 100644
index 00000000000..2d585192907
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/notify2/default.nix
@@ -0,0 +1,29 @@
+{ buildPythonPackage
+, lib
+, fetchPypi
+, pygobject3
+, dbus-python
+}:
+
+buildPythonPackage rec {
+ pname = "notify2";
+ version = "0.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0z8rrv9rsg1r2qgh2dxj3dfj5xnki98kgi3w839kqby4a26i1yik";
+ };
+
+
+ # Tests require Xorg and Dbus instance
+ doCheck = false;
+ propagatedBuildInputs = [ pygobject3
+ dbus-python ];
+
+ meta = {
+ description = "Pure Python interface to DBus notifications";
+ homepage = https://bitbucket.org/takluyver/pynotify2;
+ license = lib.licenses.bsd2;
+ maintainers = with lib.maintainers; [ mog ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/notmuch/default.nix b/nixpkgs/pkgs/development/python-modules/notmuch/default.nix
new file mode 100644
index 00000000000..567977a84f5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/notmuch/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, pkgs
+, python
+}:
+
+buildPythonPackage {
+ name = "python-${pkgs.notmuch.name}";
+
+ src = pkgs.notmuch.src;
+
+ sourceRoot = pkgs.notmuch.pythonSourceRoot;
+
+ buildInputs = [ python pkgs.notmuch ];
+
+ postPatch = ''
+ sed -i -e '/CDLL/s@"libnotmuch\.@"${pkgs.notmuch}/lib/libnotmuch.@' \
+ notmuch/globals.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A Python wrapper around notmuch";
+ homepage = https://notmuchmail.org/;
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ntlm-auth/default.nix b/nixpkgs/pkgs/development/python-modules/ntlm-auth/default.nix
new file mode 100644
index 00000000000..e4bbe0fb430
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ntlm-auth/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, mock
+, pytest
+, unittest2
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "ntlm-auth";
+ version = "1.0.3";
+
+ src = fetchFromGitHub {
+ owner = "jborean93";
+ repo = "ntlm-auth";
+ rev = "v${version}";
+ sha256 = "09f2g4ivfi9lh1kr30hlg0q4n2imnvmd79w83gza11q9nmhhiwpz";
+ };
+
+ checkInputs = [ mock pytest unittest2 ];
+ propagatedBuildInputs = [ six ];
+
+ # Functional tests require networking
+ checkPhase = ''
+ py.test --ignore=tests/functional/test_iis.py
+ '';
+
+ meta = with lib; {
+ description = "Calculates NTLM Authentication codes";
+ homepage = https://github.com/jborean93/ntlm-auth;
+ license = licenses.lgpl3;
+ maintainers = with maintainers; [ elasticdog ];
+ platforms = platforms.all;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ntplib/default.nix b/nixpkgs/pkgs/development/python-modules/ntplib/default.nix
new file mode 100644
index 00000000000..d6506ae4b4a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ntplib/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "ntplib";
+ version = "0.3.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c4621b64d50be9461d9bd9a71ba0b4af06fbbf818bbd483752d95c1a4e273ede";
+ };
+
+ # Require networking
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Python NTP library";
+ homepage = http://code.google.com/p/ntplib/;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nuitka/default.nix b/nixpkgs/pkgs/development/python-modules/nuitka/default.nix
new file mode 100644
index 00000000000..6be1f39328f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nuitka/default.nix
@@ -0,0 +1,52 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, vmprof
+, pyqt4
+, isPyPy
+, pkgs
+}:
+
+let
+ # scons is needed but using it requires Python 2.7
+ # Therefore we create a separate env for it.
+ scons = pkgs.python27.withPackages(ps: [ pkgs.scons ]);
+in buildPythonPackage rec {
+ version = "0.6.5";
+ pname = "Nuitka";
+
+ # Latest version is not yet on PyPi
+ src = fetchurl {
+ url = "https://github.com/kayhayen/Nuitka/archive/${version}.tar.gz";
+ sha256 = "18vcmbyqdwsfa9gyj1sf518hsqczx7qlzrdc22hdb1zawzknb1pb";
+ };
+
+ checkInputs = [ vmprof pyqt4 ];
+ nativeBuildInputs = [ scons ];
+
+ postPatch = ''
+ patchShebangs tests/run-tests
+ '' + stdenv.lib.optionalString stdenv.isLinux ''
+ substituteInPlace nuitka/plugins/standard/ImplicitImports.py --replace 'locateDLL("uuid")' '"${pkgs.utillinux.out}/lib/libuuid.so"'
+ '';
+
+ # We do not want any wrappers here.
+ postFixup = '''';
+
+ checkPhase = ''
+ tests/run-tests
+ '';
+
+ # Problem with a subprocess (parts)
+ doCheck = false;
+
+ # Requires CPython
+ disabled = isPyPy;
+
+ meta = with stdenv.lib; {
+ description = "Python compiler with full language support and CPython compatibility";
+ license = licenses.asl20;
+ homepage = http://nuitka.net/;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/num2words/default.nix b/nixpkgs/pkgs/development/python-modules/num2words/default.nix
new file mode 100644
index 00000000000..bce4c0426e4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/num2words/default.nix
@@ -0,0 +1,35 @@
+{ buildPythonPackage
+, lib
+, fetchPypi
+, docopt
+, delegator-py
+, pytest
+}:
+
+buildPythonPackage rec {
+ version = "0.5.10";
+ pname = "num2words";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0myc27k087rhgpwn1a1dffzl32rwz6ngdbf3rm2i0zlgcxh4zk9p";
+ };
+
+ propagatedBuildInputs = [ docopt ];
+
+ checkInputs = [ delegator-py pytest ];
+
+ checkPhase = ''
+ pytest -k 'not cli_with_lang'
+ '';
+
+ meta = with lib; {
+ description = "Modules to convert numbers to words. 42 --> forty-two";
+ homepage = "https://github.com/savoirfairelinux/num2words";
+ license = licenses.lgpl21;
+ maintainers = with maintainers; [ jonringer ];
+
+ longDescription =
+ "num2words is a library that converts numbers like 42 to words like forty-two. It supports multiple languages (see the list below for full list of languages) and can even generate ordinal numbers like forty-second";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/numba/default.nix b/nixpkgs/pkgs/development/python-modules/numba/default.nix
new file mode 100644
index 00000000000..78593e443b1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/numba/default.nix
@@ -0,0 +1,41 @@
+{ stdenv
+, fetchPypi
+, python
+, buildPythonPackage
+, isPy27
+, isPy33
+, isPy3k
+, numpy
+, llvmlite
+, funcsigs
+, singledispatch
+, libcxx
+}:
+
+buildPythonPackage rec {
+ version = "0.45.0";
+ pname = "numba";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "fcea8dc6f9e0f1ddf7bd52a207858539bc14e893c5ee66d8730c3e5b9344c4b3";
+ };
+
+ NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.isDarwin "-I${libcxx}/include/c++/v1";
+
+ propagatedBuildInputs = [numpy llvmlite] ++ stdenv.lib.optional (!isPy3k) funcsigs ++ stdenv.lib.optional (isPy27 || isPy33) singledispatch;
+
+ # Copy test script into $out and run the test suite.
+ checkPhase = ''
+ ${python.interpreter} -m numba.runtests
+ '';
+ # ImportError: cannot import name '_typeconv'
+ doCheck = false;
+
+ meta = {
+ homepage = http://numba.pydata.org/;
+ license = stdenv.lib.licenses.bsd2;
+ description = "Compiling Python code using LLVM";
+ maintainers = with stdenv.lib.maintainers; [ fridh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/numcodecs/default.nix b/nixpkgs/pkgs/development/python-modules/numcodecs/default.nix
new file mode 100644
index 00000000000..775cfeded8b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/numcodecs/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, setuptools_scm
+, cython
+, numpy
+, msgpack
+, pytest
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "numcodecs";
+ version = "0.6.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "086qwlyi01rpgyyyy8bmhh9i7hpksyz33ldci3wdwmhiblyl362y";
+ };
+
+ nativeBuildInputs = [
+ setuptools_scm
+ cython
+ ];
+
+ propagatedBuildInputs = [
+ numpy
+ msgpack
+ ];
+
+ checkInputs = [
+ pytest
+ ];
+
+ checkPhase = ''
+ pytest $out/${python.sitePackages}/numcodecs -k "not test_backwards_compatibility"
+ '';
+
+ meta = with lib;{
+ homepage = https://github.com/alimanfoo/numcodecs;
+ license = licenses.mit;
+ description = "Buffer compression and transformation codecs for use in data storage and communication applications";
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/numericalunits/default.nix b/nixpkgs/pkgs/development/python-modules/numericalunits/default.nix
new file mode 100644
index 00000000000..41b4c1a8f31
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/numericalunits/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ version = "1.23";
+ pname = "numericalunits";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1q1jrzxx0k7j82c5q061hd10mp965ra8813vb09ji326fbxzn2gy";
+ };
+
+ # no tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = http://pypi.python.org/pypi/numericalunits;
+ description = "A package that lets you define quantities with unit";
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/numexpr/default.nix b/nixpkgs/pkgs/development/python-modules/numexpr/default.nix
new file mode 100644
index 00000000000..78203b3571b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/numexpr/default.nix
@@ -0,0 +1,44 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, python
+, numpy
+}:
+
+buildPythonPackage rec {
+ pname = "numexpr";
+ version = "2.6.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "fc218b777cdbb14fa8cff8f28175ee631bacabbdd41ca34e061325b6c44a6fa6";
+ };
+
+ # Remove existing site.cfg, use the one we built for numpy.
+ preBuild = ''
+ rm site.cfg
+ ln -s ${numpy.cfg} site.cfg
+ '';
+
+ propagatedBuildInputs = [ numpy ];
+
+ # Run the test suite.
+ # It requires the build path to be in the python search path.
+ checkPhase = ''
+ pushd $out
+ ${python}/bin/${python.executable} <<EOF
+ import sys
+ import numexpr
+ r = numexpr.test()
+ if not r.wasSuccessful():
+ sys.exit(1)
+ EOF
+ popd
+ '';
+
+ meta = {
+ description = "Fast numerical array expression evaluator for NumPy";
+ homepage = "https://github.com/pydata/numexpr";
+ license = lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/numpy-stl/default.nix b/nixpkgs/pkgs/development/python-modules/numpy-stl/default.nix
new file mode 100644
index 00000000000..4c2af8a0081
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/numpy-stl/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildPythonPackage, fetchPypi, cython, numpy, nine, pytest, pytestrunner, python-utils, enum34 }:
+
+buildPythonPackage rec {
+ pname = "numpy-stl";
+ version = "2.10.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f6b529b8a8112dfe456d4f7697c7aee0aca62be5a873879306afe4b26fca963c";
+ };
+
+ checkInputs = [ pytest pytestrunner ];
+
+ checkPhase = "py.test";
+
+ propagatedBuildInputs = [ cython numpy nine python-utils enum34 ];
+
+ meta = with lib; {
+ description = "Library to make reading, writing and modifying both binary and ascii STL files easy";
+ homepage = "https://github.com/WoLpH/numpy-stl/";
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/numpy/default.nix b/nixpkgs/pkgs/development/python-modules/numpy/default.nix
new file mode 100644
index 00000000000..41064c6b36c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/numpy/default.nix
@@ -0,0 +1,72 @@
+{ lib, fetchPypi, python, buildPythonPackage, gfortran, pytest, blas, writeTextFile, isPyPy }:
+
+let
+ blasImplementation = lib.nameFromURL blas.name "-";
+ cfg = writeTextFile {
+ name = "site.cfg";
+ text = (lib.generators.toINI {} {
+ ${blasImplementation} = {
+ include_dirs = "${blas}/include";
+ library_dirs = "${blas}/lib";
+ } // lib.optionalAttrs (blasImplementation == "mkl") {
+ mkl_libs = "mkl_rt";
+ lapack_libs = "";
+ };
+ });
+ };
+in buildPythonPackage rec {
+ pname = "numpy";
+ version = "1.17.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "73615d3edc84dd7c4aeb212fa3748fb83217e00d201875a47327f55363cef2df";
+ };
+
+ nativeBuildInputs = [ gfortran pytest ];
+ buildInputs = [ blas ];
+
+ patches = lib.optionals python.hasDistutilsCxxPatch [
+ # We patch cpython/distutils to fix https://bugs.python.org/issue1222585
+ # Patching of numpy.distutils is needed to prevent it from undoing the
+ # patch to distutils.
+ ./numpy-distutils-C++.patch
+ ];
+
+ preConfigure = ''
+ sed -i 's/-faltivec//' numpy/distutils/system_info.py
+ export NPY_NUM_BUILD_JOBS=$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 = {
+ blas = blas;
+ inherit blasImplementation 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 = http://numpy.scipy.org/;
+ maintainers = with lib.maintainers; [ fridh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/numpy/numpy-distutils-C++.patch b/nixpkgs/pkgs/development/python-modules/numpy/numpy-distutils-C++.patch
new file mode 100644
index 00000000000..771da8cf3ff
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/numpy/numpy-distutils-C++.patch
@@ -0,0 +1,31 @@
+diff --git a/numpy/distutils/unixccompiler.py b/numpy/distutils/unixccompiler.py
+index 6ed5eec..82a88b5 100644
+--- 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/nixpkgs/pkgs/development/python-modules/numpydoc/default.nix b/nixpkgs/pkgs/development/python-modules/numpydoc/default.nix
new file mode 100644
index 00000000000..0e6fa25bd53
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/numpydoc/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, nose
+, sphinx
+, jinja2
+}:
+
+buildPythonPackage rec {
+ pname = "numpydoc";
+ version = "0.8.0";
+
+ src = fetchPypi {
+ inherit pname;
+ inherit version;
+ sha256 = "61f4bf030937b60daa3262e421775838c945dcdd671f37b69e8e4854c7eb5ffd";
+ };
+
+ checkInputs = [ nose ];
+ propagatedBuildInputs = [ sphinx jinja2 ];
+
+ meta = {
+ description = "Sphinx extension to support docstrings in Numpy format";
+ homepage = "https://github.com/numpy/numpydoc";
+ license = lib.licenses.free;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/numtraits/default.nix b/nixpkgs/pkgs/development/python-modules/numtraits/default.nix
new file mode 100644
index 00000000000..a0262c77595
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/numtraits/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+, six
+, numpy
+, traitlets
+}:
+
+buildPythonPackage rec {
+ pname = "numtraits";
+ version = "0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2fca9a6c9334f7358ef1a3e2e64ccaa6a479fc99fc096910e0d5fbe8edcdfd7e";
+ };
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ six numpy traitlets];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = {
+ description = "Numerical traits for Python objects";
+ license = lib.licenses.bsd2;
+ maintainers = with lib.maintainers; [ fridh ];
+ homepage = https://github.com/astrofrog/numtraits;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/nvchecker/default.nix b/nixpkgs/pkgs/development/python-modules/nvchecker/default.nix
new file mode 100644
index 00000000000..f21624acf14
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nvchecker/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, buildPythonPackage, fetchPypi, pythonOlder, pytest, setuptools, structlog, pytest-asyncio, flaky, tornado, pycurl }:
+
+buildPythonPackage rec {
+ pname = "nvchecker";
+ version = "1.4.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6276ed2a897a30ccd71bfd7cf9e6b7842f37f3d5a86d7a70fe46f437c62b1875";
+ };
+
+ propagatedBuildInputs = [ setuptools structlog tornado pycurl ];
+ checkInputs = [ pytest pytest-asyncio flaky ];
+
+ # requires network access
+ doCheck = false;
+
+ checkPhase = ''
+ py.test
+ '';
+
+ disabled = pythonOlder "3.5";
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/lilydjwg/nvchecker;
+ description = "New version checker for software";
+ license = licenses.mit;
+ maintainers = with maintainers; [ marsam ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nwdiag/default.nix b/nixpkgs/pkgs/development/python-modules/nwdiag/default.nix
new file mode 100644
index 00000000000..7e34f3897bc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nwdiag/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, buildPythonPackage, pep8, nose, unittest2, docutils
+, blockdiag
+}:
+
+buildPythonPackage rec {
+ pname = "nwdiag";
+ version = "1.0.4";
+
+ src = fetchurl {
+ url = "mirror://pypi/n/nwdiag/${pname}-${version}.tar.gz";
+ sha256 = "002565875559789a2dfc5f578c07abdf44269c3f7cdf78d4809bdc4bdc2213fa";
+ };
+
+ buildInputs = [ pep8 nose unittest2 docutils ];
+
+ propagatedBuildInputs = [ blockdiag ];
+
+ # tests fail
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Generate network-diagram image from spec-text file (similar to Graphviz)";
+ homepage = http://blockdiag.com/;
+ license = licenses.asl20;
+ platforms = platforms.unix;
+ maintainers = with maintainers; [ bjornfor ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nxt-python/default.nix b/nixpkgs/pkgs/development/python-modules/nxt-python/default.nix
new file mode 100644
index 00000000000..8e294f290cb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nxt-python/default.nix
@@ -0,0 +1,36 @@
+{ stdenv
+, 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 stdenv.lib; {
+ description = "Python driver/interface for Lego Mindstorms NXT robot";
+ homepage = https://github.com/Eelviny/nxt-python;
+ license = licenses.gpl3;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ leenaars ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/oath/default.nix b/nixpkgs/pkgs/development/python-modules/oath/default.nix
new file mode 100644
index 00000000000..a64eeb8e103
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/oath/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "oath";
+ version = "1.4.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1xqgcqgx6aa0j21hwsdb3aqpqhviwj756bcqjjjcm1h1aij11p6m";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Python implementation of the three main OATH specifications: HOTP, TOTP and OCRA";
+ homepage = "https://github.com/bdauvergne/python-oath";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ aw ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/oauth/default.nix b/nixpkgs/pkgs/development/python-modules/oauth/default.nix
new file mode 100644
index 00000000000..a8e5c8bf53d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/oauth/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "oauth";
+ version = "1.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0pdgi35hczsslil4890xqawnbpdazkgf2v1443847h5hy2gq2sg7";
+ };
+
+ # No tests included in archive
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = http://code.google.com/p/oauth;
+ description = "Library for OAuth version 1.0a";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/oauth2/default.nix b/nixpkgs/pkgs/development/python-modules/oauth2/default.nix
new file mode 100644
index 00000000000..8233b132344
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/oauth2/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, httplib2
+, mock
+, coverage
+}:
+
+buildPythonPackage rec {
+ pname = "oauth2";
+ version = "1.9.0.post1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c006a85e7c60107c7cc6da1b184b5c719f6dd7202098196dfa6e55df669b59bf";
+ };
+
+ propagatedBuildInputs = [ httplib2 ];
+ buildInputs = [ mock coverage ];
+
+ # ServerNotFoundError: Unable to find the server at oauth-sandbox.sevengoslings.net
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/simplegeo/python-oauth2";
+ description = "Library for OAuth version 1.0";
+ license = licenses.mit;
+ maintainers = with maintainers; [ ];
+ platforms = platforms.unix;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/oauth2client/default.nix b/nixpkgs/pkgs/development/python-modules/oauth2client/default.nix
new file mode 100644
index 00000000000..8500b53b244
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/oauth2client/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPythonPackage, fetchPypi
+, six, httplib2, pyasn1-modules, rsa }:
+
+buildPythonPackage rec {
+ pname = "oauth2client";
+ version = "4.1.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d486741e451287f69568a4d26d70d9acd73a2bbfa275746c535b4209891cccc6";
+ };
+
+ propagatedBuildInputs = [ six httplib2 pyasn1-modules rsa ];
+ doCheck = false;
+
+ meta = with lib; {
+ description = "A client library for OAuth 2.0";
+ homepage = https://github.com/google/oauth2client/;
+ license = licenses.bsd2;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/oauthenticator/default.nix b/nixpkgs/pkgs/development/python-modules/oauthenticator/default.nix
new file mode 100644
index 00000000000..85dc80681aa
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/oauthenticator/default.nix
@@ -0,0 +1,46 @@
+{ lib
+, buildPythonPackage
+, jupyterhub
+, globus-sdk
+, mwoauth
+, codecov
+, flake8
+, pyjwt
+, pytest
+, pytestcov
+, pytest-tornado
+, requests-mock
+, pythonOlder
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "oauthenticator";
+ version = "0.8.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5195b5d66808787894590926b038381eb47495c9df4fd0d907c84d86cb35132f";
+ };
+
+ checkPhase = ''
+ py.test oauthenticator/tests
+ '';
+
+ # No tests in archive
+ doCheck = false;
+
+ checkInputs = [ globus-sdk mwoauth codecov flake8 pytest
+ pytestcov pytest-tornado requests-mock pyjwt ];
+
+ propagatedBuildInputs = [ jupyterhub ];
+
+ disabled = pythonOlder "3.4";
+
+ meta = with lib; {
+ description = "Authenticate JupyterHub users with common OAuth providers, including GitHub, Bitbucket, and more.";
+ homepage = https://github.com/jupyterhub/oauthenticator;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ ixxie ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/oauthlib/default.nix b/nixpkgs/pkgs/development/python-modules/oauthlib/default.nix
new file mode 100644
index 00000000000..cdf88db632c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/oauthlib/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, mock
+, pytest
+, cryptography
+, blinker
+, pyjwt
+}:
+
+buildPythonPackage rec {
+ version = "3.0.1";
+ pname = "oauthlib";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0ce32c5d989a1827e3f1148f98b9085ed2370fc939bf524c9c851d8714797298";
+ };
+
+ checkInputs = [ mock pytest ];
+ propagatedBuildInputs = [ cryptography blinker pyjwt ];
+
+ checkPhase = ''
+ py.test tests/
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/idan/oauthlib;
+ description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic";
+ maintainers = with maintainers; [ prikhi ];
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/obfsproxy/default.nix b/nixpkgs/pkgs/development/python-modules/obfsproxy/default.nix
new file mode 100644
index 00000000000..8abd3f22ea3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/obfsproxy/default.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, buildPythonPackage
+, fetchgit
+, pyptlib
+, twisted
+, pycrypto
+, pyyaml
+}:
+
+buildPythonPackage rec {
+ pname = "obfsproxy";
+ version = "0.2.13";
+
+ src = fetchgit {
+ url = meta.repositories.git;
+ rev = "refs/tags/${pname}-${version}";
+ sha256 = "04ja1cl8xzqnwrd2gi6nlnxbmjri141bzwa5gybvr44d8h3k2nfa";
+ };
+
+ postPatch = ''
+ substituteInPlace setup.py --replace "version=versioneer.get_version()" "version='${version}'"
+ substituteInPlace setup.py --replace "argparse" ""
+ '';
+
+ propagatedBuildInputs = [ pyptlib twisted pycrypto pyyaml ];
+
+ # No tests in archive
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A pluggable transport proxy";
+ homepage = https://www.torproject.org/projects/obfsproxy;
+ repositories.git = https://git.torproject.org/pluggable-transports/obfsproxy.git;
+ maintainers = with maintainers; [ phreedom thoughtpolice ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/objgraph/default.nix b/nixpkgs/pkgs/development/python-modules/objgraph/default.nix
new file mode 100644
index 00000000000..c0e0cddb2c8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/objgraph/default.nix
@@ -0,0 +1,40 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPyPy
+, substituteAll
+, graphvizPkg
+, graphviz
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "objgraph";
+ version = "3.4.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "bf29512d7f8b457b53fa0722ea59f516abb8abc59b78f97f0ef81394a0c615a7";
+ };
+
+ # Tests fail with PyPy.
+ disabled = isPyPy;
+
+ patches = [
+ (substituteAll {
+ src = ./hardcode-graphviz-path.patch;
+ graphviz = graphvizPkg;
+ })
+ ];
+
+ propagatedBuildInputs = [ graphviz ];
+
+ checkInputs = [ mock ];
+
+ meta = with stdenv.lib; {
+ description = "Draws Python object reference graphs with graphviz";
+ homepage = https://mg.pov.lt/objgraph/;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/objgraph/hardcode-graphviz-path.patch b/nixpkgs/pkgs/development/python-modules/objgraph/hardcode-graphviz-path.patch
new file mode 100644
index 00000000000..c5be5de64ee
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/objgraph/hardcode-graphviz-path.patch
@@ -0,0 +1,61 @@
+diff --git a/objgraph.py b/objgraph.py
+index 88e307b..0369f49 100755
+--- a/objgraph.py
++++ b/objgraph.py
+@@ -1045,12 +1045,12 @@ def _present_graph(dot_filename, filename=None):
+ if not filename and _program_in_path('xdot'):
+ print("Spawning graph viewer (xdot)")
+ subprocess.Popen(['xdot', dot_filename], close_fds=True)
+- elif _program_in_path('dot'):
++ elif True: # path to dot is hardcoded and hence always in $PATH
+ if not filename:
+ print("Graph viewer (xdot) not found, generating a png instead")
+ filename = dot_filename[:-4] + '.png'
+ stem, ext = os.path.splitext(filename)
+- cmd = ['dot', '-T' + ext[1:], '-o' + filename, dot_filename]
++ cmd = ['@graphviz@/bin/dot', '-T' + ext[1:], '-o' + filename, dot_filename]
+ dot = subprocess.Popen(cmd, close_fds=False)
+ dot.wait()
+ if dot.returncode != 0:
+diff --git a/tests.py b/tests.py
+index 7db2888..bdb666e 100755
+--- a/tests.py
++++ b/tests.py
+@@ -557,7 +557,7 @@ class PresentGraphTest(CaptureMixin, TemporaryDirectoryMixin,
+ self.programsInPath(['dot'])
+ objgraph._present_graph('foo.dot', 'bar.png')
+ self.assertOutput("""
+- subprocess.Popen(['dot', '-Tpng', '-obar.png', 'foo.dot'])
++ subprocess.Popen(['@graphviz@/bin/dot', '-Tpng', '-obar.png', 'foo.dot'])
+ Image generated as bar.png
+ """)
+
+@@ -566,11 +566,12 @@ class PresentGraphTest(CaptureMixin, TemporaryDirectoryMixin,
+ objgraph.subprocess.should_fail = True
+ objgraph._present_graph('f.dot', 'b.png')
+ self.assertOutput("""
+- subprocess.Popen(['dot', '-Tpng', '-ob.png', 'f.dot'])
+- dot failed (exit code 1) while executing "dot -Tpng -ob.png f.dot"
++ subprocess.Popen(['@graphviz@/bin/dot', '-Tpng', '-ob.png', 'f.dot'])
++ dot failed (exit code 1) while executing "@graphviz@/bin/dot -Tpng -ob.png f.dot"
+ """)
+
+- def test_present_png_no_dot(self):
++ @unittest.skip("empty $PATH has no effect")
++ def no_test_present_png_no_dot(self):
+ self.programsInPath([])
+ objgraph._present_graph('foo.dot', 'bar.png')
+ self.assertOutput("""
+@@ -591,10 +592,11 @@ class PresentGraphTest(CaptureMixin, TemporaryDirectoryMixin,
+ objgraph._present_graph('foo.dot')
+ self.assertOutput("""
+ Graph viewer (xdot) not found, generating a png instead
+- subprocess.Popen(['dot', '-Tpng', '-ofoo.png', 'foo.dot'])
++ subprocess.Popen(['@graphviz@/bin/dot', '-Tpng', '-ofoo.png', 'foo.dot'])
+ Image generated as foo.png
+ """)
+
++ @unittest.skip("empty $PATH has no effect")
+ def test_present_no_xdot_and_no_not(self):
+ self.programsInPath([])
+ objgraph._present_graph('foo.dot')
diff --git a/nixpkgs/pkgs/development/python-modules/od/default.nix b/nixpkgs/pkgs/development/python-modules/od/default.nix
new file mode 100644
index 00000000000..0aaa40e1758
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/od/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildPythonPackage, fetchPypi, unittest2, repeated_test }:
+
+buildPythonPackage rec {
+ pname = "od";
+ version = "1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1az30snc3w6s4k1pi7mspcv8y0kp3ihf3ly44z517nszmz9lrjfi";
+ };
+
+ checkInputs = [
+ repeated_test
+ unittest2
+ ];
+
+ meta = with lib; {
+ description = "Shorthand syntax for building OrderedDicts";
+ homepage = https://github.com/epsy/od;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/odfpy/default.nix b/nixpkgs/pkgs/development/python-modules/odfpy/default.nix
new file mode 100644
index 00000000000..c62f6ae681c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/odfpy/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, defusedxml
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "odfpy";
+ version = "1.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "596021f0519623ca8717331951c95e3b8d7b21e86edc7efe8cb650a0d0f59a2b";
+ };
+
+ propagatedBuildInputs = [ defusedxml ];
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = {
+ description = "Python API and tools to manipulate OpenDocument files";
+ homepage = https://github.com/eea/odfpy;
+ license = lib.licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/odo/default.nix b/nixpkgs/pkgs/development/python-modules/odo/default.nix
new file mode 100644
index 00000000000..6e82119faa5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/odo/default.nix
@@ -0,0 +1,58 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytest
+, datashape
+, numpy
+, pandas
+, toolz
+, multipledispatch
+, networkx
+, dask
+}:
+
+buildPythonPackage rec {
+ pname = "odo";
+ version= "unstable-2019-07-16";
+
+ src = fetchFromGitHub {
+ owner = "blaze";
+ repo = pname;
+ rev = "9fce6690b3666160681833540de6c55e922de5eb";
+ sha256 = "0givkd5agr05wrf72fbghdaav6gplx7c069ngs1ip385v72ifsl9";
+ };
+
+ checkInputs = [
+ pytest
+ dask
+ ];
+
+ propagatedBuildInputs = [
+ datashape
+ numpy
+ pandas
+ toolz
+ multipledispatch
+ networkx
+ ];
+
+ postConfigure = ''
+ substituteInPlace setup.py \
+ --replace "versioneer.get_version()" "'0.5.1'"
+ '';
+
+ # disable 6/315 tests
+ checkPhase = ''
+ pytest odo -k "not test_insert_to_ooc \
+ and not test_datetime_index \
+ and not test_different_encoding \
+ and not test_numpy_asserts_type_after_dataframe"
+ '';
+
+ meta = with lib; {
+ homepage = https://github.com/ContinuumIO/odo;
+ description = "Data migration utilities";
+ license = licenses.bsdOriginal;
+ maintainers = with maintainers; [ fridh costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/offtrac/default.nix b/nixpkgs/pkgs/development/python-modules/offtrac/default.nix
new file mode 100644
index 00000000000..e098ecc8c31
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/offtrac/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "offtrac";
+ version = "0.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "06vd010pa1z7lyfj1na30iqzffr4kzj2k2sba09spik7drlvvl56";
+ };
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = http://fedorahosted.org/offtrac;
+ description = "Trac xmlrpc library";
+ license = licenses.gpl2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ofxclient/default.nix b/nixpkgs/pkgs/development/python-modules/ofxclient/default.nix
new file mode 100644
index 00000000000..2bde7b174d3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ofxclient/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, buildPythonPackage, fetchPypi,
+ ofxhome, ofxparse, beautifulsoup4, lxml, keyring
+}:
+
+buildPythonPackage rec {
+ version = "2.0.3";
+ pname = "ofxclient";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0jdhqsbl34yn3n0x6mwsnl58c25v5lp6vr910c2hk7l74l5y7538";
+ };
+
+ patchPhase = ''
+ substituteInPlace setup.py --replace '"argparse",' ""
+ '';
+
+ # ImportError: No module named tests
+ doCheck = false;
+
+ propagatedBuildInputs = [ ofxhome ofxparse beautifulsoup4 lxml keyring ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/captin411/ofxclient;
+ description = "OFX client for dowloading transactions from banks";
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ofxhome/default.nix b/nixpkgs/pkgs/development/python-modules/ofxhome/default.nix
new file mode 100644
index 00000000000..518c34951fc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ofxhome/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi, nose }:
+
+buildPythonPackage rec {
+ version = "0.3.3";
+ pname = "ofxhome";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1rpyfqr2q9pnin47rjd4qapl8ngk1m9jx36iqckhdhr8s8gla445";
+ };
+
+ buildInputs = [ nose ];
+
+ # ImportError: No module named tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/captin411/ofxhome";
+ description = "ofxhome.com financial institution lookup REST client";
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ofxparse/default.nix b/nixpkgs/pkgs/development/python-modules/ofxparse/default.nix
new file mode 100644
index 00000000000..fbdafc291dc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ofxparse/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+, beautifulsoup4
+, lxml
+}:
+
+buildPythonPackage rec {
+ pname = "ofxparse";
+ version = "0.20";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0zn3grc6xhgzcc81qc3dxkkwk731cjjqqhb46smw12lk09cdnigb";
+ };
+
+ propagatedBuildInputs = [ six beautifulsoup4 lxml ];
+
+ meta = with stdenv.lib; {
+ homepage = "http://sites.google.com/site/ofxparse";
+ description = "Tools for working with the OFX (Open Financial Exchange) file format";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ofxtools/default.nix b/nixpkgs/pkgs/development/python-modules/ofxtools/default.nix
new file mode 100644
index 00000000000..adcb640df13
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ofxtools/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+, sqlalchemy
+}:
+
+buildPythonPackage rec {
+ pname = "ofxtools";
+ version = "0.5.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "83e1ca0a61463fca99d096a694466726a49979a5d2b8a36a65514c7a8617d3ea";
+ };
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover -s ofxtools
+ '';
+
+ buildInputs = [ sqlalchemy ];
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/csingley/ofxtools";
+ description = "Library for working with Open Financial Exchange (OFX) formatted data used by financial institutions";
+ license = licenses.mit;
+ broken = true;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/olefile/default.nix b/nixpkgs/pkgs/development/python-modules/olefile/default.nix
new file mode 100644
index 00000000000..ff4aba83bc8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/olefile/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+buildPythonPackage rec {
+ pname = "olefile";
+ version = "0.46";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "133b031eaf8fd2c9399b78b8bc5b8fcbe4c31e85295749bb17a87cba8f3c3964";
+ };
+
+ meta = with stdenv.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";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/onkyo-eiscp/default.nix b/nixpkgs/pkgs/development/python-modules/onkyo-eiscp/default.nix
new file mode 100644
index 00000000000..7b5622cfeef
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/onkyo-eiscp/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, docopt, netifaces }:
+
+buildPythonPackage rec {
+ pname = "onkyo-eiscp";
+ version = "1.2.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "cfcca6bc6c36992095f5aa4a15870a3ef89b9a26d991da2333891c2675d4ef1b";
+ };
+
+ propagatedBuildInputs = [ docopt netifaces ];
+
+ meta = with stdenv.lib; {
+ description = "Control Onkyo receivers over ethernet";
+ homepage = https://github.com/miracle2k/onkyo-eiscp;
+ license = licenses.mit;
+ maintainers = with maintainers; [ peterhoeg ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/openant/default.nix b/nixpkgs/pkgs/development/python-modules/openant/default.nix
new file mode 100644
index 00000000000..a9598825dd0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/openant/default.nix
@@ -0,0 +1,38 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, pyusb
+}:
+
+buildPythonPackage {
+ pname = "openant-unstable";
+ version = "2017-02-11";
+
+ src = fetchFromGitHub {
+ owner = "Tigge";
+ repo = "openant";
+ rev = "ed89281e37f65d768641e87356cef38877952397";
+ sha256 = "1g81l9arqdy09ijswn3sp4d6i3z18d44lzyb78bwnvdb14q22k19";
+ };
+
+ # Removes some setup.py hacks intended to install udev rules.
+ # We do the job ourselves in postInstall below.
+ postPatch = ''
+ sed -i -e '/cmdclass=.*/d' setup.py
+ '';
+
+ postInstall = ''
+ install -dm755 "$out/etc/udev/rules.d"
+ install -m644 resources/ant-usb-sticks.rules "$out/etc/udev/rules.d/99-ant-usb-sticks.rules"
+ '';
+
+ propagatedBuildInputs = [ pyusb ];
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/Tigge/openant";
+ description = "ANT and ANT-FS Python Library";
+ license = licenses.mit;
+ platforms = platforms.unix;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/openapi-spec-validator/default.nix b/nixpkgs/pkgs/development/python-modules/openapi-spec-validator/default.nix
new file mode 100644
index 00000000000..02664326685
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/openapi-spec-validator/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildPythonPackage, isPy27, fetchPypi
+, jsonschema, pyyaml, six, pathlib
+, mock, pytest, pytestcov, pytest-flake8, tox }:
+
+buildPythonPackage rec {
+ pname = "openapi-spec-validator";
+ version = "0.2.8";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1kav0jlgdpgwx4am09ja7cr8s1g8h8a7j8mcfy1cfjr8fficg2g4";
+ };
+
+ propagatedBuildInputs = [ jsonschema pyyaml six ]
+ ++ (lib.optionals (isPy27) [ pathlib ]);
+
+ checkInputs = [ mock pytest pytestcov pytest-flake8 tox ];
+
+ meta = with lib; {
+ homepage = https://github.com/p1c2u/openapi-spec-validator;
+ description = "Validates OpenAPI Specs against the OpenAPI 2.0 (aka Swagger) and OpenAPI 3.0.0 specification";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ rvl ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/openidc-client/default.nix b/nixpkgs/pkgs/development/python-modules/openidc-client/default.nix
new file mode 100644
index 00000000000..e0eb1ac8d79
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/openidc-client/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi, requests }:
+
+buildPythonPackage rec {
+ pname = "openidc-client";
+ version = "0.6.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "680e969cae18c30adbddd6a087ed09f6a296b4937b4c8bc69be813bdbbfa9847";
+ };
+ propagatedBuildInputs = [ requests ];
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A CLI python OpenID Connect client with token caching and management";
+ homepage = https://github.com/puiterwijk;
+ license = licenses.mit;
+ maintainers = with maintainers; [ disassembler ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/openpyxl/default.nix b/nixpkgs/pkgs/development/python-modules/openpyxl/default.nix
new file mode 100644
index 00000000000..ea12f1cc35a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/openpyxl/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+, jdcal
+, et_xmlfile
+, lxml
+}:
+
+buildPythonPackage rec {
+ pname = "openpyxl";
+ version = "2.6.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1d2af392cef8c8227bd2ac3ebe3a28b25aba74fd4fa473ce106065f0b73bfe2e";
+ };
+
+ 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 ];
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/openrazer/common.nix b/nixpkgs/pkgs/development/python-modules/openrazer/common.nix
new file mode 100644
index 00000000000..eac2751ce3e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/openrazer/common.nix
@@ -0,0 +1,17 @@
+{ stdenv
+, fetchFromGitHub
+}: rec {
+ version = "2.6.0";
+ src = fetchFromGitHub {
+ owner = "openrazer";
+ repo = "openrazer";
+ rev = "v${version}";
+ sha256 = "1s5irs3avrlp891mxan3z8p55ias9rq26rqp2qrlcc6i4vl29di0";
+ };
+ meta = with stdenv.lib; {
+ homepage = https://openrazer.github.io/;
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ roelvandijk ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/openrazer/daemon.nix b/nixpkgs/pkgs/development/python-modules/openrazer/daemon.nix
new file mode 100644
index 00000000000..6e3ab1e7833
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/openrazer/daemon.nix
@@ -0,0 +1,45 @@
+{ buildPythonApplication
+, daemonize
+, dbus-python
+, fetchFromGitHub
+, fetchpatch
+, gobject-introspection
+, gtk3
+, makeWrapper
+, pygobject3
+, pyudev
+, setproctitle
+, stdenv
+, wrapGAppsHook
+}:
+
+let
+ common = import ./common.nix { inherit stdenv fetchFromGitHub; };
+in
+buildPythonApplication (common // rec {
+ pname = "openrazer_daemon";
+
+ sourceRoot = "source/daemon";
+
+ outputs = [ "out" "man" ];
+
+ nativeBuildInputs = [ makeWrapper wrapGAppsHook ];
+
+ propagatedBuildInputs = [
+ daemonize
+ dbus-python
+ gobject-introspection
+ gtk3
+ pygobject3
+ pyudev
+ setproctitle
+ ];
+
+ postBuild = ''
+ DESTDIR="$out" PREFIX="" make install manpages
+ '';
+
+ meta = common.meta // {
+ description = "An entirely open source user-space daemon that allows you to manage your Razer peripherals on GNU/Linux";
+ };
+})
diff --git a/nixpkgs/pkgs/development/python-modules/openrazer/pylib.nix b/nixpkgs/pkgs/development/python-modules/openrazer/pylib.nix
new file mode 100644
index 00000000000..2f9ff467b2d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/openrazer/pylib.nix
@@ -0,0 +1,26 @@
+{ buildPythonPackage
+, dbus-python
+, fetchFromGitHub
+, numpy
+, stdenv
+, openrazer-daemon
+}:
+
+let
+ common = import ./common.nix { inherit stdenv fetchFromGitHub; };
+in
+buildPythonPackage (common // rec {
+ pname = "openrazer";
+
+ sourceRoot = "source/pylib";
+
+ propagatedBuildInputs = [
+ dbus-python
+ numpy
+ openrazer-daemon
+ ];
+
+ meta = common.meta // {
+ description = "An entirely open source Python library that allows you to manage your Razer peripherals on GNU/Linux";
+ };
+})
diff --git a/nixpkgs/pkgs/development/python-modules/opentimestamps/default.nix b/nixpkgs/pkgs/development/python-modules/opentimestamps/default.nix
new file mode 100644
index 00000000000..01f5595fea1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/opentimestamps/default.nix
@@ -0,0 +1,32 @@
+{ lib, buildPythonPackage, fetchFromGitHub, isPy3k
+, bitcoinlib, GitPython, pysha3, git }:
+
+buildPythonPackage rec {
+ pname = "opentimestamps";
+ version = "0.4.0";
+ disabled = (!isPy3k);
+
+ # We can't use the pypi source because it doesn't include README.md which is
+ # needed in setup.py
+ src = fetchFromGitHub {
+ owner = "opentimestamps";
+ repo = "python-opentimestamps";
+ rev = "python-opentimestamps-v${version}";
+ sha256 = "165rj08hwmbn44ra9n0cj5vfn6p49dqfn5lz2mks962mx19c7l0m";
+ };
+
+ # Remove a failing test which expects the test source file to reside in the
+ # project's Git repo
+ postPatch = ''
+ rm opentimestamps/tests/core/test_git.py
+ '';
+
+ checkInputs = [ git ];
+ propagatedBuildInputs = [ bitcoinlib GitPython pysha3 ];
+
+ meta = {
+ description = "Create and verify OpenTimestamps proofs";
+ homepage = https://github.com/opentimestamps/python-opentimestamps;
+ license = lib.licenses.lgpl3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/opt-einsum/default.nix b/nixpkgs/pkgs/development/python-modules/opt-einsum/default.nix
new file mode 100644
index 00000000000..c28105d4e49
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/opt-einsum/default.nix
@@ -0,0 +1,31 @@
+{ buildPythonPackage, fetchPypi, lib, numpy, pytest, pytestpep8, pytestcov }:
+buildPythonPackage rec {
+ version = "2.3.2";
+ pname = "opt_einsum";
+
+ src = fetchPypi {
+ inherit version pname;
+ sha256 = "0ny3v8x83mzpwmqjdzqhzy2pzwyy4wx01r1h9i29xw3yvas69m6k";
+ };
+
+ checkInputs = [
+ pytest
+ pytestpep8
+ pytestcov
+ ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ propagatedBuildInputs = [
+ numpy
+ ];
+
+ meta = {
+ description = "Optimizing NumPy's einsum function with order optimization and GPU support.";
+ homepage = http://optimized-einsum.readthedocs.io;
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ teh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/optuna/default.nix b/nixpkgs/pkgs/development/python-modules/optuna/default.nix
new file mode 100644
index 00000000000..fc62f67430f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/optuna/default.nix
@@ -0,0 +1,81 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+, mock
+, bokeh
+, plotly
+, chainer
+, xgboost
+, mpi4py
+, lightgbm
+, Keras
+, mxnet
+, scikit-optimize
+, tensorflow
+, sqlalchemy
+, numpy
+, scipy
+, six
+, cliff
+, colorlog
+, pandas
+, alembic
+, typing
+, pythonOlder
+, isPy27
+}:
+
+buildPythonPackage rec {
+ pname = "optuna";
+ version = "0.13.0";
+ disabled = isPy27;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "915b9d7b28f7f7cdf015d8617c689ca90eda7a5bbd59c5fc232c9eccc9a91585";
+ };
+
+ checkInputs = [
+ pytest
+ mock
+ bokeh
+ plotly
+ chainer
+ xgboost
+ mpi4py
+ lightgbm
+ Keras
+ mxnet
+ scikit-optimize
+ tensorflow
+ ];
+
+ propagatedBuildInputs = [
+ sqlalchemy
+ numpy
+ scipy
+ six
+ cliff
+ colorlog
+ pandas
+ alembic
+ ] ++ lib.optionals (pythonOlder "3.5") [ typing ];
+
+ configurePhase = if !(pythonOlder "3.5") then ''
+ substituteInPlace setup.py \
+ --replace "'typing'" ""
+ '' else "";
+
+ checkPhase = ''
+ pytest --ignore tests/test_cli.py \
+ --ignore tests/integration_tests/test_chainermn.py
+ '';
+
+ meta = with lib; {
+ description = "A hyperparameter optimization framework";
+ homepage = https://optuna.org/;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ordered-set/default.nix b/nixpkgs/pkgs/development/python-modules/ordered-set/default.nix
new file mode 100644
index 00000000000..924a2d31b76
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ordered-set/default.nix
@@ -0,0 +1,23 @@
+{ buildPythonPackage, fetchPypi, lib, pytest }:
+
+buildPythonPackage rec {
+ pname = "ordered-set";
+ version = "3.1.1";
+
+ checkInputs = [ pytest ];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "094pww79pawgmjgwi47r0fji9irb7sr4xc9xwjbb0wwcficaigx7";
+ };
+
+ checkPhase = ''
+ py.test test.py
+ '';
+
+ meta = {
+ description = "A MutableSet that remembers its order, so that every entry has an index.";
+ license = lib.licenses.mit;
+ maintainers = [ lib.maintainers.MostAwesomeDude ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ordereddict/default.nix b/nixpkgs/pkgs/development/python-modules/ordereddict/default.nix
new file mode 100644
index 00000000000..9c028777fc9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ordereddict/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "ordereddict";
+ version = "1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "07qvy11nvgxpzarrni3wrww3vpc9yafgi2bch4j2vvvc42nb8d8w";
+ };
+
+ meta = with stdenv.lib; {
+ description = "A drop-in substitute for Py2.7's new collections.OrderedDict that works in Python 2.4-2.6";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/orderedset/default.nix b/nixpkgs/pkgs/development/python-modules/orderedset/default.nix
new file mode 100644
index 00000000000..f1e6f1bf918
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/orderedset/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "orderedset";
+ version = "2.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "11643qr12ypxfffcminlsgl9xz751b2d0pnjl6zn8vfhxddjr57f";
+ };
+
+ meta = with stdenv.lib; {
+ description = "An Ordered Set implementation in Cython";
+ homepage = https://pypi.python.org/pypi/orderedset;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.jtojnar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/osc/default.nix b/nixpkgs/pkgs/development/python-modules/osc/default.nix
new file mode 100644
index 00000000000..def8ecb8458
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/osc/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, buildPythonPackage , fetchFromGitHub
+, bashInteractive , urlgrabber, m2crypto
+}:
+
+buildPythonPackage rec {
+ pname = "osc";
+ version = "0.165.4";
+
+ src = fetchFromGitHub {
+ owner = "openSUSE";
+ repo = "osc";
+ rev = version;
+ sha256 = "1f8q65wlgchzwzarwrv6a0p60gw0ykpf4d5s7cks835hyawgcbyl";
+ };
+
+ buildInputs = [ bashInteractive ]; # needed for bash-completion helper
+ propagatedBuildInputs = [ urlgrabber m2crypto ];
+
+ doCheck = false;
+
+ postInstall = ''
+ ln -s $out/bin/osc-wrapper.py $out/bin/osc
+ install -D -m444 osc.fish $out/etc/fish/completions/osc.fish
+ install -D -m555 dist/osc.complete $out/share/bash-completion/helpers/osc-helper
+ mkdir -p $out/share/bash-completion/completions
+ cat >>$out/share/bash-completion/completions/osc <<EOF
+ test -z "\$BASH_VERSION" && return
+ complete -o default _nullcommand >/dev/null 2>&1 || return
+ complete -r _nullcommand >/dev/null 2>&1 || return
+ complete -o default -C $out/share/bash-completion/helpers/osc-helper osc
+ EOF
+ '';
+
+ meta = with stdenv.lib; {
+ description = "opensuse-commander with svn like handling";
+ maintainers = [ maintainers.peti ];
+ license = licenses.gpl2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/oset/default.nix b/nixpkgs/pkgs/development/python-modules/oset/default.nix
new file mode 100644
index 00000000000..aa435b403e8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/oset/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "oset";
+ version = "0.1.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "017rr1m72s2fh9bmz5vrvc5mshczgzisi5894v9zkvvfr7gdf7sc";
+ };
+
+ doCheck = false;
+
+ meta = {
+ description = "Ordered set";
+ license = stdenv.lib.licenses.psfl;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/osmnx/default.nix b/nixpkgs/pkgs/development/python-modules/osmnx/default.nix
new file mode 100755
index 00000000000..ae4e8a03971
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/osmnx/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, geopandas, descartes, matplotlib, networkx, numpy
+, pandas, requests, Rtree, shapely, pytest, coverage, coveralls, folium, scikitlearn, scipy}:
+
+buildPythonPackage rec {
+ pname = "osmnx";
+ version = "0.9";
+
+ src = fetchFromGitHub {
+ owner = "gboeing";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "1k3y5kl4k93vxaxyanc040x44s2fyyc3m1ndy2j3kg0037z8ad4z";
+ };
+
+ propagatedBuildInputs = [ geopandas descartes matplotlib networkx numpy pandas requests Rtree shapely folium scikitlearn scipy ];
+
+ checkInputs = [ coverage pytest coveralls ];
+ #Fails when using sandboxing as it requires internet connection, works fine without it
+ doCheck = false;
+
+ #Check phase for the record
+ #checkPhase = ''
+ # coverage run --source osmnx -m pytest --verbose
+ #'';
+
+ meta = with stdenv.lib; {
+ description = "A package to easily download, construct, project, visualize, and analyze complex street networks from OpenStreetMap with NetworkX.";
+ homepage = https://github.com/gboeing/osmnx;
+ license = licenses.mit;
+ maintainers = with maintainers; [ psyanticy ];
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/outcome/default.nix b/nixpkgs/pkgs/development/python-modules/outcome/default.nix
new file mode 100644
index 00000000000..dc06ab63d2d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/outcome/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildPythonPackage, fetchPypi, pythonOlder
+, attrs
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "outcome";
+ version = "1.0.0";
+ disabled = pythonOlder "3.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0wdcakx1r1317bx6139k9gv6k272fryid83d1kk0r43andfw0n4x";
+ };
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ attrs ];
+ # Has a test dependency on trio, which depends on outcome.
+ doCheck = false;
+
+ meta = {
+ description = "Capture the outcome of Python function calls.";
+ homepage = https://github.com/python-trio/outcome;
+ license = with lib.licenses; [ mit asl20 ];
+ maintainers = with lib.maintainers; [ catern ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ovh/default.nix b/nixpkgs/pkgs/development/python-modules/ovh/default.nix
new file mode 100644
index 00000000000..017f75d991c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ovh/default.nix
@@ -0,0 +1,24 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "ovh";
+ version = "0.5.0";
+
+ # Needs yanc
+ doCheck = false;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f74d190c4bff0953d76124cb8ed319a8a999138720e42957f0db481ef4746ae8";
+ };
+
+ meta = {
+ description = "Thin wrapper around OVH's APIs";
+ homepage = http://api.ovh.com/;
+ license = lib.licenses.bsd2;
+ maintainers = [ lib.maintainers.makefu ];
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/ovito/default.nix b/nixpkgs/pkgs/development/python-modules/ovito/default.nix
new file mode 100644
index 00000000000..694b87581cd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ovito/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchgit
+, cmake
+, libav, netcdf, qscintilla, zlib, boost, git, fftw, hdf5, libssh
+, pythonPackages
+}:
+
+stdenv.mkDerivation {
+ # compilation error in 2.9.0 https://gitlab.com/stuko/ovito/issues/40
+ # This is not the "released" 3.0.0 just a commit
+ version = "3.0.0";
+ pname = "ovito";
+
+ src = fetchgit {
+ url = "https://gitlab.com/stuko/ovito";
+ rev = "a28c28182a879d2a1b511ec56f9845306dd8a4db";
+ sha256 = "1vqzv3gzwf8r0g05a7fj8hdyvnzq2h3wdfck7j6n1av6rvp7hi5r";
+ };
+
+ buildInputs = [ cmake libav netcdf qscintilla zlib boost zlib git fftw hdf5 libssh ];
+ propagatedBuildInputs = with pythonPackages; [ sphinx numpy sip pyqt5 matplotlib ase ];
+
+ enableParallelBuilding = true;
+
+ meta = with stdenv.lib; {
+ description = "Scientific visualization and analysis software for atomistic simulation data";
+ homepage = https://www.ovito.org;
+ license = licenses.gpl3;
+ maintainers = [ maintainers.costrouc ];
+ # ensures not built on hydra
+ # https://github.com/NixOS/nixpkgs/pull/46846#issuecomment-436388048
+ hydraPlatforms = [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/owslib/default.nix b/nixpkgs/pkgs/development/python-modules/owslib/default.nix
new file mode 100644
index 00000000000..7921b0a7a14
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/owslib/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildPythonPackage, fetchPypi, dateutil, requests, pytz, pyproj , pytest } :
+buildPythonPackage rec {
+ pname = "OWSLib";
+ version = "0.18.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "018p2ypmpbbcgl0hp92s0vig1wirh41lj0wy62aafn5050pmqr7m";
+ };
+
+ buildInputs = [ pytest ];
+ propagatedBuildInputs = [ dateutil pyproj pytz requests ];
+
+ # 'tests' dir not included in pypy distribution archive.
+ doCheck = false;
+
+ meta = with lib; {
+ description = "client for Open Geospatial Consortium web service interface standards";
+ license = licenses.bsd3;
+ homepage = https://www.osgeo.org/projects/owslib/;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/packaging/default.nix b/nixpkgs/pkgs/development/python-modules/packaging/default.nix
new file mode 100644
index 00000000000..2d12b32b438
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/packaging/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, pyparsing, six, pytest, pretend }:
+
+buildPythonPackage rec {
+ pname = "packaging";
+ version = "19.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0c98a5d0be38ed775798ece1b9727178c4469d9c3b4ada66e8e6b7849f8732af";
+ };
+
+ propagatedBuildInputs = [ pyparsing six ];
+
+ checkInputs = [ pytest pretend ];
+
+ checkPhase = ''
+ py.test tests
+ '';
+
+ # Prevent circular dependency
+ doCheck = false;
+
+ meta = with stdenv.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/nixpkgs/pkgs/development/python-modules/packet-python/default.nix b/nixpkgs/pkgs/development/python-modules/packet-python/default.nix
new file mode 100644
index 00000000000..61d38759048
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/packet-python/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, requests
+, python
+
+# For tests/setup.py
+, pytest
+, pytestrunner
+, requests-mock
+}:
+
+buildPythonPackage rec {
+ pname = "packet-python";
+ version = "1.38.2";
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1lh97la51fa3nxjl4ngsanrxw6qq5jwwn0dxj2f0946m043200xl";
+ };
+ nativeBuildInputs = [ pytestrunner ];
+ propagatedBuildInputs = [ requests ];
+ checkInputs = [
+ pytest
+ pytestrunner
+ requests-mock
+ ];
+
+ checkPhase = ''
+ ${python.interpreter} setup.py test
+ '';
+
+ meta = {
+ description = "A Python client for the Packet API.";
+ homepage = "https://github.com/packethost/packet-python";
+ license = lib.licenses.lgpl3;
+ maintainers = with lib.maintainers; [ dipinhora ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pafy/default.nix b/nixpkgs/pkgs/development/python-modules/pafy/default.nix
new file mode 100644
index 00000000000..75a16f5c53b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pafy/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildPythonPackage, youtube-dl, fetchPypi }:
+buildPythonPackage rec {
+ pname = "pafy";
+ version = "0.5.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "e842dc589a339a870b5869cc3802f2e95824edf347f65128223cd5ebdff21024";
+ };
+
+ # No tests included in archive
+ doCheck = false;
+
+ propagatedBuildInputs = [ youtube-dl ];
+
+ meta = with lib; {
+ description = "A library to download YouTube content and retrieve metadata";
+ homepage = http://np1.github.io/pafy/;
+ license = licenses.lgpl3Plus;
+ maintainers = with maintainers; [ odi ];
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/pagerduty/default.nix b/nixpkgs/pkgs/development/python-modules/pagerduty/default.nix
new file mode 100644
index 00000000000..d3f47dad3ca
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pagerduty/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "pagerduty";
+ version = "0.2.1";
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "e8c237239d3ffb061069aa04fc5b3d8ae4fb0af16a9713fe0977f02261d323e9";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/samuel/python-pagerduty;
+ description = "Library for the PagerDuty service API";
+ license = licenses.bsd0;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/paho-mqtt/default.nix b/nixpkgs/pkgs/development/python-modules/paho-mqtt/default.nix
new file mode 100644
index 00000000000..bf7ebee5657
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/paho-mqtt/default.nix
@@ -0,0 +1,31 @@
+{ lib, buildPythonPackage, fetchFromGitHub, isPy3k
+, stdenv, pytestrunner, pytest, mock }:
+
+buildPythonPackage rec {
+ pname = "paho-mqtt";
+ version = "1.4.0";
+
+ # No tests in PyPI tarball
+ src = fetchFromGitHub {
+ owner = "eclipse";
+ repo = "paho.mqtt.python";
+ rev = "v${version}";
+ sha256 = "1xg9ppz2lqacd9prsrx93q2wfkjjyla03xlfw74aj1alz9ki5hrs";
+ };
+
+ postPatch = ''
+ substituteInPlace setup.py --replace "pylama" ""
+ substituteInPlace setup.cfg --replace "--pylama" ""
+ '';
+
+ checkInputs = [ pytestrunner pytest ] ++ lib.optional (!isPy3k) mock;
+
+ doCheck = !stdenv.isDarwin;
+
+ meta = with lib; {
+ homepage = https://eclipse.org/paho;
+ description = "MQTT version 3.1.1 client class";
+ license = licenses.epl10;
+ maintainers = with maintainers; [ mog dotlambda ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/palettable/default.nix b/nixpkgs/pkgs/development/python-modules/palettable/default.nix
new file mode 100644
index 00000000000..a27ad2172e0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/palettable/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytest }:
+
+buildPythonPackage rec {
+ pname = "palettable";
+ version = "3.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1qp83l4mnwa9rb06m1d45i4691nkbqi82895ck4j6pirb825mz4c";
+ };
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A library of color palettes";
+ homepage = https://jiffyclub.github.io/palettable/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ psyanticy ];
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/pamela/default.nix b/nixpkgs/pkgs/development/python-modules/pamela/default.nix
new file mode 100644
index 00000000000..9a55719d77f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pamela/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pkgs
+}:
+
+buildPythonPackage rec {
+ pname = "pamela";
+ version = "1.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "65c9389bef7d1bb0b168813b6be21964df32016923aac7515bdf05366acbab6c";
+ };
+
+ postUnpack = ''
+ substituteInPlace $sourceRoot/pamela.py --replace \
+ 'find_library("pam")' \
+ '"${stdenv.lib.getLib pkgs.pam}/lib/libpam.so"'
+ '';
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "PAM interface using ctypes";
+ homepage = "https://github.com/minrk/pamela";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pamqp/default.nix b/nixpkgs/pkgs/development/python-modules/pamqp/default.nix
new file mode 100644
index 00000000000..07eab3b7bc9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pamqp/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, mock
+, nose
+, pep8
+, pylint
+, mccabe
+}:
+
+buildPythonPackage rec {
+ version = "2.3.0";
+ pname = "pamqp";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1s4lwbsiikz3czqad7jarb7k303q0wamla0rirghvwl9bslgbl2w";
+ };
+
+ buildInputs = [ mock nose pep8 pylint mccabe ];
+
+ meta = with stdenv.lib; {
+ description = "RabbitMQ Focused AMQP low-level library";
+ homepage = https://pypi.python.org/pypi/pamqp;
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pandas/2.nix b/nixpkgs/pkgs/development/python-modules/pandas/2.nix
new file mode 100644
index 00000000000..6283addcb6e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pandas/2.nix
@@ -0,0 +1,122 @@
+# Python 2 expression
+
+{ buildPythonPackage
+, fetchPypi
+, python
+, stdenv
+, pytest
+, glibcLocales
+, cython
+, dateutil
+, scipy
+, moto
+, numexpr
+, pytz
+, xlrd
+, bottleneck
+, sqlalchemy
+, lxml
+, html5lib
+, beautifulsoup4
+, hypothesis
+, openpyxl
+, tables
+, xlwt
+, runtimeShell
+, libcxx ? null
+}:
+
+let
+ inherit (stdenv.lib) optional optionals optionalString;
+ inherit (stdenv) isDarwin;
+
+in buildPythonPackage rec {
+ pname = "pandas";
+ version = "0.24.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "18imlm8xbhcbwy4wa957a1fkamrcb0z988z006jpfda3ki09z4ag";
+ };
+
+ checkInputs = [ pytest glibcLocales moto hypothesis ];
+
+ nativeBuildInputs = [ cython ];
+ buildInputs = optional isDarwin libcxx;
+ propagatedBuildInputs = [
+ 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 = optionalString isDarwin ''
+ cpp_sdk="${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 = stdenv.lib.concatMapStringsSep " and " (s: "not " + s) ([
+ # since 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"
+ ] ++ optionals 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.
+ + optionalString 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 = {
+ # 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 = http://pandas.pydata.org/;
+ description = "Python Data Analysis Library";
+ license = stdenv.lib.licenses.bsd3;
+ maintainers = with stdenv.lib.maintainers; [ raskin knedlsepp ];
+ platforms = stdenv.lib.platforms.unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pandas/default.nix b/nixpkgs/pkgs/development/python-modules/pandas/default.nix
new file mode 100644
index 00000000000..6f1c2c68dd3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pandas/default.nix
@@ -0,0 +1,120 @@
+{ buildPythonPackage
+, fetchPypi
+, python
+, stdenv
+, pytest
+, glibcLocales
+, cython
+, dateutil
+, scipy
+, moto
+, numexpr
+, pytz
+, xlrd
+, bottleneck
+, sqlalchemy
+, lxml
+, html5lib
+, beautifulsoup4
+, hypothesis
+, openpyxl
+, tables
+, xlwt
+, runtimeShell
+, libcxx ? null
+}:
+
+let
+ inherit (stdenv.lib) optional optionals optionalString;
+ inherit (stdenv) isDarwin;
+
+in buildPythonPackage rec {
+ pname = "pandas";
+ version = "0.25.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "914341ad2d5b1ea522798efa4016430b66107d05781dbfe7cf05eba8f37df995";
+ };
+
+ checkInputs = [ pytest glibcLocales moto hypothesis ];
+
+ nativeBuildInputs = [ cython ];
+ buildInputs = optional isDarwin libcxx;
+ propagatedBuildInputs = [
+ 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 = optionalString isDarwin ''
+ cpp_sdk="${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 = stdenv.lib.concatMapStringsSep " and " (s: "not " + s) ([
+ # since 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"
+ ] ++ optionals 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.
+ + optionalString 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 = {
+ # 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 = http://pandas.pydata.org/;
+ description = "Python Data Analysis Library";
+ license = stdenv.lib.licenses.bsd3;
+ maintainers = with stdenv.lib.maintainers; [ raskin fridh knedlsepp ];
+ platforms = stdenv.lib.platforms.unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pandocfilters/default.nix b/nixpkgs/pkgs/development/python-modules/pandocfilters/default.nix
new file mode 100644
index 00000000000..a6edb89dcab
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pandocfilters/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec{
+ version = "1.4.2";
+ pname = "pandocfilters";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b3dd70e169bb5449e6bc6ff96aea89c5eea8c5f6ab5e207fc2f521a2cf4a0da9";
+ };
+
+ # No tests available
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A python module for writing pandoc filters, with a collection of examples";
+ homepage = https://github.com/jgm/pandocfilters;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/panel/default.nix b/nixpkgs/pkgs/development/python-modules/panel/default.nix
new file mode 100644
index 00000000000..4c88f0e1e4b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/panel/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, bokeh
+, param
+, pyviz-comms
+, markdown
+, pyct
+, testpath
+}:
+
+buildPythonPackage rec {
+ pname = "panel";
+ version = "0.6.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "04w8jjlf7yz3k84xnacahczc9mmddqyp756rj3n8hclks9c1ww40";
+ };
+
+ propagatedBuildInputs = [
+ bokeh
+ param
+ pyviz-comms
+ markdown
+ pyct
+ testpath
+ ];
+
+ # infinite recursion in test dependencies (hvplot)
+ doCheck = false;
+
+ meta = with lib; {
+ description = "A high level dashboarding library for python visualization libraries";
+ homepage = http://pyviz.org;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/paperspace/default.nix b/nixpkgs/pkgs/development/python-modules/paperspace/default.nix
new file mode 100644
index 00000000000..6f73004deeb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/paperspace/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchPypi, buildPythonPackage
+, boto3, requests
+}:
+
+buildPythonPackage rec {
+ pname = "paperspace";
+ version = "0.0.19";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2216fb31919595ba442077e8028cc05b0598421a74604daeae4d2baa5e8409d9";
+ };
+
+ propagatedBuildInputs = [ boto3 requests ];
+
+ # tries to use /homeless-shelter to mimic container usage, etc
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Python API for Paperspace Cloud";
+ homepage = https://paperspace.com;
+ license = licenses.isc;
+ platforms = platforms.unix;
+ maintainers = with maintainers; [ thoughtpolice ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/papis-python-rofi/default.nix b/nixpkgs/pkgs/development/python-modules/papis-python-rofi/default.nix
new file mode 100644
index 00000000000..1344e1588cd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/papis-python-rofi/default.nix
@@ -0,0 +1,21 @@
+{ buildPythonPackage, lib, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "papis-python-rofi";
+ version = "1.0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "13k6mw2nq923zazs77hpmh2s96v6zv13g7p89510qqkvp6fiml1v";
+ };
+
+ # No tests existing
+ doCheck = false;
+
+ meta = {
+ description = "A Python module to make simple GUIs with Rofi";
+ homepage = https://github.com/alejandrogallo/python-rofi;
+ license = lib.licenses.mit;
+ maintainers = [ lib.maintainers.nico202 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/papis/default.nix b/nixpkgs/pkgs/development/python-modules/papis/default.nix
new file mode 100644
index 00000000000..b2ae7cf73ed
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/papis/default.nix
@@ -0,0 +1,54 @@
+{ lib, buildPythonPackage, fetchFromGitHub, xdg_utils
+, requests, filetype, pyparsing, configparser, arxiv2bib
+, pyyaml, chardet, beautifulsoup4, colorama, bibtexparser
+, pylibgen, click, python-slugify, habanero, isbnlib
+, prompt_toolkit, pygments
+#, optional, dependencies
+, jinja2, whoosh, pytest
+, stdenv
+}:
+
+buildPythonPackage rec {
+ pname = "papis";
+ version = "0.8.2";
+
+ # Missing tests on Pypi
+ src = fetchFromGitHub {
+ owner = "papis";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "0sa4hpgjvqkjcmp9bjr27b5m5jg4pfspdc8nf1ny80sr0kzn72hb";
+ };
+
+ propagatedBuildInputs = [
+ requests filetype pyparsing configparser arxiv2bib
+ pyyaml chardet beautifulsoup4 colorama bibtexparser
+ pylibgen click python-slugify habanero isbnlib
+ prompt_toolkit pygments
+ # optional dependencies
+ jinja2 whoosh
+ ];
+
+ doCheck = !stdenv.isDarwin;
+
+ checkInputs = ([
+ pytest
+ ]) ++ [
+ 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_export_yaml and not test_citations"
+ '';
+
+ meta = {
+ 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 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/param/default.nix b/nixpkgs/pkgs/development/python-modules/param/default.nix
new file mode 100644
index 00000000000..cb27fdb64e5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/param/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, flake8
+, nose
+}:
+
+buildPythonPackage rec {
+ pname = "param";
+ version = "1.9.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1dbnviszdq3d2k3dfwpimb0adf27yzwm4iyv42rk8xvd8c6p9gdi";
+ };
+
+ checkInputs = [ flake8 nose ];
+
+ # tests not included with pypi release
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Declarative Python programming using Parameters";
+ homepage = https://github.com/pyviz/param;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/parameterized/default.nix b/nixpkgs/pkgs/development/python-modules/parameterized/default.nix
new file mode 100644
index 00000000000..8d13fcfb4d5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/parameterized/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchPypi, buildPythonPackage, nose, mock, glibcLocales, isPy3k }:
+
+buildPythonPackage rec {
+ pname = "parameterized";
+ version = "0.7.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d8c8837fb677ed2d5a93b9e2308ce0da3aeb58cf513120d501e0b7af14da78d5";
+ };
+
+ # Tests require some python3-isms but code works without.
+ doCheck = isPy3k;
+
+ checkInputs = [ nose mock glibcLocales ];
+
+ checkPhase = ''
+ LC_ALL="en_US.UTF-8" nosetests -v
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Parameterized testing with any Python test framework";
+ homepage = https://pypi.python.org/pypi/parameterized;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ ma27 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/paramiko/default.nix b/nixpkgs/pkgs/development/python-modules/paramiko/default.nix
new file mode 100644
index 00000000000..7ea4a5ee533
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/paramiko/default.nix
@@ -0,0 +1,45 @@
+{ pkgs
+, buildPythonPackage
+, fetchPypi
+, cryptography
+, bcrypt
+, pynacl
+, pyasn1
+, pytest
+, pytest-relaxed
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "paramiko";
+ version = "2.6.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0h9hb2kp07zdfbanad527ll90n9ji7isf7m39jyp0sr21pxfvcpl";
+ };
+
+ checkInputs = [ pytest mock pytest-relaxed ];
+ propagatedBuildInputs = [ bcrypt cryptography pynacl pyasn1 ];
+
+ __darwinAllowLocalNetworking = true;
+
+ # 2 sftp tests fail (skip for now)
+ checkPhase = ''
+ pytest tests --ignore=tests/test_sftp.py
+ '';
+
+ meta = with pkgs.lib; {
+ homepage = "https://github.com/paramiko/paramiko/";
+ description = "Native Python SSHv2 protocol library";
+ license = licenses.lgpl21Plus;
+ maintainers = with maintainers; [ aszlig ];
+
+ 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.
+ '';
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/paramz/default.nix b/nixpkgs/pkgs/development/python-modules/paramz/default.nix
new file mode 100644
index 00000000000..029ce4a1712
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/paramz/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi, numpy, scipy, six, decorator }:
+
+buildPythonPackage rec {
+ pname = "paramz";
+ version = "0.9.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0917211c0f083f344e7f1bc997e0d713dbc147b6380bc19f606119394f820b9a";
+ };
+
+ propagatedBuildInputs = [ numpy scipy six decorator ];
+
+ meta = with stdenv.lib; {
+ description = "Parameterization framework for parameterized model creation and handling";
+ homepage = https://github.com/sods/paramz;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ bcdarwin ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/parfive/default.nix b/nixpkgs/pkgs/development/python-modules/parfive/default.nix
new file mode 100644
index 00000000000..26a3a613be4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/parfive/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, tqdm
+, aiohttp
+, pytest
+, setuptools_scm
+, pytest-localserver
+, pytest-socket
+, pytest-asyncio
+, aioftp
+}:
+
+buildPythonPackage rec {
+ pname = "parfive";
+ version = "1.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "15dc8466922c8fb1f814d3f7c3f3656191ac17b38fd7cc3350b9bf726e144ebb";
+ };
+
+ buildInputs = [
+ setuptools_scm
+ ];
+
+ propagatedBuildInputs = [
+ tqdm
+ aiohttp
+ aioftp
+ ];
+
+ checkInputs = [
+ pytest
+ pytest-localserver
+ pytest-socket
+ pytest-asyncio
+ ];
+
+ checkPhase = ''
+ # these two tests require network connection
+ pytest parfive -k "not test_ftp and not test_ftp_http"
+ '';
+
+ meta = with lib; {
+ description = "A HTTP and FTP parallel file downloader";
+ homepage = https://parfive.readthedocs.io/;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/parse-type/default.nix b/nixpkgs/pkgs/development/python-modules/parse-type/default.nix
new file mode 100644
index 00000000000..04ad3ba9c18
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/parse-type/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchPypi
+, buildPythonPackage, pythonOlder
+, pytest, pytestrunner
+, parse, six, enum34
+}:
+
+buildPythonPackage rec {
+ pname = "parse_type";
+ version = "0.5.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "02wclgiqky06y36b3q07b7ngpks5j0gmgl6n71ac2j2hscc0nsbz";
+ };
+
+ checkInputs = [ pytest pytestrunner ];
+ propagatedBuildInputs = [ parse six ] ++ stdenv.lib.optional (pythonOlder "3.4") enum34;
+
+ checkPhase = ''
+ py.test tests
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/jenisys/parse_type;
+ description = "Simplifies to build parse types based on the parse module";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ alunduil ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/parse/default.nix b/nixpkgs/pkgs/development/python-modules/parse/default.nix
new file mode 100644
index 00000000000..2bbf92f40d4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/parse/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchPypi
+, buildPythonPackage, python
+}:
+buildPythonPackage rec {
+ pname = "parse";
+ version = "1.12.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0hkic57kaxd5s56ylbwslmngqnpab864mjj8c0ayawfk6is6as0v";
+ };
+
+ checkPhase = ''
+ ${python.interpreter} test_parse.py
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/r1chardj0n3s/parse;
+ description = "parse() is the opposite of format()";
+ license = licenses.bsdOriginal;
+ maintainers = with maintainers; [ alunduil ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/parsedatetime/default.nix b/nixpkgs/pkgs/development/python-modules/parsedatetime/default.nix
new file mode 100644
index 00000000000..32247fcc388
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/parsedatetime/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, pytestrunner
+, future
+}:
+
+buildPythonPackage rec {
+ pname = "parsedatetime";
+ version = "2.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "3d817c58fb9570d1eec1dd46fa9448cd644eeed4fb612684b02dfda3a79cb84b";
+ };
+
+ buildInputs = [ pytest pytestrunner ];
+ propagatedBuildInputs = [ future ];
+
+ meta = with stdenv.lib; {
+ description = "Parse human-readable date/time text";
+ homepage = "https://github.com/bear/parsedatetime";
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/parsel/default.nix b/nixpkgs/pkgs/development/python-modules/parsel/default.nix
new file mode 100644
index 00000000000..daaf845cdf0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/parsel/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+, pytestrunner
+, functools32
+, six
+, w3lib
+, lxml
+, cssselect
+}:
+
+buildPythonPackage rec {
+ pname = "parsel";
+ version = "1.5.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "08v76s6s4li7asnyz8a7gbp9vz522rv5apranyv76mb0lhmjd92d";
+ };
+
+ checkInputs = [ pytest pytestrunner ];
+ propagatedBuildInputs = [ functools32 six w3lib lxml cssselect ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with lib; {
+ homepage = "https://github.com/scrapy/parsel";
+ description = "Parsel is a library to extract data from HTML and XML using XPath and CSS selectors";
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/parsimonious/default.nix b/nixpkgs/pkgs/development/python-modules/parsimonious/default.nix
new file mode 100644
index 00000000000..69e6d1d2bb2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/parsimonious/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, six
+}:
+
+buildPythonPackage rec {
+ version = "0.8.1";
+ pname = "parsimonious";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "3add338892d580e0cb3b1a39e4a1b427ff9f687858fdd61097053742391a9f6b";
+ };
+
+ checkInputs = [ nose ];
+ propagatedBuildInputs = [ six ];
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/erikrose/parsimonious";
+ description = "Fast arbitrary-lookahead parser written in pure Python";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/parso/default.nix b/nixpkgs/pkgs/development/python-modules/parso/default.nix
new file mode 100644
index 00000000000..f5ecb64d232
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/parso/default.nix
@@ -0,0 +1,24 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "parso";
+ version = "0.3.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "68406ebd7eafe17f8e40e15a84b56848eccbf27d7c1feb89e93d8fca395706db";
+ };
+
+ checkInputs = [ pytest ];
+
+ meta = {
+ description = "A Python Parser";
+ homepage = https://github.com/davidhalter/parso;
+ license = lib.licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/parsy/default.nix b/nixpkgs/pkgs/development/python-modules/parsy/default.nix
new file mode 100644
index 00000000000..4183f30caad
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/parsy/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildPythonPackage, fetchPypi, pythonOlder, pytest }:
+
+buildPythonPackage rec {
+ pname = "parsy";
+ version = "1.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0mdqg07x5ybmbmj55x75gyhfcjrn7ml0cf3z0jwbskx845j31m6x";
+ };
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ py.test test/
+ '';
+
+ disabled = pythonOlder "3.4";
+
+ 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; [ aepsil0n ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/partd/default.nix b/nixpkgs/pkgs/development/python-modules/partd/default.nix
new file mode 100644
index 00000000000..c7691df6b11
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/partd/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+, locket
+, numpy
+, pandas
+, pyzmq
+, toolz
+}:
+
+buildPythonPackage rec {
+ pname = "partd";
+ version = "0.3.10";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "33722a228ebcd1fa6f44b1631bdd4cff056376f89eb826d7d880b35b637bcfba";
+ };
+
+ checkInputs = [ pytest ];
+
+ propagatedBuildInputs = [ locket numpy pandas pyzmq toolz ];
+
+ checkPhase = ''
+ rm partd/tests/test_zmq.py # requires network & fails
+ py.test -k "not test_serialize"
+ '';
+
+ meta = {
+ description = "Appendable key-value storage";
+ license = with lib.licenses; [ bsd3 ];
+ homepage = https://github.com/dask/partd/;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/parver/default.nix b/nixpkgs/pkgs/development/python-modules/parver/default.nix
new file mode 100644
index 00000000000..c71e39ca111
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/parver/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, six
+, attrs
+, pytest
+, hypothesis
+, pretend
+, arpeggio
+}:
+
+buildPythonPackage rec {
+ pname = "parver";
+ version = "0.2.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0jzyylcmjxb0agc4fpdnzdnv2ajvp99rs9pz7qcklnhlmy8scdqv";
+ };
+
+ propagatedBuildInputs = [ six attrs arpeggio ];
+ checkInputs = [ pytest hypothesis pretend ];
+
+ meta = {
+ description = "parver allows parsing and manipulation of PEP 440 version numbers.";
+ license = lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/passlib/default.nix b/nixpkgs/pkgs/development/python-modules/passlib/default.nix
new file mode 100644
index 00000000000..6f82c446a1f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/passlib/default.nix
@@ -0,0 +1,24 @@
+{ buildPythonPackage
+, fetchPypi
+, nose
+, bcrypt
+, argon2_cffi
+}:
+
+buildPythonPackage rec {
+ pname = "passlib";
+ version = "1.7.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "3d948f64138c25633613f303bcc471126eae67c04d5e3f6b7b8ce6242f8653e0";
+ };
+
+ checkInputs = [ nose ];
+ propagatedBuildInputs = [ bcrypt argon2_cffi ];
+
+ meta = {
+ description = "A password hashing library for Python";
+ homepage = https://code.google.com/p/passlib/;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/paste/default.nix b/nixpkgs/pkgs/development/python-modules/paste/default.nix
new file mode 100644
index 00000000000..21e5a04c391
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/paste/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+, pytestrunner
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "paste";
+ version = "3.0.8";
+
+ src = fetchPypi {
+ pname = "Paste";
+ inherit version;
+ sha256 = "05w1sh6ky4d7pmdb8nv82n13w22jcn3qsagg5ih3hjmbws9kkwf4";
+ };
+
+ propagatedBuildInputs = [ six ];
+
+ checkInputs = [ pytestrunner pytest ];
+
+ # Certain tests require network
+ checkPhase = ''
+ py.test -k "not test_cgiapp and not test_proxy"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Tools for using a Web Server Gateway Interface stack";
+ homepage = http://pythonpaste.org/;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pastedeploy/default.nix b/nixpkgs/pkgs/development/python-modules/pastedeploy/default.nix
new file mode 100644
index 00000000000..3301521b085
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pastedeploy/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytestrunner
+, pytest
+}:
+
+buildPythonPackage rec {
+ version = "2.0.1";
+ pname = "PasteDeploy";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d423fb9d51fdcf853aa4ff43ac7ec469b643ea19590f67488122d6d0d772350a";
+ };
+
+ buildInputs = [ pytestrunner ];
+
+ checkInputs = [ pytest ];
+
+ # no tests in PyPI tarball
+ # should be included with versions > 2.0.1
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Load, configure, and compose WSGI applications and servers";
+ homepage = http://pythonpaste.org/deploy/;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pastel/default.nix b/nixpkgs/pkgs/development/python-modules/pastel/default.nix
new file mode 100644
index 00000000000..532970c62c2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pastel/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildPythonPackage, fetchFromGitHub, pytest }:
+
+buildPythonPackage rec {
+ pname = "pastel";
+ version = "0.1.0";
+
+ # No tests in PyPi tarball
+ src = fetchFromGitHub {
+ owner = "sdispater";
+ repo = "pastel";
+ rev = version;
+ sha256 = "1b4ag7jr7j0sxly5g29imdq8g0d4ixhbck55dblr45mlsidydx0s";
+ };
+
+ checkInputs = [ pytest ];
+ checkPhase = ''
+ pytest tests -sq
+ '';
+
+ meta = with lib; {
+ homepage = https://github.com/sdispater/pastel;
+ description = "Bring colors to your terminal";
+ license = licenses.mit;
+ maintainers = with maintainers; [ jakewaksbaum ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pastescript/default.nix b/nixpkgs/pkgs/development/python-modules/pastescript/default.nix
new file mode 100644
index 00000000000..fe89e6e5aea
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pastescript/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, six
+, paste
+, PasteDeploy
+, cheetah
+}:
+
+buildPythonPackage rec {
+ version = "3.0.0";
+ pname = "PasteScript";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d9d4d98df8606ad3bfa77be4722207d1a53a0fbcc714ee75d0fcd8a5c3f775c3";
+ };
+
+ buildInputs = [ nose ];
+ propagatedBuildInputs = [ six paste PasteDeploy cheetah ];
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A pluggable command-line frontend, including commands to setup package file layouts";
+ homepage = http://pythonpaste.org/script/;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/patator/default.nix b/nixpkgs/pkgs/development/python-modules/patator/default.nix
new file mode 100644
index 00000000000..46601c16755
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/patator/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, buildPythonPackage, isPy3k, fetchPypi,
+ paramiko, pycurl, ajpy, pyopenssl, cx_oracle, mysqlclient,
+ psycopg2, pycrypto, dnspython, ipy, pysnmp, pyasn1 }:
+
+
+buildPythonPackage rec {
+ pname = "patator";
+ version = "0.7";
+ disabled = !(isPy3k);
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "335e432e6cc591437e316ba8c1da935484ca39fc79e595ccf60ccd9166e965f1";
+ };
+
+ propagatedBuildInputs = [
+ paramiko
+ pycurl
+ ajpy
+ pyopenssl
+ cx_oracle
+ mysqlclient
+ psycopg2
+ pycrypto
+ dnspython
+ ipy
+ pysnmp
+ pyasn1
+ ];
+
+ # No tests provided by patator
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "multi-purpose brute-forcer";
+ homepage = "https://github.com/lanjelot/patator";
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ y0no ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/patch/default.nix b/nixpkgs/pkgs/development/python-modules/patch/default.nix
new file mode 100644
index 00000000000..1a7ce953947
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/patch/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchzip
+}:
+
+buildPythonPackage rec {
+ version = "1.16";
+ pname = "patch";
+
+ src = fetchzip {
+ url = "mirror://pypi/p/${pname}/${pname}-${version}.zip";
+ sha256 = "1nj55hvyvzax4lxq7vkyfbw91pianzr3hp7ka7j12pgjxccac50g";
+ stripRoot = false;
+ };
+
+ # No tests included in archive
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A library to parse and apply unified diffs";
+ homepage = https://github.com/techtonik/python-patch/;
+ license = licenses.mit;
+ maintainers = [ maintainers.igsha ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/path-and-address/default.nix b/nixpkgs/pkgs/development/python-modules/path-and-address/default.nix
new file mode 100644
index 00000000000..55d7afd9fa4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/path-and-address/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, pytest
+}:
+
+buildPythonPackage rec {
+ version = "2.0.1";
+ pname = "path-and-address";
+
+ src = fetchFromGitHub {
+ owner = "joeyespo";
+ repo = "path-and-address";
+ rev = "v${version}";
+ sha256 = "0b0afpsaim06mv3lhbpm8fmawcraggc11jhzr6h72kdj1cqjk5h6";
+ };
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Functions for server CLI applications used by humans";
+ homepage = https://github.com/joeyespo/path-and-address;
+ license = licenses.mit;
+ maintainers = with maintainers; [ koral];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/path.py/2.nix b/nixpkgs/pkgs/development/python-modules/path.py/2.nix
new file mode 100644
index 00000000000..318642a393a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/path.py/2.nix
@@ -0,0 +1,42 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, setuptools_scm
+, pytest
+, pytest-flake8
+, glibcLocales
+, packaging
+, isPy27
+, backports_os
+, importlib-metadata
+}:
+
+buildPythonPackage rec {
+ pname = "path.py";
+ version = "11.5.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "de7cd643affbc23e56533a6e8d551ecdee4983501a08c24e4e71565202d8cdaa";
+ };
+
+ checkInputs = [ pytest pytest-flake8 glibcLocales packaging ];
+ buildInputs = [ setuptools_scm ];
+ propagatedBuildInputs = [
+ importlib-metadata
+ ] ++ lib.optional isPy27 backports_os
+ ;
+
+ LC_ALL = "en_US.UTF-8";
+
+ meta = {
+ description = "A module wrapper for os.path";
+ homepage = https://github.com/jaraco/path.py;
+ license = lib.licenses.mit;
+ };
+
+ checkPhase = ''
+ # ignore performance test which may fail when the system is under load
+ py.test -v -k 'not TestPerformance'
+ '';
+}
diff --git a/nixpkgs/pkgs/development/python-modules/path.py/default.nix b/nixpkgs/pkgs/development/python-modules/path.py/default.nix
new file mode 100644
index 00000000000..d3c3206faba
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/path.py/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, setuptools_scm
+, pytest
+, pytest-flake8
+, glibcLocales
+, packaging
+, isPy27
+, backports_os
+, importlib-metadata
+, fetchpatch
+}:
+
+buildPythonPackage rec {
+ pname = "path.py";
+ version = "12.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "9f2169633403aa0423f6ec000e8701dd1819526c62465f5043952f92527fea0f";
+ };
+
+ 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'
+ '';
+
+ patches = [
+ (fetchpatch {
+ url = https://github.com/jaraco/path.py/commit/02eb16f0eb2cdc0015972ce963357aaa1cd0b84b.patch;
+ sha256 = "0bqa8vjwil7jn35a6984adcm24pvv3pjkhszv10qv6yr442d1mk9";
+ })
+ ];
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pathlib/default.nix b/nixpkgs/pkgs/development/python-modules/pathlib/default.nix
new file mode 100644
index 00000000000..d70178dac85
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pathlib/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, python
+, pythonAtLeast
+}:
+
+buildPythonPackage rec {
+ pname = "pathlib";
+ version = "1.0.1";
+ disabled = pythonAtLeast "3.4"; # Was added to std library in Python 3.4
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "17zajiw4mjbkkv6ahp3xf025qglkj0805m9s41c45zryzj6p2h39";
+ };
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover
+ '';
+
+ meta = {
+ description = "Object-oriented filesystem paths";
+ homepage = https://pathlib.readthedocs.org/;
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pathlib2/default.nix b/nixpkgs/pkgs/development/python-modules/pathlib2/default.nix
new file mode 100644
index 00000000000..7669e03cf6f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pathlib2/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, six
+, pythonOlder
+, scandir
+, glibcLocales
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "pathlib2";
+ version = "2.3.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "25199318e8cc3c25dcb45cbe084cc061051336d5a9ea2a12448d3d8cb748f742";
+ };
+
+ propagatedBuildInputs = [ six ] ++ lib.optional (pythonOlder "3.5") scandir;
+ checkInputs = [ glibcLocales ] ++ lib.optional (pythonOlder "3.3") mock;
+
+ preCheck = ''
+ export LC_ALL="en_US.UTF-8"
+ '';
+
+ meta = {
+ description = "This module offers classes representing filesystem paths with semantics appropriate for different operating systems.";
+ homepage = https://pypi.python.org/pypi/pathlib2/;
+ license = with lib.licenses; [ mit ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pathos/default.nix b/nixpkgs/pkgs/development/python-modules/pathos/default.nix
new file mode 100644
index 00000000000..814854596e9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pathos/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, dill
+, pox
+, ppft
+, multiprocess
+}:
+
+buildPythonPackage rec {
+ pname = "pathos";
+ version = "0.2.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "954c5b0a8b257c375e35d311c65fa62a210a3d65269195557de38418ac9f61f9";
+ };
+
+ propagatedBuildInputs = [ dill pox ppft multiprocess ];
+
+ # Require network
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Parallel graph management and execution in heterogeneous computing";
+ homepage = http://www.cacr.caltech.edu/~mmckerns/pathos.htm;
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pathspec/default.nix b/nixpkgs/pkgs/development/python-modules/pathspec/default.nix
new file mode 100644
index 00000000000..8fb6259c574
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pathspec/default.nix
@@ -0,0 +1,21 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "pathspec";
+ version = "0.5.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "54a5eab895d89f342b52ba2bffe70930ef9f8d96e398cccf530d21fa0516a873";
+ };
+
+ meta = {
+ description = "Utility library for gitignore-style pattern matching of file paths";
+ homepage = "https://github.com/cpburnz/python-path-specification";
+ license = lib.licenses.mpl20;
+ maintainers = with lib.maintainers; [ copumpkin ];
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/pathtools/default.nix b/nixpkgs/pkgs/development/python-modules/pathtools/default.nix
new file mode 100644
index 00000000000..8709662e6a1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pathtools/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "pathtools";
+ version = "0.1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1h7iam33vwxk8bvslfj4qlsdprdnwf8bvzhqh3jq5frr391cadbw";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Pattern matching and various utilities for file systems paths";
+ homepage = https://github.com/gorakhargosh/pathtools;
+ license = licenses.mit;
+ maintainers = with maintainers; [ goibhniu ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/patsy/default.nix b/nixpkgs/pkgs/development/python-modules/patsy/default.nix
new file mode 100644
index 00000000000..a21b4027bbb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/patsy/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+, nose
+, six
+, numpy
+, scipy # optional, allows spline-related features (see patsy's docs)
+, parameterized
+}:
+
+buildPythonPackage rec {
+ pname = "patsy";
+ version = "0.5.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "149rbrdzwns0ay88caf1zsm1r53v1q5np1mrb36na50y432cw5gi";
+ };
+
+ checkInputs = [ nose parameterized ];
+ checkPhase = "nosetests -v";
+
+ propagatedBuildInputs = [
+ six
+ numpy
+ scipy
+ ];
+
+ meta = {
+ description = "A Python package for describing statistical models";
+ homepage = https://github.com/pydata/patsy;
+ license = lib.licenses.bsd2;
+ maintainers = with lib.maintainers; [ ilya-kolpakov ];
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/paver/default.nix b/nixpkgs/pkgs/development/python-modules/paver/default.nix
new file mode 100644
index 00000000000..17ae2428b87
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/paver/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, cogapp
+, mock
+, virtualenv
+}:
+
+buildPythonPackage rec {
+ version = "1.3.4";
+ pname = "Paver";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d3e6498881485ab750efe40c5278982a9343bc627e137b11adced627719308c7";
+ };
+
+ buildInputs = [ cogapp mock virtualenv ];
+
+ propagatedBuildInputs = [ nose ];
+
+ # the tests do not pass
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A Python-based build/distribution/deployment scripting tool";
+ homepage = https://github.com/paver/paver;
+ maintainers = with maintainers; [ lovek323 ];
+ platforms = platforms.unix;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/paypalrestsdk/default.nix b/nixpkgs/pkgs/development/python-modules/paypalrestsdk/default.nix
new file mode 100644
index 00000000000..dbc918e6c0d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/paypalrestsdk/default.nix
@@ -0,0 +1,20 @@
+{ buildPythonPackage, fetchPypi
+, requests, six, pyopenssl }:
+
+buildPythonPackage rec {
+ pname = "paypalrestsdk";
+ version = "1.13.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "238713208031e8981bf70b3350b3d7f85ed64d34e0f21e4c1184444a546fee7f";
+ };
+
+ propagatedBuildInputs = [ requests six pyopenssl ];
+
+ meta = {
+ homepage = https://developer.paypal.com/;
+ description = "Python APIs to create, process and manage payment";
+ license = "PayPal SDK License";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pbkdf2/default.nix b/nixpkgs/pkgs/development/python-modules/pbkdf2/default.nix
new file mode 100644
index 00000000000..c83cada08f2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pbkdf2/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "pbkdf2";
+ version = "1.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0yb99rl2mbsaamj571s1mf6vgniqh23v98k4632150hjkwv9fqxc";
+ };
+
+ # ImportError: No module named test
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ maintainers = with maintainers; [ domenkozar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pbr/default.nix b/nixpkgs/pkgs/development/python-modules/pbr/default.nix
new file mode 100644
index 00000000000..c3d5ba170e3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pbr/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "pbr";
+ version = "5.1.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8c361cc353d988e4f5b998555c88098b9d5964c2e11acf7b0d21925a66bb5824";
+ };
+
+ # circular dependencies with fixtures
+ doCheck = false;
+
+ meta = {
+ homepage = http://docs.openstack.org/developer/pbr/;
+ license = stdenv.lib.licenses.asl20;
+ description = "Python Build Reasonableness";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pc-ble-driver-py/default.nix b/nixpkgs/pkgs/development/python-modules/pc-ble-driver-py/default.nix
new file mode 100644
index 00000000000..d21d9d07150
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pc-ble-driver-py/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, buildPythonPackage, fetchpatch, fetchFromGitHub,
+ python, cmake, git, swig, boost, udev,
+ setuptools, enum34, wrapt, future }:
+
+buildPythonPackage rec {
+ pname = "pc-ble-driver-py";
+ version = "0.11.4";
+ disabled = python.isPy3k;
+
+ src = fetchFromGitHub {
+ owner = "NordicSemiconductor";
+ repo = "pc-ble-driver-py";
+ rev = "v${version}";
+ fetchSubmodules = true;
+ sha256 = "0lgmcnrlcivmawmlcwnn4pdp6afdbnf3fyfgq22xzs6v72m9gp81";
+ };
+
+ nativeBuildInputs = [ cmake swig git setuptools ];
+ buildInputs = [ boost udev ];
+ propagatedBuildInputs = [ enum34 wrapt future ];
+
+ patches = [
+ # build system expects case-insensitive file system
+ (fetchpatch {
+ url = "https://patch-diff.githubusercontent.com/raw/NordicSemiconductor/pc-ble-driver-py/pull/84.patch";
+ sha256 = "0ibx5g2bndr5h9sfnx51bk9b62q4jvpdwhxadbnj3da8kvcz13cy";
+ })
+ ];
+
+ postPatch = ''
+ # do not force static linking of boost
+ sed -i /Boost_USE_STATIC_LIBS/d pc-ble-driver/cmake/*.cmake
+
+ cd python
+ '';
+
+ preBuild = ''
+ pushd ../build
+ cmake ..
+ make -j $NIX_BUILD_CORES
+ popd
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Bluetooth Low Energy nRF5 SoftDevice serialization";
+ homepage = "https://github.com/NordicSemiconductor/pc-ble-driver-py";
+ license = licenses.unfreeRedistributable;
+ platforms = platforms.unix;
+ maintainers = with maintainers; [ gebner ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pdf2image/default.nix b/nixpkgs/pkgs/development/python-modules/pdf2image/default.nix
new file mode 100644
index 00000000000..1fbddca8cc4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pdf2image/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi, pillow, poppler_utils }:
+
+buildPythonPackage rec {
+ pname = "pdf2image";
+ version = "1.9.0";
+
+ propagatedBuildInputs = [ pillow poppler_utils ];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "186g36dcfv83iranyd8gqw2zinhpcvmq86zd7sbsn237gcqk43rn";
+ };
+
+ meta = with stdenv.lib; {
+ description = "A python module that wraps the pdftoppm utility to convert PDF to PIL Image object";
+ homepage = https://github.com/Belval/pdf2image;
+ license = licenses.mit;
+ maintainers = with maintainers; [ gerschtli ];
+ platforms = platforms.all;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pdfkit/default.nix b/nixpkgs/pkgs/development/python-modules/pdfkit/default.nix
new file mode 100644
index 00000000000..0d6edcbd3f4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pdfkit/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "pdfkit";
+ version = "0.6.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1lcc1njpjd2zadbljqsnkrvamschl6j099p4giz1jd6mg1ds67gg";
+ };
+
+ # tests are not distributed
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://pypi.python.org/pypi/pdfkit;
+ description = "Wkhtmltopdf python wrapper to convert html to pdf using the webkit rendering engine and qt";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pdfminer_six/default.nix b/nixpkgs/pkgs/development/python-modules/pdfminer_six/default.nix
new file mode 100644
index 00000000000..57023e786f0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pdfminer_six/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, buildPythonPackage, python, fetchFromGitHub, six, pycryptodome, chardet, nose, pytest, sortedcontainers }:
+
+buildPythonPackage rec {
+ pname = "pdfminer_six";
+ version = "20181108";
+
+ src = fetchFromGitHub {
+ owner = "pdfminer";
+ repo = "pdfminer.six";
+ rev = version;
+ sha256 = "1v8pcx43fgidv1g54s92k85anvcss08blkhm4yi1hn1ybl0mmw6c";
+ };
+
+ propagatedBuildInputs = [ six pycryptodome chardet sortedcontainers ];
+
+ checkInputs = [ nose pytest ];
+ checkPhase = ''
+ ${python.interpreter} -m pytest
+ '';
+
+ meta = with stdenv.lib; {
+ description = "fork of PDFMiner using six for Python 2+3 compatibility";
+ homepage = https://github.com/pdfminer/pdfminer.six;
+ license = licenses.mit;
+ maintainers = with maintainers; [ psyanticy ];
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/pdftotext/default.nix b/nixpkgs/pkgs/development/python-modules/pdftotext/default.nix
new file mode 100644
index 00000000000..6c3b1c0cb92
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pdftotext/default.nix
@@ -0,0 +1,20 @@
+{ lib, buildPythonPackage, fetchPypi, poppler }:
+
+buildPythonPackage rec {
+ pname = "pdftotext";
+ version = "2.1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1jwc2zpss0983wqqi0kpichasljsxar9c4ma8vycn8maw3pi3bg3";
+ };
+
+ buildInputs = [ poppler ];
+
+ meta = with lib; {
+ description = "Simple PDF text extraction";
+ homepage = https://github.com/jalan/pdftotext;
+ license = licenses.mit;
+ maintainers = with maintainers; [ earvstedt ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pdfx/default.nix b/nixpkgs/pkgs/development/python-modules/pdfx/default.nix
new file mode 100644
index 00000000000..d2397fb5c82
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pdfx/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, pdfminer, chardet, pytest }:
+
+buildPythonPackage rec {
+ pname = "pdfx";
+ version = "1.3.1";
+
+ src = fetchFromGitHub {
+ owner = "metachris";
+ repo = "pdfx";
+ rev = "v${version}";
+ sha256 = "1183k4h5qdf8y0imbir9ja3yzzsvdmqgbv3bi6dnkgr1wy2xfr0v";
+ };
+
+ # Remove after https://github.com/metachris/pdfx/pull/28
+ prePatch = ''
+ sed -i -e "s|pdfminer2|pdfminer.six|" setup.py
+ '';
+
+ propagatedBuildInputs = [ pdfminer chardet ];
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with stdenv.lib; {
+ inherit (src.meta) homepage;
+ description = "Extract references (pdf, url, doi, arxiv) and metadata from a PDF";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ marsam ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pecan/default.nix b/nixpkgs/pkgs/development/python-modules/pecan/default.nix
new file mode 100644
index 00000000000..9f3c009f8c1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pecan/default.nix
@@ -0,0 +1,38 @@
+{ stdenv
+, fetchPypi
+, buildPythonPackage
+# Python deps
+, singledispatch
+, logutils
+, webtest
+, Mako
+, genshi
+, Kajiki
+, sqlalchemy
+, gunicorn
+, jinja2
+, virtualenv
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "pecan";
+ version = "1.3.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b5461add4e3f35a7ee377b3d7f72ff13e93f40f3823b3208ab978b29bde936ff";
+ };
+
+ propagatedBuildInputs = [ singledispatch logutils ];
+ buildInputs = [
+ webtest Mako genshi Kajiki sqlalchemy gunicorn jinja2 virtualenv
+ ];
+
+ checkInputs = [ mock ];
+
+ meta = with stdenv.lib; {
+ description = "Pecan";
+ homepage = "https://github.com/pecan/pecan";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/peewee/default.nix b/nixpkgs/pkgs/development/python-modules/peewee/default.nix
new file mode 100644
index 00000000000..afb805c0b7e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/peewee/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, lib, buildPythonPackage, fetchFromGitHub
+, sqlite
+, cython
+, apsw
+, flask
+, withPostgres ? false, psycopg2
+, withMysql ? false, mysql-connector
+}:
+
+buildPythonPackage rec {
+
+ pname = "peewee";
+ version = "3.10.0";
+
+ # pypi release does not provide tests
+ src = fetchFromGitHub {
+ owner = "coleifer";
+ repo = pname;
+ rev = version;
+ sha256 = "166h7vy3j0v4h2jnyiwpmpqgmn95381a5ra40ghghy0fqd9v49g8";
+ };
+
+
+ checkInputs = [ flask ];
+
+ checkPhase = ''
+ rm -r playhouse # avoid using the folder in the cwd
+ python runtests.py
+ '';
+
+ buildInputs = [
+ sqlite
+ cython # compile speedups
+ ];
+
+ propagatedBuildInputs = [
+ apsw # sqlite performance improvement
+ ] ++ (lib.optional withPostgres psycopg2)
+ ++ (lib.optional withMysql mysql-connector);
+
+ meta = with stdenv.lib;{
+ description = "a small, expressive orm";
+ homepage = http://peewee-orm.com;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pelican/default.nix b/nixpkgs/pkgs/development/python-modules/pelican/default.nix
new file mode 100644
index 00000000000..2dcc3e5b873
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pelican/default.nix
@@ -0,0 +1,79 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub
+, glibcLocales, git
+, mock, nose, markdown, lxml, typogrify
+, jinja2, pygments, docutils, pytz, unidecode, six, dateutil, feedgenerator
+, blinker, pillow, beautifulsoup4, markupsafe }:
+
+buildPythonPackage rec {
+ pname = "pelican";
+ version = "4.1.0";
+
+ src = fetchFromGitHub {
+ owner = "getpelican";
+ repo = "pelican";
+ rev = version;
+ sha256 = "1ww3kc5bzp5q7b23n2vmzqch1z06l7vrscn0h96cscvk45sxc7yz";
+ # Remove unicode file names which leads to different checksums on HFS+
+ # vs. other filesystems because of unicode normalisation.
+ extraPostFetch = ''
+ rm -r $out/pelican/tests/output/custom_locale/posts
+ '';
+ };
+
+ doCheck = true;
+
+ # Exclude custom locale test, which files were removed above to fix the source checksum
+ checkPhase = ''
+ nosetests -sv --exclude=test_custom_locale_generation_works pelican
+ '';
+
+ buildInputs = [
+ glibcLocales
+ # Note: Pelican has to adapt to a changed CLI of pandoc before enabling this
+ # again. Compare https://github.com/getpelican/pelican/pull/2252.
+ # Version 4.1.0 is incompatible with our current pandoc version.
+ # pandoc
+ git
+ mock
+ markdown
+ typogrify
+ ];
+
+ propagatedBuildInputs = [
+ jinja2 pygments docutils pytz unidecode six dateutil feedgenerator
+ blinker pillow beautifulsoup4 markupsafe lxml
+ ];
+
+ checkInputs = [
+ nose
+ ];
+
+ postPatch= ''
+ substituteInPlace pelican/tests/test_pelican.py \
+ --replace "'git'" "'${git}/bin/git'"
+
+ # Markdown-3.1 changed footnote separator to colon
+ # https://github.com/getpelican/pelican/issues/2493#issuecomment-491723744
+ sed -i '/test_article_with_footnote/i\
+ @unittest.skip("")' pelican/tests/test_readers.py
+ '';
+
+ LC_ALL="en_US.UTF-8";
+
+
+ # We only want to patch shebangs in /bin, and not those
+ # of the project scripts that are created by Pelican.
+ # See https://github.com/NixOS/nixpkgs/issues/30116
+ dontPatchShebangs = true;
+
+ postFixup = ''
+ patchShebangs $out/bin
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A tool to generate a static blog from reStructuredText or Markdown input files";
+ homepage = http://getpelican.com/;
+ license = licenses.agpl3;
+ maintainers = with maintainers; [ offline prikhi ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pendulum/default.nix b/nixpkgs/pkgs/development/python-modules/pendulum/default.nix
new file mode 100644
index 00000000000..c3090f95900
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pendulum/default.nix
@@ -0,0 +1,23 @@
+{ lib, fetchPypi, buildPythonPackage, pythonOlder
+, dateutil, pytzdata, typing }:
+
+buildPythonPackage rec {
+ pname = "pendulum";
+ version = "2.0.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "cf535d36c063575d4752af36df928882b2e0e31541b4482c97d63752785f9fcb";
+ };
+
+ propagatedBuildInputs = [ dateutil pytzdata ] ++ lib.optional (pythonOlder "3.5") typing;
+
+ # No tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Python datetimes made easy";
+ homepage = https://github.com/sdispater/pendulum;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pep257/default.nix b/nixpkgs/pkgs/development/python-modules/pep257/default.nix
new file mode 100644
index 00000000000..fc1028a0d1c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pep257/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, fetchurl, pytest, mock }:
+buildPythonPackage rec {
+ pname = "pep257";
+ version = "0.7.0";
+
+ src = fetchurl {
+ url = "https://github.com/GreenSteam/pep257/archive/${version}.tar.gz";
+ sha256 = "1ldpgil0kaf6wz5gvl9xdx35a62vc6bmgi3wbh9320dj5v2qk4wh";
+ };
+
+ checkInputs = [ pytest mock ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/GreenSteam/pep257/;
+ description = "Python docstring style checker";
+ longDescription = "Static analysis tool for checking compliance with Python PEP 257.";
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pep8-naming/default.nix b/nixpkgs/pkgs/development/python-modules/pep8-naming/default.nix
new file mode 100644
index 00000000000..20da40560e2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pep8-naming/default.nix
@@ -0,0 +1,23 @@
+{ lib, fetchPypi, buildPythonPackage
+, flake8-polyfill }:
+
+buildPythonPackage rec {
+ pname = "pep8-naming";
+ version = "0.8.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1aff4g3i2z08cx7z17nbxbf32ddrnvqlk16h6d8h9s9w5ymivjq1";
+ };
+
+ propagatedBuildInputs = [
+ flake8-polyfill
+ ];
+
+ meta = with lib; {
+ homepage = https://github.com/PyCQA/pep8-naming;
+ description = "Check PEP-8 naming conventions, plugin for flake8";
+ license = licenses.mit;
+ maintainers = with maintainers; [ eadwu ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pep8/default.nix b/nixpkgs/pkgs/development/python-modules/pep8/default.nix
new file mode 100644
index 00000000000..12176b97380
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pep8/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "pep8";
+ version = "1.7.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "fe249b52e20498e59e0b5c5256aa52ee99fc295b26ec9eaa85776ffdb9fe6374";
+ };
+
+ # FAIL: test_checkers_testsuite (testsuite.test_all.Pep8TestCase)
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = "https://pep8.readthedocs.org/";
+ description = "Python style guide checker";
+ license = licenses.mit;
+ maintainers = with maintainers; [ ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/peppercorn/default.nix b/nixpkgs/pkgs/development/python-modules/peppercorn/default.nix
new file mode 100644
index 00000000000..1fb661d53e7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/peppercorn/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "peppercorn";
+ version = "0.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1ip4bfwcpwkq9hz2dai14k2cyabvwrnvcvrcmzxmqm04g8fnimwn";
+ };
+
+ meta = with stdenv.lib; {
+ description = "A library for converting a token stream into a data structure for use in web form posts";
+ homepage = https://docs.pylonsproject.org/projects/peppercorn/en/latest/;
+ maintainers = with maintainers; [ domenkozar ];
+ platforms = platforms.all;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/percol/default.nix b/nixpkgs/pkgs/development/python-modules/percol/default.nix
new file mode 100644
index 00000000000..2d113049009
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/percol/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "percol";
+ version = "0.2.1";
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "7a649c6fae61635519d12a6bcacc742241aad1bff3230baef2cedd693ed9cfe8";
+ };
+
+ propagatedBuildInputs = [ six ];
+
+ meta = with lib; {
+ homepage = https://github.com/mooz/percol;
+ description = "Adds flavor of interactive filtering to the traditional pipe concept of shell";
+ license = licenses.mit;
+ maintainers = with maintainers; [ koral ];
+ broken = true; # missing cmigemo package which is missing libmigemo.so
+ # also doesn't support python3
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/perfplot/default.nix b/nixpkgs/pkgs/development/python-modules/perfplot/default.nix
new file mode 100644
index 00000000000..4e451e816c0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/perfplot/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, matplotlib
+, numpy
+, pipdate
+, tqdm
+, pytest
+, isPy27
+}:
+
+buildPythonPackage rec {
+ pname = "perfplot";
+ version = "0.5.0";
+ disabled = isPy27;
+
+ src = fetchFromGitHub {
+ owner = "nschloe";
+ repo = "perfplot";
+ rev = "v${version}";
+ sha256 = "16aj5ryjic1k3qn8xhpw6crczvxcs691vs5kv4pvb1zdx69g1xbv";
+ };
+
+ propagatedBuildInputs = [
+ matplotlib
+ numpy
+ pipdate
+ tqdm
+ ];
+
+ checkInputs = [
+ pytest
+ ];
+
+ checkPhase = ''
+ HOME=$(mktemp -d) pytest test/perfplot_test.py
+ '';
+
+ meta = with lib; {
+ description = "Performance plots for Python code snippets";
+ homepage = https://github.com/nschloe/perfplot;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/periodictable/default.nix b/nixpkgs/pkgs/development/python-modules/periodictable/default.nix
new file mode 100644
index 00000000000..e77c281e2c4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/periodictable/default.nix
@@ -0,0 +1,20 @@
+{lib, fetchPypi, buildPythonPackage, numpy, pyparsing}:
+
+buildPythonPackage rec{
+ pname = "periodictable";
+ version = "1.5.0";
+
+ propagatedBuildInputs = [numpy pyparsing];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1cjk6aqcz41nxm4fpriz01vqdafd6g57cjk0wh1iklk5cx6c085h";
+ };
+
+ meta = {
+ homepage = http://www.reflectometry.org/danse/software.html;
+ description = "an extensible periodic table of the elements prepopulated with data important to neutron and x-ray scattering experiments";
+ license = lib.licenses.publicDomain;
+ maintainers = with lib.maintainers; [ rprospero ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/persim/default.nix b/nixpkgs/pkgs/development/python-modules/persim/default.nix
new file mode 100644
index 00000000000..12bfddb3deb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/persim/default.nix
@@ -0,0 +1,50 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, scikitlearn
+, numpy
+, matplotlib
+, scipy
+, hopcroftkarp
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "persim";
+ version = "0.0.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "52ce59856de25eec74c6f20951301b13e7d98c434e712d2225653e2087d54fbc";
+ };
+
+ propagatedBuildInputs = [
+ scikitlearn
+ numpy
+ matplotlib
+ scipy
+ hopcroftkarp
+ ];
+
+ checkInputs = [
+ pytest
+ ];
+
+ checkPhase = ''
+ # specifically needed for darwin
+ export HOME=$(mktemp -d)
+ mkdir -p $HOME/.matplotlib
+ echo "backend: ps" > $HOME/.matplotlib/matplotlibrc
+
+ # ignore tests due to python 2.7 fail
+ pytest --ignore test/test_plots.py \
+ --ignore test/test_visuals.py
+ '';
+
+ meta = with lib; {
+ description = "Distances and representations of persistence diagrams";
+ homepage = https://persim.scikit-tda.org;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/persistent/default.nix b/nixpkgs/pkgs/development/python-modules/persistent/default.nix
new file mode 100644
index 00000000000..88008cd9530
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/persistent/default.nix
@@ -0,0 +1,25 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, zope_interface, cffi
+, sphinx, manuel
+}:
+
+buildPythonPackage rec {
+ pname = "persistent";
+ version = "4.5.0";
+
+ nativeBuildInputs = [ sphinx manuel ];
+ propagatedBuildInputs = [ zope_interface cffi ];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0slbvq1m3rilgyhj6i522rsyv592xv9pmvm61mrmgkgf40kfnz69";
+ };
+
+ meta = {
+ description = "Automatic persistence for Python objects";
+ homepage = "http://www.zodb.org/";
+ license = lib.licenses.zpl21;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pex/default.nix b/nixpkgs/pkgs/development/python-modules/pex/default.nix
new file mode 100644
index 00000000000..1e61992b49d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pex/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, setuptools
+}:
+
+buildPythonPackage rec {
+ pname = "pex";
+ version = "1.6.8";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1zibkc074dvk69bkiipfzn2l9glgzs26g16j2ny5lzq320wqszkj";
+ };
+
+ nativeBuildInputs = [ setuptools ];
+
+ # A few more dependencies I don't want to handle right now...
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A library and tool for generating .pex (Python EXecutable) files";
+ homepage = "https://github.com/pantsbuild/pex";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ copumpkin ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pexif/default.nix b/nixpkgs/pkgs/development/python-modules/pexif/default.nix
new file mode 100644
index 00000000000..ac1c7de8682
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pexif/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "pexif";
+ version = "0.15";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "45a3be037c7ba8b64bbfc48f3586402cc17de55bb9d7357ef2bc99954a18da3f";
+ };
+
+ meta = with stdenv.lib; {
+ description = "A module for editing JPEG EXIF data";
+ homepage = http://www.benno.id.au/code/pexif/;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pexpect/default.nix b/nixpkgs/pkgs/development/python-modules/pexpect/default.nix
new file mode 100644
index 00000000000..0116212ad9e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pexpect/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, ptyprocess
+}:
+
+buildPythonPackage rec {
+ pname = "pexpect";
+ version = "4.6.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2a8e88259839571d1251d278476f3eec5db26deb73a70be5ed5dc5435e418aba";
+ };
+
+ # Wants to run pythonin a subprocess
+ doCheck = false;
+
+ propagatedBuildInputs = [ ptyprocess ];
+
+ meta = with lib; {
+ homepage = http://www.noah.org/wiki/Pexpect;
+ description = "Automate interactive console applications such as ssh, ftp, etc";
+ license = licenses.mit;
+ maintainers = with maintainers; [ zimbatm ];
+
+ longDescription = ''
+ Pexpect is similar to the Don Libes "Expect" system, but Pexpect
+ as a different interface that is easier to understand. Pexpect
+ is basically a pattern matching system. It runs programs and
+ watches output. When output matches a given pattern Pexpect can
+ respond as if a human were typing responses. Pexpect can be used
+ for automation, testing, and screen scraping. Pexpect can be
+ used for automating interactive console applications such as
+ ssh, ftp, passwd, telnet, etc. It can also be used to control
+ web applications via "lynx", "w3m", or some other text-based web
+ browser. Pexpect is pure Python. Unlike other Expect-like
+ modules for Python Pexpect does not require TCL or Expect nor
+ does it require C extensions to be compiled. It should work on
+ any platform that supports the standard Python pty module.
+ '';
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pg8000/1_12.nix b/nixpkgs/pkgs/development/python-modules/pg8000/1_12.nix
new file mode 100644
index 00000000000..efeee5e077f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pg8000/1_12.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytz
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "pg8000";
+ version = "1.12.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1yc3knh28cx3rjb2ifg5kmqqa78yyyw2gzzslbm9fj0mzh5aq1sx";
+ };
+
+ propagatedBuildInputs = [ pytz six ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/tlocke/pg8000;
+ description = "PostgreSQL interface library, for asyncio";
+ maintainers = with maintainers; [ domenkozar ];
+ platforms = platforms.unix;
+ };
+
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/pg8000/default.nix b/nixpkgs/pkgs/development/python-modules/pg8000/default.nix
new file mode 100644
index 00000000000..7ea154255c1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pg8000/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, passlib
+}:
+
+buildPythonPackage rec {
+ pname = "pg8000";
+ version = "1.13.1";
+
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2208c7aaffe8d61f5c4ccbefeb74ba033003899e64aee37c0eb98aadae8b9c6b";
+ };
+
+ propagatedBuildInputs = [ passlib ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/tlocke/pg8000;
+ description = "PostgreSQL interface library, for asyncio";
+ maintainers = with maintainers; [ domenkozar ];
+ platforms = platforms.unix;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pglast/default.nix b/nixpkgs/pkgs/development/python-modules/pglast/default.nix
new file mode 100644
index 00000000000..bfa6c301a7b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pglast/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, pythonOlder
+, aenum
+, pytest
+, pytestcov
+}:
+
+buildPythonPackage rec {
+ pname = "pglast";
+ version = "1.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1442ae2cfc6427e9a8fcc2dc18d9ecfcaa1b16eba237fdcf0b2b13912eab9a86";
+ };
+
+ disabled = !isPy3k;
+
+ propagatedBuildInputs = lib.optionals (pythonOlder "3.6") [ aenum ];
+
+ checkInputs = [ pytest pytestcov ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with lib; {
+ homepage = "https://github.com/lelit/pglast";
+ description = "PostgreSQL Languages AST and statements prettifier";
+ license = licenses.gpl3Plus;
+ maintainers = [ maintainers.marsam ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pgpdump/default.nix b/nixpkgs/pkgs/development/python-modules/pgpdump/default.nix
new file mode 100644
index 00000000000..ea9ef0a156f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pgpdump/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "pgpdump";
+ version = "1.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0s4nh8h7qsdj2yf29bspjs1zvxd4lcd11r6g11dp7fppgf2h0iqw";
+ };
+
+ # Disabling check because of: https://github.com/toofishes/python-pgpdump/issues/18
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Python library for parsing PGP packets";
+ homepage = https://github.com/toofishes/python-pgpdump;
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pgpy/default.nix b/nixpkgs/pkgs/development/python-modules/pgpy/default.nix
new file mode 100644
index 00000000000..50220bb3993
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pgpy/default.nix
@@ -0,0 +1,48 @@
+{ lib, isPy3k, fetchFromGitHub, buildPythonPackage
+, six, enum34, pyasn1, cryptography, singledispatch
+, fetchPypi
+, gpgme, flake8, pytest, pytestcov, pep8-naming, pytest-ordering }:
+
+buildPythonPackage rec {
+ pname = "pgpy";
+ version = "0.5.2";
+
+ src = fetchFromGitHub {
+ owner = "SecurityInnovation";
+ repo = "PGPy";
+ rev = version;
+ sha256 = "1v2b1dyq1sl48d2gw7vn4hv6sasd9ihpzzcq8yvxj9dgfak2y663";
+ };
+
+ propagatedBuildInputs = [
+ six
+ pyasn1
+ cryptography
+ singledispatch
+ ] ++ lib.optional (!isPy3k) enum34;
+
+ checkInputs = [
+ gpgme
+ flake8
+ pytest
+ pytestcov
+ pep8-naming
+ pytest-ordering
+ ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with lib; {
+ homepage = https://github.com/SecurityInnovation/PGPy;
+ description = "Pretty Good Privacy for Python 2 and 3";
+ longDescription = ''
+ PGPy is a Python (2 and 3) library for implementing Pretty Good Privacy
+ into Python programs, conforming to the OpenPGP specification per RFC
+ 4880.
+ '';
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ eadwu ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pgsanity/default.nix b/nixpkgs/pkgs/development/python-modules/pgsanity/default.nix
new file mode 100644
index 00000000000..85db917cef8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pgsanity/default.nix
@@ -0,0 +1,35 @@
+{ stdenv
+, python
+, fetchPypi
+, buildPythonPackage
+, postgresql }:
+
+buildPythonPackage rec {
+ pname = "pgsanity";
+ version = "0.2.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "de0bbd6fe4f98bf5139cb5f466eac2e2abaf5a7b050b9e4867b87bf360873173";
+ };
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover -s test
+ '';
+
+ propagatedBuildInputs = [ postgresql ];
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/markdrago/pgsanity";
+ description = "Checks the syntax of Postgresql SQL files";
+ longDescription = ''
+ PgSanity checks the syntax of Postgresql SQL files by
+ taking a file that has a list of bare SQL in it,
+ making that file look like a C file with embedded SQL,
+ run it through ecpg and
+ let ecpg report on the syntax errors of the SQL.
+ '';
+ license = stdenv.lib.licenses.mit;
+ maintainers = with maintainers; [ nalbyuites ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pgspecial/default.nix b/nixpkgs/pkgs/development/python-modules/pgspecial/default.nix
new file mode 100644
index 00000000000..8c653ce060a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pgspecial/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytest, psycopg2, click, sqlparse }:
+
+buildPythonPackage rec {
+ pname = "pgspecial";
+ version = "1.11.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0yvlxv9vy0hbfgf0xcwl7wh5hg6cl86arsv1ip3kvn9znn6x8kgl";
+ };
+
+ checkInputs = [ pytest psycopg2 ];
+ propagatedBuildInputs = [ click sqlparse ];
+
+ checkPhase = ''
+ find tests -name \*.pyc -delete
+ py.test tests
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Meta-commands handler for Postgres Database";
+ homepage = https://pypi.python.org/pypi/pgspecial;
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/phe/default.nix b/nixpkgs/pkgs/development/python-modules/phe/default.nix
new file mode 100644
index 00000000000..b016a9bd92c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/phe/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPyPy, isPy3k, click, gmpy2, numpy } :
+
+let
+ pname = "phe";
+ version = "1.4.0";
+in
+
+buildPythonPackage {
+ inherit pname version;
+
+ # https://github.com/n1analytics/python-paillier/issues/51
+ disabled = isPyPy || ! isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0wzlk7d24kp0f5kpm0kvvc88mm42144f5cg9pcpb1dsfha75qy5m";
+ };
+
+ buildInputs = [ click gmpy2 numpy ];
+
+ # 29/233 tests fail
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A library for Partially Homomorphic Encryption in Python";
+ homepage = https://github.com/n1analytics/python-paillier;
+ license = licenses.gpl3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/phonenumbers/default.nix b/nixpkgs/pkgs/development/python-modules/phonenumbers/default.nix
new file mode 100644
index 00000000000..6d2e8169eb7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/phonenumbers/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, fetchPypi, buildPythonPackage }:
+
+buildPythonPackage rec {
+ pname = "phonenumbers";
+ version = "8.10.17";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "023rcv3qishd5n33gj22dzgq51kzpk41ckcmim96s1xvdbd2sxg9";
+ };
+
+ meta = {
+ description = "Python version of Google's common library for parsing, formatting, storing and validating international phone numbers";
+ homepage = https://github.com/daviddrysdale/python-phonenumbers;
+ license = stdenv.lib.licenses.asl20;
+ maintainers = with stdenv.lib.maintainers; [ fadenb ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/phonopy/default.nix b/nixpkgs/pkgs/development/python-modules/phonopy/default.nix
new file mode 100644
index 00000000000..026d466d218
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/phonopy/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, buildPythonPackage, python, fetchPypi, numpy, pyyaml, matplotlib, h5py }:
+
+buildPythonPackage rec {
+ pname = "phonopy";
+ version = "2.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "46baf7c4571fe75374071674727c2beb0388cf57073e0623d8457f04b1c54495";
+ };
+
+ propagatedBuildInputs = [ numpy pyyaml matplotlib h5py ];
+
+ checkPhase = ''
+ cd test
+ # dynamic structure factor test ocassionally fails do to roundoff
+ # see issue https://github.com/atztogo/phonopy/issues/79
+ rm spectrum/test_dynamic_structure_factor.py
+ ${python.interpreter} -m unittest discover -b
+ cd ../..
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A package for phonon calculations at harmonic and quasi-harmonic levels";
+ homepage = https://atztogo.github.io/phonopy/;
+ license = licenses.bsd0;
+ maintainers = with maintainers; [ psyanticy ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/phpserialize/default.nix b/nixpkgs/pkgs/development/python-modules/phpserialize/default.nix
new file mode 100644
index 00000000000..0ddeb99f10b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/phpserialize/default.nix
@@ -0,0 +1,21 @@
+{lib, buildPythonPackage, fetchPypi}:
+
+buildPythonPackage rec {
+ pname = "phpserialize";
+ version = "1.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "19qgkb9z4zjbjxlpwh2w6pxkz2j3iymnydi69jl0jg905lqjsrxz";
+ };
+
+ # project does not have tests at the moment
+ doCheck = false;
+
+ meta = {
+ description = "A port of the serialize and unserialize functions of PHP to Python";
+ homepage = https://github.com/mitsuhiko/phpserialize;
+ license = lib.licenses.bsd3;
+ maintainers = with lib.maintainers; [ jluttine ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/piccata/default.nix b/nixpkgs/pkgs/development/python-modules/piccata/default.nix
new file mode 100644
index 00000000000..bd00b2f6d55
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/piccata/default.nix
@@ -0,0 +1,19 @@
+{ buildPythonPackage, fetchPypi, lib, ipaddress }:
+
+buildPythonPackage rec {
+ pname = "piccata";
+ version = "1.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "45f6c98c2ea809d445040888117f99bc3ee843490d86fecc5805ff5ea41508f7";
+ };
+
+ propagatedBuildInputs = [ ipaddress ];
+
+ meta = {
+ description = "Simple CoAP (RFC7252) toolkit";
+ homepage = "https://github.com/NordicSemiconductor/piccata";
+ maintainers = with lib.maintainers; [ gebner ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pickleshare/default.nix b/nixpkgs/pkgs/development/python-modules/pickleshare/default.nix
new file mode 100644
index 00000000000..b46207ae33d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pickleshare/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pathpy
+, pathlib2
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+ version = "0.7.5";
+ pname = "pickleshare";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca";
+ };
+
+ propagatedBuildInputs = [ pathpy ]
+ ++ stdenv.lib.optional (pythonOlder "3.4") pathlib2;
+
+ # No proper test suite
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Tiny 'shelve'-like database with concurrency support";
+ homepage = https://github.com/vivainio/pickleshare;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/picos/default.nix b/nixpkgs/pkgs/development/python-modules/picos/default.nix
new file mode 100644
index 00000000000..57fbe099071
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/picos/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitLab
+, numpy
+, cvxopt
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "picos";
+ version = "1.2.0";
+
+ src = fetchFromGitLab {
+ owner = "picos-api";
+ repo = "picos";
+ rev = "v${version}";
+ sha256 = "018xhc7cb2crkk27lhl63c7h77w5wa37fg41i7nqr4xclr43cs9z";
+ };
+
+ propagatedBuildInputs = [
+ numpy
+ cvxopt
+ ];
+
+ checkPhase = ''
+ ${python.interpreter} test.py
+ '';
+
+ meta = with lib; {
+ description = "A Python interface to conic optimization solvers";
+ homepage = https://gitlab.com/picos-api/picos;
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ tobiasBora ];
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/pid/default.nix b/nixpkgs/pkgs/development/python-modules/pid/default.nix
new file mode 100644
index 00000000000..68009435750
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pid/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+}:
+
+buildPythonPackage rec {
+ pname = "pid";
+ version = "2.2.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "077da788630394adce075c88f4a087bcdb27d98cab67eb9046ebcfeedfc1194d";
+ };
+
+ buildInputs = [ nose ];
+
+ # No tests included
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Pidfile featuring stale detection and file-locking";
+ homepage = https://github.com/trbs/pid/;
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/piep/default.nix b/nixpkgs/pkgs/development/python-modules/piep/default.nix
new file mode 100644
index 00000000000..0ef44f98175
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/piep/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, pygments
+}:
+
+buildPythonPackage rec {
+ version = "0.9.2";
+ pname = "piep";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0b5anpsq16xkiisws95jif5s5mplkl1kdnhy0w0i6m0zcy50jnxq";
+ };
+
+ propagatedBuildInputs = [ pygments ];
+ checkInputs = [ nose ];
+
+ meta = with stdenv.lib; {
+ description = "Bringing the power of python to stream editing";
+ homepage = https://github.com/timbertson/piep;
+ maintainers = with maintainers; [ timbertson ];
+ license = licenses.gpl3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/piexif/default.nix b/nixpkgs/pkgs/development/python-modules/piexif/default.nix
new file mode 100644
index 00000000000..595e246f777
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/piexif/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi, pillow }:
+
+buildPythonPackage rec {
+ pname = "piexif";
+ version = "1.1.3";
+
+ # Pillow needed for unit tests
+ checkInputs = [ pillow ];
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "06sz58q4mrw472p8fbnq7wsj8zpi5js5r8phm2hiwfmz0v33bjw3";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Simplify Exif manipulations with Python";
+ homepage = https://github.com/hMatoba/Piexif;
+ license = licenses.mit;
+ maintainers = with maintainers; [ jluttine ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pika-pool/default.nix b/nixpkgs/pkgs/development/python-modules/pika-pool/default.nix
new file mode 100644
index 00000000000..5007fc78d10
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pika-pool/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, pika
+}:
+
+buildPythonPackage rec {
+ pname = "pika-pool";
+ version = "0.1.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f3985888cc2788cdbd293a68a8b5702a9c955db6f7b8b551aeac91e7f32da397";
+ };
+
+ postPatch = ''
+ substituteInPlace setup.py --replace "pika >=0.9,<0.11" "pika"
+ '';
+
+ # Tests require database connections
+ doCheck = false;
+
+ propagatedBuildInputs = [ pika ];
+ meta = with stdenv.lib; {
+ homepage = https://github.com/bninja/pika-pool;
+ license = licenses.bsdOriginal;
+ description = "Pools for pikas.";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pika/default.nix b/nixpkgs/pkgs/development/python-modules/pika/default.nix
new file mode 100644
index 00000000000..b09c4a240e5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pika/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, mock
+, twisted
+, tornado
+}:
+
+buildPythonPackage rec {
+ pname = "pika";
+ version = "1.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1gqx9avb9nwgiyw5nz08bf99v9b0hvzr1pmqn9wbhd2hnsj6p9wz";
+ };
+
+ checkInputs = [ nose mock twisted tornado ];
+
+ meta = with stdenv.lib; {
+ description = "Pure-Python implementation of the AMQP 0-9-1 protocol";
+ homepage = https://pika.readthedocs.org;
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pikepdf/default.nix b/nixpkgs/pkgs/development/python-modules/pikepdf/default.nix
new file mode 100644
index 00000000000..025b17d19ae
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pikepdf/default.nix
@@ -0,0 +1,75 @@
+{ attrs
+, buildPythonPackage
+, defusedxml
+, fetchPypi
+, hypothesis
+, isPy3k
+, lxml
+, pillow
+, pybind11
+, pytest
+, pytest-helpers-namespace
+, pytest-timeout
+, pytest_xdist
+, pytestrunner
+, python-xmp-toolkit
+, python3
+, qpdf
+, setuptools-scm-git-archive
+, setuptools_scm
+, stdenv
+}:
+
+buildPythonPackage rec {
+ pname = "pikepdf";
+ version = "1.6.2";
+ disabled = ! isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1x1b55znr0j4fib69l2h0xq0qmbf2nbxwbwd4f7y8r4sqi20239z";
+ };
+
+ buildInputs = [
+ pybind11
+ qpdf
+ ];
+
+ nativeBuildInputs = [
+ setuptools-scm-git-archive
+ setuptools_scm
+ ];
+
+ checkInputs = [
+ attrs
+ hypothesis
+ pillow
+ pytest
+ pytest-helpers-namespace
+ pytest-timeout
+ pytest_xdist
+ pytestrunner
+ python-xmp-toolkit
+ ];
+
+ propagatedBuildInputs = [ defusedxml lxml ];
+
+ postPatch = ''
+ sed -i \
+ -e 's/^pytest .*/pytest/g' \
+ -e 's/^attrs .*/attrs/g' \
+ -e 's/^hypothesis .*/hypothesis/g' \
+ requirements/test.txt
+ '';
+
+ preBuild = ''
+ HOME=$TMPDIR
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/pikepdf/pikepdf";
+ description = "Read and write PDFs with Python, powered by qpdf";
+ license = licenses.mpl20;
+ maintainers = [ maintainers.kiwi ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pilkit/default.nix b/nixpkgs/pkgs/development/python-modules/pilkit/default.nix
new file mode 100644
index 00000000000..0f2a2bb4a8b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pilkit/default.nix
@@ -0,0 +1,36 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pillow
+, nose_progressive
+, nose
+, mock
+, blessings
+}:
+
+buildPythonPackage rec {
+ pname = "pilkit";
+ version = "2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ddb30c2f0198a147e56b151476c3bb9fe045fbfd5b0a0fa2a3148dba62d1559f";
+ };
+
+ preConfigure = ''
+ substituteInPlace setup.py --replace 'nose==1.2.1' 'nose'
+ '';
+
+ # tests fail, see https://github.com/matthewwithanm/pilkit/issues/9
+ doCheck = false;
+
+ buildInputs = [ pillow nose_progressive nose mock blessings ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/matthewwithanm/pilkit/;
+ description = "A collection of utilities and processors for the Python Imaging Libary";
+ license = licenses.bsd0;
+ maintainers = with maintainers; [ domenkozar ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pillow/default.nix b/nixpkgs/pkgs/development/python-modules/pillow/default.nix
new file mode 100644
index 00000000000..e0791248e26
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pillow/default.nix
@@ -0,0 +1,75 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPyPy
+, olefile
+, freetype, libjpeg, zlib, libtiff, libwebp, tcl, lcms2, tk, libX11
+, pytestrunner
+, pytest
+}:
+buildPythonPackage rec {
+ pname = "Pillow";
+ version = "5.4.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5233664eadfa342c639b9b9977190d64ad7aca4edc51a966394d7e08e7f38a9f";
+ };
+
+ doCheck = !stdenv.isDarwin && !isPyPy;
+
+ # Disable imagefont tests, because they don't work well with infinality:
+ # https://github.com/python-pillow/Pillow/issues/1259
+ postPatch = ''
+ rm Tests/test_imagefont.py
+ '';
+
+ propagatedBuildInputs = [ olefile ];
+
+ checkInputs = [ pytest pytestrunner ];
+
+ buildInputs = [
+ freetype libjpeg zlib libtiff libwebp tcl lcms2 ]
+ ++ stdenv.lib.optionals (isPyPy) [ tk libX11 ];
+
+ # NOTE: we use LCMS_ROOT as WEBP root since there is not other setting for webp.
+ # NOTE: The Pillow install script will, by default, add paths like /usr/lib
+ # and /usr/include to the search paths. This can break things when building
+ # on a non-NixOS system that has some libraries installed that are not
+ # installed in Nix (for example, Arch Linux has jpeg2000 but Nix doesn't
+ # build Pillow with this support). We patch the `disable_platform_guessing`
+ # setting here, instead of passing the `--disable-platform-guessing`
+ # command-line option, since the command-line option doesn't work when we run
+ # tests.
+ preConfigure = let
+ libinclude' = pkg: ''"${pkg.out}/lib", "${pkg.out}/include"'';
+ libinclude = pkg: ''"${pkg.out}/lib", "${pkg.dev}/include"'';
+ in ''
+ sed -i "setup.py" \
+ -e 's|^FREETYPE_ROOT =.*$|FREETYPE_ROOT = ${libinclude freetype}|g ;
+ s|^JPEG_ROOT =.*$|JPEG_ROOT = ${libinclude libjpeg}|g ;
+ s|^ZLIB_ROOT =.*$|ZLIB_ROOT = ${libinclude zlib}|g ;
+ s|^LCMS_ROOT =.*$|LCMS_ROOT = ${libinclude lcms2}|g ;
+ s|^TIFF_ROOT =.*$|TIFF_ROOT = ${libinclude libtiff}|g ;
+ s|^TCL_ROOT=.*$|TCL_ROOT = ${libinclude' tcl}|g ;
+ s|self\.disable_platform_guessing = None|self.disable_platform_guessing = True|g ;'
+ export LDFLAGS="-L${libwebp}/lib"
+ export CFLAGS="-I${libwebp}/include"
+ ''
+ # Remove impurities
+ + stdenv.lib.optionalString stdenv.isDarwin ''
+ substituteInPlace setup.py \
+ --replace '"/Library/Frameworks",' "" \
+ --replace '"/System/Library/Frameworks"' ""
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://python-pillow.github.io/;
+ description = "Fork of The Python Imaging Library (PIL)";
+ 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 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pillowfight/default.nix b/nixpkgs/pkgs/development/python-modules/pillowfight/default.nix
new file mode 100644
index 00000000000..879ebe252d7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pillowfight/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pillow
+}:
+
+buildPythonPackage rec {
+ pname = "pillowfight";
+ version = "0.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "913869b0563c5982bcf08cb1ea56fb0f87e3573d738e3e3692301bf45dba6252";
+ };
+
+ propagatedBuildInputs = [ pillow ];
+
+ meta = with stdenv.lib; {
+ description = "Pillow Fight";
+ homepage = "https://github.com/beanbaginc/pillowfight";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pims/default.nix b/nixpkgs/pkgs/development/python-modules/pims/default.nix
new file mode 100644
index 00000000000..4504886d03d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pims/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, slicerator
+, scikitimage
+, six
+, numpy
+, tifffile
+, nose
+}:
+
+buildPythonPackage rec {
+ version = "0.4.1";
+ pname = "PIMS";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6a53a155e900b44e71127a1e1fccbfbaed7eec3c2b52497c40c23a05f334c9dd";
+ };
+
+ checkInputs = [ nose ];
+ propagatedBuildInputs = [ slicerator six numpy tifffile scikitimage ];
+
+ # not everything packaged with pypi release
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/soft-matter/pims;
+ description = "Python Image Sequence: Load video and sequential images in many formats with a simple, consistent interface";
+ license = licenses.bsdOriginal;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pint/default.nix b/nixpkgs/pkgs/development/python-modules/pint/default.nix
new file mode 100644
index 00000000000..8bbda8bd51f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pint/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, isPy27
+, funcsigs
+}:
+
+buildPythonPackage rec {
+ pname = "pint";
+ version = "0.9";
+
+ src = fetchPypi {
+ inherit version;
+ pname = "Pint";
+ sha256 = "32d8a9a9d63f4f81194c0014b3b742679dce81a26d45127d9810a68a561fe4e2";
+ };
+
+ propagatedBuildInputs = lib.optional isPy27 funcsigs;
+
+ meta = with lib; {
+ description = "Physical quantities module";
+ license = licenses.bsd3;
+ homepage = "https://github.com/hgrecco/pint/";
+ maintainers = [ maintainers.costrouc ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pip-tools/default.nix b/nixpkgs/pkgs/development/python-modules/pip-tools/default.nix
new file mode 100644
index 00000000000..a9054b2ed85
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pip-tools/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, fetchPypi, buildPythonPackage, pip, pytest, click, six, first
+, setuptools_scm, git, glibcLocales, mock }:
+
+buildPythonPackage rec {
+ pname = "pip-tools";
+ version = "3.8.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1vwh3hx4jrzf51yj9h31nk9ji53lqaq63mlqd7n84hcmfwy3rwz4";
+ };
+
+ LC_ALL = "en_US.UTF-8";
+ checkInputs = [ pytest git glibcLocales mock ];
+ propagatedBuildInputs = [ pip click six first setuptools_scm ];
+
+ disabledTests = stdenv.lib.concatMapStringsSep " and " (s: "not " + s) [
+ # Depend on network tests:
+ "test_allow_unsafe_option" #paramaterized, but all fail
+ "test_annotate_option" #paramaterized, but all fail
+ "test_editable_package_vcs"
+ "test_editable_top_level_deps_preserved" # can't figure out how to select only one parameter to ignore
+ "test_filter_pip_markers"
+ "test_filter_pip_markes"
+ "test_generate_hashes_all_platforms"
+ "test_generate_hashes_verbose"
+ "test_generate_hashes_with_editable"
+ "test_generate_hashes_with_url"
+ "test_generate_hashes_without_interfering_with_each_other"
+ "test_get_hashes_local_repository_cache_miss"
+ "test_realistic_complex_sub_dependencies"
+ "test_stdin"
+ "test_upgrade_packages_option"
+ "test_url_package"
+ # Expect specific version of "six":
+ "test_editable_package"
+ "test_input_file_without_extension"
+ "test_locally_available_editable_package_is_not_archived_in_cache_dir"
+ "test_no_candidates"
+ "test_no_candidates_pre"
+ ];
+
+ checkPhase = ''
+ export HOME=$(mktemp -d) VIRTUAL_ENV=1
+ py.test -k "${disabledTests}"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Keeps your pinned dependencies fresh";
+ homepage = https://github.com/jazzband/pip-tools/;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ zimbatm ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pip/default.nix b/nixpkgs/pkgs/development/python-modules/pip/default.nix
new file mode 100644
index 00000000000..9892d02b392
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pip/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, python
+, buildPythonPackage
+, bootstrapped-pip
+, fetchPypi
+, mock
+, scripttest
+, virtualenv
+, pretend
+, pytest
+, setuptools
+, wheel
+}:
+
+buildPythonPackage rec {
+ pname = "pip";
+ version = "19.2.3";
+ format = "other";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "e7a31f147974362e6c82d84b91c7f2bdf57e4d3163d3d454e6c3e71944d67135";
+ };
+
+ 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 = lib.licenses.mit;
+ homepage = https://pip.pypa.io/;
+ priority = 10;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pip2nix/default.nix b/nixpkgs/pkgs/development/python-modules/pip2nix/default.nix
new file mode 100644
index 00000000000..0e648f1ca18
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pip2nix/default.nix
@@ -0,0 +1,36 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, click
+, configobj
+, contexter
+, jinja2
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "pip2nix";
+ version = "0.7.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ec9a71e09ac7f43cc7b6c9d386384eb7b5c331bf6ea0e72ca559d87979397a95";
+ };
+
+ propagatedBuildInputs = [ click configobj contexter jinja2 pytest ];
+
+ postPatch = ''
+ sed -i "s/'pip>=8,<10'/'pip'/" setup.py
+ sed -i "s/pip<10,>=8/pip/" ${pname}.egg-info/requires.txt
+ '';
+
+ # tests not included with pypi release
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Generate Nix expressions for Python packages";
+ homepage = https://github.com/johbo/pip2nix;
+ license = licenses.gpl3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pipdate/default.nix b/nixpkgs/pkgs/development/python-modules/pipdate/default.nix
new file mode 100644
index 00000000000..8628705ed4d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pipdate/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, appdirs
+, requests
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "pipdate";
+ version = "0.3.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a27f64d13269adfd8594582f5a62c9f2151b426e701afdfc3b4f4019527b4121";
+ };
+
+ propagatedBuildInputs = [
+ appdirs
+ requests
+ ];
+
+ checkInputs = [
+ pytest
+ ];
+
+ checkPhase = ''
+ HOME=$(mktemp -d) pytest test/test_pipdate.py
+ '';
+
+ # tests require network access
+ doCheck = false;
+
+ meta = with lib; {
+ description = "pip update helpers";
+ homepage = https://github.com/nschloe/pipdate;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pivy/default.nix b/nixpkgs/pkgs/development/python-modules/pivy/default.nix
new file mode 100644
index 00000000000..6c8fc211ae6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pivy/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, pkgs }:
+
+buildPythonPackage rec {
+ pname = "pivy";
+ version = "0.6.5a2";
+
+ src = fetchFromGitHub {
+ owner = "FreeCAD";
+ repo = "pivy";
+ rev = version;
+ sha256 = "1w03jaha36bjyfaz8hchnv8yrkm5715w15crhd3qrlagz8fs38hm";
+ };
+
+ nativeBuildInputs = with pkgs; [
+ swig qt5.qmake cmake
+ ];
+
+ buildInputs = with pkgs; with xorg; [
+ coin3d soqt qt5.qtbase
+ libGLU_combined
+ libXi libXext libSM libICE libX11
+ ];
+
+ NIX_CFLAGS_COMPILE = [
+ "-I${pkgs.qt5.qtbase.dev}/include/QtCore"
+ "-I${pkgs.qt5.qtbase.dev}/include/QtGui"
+ "-I${pkgs.qt5.qtbase.dev}/include/QtOpenGL"
+ "-I${pkgs.qt5.qtbase.dev}/include/QtWidgets"
+ ];
+
+ dontUseQmakeConfigure = true;
+ dontUseCmakeConfigure = true;
+
+ doCheck = false;
+
+ postPatch = ''
+ substituteInPlace CMakeLists.txt --replace \$'{SoQt_INCLUDE_DIRS}' \
+ \$'{Coin_INCLUDE_DIR}'\;\$'{SoQt_INCLUDE_DIRS}'
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = http://pivy.coin3d.org/;
+ description = "A Python binding for Coin";
+ license = licenses.bsd0;
+ maintainers = with maintainers; [ gebner ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pkgconfig/default.nix b/nixpkgs/pkgs/development/python-modules/pkgconfig/default.nix
new file mode 100644
index 00000000000..ab8c2f638b4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pkgconfig/default.nix
@@ -0,0 +1,32 @@
+{ lib, buildPythonPackage, fetchPypi, nose, pkgconfig }:
+
+buildPythonPackage rec {
+ pname = "pkgconfig";
+ version = "1.4.0";
+
+ setupHook = pkgconfig.setupHook;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "048c3b457da7b6f686b647ab10bf09e2250e4c50acfe6f215398a8b5e6fcdb52";
+ };
+
+ checkInputs = [ nose ];
+
+ nativeBuildInputs = [ pkgconfig ];
+
+ checkPhase = ''
+ nosetests
+ '';
+
+ patches = [ ./executable.patch ];
+ postPatch = ''
+ substituteInPlace pkgconfig/pkgconfig.py --replace 'PKG_CONFIG_EXE = "pkg-config"' 'PKG_CONFIG_EXE = "${pkgconfig}/bin/pkg-config"'
+ '';
+
+ meta = with lib; {
+ description = "Interface Python with pkg-config";
+ homepage = https://github.com/matze/pkgconfig;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pkgconfig/executable.patch b/nixpkgs/pkgs/development/python-modules/pkgconfig/executable.patch
new file mode 100644
index 00000000000..79fca7a44f1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pkgconfig/executable.patch
@@ -0,0 +1,38 @@
+commit d8e0bac0c0d831510683939ec7a7b5bd72192423
+Author: Frederik Rietdijk <fridh@fridh.nl>
+Date: Sat Jan 5 11:38:28 2019 +0100
+
+ Have a top-level attribute for the executable
+
+diff --git a/pkgconfig/pkgconfig.py b/pkgconfig/pkgconfig.py
+index 3deb97f..e7c5561 100644
+--- a/pkgconfig/pkgconfig.py
++++ b/pkgconfig/pkgconfig.py
+@@ -30,6 +30,9 @@ from functools import wraps
+ from subprocess import call, PIPE, Popen
+
+
++PKG_CONFIG_EXE = "pkg-config"
++
++
+ def _compare_versions(v1, v2):
+ """
+ Compare two version strings and return -1, 0 or 1 depending on the equality
+@@ -65,7 +68,7 @@ def _convert_error(func):
+
+ @_convert_error
+ def _query(package, *options):
+- pkg_config_exe = os.environ.get('PKG_CONFIG', None) or 'pkg-config'
++ pkg_config_exe = os.environ.get('PKG_CONFIG', None) or PKG_CONFIG_EXE
+ cmd = '{0} {1} {2}'.format(pkg_config_exe, ' '.join(options), package)
+ proc = Popen(shlex.split(cmd), stdout=PIPE, stderr=PIPE)
+ out, err = proc.communicate()
+@@ -84,7 +87,7 @@ def exists(package):
+
+ If ``pkg-config`` not on path, raises ``EnvironmentError``.
+ """
+- pkg_config_exe = os.environ.get('PKG_CONFIG', None) or 'pkg-config'
++ pkg_config_exe = os.environ.get('PKG_CONFIG', None) or PKG_CONFIG_EXE
+ cmd = '{0} --exists {1}'.format(pkg_config_exe, package).split()
+ return call(cmd) == 0
+
diff --git a/nixpkgs/pkgs/development/python-modules/pkginfo/default.nix b/nixpkgs/pkgs/development/python-modules/pkginfo/default.nix
new file mode 100644
index 00000000000..879274a16c3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pkginfo/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "pkginfo";
+ version = "1.5.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "7424f2c8511c186cd5424bbf31045b77435b37a8d604990b79d4e70d741148bb";
+ };
+
+ doCheck = false; # I don't know why, but with doCheck = true it fails.
+
+ meta = with stdenv.lib; {
+ homepage = https://pypi.python.org/pypi/pkginfo;
+ license = licenses.mit;
+ description = "Query metadatdata from sdists / bdists / installed packages";
+
+ longDescription = ''
+ This package provides an API for querying the distutils metadata
+ written in the PKG-INFO file inside a source distriubtion (an sdist)
+ or a binary distribution (e.g., created by running bdist_egg). It can
+ also query the EGG-INFO directory of an installed distribution, and the
+ *.egg-info stored in a “development checkout” (e.g, created by running
+ setup.py develop).
+ '';
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/plac/default.nix b/nixpkgs/pkgs/development/python-modules/plac/default.nix
new file mode 100644
index 00000000000..d0e7b0d81ee
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/plac/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+}:
+buildPythonPackage rec {
+ pname = "plac";
+ version = "1.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b03f967f535b3bf5a71b191fa5eb09872a5cfb1e3b377efc4138995e10ba36d7";
+ };
+
+ checkPhase = ''
+ cd doc
+ ${python.interpreter} -m unittest discover -p "*test_plac*"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Parsing the Command Line the Easy Way";
+ homepage = https://github.com/micheles/plac;
+ license = licenses.bsdOriginal;
+ maintainers = with maintainers; [ sdll ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/plaid-python/default.nix b/nixpkgs/pkgs/development/python-modules/plaid-python/default.nix
new file mode 100644
index 00000000000..8577441cf9d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/plaid-python/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildPythonPackage, fetchPypi, requests, pytest }:
+
+buildPythonPackage rec {
+ version = "2.4.1";
+ pname = "plaid-python";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2b7832f9fe0c6cd23dfdb805bcfc52e2ff06fca6604e5782b7518904c1dad6bb";
+ };
+
+ checkInputs = [ pytest ];
+ # Integration tests require API keys and internet access
+ checkPhase = "py.test -rxs ./tests/unit";
+
+ propagatedBuildInputs = [ requests ];
+
+ meta = {
+ description = "Python client library for the Plaid API and Link";
+ homepage = https://github.com/plaid/plaid-python;
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ bhipple ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/plaster-pastedeploy/default.nix b/nixpkgs/pkgs/development/python-modules/plaster-pastedeploy/default.nix
new file mode 100644
index 00000000000..e794b53950e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/plaster-pastedeploy/default.nix
@@ -0,0 +1,30 @@
+{ buildPythonPackage, fetchPypi, fetchpatch
+, plaster, PasteDeploy
+, pytest, pytestcov
+}:
+
+buildPythonPackage rec {
+ pname = "plaster_pastedeploy";
+ version = "0.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c231130cb86ae414084008fe1d1797db7e61dc5eaafb5e755de21387c27c6fae";
+ };
+
+ patches = [
+ # Fix tests compatibility with PasteDeploy 2+
+ # https://github.com/Pylons/plaster_pastedeploy/pull/17
+ (fetchpatch {
+ url = https://github.com/Pylons/plaster_pastedeploy/commit/d77d81a57e917c67a20332beca8f418651172905.patch;
+ sha256 = "0n5vnqn8kad41kn9grcwiic6c6rhvy1ji3w81s2v9xyk0bd9yryf";
+ })
+ ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ propagatedBuildInputs = [ plaster PasteDeploy ];
+ checkInputs = [ pytest pytestcov ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/plaster/default.nix b/nixpkgs/pkgs/development/python-modules/plaster/default.nix
new file mode 100644
index 00000000000..82aaebb1003
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/plaster/default.nix
@@ -0,0 +1,19 @@
+{ buildPythonPackage, fetchPypi
+, pytest, pytestcov
+}:
+
+buildPythonPackage rec {
+ pname = "plaster";
+ version = "1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8351c7c7efdf33084c1de88dd0f422cbe7342534537b553c49b857b12d98c8c3";
+ };
+
+ checkPhase = ''
+ py.test
+ '';
+
+ checkInputs = [ pytest pytestcov ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/plone-testing/default.nix b/nixpkgs/pkgs/development/python-modules/plone-testing/default.nix
new file mode 100644
index 00000000000..ff4020a920b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/plone-testing/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, six
+, zope_testing
+, setuptools
+}:
+
+buildPythonPackage rec {
+ pname = "plone.testing";
+ version = "7.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "98a6e9ce8df1fdd33876e2d8c3ca3d8291612c20bd7e0811dac83b6ce10e984b";
+ };
+
+ propagatedBuildInputs = [ six setuptools zope_testing ];
+
+ # Huge amount of testing dependencies (including Zope2)
+ doCheck = false;
+
+ meta = {
+ description = "Testing infrastructure for Zope and Plone projects";
+ homepage = https://github.com/plone/plone.testing;
+ license = lib.licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/plotly/default.nix b/nixpkgs/pkgs/development/python-modules/plotly/default.nix
new file mode 100644
index 00000000000..5cd6c106826
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/plotly/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, decorator
+, nbformat
+, pytz
+, requests
+, retrying
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "plotly";
+ version = "4.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "166rscpr9xbs3pwd61mivhlm1gv3chkgpk2cy0fpb86axa7z4cwk";
+ };
+
+ propagatedBuildInputs = [
+ decorator
+ nbformat
+ pytz
+ requests
+ retrying
+ six
+ ];
+
+ # No tests in archive
+ doCheck = false;
+
+ meta = {
+ description = "Python plotting library for collaborative, interactive, publication-quality graphs";
+ homepage = https://plot.ly/python/;
+ license = with lib.licenses; [ mit ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pluggy/default.nix b/nixpkgs/pkgs/development/python-modules/pluggy/default.nix
new file mode 100644
index 00000000000..331ba8673dd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pluggy/default.nix
@@ -0,0 +1,34 @@
+{ buildPythonPackage
+, lib
+, fetchPypi
+, setuptools_scm
+, importlib-metadata
+}:
+
+buildPythonPackage rec {
+ pname = "pluggy";
+ version = "0.12.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0825a152ac059776623854c1543d65a4ad408eb3d33ee114dff91e57ec6ae6fc";
+ };
+
+ 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/nixpkgs/pkgs/development/python-modules/pluginbase/default.nix b/nixpkgs/pkgs/development/python-modules/pluginbase/default.nix
new file mode 100644
index 00000000000..c0d44e2851e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pluginbase/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchPypi, buildPythonPackage, pytest }:
+
+buildPythonPackage rec {
+ version = "1.0.0";
+ pname = "pluginbase";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "497894df38d0db71e1a4fbbfaceb10c3ef49a3f95a0582e11b75f8adaa030005";
+ };
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ cd tests
+ PYTHONPATH=.. pytest
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/mitsuhiko/pluginbase;
+ description = "A support library for building plugins sytems in Python";
+ license = licenses.bsd3;
+ platforms = platforms.all;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/plumbum/default.nix b/nixpkgs/pkgs/development/python-modules/plumbum/default.nix
new file mode 100644
index 00000000000..13afce05ef7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/plumbum/default.nix
@@ -0,0 +1,19 @@
+{ buildPythonPackage
+, fetchPypi
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "plumbum";
+ version = "1.6.7";
+
+ checkInputs = [ pytest ];
+
+ # No tests in archive
+ doCheck = false;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d143f079bfb60b11e9bec09a49695ce2e55ce5ca0246877bdb0818ab7c7fc312";
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/ply/default.nix b/nixpkgs/pkgs/development/python-modules/ply/default.nix
new file mode 100644
index 00000000000..ae55cac642f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ply/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "ply";
+ version = "3.11";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3";
+ };
+
+ checkPhase = ''
+ ${python.interpreter} test/testlex.py
+ ${python.interpreter} test/testyacc.py
+ '';
+
+ # Test suite appears broken
+ doCheck = false;
+
+ meta = {
+ homepage = http://www.dabeaz.com/ply/;
+ description = "PLY (Python Lex-Yacc), an implementation of the lex and yacc parsing tools for Python";
+ longDescription = ''
+ PLY is an implementation of lex and yacc parsing tools for Python.
+ In a nutshell, PLY is nothing more than a straightforward lex/yacc
+ implementation. Here is a list of its essential features: It's
+ implemented entirely in Python; It uses LR-parsing which is
+ reasonably efficient and well suited for larger grammars; PLY
+ provides most of the standard lex/yacc features including support for
+ empty productions, precedence rules, error recovery, and support for
+ ambiguous grammars; PLY is straightforward to use and provides very
+ extensive error checking; PLY doesn't try to do anything more or less
+ than provide the basic lex/yacc functionality. In other words, it's
+ not a large parsing framework or a component of some larger system.
+ '';
+ license = lib.licenses.bsd3;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/plyfile/default.nix b/nixpkgs/pkgs/development/python-modules/plyfile/default.nix
new file mode 100644
index 00000000000..3f6f3ab13bf
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/plyfile/default.nix
@@ -0,0 +1,21 @@
+{ lib, fetchPypi, buildPythonPackage, numpy
+}:
+
+buildPythonPackage rec {
+ pname = "plyfile";
+ version = "0.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "84ba5ee8c70a4924f64aa7edff5764b929f3b7842d53a3197d0b753818ad7089";
+ };
+
+ propagatedBuildInputs = [ numpy ];
+
+ meta = with lib; {
+ description = "NumPy-based text/binary PLY file reader/writer for Python";
+ homepage = https://github.com/dranjan/python-plyfile;
+ maintainers = with maintainers; [ abbradar ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/plyplus/default.nix b/nixpkgs/pkgs/development/python-modules/plyplus/default.nix
new file mode 100644
index 00000000000..41327c6fc48
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/plyplus/default.nix
@@ -0,0 +1,21 @@
+{ lib, fetchPypi, buildPythonPackage, ply, isPy3k }:
+buildPythonPackage rec {
+ pname = "PlyPlus";
+ version = "0.7.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0g3flgfm3jpb2d8v9z0qmbwca5gxdqr10cs3zvlfhv5cs06ahpnp";
+ };
+
+ propagatedBuildInputs = [ ply ];
+
+ doCheck = !isPy3k;
+
+ meta = {
+ homepage = https://github.com/erezsh/plyplus;
+ description = "A general-purpose parser built on top of PLY";
+ maintainers = with lib.maintainers; [ twey ];
+ license = lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/plyvel/default.nix b/nixpkgs/pkgs/development/python-modules/plyvel/default.nix
new file mode 100644
index 00000000000..b66d3231146
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/plyvel/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pkgs
+, pytest
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "plyvel";
+ version = "1.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1icsycqqjj8048a0drj3j75a71yiv2cmijh4w3jf9zxahh3k2c9p";
+ };
+
+ buildInputs = [ pkgs.leveldb ] ++ stdenv.lib.optional isPy3k pytest;
+
+ # no tests for python2
+ doCheck = isPy3k;
+
+ meta = with stdenv.lib; {
+ description = "Fast and feature-rich Python interface to LevelDB";
+ platforms = platforms.unix;
+ homepage = https://github.com/wbolster/plyvel;
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pocket/default.nix b/nixpkgs/pkgs/development/python-modules/pocket/default.nix
new file mode 100644
index 00000000000..e351d26ca48
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pocket/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, requests
+}:
+
+buildPythonPackage rec {
+ pname = "pocket";
+ version = "0.3.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1fc9vc5nyzf1kzmnrs18dmns7nn8wjfrg7br1w4c5sgs35mg2ywh";
+ };
+
+ buildInputs = [ requests ];
+
+ meta = with stdenv.lib; {
+ description = "Wrapper for the pocket API";
+ homepage = "https://github.com/tapanpandita/pocket";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ ericsagnes ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/podcastparser/default.nix b/nixpkgs/pkgs/development/python-modules/podcastparser/default.nix
new file mode 100644
index 00000000000..d2fc1093844
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/podcastparser/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildPythonPackage, fetchFromGitHub, nose }:
+
+buildPythonPackage rec {
+ pname = "podcastparser";
+ version = "0.6.4";
+
+ src = fetchFromGitHub {
+ owner = "gpodder";
+ repo = "podcastparser";
+ rev = version;
+ sha256 = "10bk93fqsws360q1gkjvfzjda3351169zbr6v5lq9raa3mg1ln52";
+ };
+
+ checkInputs = [ nose ];
+
+ checkPhase = ''
+ nosetests test_*.py
+ '';
+
+ meta = {
+ description = "podcastparser is a simple, fast and efficient podcast parser written in Python.";
+ homepage = http://gpodder.org/podcastparser/;
+ license = lib.licenses.bsd2;
+ maintainers = with lib.maintainers; [ mic92 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/podcats/default.nix b/nixpkgs/pkgs/development/python-modules/podcats/default.nix
new file mode 100644
index 00000000000..8af9e759c95
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/podcats/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildPythonPackage, fetchFromGitHub, flask, mutagen }:
+
+buildPythonPackage rec {
+ pname = "podcats";
+ version = "0.5.0";
+
+ src = fetchFromGitHub {
+ owner = "jakubroztocil";
+ repo = "podcats";
+ rev = "v${version}";
+ sha256 = "0zjdgry5n209rv19kj9yaxy7c7zq5gxr488izrgs4sc75vdzz8xc";
+ };
+
+ patchPhase = ''
+ substituteInPlace podcats.py \
+ --replace 'debug=True' 'debug=True, use_reloader=False'
+ '';
+
+ propagatedBuildInputs = [ flask mutagen ];
+
+ meta = {
+ description = "Application that generates RSS feeds for podcast episodes from local audio files";
+ homepage = https://github.com/jakubroztocil/podcats;
+ license = lib.licenses.bsd2;
+ maintainers = with lib.maintainers; [ the-kenny ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/poetry/default.nix b/nixpkgs/pkgs/development/python-modules/poetry/default.nix
new file mode 100644
index 00000000000..d7e2a1db2ff
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/poetry/default.nix
@@ -0,0 +1,89 @@
+{ lib, buildPythonPackage, fetchPypi, callPackage
+, isPy27, isPy34
+, cleo
+, requests
+, cachy
+, requests-toolbelt
+, pyrsistent
+, pyparsing
+, cachecontrol
+, pkginfo
+, html5lib
+, shellingham
+, tomlkit
+, typing
+, pathlib2
+, virtualenv
+, functools32
+, pytest
+}:
+
+let
+ cleo6 = cleo.overrideAttrs (oldAttrs: rec {
+ version = "0.6.8";
+ src = fetchPypi {
+ inherit (oldAttrs) pname;
+ inherit version;
+ sha256 = "06zp695hq835rkaq6irr1ds1dp2qfzyf32v60vxpd8rcnxv319l5";
+ };
+ });
+
+ jsonschema3 = callPackage ./jsonschema.nix { };
+ glob2 = callPackage ./glob2.nix { };
+
+in buildPythonPackage rec {
+ pname = "poetry";
+ version = "0.12.17";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0gxwcd65qjmzqzppf53x51sic1rbcd9py6cdzx3aprppipimslvf";
+ };
+
+ postPatch = ''
+ substituteInPlace setup.py --replace \
+ "requests-toolbelt>=0.8.0,<0.9.0" \
+ "requests-toolbelt>=0.8.0,<0.10.0"
+ '';
+
+ format = "pyproject";
+
+ propagatedBuildInputs = [
+ cleo6
+ requests
+ cachy
+ requests-toolbelt
+ jsonschema3
+ pyrsistent
+ pyparsing
+ cachecontrol
+ pkginfo
+ html5lib
+ shellingham
+ tomlkit
+ ] ++ lib.optionals (isPy27 || isPy34) [ typing pathlib2 glob2 ]
+ ++ lib.optionals isPy27 [ virtualenv functools32 ];
+
+ postInstall = ''
+ mkdir -p "$out/share/bash-completion/completions"
+ "$out/bin/poetry" completions bash > "$out/share/bash-completion/completions/poetry"
+ mkdir -p "$out/share/zsh/vendor-completions"
+ "$out/bin/poetry" completions zsh > "$out/share/zsh/vendor-completions/_poetry"
+ mkdir -p "$out/share/fish/vendor_completions.d"
+ "$out/bin/poetry" completions fish > "$out/share/fish/vendor_completions.d/poetry.fish"
+ '';
+
+ # No tests in Pypi tarball
+ doCheck = false;
+ checkInputs = [ pytest ];
+ checkPhase = ''
+ pytest tests
+ '';
+
+ meta = with lib; {
+ homepage = https://github.com/sdispater/poetry;
+ description = "Python dependency management and packaging made easy";
+ license = licenses.mit;
+ maintainers = with maintainers; [ jakewaksbaum ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/poetry/glob2.nix b/nixpkgs/pkgs/development/python-modules/poetry/glob2.nix
new file mode 100644
index 00000000000..ca7d203492d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/poetry/glob2.nix
@@ -0,0 +1,11 @@
+{ buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "glob2";
+ version = "0.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1miyz0pjyji4gqrzl04xsxcylk3h2v9fvi7hsg221y11zy3adc7m";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/poetry/jsonschema.nix b/nixpkgs/pkgs/development/python-modules/poetry/jsonschema.nix
new file mode 100644
index 00000000000..35607b536f3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/poetry/jsonschema.nix
@@ -0,0 +1,37 @@
+{ lib, buildPythonPackage, fetchPypi, isPy27
+, attrs
+, pyrsistent
+, six
+, functools32
+, lockfile
+, setuptools_scm
+}:
+
+buildPythonPackage rec {
+ pname = "jsonschema";
+ version = "3.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0c0a81564f181de3212efa2d17de1910f8732fa1b71c42266d983cd74304e20d";
+ };
+
+ nativeBuildInputs = [ setuptools_scm ];
+ propagatedBuildInputs = [
+ attrs
+ pyrsistent
+ six
+ lockfile
+ ] ++ lib.optional isPy27 functools32;
+
+ # tests for latest version rely on custom version of betterpaths that is
+ # difficult to deal with and isn't used on master
+ doCheck = false;
+
+ meta = with lib; {
+ homepage = https://github.com/Julian/jsonschema;
+ description = "An implementation of JSON Schema validation for Python";
+ license = licenses.mit;
+ maintainers = with maintainers; [ jakewaksbaum ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/polib/default.nix b/nixpkgs/pkgs/development/python-modules/polib/default.nix
new file mode 100644
index 00000000000..2e3928b742c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/polib/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "polib";
+ version = "1.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "fad87d13696127ffb27ea0882d6182f1a9cf8a5e2b37a587751166c51e5a332a";
+ };
+
+ # error: invalid command 'test'
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A library to manipulate gettext files (po and mo files)";
+ homepage = https://bitbucket.org/izi/polib/;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pomegranate/default.nix b/nixpkgs/pkgs/development/python-modules/pomegranate/default.nix
new file mode 100644
index 00000000000..7054485f302
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pomegranate/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, numpy, scipy, cython, networkx, joblib, nose, pyyaml }:
+
+buildPythonPackage rec {
+ pname = "pomegranate";
+ version = "0.11.0";
+
+ src = fetchFromGitHub {
+ repo = pname;
+ owner = "jmschrei";
+ rev = "v${version}";
+ sha256 = "0gf7z343ag4g7pfccn1sdap3ihkaxrc9ca75awjhmsa2cyqs66df";
+ };
+
+ propagatedBuildInputs = [ numpy scipy cython networkx joblib pyyaml ];
+
+ checkInputs = [ nose ];
+
+ meta = with stdenv.lib; {
+ description = "Probabilistic and graphical models for Python, implemented in cython for speed";
+ homepage = https://github.com/jmschrei/pomegranate;
+ license = licenses.mit;
+ maintainers = with maintainers; [ rybern ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/poppler-qt5/default.nix b/nixpkgs/pkgs/development/python-modules/poppler-qt5/default.nix
new file mode 100644
index 00000000000..2b00a007f90
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/poppler-qt5/default.nix
@@ -0,0 +1,42 @@
+{ buildPythonPackage, fetchPypi, stdenv, sip, qtbase, pyqt5, poppler, pkgconfig, fetchpatch
+, substituteAll
+}:
+
+buildPythonPackage rec {
+ pname = "python-poppler-qt5";
+ version = "0.24.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0l69llw1fzwz8y90q0qp9q5pifbrqjjbwii7di54dwghw5fc6w1r";
+ };
+
+ patches = [
+ (substituteAll {
+ src = ./poppler-include-dir.patch;
+ poppler_include_dir = "${poppler.dev}/include/poppler";
+ })
+ (fetchpatch {
+ url = "https://github.com/wbsoft/python-poppler-qt5/commit/faf4d1308f89560b0d849671226e3080dfc72e79.patch";
+ sha256 = "18krhh6wzsnpxzlzv02nginb1vralla8ai24zqk10nc4mj6fkj86";
+ })
+ ];
+
+ setupPyBuildFlags = [
+ "--pyqt-sip-dir ${pyqt5}/share/sip/PyQt5"
+ "--qt-include-dir ${qtbase.dev}/include"
+ ];
+
+ buildInputs = [ qtbase.dev poppler ];
+ nativeBuildInputs = [ pkgconfig ];
+ propagatedBuildInputs = [ sip pyqt5.dev ];
+
+ # no tests, just bindings for `poppler_qt5`
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/wbsoft/python-poppler-qt5;
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ ma27 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/poppler-qt5/poppler-include-dir.patch b/nixpkgs/pkgs/development/python-modules/poppler-qt5/poppler-include-dir.patch
new file mode 100644
index 00000000000..7106c1d6352
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/poppler-qt5/poppler-include-dir.patch
@@ -0,0 +1,12 @@
+diff --git a/setup.py b/setup.py
+index 59a75b0..0a73268 100644
+--- a/setup.py
++++ b/setup.py
+@@ -169,6 +169,7 @@ class build_ext(build_ext_base):
+ 'Please specify via --pyqt-sip-flags=')
+
+ self.include_dirs += (self.qt_include_dir,
++ '@poppler_include_dir@',
+ os.path.join(self.qt_include_dir, 'QtCore'),
+ os.path.join(self.qt_include_dir, 'QtGui'),
+ os.path.join(self.qt_include_dir, 'QtXml'))
diff --git a/nixpkgs/pkgs/development/python-modules/portalocker/default.nix b/nixpkgs/pkgs/development/python-modules/portalocker/default.nix
new file mode 100644
index 00000000000..7d536c83782
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/portalocker/default.nix
@@ -0,0 +1,37 @@
+{ buildPythonPackage
+, fetchPypi
+, lib
+, sphinx
+, flake8
+, pytest
+, pytestcov
+, pytest-flakes
+, pytestpep8
+}:
+
+buildPythonPackage rec {
+ version = "1.5.0";
+ pname = "portalocker";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "08y5k39mn5a7n69wv0hsyjqb51lazs4i4dpxp42nla2lhllnpbyr";
+ };
+
+ checkInputs = [
+ sphinx
+ flake8
+ pytest
+ pytestcov
+ pytest-flakes
+ pytestpep8
+ ];
+
+ meta = with lib; {
+ description = "A library to provide an easy API to file locking";
+ homepage = https://github.com/WoLpH/portalocker;
+ license = licenses.psfl;
+ maintainers = with maintainers; [ jonringer ];
+ platforms = platforms.unix; # Windows has a dependency on pypiwin32
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/portend/default.nix b/nixpkgs/pkgs/development/python-modules/portend/default.nix
new file mode 100644
index 00000000000..7aa66c2a309
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/portend/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, pytest, setuptools_scm, tempora }:
+
+buildPythonPackage rec {
+ pname = "portend";
+ version = "2.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b7ce7d35ea262415297cbfea86226513e77b9ee5f631d3baa11992d663963719";
+ };
+
+ postPatch = ''
+ substituteInPlace pytest.ini --replace "--flake8" ""
+ '';
+
+ nativeBuildInputs = [ setuptools_scm ];
+
+ propagatedBuildInputs = [ tempora ];
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ py.test --deselect=test_portend.py::TestChecker::test_check_port_listening
+ '';
+
+ # Some of the tests use localhost networking.
+ __darwinAllowLocalNetworking = true;
+
+ meta = with stdenv.lib; {
+ description = "Monitor TCP ports for bound or unbound states";
+ homepage = https://github.com/jaraco/portend;
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/portpicker/default.nix b/nixpkgs/pkgs/development/python-modules/portpicker/default.nix
new file mode 100644
index 00000000000..30ac0015560
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/portpicker/default.nix
@@ -0,0 +1,21 @@
+{ buildPythonPackage
+, lib
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "portpicker";
+ version = "1.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0rwn5ca7ns3yh6bp785zdd2l4018ccpd5i0m2d1fsd9nhxvcgkfj";
+ };
+
+ meta = {
+ description = "A library to choose unique available network ports.";
+ homepage = "https://github.com/google/python_portpicker";
+ license = lib.licenses.asl20;
+ maintainers = with lib.maintainers; [ danharaj ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/posix_ipc/default.nix b/nixpkgs/pkgs/development/python-modules/posix_ipc/default.nix
new file mode 100644
index 00000000000..c152b1537ec
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/posix_ipc/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "posix_ipc";
+ version = "1.0.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ff6c9077633fc62a491d6997c43b094d885bb45a7ca1f36c9a0d647c54b74b14";
+ };
+
+ meta = with stdenv.lib; {
+ description = "POSIX IPC primitives (semaphores, shared memory and message queues)";
+ license = licenses.bsd3;
+ homepage = http://semanchuk.com/philip/posix_ipc/;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/potr/default.nix b/nixpkgs/pkgs/development/python-modules/potr/default.nix
new file mode 100644
index 00000000000..adcb7110467
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/potr/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchPypi, buildPythonPackage, pycrypto }:
+
+buildPythonPackage rec {
+ pname = "python-potr";
+ version = "1.0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f95b9a7feaf8e3a6aaa898609f8a2ada55518cf52fc09152775c4c59c99b8ea6";
+ };
+
+ propagatedBuildInputs = [ pycrypto ];
+
+ meta = with stdenv.lib; {
+ description = "A pure Python OTR implementation";
+ homepage = "http://python-otr.pentabarf.de/";
+ license = licenses.lgpl3Plus;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/power/default.nix b/nixpkgs/pkgs/development/python-modules/power/default.nix
new file mode 100644
index 00000000000..a54bd025dc7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/power/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "power";
+ version = "1.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "7d7d60ec332acbe3a7d00379b45e39abf650bf7ee311d61da5ab921f52f060f0";
+ };
+
+ # Tests can't work because there is no power information available.
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Cross-platform system power status information";
+ homepage = https://github.com/Kentzo/Power;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/powerline/default.nix b/nixpkgs/pkgs/development/python-modules/powerline/default.nix
new file mode 100644
index 00000000000..f8db636520f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/powerline/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, fetchurl
+, buildPythonPackage
+, psutil
+, pygit2
+}:
+
+# The source of this package needs to be patched to include the full path to
+# the executables of git, mercurial and bazaar.
+
+buildPythonPackage rec {
+ version = "2.7";
+ pname = "powerline";
+
+ src = fetchurl {
+ url = "https://github.com/powerline/powerline/archive/${version}.tar.gz";
+ name = "${pname}-${version}.tar.gz";
+ sha256 = "1h1j2rfphvfdq6mmfyn5bql45hzrwxkhpc2jcwf0vrl3slzkl5s5";
+ };
+
+ propagatedBuildInputs = [ psutil pygit2];
+
+# error: This is still beta and some tests still fail
+ doCheck = false;
+
+ postInstall = ''
+ install -dm755 "$out/share/fonts/OTF/"
+ install -dm755 "$out/etc/fonts/conf.d"
+ install -m644 "font/PowerlineSymbols.otf" "$out/share/fonts/OTF/PowerlineSymbols.otf"
+ install -m644 "font/10-powerline-symbols.conf" "$out/etc/fonts/conf.d/10-powerline-symbols.conf"
+
+ install -dm755 "$out/share/vim/vimfiles/plugin"
+ install -m644 "powerline/bindings/vim/plugin/powerline.vim" "$out/share/vim/vimfiles/plugin/powerline.vim"
+
+ install -dm755 "$out/share/zsh/site-contrib"
+ install -m644 "powerline/bindings/zsh/powerline.zsh" "$out/share/zsh/site-contrib/powerline.zsh"
+
+ install -dm755 "$out/share/tmux"
+ install -m644 "powerline/bindings/tmux/powerline.conf" "$out/share/tmux/powerline.conf"
+ '';
+
+ meta = {
+ homepage = https://github.com/powerline/powerline;
+ description = "The ultimate statusline/prompt utility";
+ license = lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pox/default.nix b/nixpkgs/pkgs/development/python-modules/pox/default.nix
new file mode 100644
index 00000000000..18aa9cb7369
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pox/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "pox";
+ version = "0.2.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2b53fbdf02596240483dc2cb94f94cc21252ad1b1858c7b1c151afeec9022cc8";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Utilities for filesystem exploration and automated builds";
+ license = licenses.bsd3;
+ homepage = http://www.cacr.caltech.edu/~mmckerns/pox.htm;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/poyo/default.nix b/nixpkgs/pkgs/development/python-modules/poyo/default.nix
new file mode 100644
index 00000000000..b6d2eb3bda9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/poyo/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ version = "0.5.0";
+ pname = "poyo";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1pflivs6j22frz0v3dqxnvc8yb8fb52g11lqr88z0i8cg2m5csg2";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/hackebrot/poyo;
+ description = "A lightweight YAML Parser for Python";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ppft/default.nix b/nixpkgs/pkgs/development/python-modules/ppft/default.nix
new file mode 100644
index 00000000000..770b3a5a73e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ppft/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "ppft";
+ version = "1.6.4.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5537b00afb7b247da0f59cc57ee5680178be61c8b2e21b5a0672b70a3d247791";
+ };
+
+ checkPhase = ''
+ python -m ppft.tests
+ '';
+
+ propagatedBuildInputs = [ six ];
+
+ meta = with stdenv.lib; {
+ description = "Distributed and parallel python";
+ homepage = https://github.com/uqfoundation;
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pplpy/default.nix b/nixpkgs/pkgs/development/python-modules/pplpy/default.nix
new file mode 100644
index 00000000000..a693c8cad4c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pplpy/default.nix
@@ -0,0 +1,62 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+, gmp
+, mpfr
+, libmpc
+, ppl
+, cython
+, cysignals
+, gmpy2
+, sphinx
+}:
+
+buildPythonPackage rec {
+ pname = "pplpy";
+ version = "0.8.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0dk8l5r3f2jbkkasddvxwvhlq35pjsiirh801lrapv8lb16r2qmr";
+ };
+
+ buildInputs = [
+ gmp
+ mpfr
+ libmpc
+ ppl
+ ];
+
+ nativeBuildInputs = [
+ sphinx # docbuild, called by make
+ ];
+
+ propagatedBuildInputs = [
+ cython
+ cysignals
+ gmpy2
+ ];
+
+ outputs = [ "out" "doc" ];
+
+ postBuild = ''
+ # Find the build result in order to put it into PYTHONPATH. The doc
+ # build needs to import pplpy.
+ build_result="$PWD/$( find build/ -type d -name 'lib.*' | head -n1 )"
+
+ echo "Building documentation"
+ PYTHONPATH="$build_result:$PYTHONPATH" make -C docs html
+ '';
+
+ postInstall = ''
+ mkdir -p "$doc/share/doc"
+ mv docs/build/html "$doc/share/doc/pplpy"
+ '';
+
+ meta = with lib; {
+ description = "A Python wrapper for ppl";
+ homepage = https://gitlab.com/videlec/pplpy;
+ maintainers = with maintainers; [ timokau ];
+ license = licenses.gpl3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pprintpp/default.nix b/nixpkgs/pkgs/development/python-modules/pprintpp/default.nix
new file mode 100644
index 00000000000..daf9d0062fb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pprintpp/default.nix
@@ -0,0 +1,30 @@
+{ lib, fetchpatch, buildPythonPackage, fetchPypi, python, nose, parameterized }:
+
+buildPythonPackage rec {
+ pname = "pprintpp";
+ version = "0.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "00v4pkyiqc0y9qjnp3br58a4k5zwqdrjjxbcsv39vx67w84630pa";
+ };
+
+ patches = [
+ (fetchpatch {
+ url = "https://github.com/wolever/pprintpp/commit/873217674cc824b4c1cfdad4867c560c60e8d806.patch";
+ sha256 = "0rqxzxawr83215s84mfzh1gnjwjm2xv399ywwcl4q7h395av5vb3";
+ })
+ ];
+
+ checkInputs = [ nose parameterized ];
+ checkPhase = ''
+ ${python.interpreter} test.py
+ '';
+
+ meta = with lib; {
+ homepage = https://github.com/wolever/pprintpp;
+ description = "A drop-in replacement for pprint that's actually pretty";
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ jakewaksbaum ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/praw/default.nix b/nixpkgs/pkgs/development/python-modules/praw/default.nix
new file mode 100644
index 00000000000..2a3d85c2b35
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/praw/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub
+, betamax
+, betamax-serializers
+, betamax-matchers
+, mock
+, six
+, pytestrunner
+, 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 = [
+ pytestrunner
+ ];
+
+ propagatedBuildInputs = [
+ mock
+ prawcore
+ update_checker
+ websocket_client
+ ];
+
+ checkInputs = [
+ betamax
+ betamax-serializers
+ betamax-matchers
+ mock
+ pytest
+ requests-toolbelt
+ six
+ ];
+
+ meta = with stdenv.lib; {
+ description = "Python Reddit API wrapper";
+ homepage = "https://praw.readthedocs.org/";
+ license = licenses.bsd2;
+ platforms = platforms.all;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/prawcore/default.nix b/nixpkgs/pkgs/development/python-modules/prawcore/default.nix
new file mode 100644
index 00000000000..282e8bac069
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/prawcore/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, requests
+, testfixtures, mock, requests_toolbelt
+, betamax, betamax-serializers, betamax-matchers
+}:
+
+buildPythonPackage rec {
+ pname = "prawcore";
+ version = "1.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ab5558efb438aa73fc66c4178bfc809194dea3ce2addf4dec873de7e2fd2824e";
+ };
+
+ propagatedBuildInputs = [
+ requests
+ ];
+
+ checkInputs = [
+ testfixtures
+ mock
+ betamax
+ betamax-serializers
+ betamax-matchers
+ requests_toolbelt
+ ];
+
+ meta = with stdenv.lib; {
+ description = "Low-level communication layer for PRAW";
+ homepage = https://praw.readthedocs.org/;
+ license = licenses.gpl3;
+ platforms = platforms.all;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pre-commit/default.nix b/nixpkgs/pkgs/development/python-modules/pre-commit/default.nix
new file mode 100644
index 00000000000..7b5377cc15a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pre-commit/default.nix
@@ -0,0 +1,47 @@
+{ lib, fetchPypi, buildPythonApplication, pythonOlder
+, aspy-yaml
+, cached-property
+, cfgv
+, futures
+, identify
+, importlib-metadata
+, importlib-resources
+, nodeenv
+, six
+, toml
+, virtualenv
+}:
+
+buildPythonApplication rec {
+ pname = "pre-commit";
+ version = "1.18.2";
+
+ src = fetchPypi {
+ inherit version;
+ pname = "pre_commit";
+ sha256 = "1y6gd6nq8mfyjxknrgdryvn1bj5arvwaz2r00h41g054lfg3iki1";
+ };
+
+ propagatedBuildInputs = [
+ aspy-yaml
+ cached-property
+ cfgv
+ identify
+ nodeenv
+ six
+ toml
+ virtualenv
+ importlib-metadata
+ ] ++ lib.optional (pythonOlder "3.7") importlib-resources
+ ++ lib.optional (pythonOlder "3.2") futures;
+
+ # slow and impure
+ doCheck = false;
+
+ meta = with lib; {
+ description = "A framework for managing and maintaining multi-language pre-commit hooks";
+ homepage = https://pre-commit.com/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ borisbabic ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/precis-i18n/default.nix b/nixpkgs/pkgs/development/python-modules/precis-i18n/default.nix
new file mode 100644
index 00000000000..4c50aaee706
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/precis-i18n/default.nix
@@ -0,0 +1,20 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k }:
+
+buildPythonPackage rec {
+ pname = "precis-i18n";
+ version = "1.0.0";
+
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ pname = "precis_i18n";
+ inherit version;
+ sha256 = "0gjhvwd8aifx94rl1ag08vlmndyx2q3fkyqb0c4i46x3p2bc2yi2";
+ };
+
+ meta = {
+ homepage = https://github.com/byllyfish/precis_i18n;
+ description = "Internationalized usernames and passwords";
+ license = lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/preggy/default.nix b/nixpkgs/pkgs/development/python-modules/preggy/default.nix
new file mode 100644
index 00000000000..b88366de88f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/preggy/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchPypi, six, unidecode, nose, yanc }:
+
+buildPythonPackage rec {
+ pname = "preggy";
+ version = "1.4.2";
+
+ propagatedBuildInputs = [ six unidecode ];
+ checkInputs = [ nose yanc ];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0g4ifjh01dkmdzs4621ahk8hpkngid1xxhl51jvzy4h4li4590hw";
+ };
+
+ checkPhase = ''
+ nosetests .
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Assertion library for Python";
+ homepage = http://heynemann.github.io/preggy/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ jluttine ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/premailer/default.nix b/nixpkgs/pkgs/development/python-modules/premailer/default.nix
new file mode 100644
index 00000000000..f19f2dfe265
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/premailer/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildPythonPackage, fetchPypi,
+ cssselect, cssutils, lxml, mock, nose, requests, cachetools
+}:
+
+buildPythonPackage rec {
+ pname = "premailer";
+ version = "3.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "93be4f197e9d2a87a8fe6b5b6a79b64070dbb523108dfaf2a415b4558fc78ec1";
+ };
+
+ buildInputs = [ mock nose ];
+ propagatedBuildInputs = [ cachetools cssselect cssutils lxml requests ];
+
+ meta = {
+ description = "Turns CSS blocks into style attributes ";
+ homepage = https://github.com/peterbe/premailer;
+ license = lib.licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/preshed/default.nix b/nixpkgs/pkgs/development/python-modules/preshed/default.nix
new file mode 100644
index 00000000000..287b1294b5f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/preshed/default.nix
@@ -0,0 +1,42 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, cython
+, cymem
+, python
+}:
+buildPythonPackage rec {
+ pname = "preshed";
+ version = "2.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1rd943zp4gyspajqm5qxzndxziyh51grx0zcw23w8r9r65s1rq6s";
+ };
+
+ propagatedBuildInputs = [
+ cython
+ cymem
+ ];
+
+ buildInputs = [
+ pytest
+ ];
+
+ prePatch = ''
+ substituteInPlace setup.py \
+ --replace "wheel>=0.32.0,<0.33.0" "wheel>=0.31.0"
+ '';
+
+ checkPhase = ''
+ ${python.interpreter} setup.py test
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Cython hash tables that assume keys are pre-hashed";
+ homepage = https://github.com/explosion/preshed;
+ license = licenses.mit;
+ maintainers = with maintainers; [ sdll ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pretend/default.nix b/nixpkgs/pkgs/development/python-modules/pretend/default.nix
new file mode 100644
index 00000000000..fed0499624a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pretend/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "pretend";
+ version = "1.0.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c90eb810cde8ebb06dafcb8796f9a95228ce796531bc806e794c2f4649aa1b10";
+ };
+
+ # No tests in archive
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/alex/pretend;
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/prettytable/default.nix b/nixpkgs/pkgs/development/python-modules/prettytable/default.nix
new file mode 100644
index 00000000000..be0fb7e4023
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/prettytable/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, glibcLocales
+}:
+
+buildPythonPackage rec {
+ pname = "prettytable";
+ version = "0.7.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1ndckiniasacfqcdafzs04plskrcigk7vxprr2y34jmpkpf60m1d";
+ };
+
+ buildInputs = [ glibcLocales ];
+
+ preCheck = ''
+ export LANG="en_US.UTF-8"
+ '';
+
+ meta = with stdenv.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/nixpkgs/pkgs/development/python-modules/priority/deadline.patch b/nixpkgs/pkgs/development/python-modules/priority/deadline.patch
new file mode 100644
index 00000000000..174dbc2b199
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/priority/deadline.patch
@@ -0,0 +1,39 @@
+From 9d933c3c6535c1c63291e3d35f4ada9135d422df Mon Sep 17 00:00:00 2001
+From: Alyssa Ross <hi@alyssa.is>
+Date: Mon, 11 Mar 2019 02:08:43 +0000
+Subject: [PATCH] Allow test_period_of_repetition to be slow
+
+Recent versions of hypothesis default to a 200ms timeout, which wasn't
+enough for my Thinkpad X220 to run this test. I've increased the timeout
+for this single test to hopefully a reasonable amount for older
+hardware.
+
+(cherry picked from commit 752beb3a32b59f54168816da531c9d2a387f9715)
+---
+ test/test_priority.py | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/test/test_priority.py b/test/test_priority.py
+index c98a28d..013ce30 100644
+--- a/test/test_priority.py
++++ b/test/test_priority.py
+@@ -12,7 +12,7 @@ import itertools
+
+ import pytest
+
+-from hypothesis import given
++from hypothesis import given, settings
+ from hypothesis.strategies import (
+ integers, lists, tuples, sampled_from
+ )
+@@ -489,6 +489,7 @@ class TestPriorityTreeOutput(object):
+ fairness and equidistribution.
+ """
+ @given(STREAMS_AND_WEIGHTS)
++ @settings(deadline=None)
+ def test_period_of_repetition(self, streams_and_weights):
+ """
+ The period of repetition of a priority sequence is given by the sum of
+--
+2.19.2
+
diff --git a/nixpkgs/pkgs/development/python-modules/priority/default.nix b/nixpkgs/pkgs/development/python-modules/priority/default.nix
new file mode 100644
index 00000000000..f6e7efb78c2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/priority/default.nix
@@ -0,0 +1,28 @@
+{ lib, buildPythonPackage, fetchPypi, pytest, hypothesis }:
+
+buildPythonPackage rec {
+ pname = "priority";
+ version = "1.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1gpzn9k9zgks0iw5wdmad9b4dry8haiz2sbp6gycpjkzdld9dhbb";
+ };
+
+ patches = [
+ # https://github.com/python-hyper/priority/pull/135
+ ./deadline.patch
+ ];
+
+ checkInputs = [ pytest hypothesis ];
+ checkPhase = ''
+ PYTHONPATH="src:$PYTHONPATH" pytest
+ '';
+
+ meta = with lib; {
+ homepage = https://python-hyper.org/priority/;
+ description = "A pure-Python implementation of the HTTP/2 priority tree";
+ license = licenses.mit;
+ maintainers = [ maintainers.qyliss ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/proboscis/default.nix b/nixpkgs/pkgs/development/python-modules/proboscis/default.nix
new file mode 100644
index 00000000000..3d99d9530f3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/proboscis/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi, nose }:
+
+buildPythonPackage rec {
+ pname = "proboscis";
+ version = "1.2.6.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b822b243a7c82030fce0de97bdc432345941306d2c24ef227ca561dd019cd238";
+ };
+
+ propagatedBuildInputs = [ nose ];
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A Python test framework that extends Python's built-in unittest module and Nose with features from TestNG";
+ homepage = https://pypi.python.org/pypi/proboscis;
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/process-tests/default.nix b/nixpkgs/pkgs/development/python-modules/process-tests/default.nix
new file mode 100644
index 00000000000..5ab27b67da4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/process-tests/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "process-tests";
+ version = "2.0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "7ae24a680cc7c44e7687e3723e6e64597a28223ad664989999efe10dd38c2431";
+ };
+
+ # No tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Tools for testing processes";
+ license = licenses.bsd2;
+ homepage = https://github.com/ionelmc/python-process-tests;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/proglog/default.nix b/nixpkgs/pkgs/development/python-modules/proglog/default.nix
new file mode 100644
index 00000000000..d6fe22e1754
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/proglog/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchPypi, buildPythonPackage, tqdm }:
+
+buildPythonPackage rec {
+ pname = "proglog";
+ version = "0.1.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "13diln950wk6nnn4rpmzx37rvrnpa7f803gwygiwbq1q46zwri6q";
+ };
+
+ propagatedBuildInputs = [ tqdm ];
+
+ meta = with stdenv.lib; {
+ description = "Logs and progress bars manager for Python";
+ homepage = https://github.com/Edinburgh-Genome-Foundry/Proglog;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/progress/default.nix b/nixpkgs/pkgs/development/python-modules/progress/default.nix
new file mode 100644
index 00000000000..d6c8d9125d1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/progress/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+}:
+
+buildPythonPackage rec {
+ version = "1.5";
+ pname = "progress";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0wj3wvdgfmqj44n32wag3mzpp5fjqkkd321x67v1prxvs78yvv39";
+ };
+
+ checkPhase = ''
+ ${python.interpreter} test_progress.py
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/verigak/progress/;
+ description = "Easy to use progress bars";
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/progressbar/default.nix b/nixpkgs/pkgs/development/python-modules/progressbar/default.nix
new file mode 100644
index 00000000000..fcd802b3487
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/progressbar/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "progressbar";
+ version = "2.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5d81cb529da2e223b53962afd6c8ca0f05c6670e40309a7219eacc36af9b6c63";
+ };
+
+ # invalid command 'test'
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://pypi.python.org/pypi/progressbar;
+ description = "Text progressbar library for python";
+ license = licenses.lgpl3Plus;
+ maintainers = with maintainers; [ domenkozar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/progressbar2/default.nix b/nixpkgs/pkgs/development/python-modules/progressbar2/default.nix
new file mode 100644
index 00000000000..e348ace06b4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/progressbar2/default.nix
@@ -0,0 +1,50 @@
+{ stdenv
+, python
+, buildPythonPackage
+, fetchPypi
+, pytest
+, python-utils
+, sphinx
+, flake8
+, pytestpep8
+, pytest-flakes
+, pytestcov
+, pytestcache
+, pytestrunner
+, freezegun
+}:
+
+buildPythonPackage rec {
+ pname = "progressbar2";
+ version = "3.42.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0a26r022lvz0vvwvhq2rfyl6h0hxbayvgbnajpnc0fc8f4gzr1n0";
+ };
+
+ postPatch = ''
+ rm -r tests/__pycache__
+ rm tests/*.pyc
+ '';
+
+ propagatedBuildInputs = [ python-utils ];
+ nativeBuildInputs = [ pytestrunner ];
+ checkInputs = [
+ pytest sphinx flake8 pytestpep8 pytest-flakes pytestcov
+ pytestcache freezegun
+ ];
+ # ignore tests on the nix wrapped setup.py and don't flake .eggs directory
+ checkPhase = ''
+ runHook preCheck
+ ${python.interpreter} setup.py test --addopts "--ignore=.eggs"
+ runHook postCheck
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://progressbar-2.readthedocs.io/en/latest/;
+ description = "Text progressbar library for python";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ ashgillman ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/progressbar231/default.nix b/nixpkgs/pkgs/development/python-modules/progressbar231/default.nix
new file mode 100644
index 00000000000..f9825961754
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/progressbar231/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, 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 stdenv.lib; {
+ homepage = https://pypi.python.org/pypi/progressbar231;
+ description = "Text progressbar library for python";
+ license = licenses.lgpl3Plus;
+ maintainers = with maintainers; [ twey ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/progressbar33/default.nix b/nixpkgs/pkgs/development/python-modules/progressbar33/default.nix
new file mode 100644
index 00000000000..f3b94436d45
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/progressbar33/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "progressbar33";
+ version = "2.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1zvf6zs5hzrc03p9nfs4p16vhilqikycvv1yk0pxn8s07fdhvzji";
+ };
+
+ # no tests implemented
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://pypi.python.org/pypi/progressbar33;
+ description = "Text progressbar library for python";
+ license = licenses.lgpl3Plus;
+ maintainers = with maintainers; [ twey ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/prometheus_client/default.nix b/nixpkgs/pkgs/development/python-modules/prometheus_client/default.nix
new file mode 100644
index 00000000000..67b82838798
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/prometheus_client/default.nix
@@ -0,0 +1,19 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "prometheus_client";
+ version = "0.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "e8c11ff5ca53de6c3d91e1510500611cafd1d247a937ec6c588a0a7cc3bef93c";
+ };
+
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Prometheus instrumentation library for Python applications";
+ homepage = https://github.com/prometheus/client_python;
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/prompt_toolkit/1.nix b/nixpkgs/pkgs/development/python-modules/prompt_toolkit/1.nix
new file mode 100644
index 00000000000..133a1096863
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/prompt_toolkit/1.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+, docopt
+, six
+, wcwidth
+, pygments
+}:
+
+buildPythonPackage rec {
+ pname = "prompt_toolkit";
+ version = "1.0.16";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c1cedd626e08b8ee830ee65897de754113ff3f3035880030c08b01674d85c5b4";
+ };
+ checkPhase = ''
+ rm prompt_toolkit/win32_types.py
+ py.test -k 'not test_pathcompleter_can_expanduser'
+ '';
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ docopt six wcwidth pygments ];
+
+ meta = {
+ description = "Python library for building powerful interactive command lines";
+ longDescription = ''
+ prompt_toolkit could be a replacement for readline, but it can be
+ much more than that. It is cross-platform, everything that you build
+ with it should run fine on both Unix and Windows systems. Also ships
+ with a nice interactive Python shell (called ptpython) built on top.
+ '';
+ homepage = https://github.com/jonathanslenders/python-prompt-toolkit;
+ license = lib.licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/prompt_toolkit/default.nix b/nixpkgs/pkgs/development/python-modules/prompt_toolkit/default.nix
new file mode 100644
index 00000000000..78db87ce3cb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/prompt_toolkit/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+, six
+, wcwidth
+}:
+
+buildPythonPackage rec {
+ pname = "prompt_toolkit";
+ version = "2.0.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2519ad1d8038fd5fc8e770362237ad0364d16a7650fb5724af6997ed5515e3c1";
+ };
+ checkPhase = ''
+ py.test -k 'not test_pathcompleter_can_expanduser'
+ '';
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ six wcwidth ];
+
+ meta = {
+ description = "Python library for building powerful interactive command lines";
+ longDescription = ''
+ prompt_toolkit could be a replacement for readline, but it can be
+ much more than that. It is cross-platform, everything that you build
+ with it should run fine on both Unix and Windows systems. Also ships
+ with a nice interactive Python shell (called ptpython) built on top.
+ '';
+ homepage = https://github.com/jonathanslenders/python-prompt-toolkit;
+ license = lib.licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/property-manager/default.nix b/nixpkgs/pkgs/development/python-modules/property-manager/default.nix
new file mode 100644
index 00000000000..30c720927e7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/property-manager/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildPythonPackage, fetchFromGitHub, humanfriendly, verboselogs, coloredlogs, pytest, pytestcov }:
+
+buildPythonPackage rec {
+ pname = "property-manager";
+ version = "2.3.1";
+
+ src = fetchFromGitHub {
+ owner = "xolox";
+ repo = "python-property-manager";
+ rev = version;
+ sha256 = "0s4nwipxd8c2vp4rd8mxrj8wbycniz5ki5n177d0dbrnll5amcz0";
+ };
+
+ propagatedBuildInputs = [ coloredlogs humanfriendly verboselogs ];
+ checkInputs = [ pytest pytestcov ];
+
+ meta = with lib; {
+ description = "Useful property variants for Python programming";
+ homepage = https://github.com/xolox/python-property-manager;
+ license = licenses.mit;
+ maintainers = with maintainers; [ eyjhb ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/protobuf/default.nix b/nixpkgs/pkgs/development/python-modules/protobuf/default.nix
new file mode 100644
index 00000000000..d5ff4b04c59
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/protobuf/default.nix
@@ -0,0 +1,66 @@
+{ stdenv, fetchpatch, python, buildPythonPackage, isPy37
+, protobuf, google_apputils, pyext, libcxx
+, disabled, doCheck ? true }:
+
+with stdenv.lib;
+
+buildPythonPackage {
+ inherit (protobuf) name src version;
+ inherit disabled doCheck;
+
+ NIX_CFLAGS_COMPILE =
+ # work around python distutils compiling C++ with $CC
+ optional stdenv.isDarwin "-I${libcxx}/include/c++/v1"
+ ++ optional (versionOlder protobuf.version "2.7.0") "-std=c++98";
+
+ propagatedBuildInputs = [ google_apputils ];
+ propagatedNativeBuildInputs = [ protobuf ]; # For protoc.
+ nativeBuildInputs = [ google_apputils pyext ];
+ buildInputs = [ protobuf ];
+
+ patches = optional (isPy37 && (versionOlder protobuf.version "3.6.1.2"))
+ # Python 3.7 compatibility (not needed for protobuf >= 3.6.1.2)
+ (fetchpatch {
+ url = "https://github.com/protocolbuffers/protobuf/commit/0a59054c30e4f0ba10f10acfc1d7f3814c63e1a7.patch";
+ sha256 = "09hw22y3423v8bbmc9xm07znwdxfbya6rp78d4zqw6fisdvjkqf1";
+ stripLen = 1;
+ })
+ ;
+
+ prePatch = ''
+ while [ ! -d python ]; do
+ cd *
+ done
+ cd python
+ '';
+
+ preConfigure = optionalString (versionAtLeast protobuf.version "2.6.0") ''
+ export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=cpp
+ export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION_VERSION=2
+ '';
+
+ preBuild = ''
+ # Workaround for https://github.com/google/protobuf/issues/2895
+ ${python.interpreter} setup.py build
+ '' + optionalString (versionAtLeast protobuf.version "2.6.0") ''
+ ${python.interpreter} setup.py build_ext --cpp_implementation
+ '';
+
+ installFlags = optional (versionAtLeast protobuf.version "2.6.0")
+ "--install-option='--cpp_implementation'";
+
+ # the _message.so isn't installed, so we'll do that manually.
+ # if someone can figure out a less hacky way to get the _message.so to
+ # install, please do replace this.
+ postInstall = optionalString (versionAtLeast protobuf.version "2.6.0") ''
+ cp -v $(find build -name "_message*") $out/${python.sitePackages}/google/protobuf/pyext
+ '';
+
+ meta = {
+ description = "Protocol Buffers are Google's data interchange format";
+ homepage = https://developers.google.com/protocol-buffers/;
+ license = licenses.bsd3;
+ };
+
+ passthru.protobuf = protobuf;
+}
diff --git a/nixpkgs/pkgs/development/python-modules/prov/default.nix b/nixpkgs/pkgs/development/python-modules/prov/default.nix
new file mode 100644
index 00000000000..c6cb98e33b2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/prov/default.nix
@@ -0,0 +1,51 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, lxml
+, networkx
+, dateutil
+, six
+, pydotplus
+, rdflib
+, pydot
+, glibcLocales
+}:
+
+buildPythonPackage rec {
+ pname = "prov";
+ version = "1.5.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1a9h406laclxalmdny37m0yyw7y17n359akclbahimdggq853jd0";
+ };
+
+ prePatch = ''
+ substituteInPlace setup.py --replace "six==1.10.0" "six>=1.10.0"
+ '';
+
+ propagatedBuildInputs = [
+ lxml
+ networkx
+ dateutil
+ six
+ pydotplus
+ rdflib
+ ];
+
+ checkInputs = [
+ pydot
+ glibcLocales
+ ];
+
+ preCheck = ''
+ export LC_ALL="en_US.utf-8"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A Python library for W3C Provenance Data Model (PROV)";
+ homepage = https://github.com/trungdong/prov;
+ license = licenses.mit;
+ maintainers = with maintainers; [ ashgillman ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/psd-tools/default.nix b/nixpkgs/pkgs/development/python-modules/psd-tools/default.nix
new file mode 100644
index 00000000000..5f6c23beb02
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/psd-tools/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPythonPackage, fetchPypi,
+ docopt, pillow
+}:
+
+buildPythonPackage rec {
+ pname = "psd-tools";
+ version = "1.4";
+
+ meta = {
+ description = "Python package for reading Adobe Photoshop PSD files";
+ homepage = https://github.com/kmike/psd-tools;
+ license = lib.licenses.mit;
+ };
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0g2vss5hwlk96w0yj42n7ia56mly51n92f2rlbrifhn8hfbxd38s";
+ };
+
+ propagatedBuildInputs = [ docopt pillow ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/psutil/default.nix b/nixpkgs/pkgs/development/python-modules/psutil/default.nix
new file mode 100644
index 00000000000..37c19f5c14b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/psutil/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, darwin
+}:
+
+buildPythonPackage rec {
+ pname = "psutil";
+ version = "5.6.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "863a85c1c0a5103a12c05a35e59d336e1d665747e531256e061213e2e90f63f3";
+ };
+
+ # No tests in archive
+ doCheck = false;
+
+ buildInputs = [] ++ stdenv.lib.optionals stdenv.isDarwin [ darwin.IOKit ];
+
+ meta = {
+ description = "Process and system utilization information interface for python";
+ homepage = https://github.com/giampaolo/psutil;
+ license = stdenv.lib.licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/psycopg2/default.nix b/nixpkgs/pkgs/development/python-modules/psycopg2/default.nix
new file mode 100644
index 00000000000..dae97d87ef2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/psycopg2/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, lib, buildPythonPackage, isPyPy, fetchPypi, postgresql, openssl }:
+
+buildPythonPackage rec {
+ pname = "psycopg2";
+ version = "2.7.7";
+
+ disabled = isPyPy;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f4526d078aedd5187d0508aa5f9a01eae6a48a470ed678406da94b4cd6524b7e";
+ };
+
+ buildInputs = lib.optional stdenv.isDarwin openssl;
+ nativeBuildInputs = [ postgresql ];
+
+ doCheck = false;
+
+ meta = with lib; {
+ description = "PostgreSQL database adapter for the Python programming language";
+ license = with licenses; [ gpl2 zpl20 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ptable/default.nix b/nixpkgs/pkgs/development/python-modules/ptable/default.nix
new file mode 100644
index 00000000000..f1118325610
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ptable/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, nose }:
+
+buildPythonPackage {
+ pname = "ptable";
+ version = "unstable-2019-06-14";
+
+ # https://github.com/kxxoling/PTable/issues/27
+ src = fetchFromGitHub {
+ owner = "kxxoling";
+ repo = "PTable";
+ rev = "bcfdb92811ae1f39e1065f31544710bf87d3bc21";
+ sha256 = "1cj314rp6irlvr0a2c4xffsm2idsb0hzwr38vzz6z3kbhphcb63i";
+ };
+
+ checkInputs = [ nose ];
+
+ checkPhase = ''
+ nosetests --with-coverage --cover-package=prettytable --cover-min-percentage=75
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/kxxoling/PTable";
+ description = "A simple Python library designed to make it quick and easy to represent tabular data in visually appealing ASCII tables";
+ license = licenses.bsd3;
+ maintainers = [ maintainers.mmahut ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ptest/default.nix b/nixpkgs/pkgs/development/python-modules/ptest/default.nix
new file mode 100644
index 00000000000..bdd9fc5c47e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ptest/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+}:
+
+buildPythonPackage rec {
+ pname = "ptest";
+ version = "1.7.4";
+
+ src = fetchFromGitHub {
+ owner = "KarlGong";
+ repo = pname;
+ rev = version + "-release";
+ sha256 = "0v1zpfjagjlvdmgv6d502nmb7s996wadvpzg93i651s64rrlwq4s";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Test classes and test cases using decorators, execute test cases by command line, and get clear reports";
+ homepage = https://pypi.python.org/pypi/ptest;
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ptpython/default.nix b/nixpkgs/pkgs/development/python-modules/ptpython/default.nix
new file mode 100644
index 00000000000..d48e42ef264
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ptpython/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, fetchPypi, prompt_toolkit, docopt , jedi, pygments }:
+
+buildPythonPackage rec {
+ pname = "ptpython";
+ version = "2.0.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1m34jbwj3j3762mg1vynpgciqw4kqdzdqjvd62mwhbjkly7ddsgb";
+ };
+
+ propagatedBuildInputs = [ prompt_toolkit docopt jedi pygments ];
+
+ # no tests to run
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "An advanced Python REPL";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ mlieberman85 ];
+ platforms = platforms.all;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ptyprocess/default.nix b/nixpkgs/pkgs/development/python-modules/ptyprocess/default.nix
new file mode 100644
index 00000000000..5de528ccd40
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ptyprocess/default.nix
@@ -0,0 +1,20 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "ptyprocess";
+ version = "0.6.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "923f299cc5ad920c68f2bc0bc98b75b9f838b93b599941a6b63ddbc2476394c0";
+ };
+
+ meta = {
+ description = "Run a subprocess in a pseudo terminal";
+ homepage = https://github.com/pexpect/ptyprocess;
+ license = lib.licenses.isc;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/publicsuffix/default.nix b/nixpkgs/pkgs/development/python-modules/publicsuffix/default.nix
new file mode 100644
index 00000000000..9c90161c6ea
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/publicsuffix/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k }:
+
+buildPythonPackage rec {
+ pname = "publicsuffix";
+ version = "1.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1adx520249z2cy7ykwjr1k190mn2888wqn9jf8qm27ly4qymjxxf";
+ };
+
+
+ # fix the ASCII-mode LICENSE file read
+ # disable test_fetch and the doctests (which also invoke fetch)
+ patchPhase = stdenv.lib.optionalString isPy3k ''
+ sed -i "s/)\.read(/,encoding='utf-8'\0/" setup.py
+ '' + ''
+ sed -i -e "/def test_fetch/i\\
+ \\t@unittest.skip('requires internet')" -e "/def additional_tests():/,+1d" tests.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Allows to get the public suffix of a domain name";
+ homepage = "https://pypi.python.org/pypi/publicsuffix/";
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pudb/default.nix b/nixpkgs/pkgs/development/python-modules/pudb/default.nix
new file mode 100644
index 00000000000..bcba04fdfd2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pudb/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pygments
+, urwid
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "pudb";
+ version = "2019.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "19imrr17jnkd6fd2w1zzh63z0hcipg5b9v2x4svqm5c08p3cyc5c";
+ };
+
+ propagatedBuildInputs = [ pygments urwid ];
+
+ # Tests fail on python 3 due to writes to the read-only home directory
+ doCheck = !isPy3k;
+
+ meta = with stdenv.lib; {
+ description = "A full-screen, console-based Python debugger";
+ license = licenses.mit;
+ platforms = platforms.all;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pulp/default.nix b/nixpkgs/pkgs/development/python-modules/pulp/default.nix
new file mode 100644
index 00000000000..aacac72d2aa
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pulp/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchPypi, buildPythonPackage, pyparsing }:
+
+buildPythonPackage rec {
+ pname = "PuLP";
+ version = "1.6.8";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1irzpfnnm5f0qf8y9ddxi489nwixyj0q4zlvqafm621bijkxdv6g";
+ };
+
+ buildInputs = [];
+ propagatedBuildInputs = [ pyparsing ];
+
+ # only one test that requires an extra
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/coin-or/pulp;
+ description = "PuLP is an LP modeler written in python";
+ maintainers = with maintainers; [ teto ];
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pure-python-adb-homeassistant/default.nix b/nixpkgs/pkgs/development/python-modules/pure-python-adb-homeassistant/default.nix
new file mode 100644
index 00000000000..51db9783555
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pure-python-adb-homeassistant/default.nix
@@ -0,0 +1,24 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+buildPythonPackage rec {
+ pname = "pure-python-adb-homeassistant";
+ version = "0.1.6.dev0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "fe6d90220a6880649f6d6df4e707ce5034676710ee6146145ef995f7b769a482";
+ };
+
+ # Disable tests as they require docker, docker-compose and a dedicated
+ # android emulator
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Pure python implementation of the adb client";
+ homepage = https://github.com/JeffLIrion/pure-python-adb;
+ license = licenses.mit;
+ maintainers = [ maintainers.makefu ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/purepng/default.nix b/nixpkgs/pkgs/development/python-modules/purepng/default.nix
new file mode 100644
index 00000000000..fbaa1cfad71
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/purepng/default.nix
@@ -0,0 +1,48 @@
+{ stdenv
+, buildPythonPackage
+, python
+, fetchFromGitHub
+, fetchpatch
+, cython ? null
+, numpy ? null
+}:
+
+buildPythonPackage {
+ pname = "purepng";
+ version = "0.2.0";
+
+ src = fetchFromGitHub {
+ owner = "Scondo";
+ repo = "purepng";
+ rev = "449aa00e97a8d7b8a200eb9048056d4da600a345";
+ sha256 = "105p7sxn2f21icfnqpah69mnd74r31szj330swbpz53k7gr6nlsv";
+ };
+
+ patches = [
+ (fetchpatch {
+ name = "fix-py37-stopiteration-in-generators.patch";
+ url = "https://github.com/Scondo/purepng/pull/28/commits/62d71dfc2be9ffdc4b3e5f642af0281a8ce8f946.patch";
+ sha256 = "1ag0pji3p012hmj8kadcd0vydv9702188c0isizsi964qcl4va6m";
+ })
+ ];
+ patchFlags = "-p1 -d code";
+
+ # cython is optional - if not supplied, the "pure python" implementation will be used
+ nativeBuildInputs = [ cython ];
+
+ # numpy is optional - if not supplied, tests simply have less coverage
+ checkInputs = [ numpy ];
+ # checkPhase begins by deleting source dir to force test execution against installed version
+ checkPhase = ''
+ rm -r code/png
+ ${python.interpreter} code/test_png.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Pure Python library for PNG image encoding/decoding";
+ homepage = https://github.com/scondo/purepng;
+ license = licenses.mit;
+ maintainers = with maintainers; [ ris ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/purl/default.nix b/nixpkgs/pkgs/development/python-modules/purl/default.nix
new file mode 100644
index 00000000000..43fd5b71ca6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/purl/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildPythonPackage, fetchFromGitHub
+, nose
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "purl";
+ version = "1.5";
+
+ src = fetchFromGitHub {
+ owner = "codeinthehole";
+ repo = "purl";
+ rev = version;
+ sha256 = "0vi7xdm2xc1rbqrz5jwpr7x7dnkcrbjf1mb4w1q2c2f8jca0kk0g";
+ };
+
+ propagatedBuildInputs = [ six ];
+
+ checkInputs = [ nose ];
+
+ meta = with lib; {
+ description = "Immutable URL class for easy URL-building and manipulation";
+ homepage = "https://github.com/codeinthehole/purl";
+ license = licenses.mit;
+ maintainers = with maintainers; [ jonringer ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pushbullet/default.nix b/nixpkgs/pkgs/development/python-modules/pushbullet/default.nix
new file mode 100644
index 00000000000..74c0f66b91e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pushbullet/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildPythonPackage, fetchPypi
+, requests, websocket_client, python_magic
+, pytest, mock }:
+
+buildPythonPackage rec {
+ pname = "pushbullet.py";
+ version = "0.11.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "aa9dc7bb46e083e3497d46241154f12944a8f540e29d150330ca94db0b453b8d";
+ };
+
+ propagatedBuildInputs = [ requests websocket_client python_magic ];
+
+ checkInputs = [ pytest mock ];
+
+ checkPhase = ''
+ PUSHBULLET_API_KEY="" py.test -k "not test_e2e and not test_auth"
+ '';
+
+ meta = with lib; {
+ description = "A simple python client for pushbullet.com";
+ homepage = https://github.com/randomchars/pushbullet.py;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pushover/default.nix b/nixpkgs/pkgs/development/python-modules/pushover/default.nix
new file mode 100644
index 00000000000..3ff449037ea
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pushover/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, requests }:
+
+buildPythonPackage rec {
+ pname = "python-pushover";
+ version = "0.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "dee1b1344fb8a5874365fc9f886d9cbc7775536629999be54dfa60177cf80810";
+ };
+
+ propagatedBuildInputs = [ requests ];
+
+ # tests require network
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Bindings and command line utility for the Pushover notification service";
+ homepage = https://github.com/Thibauth/python-pushover;
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ peterhoeg ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pvlib/default.nix b/nixpkgs/pkgs/development/python-modules/pvlib/default.nix
new file mode 100644
index 00000000000..cdd6011aba2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pvlib/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, buildPythonPackage, fetchPypi, pythonOlder, numpy, pandas, pytz, six
+, pytest, mock, pytest-mock, requests }:
+
+buildPythonPackage rec {
+ pname = "pvlib";
+ version = "0.6.3";
+
+ # Support for Python <3.5 dropped in 0.6.3 on June 1, 2019.
+ disabled = pythonOlder "3.5";
+
+ src = fetchPypi{
+ inherit pname version;
+ sha256 = "03nvgpmnscd7rh9jwm2h579zvriq5lva6rsdhb6jckpra5wjkn69";
+ };
+
+ checkInputs = [ pytest mock pytest-mock ];
+ propagatedBuildInputs = [ numpy pandas pytz six requests ];
+
+ # Skip a few tests that try to access some URLs
+ checkPhase = ''
+ runHook preCheck
+ pushd pvlib/test
+ pytest . -k "not test_read_srml_dt_index and not test_read_srml_month_from_solardata and not test_get_psm3"
+ popd
+ runHook postCheck
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = http://pvlib-python.readthedocs.io;
+ description = "Simulate the performance of photovoltaic energy systems";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ jluttine ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pweave/default.nix b/nixpkgs/pkgs/development/python-modules/pweave/default.nix
new file mode 100644
index 00000000000..13f237750de
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pweave/default.nix
@@ -0,0 +1,35 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, mock
+, matplotlib
+, pkgs
+, nbconvert
+, markdown
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "Pweave";
+ version = "0.30.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5e5298d90e06414a01f48e0d6aa4c36a70c5f223d929f2a9c7e2d388451c7357";
+ };
+
+ disabled = !isPy3k;
+
+ buildInputs = [ mock pkgs.glibcLocales ];
+ propagatedBuildInputs = [ matplotlib nbconvert markdown ];
+
+ # fails due to trying to run CSS as test
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Scientific reports with embedded python computations with reST, LaTeX or markdown";
+ homepage = http://mpastell.com/pweave/ ;
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pwntools/default.nix b/nixpkgs/pkgs/development/python-modules/pwntools/default.nix
new file mode 100644
index 00000000000..da7ddbc7dcb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pwntools/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k
+, Mako, packaging, pysocks, pygments, ROPGadget
+, capstone, paramiko, pip, psutil
+, pyelftools, pyserial, dateutil
+, requests, tox, unicorn, intervaltree, fetchpatch }:
+
+buildPythonPackage rec {
+ version = "3.12.0";
+ pname = "pwntools";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "09a7yhsyqxb4xf2r6mbn3p5zx1wp89lxq7lj34y4zbin6ns5929s";
+ };
+
+ propagatedBuildInputs = [ Mako packaging pysocks pygments ROPGadget capstone paramiko pip psutil pyelftools pyserial dateutil requests tox unicorn intervaltree ];
+
+ disabled = isPy3k;
+ doCheck = false; # no setuptools tests for the package
+
+ # Can be removed when 3.13.0 is released
+ patches = [
+ (fetchpatch {
+ url = "https://github.com/Gallopsled/pwntools/commit/9859f54a21404174dd17efee02f91521a2dd09c5.patch";
+ sha256 = "0p0h87npn1mwsd8ciab7lg74bk3ahlk5r0mjbvx4jhihl2gjc3z2";
+ })
+ ];
+
+
+ meta = with stdenv.lib; {
+ homepage = "http://pwntools.com";
+ description = "CTF framework and exploit development library";
+ license = licenses.mit;
+ maintainers = with maintainers; [ bennofs kristoff3r ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/py-cpuinfo/default.nix b/nixpkgs/pkgs/development/python-modules/py-cpuinfo/default.nix
new file mode 100644
index 00000000000..c90f81ae28f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/py-cpuinfo/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, fetchFromGitHub
+, buildPythonPackage
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "py-cpuinfo";
+ version = "4.0.0";
+
+ src = fetchFromGitHub {
+ owner = "workhorsy";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "1pp561lj80jnvr2038nrzhmks2akxsbdqxvfrqa6n340x81981lm";
+ };
+
+ checkInputs = [
+ pytest
+ ];
+
+ checkPhase = ''
+ runHook preCheck
+ pytest -k "not TestActual"
+ runHook postCheck
+ '';
+
+ meta = {
+ description = "Get CPU info with pure Python 2 & 3";
+ homepage = https://github.com/workhorsy/py-cpuinfo;
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/py-lru-cache/default.nix b/nixpkgs/pkgs/development/python-modules/py-lru-cache/default.nix
new file mode 100644
index 00000000000..b1d8c4f2946
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/py-lru-cache/default.nix
@@ -0,0 +1,23 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "py-lru-cache";
+ version = "0.1.4";
+
+ src = fetchPypi {
+ inherit version;
+ pname = "py_lru_cache";
+ sha256 = "1w3a8l3ckl1zz0f2vlfrawl9a402r458p7xzhy4sgq8k9rl37pq2";
+ };
+
+ meta = with lib; {
+ description = "An in-memory LRU cache for python";
+ homepage = https://github.com/stucchio/Python-LRU-cache;
+ license = licenses.gpl3;
+ maintainers = [ maintainers.costrouc ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/py-radix/default.nix b/nixpkgs/pkgs/development/python-modules/py-radix/default.nix
new file mode 100644
index 00000000000..b06de3a27a7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/py-radix/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, coverage
+, nose
+}:
+
+buildPythonPackage rec {
+ pname = "py-radix";
+ version = "0.10.0";
+
+ src = fetchFromGitHub {
+ owner = "mjschultz";
+ repo = "py-radix";
+ rev = "v${version}";
+ sha256 = "01xyn9lg6laavnzczf5bck1l1c2718ihxx0hvdkclnnxjqhbrqis";
+ };
+
+ doCheck = true;
+ checkInputs = [ coverage nose ];
+
+ meta = with stdenv.lib; {
+ description = "Python radix tree for IPv4 and IPv6 prefix matching";
+ homepage = https://github.com/mjschultz/py-radix;
+ license = with licenses; [ isc bsdOriginal ];
+ maintainers = with maintainers; [ mkg ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/py-vapid/default.nix b/nixpkgs/pkgs/development/python-modules/py-vapid/default.nix
new file mode 100644
index 00000000000..d5af1c1c33d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/py-vapid/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildPythonPackage, fetchPypi
+, flake8, mock, nose, pytest
+, cryptography
+}:
+
+buildPythonPackage rec {
+ pname = "py-vapid";
+ version = "1.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1b3g4ljkpi6ka5n63bl5y47r3qhxjmr6qfamqwxnmna2567b5las";
+ };
+
+ propagatedBuildInputs = [ cryptography ];
+
+ checkInputs = [ flake8 mock nose pytest ];
+
+ meta = with lib; {
+ description = "VAPID is a voluntary standard for WebPush subscription providers";
+ homepage = https://github.com/mozilla-services/vapid;
+ license = licenses.mpl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/py/default.nix b/nixpkgs/pkgs/development/python-modules/py/default.nix
new file mode 100644
index 00000000000..9c5ada22b14
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/py/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, buildPythonPackage, fetchPypi, setuptools_scm }:
+
+buildPythonPackage rec {
+ pname = "py";
+ version = "1.8.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0lsy1gajva083pzc7csj1cvbmminb7b4l6a0prdzyb3fd829nqyw";
+ };
+
+ # Circular dependency on pytest
+ doCheck = false;
+
+ nativeBuildInputs = [ setuptools_scm ];
+
+ pythonImportsCheck = [
+ "py"
+ ];
+
+ meta = with stdenv.lib; {
+ description = "Library with cross-python path, ini-parsing, io, code, log facilities";
+ homepage = https://pylib.readthedocs.org/;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/py3dns/default.nix b/nixpkgs/pkgs/development/python-modules/py3dns/default.nix
new file mode 100644
index 00000000000..7ac093cbc57
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/py3dns/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "py3dns";
+ version = "3.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8e88c0648c4d38a880f08aeb05a6e5cb48b8ce2602d381caafc6c71698ee3c21";
+ };
+
+ preConfigure = ''
+ sed -i \
+ -e '/import DNS/d' \
+ -e 's/DNS.__version__/"${version}"/g' \
+ setup.py
+ '';
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Python 3 DNS library";
+ homepage = https://launchpad.net/py3dns;
+ license = licenses.psfl;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/py3exiv2/default.nix b/nixpkgs/pkgs/development/python-modules/py3exiv2/default.nix
new file mode 100644
index 00000000000..d3ed2659f6a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/py3exiv2/default.nix
@@ -0,0 +1,33 @@
+{ buildPythonPackage, isPy3k, fetchPypi, stdenv, exiv2, boost, libcxx, substituteAll, python }:
+
+buildPythonPackage rec {
+ pname = "py3exiv2";
+ version = "0.7.0";
+ disabled = !(isPy3k);
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1gcvmglyl8ad2f336w88gwkd5djjsxdx1ind9wnlbqc3jn9i05cg";
+ };
+
+ buildInputs = [ exiv2 boost ];
+
+ # work around python distutils compiling C++ with $CC (see issue #26709)
+ NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.isDarwin "-I${libcxx}/include/c++/v1";
+
+ # fix broken libboost_python3 detection
+ patches = [
+ (substituteAll {
+ src = ./setup.patch;
+ version = "3${stdenv.lib.versions.minor python.version}";
+ })
+ ];
+
+ meta = {
+ homepage = "https://launchpad.net/py3exiv2";
+ description = "A Python3 binding to the library exiv2";
+ license = with stdenv.lib.licenses; [ gpl3 ];
+ maintainers = with stdenv.lib.maintainers; [ vinymeuh ];
+ platforms = with stdenv.lib.platforms; linux ++ darwin;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/py3exiv2/setup.patch b/nixpkgs/pkgs/development/python-modules/py3exiv2/setup.patch
new file mode 100644
index 00000000000..8b0619c5bc5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/py3exiv2/setup.patch
@@ -0,0 +1,11 @@
+--- a/setup.py 2017-10-16 22:03:02.000000000 +0200
++++ b/setup.py 2017-10-16 22:03:34.000000000 +0200
+@@ -39,7 +39,7 @@
+ if '3' in l[2:]:
+ return l.replace('libboost', 'boost')
+
+-libboost = get_libboost_name()
++libboost = 'boost_python@version@'
+
+ setup(
+ name='py3exiv2',
diff --git a/nixpkgs/pkgs/development/python-modules/py3status/default.nix b/nixpkgs/pkgs/development/python-modules/py3status/default.nix
new file mode 100644
index 00000000000..31d31f714b7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/py3status/default.nix
@@ -0,0 +1,54 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, requests
+, pytz
+, tzlocal
+, i3ipc
+, pydbus
+, pygobject3
+, pyserial
+
+, file
+, acpi
+, coreutils
+, alsaUtils
+, i3
+, procps
+, lm_sensors
+, libnotify
+, xorg
+}:
+
+buildPythonPackage rec {
+ pname = "py3status";
+ version = "3.19";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "10ikvdx39phr7n01qa6y9i5lqg3blv0d6y1pwqniczaf558cfp3l";
+ };
+
+ doCheck = false;
+ propagatedBuildInputs = [ pytz requests tzlocal i3ipc pydbus pygobject3 pyserial ];
+ buildInputs = [ file ];
+ prePatch = ''
+ sed -i -e "s|'file|'${file}/bin/file|" py3status/parse_config.py
+ sed -i -e "s|\[\"acpi\"|\[\"${acpi}/bin/acpi\"|" py3status/modules/battery_level.py
+ sed -i -e "s|notify-send|${libnotify}/bin/notify-send|" py3status/modules/battery_level.py
+ sed -i -e "s|/usr/bin/whoami|${coreutils}/bin/whoami|" py3status/modules/external_script.py
+ sed -i -e "s|'amixer|'${alsaUtils}/bin/amixer|" py3status/modules/volume_status.py
+ sed -i -e "s|'i3-nagbar|'${i3}/bin/i3-nagbar|" py3status/modules/pomodoro.py
+ sed -i -e "s|'free|'${procps}/bin/free|" py3status/modules/sysdata.py
+ sed -i -e "s|'sensors|'${lm_sensors}/bin/sensors|" py3status/modules/sysdata.py
+ sed -i -e "s|'setxkbmap|'${xorg.setxkbmap}/bin/setxkbmap|" py3status/modules/keyboard_layout.py
+ sed -i -e "s|'xset|'${xorg.xset}/bin/xset|" py3status/modules/keyboard_layout.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Extensible i3status wrapper";
+ license = licenses.bsd3;
+ homepage = https://github.com/ultrabug/py3status;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/py4j/default.nix b/nixpkgs/pkgs/development/python-modules/py4j/default.nix
new file mode 100644
index 00000000000..a442dfa097b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/py4j/default.nix
@@ -0,0 +1,23 @@
+{ buildPythonPackage, fetchPypi, stdenv }:
+
+buildPythonPackage rec {
+ pname = "py4j";
+
+ version = "0.10.8.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension= "zip";
+ sha256 = "0x52rjn2s44mbpk9p497p3yba9xnpl6hcaiacklppwqcd8avnac3";
+ };
+
+ # No tests in archive
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Py4J enables Python programs running in a Python interpreter to dynamically access Java objects in a Java Virtual Machine. Methods are called as if the Java objects resided in the Python interpreter and Java collections can be accessed through standard Python collection methods. Py4J also enables Java programs to call back Python objects.";
+ homepage = https://www.py4j.org/;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.shlevy ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyGithub/default.nix b/nixpkgs/pkgs/development/python-modules/pyGithub/default.nix
new file mode 100644
index 00000000000..a4e3cada1fc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyGithub/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub
+, buildPythonPackage, python-jose, pyjwt, requests, deprecated, httpretty }:
+
+buildPythonPackage rec {
+ pname = "PyGithub";
+ version = "1.43.8";
+
+ src = fetchFromGitHub {
+ owner = "PyGithub";
+ repo = "PyGithub";
+ rev = "v${version}";
+ sha256 = "1625v558xga5mwhl9jqmibywy5qafmg1vqrirqz6zfq1la1d22mw";
+ };
+
+ propagatedBuildInputs = [ python-jose pyjwt requests deprecated httpretty ];
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/PyGithub/PyGithub;
+ description = "A Python (2 and 3) library to access the GitHub API v3";
+ platforms = platforms.all;
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ jhhuh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/py_scrypt/default.nix b/nixpkgs/pkgs/development/python-modules/py_scrypt/default.nix
new file mode 100644
index 00000000000..0c2d5eb5c02
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/py_scrypt/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, openssl
+}:
+
+buildPythonPackage rec {
+ pname = "scrypt";
+ version = "0.8.13";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1377b1adc98c4152694bf5d7e93b41a9d2e9060af69b747cfad8c93ac426f9ea";
+ };
+
+ buildInputs = [ openssl ];
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Bindings for scrypt key derivation function library";
+ homepage = https://pypi.python.org/pypi/scrypt;
+ maintainers = with maintainers; [ asymmetric ];
+ license = licenses.bsd2;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/py_stringmatching/default.nix b/nixpkgs/pkgs/development/python-modules/py_stringmatching/default.nix
new file mode 100644
index 00000000000..16b98320e8e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/py_stringmatching/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, numpy
+, six
+, nose
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "py_stringmatching";
+ version = "0.4.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c46db1e855cef596dfbbe1bd48fcabb30736479eff602c2bf88af10f998f1532";
+ };
+
+ checkInputs = [ nose ];
+
+ propagatedBuildInputs = [ numpy six ];
+
+ meta = with lib; {
+ description = "A Python string matching library including string tokenizers and string similarity measures";
+ homepage = https://sites.google.com/site/anhaidgroup/projects/magellan/py_stringmatching;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ ixxie ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyacoustid/default.nix b/nixpkgs/pkgs/development/python-modules/pyacoustid/default.nix
new file mode 100644
index 00000000000..29cdfbc6599
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyacoustid/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, requests
+, audioread
+, pkgs
+}:
+
+buildPythonPackage rec {
+ pname = "pyacoustid";
+ version = "1.1.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "07394a8ae84625a0a6fef2d891d19687ff59cd955caaf48097da2826043356fd";
+ };
+
+ propagatedBuildInputs = [ requests audioread ];
+
+ postPatch = ''
+ sed -i \
+ -e '/^FPCALC_COMMAND *=/s|=.*|= "${pkgs.chromaprint}/bin/fpcalc"|' \
+ acoustid.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Bindings for Chromaprint acoustic fingerprinting";
+ homepage = "https://github.com/sampsyo/pyacoustid";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyaes/default.nix b/nixpkgs/pkgs/development/python-modules/pyaes/default.nix
new file mode 100644
index 00000000000..5ca837cdee4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyaes/default.nix
@@ -0,0 +1,17 @@
+{ lib, fetchPypi, buildPythonPackage }:
+
+buildPythonPackage rec {
+ pname = "pyaes";
+ version = "1.6.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "02c1b1405c38d3c370b085fb952dd8bea3fadcee6411ad99f312cc129c536d8f";
+ };
+
+ meta = {
+ description = "Pure-Python AES";
+ license = lib.licenses.mit;
+ homepage = https://github.com/ricmoo/pyaes;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyairvisual/default.nix b/nixpkgs/pkgs/development/python-modules/pyairvisual/default.nix
new file mode 100644
index 00000000000..010c2805d2b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyairvisual/default.nix
@@ -0,0 +1,30 @@
+{ lib, buildPythonPackage, isPy3k, fetchFromGitHub, requests
+, requests-mock, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "pyairvisual";
+ version = "1.0.0";
+
+ src = fetchFromGitHub {
+ owner = "bachya";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "0ng6k07n91k5l68zk3hl4fywb33admp84wqdm20qmmw9yc9c64fd";
+ };
+
+ checkInputs = [ pytest requests-mock ];
+ propagatedBuildInputs = [ requests ];
+
+ checkPhase = ''
+ py.test tests
+ '';
+
+ disabled = !isPy3k;
+
+ meta = with lib; {
+ description = "A thin Python wrapper for the AirVisual API";
+ license = licenses.mit;
+ homepage = https://github.com/bachya/pyairvisual;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyalgotrade/default.nix b/nixpkgs/pkgs/development/python-modules/pyalgotrade/default.nix
new file mode 100644
index 00000000000..7602caf24cf
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyalgotrade/default.nix
@@ -0,0 +1,41 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, matplotlib
+, numpy
+, python-dateutil
+, pytz
+, requests
+, retrying
+, scipy
+, six
+, tornado
+, tweepy
+, ws4py
+}:
+
+buildPythonPackage rec {
+ pname = "pyalgotrade";
+ version = "0.20";
+
+ src = fetchPypi {
+ pname = "PyAlgoTrade";
+ inherit version;
+ sha256 = "7927c87af202869155280a93ff6ee934bb5b46cdb1f20b70f7407337f8541cbd";
+ };
+
+ propagatedBuildInputs = [
+ matplotlib numpy python-dateutil pytz requests
+ retrying scipy six tornado tweepy ws4py
+ ];
+
+ # no tests in PyPI tarball
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Python Algorithmic Trading";
+ homepage = http://gbeced.github.io/pyalgotrade/;
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyamf/default.nix b/nixpkgs/pkgs/development/python-modules/pyamf/default.nix
new file mode 100644
index 00000000000..5ac6ef82964
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyamf/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, 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 stdenv.lib; {
+ description = "AMF (Action Message Format) support for Python";
+ homepage = https://pypi.python.org/pypi/PyAMF;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyamg/default.nix b/nixpkgs/pkgs/development/python-modules/pyamg/default.nix
new file mode 100644
index 00000000000..b299e44f3e3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyamg/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, numpy
+, scipy
+, pytest
+, pybind11
+}:
+
+buildPythonPackage rec {
+ pname = "pyamg";
+ version = "4.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "3ceb38ffd86e29774e759486f2961599c8ed847459c68727493cadeaf115a38a";
+ };
+
+ propagatedBuildInputs = [
+ numpy
+ scipy
+ pytest
+ pybind11
+ ];
+
+ preBuild = ''
+ export HOME=$(mktemp -d)
+ '';
+
+ meta = with lib; {
+ description = "Algebraic Multigrid Solvers in Python";
+ homepage = https://github.com/pyamg/pyamg;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyaml/default.nix b/nixpkgs/pkgs/development/python-modules/pyaml/default.nix
new file mode 100644
index 00000000000..927963cec8d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyaml/default.nix
@@ -0,0 +1,26 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pyyaml
+, unidecode
+}:
+
+buildPythonPackage rec {
+ pname = "pyaml";
+ version = "18.11.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b96292cc409e0f222b6fecff96afd2e19cfab5d1f2606344907751d42301263a";
+ };
+
+ propagatedBuildInputs = [ pyyaml ];
+
+ checkInputs = [ unidecode ];
+
+ meta = {
+ description = "PyYAML-based module to produce pretty and readable YAML-serialized data";
+ homepage = https://github.com/mk-fg/pretty-yaml;
+ license = lib.licenses.wtfpl;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/pyannotate/default.nix b/nixpkgs/pkgs/development/python-modules/pyannotate/default.nix
new file mode 100644
index 00000000000..db48bb06bc0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyannotate/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, six
+, mypy_extensions
+, typing
+, pytest
+}:
+
+buildPythonPackage rec {
+ version = "1.0.7";
+ pname = "pyannotate";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "54e6035a8601248992e17734034e6555842c6ea9863f90c15d14fe76a184be07";
+ };
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ six mypy_extensions ]
+ ++ stdenv.lib.optionals (pythonOlder "3.5") [ typing ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/dropbox/pyannotate;
+ description = "Auto-generate PEP-484 annotations";
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyarrow/default.nix b/nixpkgs/pkgs/development/python-modules/pyarrow/default.nix
new file mode 100644
index 00000000000..5590337951b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyarrow/default.nix
@@ -0,0 +1,77 @@
+{ lib, buildPythonPackage, python, isPy3k, arrow-cpp, cmake, cython, futures, hypothesis, numpy, pandas, pytest, pkgconfig, setuptools_scm, six }:
+
+let
+ _arrow-cpp = arrow-cpp.override { inherit python; };
+in
+
+buildPythonPackage rec {
+ pname = "pyarrow";
+
+ inherit (_arrow-cpp) version src;
+
+ sourceRoot = "apache-arrow-${version}/python";
+
+ nativeBuildInputs = [ cmake cython pkgconfig setuptools_scm ];
+ propagatedBuildInputs = [ numpy six ] ++ lib.optionals (!isPy3k) [ futures ];
+ checkInputs = [ hypothesis pandas pytest ];
+
+ PYARROW_BUILD_TYPE = "release";
+ PYARROW_WITH_PARQUET = true;
+ PYARROW_CMAKE_OPTIONS = [
+ "-DCMAKE_INSTALL_RPATH=${ARROW_HOME}/lib"
+
+ # This doesn't use setup hook to call cmake so we need to workaround #54606
+ # ourselves
+ "-DCMAKE_POLICY_DEFAULT_CMP0025=NEW"
+ ];
+
+ dontUseCmakeConfigure = true;
+
+ preBuild = ''
+ export PYARROW_PARALLEL=$NIX_BUILD_CORES
+ '';
+
+ preCheck = ''
+ rm pyarrow/tests/test_jvm.py
+ rm pyarrow/tests/test_hdfs.py
+ rm pyarrow/tests/test_cuda.py
+
+ # fails: "ArrowNotImplementedError: Unsupported numpy type 22"
+ substituteInPlace pyarrow/tests/test_feather.py --replace "test_timedelta_with_nulls" "_disabled"
+
+ # runs out of memory on @grahamcofborg linux box
+ substituteInPlace pyarrow/tests/test_feather.py --replace "test_large_dataframe" "_disabled"
+
+ # probably broken on python2
+ substituteInPlace pyarrow/tests/test_feather.py --replace "test_unicode_filename" "_disabled"
+
+ # fails "error: [Errno 2] No such file or directory: 'test'" because
+ # nix_run_setup invocation somehow manages to import deserialize_buffer.py
+ # when it is not intended to be imported at all
+ rm pyarrow/tests/deserialize_buffer.py
+ substituteInPlace pyarrow/tests/test_feather.py --replace "test_deserialize_buffer_in_different_process" "_disabled"
+
+ # Fails to bind a socket
+ # "PermissionError: [Errno 1] Operation not permitted"
+ substituteInPlace pyarrow/tests/test_ipc.py --replace "test_socket_" "_disabled"
+ '';
+
+ ARROW_HOME = _arrow-cpp;
+ PARQUET_HOME = _arrow-cpp;
+
+ checkPhase = ''
+ mv pyarrow/tests tests
+ rm -rf pyarrow
+ mkdir pyarrow
+ mv tests pyarrow/tests
+ pytest -v
+ '';
+
+ meta = with lib; {
+ description = "A cross-language development platform for in-memory data";
+ homepage = https://arrow.apache.org/;
+ license = lib.licenses.asl20;
+ platforms = platforms.unix;
+ maintainers = with lib.maintainers; [ veprbl ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyasn1-modules/default.nix b/nixpkgs/pkgs/development/python-modules/pyasn1-modules/default.nix
new file mode 100644
index 00000000000..446ec81bb4f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyasn1-modules/default.nix
@@ -0,0 +1,35 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pyasn1
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "pyasn1-modules";
+ version = "0.2.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ef721f68f7951fab9b0404d42590f479e30d9005daccb1699b0a51bb4177db96";
+ };
+
+ propagatedBuildInputs = [ pyasn1 ];
+
+ checkInputs = [
+ pytest
+ ];
+
+ # running tests through setup.py fails only for python2 for some reason:
+ # AttributeError: 'module' object has no attribute 'suitetests'
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A collection of ASN.1-based protocols modules";
+ homepage = https://pypi.python.org/pypi/pyasn1-modules;
+ license = licenses.bsd3;
+ platforms = platforms.unix; # same as pyasn1
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyasn1/default.nix b/nixpkgs/pkgs/development/python-modules/pyasn1/default.nix
new file mode 100644
index 00000000000..f44cfef8a29
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyasn1/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, buildPythonPackage, fetchPypi, }:
+
+buildPythonPackage rec {
+ pname = "pyasn1";
+ version = "0.4.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "da2420fe13a9452d8ae97a0e478adde1dee153b11ba832a95b223a2ba01c10f7";
+ };
+
+ meta = with stdenv.lib; {
+ description = "ASN.1 tools for Python";
+ homepage = http://pyasn1.sourceforge.net/;
+ license = "mBSD";
+ platforms = platforms.unix; # arbitrary choice
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyatmo/default.nix b/nixpkgs/pkgs/development/python-modules/pyatmo/default.nix
new file mode 100644
index 00000000000..13f8efbb581
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyatmo/default.nix
@@ -0,0 +1,24 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "pyatmo";
+ version = "1.10";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "13ca794416707b8cefcb7584bbfff65a4640fcc2510ad73e818fef94d424fca6";
+ };
+
+ # Upstream provides no unit tests.
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Simple API to access Netatmo weather station data";
+ license = licenses.mit;
+ homepage = https://github.com/jabesq/netatmo-api-python;
+ maintainers = with maintainers; [ delroth ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyatspi/default.nix b/nixpkgs/pkgs/development/python-modules/pyatspi/default.nix
new file mode 100644
index 00000000000..693477d20c0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyatspi/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchurl, pkgconfig, buildPythonPackage, isPy3k, at-spi2-core, pygobject3, gnome3 }:
+
+buildPythonPackage rec {
+ pname = "pyatspi";
+ version = "2.32.1";
+ format = "other";
+
+ src = fetchurl {
+ url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+ sha256 = "1283cbwd2kacgdij96xk26721f6amyzdhy2py11kdj5cprdlm5c4";
+ };
+
+ nativeBuildInputs = [ pkgconfig ];
+
+ buildInputs = [
+ at-spi2-core
+ pygobject3
+ ];
+
+ disabled = !isPy3k;
+
+ passthru = {
+ updateScript = gnome3.updateScript {
+ packageName = pname;
+ attrPath = "python3.pkgs.${pname}";
+ };
+ };
+
+ meta = with stdenv.lib; {
+ description = "Python client bindings for D-Bus AT-SPI";
+ homepage = https://wiki.linuxfoundation.org/accessibility/d-bus;
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ jtojnar ];
+ platforms = with platforms; unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyatv/default.nix b/nixpkgs/pkgs/development/python-modules/pyatv/default.nix
new file mode 100644
index 00000000000..783a36dd2de
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyatv/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi, srptools, aiohttp, zeroconf
+, ed25519, cryptography, curve25519-donna, pytest, pytestrunner
+, netifaces, asynctest, virtualenv, toml, filelock, tox }:
+
+buildPythonPackage rec {
+ pname = "pyatv";
+ version = "0.3.12";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "135xvy1nn0x5knc7l05amfs837xkx2gcg3lpp69ya9kqs8j6brgp";
+ };
+
+ propagatedBuildInputs = [ srptools aiohttp zeroconf ed25519 cryptography curve25519-donna tox ];
+
+ checkInputs = [ pytest pytestrunner netifaces asynctest virtualenv toml filelock ];
+
+ meta = with stdenv.lib; {
+ description = "A python client library for the Apple TV";
+ homepage = https://github.com/postlund/pyatv;
+ license = licenses.mit;
+ maintainers = with maintainers; [ elseym ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyaudio/default.nix b/nixpkgs/pkgs/development/python-modules/pyaudio/default.nix
new file mode 100644
index 00000000000..62fec908a4d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyaudio/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPyPy
+, pkgs
+}:
+
+buildPythonPackage rec {
+ pname = "PyAudio";
+ version = "0.2.11";
+ disabled = isPyPy;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "93bfde30e0b64e63a46f2fd77e85c41fd51182a4a3413d9edfaf9ffaa26efb74";
+ };
+
+ buildInputs = [ pkgs.portaudio ];
+
+ meta = with stdenv.lib; {
+ description = "Python bindings for PortAudio";
+ homepage = https://people.csail.mit.edu/hubert/pyaudio/;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyavm/default.nix b/nixpkgs/pkgs/development/python-modules/pyavm/default.nix
new file mode 100644
index 00000000000..2279f792818
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyavm/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+, astropy
+, astropy-helpers
+, pillow
+}:
+
+buildPythonPackage rec {
+ pname = "pyavm";
+ version = "0.9.4";
+
+ src = fetchPypi {
+ pname = "PyAVM";
+ inherit version;
+ sha256 = "f298b864e5bc101ecbb0e46252e95e18a180ac28ba6ec362e63c12a7e914e386";
+ };
+
+ propagatedBuildInputs = [ astropy-helpers ];
+
+ checkInputs = [ pytest astropy pillow ];
+
+ checkPhase = "pytest";
+
+ # Disable automatic update of the astropy-helper module
+ postPatch = ''
+ substituteInPlace setup.cfg --replace "auto_use = True" "auto_use = False"
+ '';
+
+ meta = with lib; {
+ description = "Simple pure-python AVM meta-data handling";
+ homepage = http://astrofrog.github.io/pyavm/;
+ license = licenses.mit;
+ maintainers = [ maintainers.smaret ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyaxmlparser/default.nix b/nixpkgs/pkgs/development/python-modules/pyaxmlparser/default.nix
new file mode 100644
index 00000000000..1034c9d844d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyaxmlparser/default.nix
@@ -0,0 +1,35 @@
+{ buildPythonPackage, stdenv, lxml, click, fetchFromGitHub, pytest, isPy3k }:
+
+buildPythonPackage rec {
+ version = "0.3.15";
+ pname = "pyaxmlparser";
+
+ # the PyPI tarball doesn't ship tests.
+ src = fetchFromGitHub {
+ owner = "appknox";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "0p4x21rg8h7alrg2zk6rbgc3fj77fiyky4zzvziz2bp5jpx1pvzp";
+ };
+
+ disabled = !isPy3k;
+
+ postPatch = ''
+ substituteInPlace setup.py --replace "click==6.7" "click"
+ '';
+
+ propagatedBuildInputs = [ lxml click ];
+
+ checkInputs = [ pytest ];
+ checkPhase = ''
+ py.test tests/
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Python3 Parser for Android XML file and get Application Name without using Androguard";
+ homepage = https://github.com/appknox/pyaxmlparser;
+ # Files from Androguard are licensed ASL 2.0
+ license = with licenses; [ mit asl20 ];
+ maintainers = with maintainers; [ ma27 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pybase64/default.nix b/nixpkgs/pkgs/development/python-modules/pybase64/default.nix
new file mode 100644
index 00000000000..afc353d182c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pybase64/default.nix
@@ -0,0 +1,25 @@
+{ buildPythonPackage, stdenv, fetchPypi, six, pytest }:
+
+buildPythonPackage rec {
+ pname = "pybase64";
+ version = "0.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b26263fb6aff11b1e62965c3bac205c4ebe147f37c213191384acafea7f8ab50";
+ };
+
+ propagatedBuildInputs = [ six ];
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://pypi.python.org/pypi/pybase64;
+ description = "Fast Base64 encoding/decoding";
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ ma27 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pybfd/default.nix b/nixpkgs/pkgs/development/python-modules/pybfd/default.nix
new file mode 100644
index 00000000000..f9737b93583
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pybfd/default.nix
@@ -0,0 +1,28 @@
+{ lib, fetchFromGitHub, buildPythonPackage, isPyPy, isPy3k, libbfd, libopcodes }:
+
+buildPythonPackage {
+ pname = "pybfd";
+ version = "-0.1.1.2017-12-31";
+
+ disabled = isPyPy || isPy3k;
+
+ src = fetchFromGitHub {
+ owner = "orivej";
+ repo = "pybfd";
+ rev = "a10ada53f2a79de7f62f209567806ef1e91794c7";
+ sha256 = "0sxzhlqjyvvx1zr3qrkb57z6s3g6k3ksyn65fdm9lvl0k4dv2k9w";
+ };
+
+ LIBBFD_INCLUDE_DIR = "${libbfd.dev}/include";
+ LIBBFD_LIBRARY = "${libbfd}/lib/libbfd.so";
+ LIBOPCODES_INCLUDE_DIR = "${libopcodes.dev}/include";
+ LIBOPCODES_LIBRARY = "${libopcodes}/lib/libopcodes.so";
+
+ meta = {
+ homepage = https://github.com/Groundworkstech/pybfd;
+ description = "A Python interface to the GNU Binary File Descriptor (BFD) library";
+ license = lib.licenses.gpl2;
+ platforms = lib.platforms.linux;
+ maintainers = with lib.maintainers; [ orivej ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pybids/default.nix b/nixpkgs/pkgs/development/python-modules/pybids/default.nix
new file mode 100644
index 00000000000..8779ad36ca2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pybids/default.nix
@@ -0,0 +1,49 @@
+{ buildPythonPackage
+, lib
+, fetchPypi
+, isPy27
+, num2words
+, numpy
+, scipy
+, pandas
+, nibabel
+, patsy
+, bids-validator
+, sqlalchemy
+, pytest
+, pathlib
+}:
+
+buildPythonPackage rec {
+ version = "0.9.2";
+ pname = "pybids";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "16c0v800yklp043prbrx1357vx1mq5gddxz5zqlcnf4akhzcqrxs";
+ };
+
+ propagatedBuildInputs = [
+ num2words
+ numpy
+ scipy
+ pandas
+ nibabel
+ patsy
+ bids-validator
+ sqlalchemy
+ ];
+
+ checkInputs = [ pytest ] ++ lib.optionals isPy27 [ pathlib ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with lib; {
+ description = "Python tools for querying and manipulating BIDS datasets";
+ homepage = https://github.com/bids-standard/pybids;
+ license = licenses.mit;
+ maintainers = with maintainers; [ jonringer ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pybind11/default.nix b/nixpkgs/pkgs/development/python-modules/pybind11/default.nix
new file mode 100644
index 00000000000..37e55617023
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pybind11/default.nix
@@ -0,0 +1,58 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, fetchpatch
+, python
+, pytest
+, cmake
+, numpy ? null
+, eigen ? null
+, scipy ? null
+}:
+
+buildPythonPackage rec {
+ pname = "pybind11";
+ version = "2.3.0";
+
+ src = fetchFromGitHub {
+ owner = "pybind";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "11b6dniri8m05spfd2a19irz82shf4sdca73566bniggrf3zclnf";
+ };
+
+ patches = [
+ (fetchpatch {
+ url = https://github.com/pybind/pybind11/commit/44a40dd61e5178985cfb1150cf05e6bfcec73042.patch;
+ sha256 = "047nzyfsihswdva96hwchnp4gj2mlbiqvmkdnhxrfi9sji8x31ka";
+ })
+ (fetchpatch {
+ name = "pytest-4-excinfo-fix.patch";
+ url = https://github.com/pybind/pybind11/commit/9fd4712121fdbb6202a35be4c788525e6c8ab826.patch;
+ sha256 = "07jjv8jlbszvr2grpm5xqxjac7jb0y68lgb1jcbb93k9vyp1hr33";
+ })
+ ];
+
+ dontUseCmakeConfigure = true;
+
+ checkInputs = [ pytest cmake ]
+ ++ (lib.optional (numpy != null) numpy)
+ ++ (lib.optional (eigen != null) eigen)
+ ++ (lib.optional (scipy != null) scipy);
+ checkPhase = ''
+ cmake ${if eigen != null then "-DEIGEN3_INCLUDE_DIR=${eigen}/include/eigen3" else ""}
+ make -j $NIX_BUILD_CORES pytest
+ '';
+
+ meta = {
+ homepage = https://github.com/pybind/pybind11;
+ description = "Seamless operability between C++11 and Python";
+ longDescription = ''
+ Pybind11 is a lightweight header-only library that exposes
+ C++ types in Python and vice versa, mainly to create Python
+ bindings of existing C++ code.
+ '';
+ license = lib.licenses.bsd3;
+ maintainers = [ lib.maintainers.yuriaisaka ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pybindgen/default.nix b/nixpkgs/pkgs/development/python-modules/pybindgen/default.nix
new file mode 100644
index 00000000000..a322518979a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pybindgen/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchPypi, buildPythonPackage, isPy3k, setuptools_scm, pygccxml }:
+buildPythonPackage rec {
+ pname = "PyBindGen";
+ version = "0.20.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0l9pz4s7p82ddf9nq56y1fk84j5dbsff1r2xnfily0m7sahyvc8g";
+ };
+
+ buildInputs = [ setuptools_scm ];
+
+ checkInputs = [ pygccxml ];
+ doCheck = (!isPy3k); # Fails to import module 'cxxfilt' from pygccxml on Py3k
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/gjcarneiro/pybindgen;
+ description = "Python Bindings Generator";
+ license = licenses.lgpl2;
+ maintainers = with maintainers; [ teto ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyblake2/default.nix b/nixpkgs/pkgs/development/python-modules/pyblake2/default.nix
new file mode 100644
index 00000000000..e106ee3f3f1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyblake2/default.nix
@@ -0,0 +1,23 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "pyblake2";
+ version = "1.1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5ccc7eb02edb82fafb8adbb90746af71460fbc29aa0f822526fc976dff83e93f";
+ };
+
+ # requires setting up sphinx doctest
+ doCheck = false;
+
+ meta = {
+ description = "BLAKE2 hash function extension module";
+ license = lib.licenses.publicDomain;
+ homepage = https://github.com/dchest/pyblake2;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/pyblock/default.nix b/nixpkgs/pkgs/development/python-modules/pyblock/default.nix
new file mode 100644
index 00000000000..4dcc3434025
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyblock/default.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, python
+, pkgs
+, isPy3k
+}:
+
+stdenv.mkDerivation rec {
+ pname = "pyblock";
+ version = "0.53";
+ md5_path = "f6d33a8362dee358517d0a9e2ebdd044";
+
+ src = pkgs.fetchurl {
+ url = "https://src.fedoraproject.org/repo/pkgs/python-pyblock/"
+ + "${pname}-${version}.tar.bz2/${md5_path}/${pname}-${version}.tar.bz2";
+ sha256 = "f6cef88969300a6564498557eeea1d8da58acceae238077852ff261a2cb1d815";
+ };
+
+ postPatch = ''
+ sed -i -e 's|/usr/include/python|${python}/include/python|' \
+ -e 's/-Werror *//' -e 's|/usr/|'"$out"'/|' Makefile
+ '';
+
+ buildInputs = [ python pkgs.lvm2 pkgs.dmraid ];
+
+ makeFlags = [
+ "USESELINUX=0"
+ "SITELIB=$(out)/${python.sitePackages}"
+ ];
+
+ meta = with stdenv.lib; {
+ homepage = https://www.centos.org/docs/5/html/5.4/Technical_Notes/python-pyblock.html;
+ description = "Interface for working with block devices";
+ license = licenses.gpl2Plus;
+ broken = isPy3k; # doesn't build on python 3, 2018-04-11
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyblosxom/default.nix b/nixpkgs/pkgs/development/python-modules/pyblosxom/default.nix
new file mode 100644
index 00000000000..dfb3e94ba27
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyblosxom/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, 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 stdenv.lib; {
+ homepage = "http://pyblosxom.github.io";
+ description = "File-based blogging engine";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pybluez/default.nix b/nixpkgs/pkgs/development/python-modules/pybluez/default.nix
new file mode 100644
index 00000000000..47c70758e4c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pybluez/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, pkgs
+}:
+
+buildPythonPackage rec {
+ version = "unstable-20160819";
+ pname = "pybluez";
+
+ propagatedBuildInputs = [ pkgs.bluez ];
+
+ src = fetchFromGitHub {
+ owner = "karulis";
+ repo = pname;
+ rev = "a0b226a61b166e170d48539778525b31e47a4731";
+ sha256 = "104dm5ngfhqisv1aszdlr3szcav2g3bhsgzmg4qfs09b3i5zj047";
+ };
+
+ # the tests do not pass
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Bluetooth Python extension module";
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ leenaars ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pybotvac/default.nix b/nixpkgs/pkgs/development/python-modules/pybotvac/default.nix
new file mode 100644
index 00000000000..180b7c8d18f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pybotvac/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi, requests }:
+
+buildPythonPackage rec {
+ pname = "pybotvac";
+ version = "0.0.13";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f6f147694ee5cbab1dea494454c11bd254e1c214d96d057cba27894a87210f1b";
+ };
+
+ propagatedBuildInputs = [ requests ];
+
+ meta = with stdenv.lib; {
+ description = "Python package for controlling Neato pybotvac Connected vacuum robot";
+ homepage = https://github.com/stianaske/pybotvac;
+ license = licenses.mit;
+ maintainers = with maintainers; [ elseym ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pybrowserid/default.nix b/nixpkgs/pkgs/development/python-modules/pybrowserid/default.nix
new file mode 100644
index 00000000000..946fb1a054f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pybrowserid/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, requests, mock }:
+
+buildPythonPackage rec {
+ pname = "PyBrowserID";
+ version = "0.14.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1qvi79kfb8x9kxkm5lw2mp42hm82cpps1xknmsb5ghkwx1lpc8kc";
+ };
+
+ propagatedBuildInputs = [ requests ];
+
+ checkInputs = [ mock ];
+
+ meta = with stdenv.lib; {
+ description = "Python library for the BrowserID Protocol";
+ homepage = https://github.com/mozilla/PyBrowserID;
+ license = licenses.mpl20;
+ maintainers = with maintainers; [ worldofpeace ];
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/pybtex-docutils/default.nix b/nixpkgs/pkgs/development/python-modules/pybtex-docutils/default.nix
new file mode 100644
index 00000000000..45d907df223
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pybtex-docutils/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi, docutils, pybtex, six }:
+
+buildPythonPackage rec {
+ version = "0.2.1";
+ pname = "pybtex-docutils";
+
+ doCheck = false;
+ buildInputs = [ docutils pybtex six ];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0dqk4lplij7rbqqi4dbpw3wzr4wj08ysswvdibls6s0x3ij7bc74";
+ };
+
+ meta = {
+ description = "A docutils backend for pybtex";
+ homepage = "https://github.com/mcmtroffaes/pybtex-docutils";
+ license = stdenv.lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pybtex/default.nix b/nixpkgs/pkgs/development/python-modules/pybtex/default.nix
new file mode 100644
index 00000000000..dd258f42718
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pybtex/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi, latexcodec, pyyaml }:
+
+buildPythonPackage rec {
+ version = "0.22.2";
+ pname = "pybtex";
+
+ doCheck = false;
+ propagatedBuildInputs = [ latexcodec pyyaml ];
+
+ src = fetchPypi {
+ inherit version pname;
+ sha256 = "00816e5f8570609d8ce3360cd23916bd3e50428a3508127578fdb4dc2b731c1c";
+ };
+
+ meta = {
+ homepage = "https://pybtex.org/";
+ description = "A BibTeX-compatible bibliography processor written in Python";
+ license = stdenv.lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pybullet/default.nix b/nixpkgs/pkgs/development/python-modules/pybullet/default.nix
new file mode 100644
index 00000000000..5a1d8d370c1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pybullet/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, libGLU_combined
+, xorg
+}:
+
+buildPythonPackage rec {
+ pname = "pybullet";
+ version = "2.4.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "bcb5aaca2b8adf94a04fd5206eea113ddc1993c9f13ab39f4a37e98f92b6d7db";
+ };
+
+ buildInputs = [
+ libGLU_combined
+ xorg.libX11
+ ];
+
+ patches = [
+ # make sure X11 and OpenGL can be found at runtime
+ ./static-libs.patch
+ ];
+
+ meta = with lib; {
+ description = "Open-source software for robot simulation, integrated with OpenAI Gym";
+ homepage = https://pybullet.org/;
+ license = licenses.zlib;
+ maintainers = with maintainers; [ timokau ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pybullet/static-libs.patch b/nixpkgs/pkgs/development/python-modules/pybullet/static-libs.patch
new file mode 100644
index 00000000000..08a68b81486
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pybullet/static-libs.patch
@@ -0,0 +1,13 @@
+diff --git a/setup.py b/setup.py
+index 98efabdbf..e69e79084 100644
+--- a/setup.py
++++ b/setup.py
+@@ -563,6 +563,8 @@ print("-----")
+
+ extensions = []
+
++libraries += [ "X11", "GL" ] # statically link x11 and opengl
++
+ pybullet_ext = Extension("pybullet",
+ sources = sources,
+ libraries = libraries,
diff --git a/nixpkgs/pkgs/development/python-modules/pycairo/default.nix b/nixpkgs/pkgs/development/python-modules/pycairo/default.nix
new file mode 100644
index 00000000000..ca6f7284715
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pycairo/default.nix
@@ -0,0 +1,39 @@
+{ lib, fetchFromGitHub, meson, ninja, buildPythonPackage, pytest, pkgconfig, cairo, xlibsWrapper, isPy33, isPy3k }:
+
+buildPythonPackage rec {
+ pname = "pycairo";
+ version = "1.18.1";
+
+ format = "other";
+
+ disabled = isPy33;
+
+ src = fetchFromGitHub {
+ owner = "pygobject";
+ repo = "pycairo";
+ rev = "v${version}";
+ sha256 = "0f4l7d1ibkk8xdspyv5zx8fah9z3x775bd91zirnp37vlgqds7xj";
+ };
+
+ nativeBuildInputs = [
+ meson
+ ninja
+ pkgconfig
+ ];
+
+ buildInputs = [
+ cairo
+ xlibsWrapper
+ ];
+
+ checkInputs = [ pytest ];
+
+ mesonFlags = [ "-Dpython=${if isPy3k then "python3" else "python"}" ];
+
+ meta = with lib; {
+ description = "Python 2/3 bindings for cairo";
+ homepage = https://pycairo.readthedocs.io/;
+ license = with licenses; [ lgpl2 mpl11 ];
+ platforms = lib.platforms.linux ++ lib.platforms.darwin;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pycallgraph/default.nix b/nixpkgs/pkgs/development/python-modules/pycallgraph/default.nix
new file mode 100644
index 00000000000..9a6a3f4be2e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pycallgraph/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, 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 stdenv.lib; {
+ homepage = http://pycallgraph.slowchop.com;
+ description = "Call graph visualizations for Python applications";
+ maintainers = with maintainers; [ auntie ];
+ license = licenses.gpl2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pycangjie/default.nix b/nixpkgs/pkgs/development/python-modules/pycangjie/default.nix
new file mode 100644
index 00000000000..b3e31a9bc78
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pycangjie/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchurl, bash, autoconf, automake, libtool, pkgconfig, libcangjie
+, sqlite, buildPythonPackage, cython
+}:
+
+let
+ rev = "361bb413203fd43bab624d98edf6f7d20ce6bfd3";
+in buildPythonPackage {
+ pname = "pycangjie";
+ version = "1.3_rev_${rev}";
+ format = "other";
+
+ src = fetchurl {
+ url = "https://github.com/Cangjians/pycangjie/archive/${rev}.tar.gz";
+ sha256 = "12yi09nyffmn4va7lzk4irw349qzlbxgsnb89dh15cnw0xmrin05";
+ };
+
+ nativeBuildInputs = [ pkgconfig libtool autoconf automake cython ];
+ buildInputs = [ libcangjie sqlite ];
+
+ preConfigure = ''
+ find . -name '*.sh' -exec sed -e 's@#!/bin/bash@${bash}/bin/bash@' -i '{}' ';'
+ sed -i 's@/usr@${libcangjie}@' tests/__init__.py
+ '';
+
+ configureScript = "./autogen.sh";
+
+ doCheck = true;
+
+ meta = with stdenv.lib; {
+ description = "Python wrapper to libcangjie";
+ homepage = http://cangjians.github.io/projects/pycangjie/;
+ license = licenses.lgpl3Plus;
+ maintainers = [ maintainers.linquize ];
+ platforms = platforms.all;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pycapnp/default.nix b/nixpkgs/pkgs/development/python-modules/pycapnp/default.nix
new file mode 100644
index 00000000000..629fdd0114d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pycapnp/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, capnproto
+, cython
+, isPyPy
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "pycapnp";
+ version = "0.6.4";
+ disabled = isPyPy || isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "44e14a5ace399cf1753acb8bbce558b8c895c48fd2102d266c34eaff286824cf";
+ };
+
+ buildInputs = [ capnproto cython ];
+
+ # import setuptools as soon as possible, to minimize monkeypatching mayhem.
+ postConfigure = ''
+ sed -i '3iimport setuptools' setup.py
+ '';
+
+ meta = with stdenv.lib; {
+ maintainers = with maintainers; [ cstrahan ];
+ license = licenses.bsd2;
+ homepage = "http://jparyani.github.io/pycapnp/index.html";
+ broken = true; # 2018-04-11
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pycaption/default.nix b/nixpkgs/pkgs/development/python-modules/pycaption/default.nix
new file mode 100644
index 00000000000..a9864a0f095
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pycaption/default.nix
@@ -0,0 +1,41 @@
+{ lib, fetchpatch
+, buildPythonPackage, fetchPypi, isPy3k
+, beautifulsoup4, lxml, cssutils, future, enum34, six
+}:
+
+buildPythonPackage rec {
+ pname = "pycaption";
+ version = "1.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0f2hx9ky65c4niws3x5yx59yi8mqqrw9b2cghd220g4hj9yl800h";
+ };
+
+ disabled = !isPy3k;
+
+ prePatch = ''
+ substituteInPlace setup.py \
+ --replace 'beautifulsoup4>=4.2.1,<4.5.0' \
+ 'beautifulsoup4>=4.2.1,<5'
+ '';
+
+ # don't require enum34 on python >= 3.4
+ patches = [
+ (fetchpatch {
+ url = "https://github.com/pbs/pycaption/pull/161.patch";
+ sha256 = "0p58awpsqx1qc3x9zfl1gd85h1nk7204lzn4kglsgh1bka0j237j";
+ })
+ ];
+
+ propagatedBuildInputs = [ beautifulsoup4 lxml cssutils future enum34 six ];
+
+ # Tests not included in pypi (?)
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Closed caption converter";
+ homepage = https://github.com/pbs/pycaption;
+ license = with licenses; [ asl20 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pycarddav/default.nix b/nixpkgs/pkgs/development/python-modules/pycarddav/default.nix
new file mode 100644
index 00000000000..c5c6182e4e0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pycarddav/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, 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 stdenv.lib; {
+ description = "Command-line interface carddav client";
+ homepage = http://lostpackets.de/pycarddav;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pycares/default.nix b/nixpkgs/pkgs/development/python-modules/pycares/default.nix
new file mode 100644
index 00000000000..f68a10d6186
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pycares/default.nix
@@ -0,0 +1,35 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+, c-ares
+, cffi
+}:
+
+buildPythonPackage rec {
+ pname = "pycares";
+ version = "3.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b253f5dcaa0ac7076b79388a3ac80dd8f3bd979108f813baade40d3a9b8bf0bd";
+ };
+
+ buildInputs = [ c-ares ];
+
+ propagatedBuildInputs = [ cffi ];
+
+ checkPhase = ''
+ ${python.interpreter} tests/tests.py
+ '';
+
+ # requires network access
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/saghul/pycares;
+ description = "Interface for c-ares";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pycassa/default.nix b/nixpkgs/pkgs/development/python-modules/pycassa/default.nix
new file mode 100644
index 00000000000..d5b6805c2bb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pycassa/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, 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 = {
+ description = "A python client library for Apache Cassandra";
+ homepage = https://github.com/pycassa/pycassa;
+ license = stdenv.lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pycategories/default.nix b/nixpkgs/pkgs/development/python-modules/pycategories/default.nix
new file mode 100644
index 00000000000..55f30f9e55a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pycategories/default.nix
@@ -0,0 +1,35 @@
+{ buildPythonPackage
+, callPackage
+, pytestcov
+, fetchPypi
+, lib
+, pytest
+, pythonOlder
+, pytestrunner
+}:
+
+buildPythonPackage rec {
+ pname = "pycategories";
+ version = "1.2.0";
+ disabled = pythonOlder "3.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "bd70ecb5e94e7659e564ea153f0c7673291dc37c526c246800fc08d6c5378099";
+ };
+
+ nativeBuildInputs = [ pytestrunner ];
+
+ # Is private because the author states it's unmaintained
+ # and shouldn't be used in production code
+ propagatedBuildInputs = [ (callPackage ./infix.nix { }) ];
+
+ checkInputs = [ pytest pytestcov ];
+
+ meta = with lib; {
+ homepage = "https://gitlab.com/danielhones/pycategories";
+ description = "Implementation of some concepts from category theory";
+ license = licenses.mit;
+ maintainers = with maintainers; [ dmvianna ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pycategories/infix.nix b/nixpkgs/pkgs/development/python-modules/pycategories/infix.nix
new file mode 100644
index 00000000000..f3b4d254818
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pycategories/infix.nix
@@ -0,0 +1,23 @@
+{ buildPythonPackage
+, lib
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "infix";
+ version = "1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a1bfdcf875bc072f41e426d0673f2e3017750743bb90cc725fffb292eb09648c";
+ };
+
+ # No tests
+ doCheck = false;
+
+ meta = {
+ homepage = "https://github.com/borntyping/python-infix";
+ description = "A decorator that allows functions to be used as infix functions";
+ license = lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pycdio/default.nix b/nixpkgs/pkgs/development/python-modules/pycdio/default.nix
new file mode 100644
index 00000000000..4a5577d7e0b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pycdio/default.nix
@@ -0,0 +1,44 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, setuptools
+, nose
+, pkgs
+, isPy27
+}:
+
+buildPythonPackage rec {
+ pname = "pycdio";
+ version = "2.0.0";
+ disabled = !isPy27;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1a1h0lmfl56a2a9xqhacnjclv81nv3906vdylalybxrk4bhrm3hj";
+ };
+
+ prePatch = "sed -i -e '/DRIVER_BSDI/d' pycdio.py";
+
+ preConfigure = ''
+ patchShebangs .
+ '';
+
+ nativeBuildInputs = [ nose pkgs.pkgconfig pkgs.swig ];
+ buildInputs = [ setuptools pkgs.libcdio ]
+ ++ stdenv.lib.optional stdenv.isDarwin pkgs.libiconv;
+
+ # Run tests using nosetests but first need to install the binaries
+ # to the root source directory where they can be found.
+ checkPhase = ''
+ ./setup.py install_lib -d .
+ nosetests
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://www.gnu.org/software/libcdio/;
+ description = "Wrapper around libcdio (CD Input and Control library)";
+ maintainers = with maintainers; [ rycee ];
+ license = licenses.gpl3Plus;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pychart/default.nix b/nixpkgs/pkgs/development/python-modules/pychart/default.nix
new file mode 100644
index 00000000000..259c87347d7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pychart/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy27 }:
+
+buildPythonPackage rec {
+ pname = "pychart";
+ version = "1.39";
+
+ disabled = ! isPy27;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "882650928776a7ca72e67054a9e0ac98f78645f279c0cfb5910db28f03f07c2e";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Library for creating high quality encapsulated Postscript, PDF, PNG, or SVG charts";
+ homepage = https://pypi.python.org/pypi/PyChart;
+ license = licenses.gpl2;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pychef/default.nix b/nixpkgs/pkgs/development/python-modules/pychef/default.nix
new file mode 100644
index 00000000000..51ce6241bb9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pychef/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+, requests
+, mock
+, unittest2
+}:
+
+buildPythonPackage rec {
+ pname = "PyChef";
+ version = "0.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0zdz8lw545cd3a34cpib7mdwnad83gr2mrrxyj3v74h4zhwabhmg";
+ };
+
+ propagatedBuildInputs = [ six requests mock unittest2 ];
+
+ # FIXME
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/coderanger/pychef;
+ description = "Python implementation of a Chef API client";
+ license = licenses.bsd0;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pychromecast/default.nix b/nixpkgs/pkgs/development/python-modules/pychromecast/default.nix
new file mode 100644
index 00000000000..ead5a24bbdb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pychromecast/default.nix
@@ -0,0 +1,23 @@
+{ lib, fetchPypi, buildPythonPackage, requests, zeroconf, protobuf, casttube, isPy3k }:
+
+buildPythonPackage rec {
+ pname = "PyChromecast";
+ version = "3.2.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1fhh3djb6chs23j46hwzm1rd6hypkl517vjmmg44rxnslkcl7dhb";
+ };
+
+ disabled = !isPy3k;
+
+ propagatedBuildInputs = [ requests zeroconf protobuf casttube ];
+
+ meta = with lib; {
+ description = "Library for Python 3.4+ to communicate with the Google Chromecast";
+ homepage = https://github.com/balloob/pychromecast;
+ license = licenses.mit;
+ maintainers = with maintainers; [ abbradar ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pycodestyle/default.nix b/nixpkgs/pkgs/development/python-modules/pycodestyle/default.nix
new file mode 100644
index 00000000000..286f42e2f30
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pycodestyle/default.nix
@@ -0,0 +1,18 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "pycodestyle";
+ version = "2.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "e40a936c9a450ad81df37f549d676d127b1b66000a6c500caa2b085bc0ca976c";
+ };
+
+ meta = with lib; {
+ description = "Python style guide checker (formerly called pep8)";
+ homepage = https://pycodestyle.readthedocs.io;
+ license = licenses.mit;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pycollada/default.nix b/nixpkgs/pkgs/development/python-modules/pycollada/default.nix
new file mode 100644
index 00000000000..23ed4917cc5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pycollada/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchPypi, buildPythonPackage, numpy, dateutil }:
+
+buildPythonPackage rec {
+ pname = "pycollada";
+ version = "0.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "fcd6f38fd981e350f9ec754d9671834017accd600e967d6d299a6cfdae5ba4f4";
+ };
+
+ propagatedBuildInputs = [ numpy dateutil ];
+
+ # Some tests fail because they refer to test data files that don't exist
+ # (upstream packaging issue)
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Python library for reading and writing collada documents";
+ homepage = http://pycollada.github.io/;
+ license = "BSD"; # they don't specify which BSD variant
+ platforms = with platforms; linux ++ darwin;
+ maintainers = with maintainers; [ bjornfor ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pycontracts/default.nix b/nixpkgs/pkgs/development/python-modules/pycontracts/default.nix
new file mode 100644
index 00000000000..7594c7c1e57
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pycontracts/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, nose, pyparsing, decorator, six, future }:
+
+buildPythonPackage rec {
+ pname = "PyContracts";
+ version = "1.8.12";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "e76adbd832deec28b2045a6094c5bb779a0b2cb1105a23b3efafe723e2c9937a";
+ };
+
+ buildInputs = [ nose ];
+ propagatedBuildInputs = [ pyparsing decorator six future ];
+
+ meta = with stdenv.lib; {
+ description = "Allows to declare constraints on function parameters and return values";
+ homepage = https://pypi.python.org/pypi/PyContracts;
+ license = licenses.lgpl2;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pycosat/default.nix b/nixpkgs/pkgs/development/python-modules/pycosat/default.nix
new file mode 100644
index 00000000000..ad49e38d065
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pycosat/default.nix
@@ -0,0 +1,21 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "pycosat";
+ version = "0.6.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "4c99874946a7e939bb941bbb019dd2c20e6068e3107c91366e7779c69d70e0ed";
+ };
+
+ meta = {
+ description = "Bindings to picosat SAT solver";
+ homepage = https://github.com/ContinuumIO/pycosat;
+ license = lib.licenses.mit;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/pycountry/default.nix b/nixpkgs/pkgs/development/python-modules/pycountry/default.nix
new file mode 100644
index 00000000000..99ba6845fa0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pycountry/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+,
+}:
+
+buildPythonPackage rec {
+ pname = "pycountry";
+ version = "19.7.15";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "15lhv18za0zv36laksr86rszjhp0slmqzcylm6ds9vpd7gyqprb8";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = https://bitbucket.org/flyingcircus/pycountry;
+ description = "ISO country, subdivision, language, currency and script definitions and their translations";
+ license = licenses.lgpl2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pycparser/default.nix b/nixpkgs/pkgs/development/python-modules/pycparser/default.nix
new file mode 100644
index 00000000000..4845c625652
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pycparser/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi, python }:
+
+buildPythonPackage rec {
+ pname = "pycparser";
+ version = "2.19";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a988718abfad80b6b157acce7bf130a30876d27603738ac39f140993246b25b3";
+ };
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover -s tests
+ '';
+
+ meta = with stdenv.lib; {
+ description = "C parser in Python";
+ homepage = https://github.com/eliben/pycparser;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ domenkozar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pycrc/default.nix b/nixpkgs/pkgs/development/python-modules/pycrc/default.nix
new file mode 100644
index 00000000000..e9ea8646b41
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pycrc/default.nix
@@ -0,0 +1,18 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "PyCRC";
+ version = "1.21";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d3b0e788b501f48ae2ff6eeb34652343c9095e4356a65df217ed29b51e4045b6";
+ };
+
+ meta = with lib; {
+ homepage = https://github.com/cristianav/PyCRC;
+ description = "Python libraries for CRC calculations (it supports CRC-16, CRC-32, CRC-CCITT, etc)";
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ guibou ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pycrypto/default.nix b/nixpkgs/pkgs/development/python-modules/pycrypto/default.nix
new file mode 100644
index 00000000000..e7858888d36
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pycrypto/default.nix
@@ -0,0 +1,28 @@
+{ buildPythonPackage, pycryptodome }:
+
+# This is a dummy package providing the drop-in replacement pycryptodome.
+# https://github.com/NixOS/nixpkgs/issues/21671
+
+buildPythonPackage rec {
+ version = pycryptodome.version;
+ pname = "pycrypto";
+
+ # Cannot build wheel otherwise (zip 1980 issue)
+ SOURCE_DATE_EPOCH=315532800;
+
+ # We need to have a dist-info folder, so let's create one with setuptools
+ unpackPhase = ''
+ echo "from setuptools import setup; setup(name='${pname}', version='${version}', install_requires=['pycryptodome'])" > setup.py
+ '';
+
+ propagatedBuildInputs = [ pycryptodome ];
+
+ # Our dummy has no tests
+ doCheck = false;
+
+ meta = {
+ homepage = http://www.pycrypto.org/;
+ description = "Python Cryptography Toolkit";
+ platforms = pycryptodome.meta.platforms;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pycryptodome/default.nix b/nixpkgs/pkgs/development/python-modules/pycryptodome/default.nix
new file mode 100644
index 00000000000..e4b66b907ca
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pycryptodome/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, fetchPypi, buildPythonPackage }:
+
+buildPythonPackage rec {
+ version = "3.7.3";
+ pname = "pycryptodome";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1a222250e43f3c659b4ebd5df3e11c2f112aab6aef58e38af55ef5678b9f0636";
+ };
+
+ meta = {
+ homepage = https://www.pycryptodome.org/;
+ description = "Python Cryptography Toolkit";
+ platforms = stdenv.lib.platforms.unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pycryptodomex/default.nix b/nixpkgs/pkgs/development/python-modules/pycryptodomex/default.nix
new file mode 100644
index 00000000000..62613c74765
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pycryptodomex/default.nix
@@ -0,0 +1,17 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "pycryptodomex";
+ version = "3.7.3";
+
+ meta = {
+ description = "A self-contained cryptographic library for Python";
+ homepage = https://www.pycryptodome.org;
+ license = lib.licenses.bsd2;
+ };
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b70fe991564e178af02ccf89435a8f9e8d052707a7c4b95bf6027cb785da3175";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pycryptopp/default.nix b/nixpkgs/pkgs/development/python-modules/pycryptopp/default.nix
new file mode 100644
index 00000000000..8bb472d8fde
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pycryptopp/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, 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 = "08ad57a1a39b7ed23c173692281da0b8d49d98ad3dcc09f8cca6d901e142699f";
+ };
+
+ # 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 stdenv.lib; {
+ homepage = http://allmydata.org/trac/pycryptopp;
+ description = "Python wrappers for the Crypto++ library";
+ license = licenses.gpl2Plus;
+ platforms = platforms.linux;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyct/default.nix b/nixpkgs/pkgs/development/python-modules/pyct/default.nix
new file mode 100644
index 00000000000..fc61d689329
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyct/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, param
+, pyyaml
+, requests
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "pyct";
+ version = "0.4.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "df7b2d29f874cabdbc22e4f8cba2ceb895c48aa33da4e0fe679e89873e0a4c6e";
+ };
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [
+ param
+ pyyaml
+ requests
+ ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with lib; {
+ description = "Cli for python common tasks for users";
+ homepage = https://github.com/pyviz/pyct;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pycuda/compyte.nix b/nixpkgs/pkgs/development/python-modules/pycuda/compyte.nix
new file mode 100644
index 00000000000..cfa685c1ac9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pycuda/compyte.nix
@@ -0,0 +1,21 @@
+{ mkDerivation
+, fetchFromGitHub
+}:
+
+mkDerivation {
+ pname = "compyte";
+ version = "git-20150817";
+
+ src = fetchFromGitHub {
+ owner = "inducer";
+ repo = "compyte";
+ rev = "ac1c71d46428c14aa1bd1c09d7da19cd0298d5cc";
+ sha256 = "1980h017qi52b7fqwm75m481xs2napgdd3fbrzkfc29k085cbign";
+ };
+
+ installPhase = ''
+ mkdir -p $out
+ cp -r * $out
+ '';
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pycuda/default.nix b/nixpkgs/pkgs/development/python-modules/pycuda/default.nix
new file mode 100644
index 00000000000..5f58101a8b5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pycuda/default.nix
@@ -0,0 +1,70 @@
+{ buildPythonPackage
+, fetchPypi
+, fetchFromGitHub
+, Mako
+, boost
+, numpy
+, pytools
+, pytest
+, decorator
+, appdirs
+, six
+, cudatoolkit
+, python
+, mkDerivation
+, stdenv
+, isPy3k
+}:
+let
+ compyte = import ./compyte.nix {
+ inherit mkDerivation fetchFromGitHub;
+ };
+in
+buildPythonPackage rec {
+ pname = "pycuda";
+ version = "2018.1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "49d575fca3fd3c95467c3b0fb51967ad17d0c4cc18e078a6748309af4de36a8d";
+ };
+
+ preConfigure = ''
+ ${python.interpreter} configure.py --boost-inc-dir=${boost.dev}/include \
+ --boost-lib-dir=${boost}/lib \
+ --no-use-shipped-boost \
+ --boost-python-libname=boost_python${stdenv.lib.optionalString isPy3k "3"}
+ '';
+
+ postInstall = ''
+ ln -s ${compyte} $out/${python.sitePackages}/pycuda/compyte
+ '';
+
+ # Requires access to libcuda.so.1 which is provided by the driver
+ doCheck = false;
+
+ checkPhase = ''
+ py.test
+ '';
+
+ propagatedBuildInputs = [
+ numpy
+ pytools
+ pytest
+ decorator
+ appdirs
+ six
+ cudatoolkit
+ compyte
+ python
+ Mako
+ ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/inducer/pycuda/;
+ description = "CUDA integration for Python.";
+ license = licenses.mit;
+ maintainers = with maintainers; [ artuuge ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pycups/default.nix b/nixpkgs/pkgs/development/python-modules/pycups/default.nix
new file mode 100644
index 00000000000..28dff352e38
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pycups/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, lib, buildPythonPackage, fetchurl, cups, libiconv }:
+
+buildPythonPackage rec {
+ pname = "pycups";
+ version = "1.9.73";
+
+ src = fetchurl {
+ url = "http://cyberelk.net/tim/data/pycups/pycups-${version}.tar.bz2";
+ sha256 = "c381be011889ca6f728598578c89c8ac9f7ab1e95b614474df9f2fa831ae5335";
+ };
+
+ buildInputs = [ cups ] ++ lib.optional stdenv.isDarwin libiconv;
+
+ # Wants to connect to CUPS
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Python bindings for libcups";
+ homepage = http://cyberelk.net/tim/software/pycups/;
+ license = with licenses; [ gpl2Plus ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pycurl/default.nix b/nixpkgs/pkgs/development/python-modules/pycurl/default.nix
new file mode 100644
index 00000000000..066e849f0aa
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pycurl/default.nix
@@ -0,0 +1,56 @@
+{ buildPythonPackage
+, isPyPy
+, fetchPypi
+, curl
+, openssl
+, bottle
+, pytest
+, nose
+, flaky
+}:
+
+buildPythonPackage rec {
+ pname = "pycurl";
+ version = "7.43.0.3";
+ disabled = isPyPy; # https://github.com/pycurl/pycurl/issues/208
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "13nsvqhvnmnvfk75s8iynqsgszyv06cjp4drd3psi7zpbh63623g";
+ };
+
+ buildInputs = [
+ curl
+ openssl.out
+ ];
+
+ nativeBuildInputs = [
+ curl
+ ];
+
+ checkInputs = [
+ bottle
+ pytest
+ nose
+ flaky
+ ];
+
+ checkPhase = ''
+ pytest tests -k "not test_ssl_in_static_libs \
+ and not test_keyfunction \
+ and not test_keyfunction_bogus_return \
+ and not test_libcurl_ssl_gnutls \
+ and not test_libcurl_ssl_nss \
+ and not test_libcurl_ssl_openssl"
+ '';
+
+ preConfigure = ''
+ substituteInPlace setup.py --replace '--static-libs' '--libs'
+ export PYCURL_SSL_LIBRARY=openssl
+ '';
+
+ meta = {
+ homepage = http://pycurl.sourceforge.net/;
+ description = "Python wrapper for libcurl";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pycurl2/default.nix b/nixpkgs/pkgs/development/python-modules/pycurl2/default.nix
new file mode 100644
index 00000000000..478f4451cf7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pycurl2/default.nix
@@ -0,0 +1,34 @@
+{ lib, buildPythonPackage, fetchFromGitHub
+, isPy3k
+, simplejson
+, unittest2
+, nose
+, pkgs
+}:
+
+buildPythonPackage {
+ pname = "pycurl2";
+ version = "7.20.0";
+ disabled = isPy3k;
+
+ src = fetchFromGitHub {
+ owner = "Lispython";
+ repo = "pycurl";
+ rev = "0f00109950b883d680bd85dc6e8a9c731a7d0d13";
+ sha256 = "1qmw3cm93kxj94s71a8db9lwv2cxmr2wjv7kp1r8zildwdzhaw7j";
+ };
+
+ # error: (6, "Couldn't resolve host 'h.wrttn.me'")
+ doCheck = false;
+
+ nativeBuildInputs = [ pkgs.curl.dev ];
+ buildInputs = [ simplejson unittest2 nose ];
+
+ meta = with lib; {
+ homepage = https://pypi.python.org/pypi/pycurl2;
+ description = "A fork from original PycURL library that no maintained from 7.19.0";
+ license = licenses.mit;
+ platforms = platforms.linux;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pydantic/default.nix b/nixpkgs/pkgs/development/python-modules/pydantic/default.nix
new file mode 100644
index 00000000000..9b713827199
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pydantic/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, ujson
+, email_validator
+, typing-extensions
+, python
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "pydantic";
+ version = "0.31";
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0x9xc5hpyrlf05dc4bx9f7v51fahxcahkvh0ij8ibay15nwli53d";
+ };
+
+ propagatedBuildInputs = [
+ ujson
+ email_validator
+ typing-extensions
+ ];
+
+ checkPhase = ''
+ ${python.interpreter} -c """
+from datetime import datetime
+from typing import List
+from pydantic import BaseModel
+
+class User(BaseModel):
+ id: int
+ name = 'John Doe'
+ signup_ts: datetime = None
+ friends: List[int] = []
+
+external_data = {'id': '123', 'signup_ts': '2017-06-01 12:22', 'friends': [1, '2', b'3']}
+user = User(**external_data)
+assert user.id is "123"
+"""
+ '';
+
+ meta = with lib; {
+ homepage = "https://github.com/samuelcolvin/pydantic";
+ description = "Data validation and settings management using Python type hinting";
+ license = licenses.mit;
+ maintainers = with maintainers; [ wd15 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pydbus/default.nix b/nixpkgs/pkgs/development/python-modules/pydbus/default.nix
new file mode 100644
index 00000000000..27b2d237cfc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pydbus/default.nix
@@ -0,0 +1,20 @@
+{ lib, buildPythonPackage, fetchPypi, pygobject3 }:
+
+buildPythonPackage rec {
+ pname = "pydbus";
+ version = "0.6.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0b0gipvz7vcfa9ddmwq2jrx16d4apb0hdnl5q4i3h8jlzwp1c1s2";
+ };
+
+ propagatedBuildInputs = [ pygobject3 ];
+
+ meta = {
+ homepage = https://github.com/LEW21/pydbus;
+ description = "Pythonic DBus library";
+ license = lib.licenses.lgpl2Plus;
+ maintainers = with lib.maintainers; [ gnidorah ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pydenticon/default.nix b/nixpkgs/pkgs/development/python-modules/pydenticon/default.nix
new file mode 100644
index 00000000000..9b650181e8c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pydenticon/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pillow
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "pydenticon";
+ version = "0.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2ef363cdd6f4f0193ce62257486027e36884570f6140bbde51de72df321b77f1";
+ };
+
+ propagatedBuildInputs = [ pillow mock ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/azaghal/pydenticon;
+ description = "Library for generating identicons. Port of Sigil (https://github.com/cupcake/sigil) with enhancements";
+ license = licenses.bsd0;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pydispatcher/default.nix b/nixpkgs/pkgs/development/python-modules/pydispatcher/default.nix
new file mode 100644
index 00000000000..68772cab306
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pydispatcher/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+}:
+
+buildPythonPackage rec {
+ version = "2.0.5";
+ pname = "pydispatcher";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1bswbmhlbqdxlgbxlb6xrlm4k253sg8nvpl1whgsys8p3fg0cw2m";
+ };
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = http://pydispatcher.sourceforge.net/;
+ description = "Signal-registration and routing infrastructure for use in multiple contexts";
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pydns/default.nix b/nixpkgs/pkgs/development/python-modules/pydns/default.nix
new file mode 100644
index 00000000000..48bc3c3fa00
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pydns/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "pydns";
+ version = "2.3.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0qnv7i9824nb5h9psj0rwzjyprwgfiwh5s5raa9avbqazy5hv5pi";
+ };
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Python DNS library";
+ homepage = http://pydns.sourceforge.net/;
+ license = licenses.psfl;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pydocstyle/default.nix b/nixpkgs/pkgs/development/python-modules/pydocstyle/default.nix
new file mode 100644
index 00000000000..a2f2daa2fe9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pydocstyle/default.nix
@@ -0,0 +1,33 @@
+{ lib, buildPythonPackage, fetchFromGitHub, isPy3k, pythonOlder
+, snowballstemmer, six, configparser
+, pytest, pytestpep8, mock, pathlib }:
+
+buildPythonPackage rec {
+ pname = "pydocstyle";
+ version = "2.1.1";
+
+ # no tests on PyPI
+ # https://github.com/PyCQA/pydocstyle/issues/302
+ src = fetchFromGitHub {
+ owner = "PyCQA";
+ repo = pname;
+ rev = version;
+ sha256 = "1h0k8lpx14svc8dini62j0kqiam10pck5sdzvxa4xhsx7y689g5l";
+ };
+
+ propagatedBuildInputs = [ snowballstemmer six ] ++ lib.optional (!isPy3k) configparser;
+
+ checkInputs = [ pytest pytestpep8 mock ] ++ lib.optional (pythonOlder "3.4") pathlib;
+
+ checkPhase = ''
+ # test_integration.py installs packages via pip
+ py.test --pep8 --cache-clear -vv src/tests -k "not test_integration"
+ '';
+
+ meta = with lib; {
+ description = "Python docstring style checker";
+ homepage = https://github.com/PyCQA/pydocstyle/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ dzabraev ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pydocumentdb/default.nix b/nixpkgs/pkgs/development/python-modules/pydocumentdb/default.nix
new file mode 100644
index 00000000000..4413f9eef2e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pydocumentdb/default.nix
@@ -0,0 +1,28 @@
+{ buildPythonPackage
+, lib
+, fetchPypi
+, six
+, requests
+}:
+
+buildPythonPackage rec {
+ version = "2.3.3";
+ pname = "pydocumentdb";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1fcp3g62pc9hpa0r6vdjhaln4h0azywjqfzi8bd4414ja0mxmj3p";
+ };
+
+ propagatedBuildInputs = [ six requests ];
+
+ # requires an active Azure Cosmos service
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Azure Cosmos DB API";
+ homepage = https://github.com/Azure/azure-cosmos-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ jonringer ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pydot/default.nix b/nixpkgs/pkgs/development/python-modules/pydot/default.nix
new file mode 100644
index 00000000000..021043d9e9d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pydot/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, substituteAll
+, graphviz
+, python
+, chardet
+, pyparsing
+}:
+
+buildPythonPackage rec {
+ pname = "pydot";
+ version = "1.4.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d49c9d4dd1913beec2a997f831543c8cbd53e535b1a739e921642fe416235f01";
+ };
+
+ patches = [
+ (substituteAll {
+ src = ./hardcode-graphviz-path.patch;
+ inherit graphviz;
+ })
+ ];
+
+ 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"
+ '';
+
+ propagatedBuildInputs = [ pyparsing ];
+
+ checkInputs = [ chardet ];
+
+ checkPhase = ''
+ cd test
+ ${python.interpreter} pydot_unittest.py
+ '';
+
+ meta = {
+ homepage = https://github.com/erocarrera/pydot;
+ description = "Allows to easily create both directed and non directed graphs from Python";
+ license = lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pydot/hardcode-graphviz-path.patch b/nixpkgs/pkgs/development/python-modules/pydot/hardcode-graphviz-path.patch
new file mode 100644
index 00000000000..e862f1e7c2c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pydot/hardcode-graphviz-path.patch
@@ -0,0 +1,13 @@
+diff --git a/pydot.py b/pydot.py
+index 3c7da4d..582c5bc 100644
+--- a/pydot.py
++++ b/pydot.py
+@@ -124,7 +124,7 @@ def call_graphviz(program, arguments, working_dir, **kwargs):
+ 'LD_LIBRARY_PATH': os.environ.get('LD_LIBRARY_PATH', ''),
+ }
+
+- program_with_args = [program, ] + arguments
++ program_with_args = ['@graphviz@/bin/' + program, ] + arguments
+
+ process = subprocess.Popen(
+ program_with_args,
diff --git a/nixpkgs/pkgs/development/python-modules/pydot_ng/default.nix b/nixpkgs/pkgs/development/python-modules/pydot_ng/default.nix
new file mode 100644
index 00000000000..d48ddaccd58
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pydot_ng/default.nix
@@ -0,0 +1,36 @@
+{ lib, buildPythonPackage, fetchPypi, isPy27
+, graphviz
+, mock
+, pyparsing
+, pytest
+, unittest2
+}:
+
+buildPythonPackage rec {
+ pname = "pydot_ng";
+ version = "2.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8c8073b97aa7030c28118961e2c6c92f046e4cb57aeba7df87146f7baa6530c5";
+ };
+
+ propagatedBuildInputs = [ graphviz pyparsing ];
+
+ checkInputs = [
+ graphviz
+ mock
+ pytest
+ ] ++ lib.optionals isPy27 [ unittest2];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with lib; {
+ homepage = "https://pypi.python.org/pypi/pydot-ng";
+ description = "Python 3-compatible update of pydot, a Python interface to Graphviz's Dot";
+ license = licenses.mit;
+ maintainers = with maintainers; [ bcdarwin jonringer ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pydotplus/default.nix b/nixpkgs/pkgs/development/python-modules/pydotplus/default.nix
new file mode 100644
index 00000000000..03b594a131a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pydotplus/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pyparsing
+, graphviz
+}:
+
+buildPythonPackage rec {
+ pname = "pydotplus";
+ version = "2.0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1i05cnk3yh722fdyaq0asr7z9xf7v7ikbmnpxa8j6pdqx6g5xs4i";
+ };
+
+ propagatedBuildInputs = [
+ pyparsing
+ graphviz
+ ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/erocarrera/pydot;
+ description = "An improved version of the old pydot project that provides a Python Interface to Graphviz’s Dot language";
+ license = licenses.mit;
+ maintainers = with maintainers; [ ashgillman ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pydub/default.nix b/nixpkgs/pkgs/development/python-modules/pydub/default.nix
new file mode 100644
index 00000000000..669d798312b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pydub/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, scipy, ffmpeg-full }:
+
+buildPythonPackage rec {
+ pname = "pydub";
+ version = "0.23.1";
+ # pypi version doesn't include required data files for tests
+ src = fetchFromGitHub {
+ owner = "jiaaro";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "1v0bghy4j2nnkgf1r8rbz4s7war872asyy08pc0x1iy1qs275i7s";
+ };
+
+
+ # disable a test that fails on aarch64 due to rounding errors
+ postPatch = stdenv.lib.optionalString stdenv.isAarch64 ''
+ substituteInPlace test/test.py \
+ --replace "test_overlay_with_gain_change" "notest_overlay_with_gain_change"
+ '';
+
+ checkInputs = [ scipy ffmpeg-full ];
+
+ checkPhase = ''
+ python test/test.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Manipulate audio with a simple and easy high level interface.";
+ homepage = "http://pydub.com/";
+ license = licenses.mit;
+ platforms = platforms.all;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pydy/default.nix b/nixpkgs/pkgs/development/python-modules/pydy/default.nix
new file mode 100644
index 00000000000..8bdb2affc53
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pydy/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, nose
+, cython
+, numpy
+, scipy
+, sympy
+}:
+
+buildPythonPackage rec {
+ pname = "pydy";
+ version = "0.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1b487a62b55a8c8664009b09bf789254b2c942cd704a380bedb1057418c94fa2";
+ };
+
+ checkInputs = [
+ nose
+ cython
+ ];
+
+ propagatedBuildInputs = [
+ numpy
+ scipy
+ sympy
+ ];
+
+ checkPhase = ''
+ nosetests
+ '';
+
+ meta = with lib; {
+ description = "Python tool kit for multi-body dynamics";
+ homepage = http://pydy.org;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyechonest/default.nix b/nixpkgs/pkgs/development/python-modules/pyechonest/default.nix
new file mode 100644
index 00000000000..33e8d9c3fa9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyechonest/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k }:
+
+buildPythonPackage rec {
+ pname = "pyechonest";
+ version = "9.0.0";
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1da4b3b8b457232a7eb35b59a48390b3c208759b01d596acaa71e6a172b40495";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Tap into The Echo Nest's Musical Brain for the best music search, information, recommendations and remix tools on the web";
+ homepage = https://github.com/echonest/pyechonest;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyelftools/default.nix b/nixpkgs/pkgs/development/python-modules/pyelftools/default.nix
new file mode 100644
index 00000000000..1715749fa2d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyelftools/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "pyelftools";
+ version = "0.25";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "89c6da6f56280c37a5ff33468591ba9a124e17d71fe42de971818cbff46c1b24";
+ };
+
+ checkPhase = ''
+ ${python.interpreter} test/all_tests.py
+ '';
+
+ # Tests cannot pass against system-wide readelf
+ # https://github.com/eliben/pyelftools/issues/65
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A library for analyzing ELF files and DWARF debugging information";
+ homepage = https://github.com/eliben/pyelftools;
+ license = licenses.publicDomain;
+ maintainers = [ maintainers.igsha ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyemd/default.nix b/nixpkgs/pkgs/development/python-modules/pyemd/default.nix
new file mode 100644
index 00000000000..28c74487c96
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyemd/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi, numpy, cython }:
+
+buildPythonPackage rec {
+ pname = "pyemd";
+ version = "0.5.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "fc81c2116f8573e559dfbb8d73e03d9f73c22d0770559f406516984302e07e70";
+ };
+
+ propagatedBuildInputs = [ numpy ];
+ buildInputs = [ cython ];
+
+ meta = with stdenv.lib; {
+ description = "A Python wrapper for Ofir Pele and Michael Werman's implementation of the Earth Mover's Distance";
+ homepage = https://github.com/wmayner/pyemd;
+ license = licenses.mit;
+ maintainers = with maintainers; [ rvl ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyenchant/default.nix b/nixpkgs/pkgs/development/python-modules/pyenchant/default.nix
new file mode 100644
index 00000000000..8c240261463
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyenchant/default.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pkgs
+}:
+
+buildPythonPackage rec {
+ pname = "pyenchant";
+ version = "2.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "fc31cda72ace001da8fe5d42f11c26e514a91fa8c70468739216ddd8de64e2a0";
+ };
+
+ propagatedBuildInputs = [ pkgs.enchant1 ];
+
+ patchPhase = let
+ path_hack_script = "s|LoadLibrary(e_path)|LoadLibrary('${pkgs.enchant1}/lib/' + e_path)|";
+ in ''
+ sed -i "${path_hack_script}" enchant/_enchant.py
+
+ # They hardcode a bad path for Darwin in their library search code
+ substituteInPlace enchant/_enchant.py --replace '/opt/local/lib/' ""
+ '';
+
+ # dictionaries needed for tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "pyenchant: Python bindings for the Enchant spellchecker";
+ homepage = https://pythonhosted.org/pyenchant/;
+ license = licenses.lgpl21;
+ badPlatforms = [ "x86_64-darwin" ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyepsg/default.nix b/nixpkgs/pkgs/development/python-modules/pyepsg/default.nix
new file mode 100644
index 00000000000..4822e528dee
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyepsg/default.nix
@@ -0,0 +1,23 @@
+{ buildPythonPackage, lib, fetchPypi, requests }:
+
+buildPythonPackage rec {
+ pname = "pyepsg";
+ version = "0.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2d08fad1e7a8b47a90a4e43da485ba95705923425aefc4e2a3efa540dbd470d7";
+ };
+
+ propagatedBuildInputs = [ requests ];
+
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Simple Python interface to epsg.io";
+ license = licenses.lgpl3;
+ homepage = https://pyepsg.readthedocs.io/en/latest/;
+ maintainers = with maintainers; [ mredaelli ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyexcelerator/default.nix b/nixpkgs/pkgs/development/python-modules/pyexcelerator/default.nix
new file mode 100644
index 00000000000..2dfb5831f7f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyexcelerator/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, 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 stdenv.lib; {
+ description = "library for generating Excel 97/2000/XP/2003 and OpenOffice Calc compatible spreadsheets.";
+ homepage = "https://sourceforge.net/projects/pyexcelerator";
+ license = licenses.bsdOriginal;
+ maintainers = with maintainers; [ womfoo ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyexiv2/default.nix b/nixpkgs/pkgs/development/python-modules/pyexiv2/default.nix
new file mode 100644
index 00000000000..cca8b552de1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyexiv2/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, 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 = {
+ platforms = stdenv.lib.platforms.linux;
+ # Likely needs an older boost which does not have `boost_pythonXY` but `boost_python`.
+ broken = true; # 2018-06-23
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyext/default.nix b/nixpkgs/pkgs/development/python-modules/pyext/default.nix
new file mode 100644
index 00000000000..2e4c639465b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyext/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub }:
+
+buildPythonPackage {
+ pname = "pyext";
+ version = "0.8";
+
+ # Latest release not on Pypi or tagged since 2015
+ src = fetchFromGitHub {
+ owner = "kirbyfan64";
+ repo = "PyExt";
+ rev = "1e018b12752ceb279f11aee123ed773d63dcec7e";
+ sha256 = "16km897ng6lgjs39hv83xragdxh0mhyw6ds0qkm21cyci1k5m1vm";
+ };
+
+ # Has no test suite
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Simple Python extensions";
+ homepage = https://github.com/kirbyfan64/PyExt;
+ license = licenses.mit;
+ maintainers = with maintainers; [ edwtjo ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyezminc/default.nix b/nixpkgs/pkgs/development/python-modules/pyezminc/default.nix
new file mode 100644
index 00000000000..614a1555cbe
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyezminc/default.nix
@@ -0,0 +1,33 @@
+{ buildPythonPackage, isPy3k, fetchFromGitHub, stdenv,
+ netcdf, hdf5, libminc, ezminc,
+ cython, numpy, scipy
+}:
+
+buildPythonPackage rec {
+ pname = "pyezminc";
+ version = "1.2.01";
+
+ disabled = isPy3k;
+
+ src = fetchFromGitHub {
+ owner = "BIC-MNI";
+ repo = "pyezminc";
+ rev = "release-${version}";
+ sha256 = "13smvramacisbwj8qsl160dnvv6ynngn1jmqwhvy146nmadphyv1";
+ };
+
+ nativeBuildInputs = [ cython ];
+ buildInputs = [ netcdf hdf5 libminc ezminc ];
+ propagatedBuildInputs = [ numpy scipy ];
+
+ NIX_CFLAGS_COMPILE = "-fpermissive";
+
+ doCheck = false; # e.g., expects test data in /opt
+
+ meta = {
+ homepage = https://github.com/BIC-MNI/pyezminc;
+ description = "Python API for libminc using EZMINC";
+ license = stdenv.lib.licenses.gpl2;
+ maintainers = with stdenv.lib.maintainers; [ bcdarwin ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyfaidx/default.nix b/nixpkgs/pkgs/development/python-modules/pyfaidx/default.nix
new file mode 100644
index 00000000000..26c36e70d0c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyfaidx/default.nix
@@ -0,0 +1,24 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "pyfaidx";
+ version = "0.5.5.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1akc8hk8rlw7sv07bv1n2r471acvmxwc57gb69frjpcwggf2phls";
+ };
+
+ propagatedBuildInputs = [ six ];
+
+ meta = with lib; {
+ homepage = "https://github.com/mdshw5/pyfaidx";
+ description = "Python classes for indexing, retrieval, and in-place modification of FASTA files using a samtools compatible index";
+ license = licenses.bsd3;
+ maintainers = [ maintainers.jbedo ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyfakefs/default.nix b/nixpkgs/pkgs/development/python-modules/pyfakefs/default.nix
new file mode 100644
index 00000000000..7142b40ce0b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyfakefs/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, buildPythonPackage, fetchPypi, python, pytest, glibcLocales }:
+
+buildPythonPackage rec {
+ version = "3.5.8";
+ pname = "pyfakefs";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8cd2270d65d3316dd4dc6bb83242df2e0990d27605209bc16e8041bcc0956961";
+ };
+
+ postPatch = ''
+ # test doesn't work in sandbox
+ substituteInPlace pyfakefs/tests/fake_filesystem_test.py \
+ --replace "test_expand_root" "notest_expand_root"
+ substituteInPlace pyfakefs/tests/fake_os_test.py \
+ --replace "test_path_links_not_resolved" "notest_path_links_not_resolved" \
+ --replace "test_append_mode_tell_linux_windows" "notest_append_mode_tell_linux_windows"
+ substituteInPlace pyfakefs/tests/fake_filesystem_unittest_test.py \
+ --replace "test_copy_real_file" "notest_copy_real_file"
+ '' + (stdenv.lib.optionalString stdenv.isDarwin ''
+ # this test fails on darwin due to case-insensitive file system
+ substituteInPlace pyfakefs/tests/fake_os_test.py \
+ --replace "test_rename_dir_to_existing_dir" "notest_rename_dir_to_existing_dir"
+ '');
+
+ checkInputs = [ pytest glibcLocales ];
+
+ checkPhase = ''
+ export LC_ALL=en_US.UTF-8
+ ${python.interpreter} -m pyfakefs.tests.all_tests
+ ${python.interpreter} -m pyfakefs.tests.all_tests_without_extra_packages
+ ${python.interpreter} -m pytest pyfakefs/pytest_tests/pytest_plugin_test.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Fake file system that mocks the Python file system modules";
+ license = licenses.asl20;
+ homepage = http://pyfakefs.org/;
+ maintainers = with maintainers; [ gebner ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyfantom/default.nix b/nixpkgs/pkgs/development/python-modules/pyfantom/default.nix
new file mode 100644
index 00000000000..b9e15d376b5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyfantom/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchgit
+}:
+
+buildPythonPackage {
+ pname = "pyfantom";
+ version = "unstable-2013-12-18";
+
+ src = fetchgit {
+ url = "http://git.ni.fr.eu.org/pyfantom.git";
+ sha256 = "1m53n8bxslq5zmvcf7i1xzsgq5bdsf1z529br5ypmj5bg0s86j4q";
+ };
+
+ # No tests included
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = http://pyfantom.ni.fr.eu.org/;
+ description = "Wrapper for the LEGO Mindstorms Fantom Driver";
+ license = licenses.gpl2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyfftw/default.nix b/nixpkgs/pkgs/development/python-modules/pyfftw/default.nix
new file mode 100644
index 00000000000..bed1dffa5c7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyfftw/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, fftw, fftwFloat, fftwLongDouble, numpy, scipy, cython, dask }:
+
+buildPythonPackage rec {
+ version = "0.11.1";
+ pname = "pyFFTW";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "05ea28dede4c3aaaf5c66f56eb0f71849d0d50f5bc0f53ca0ffa69534af14926";
+ };
+
+ buildInputs = [ fftw fftwFloat fftwLongDouble];
+
+ propagatedBuildInputs = [ numpy scipy cython dask ];
+
+ # Tests cannot import pyfftw. pyfftw works fine though.
+ doCheck = false;
+
+ preConfigure = ''
+ export LDFLAGS="-L${fftw.out}/lib -L${fftwFloat.out}/lib -L${fftwLongDouble.out}/lib"
+ export CFLAGS="-I${fftw.dev}/include -I${fftwFloat.dev}/include -I${fftwLongDouble.dev}/include"
+ '';
+ #+ optionalString isDarwin ''
+ # export DYLD_LIBRARY_PATH="${pkgs.fftw.out}/lib"
+ #'';
+
+ meta = with stdenv.lib; {
+ description = "A pythonic wrapper around FFTW, the FFT library, presenting a unified interface for all the supported transforms";
+ homepage = http://hgomersall.github.com/pyFFTW/;
+ license = with licenses; [ bsd2 bsd3 ];
+ maintainers = with maintainers; [ fridh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyfiglet/default.nix b/nixpkgs/pkgs/development/python-modules/pyfiglet/default.nix
new file mode 100644
index 00000000000..d8256e9632a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyfiglet/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ version = "0.8.post1";
+ pname = "pyfiglet";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c6c2321755d09267b438ec7b936825a4910fec696292139e664ca8670e103639";
+ };
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "FIGlet in pure Python";
+ license = licenses.gpl2Plus;
+ maintainers = with maintainers; [ thoughtpolice ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyflakes/default.nix b/nixpkgs/pkgs/development/python-modules/pyflakes/default.nix
new file mode 100644
index 00000000000..036872e23e3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyflakes/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi, unittest2 }:
+
+buildPythonPackage rec {
+ pname = "pyflakes";
+ version = "2.1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d976835886f8c5b31d47970ed689944a0262b5f3afa00a5a7b4dc81e5449f8a2";
+ };
+
+ checkInputs = [ unittest2 ];
+
+ meta = with stdenv.lib; {
+ homepage = https://launchpad.net/pyflakes;
+ description = "A simple program which checks Python source files for errors";
+ license = licenses.mit;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyfma/default.nix b/nixpkgs/pkgs/development/python-modules/pyfma/default.nix
new file mode 100644
index 00000000000..d9aab0b8fae
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyfma/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pybind11
+, numpy
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "pyfma";
+ version = "0.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "79514717f8e632a0fb165e3d61222ed61202bea7b0e082f7b41c91e738f1fbc9";
+ };
+
+ buildInputs = [
+ pybind11
+ ];
+
+ checkInputs = [
+ numpy
+ pytest
+ ];
+
+ preBuild = ''
+ export HOME=$(mktemp -d)
+ '';
+
+ checkPhase = ''
+ pytest test
+ '';
+
+ meta = with lib; {
+ description = "Fused multiply-add for Python";
+ homepage = https://github.com/nschloe/pyfma;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyfribidi/default.nix b/nixpkgs/pkgs/development/python-modules/pyfribidi/default.nix
new file mode 100644
index 00000000000..a5caca40650
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyfribidi/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, isPyPy
+}:
+
+buildPythonPackage rec {
+ version = "0.11.0";
+ pname = "pyfribidi";
+ disabled = isPy3k || isPyPy;
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "6f7d83c09eae0cb98a40b85ba3dedc31af4dbff8fc4425f244c1e9f44392fded";
+ };
+
+ meta = with stdenv.lib; {
+ description = "A simple wrapper around fribidi";
+ homepage = https://github.com/pediapress/pyfribidi;
+ license = stdenv.lib.licenses.gpl2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyftdi/default.nix b/nixpkgs/pkgs/development/python-modules/pyftdi/default.nix
new file mode 100644
index 00000000000..8f80447b85d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyftdi/default.nix
@@ -0,0 +1,26 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, pyusb
+, pyserial
+}:
+
+buildPythonPackage rec {
+ pname = "pyftdi";
+ version = "0.29.4";
+ disabled = pythonOlder "3.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0jy0xbqvmhy0nq9v86759d96raa8p52yq8ik3ji5kjlx7cizq67v";
+ };
+
+ propagatedBuildInputs = [ pyusb pyserial ];
+
+ meta = {
+ description = "User-space driver for modern FTDI devices";
+ homepage = "http://github.com/eblot/pyftdi";
+ license = lib.licenses.lgpl2;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyftgl/default.nix b/nixpkgs/pkgs/development/python-modules/pyftgl/default.nix
new file mode 100644
index 00000000000..bf92f7360dd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyftgl/default.nix
@@ -0,0 +1,33 @@
+{ lib, buildPythonPackage, fetchFromGitHub
+, boost, freetype, ftgl, libGLU_combined
+, python
+}:
+
+let
+
+ pythonVersion = with lib.versions; "${major python.version}${minor python.version}";
+
+in
+
+buildPythonPackage rec {
+ pname = "pyftgl";
+ version = "0.4b";
+
+ src = fetchFromGitHub {
+ owner = "umlaeute";
+ repo = "${pname}-${version}";
+ rev = version;
+ sha256 = "12zcjv4cwwjihiaf74kslrdmmk4bs47h7006gyqfwdfchfjdgg4r";
+ };
+
+ postPatch = ''
+ sed -i "s,'boost_python','boost_python${pythonVersion}',g" setup.py
+ '';
+
+ buildInputs = [ boost freetype ftgl libGLU_combined ];
+
+ meta = with lib; {
+ description = "Python bindings for FTGL (FreeType for OpenGL)";
+ license = licenses.gpl2Plus;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyftpdlib/default.nix b/nixpkgs/pkgs/development/python-modules/pyftpdlib/default.nix
new file mode 100644
index 00000000000..9fc654292ab
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyftpdlib/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, mock
+, psutil
+, pyopenssl
+, pysendfile
+}:
+
+buildPythonPackage rec {
+ version = "1.5.5";
+ pname = "pyftpdlib";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1adf1c03d1508749e7c2f26dc9850ec0ef834318d725b7ae5ac91698f5c86752";
+ };
+
+ checkInputs = [ mock psutil ];
+ propagatedBuildInputs = [ pyopenssl pysendfile ];
+
+ # impure filesystem-related tests cause timeouts
+ # on Hydra: https://hydra.nixos.org/build/84374861
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/giampaolo/pyftpdlib/;
+ description = "Very fast asynchronous FTP server library";
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyfttt/default.nix b/nixpkgs/pkgs/development/python-modules/pyfttt/default.nix
new file mode 100644
index 00000000000..44d6679e47c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyfttt/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, requests }:
+
+buildPythonPackage rec {
+ pname = "pyfttt";
+ version = "0.3.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "10iq7c9c832ssl2xrvf62xf7znfvqzax6sq8ppsibq6wpb8dlnj5";
+ };
+
+ propagatedBuildInputs = [ requests ];
+
+ # tests need a server to run against
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Package for sending events to the IFTTT Webhooks Channel";
+ homepage = https://github.com/briandconnelly/pyfttt;
+ maintainers = with maintainers; [ peterhoeg ];
+ license = licenses.bsd2;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyfxa/default.nix b/nixpkgs/pkgs/development/python-modules/pyfxa/default.nix
new file mode 100644
index 00000000000..93a74114af1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyfxa/default.nix
@@ -0,0 +1,32 @@
+{ lib, buildPythonPackage, fetchPypi
+, requests, cryptography, pybrowserid, hawkauthlib, six
+, grequests, mock, responses, unittest2 }:
+
+buildPythonPackage rec {
+ pname = "PyFxA";
+ version = "0.6.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d511b6f43a9445587c609a138636d378de76661561116e1f4259fcec9d09b42b";
+ };
+
+ postPatch = ''
+ # Requires network access
+ rm fxa/tests/test_core.py
+ '';
+
+ propagatedBuildInputs = [
+ requests cryptography pybrowserid hawkauthlib six
+ ];
+
+ checkInputs = [
+ grequests mock responses unittest2
+ ];
+
+ meta = with lib; {
+ description = "Firefox Accounts client library for Python";
+ homepage = https://github.com/mozilla/PyFxA;
+ license = licenses.mpl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pygal/default.nix b/nixpkgs/pkgs/development/python-modules/pygal/default.nix
new file mode 100644
index 00000000000..a3d6f6e4c21
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pygal/default.nix
@@ -0,0 +1,58 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPyPy
+, flask
+, pyquery
+, pytest
+, pytestrunner
+, cairosvg
+, tinycss
+, cssselect
+, lxml
+}:
+
+buildPythonPackage rec {
+ pname = "pygal";
+ version = "2.4.0";
+
+ doCheck = !isPyPy; # one check fails with pypy
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "9204f05380b02a8a32f9bf99d310b51aa2a932cba5b369f7a4dc3705f0a4ce83";
+ };
+
+ buildInputs = [
+ flask
+ pyquery
+
+ # Should be a check input, but upstream lists it under "setup_requires".
+ # https://github.com/Kozea/pygal/issues/430
+ pytestrunner
+ ];
+
+ checkInputs = [
+ pytest
+ ];
+
+ preCheck = ''
+ # necessary on darwin to pass the testsuite
+ export LANG=en_US.UTF-8
+ '';
+
+ postPatch = ''
+ substituteInPlace setup.cfg --replace "[pytest]" "[tool:pytest]"
+ '';
+
+ propagatedBuildInputs = [ cairosvg tinycss cssselect ]
+ ++ stdenv.lib.optionals (!isPyPy) [ lxml ];
+
+ meta = with stdenv.lib; {
+ description = "Sexy and simple python charting";
+ homepage = http://www.pygal.org;
+ license = licenses.lgpl3;
+ maintainers = with maintainers; [ sjourdois ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pygame/default.nix b/nixpkgs/pkgs/development/python-modules/pygame/default.nix
new file mode 100644
index 00000000000..b9c45ce8967
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pygame/default.nix
@@ -0,0 +1,49 @@
+{ lib, fetchPypi, buildPythonPackage, python, pkg-config, libX11
+, SDL, SDL_image, SDL_mixer, SDL_ttf, libpng, libjpeg, portmidi, freetype
+}:
+
+buildPythonPackage rec {
+ pname = "pygame";
+ version = "1.9.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "301c6428c0880ecd4a9e3951b80e539c33863b6ff356a443db1758de4f297957";
+ };
+
+ nativeBuildInputs = [
+ pkg-config SDL
+ ];
+
+ buildInputs = [
+ SDL SDL_image SDL_mixer SDL_ttf libpng libjpeg
+ portmidi libX11 freetype
+ ];
+
+ # Tests fail because of no audio device and display.
+ doCheck = false;
+
+ preConfigure = ''
+ sed \
+ -e "s/origincdirs = .*/origincdirs = []/" \
+ -e "s/origlibdirs = .*/origlibdirs = []/" \
+ -e "/'\/lib\/i386-linux-gnu', '\/lib\/x86_64-linux-gnu']/d" \
+ -e "/\/include\/smpeg/d" \
+ -i buildconfig/config_unix.py
+ ${lib.concatMapStrings (dep: ''
+ sed \
+ -e "/origincdirs =/a\ origincdirs += ['${lib.getDev dep}/include']" \
+ -e "/origlibdirs =/a\ origlibdirs += ['${lib.getLib dep}/lib']" \
+ -i buildconfig/config_unix.py
+ '') buildInputs
+ }
+ LOCALBASE=/ ${python.interpreter} buildconfig/config.py
+ '';
+
+ meta = with lib; {
+ description = "Python library for games";
+ homepage = http://www.pygame.org/;
+ license = licenses.lgpl21Plus;
+ platforms = platforms.linux;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pygame_sdl2/default.nix b/nixpkgs/pkgs/development/python-modules/pygame_sdl2/default.nix
new file mode 100644
index 00000000000..ab46a5670ee
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pygame_sdl2/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, buildPythonPackage, fetchurl, isPy27
+, cython, SDL2, SDL2_image, SDL2_ttf, SDL2_mixer, libjpeg, libpng }:
+
+buildPythonPackage rec {
+ pname = "pygame_sdl2";
+ version = "2.1.0";
+ renpy_version = "7.2.0";
+ name = "${pname}-${version}-${renpy_version}";
+
+ src = fetchurl {
+ url = "https://www.renpy.org/dl/${renpy_version}/pygame_sdl2-${version}-for-renpy-${renpy_version}.tar.gz";
+ sha256 = "1amgsb6mm8ssf7vdcs5dr8rlxrgyhh29m4i573z1cw61ynd7vgcw";
+ };
+
+ # force rebuild of headers needed for install
+ prePatch = ''
+ rm -rf gen gen3
+ '';
+
+ nativeBuildInputs = [
+ SDL2.dev cython
+ ];
+
+ buildInputs = [
+ SDL2 SDL2_image SDL2_ttf SDL2_mixer
+ libjpeg libpng
+ ];
+
+
+ doCheck = isPy27; # python3 tests are non-functional
+
+ postInstall = ''
+ ( cd "$out"/include/python*/ ;
+ ln -s pygame-sdl2 pygame_sdl2 || true ; )
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A reimplementation of parts of pygame API using SDL2";
+ homepage = "https://github.com/renpy/pygame_sdl2";
+ # Some parts are also available under Zlib License
+ license = licenses.lgpl2;
+ maintainers = with maintainers; [ raskin ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pygbm/default.nix b/nixpkgs/pkgs/development/python-modules/pygbm/default.nix
new file mode 100644
index 00000000000..6e4c70aaaf1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pygbm/default.nix
@@ -0,0 +1,46 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, scipy
+, numpy
+, numba
+, scikitlearn
+, pytest
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+ pname = "pygbm";
+ version = "0.1.0";
+ disabled = pythonOlder "3.6";
+
+ src = fetchFromGitHub {
+ owner = "ogrisel";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "1qg2md86d0z5aa6jn8kj3rxsippsqsccx1dbraspdsdkycncvww3";
+ };
+
+ propagatedBuildInputs = [
+ scipy
+ numpy
+ numba
+ scikitlearn
+ ];
+
+ checkInputs = [
+ pytest
+ ];
+
+ checkPhase = ''
+ # numerical rounding error in test
+ pytest -k "not test_derivatives"
+ '';
+
+ meta = with lib; {
+ description = "Experimental Gradient Boosting Machines in Python";
+ homepage = https://github.com/ogrisel/pygbm;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pygccxml/default.nix b/nixpkgs/pkgs/development/python-modules/pygccxml/default.nix
new file mode 100644
index 00000000000..d4c46d6b835
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pygccxml/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, castxml, fetchFromGitHub, buildPythonPackage,
+llvmPackages }:
+buildPythonPackage rec {
+ pname = "pygccxml";
+ version = "1.9.1";
+
+ src = fetchFromGitHub {
+ owner = "gccxml";
+ repo = "pygccxml";
+ rev = "v${version}";
+ sha256 = "02ip03s0vmp7czzflbvf7qnybibfrd0rzqbc5zfmq3zmpnck3hvm";
+ };
+
+ buildInputs = [ castxml llvmPackages.libcxxStdenv];
+
+ # running the suite is hard, needs to generate xml_generator.cfg
+ # but the format doesn't accept -isystem directives
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/gccxml/pygccxml;
+ description = "Python package for easy C++ declarations navigation";
+ license = licenses.boost;
+ maintainers = with maintainers; [ teto ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pygdbmi/default.nix b/nixpkgs/pkgs/development/python-modules/pygdbmi/default.nix
new file mode 100644
index 00000000000..fc19ab26573
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pygdbmi/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, gdb
+}:
+
+buildPythonPackage rec {
+ pname = "pygdbmi";
+ version = "0.9.0.0";
+
+ src = fetchFromGitHub {
+ #inherit pname version;
+ #inherit pname version;
+ owner = "cs01";
+ repo = "pygdbmi";
+ rev = version;
+ sha256 = "12xq9iajgqz23dska5x63hrx75icr5bwwswnmba0y69y39s0jpsj";
+ };
+
+ checkInputs = [ gdb ];
+
+ postPatch = ''
+ # tries to execute flake8,
+ # which is likely to break on flake8 updates
+ echo "def main(): return 0" > tests/static_tests.py
+ '';
+
+ meta = with lib; {
+ description = "Parse gdb machine interface output with Python";
+ homepage = https://github.com/cs01/pygdbmi;
+ license = licenses.mit;
+ maintainers = [ maintainers.mic92 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pygeoip/default.nix b/nixpkgs/pkgs/development/python-modules/pygeoip/default.nix
new file mode 100644
index 00000000000..0b0e8f55fa7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pygeoip/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, nose }:
+
+buildPythonPackage rec {
+ pname = "pygeoip";
+ version = "0.3.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f22c4e00ddf1213e0fae36dc60b46ee7c25a6339941ec1a975539014c1f9a96d";
+ };
+
+ # requires geoip samples
+ doCheck = false;
+
+ buildInputs = [ nose ];
+
+ meta = with stdenv.lib; {
+ description = "Pure Python GeoIP API";
+ homepage = https://github.com/appliedsec/pygeoip;
+ license = licenses.lgpl3Plus;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pygit2/default.nix b/nixpkgs/pkgs/development/python-modules/pygit2/default.nix
new file mode 100644
index 00000000000..313a3e5ab18
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pygit2/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, lib, buildPythonPackage, fetchPypi, fetchpatch, isPyPy, libgit2, six, cffi }:
+
+buildPythonPackage rec {
+ pname = "pygit2";
+ version = "0.27.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0d9bgxd6ch5jxz0j5cmx7c4kw933g8pgm2zxf3id1a6w9g2r7hpw";
+ };
+
+ preConfigure = lib.optionalString stdenv.isDarwin ''
+ export DYLD_LIBRARY_PATH="${libgit2}/lib"
+ '';
+
+ patches = [ (fetchpatch {
+ name = "dont-require-old-pycparser"; # https://github.com/libgit2/pygit2/issues/819
+ url = https://github.com/libgit2/pygit2/commit/1eaba181577de206d3d43ec7886d0353fc0c9f2a.patch;
+ sha256 = "18x1fpmywhjjr4lvakwmy34zpxfqi8pqqj48g1wcib39lh3s7l4f";
+ }) ];
+
+ propagatedBuildInputs = [ libgit2 six ] ++ lib.optional (!isPyPy) cffi;
+
+ preCheck = ''
+ # disable tests that require networking
+ rm test/test_repository.py
+ rm test/test_credentials.py
+ rm test/test_submodule.py
+ '';
+
+ meta = with lib; {
+ description = "A set of Python bindings to the libgit2 shared library";
+ homepage = https://pypi.python.org/pypi/pygit2;
+ license = licenses.gpl2;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyglet/default.nix b/nixpkgs/pkgs/development/python-modules/pyglet/default.nix
new file mode 100644
index 00000000000..e303f3415d7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyglet/default.nix
@@ -0,0 +1,72 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, libGLU_combined
+, xorg
+, future
+, pytest
+, glibc
+, gtk2-x11
+, gdk-pixbuf
+}:
+
+buildPythonPackage rec {
+ version = "1.4.2";
+ pname = "pyglet";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1dxxrl4nc7xh3aai1clgzvk48bvd35r7ksirsddz0mwhx7jmm8px";
+ };
+
+ # find_library doesn't reliably work with nix (https://github.com/NixOS/nixpkgs/issues/7307).
+ # Even naively searching `LD_LIBRARY_PATH` won't work since `libc.so` is a linker script and
+ # ctypes.cdll.LoadLibrary cannot deal with those. Therefore, just hardcode the paths to the
+ # necessary libraries.
+ postPatch = let
+ ext = stdenv.hostPlatform.extensions.sharedLibrary;
+ in ''
+ cat > pyglet/lib.py <<EOF
+ import ctypes
+ def load_library(*names, **kwargs):
+ for name in names:
+ path = None
+ if name == 'GL':
+ path = '${libGLU_combined}/lib/libGL${ext}'
+ elif name == 'GLU':
+ path = '${libGLU_combined}/lib/libGLU${ext}'
+ elif name == 'c':
+ path = '${glibc}/lib/libc${ext}.6'
+ elif name == 'X11':
+ path = '${xorg.libX11}/lib/libX11${ext}'
+ elif name == 'gdk-x11-2.0':
+ path = '${gtk2-x11}/lib/libgdk-x11-2.0${ext}'
+ elif name == 'gdk_pixbuf-2.0':
+ path = '${gdk-pixbuf}/lib/libgdk_pixbuf-2.0${ext}'
+ if path is not None:
+ return ctypes.cdll.LoadLibrary(path)
+ raise Exception("Could not load library {}".format(names))
+ EOF
+ '';
+
+ propagatedBuildInputs = [ future ];
+
+ # needs an X server. Keep an eye on
+ # https://bitbucket.org/pyglet/pyglet/issues/219/egl-support-headless-rendering
+ doCheck = false;
+
+ checkInputs = [
+ pytest
+ ];
+
+ checkPhase = ''
+ py.test tests/unit tests/integration
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "http://www.pyglet.org/";
+ description = "A cross-platform windowing and multimedia library";
+ license = licenses.bsd3;
+ platforms = platforms.mesaPlatforms;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pygments-markdown-lexer/default.nix b/nixpkgs/pkgs/development/python-modules/pygments-markdown-lexer/default.nix
new file mode 100644
index 00000000000..65688cf17bb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pygments-markdown-lexer/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pygments
+}:
+
+buildPythonPackage rec {
+ pname = "pygments-markdown-lexer";
+ version = "0.1.0.dev39";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "1pzb5wy23q3fhs0rqzasjnw6hdzwjngpakb73i98cn0b8lk8q4jc";
+ };
+
+ propagatedBuildInputs = [ pygments ];
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/jhermann/pygments-markdown-lexer;
+ description = "Pygments Markdown Lexer – A Markdown lexer for Pygments to highlight Markdown code snippets";
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pygmo/default.nix b/nixpkgs/pkgs/development/python-modules/pygmo/default.nix
new file mode 100644
index 00000000000..c7dfdef4be4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pygmo/default.nix
@@ -0,0 +1,52 @@
+{ lib
+, buildPythonPackage
+, eigen
+, nlopt
+, ipopt
+, boost
+, pagmo2
+, numpy
+, cloudpickle
+, ipyparallel
+, numba
+, python
+}:
+
+let
+ propagatedBuildInputs = [ numpy cloudpickle ipyparallel numba ];
+
+ pagmo2WithPython = pagmo2.overrideAttrs (oldAttrs: {
+ cmakeFlags = oldAttrs.cmakeFlags ++ [
+ "-DPAGMO_BUILD_PYGMO=yes"
+ "-DPAGMO_BUILD_PAGMO=no"
+ "-DPagmo_DIR=${pagmo2}"
+ ];
+ buildInputs = [ eigen nlopt ipopt boost pagmo2 ] ++ propagatedBuildInputs;
+ postInstall = ''
+ mv wheel $out
+ '';
+ });
+
+in buildPythonPackage {
+ pname = "pygmo";
+ version = pagmo2WithPython.version;
+
+ inherit propagatedBuildInputs;
+
+ src = pagmo2WithPython;
+
+ preBuild = ''
+ mv ${python.sitePackages}/pygmo wheel
+ cd wheel
+ '';
+
+ # dont do tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Parallel optimisation for Python";
+ homepage = https://esa.github.io/pagmo2/;
+ license = licenses.gpl3Plus;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pygobject/3.nix b/nixpkgs/pkgs/development/python-modules/pygobject/3.nix
new file mode 100644
index 00000000000..8372adc9bdb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pygobject/3.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl, buildPythonPackage, pkgconfig, glib, gobject-introspection,
+pycairo, cairo, which, ncurses, meson, ninja, isPy3k, gnome3 }:
+
+buildPythonPackage rec {
+ pname = "pygobject";
+ version = "3.32.1";
+
+ format = "other";
+
+ src = fetchurl {
+ url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+ sha256 = "1n04dnvq3bx7vk7pgnxlg6kiwnc7xxv9bjabkv7abpmqjkprvj9j";
+ };
+
+ outputs = [ "out" "dev" ];
+
+ mesonFlags = [
+ "-Dpython=python${if isPy3k then "3" else "2" }"
+ ];
+
+ nativeBuildInputs = [ pkgconfig meson ninja gobject-introspection ];
+ buildInputs = [ glib gobject-introspection ]
+ ++ stdenv.lib.optionals stdenv.isDarwin [ which ncurses ];
+ propagatedBuildInputs = [ pycairo cairo ];
+
+ passthru = {
+ updateScript = gnome3.updateScript {
+ packageName = pname;
+ attrPath = "python3.pkgs.${pname}3";
+ };
+ };
+
+ meta = with stdenv.lib; {
+ homepage = https://pygobject.readthedocs.io/;
+ description = "Python bindings for Glib";
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ jtojnar ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pygobject/default.nix b/nixpkgs/pkgs/development/python-modules/pygobject/default.nix
new file mode 100644
index 00000000000..d685e3541f9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pygobject/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchurl, python, buildPythonPackage, pkgconfig, glib }:
+
+buildPythonPackage rec {
+ pname = "pygobject";
+ version = "2.28.6";
+ format = "other";
+
+ src = fetchurl {
+ url = "mirror://gnome/sources/pygobject/2.28/${pname}-${version}.tar.xz";
+ sha256 = "1f5dfxjnil2glfwxnqr14d2cjfbkghsbsn8n04js2c2icr7iv2pv";
+ };
+
+ outputs = [ "out" "devdoc" ];
+
+ patches = [
+ # Fix warning spam
+ ./pygobject-2.28.6-set_qdata.patch
+ ./pygobject-2.28.6-gio-types-2.32.patch
+ ] ++ stdenv.lib.optionals stdenv.isDarwin [
+ ./pygobject-2.0-fix-darwin.patch
+ ];
+
+ configureFlags = [ "--disable-introspection" ];
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [ glib ];
+
+ # in a "normal" setup, pygobject and pygtk are installed into the
+ # same site-packages: we need a pth file for both. pygtk.py would be
+ # used to select a specific version, in our setup it should have no
+ # effect, but we leave it in case somebody expects and calls it.
+ postInstall = ''
+ mv $out/lib/${python.libPrefix}/site-packages/{pygtk.pth,${pname}-${version}.pth}
+
+ # Prevent wrapping of codegen files as these are meant to be
+ # executed by the python program
+ chmod a-x $out/share/pygobject/*/codegen/*.py
+ '';
+
+ meta = {
+ homepage = http://live.gnome.org/PyGObject;
+ description = "Python bindings for Glib";
+ platforms = stdenv.lib.platforms.unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pygobject/pygobject-2.0-fix-darwin.patch b/nixpkgs/pkgs/development/python-modules/pygobject/pygobject-2.0-fix-darwin.patch
new file mode 100644
index 00000000000..7fef05262f4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pygobject/pygobject-2.0-fix-darwin.patch
@@ -0,0 +1,88 @@
+--- a/gio/unix-types.defs
++++ b/gio/unix-types.defs
+@@ -7,18 +7,6 @@
+ (gtype-id "G_TYPE_UNIX_CONNECTION")
+ )
+
+-(define-object DesktopAppInfo
+- (docstring
+- "DesktopAppInfo(desktop_id) -> gio.unix.DesktopAppInfo\n\n"
+- "gio.Unix.DesktopAppInfo is an implementation of gio.AppInfo\n"
+- "based on desktop files."
+- )
+- (in-module "giounix")
+- (parent "GObject")
+- (c-name "GDesktopAppInfo")
+- (gtype-id "G_TYPE_DESKTOP_APP_INFO")
+-)
+-
+ (define-object FDMessage
+ (in-module "giounix")
+ (parent "GSocketControlMessage")
+--- a/gio/unix.defs
++++ b/gio/unix.defs
+@@ -32,54 +32,6 @@
+
+
+
+-;; From gdesktopappinfo.h
+-
+-(define-function desktop_app_info_get_type
+- (c-name "g_desktop_app_info_get_type")
+- (return-type "GType")
+-)
+-
+-(define-function desktop_app_info_new_from_filename
+- (c-name "g_desktop_app_info_new_from_filename")
+- (return-type "GDesktopAppInfo*")
+- (parameters
+- '("const-char*" "filename")
+- )
+-)
+-
+-(define-function g_desktop_app_info_new_from_keyfile
+- (c-name "g_desktop_app_info_new_from_keyfile")
+- (return-type "GDesktopAppInfo*")
+- (parameters
+- '("GKeyFile*" "key_file")
+- )
+-)
+-
+-(define-function desktop_app_info_new
+- (c-name "g_desktop_app_info_new")
+- (is-constructor-of "GDesktopAppInfo")
+- (return-type "GDesktopAppInfo*")
+- (parameters
+- '("const-char*" "desktop_id")
+- )
+-)
+-
+-(define-method get_is_hidden
+- (of-object "GDesktopAppInfo")
+- (c-name "g_desktop_app_info_get_is_hidden")
+- (return-type "gboolean")
+-)
+-
+-(define-function desktop_app_info_set_desktop_env
+- (c-name "g_desktop_app_info_set_desktop_env")
+- (return-type "none")
+- (parameters
+- '("const-char*" "desktop_env")
+- )
+-)
+-
+-
+-
+ ;; From gunixfdmessage.h
+
+ (define-function g_unix_fd_message_get_type
+--- a/gio/unix.override
++++ b/gio/unix.override
+@@ -24,7 +24,6 @@
+ #define NO_IMPORT_PYGOBJECT
+ #include <pygobject.h>
+ #include <gio/gio.h>
+-#include <gio/gdesktopappinfo.h>
+ #include <gio/gunixinputstream.h>
+ #include <gio/gunixmounts.h>
+ #include <gio/gunixoutputstream.h>
diff --git a/nixpkgs/pkgs/development/python-modules/pygobject/pygobject-2.28.6-gio-types-2.32.patch b/nixpkgs/pkgs/development/python-modules/pygobject/pygobject-2.28.6-gio-types-2.32.patch
new file mode 100644
index 00000000000..fa0adf54ad0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pygobject/pygobject-2.28.6-gio-types-2.32.patch
@@ -0,0 +1,50 @@
+From 42d01f060c5d764baa881d13c103d68897163a49 Mon Sep 17 00:00:00 2001
+From: Ryan Lortie <desrt@desrt.ca>
+Date: Mon, 12 Mar 2012 16:44:14 -0400
+Subject: [PATCH] gio-types.defs: change some enums to flags
+
+These flags types were originally incorrectly handled in glib as being
+enums. That bug was fixed, but they're still enums here, leading to
+warnings about the mismatch.
+
+Change them to flags.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=668522
+---
+ gio/gio-types.defs | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/gio/gio-types.defs b/gio/gio-types.defs
+index 331e0bc..7eee5c8 100644
+--- a/gio/gio-types.defs
++++ b/gio/gio-types.defs
+@@ -526,7 +526,7 @@
+ )
+ )
+
+-(define-enum MountMountFlags
++(define-flags MountMountFlags
+ (in-module "gio")
+ (c-name "GMountMountFlags")
+ (gtype-id "G_TYPE_MOUNT_MOUNT_FLAGS")
+@@ -545,7 +545,7 @@
+ )
+ )
+
+-(define-enum DriveStartFlags
++(define-flags DriveStartFlags
+ (in-module "gio")
+ (c-name "GDriveStartFlags")
+ (gtype-id "G_TYPE_DRIVE_START_FLAGS")
+@@ -770,7 +770,7 @@
+ )
+ )
+
+-(define-enum SocketMsgFlags
++(define-flags SocketMsgFlags
+ (in-module "gio")
+ (c-name "GSocketMsgFlags")
+ (gtype-id "G_TYPE_SOCKET_MSG_FLAGS")
+--
+1.7.8.5
+
diff --git a/nixpkgs/pkgs/development/python-modules/pygobject/pygobject-2.28.6-set_qdata.patch b/nixpkgs/pkgs/development/python-modules/pygobject/pygobject-2.28.6-set_qdata.patch
new file mode 100644
index 00000000000..55376b59d82
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pygobject/pygobject-2.28.6-set_qdata.patch
@@ -0,0 +1,28 @@
+From 42d871eb0b08ee6d55e95cc7e4b90844919555b9 Mon Sep 17 00:00:00 2001
+From: Ivan Stankovic <ivan.stankovic@avl.com>
+Date: Tue, 21 Feb 2012 12:24:58 +0100
+Subject: [PATCH] Fix set_qdata warning on accessing NULL gobject property
+
+https://bugzilla.gnome.org/show_bug.cgi?id=661155
+---
+ gobject/pygobject.c | 4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+diff --git a/gobject/pygobject.c b/gobject/pygobject.c
+index 6c2f06c..70dc89a 100644
+--- a/gobject/pygobject.c
++++ b/gobject/pygobject.c
+@@ -991,7 +991,9 @@ pygobject_new(GObject *obj)
+ PyObject *
+ pygobject_new_sunk(GObject *obj)
+ {
+- g_object_set_qdata (obj, pygobject_ref_sunk_key, GINT_TO_POINTER (1));
++ if (obj)
++ g_object_set_qdata (obj, pygobject_ref_sunk_key, GINT_TO_POINTER (1));
++
+ return pygobject_new_full(obj, TRUE, NULL);
+ }
+
+--
+1.7.8.5
+
diff --git a/nixpkgs/pkgs/development/python-modules/pygpgme/default.nix b/nixpkgs/pkgs/development/python-modules/pygpgme/default.nix
new file mode 100644
index 00000000000..4322e76e3e7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pygpgme/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchurl, isPyPy
+, gpgme }:
+
+buildPythonPackage rec {
+ version = "0.3";
+ pname = "pygpgme";
+ disabled = isPyPy;
+
+ src = fetchurl {
+ url = "https://launchpad.net/pygpgme/trunk/${version}/+download/${pname}-${version}.tar.gz";
+ sha256 = "5fd887c407015296a8fd3f4b867fe0fcca3179de97ccde90449853a3dfb802e1";
+ };
+
+ # error: invalid command 'test'
+ doCheck = false;
+
+ propagatedBuildInputs = [ gpgme ];
+
+ meta = with stdenv.lib; {
+ homepage = "https://launchpad.net/pygpgme";
+ description = "A Python wrapper for the GPGME library";
+ license = licenses.lgpl21;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pygraphviz/default.nix b/nixpkgs/pkgs/development/python-modules/pygraphviz/default.nix
new file mode 100644
index 00000000000..706284b56db
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pygraphviz/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, buildPythonPackage, fetchPypi, substituteAll, graphviz
+, pkgconfig, doctest-ignore-unicode, mock, nose }:
+
+buildPythonPackage rec {
+ pname = "pygraphviz";
+ version = "1.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "179i3mjprhn200gcj6jq7c4mdrzckyqlh1srz78hynnw0nijka2h";
+ extension = "zip";
+ };
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [ graphviz ];
+ checkInputs = [ doctest-ignore-unicode mock nose ];
+
+ patches = [
+ # pygraphviz depends on graphviz being in PATH. This patch always prepends
+ # graphviz to PATH.
+ (substituteAll {
+ src = ./graphviz-path.patch;
+ inherit graphviz;
+ })
+ ];
+
+ # The tests are currently failing because of a bug in graphviz 2.40.1.
+ # Upstream does not want to skip the relevant tests:
+ # https://github.com/pygraphviz/pygraphviz/pull/129
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Python interface to Graphviz graph drawing package";
+ homepage = https://github.com/pygraphviz/pygraphviz;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ matthiasbeyer ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pygraphviz/graphviz-path.patch b/nixpkgs/pkgs/development/python-modules/pygraphviz/graphviz-path.patch
new file mode 100644
index 00000000000..e4ff925009d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pygraphviz/graphviz-path.patch
@@ -0,0 +1,13 @@
+diff --git a/pygraphviz/agraph.py b/pygraphviz/agraph.py
+index 8f72024..2d8358e 100644
+--- a/pygraphviz/agraph.py
++++ b/pygraphviz/agraph.py
+@@ -1557,7 +1557,7 @@ class AGraph(object):
+ import os
+ import glob
+
+- paths = os.environ["PATH"]
++ paths = '@graphviz@/bin:' + os.environ["PATH"]
+ if os.name == "nt":
+ exe = ".exe"
+ else:
diff --git a/nixpkgs/pkgs/development/python-modules/pygreat/default.nix b/nixpkgs/pkgs/development/python-modules/pygreat/default.nix
new file mode 100644
index 00000000000..103e215f047
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pygreat/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, buildPythonPackage, isPy3k, fetchFromGitHub, future, pyusb }:
+
+buildPythonPackage {
+ pname = "pygreat";
+ version = "2019.5.1.dev0";
+
+ src = fetchFromGitHub {
+ owner = "greatscottgadgets";
+ repo = "libgreat";
+ rev = "14c00b7c8f036f4d467e4b1a324ffa3566b126fa";
+ sha256 = "1h0z83k1k4z8j36z936h61l8j3cjr3wsxr86k91v5c5h93g9dkqh";
+ };
+
+ propagatedBuildInputs = [ future pyusb ];
+
+ disabled = !isPy3k;
+
+ preBuild = ''
+ cd host
+ substituteInPlace setup.py --replace "'backports.functools_lru_cache'" ""
+ substituteInPlace pygreat/comms.py --replace "from backports.functools_lru_cache import lru_cache as memoize_with_lru_cache" "from functools import lru_cache as memoize_with_lru_cache"
+ echo "$version" > ../VERSION
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Python library for talking with libGreat devices";
+ homepage = https://greatscottgadgets.com/greatfet/;
+ license = with licenses; [ bsd3 ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pygtail/default.nix b/nixpkgs/pkgs/development/python-modules/pygtail/default.nix
new file mode 100644
index 00000000000..503dad717c2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pygtail/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildPythonPackage, fetchFromGitHub }:
+
+buildPythonPackage rec {
+ pname = "pygtail";
+ version = "0.8.0";
+
+ src = fetchFromGitHub {
+ owner = "bgreenlee";
+ repo = pname;
+ rev = version;
+ sha256 = "1f8qlijiwn10jxg1bsi6q42fznbg8rw039yaxfh6rzbaj2gaxbz1";
+ };
+
+ # remove at next bump, tag is one commit early for 0.8.0
+ postPatch = ''
+ substituteInPlace pygtail/core.py \
+ --replace 0.7.0 0.8.0
+ '';
+
+ meta = with lib; {
+ description = "A library for reading log file lines that have not been read";
+ license = licenses.gpl2Plus;
+ homepage = https://github.com/bgreenlee/pygtail;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pygtk/default.nix b/nixpkgs/pkgs/development/python-modules/pygtk/default.nix
new file mode 100644
index 00000000000..09ccb5c3d95
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pygtk/default.nix
@@ -0,0 +1,60 @@
+{ stdenv, fetchurl, python, pkgconfig, gtk2, pygobject2, pycairo
+, buildPythonPackage, libglade ? null, isPy3k }:
+
+buildPythonPackage rec {
+ pname = "pygtk";
+ version = "2.24.0";
+
+ disabled = isPy3k;
+
+ src = fetchurl {
+ url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+ sha256 = "04k942gn8vl95kwf0qskkv6npclfm31d78ljkrkgyqxxcni1w76d";
+ };
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = stdenv.lib.optional (libglade != null) libglade;
+
+ propagatedBuildInputs = [ gtk2 pygobject2 pycairo ];
+
+ configurePhase = "configurePhase";
+
+ buildPhase = "buildPhase";
+
+ NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.isDarwin "-ObjC";
+
+ installPhase = "installPhase";
+
+ checkPhase = stdenv.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 stdenv.lib; {
+ description = "GTK 2 Python bindings";
+ homepage = "https://gitlab.gnome.org/Archive/pygtk";
+ platforms = platforms.all;
+ license = with licenses; [ lgpl21Plus ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pygtksourceview/codegendir.patch b/nixpkgs/pkgs/development/python-modules/pygtksourceview/codegendir.patch
new file mode 100644
index 00000000000..783c5e2d467
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pygtksourceview/codegendir.patch
@@ -0,0 +1,25 @@
+diff -Nur pygtksourceview-2.10.1-orig/configure pygtksourceview-2.10.1/configure
+--- pygtksourceview-2.10.1-orig/configure 2010-04-18 15:29:55.000000000 +0200
++++ pygtksourceview-2.10.1/configure 2015-01-30 20:36:31.784541887 +0100
+@@ -12950,7 +12950,7 @@
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pygtk codegen" >&5
+ $as_echo_n "checking for pygtk codegen... " >&6; }
+-CODEGENDIR=`$PKG_CONFIG --variable=codegendir pygtk-2.0`
++CODEGENDIR=`$PKG_CONFIG --variable=codegendir pygobject-2.0`
+ echo $CODEGENDIR
+ if test -f $CODEGENDIR/codegen.py; then
+ CODEGEN=$CODEGENDIR/codegen.py
+diff -Nur pygtksourceview-2.10.1-orig/configure.ac pygtksourceview-2.10.1/configure.ac
+--- pygtksourceview-2.10.1-orig/configure.ac 2010-04-18 15:28:39.000000000 +0200
++++ pygtksourceview-2.10.1/configure.ac 2015-01-30 20:36:42.781648830 +0100
+@@ -116,7 +116,7 @@
+
+ dnl codegen
+ AC_MSG_CHECKING(for pygtk codegen)
+-CODEGENDIR=`$PKG_CONFIG --variable=codegendir pygtk-2.0`
++CODEGENDIR=`$PKG_CONFIG --variable=codegendir pygobject-2.0`
+ echo $CODEGENDIR
+ if test -f $CODEGENDIR/codegen.py; then
+ CODEGEN=$CODEGENDIR/codegen.py
+
diff --git a/nixpkgs/pkgs/development/python-modules/pygtksourceview/default.nix b/nixpkgs/pkgs/development/python-modules/pygtksourceview/default.nix
new file mode 100644
index 00000000000..947b5733a7e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pygtksourceview/default.nix
@@ -0,0 +1,21 @@
+{ lib, fetchurl, python, buildPythonPackage, pkgconfig, 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 = [ pkgconfig ];
+ buildInputs = [ python pygobject2 glib pygtk gnome2.gtksourceview ];
+
+ meta = {
+ platforms = lib.platforms.unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyhamcrest/default.nix b/nixpkgs/pkgs/development/python-modules/pyhamcrest/default.nix
new file mode 100644
index 00000000000..18540aca50e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyhamcrest/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, mock, pytest
+, six
+}:
+buildPythonPackage rec {
+ pname = "PyHamcrest";
+ version = "1.9.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8ffaa0a53da57e89de14ced7185ac746227a8894dbd5a3c718bf05ddbd1d56cd";
+ };
+
+ checkInputs = [ mock pytest ];
+ propagatedBuildInputs = [ six ];
+
+ doCheck = false; # pypi tarball does not include tests
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/hamcrest/PyHamcrest;
+ description = "Hamcrest framework for matcher objects";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [
+ alunduil
+ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyhepmc/default.nix b/nixpkgs/pkgs/development/python-modules/pyhepmc/default.nix
new file mode 100644
index 00000000000..26a91a313ee
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyhepmc/default.nix
@@ -0,0 +1,59 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, fetchFromBitbucket
+, isPy3k
+, pkgs
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "pyhepmc";
+ version = "1.0.1";
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1210fd7e20d4abc1d9166147a9f7645a2a58b655fe030ad54ab3ea0d0c6e0834";
+ };
+
+ srcMissing = fetchFromBitbucket {
+ owner = "andybuckley";
+ repo = "pyhepmc";
+ rev = "pyhepmc-1.0.0";
+ sha256 = "0vxad143pz45q94w5p0dycpk24insdsv1m5k867y56xy24bi0d4w";
+ };
+
+ prePatch = ''
+ cp -r $srcMissing/hepmc .
+ chmod +w hepmc
+ '';
+
+ patches = [
+ # merge PR https://bitbucket.org/andybuckley/pyhepmc/pull-requests/1/add-incoming-outgoing-generators-for/diff
+ ./pyhepmc_export_edges.patch
+ # add bindings to Flow class
+ ./pyhepmc_export_flow.patch
+ ];
+
+ # regenerate python wrapper
+ preConfigure = ''
+ swig -c++ -I${pkgs.hepmc}/include -python hepmc/hepmcwrap.i
+ '';
+
+ nativeBuildInputs = [ pkgs.swig ];
+ buildInputs = [ pkgs.hepmc2 ];
+
+ HEPMCPATH = pkgs.hepmc2;
+
+ checkPhase = ''
+ ${python.interpreter} test/test1.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A simple wrapper on the main classes of the HepMC event simulation representation, making it possible to create, read and manipulate HepMC events from Python code";
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ veprbl ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyhepmc/pyhepmc_export_edges.patch b/nixpkgs/pkgs/development/python-modules/pyhepmc/pyhepmc_export_edges.patch
new file mode 100644
index 00000000000..5c6e56566a3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyhepmc/pyhepmc_export_edges.patch
@@ -0,0 +1,204 @@
+# HG changeset patch
+# User Lukas Heinrich <lukas.heinrich@gmail.com>
+# Date 1430606843 14400
+# Node ID 325f89b7b72922e9add9ca9dd0f7ca4a6c83bf00
+# Parent e4fd953257e0d38511f2177de7ffaef662358af2
+add incoming/outgoing generators for GenVertex
+
+diff --git a/hepmc/generators.i b/hepmc/generators.i
+new file mode 100644
+--- /dev/null
++++ b/hepmc/generators.i
+@@ -0,0 +1,171 @@
++/*!
++ * \file generators.i
++ * \author Seth R. Johnson
++ * \brief Define generator/iterator for any type
++
++Example:
++\code
++ SETUP_GENERATOR( std::vector<Cell>::const_iterator )
++ ADD_GENERATOR( Mesh, cells,
++ std::vector<Cell>::const_iterator, Cell, beginCells, endCells)
++\endcode
++would be a method to add a \c cells generator method method to the Python class
++\c Mesh, when the C++ class \c Mesh has a \c std::vector<Cell> accessed through
++methods \c beginCells and \c endCells.
++
++The macro \c ADD_GENERATOR_P would be if the underlying storage were \c
++std::vector<Cell*> instead.
++
++Alternatively, for containers of regular objects that provide \c begin(), \c end(), and \c const_iterator, you can use the \c ADD_CONTAINER_ITERATOR macro:
++\code
++ADD_CONTAINER_ITERATOR( QuadratureSet )
++\endcode
++
++\section License
++
++Copyright (c) 2010, Seth R. Johnson
++All rights reserved.
++
++Redistribution and use in source and binary forms, with or without
++modification, are permitted provided that the following conditions are met:
++ * Redistributions of source code must retain the above copyright notice, this
++ list of conditions and the following disclaimer.
++ * Redistributions in binary form must reproduce the above copyright notice,
++ this list of conditions and the following disclaimer in the documentation
++ and/or other materials provided with the distribution.
++ * Neither the name of the this project nor the names of its contributors
++ may be used to endorse or promote products derived from this software
++ without specific prior written permission.
++
++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
++ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
++WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
++DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
++ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
++(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
++LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
++ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
++SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++
++ This material is based upon work supported under a National Science
++ Foundation Graduate Research Fellowship. Any opinions, findings, conclusions
++ or recommendations expressed in this publication are those of the author
++ and do not necessarily reflect the views of the National Science
++ Foundation.
++*/
++#ifndef tools_SWIG_generators_i
++#define tools_SWIG_generators_i
++/*----------------------------------------------------------------------------*/
++
++// Add a Python class to provide iterator objects
++%insert("python") %{
++class GenericIterator:
++ def __init__(self, begin_iter_method, deref_method, incr_method):
++ self.it = begin_iter_method()
++ self.incr = incr_method
++ self.deref = deref_method
++
++ def __iter__(self):
++ return self
++
++ def next(self):
++ obj = self.deref( self.it )
++ if obj is not None:
++ self.incr( self.it )
++ return obj
++ else:
++ raise StopIteration
++%}
++
++//============== GENERIC GENERATOR/ITERATOR WRAPPER SUPPORT ============
++//! Thin wrapper for incrementing a certain type of iterator
++// only need to define once per iterator type, and we can use the same name
++// thanks to overloading (even though this may decrease efficiency)
++%define SETUP_GENERATOR( ITERATOR... )
++%inline %{
++void _iter_incr( ITERATOR* iter )
++{
++ ++(*iter);
++}
++%}
++%enddef
++
++/*----------------------------------------------------------------------------*/
++// Internal method for adding common parts of the generator
++%define PYTRT_BASE_ADD_GENERATOR( CLASS, PYMETHOD, ITERATOR, CBEGIN )
++ %extend CLASS {
++%insert("python") %{
++ def PYMETHOD(self):
++ "Returns an iterator for PYMETHOD."
++ return GenericIterator(
++ self._begin_ ## PYMETHOD,
++ self._deref_ ## PYMETHOD,
++ _iter_incr
++ )
++%}
++// get the first element in the vector
++ITERATOR* _begin_ ## PYMETHOD()
++{
++ return new ITERATOR( ($self)->CBEGIN() );
++}
++ }
++%enddef
++/*----------------------------------------------------------------------------*/
++// If the dereferenced iterator is an object
++%define ADD_GENERATOR( CLASS, PYMETHOD, ITERATOR, RVALUE, CBEGIN, CEND )
++
++// add the python and begin method
++PYTRT_BASE_ADD_GENERATOR( CLASS, PYMETHOD, ITERATOR, CBEGIN )
++
++ %extend CLASS {
++//! Dereference the iterator; return NULL if at the end
++const RVALUE* _deref_ ## PYMETHOD ## ( const ITERATOR* iter )
++{
++ // if at the end, return NULL
++ if (*iter == ($self)->CEND() ) {
++ return NULL;
++ }
++ // otherwise, return the POINTER to the dereferenced iterator
++ return &(**iter);
++}
++ }
++%enddef
++/*----------------------------------------------------------------------------*/
++// If the dereferenced iterator is a pointer
++%define ADD_GENERATOR_P( CLASS, PYMETHOD, ITERATOR, RVALUE, CBEGIN, CEND )
++
++// add the python and begin method
++PYTRT_BASE_ADD_GENERATOR( CLASS, PYMETHOD, ITERATOR, CBEGIN )
++
++ %extend CLASS {
++//! Dereference the iterator; return NULL if at the end
++const RVALUE* _deref_ ## PYMETHOD ## ( const ITERATOR* iter )
++{
++ // if at the end, return NULL
++ if (*iter == ($self)->CEND() ) {
++ return NULL;
++ }
++ // otherwise, return the dereferenced iterator (a pointer)
++ return **iter;
++}
++ }
++%enddef
++/*----------------------------------------------------------------------------*/
++//! For a regular container with "begin" and "end" and "size"
++%define ADD_CONTAINER_ITERATOR( CLASS )
++ SETUP_GENERATOR( CLASS::const_iterator );
++ ADD_GENERATOR( CLASS, __iter__,
++ CLASS ## ::const_iterator, CLASS ## ::value_type,
++ begin, end)
++ %extend CLASS {
++ %insert("python") %{
++ def __len__(self):
++ return self.size()
++ %}
++ }
++%enddef
++
++/*============================================================================*/
++#endif
++
+diff --git a/hepmc/hepmcwrap.i b/hepmc/hepmcwrap.i
+--- a/hepmc/hepmcwrap.i
++++ b/hepmc/hepmcwrap.i
+@@ -1,5 +1,7 @@
+ %module hepmcwrap
+
++%include generators.i
++
+ %{
+ #include "HepMC/GenEvent.h"
+ #include "HepMC/GenVertex.h"
+@@ -251,3 +253,9 @@
+ return ss.str();
+ }
+ }
++
++SETUP_GENERATOR( std::vector< HepMC::GenParticle* >::const_iterator )
++ADD_GENERATOR_P( HepMC::GenVertex, incoming,
++std::vector< HepMC::GenParticle* >::const_iterator, HepMC::GenParticle, particles_in_const_begin, particles_in_const_end)
++ADD_GENERATOR_P( HepMC::GenVertex, outgoing,
++std::vector< HepMC::GenParticle* >::const_iterator, HepMC::GenParticle, particles_out_const_begin, particles_out_const_end)
diff --git a/nixpkgs/pkgs/development/python-modules/pyhepmc/pyhepmc_export_flow.patch b/nixpkgs/pkgs/development/python-modules/pyhepmc/pyhepmc_export_flow.patch
new file mode 100644
index 00000000000..85e26a1a160
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyhepmc/pyhepmc_export_flow.patch
@@ -0,0 +1,20 @@
+diff --git a/hepmc/hepmcwrap.i b/hepmc/hepmcwrap.i
+index cf35c1b..b94fbe2 100644
+--- a/hepmc/hepmcwrap.i
++++ b/hepmc/hepmcwrap.i
+@@ -1,6 +1,7 @@
+ %module hepmcwrap
+
+ %{
++ #include "HepMC/Flow.h"
+ #include "HepMC/GenEvent.h"
+ #include "HepMC/GenVertex.h"
+ #include "HepMC/GenParticle.h"
+@@ -93,6 +94,7 @@ namespace HepMC {
+ // headers before importing headers that use those classes.
+ // Result is that headers should probably be %included in an order
+ // which sees "contents before containers"
++%include "HepMC/Flow.h"
+ %include "HepMC/HepMCDefs.h"
+ %include "HepMC/SimpleVector.h"
+ // #ifdef HEPMC_HAS_ITERATOR_RANGES
diff --git a/nixpkgs/pkgs/development/python-modules/pyhocon/default.nix b/nixpkgs/pkgs/development/python-modules/pyhocon/default.nix
new file mode 100644
index 00000000000..ac4af42851c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyhocon/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+# Runtime inputs:
+, pyparsing
+# Check inputs:
+, pytest
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "pyhocon";
+ version = "0.3.51";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "10l014br012fa583rnj3wqf6g9gmljamcwpw4snqwwg15i0dmkll";
+ };
+
+ propagatedBuildInputs = [ pyparsing ];
+
+ checkInputs = [ pytest mock ];
+
+ # Tests fail because necessary data files aren't packaged for PyPi yet.
+ # See https://github.com/chimpler/pyhocon/pull/203
+ doCheck = false;
+
+ meta = with lib; {
+ homepage = https://github.com/chimpler/pyhocon/;
+ description = "HOCON parser for Python";
+ # Long description copied from
+ # https://github.com/chimpler/pyhocon/blob/55a9ea3ebeeac5764bdebebfbeacbf099f64db26/setup.py
+ # (the tip of master as of 2019-03-24).
+ longDescription = ''
+ A HOCON parser for Python. It additionally provides a tool
+ (pyhocon) to convert any HOCON content into json, yaml and properties
+ format
+ '';
+ license = licenses.asl20;
+ maintainers = [ maintainers.chreekat ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyhomematic/default.nix b/nixpkgs/pkgs/development/python-modules/pyhomematic/default.nix
new file mode 100644
index 00000000000..c2fb9612e9c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyhomematic/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, isPy3k, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "pyhomematic";
+ version = "0.1.59";
+
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "4406d9bf49d570ef0ba80be9cf8eb4bd75c08a2909369ebd90b8e94ff07f116e";
+ };
+
+ # PyPI tarball does not include tests/ directory
+ # Unreliable timing: https://github.com/danielperna84/pyhomematic/issues/126
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Python 3 Interface to interact with Homematic devices";
+ homepage = https://github.com/danielperna84/pyhomematic;
+ license = licenses.mit;
+ maintainers = with maintainers; [ dotlambda ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyicu/default.nix b/nixpkgs/pkgs/development/python-modules/pyicu/default.nix
new file mode 100644
index 00000000000..a9523826b11
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyicu/default.nix
@@ -0,0 +1,40 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, six
+, fetchpatch
+, icu
+}:
+
+buildPythonPackage rec {
+ pname = "PyICU";
+ version = "2.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ddb2b453853b4c25db382bc5e8c4cde09b3f4696ef1e1494f8294e174f459cf4";
+ };
+
+ patches = [
+ (fetchpatch {
+ url = "https://salsa.debian.org/python-team/modules/pyicu/raw/debian/2.2-2/"
+ + "debian/patches/icu_test.patch";
+ sha256 = "1iavdkyqixm9i753svl17barla93b7jzgkw09dn3hnggamx7zwx9";
+ })
+ ];
+
+ nativeBuildInputs = [ icu ]; # for icu-config
+ buildInputs = [ icu ];
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ six ];
+
+ meta = with stdenv.lib; {
+ homepage = https://pypi.python.org/pypi/PyICU/;
+ description = "Python extension wrapping the ICU C++ API";
+ license = licenses.mit;
+ platforms = platforms.unix;
+ maintainers = [ maintainers.rycee ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyinotify/default.nix b/nixpkgs/pkgs/development/python-modules/pyinotify/default.nix
new file mode 100644
index 00000000000..0e070d8a89d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyinotify/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "pyinotify";
+ version = "0.9.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1x3i9wmzw33fpkis203alygfnrkcmq9w1aydcm887jh6frfqm6cw";
+ };
+
+ # No tests distributed
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/seb-m/pyinotify/wiki;
+ description = "Monitor filesystems events on Linux platforms with inotify";
+ license = licenses.mit;
+ platforms = platforms.linux;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyinputevent/default.nix b/nixpkgs/pkgs/development/python-modules/pyinputevent/default.nix
new file mode 100644
index 00000000000..90d13ae0787
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyinputevent/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+}:
+
+buildPythonPackage {
+ pname = "pyinputevent";
+ version = "2016-10-18";
+
+ src = fetchFromGitHub {
+ owner = "ntzrmtthihu777";
+ repo = "pyinputevent";
+ rev = "d2075fa5db5d8a402735fe788bb33cf9fe272a5b";
+ sha256 = "0rkis0xp8f9jc00x7jb9kbvhdla24z1vl30djqa6wy6fx0cr6sib";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/ntzrmtthihu777/pyinputevent";
+ description = "Python interface to the Input Subsystem's input_event and uinput";
+ license = licenses.bsd3;
+ platforms = platforms.unix;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyinsane2/default.nix b/nixpkgs/pkgs/development/python-modules/pyinsane2/default.nix
new file mode 100644
index 00000000000..8f96ebe915a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyinsane2/default.nix
@@ -0,0 +1,45 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, pillow
+, pkgs
+}:
+
+buildPythonPackage rec {
+ pname = "pyinsane2";
+ version = "2.0.13";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0d519531d552e4512776225eb400a6a4a9bfc83a08918ec7fea19cb2fa7ec4ee";
+ };
+
+ # This is needed by setup.py regardless of whether tests are enabled.
+ buildInputs = [ nose ];
+ propagatedBuildInputs = [ pillow ];
+
+ postPatch = ''
+ # pyinsane2 forks itself, so we need to re-inject the PYTHONPATH.
+ sed -i -e '/os.putenv.*PYINSANE_DAEMON/ {
+ a \ os.putenv("PYTHONPATH", ":".join(sys.path))
+ }' pyinsane2/sane/abstract_proc.py
+
+ sed -i -e 's,"libsane.so.1","${pkgs.sane-backends}/lib/libsane.so",' \
+ pyinsane2/sane/rawapi.py
+ '';
+
+ # Tests require a scanner to be physically connected, so let's just do a
+ # quick check whether initialization works.
+ checkPhase = ''
+ python -c 'import pyinsane2; pyinsane2.init()'
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/jflesch/pyinsane";
+ description = "Access and use image scanners";
+ license = licenses.gpl3Plus;
+ platforms = platforms.linux;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyjade/default.nix b/nixpkgs/pkgs/development/python-modules/pyjade/default.nix
new file mode 100644
index 00000000000..ad6742f5deb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyjade/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, buildPythonPackage, fetchPypi, pyramid_mako, nose, django, jinja2
+, tornado, pyramid, Mako, six }:
+
+buildPythonPackage rec {
+ pname = "pyjade";
+ version = "4.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1mycn5cc9cp4fb0i2vzgkkk6d0glnkbilggwb4i99i09vr0vg5cd";
+ };
+
+ buildInputs = [ pyramid_mako nose django jinja2 tornado pyramid Mako ];
+ propagatedBuildInputs = [ six ];
+ postPatch = ''
+ sed -i 's/1.4.99/1.99/' setup.py
+ '';
+ checkPhase = ''
+ nosetests pyjade
+ '';
+ # No tests distributed. https://github.com/syrusakbary/pyjade/issues/262
+ doCheck = false;
+ meta = with stdenv.lib; {
+ description = "Jade syntax template adapter for Django, Jinja2, Mako and Tornado templates";
+ homepage = "https://github.com/syrusakbary/pyjade";
+ license = licenses.mit;
+ maintainers = with maintainers; [ nand0p ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyjet/default.nix b/nixpkgs/pkgs/development/python-modules/pyjet/default.nix
new file mode 100644
index 00000000000..efbced9f3b3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyjet/default.nix
@@ -0,0 +1,30 @@
+{ lib, buildPythonPackage, fetchPypi, cython, nose, numpy }:
+
+buildPythonPackage rec {
+ pname = "pyjet";
+ version = "1.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "89ce11cd4541fb573d68fd60a219e5e1bdeb94cfcfffc917b472fde2aa9a5a31";
+ };
+
+ # fix for python37
+ # https://github.com/scikit-hep/pyjet/issues/8
+ nativeBuildInputs = [ cython ];
+ preBuild = ''
+ for f in pyjet/src/*.{pyx,pxd}; do
+ cython --cplus "$f"
+ done
+ '';
+
+ propagatedBuildInputs = [ numpy ];
+ checkInputs = [ nose ];
+
+ meta = with lib; {
+ homepage = "https://github.com/scikit-hep/pyjet";
+ description = "The interface between FastJet and NumPy";
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ veprbl ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyjwkest/default.nix b/nixpkgs/pkgs/development/python-modules/pyjwkest/default.nix
new file mode 100644
index 00000000000..4460105f617
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyjwkest/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildPythonPackage, fetchPypi,
+ future, pycryptodomex, pytest, requests, six
+}:
+
+buildPythonPackage rec {
+ pname = "pyjwkest";
+ version = "1.4.0";
+
+ meta = {
+ description = "Implementation of JWT, JWS, JWE and JWK";
+ homepage = https://github.com/rohe/pyjwkest;
+ license = lib.licenses.asl20;
+ };
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "128e3c81d02993ac4cd7e29ef7aac767d91daa59380e6883ae589092945e4aad";
+ };
+
+ buildInputs = [ pytest ];
+ propagatedBuildInputs = [ future pycryptodomex requests six ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyjwt/default.nix b/nixpkgs/pkgs/development/python-modules/pyjwt/default.nix
new file mode 100644
index 00000000000..10bfb0d72b6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyjwt/default.nix
@@ -0,0 +1,28 @@
+{ lib, buildPythonPackage, fetchPypi
+, cryptography, ecdsa
+, pytestrunner, pytestcov, pytest }:
+
+buildPythonPackage rec {
+ pname = "PyJWT";
+ version = "1.7.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8d59a976fb773f3e6a39c85636357c4f0e242707394cadadd9814f5cbaa20e96";
+ };
+
+ propagatedBuildInputs = [ cryptography ecdsa ];
+
+ checkInputs = [ pytestrunner pytestcov pytest ];
+
+ postPatch = ''
+ substituteInPlace setup.py --replace "pytest>=4.0.1,<5.0.0" "pytest"
+ '';
+
+ meta = with lib; {
+ description = "JSON Web Token implementation in Python";
+ homepage = https://github.com/jpadilla/pyjwt;
+ license = licenses.mit;
+ maintainers = with maintainers; [ prikhi ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pykde4/default.nix b/nixpkgs/pkgs/development/python-modules/pykde4/default.nix
new file mode 100644
index 00000000000..913453962eb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pykde4/default.nix
@@ -0,0 +1,45 @@
+{ pyqt4, openssl_1_0_2
+, stdenv, callPackage, fetchurl, cmake, automoc4, sip }:
+
+let
+ kdelibs = callPackage ./kdelibs.nix {
+ openssl = openssl_1_0_2;
+ };
+ sip4_19_3 = sip.overrideAttrs (oldAttrs: rec {
+ src = fetchurl {
+ url = "mirror://sourceforge/pyqt/sip/sip-4.19.3/sip-4.19.3.tar.gz";
+ sha256 = "0x2bghbprwl3az1ni3p87i0bq8r99694la93kg65vi0cz12gh3bl";
+ };
+ });
+ pyqt4_fixed = pyqt4.overrideAttrs (oldAttrs: {
+ propagatedBuildInputs = [ sip4_19_3 ];
+ });
+in stdenv.mkDerivation rec {
+ version = "4.14.3";
+ pname = "pykde4";
+
+ src = fetchurl {
+ url = "mirror://kde/stable/${version}/src/${pname}-${version}-${version}.tar.xz";
+ sha256 = "1z40gnkyjlv6ds3cmpzvv99394rhmydr6rxx7qj33m83xnsxgfbz";
+ };
+
+ patches = [ ./dlfcn.patch ];
+
+ buildInputs = [
+ kdelibs
+ ];
+
+ nativeBuildInputs = [ cmake automoc4 ];
+
+ propagatedBuildInputs = [ pyqt4_fixed ];
+
+ enableParallelBuilding = true;
+
+ meta = with stdenv.lib; {
+ platforms = platforms.linux;
+ description = "Python bindings for KDE";
+ license = with licenses; [ gpl2 lgpl2 ];
+ homepage = https://api.kde.org/pykde-4.3-api/;
+ maintainers = with maintainers; [ gnidorah ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pykde4/dlfcn.patch b/nixpkgs/pkgs/development/python-modules/pykde4/dlfcn.patch
new file mode 100644
index 00000000000..63aff46eeab
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pykde4/dlfcn.patch
@@ -0,0 +1,13 @@
+--- __init__.py.orig 2017-11-02 09:06:48.998054459 +0300
++++ ./__init__.py 2017-11-02 09:24:28.089072752 +0300
+@@ -1,4 +1,8 @@
+-import sys,DLFCN
++import sys
++try:
++ import DLFCN
++except ImportError:
++ import os as DLFCN
+ # This is needed to ensure that dynamic_cast and RTTI works inside kdelibs.
+ sys.setdlopenflags(DLFCN.RTLD_NOW|DLFCN.RTLD_GLOBAL)
+
+\ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/pykde4/kdelibs.nix b/nixpkgs/pkgs/development/python-modules/pykde4/kdelibs.nix
new file mode 100644
index 00000000000..9803e7800c3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pykde4/kdelibs.nix
@@ -0,0 +1,38 @@
+{
+ stdenv, fetchurl,
+ automoc4, cmake_2_8, libxslt, perl, pkgconfig, shared-mime-info,
+ attica, docbook_xml_dtd_42, docbook_xsl, giflib,
+ libdbusmenu_qt, libjpeg, phonon, qt4, openssl
+}:
+
+stdenv.mkDerivation rec {
+ version = "4.14.38";
+ pname = "kdelibs";
+ src = fetchurl {
+ url = "mirror://kde/stable/applications/17.08.3/src/${pname}-${version}.tar.xz";
+ sha256 = "1zn3yb09sd22bm54is0rn98amj0398zybl550dp406419sil7z9p";
+ };
+
+ enableParallelBuilding = true;
+
+ nativeBuildInputs = [
+ automoc4 cmake_2_8 libxslt perl pkgconfig shared-mime-info
+ ];
+ buildInputs = [
+ attica giflib libdbusmenu_qt libjpeg openssl
+ ];
+ propagatedBuildInputs = [ qt4 phonon ];
+
+ cmakeFlags = [
+ "-DDOCBOOKXML_CURRENTDTD_DIR=${docbook_xml_dtd_42}/xml/dtd/docbook"
+ "-DDOCBOOKXSL_DIR=${docbook_xsl}/xml/xsl/docbook"
+ "-DKJS_FORCE_DISABLE_PCRE=true"
+ "-DWITH_SOLID_UDISKS2=OFF"
+ ];
+
+ meta = with stdenv.lib; {
+ platforms = platforms.linux;
+ homepage = http://www.kde.org;
+ license = with licenses; [ gpl2 fdl12 lgpl21 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pykdtree/default.nix b/nixpkgs/pkgs/development/python-modules/pykdtree/default.nix
new file mode 100644
index 00000000000..2dd014821e6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pykdtree/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi, numpy, nose, openmp }:
+
+buildPythonPackage rec {
+ pname = "pykdtree";
+ version = "1.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0d49d3bbfa0366dbe29176754ec86df75114a25525b530dcbbb75d3ac4c263e9";
+ };
+
+ buildInputs = [ openmp ];
+
+ propagatedBuildInputs = [ numpy ];
+
+ checkInputs = [ nose ];
+
+ meta = with stdenv.lib; {
+ description = "kd-tree implementation for fast nearest neighbour search in Python";
+ homepage = https://github.com/storpipfugl/pykdtree;
+ license = licenses.lgpl3;
+ maintainers = with maintainers; [ psyanticy ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pykeepass/default.nix b/nixpkgs/pkgs/development/python-modules/pykeepass/default.nix
new file mode 100644
index 00000000000..bb1f60025db
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pykeepass/default.nix
@@ -0,0 +1,29 @@
+{ lib, fetchPypi, buildPythonPackage
+, lxml, pycryptodome, construct
+, argon2_cffi, dateutil, future
+}:
+
+buildPythonPackage rec {
+ pname = "pykeepass";
+ version = "3.0.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2c9e2ddb03ee696ed8aa72c2cddfb81280614864e003226141d68b975aa56f6f";
+ };
+
+ propagatedBuildInputs = [
+ lxml pycryptodome construct
+ argon2_cffi dateutil future
+ ];
+
+ # no tests in PyPI tarball
+ doCheck = false;
+
+ meta = {
+ homepage = https://github.com/pschmitt/pykeepass;
+ description = "Python library to interact with keepass databases (supports KDBX3 and KDBX4)";
+ license = lib.licenses.gpl3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pykerberos/default.nix b/nixpkgs/pkgs/development/python-modules/pykerberos/default.nix
new file mode 100644
index 00000000000..07db7e7002b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pykerberos/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchPypi, buildPythonPackage, krb5 }:
+
+buildPythonPackage rec {
+ pname = "pykerberos";
+ version = "1.2.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0v47p840myqgc7hr4lir72xshcfpa0w8j9n077h3njpqyn6wlbag";
+ };
+
+ nativeBuildInputs = [ krb5 ]; # for krb5-config
+
+ buildInputs = [ krb5 ];
+
+ # there are no tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "High-level interface to Kerberos";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ catern ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pykickstart/default.nix b/nixpkgs/pkgs/development/python-modules/pykickstart/default.nix
new file mode 100644
index 00000000000..27827270fa1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pykickstart/default.nix
@@ -0,0 +1,36 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, urlgrabber
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "pykickstart";
+ version = "1.99.39";
+ md5_path = "d249f60aa89b1b4facd63f776925116d";
+
+ 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 stdenv.lib; {
+ homepage = "http://fedoraproject.org/wiki/Pykickstart";
+ description = "Read and write Fedora kickstart files";
+ license = licenses.gpl2Plus;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pykka/default.nix b/nixpkgs/pkgs/development/python-modules/pykka/default.nix
new file mode 100644
index 00000000000..c07f1b46cbe
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pykka/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchgit
+}:
+
+buildPythonPackage rec {
+ pname = "pykka";
+ version = "1.2.0";
+
+ src = fetchgit {
+ url = "https://github.com/jodal/pykka.git";
+ rev = "refs/tags/v${version}";
+ sha256 = "0qlfw1054ap0cha1m6dbnq51kjxqxaf338g7jwnwy33b3gr8x0hg";
+ };
+
+ # There are no tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = http://www.pykka.org;
+ description = "A Python implementation of the actor model";
+ license = licenses.asl20;
+ maintainers = [];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pylama/default.nix b/nixpkgs/pkgs/development/python-modules/pylama/default.nix
new file mode 100644
index 00000000000..3073f55ca3a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pylama/default.nix
@@ -0,0 +1,34 @@
+{ lib, buildPythonPackage, fetchPypi
+, eradicate, mccabe, pycodestyle, pydocstyle, pyflakes
+, pytest, ipdb }:
+
+buildPythonPackage rec {
+ pname = "pylama";
+ version = "7.7.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "9bae53ef9c1a431371d6a8dca406816a60d547147b60a4934721898f553b7d8f";
+ };
+
+ propagatedBuildInputs = [
+ eradicate
+ mccabe
+ pycodestyle
+ pydocstyle
+ pyflakes
+ ];
+
+ checkInputs = [ pytest ipdb ];
+
+ # tries to mess with the file system
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Code audit tool for python";
+ homepage = https://github.com/klen/pylama;
+ # ambiguous license declarations: https://github.com/klen/pylama/issues/64
+ license = [ licenses.lgpl3 ];
+ maintainers = with maintainers; [ dotlambda ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pylast/default.nix b/nixpkgs/pkgs/development/python-modules/pylast/default.nix
new file mode 100644
index 00000000000..6d58fbfb21a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pylast/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k, certifi, six }:
+
+buildPythonPackage rec {
+ pname = "pylast";
+ version = "3.1.0";
+
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0sk08l8dq0r4xgmqkxq6jzlbam34k95adaw468n0bh6cps18ddby";
+ };
+
+ propagatedBuildInputs = [ certifi six ];
+
+ # tests require last.fm credentials
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/pylast/pylast;
+ description = "A python interface to last.fm (and compatibles)";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ rvolosatovs ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pylev/default.nix b/nixpkgs/pkgs/development/python-modules/pylev/default.nix
new file mode 100644
index 00000000000..f198d214172
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pylev/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildPythonPackage, fetchFromGitHub }:
+
+buildPythonPackage {
+ pname = "pylev";
+ version = "1.3.0";
+
+ # No tests in PyPi tarball
+ src = fetchFromGitHub {
+ owner = "toastdriven";
+ repo = "pylev";
+ # Can't use a tag because it's missing
+ # https://github.com/toastdriven/pylev/issues/10
+ # rev = "v${version};
+ rev = "72e3d490515c3188e2acac9c15ea1b466f9ff938";
+ sha256 = "18dg1rfnqgfl6x4vafiq4la9d7f65xak19gcvngslq0bm1z6hyd8";
+ };
+
+ meta = with lib; {
+ homepage = https://github.com/toastdriven/pylev;
+ description = "A pure Python Levenshtein implementation that's not freaking GPL'd";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ jakewaksbaum ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pylibacl/default.nix b/nixpkgs/pkgs/development/python-modules/pylibacl/default.nix
new file mode 100644
index 00000000000..f366f6e57f6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pylibacl/default.nix
@@ -0,0 +1,26 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pkgs
+}:
+
+buildPythonPackage rec {
+ pname = "pylibacl";
+ version = "0.5.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0c3xw1s5bh6jnsc0wwyxnn6kn6x6rpbmmi05ap1f81fyqlgrzgj0";
+ };
+
+ # ERROR: testExtended (tests.test_acls.AclExtensions)
+ # IOError: [Errno 0] Error
+ doCheck = false;
+
+ buildInputs = with pkgs; [ acl ];
+
+ meta = {
+ description = "A Python extension module for POSIX ACLs, it can be used to query, list, add, and remove ACLs from files and directories under operating systems that support them";
+ license = lib.licenses.lgpl21Plus;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pylibconfig2/default.nix b/nixpkgs/pkgs/development/python-modules/pylibconfig2/default.nix
new file mode 100644
index 00000000000..6cea70c5708
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pylibconfig2/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi, pyparsing }:
+buildPythonPackage rec {
+ pname = "pylibconfig2";
+ version = "0.2.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1iwm11v0ghv2pq2cyvly7gdwrhxsx6iwi581fz46l0snhgcd4sqq";
+ };
+
+ # tests not included in the distribution
+ doCheck = false;
+
+ propagatedBuildInputs = [ pyparsing ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/heinzK1X/pylibconfig2;
+ description = "Pure python library for libconfig syntax";
+ license = licenses.gpl3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pylibgen/default.nix b/nixpkgs/pkgs/development/python-modules/pylibgen/default.nix
new file mode 100644
index 00000000000..559b75eec41
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pylibgen/default.nix
@@ -0,0 +1,33 @@
+{ lib, buildPythonPackage, fetchFromGitHub
+, pythonOlder
+, requests
+, pytest
+, pre-commit
+}:
+
+buildPythonPackage rec {
+ pname = "pylibgen";
+ version = "2.0.2";
+ disabled = pythonOlder "3.6";
+
+ src = fetchFromGitHub {
+ owner = "joshuarli";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "1a9vhkgnkiwkicr2s287254mrkpnw9jq5r63q820dp3h74ba4kl1";
+ };
+
+ propagatedBuildInputs = [ requests ];
+
+ checkInputs = [ pytest pre-commit ];
+
+ # literally every tests does a network call
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Python interface to Library Genesis";
+ homepage = https://pypi.org/project/pylibgen/;
+ license = licenses.mit;
+ maintainers = [ maintainers.nico202 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyliblo/default.nix b/nixpkgs/pkgs/development/python-modules/pyliblo/default.nix
new file mode 100644
index 00000000000..3c637ffced3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyliblo/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, isPyPy
+, liblo
+, cython
+}:
+
+buildPythonPackage rec {
+ pname = "pyliblo";
+ version = "0.10.0";
+ disabled = isPyPy;
+
+ src = fetchurl {
+ url = "http://das.nasophon.de/download/${pname}-${version}.tar.gz";
+ sha256 = "13vry6xhxm7adnbyj28w1kpwrh0kf7nw83cz1yq74wl21faz2rzw";
+ };
+
+ buildInputs = [ liblo cython ];
+
+ meta = with stdenv.lib; {
+ homepage = http://das.nasophon.de/pyliblo/;
+ description = "Python wrapper for the liblo OSC library";
+ license = licenses.lgpl21;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pylibmc/default.nix b/nixpkgs/pkgs/development/python-modules/pylibmc/default.nix
new file mode 100644
index 00000000000..9d21cacef9a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pylibmc/default.nix
@@ -0,0 +1,23 @@
+{ buildPythonPackage, fetchPypi, stdenv, libmemcached, zlib, cyrus_sasl }:
+
+buildPythonPackage rec {
+ version = "1.6.0";
+ pname = "pylibmc";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1n6nvvhl0g52gpzzwdj1my6049xljkfwyxxygnwda9smrbj7pyay";
+ };
+
+ buildInputs = [ libmemcached zlib cyrus_sasl ];
+ setupPyBuildFlags = [ "--with-sasl2" ];
+
+ # requires an external memcached server running
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Quick and small memcached client for Python";
+ homepage = http://sendapatch.se/projects/pylibmc/;
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pylint/1.9.nix b/nixpkgs/pkgs/development/python-modules/pylint/1.9.nix
new file mode 100644
index 00000000000..571a9446e11
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pylint/1.9.nix
@@ -0,0 +1,51 @@
+{ stdenv, lib, buildPythonPackage, fetchPypi, astroid, six, isort,
+ mccabe, configparser, backports_functools_lru_cache, singledispatch,
+ pytest, pytestrunner, pyenchant }:
+
+buildPythonPackage rec {
+ pname = "pylint";
+ version = "1.9.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "004kfapkqxqy2s85pmddqv0fabxdxywxrlbi549p0v237pr2v94p";
+ };
+
+ checkInputs = [ pytest pytestrunner pyenchant ];
+
+ propagatedBuildInputs = [ astroid six isort mccabe configparser backports_functools_lru_cache singledispatch ];
+
+ 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; [ nand0p ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pylint/default.nix b/nixpkgs/pkgs/development/python-modules/pylint/default.nix
new file mode 100644
index 00000000000..4faeb05280d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pylint/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, lib, buildPythonPackage, fetchPypi, pythonOlder, astroid,
+ isort, mccabe, pytest, pytestrunner }:
+
+buildPythonPackage rec {
+ pname = "pylint";
+ version = "2.3.1";
+
+ disabled = pythonOlder "3.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1wgzq0da87m7708hrc9h4bc5m4z2p7379i4xyydszasmjns3sgkj";
+ };
+
+ nativeBuildInputs = [ pytestrunner ];
+
+ checkInputs = [ pytest ];
+
+ propagatedBuildInputs = [ astroid isort mccabe ];
+
+ 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 tests
+ [ "member_checks_py37" "iterable_context_py36" ] ++
+ # 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; [ nand0p ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pylru/default.nix b/nixpkgs/pkgs/development/python-modules/pylru/default.nix
new file mode 100644
index 00000000000..8ca565834d4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pylru/default.nix
@@ -0,0 +1,18 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "pylru";
+ version = "1.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "492f934bb98dc6c8b2370c02c95c65516ddc08c8f64d27f70087eb038621d297";
+ };
+
+ meta = with lib; {
+ homepage = "https://github.com/jlhutch/pylru";
+ description = "A least recently used (LRU) cache implementation";
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ abbradar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyls-black/default.nix b/nixpkgs/pkgs/development/python-modules/pyls-black/default.nix
new file mode 100644
index 00000000000..bd27de6eba7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyls-black/default.nix
@@ -0,0 +1,32 @@
+{ lib, buildPythonPackage, fetchFromGitHub
+, black, toml, pytest, python-language-server, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "pyls-black";
+ version = "0.4.4";
+
+ src = fetchFromGitHub {
+ owner = "rupert";
+ repo = "pyls-black";
+ rev = "v${version}";
+ sha256 = "1ynynay9g6yma39szbzf15ypq3c72fg1i0kjmq1dwxarj68i2gf9";
+ };
+
+ disabled = !isPy3k;
+
+ checkPhase = ''
+ pytest
+ '';
+
+ checkInputs = [ pytest ];
+
+ propagatedBuildInputs = [ black toml python-language-server ];
+
+ meta = with lib; {
+ homepage = https://github.com/rupert/pyls-black;
+ description = "Black plugin for the Python Language Server";
+ license = licenses.mit;
+ maintainers = [ maintainers.mic92 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyls-isort/default.nix b/nixpkgs/pkgs/development/python-modules/pyls-isort/default.nix
new file mode 100644
index 00000000000..fa94441e200
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyls-isort/default.nix
@@ -0,0 +1,29 @@
+{ lib, buildPythonPackage, fetchFromGitHub
+, python-language-server, isort
+}:
+
+buildPythonPackage rec {
+ pname = "pyls-isort";
+ version = "0.1.1";
+
+ src = fetchFromGitHub {
+ owner = "paradoxxxzero";
+ repo = "pyls-isort";
+ rev = version;
+ sha256 = "0mf8c6dw5lsj9np20p0vrhr1yfycq2awjk2pil28l579xj9nr0dc";
+ };
+
+ # no tests
+ doCheck = false;
+
+ propagatedBuildInputs = [
+ isort python-language-server
+ ];
+
+ meta = with lib; {
+ homepage = https://github.com/paradoxxxzero/pyls-isort;
+ description = "Isort plugin for python-language-server";
+ license = licenses.mit;
+ maintainers = [ maintainers.mic92 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyls-mypy/default.nix b/nixpkgs/pkgs/development/python-modules/pyls-mypy/default.nix
new file mode 100644
index 00000000000..414c2cccbea
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyls-mypy/default.nix
@@ -0,0 +1,35 @@
+{ lib, buildPythonPackage, fetchFromGitHub
+, future, python-language-server, mypy, configparser
+, pytest, mock, isPy3k, pytestcov, coverage
+}:
+
+buildPythonPackage rec {
+ pname = "pyls-mypy";
+ version = "0.1.6";
+
+ src = fetchFromGitHub {
+ owner = "tomv564";
+ repo = "pyls-mypy";
+ rev = version;
+ sha256 = "0c1111m9h6f05frkyj6i757q9y2lijpbv8nxmwgp3nqbpkvfnmrk";
+ };
+
+ disabled = !isPy3k;
+
+ checkPhase = ''
+ HOME=$TEMPDIR pytest
+ '';
+
+ checkInputs = [ pytest mock pytestcov coverage ];
+
+ propagatedBuildInputs = [
+ mypy python-language-server future configparser
+ ];
+
+ meta = with lib; {
+ homepage = https://github.com/tomv564/pyls-mypy;
+ description = "Mypy plugin for the Python Language Server";
+ license = licenses.mit;
+ maintainers = [ maintainers.mic92 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pylti/default.nix b/nixpkgs/pkgs/development/python-modules/pylti/default.nix
new file mode 100644
index 00000000000..752755700b2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pylti/default.nix
@@ -0,0 +1,52 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, httplib2
+, oauth
+, oauth2
+, semantic-version
+, flask
+, httpretty
+, oauthlib
+, pyflakes
+, pytest
+, pytestcache
+, pytestcov
+, covCore
+, pytest-flakes
+, pytestpep8
+, sphinx
+, mock
+, chalice
+, isPy27
+}:
+
+buildPythonPackage rec {
+ pname = "PyLTI";
+ version = "0.7.0";
+
+ disabled = !isPy27;
+
+ # There is no need to fix mock. https://github.com/mitodl/pylti/pull/48
+ postPatch = ''
+ substituteInPlace setup.py --replace "mock==1.0.1" "mock"
+ '';
+
+ propagatedBuildInputs = [ httplib2 oauth oauth2 semantic-version ];
+ checkInputs = [
+ flask httpretty oauthlib pyflakes pytest pytestcache pytestcov covCore
+ pytest-flakes pytestpep8 sphinx mock chalice
+ ];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "80938a235b1ab390f6889a95237d087ea7adde5cc50fcae9c80c49898e8ee78e";
+ };
+
+ meta = {
+ description = "Implementation of IMS LTI interface that works with edX";
+ homepage = "https://github.com/mitodl/pylti";
+ license = lib.licenses.bsdOriginal;
+ maintainers = with lib.maintainers; [ layus ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pymacaroons/default.nix b/nixpkgs/pkgs/development/python-modules/pymacaroons/default.nix
new file mode 100644
index 00000000000..96023c01e1e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pymacaroons/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildPythonPackage, fetchPypi, six, pynacl }:
+
+buildPythonPackage rec {
+ pname = "pymacaroons";
+ version = "0.13.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1e6bba42a5f66c245adf38a5a4006a99dcc06a0703786ea636098667d42903b8";
+ };
+
+ propagatedBuildInputs = [
+ six
+ pynacl
+ ];
+
+ # Tests require an old version of hypothesis
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Macaroon library for Python";
+ homepage = https://github.com/ecordell/pymacaroons;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pymaging/default.nix b/nixpkgs/pkgs/development/python-modules/pymaging/default.nix
new file mode 100644
index 00000000000..81100a8e214
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pymaging/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+}:
+
+buildPythonPackage {
+ pname = "pymaging";
+ version = "unstable-2016-11-16";
+
+ src = fetchFromGitHub {
+ owner = "ojii";
+ repo = "pymaging";
+ rev = "596a08fce5664e58d6e8c96847393fbe987783f2";
+ sha256 = "18g3n7kfrark30l4vzykh0gdbnfv5wb1zvvjbs17sj6yampypn38";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Pure Python imaging library with Python 2.6, 2.7, 3.1+ support";
+ homepage = http://pymaging.rtfd.org;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mic92 ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pymaging_png/default.nix b/nixpkgs/pkgs/development/python-modules/pymaging_png/default.nix
new file mode 100644
index 00000000000..61239f1cbe3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pymaging_png/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, pymaging
+}:
+
+buildPythonPackage {
+ pname = "pymaging-png";
+ version = "unstable-2016-11-16";
+
+ src = fetchFromGitHub {
+ owner = "ojii";
+ repo = "pymaging-png";
+ rev = "83d85c44e4b2342818e6c068065e031a9f81bb9f";
+ sha256 = "1mknxvsq0lr1ffm8amzm3w2prn043c6ghqgpxlkw83r988p5fn57";
+ };
+
+ propagatedBuildInputs = [ pymaging ];
+
+ meta = with stdenv.lib; {
+ description = "Pure Python imaging library with Python 2.6, 2.7, 3.1+ support";
+ homepage = https://github.com/ojii/pymaging-png/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mic92 ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pymatgen-lammps/default.nix b/nixpkgs/pkgs/development/python-modules/pymatgen-lammps/default.nix
new file mode 100644
index 00000000000..c38f56885d1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pymatgen-lammps/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, fetchurl
+, buildPythonPackage
+, pymatgen
+, pytestrunner
+, pytest
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "pymatgen-lammps";
+ version = "0.4.5";
+ disabled = (!isPy3k);
+
+ src = fetchurl {
+ url = "https://gitlab.com/costrouc/${pname}/-/archive/v${version}/${pname}-v${version}.tar.gz";
+ sha256 = "0shldl8is3195jmji7dr3zsh1bzxlahaqrmpr28niks7nnfj80fx";
+ };
+
+ buildInputs = [ pytestrunner ];
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ pymatgen ];
+
+ meta = {
+ description = "A LAMMPS wrapper using pymatgen";
+ homepage = https://gitlab.com/costrouc/pymatgen-lammps;
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pymatgen/default.nix b/nixpkgs/pkgs/development/python-modules/pymatgen/default.nix
new file mode 100644
index 00000000000..8403ec9add7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pymatgen/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi, glibcLocales, numpy, pydispatcher, sympy, requests, monty, ruamel_yaml, six, scipy, tabulate, enum34, matplotlib, palettable, spglib, pandas, networkx }:
+
+buildPythonPackage rec {
+ pname = "pymatgen";
+ version = "2019.2.28";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "fe4c9b8b16d618fa531a09073d69db6ab02c0c379e672862a41163e39ac91e85";
+ };
+
+ nativeBuildInputs = [ glibcLocales ];
+ propagatedBuildInputs = [ numpy pydispatcher sympy requests monty ruamel_yaml six scipy tabulate enum34 matplotlib palettable spglib pandas networkx ];
+
+ # No tests in pypi tarball.
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A robust materials analysis code that defines core object representations for structures and molecules";
+ homepage = http://pymatgen.org/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ psyanticy ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pymbolic/default.nix b/nixpkgs/pkgs/development/python-modules/pymbolic/default.nix
new file mode 100644
index 00000000000..0d13b377b13
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pymbolic/default.nix
@@ -0,0 +1,44 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytools
+, pytest
+, six
+, sympy
+, pexpect
+, symengine
+}:
+
+buildPythonPackage rec {
+ pname = "pymbolic";
+ version = "2018.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a47d5524d6a3cdc8a028079ce632eeb45ceea7243272d234f250622087688207";
+ };
+
+ postConfigure = ''
+ substituteInPlace setup.py \
+ --replace "\"pytest>=2.3\"," ""
+ '';
+
+ checkInputs = [ sympy pexpect symengine pytest ];
+ propagatedBuildInputs = [
+ pytools
+ six
+ ];
+
+ # too many tests fail
+ doCheck = false;
+ checkPhase = ''
+ pytest test
+ '';
+
+ meta = with lib; {
+ description = "A package for symbolic computation";
+ homepage = https://mathema.tician.de/software/pymbolic;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pymc3/default.nix b/nixpkgs/pkgs/development/python-modules/pymc3/default.nix
new file mode 100644
index 00000000000..35e5f7aa69a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pymc3/default.nix
@@ -0,0 +1,63 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+, pythonOlder
+, Theano
+, pandas
+, patsy
+, joblib
+, tqdm
+, six
+, h5py
+, pytest
+, nose
+, parameterized
+}:
+
+buildPythonPackage rec {
+ pname = "pymc3";
+ version = "3.7";
+ disabled = pythonOlder "3.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0ijna2ghvniryllr56qr4vi4k9q58mq21yx36nj5kg2j17f7rkbr";
+ };
+
+ # No need for coverage stats in Nix builds
+ postPatch = ''
+ substituteInPlace setup.py --replace ", 'pytest-cov'" ""
+ '';
+
+ propagatedBuildInputs = [
+ Theano
+ pandas
+ patsy
+ joblib
+ tqdm
+ six
+ h5py
+ ];
+
+ checkInputs = [
+ pytest
+ nose
+ parameterized
+ ];
+
+ # The test suite is computationally intensive and test failures are not
+ # indicative for package usability hence tests are disabled by default.
+ doCheck = false;
+
+ # For some reason tests are run as a part of the *install* phase if enabled.
+ # Theano writes compiled code to ~/.theano hence we set $HOME.
+ preInstall = "export HOME=$(mktemp -d)";
+ postInstall = "rm -rf $HOME";
+
+ meta = {
+ description = "Bayesian estimation, particularly using Markov chain Monte Carlo (MCMC)";
+ homepage = https://github.com/pymc-devs/pymc3;
+ license = lib.licenses.asl20;
+ maintainers = with lib.maintainers; [ ilya-kolpakov ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pymediainfo/default.nix b/nixpkgs/pkgs/development/python-modules/pymediainfo/default.nix
new file mode 100644
index 00000000000..67318bac9bf
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pymediainfo/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchPypi, buildPythonPackage
+, libmediainfo
+, setuptools_scm
+, pytest, glibcLocales }:
+
+buildPythonPackage rec {
+ pname = "pymediainfo";
+ version = "4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1yjs208c34p2xsc0r8vbi264ii5hixh546718n06b7v670glqjir";
+ };
+
+ postPatch = ''
+ substituteInPlace pymediainfo/__init__.py \
+ --replace "libmediainfo.0.dylib" \
+ "${libmediainfo}/lib/libmediainfo.0${stdenv.hostPlatform.extensions.sharedLibrary}" \
+ --replace "libmediainfo.dylib" \
+ "${libmediainfo}/lib/libmediainfo${stdenv.hostPlatform.extensions.sharedLibrary}" \
+ --replace "libmediainfo.so.0" \
+ "${libmediainfo}/lib/libmediainfo${stdenv.hostPlatform.extensions.sharedLibrary}.0"
+ '';
+
+ nativeBuildInputs = [ setuptools_scm ];
+
+ checkInputs = [ glibcLocales pytest ];
+
+ checkPhase = ''
+ export LC_ALL=en_US.UTF-8
+ py.test -k 'not test_parse_url' tests
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Python wrapper for the mediainfo library";
+ homepage = https://github.com/sbraz/pymediainfo;
+ license = licenses.mit;
+ maintainers = with maintainers; [ jfrankenau ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyment/default.nix b/nixpkgs/pkgs/development/python-modules/pyment/default.nix
new file mode 100644
index 00000000000..bb27e5b3c3d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyment/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "pyment";
+ version = "0.3.3";
+
+ src = fetchPypi {
+ pname = "Pyment";
+ inherit version;
+ sha256 = "951a4c52d6791ccec55bc739811169eed69917d3874f5fe722866623a697f39d";
+ };
+
+ # Tests are not included in PyPI tarball
+ doCheck = false;
+
+ meta = with lib; {
+ homepage = https://github.com/dadadel/pyment;
+ description = "Create, update or convert docstrings in existing Python files, managing several styles";
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ jethro ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pymetar/default.nix b/nixpkgs/pkgs/development/python-modules/pymetar/default.nix
new file mode 100644
index 00000000000..2baf3181ac6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pymetar/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, python, buildPythonPackage, isPy3k, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "pymetar";
+ version = "1.1";
+
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0y42l7mmp7jn4pzg66x3k57c6hqpxc22mgzgaqqpblkx2kzh42n9";
+ };
+
+ checkPhase = ''
+ cd testing/smoketest
+ tar xzf reports.tgz
+ mkdir logs
+ patchShebangs runtests.sh
+ substituteInPlace runtests.sh --replace "break" "exit 1" # fail properly
+ export PYTHONPATH="$PYTHONPATH:$out/${python.sitePackages}"
+ ./runtests.sh
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A command-line tool to show the weather report by a given station ID";
+ homepage = http://www.schwarzvogel.de/software/pymetar.html;
+ license = licenses.gpl2Plus;
+ maintainers = with maintainers; [ erosennin ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pymongo/default.nix b/nixpkgs/pkgs/development/python-modules/pymongo/default.nix
new file mode 100644
index 00000000000..792b8b1bd5b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pymongo/default.nix
@@ -0,0 +1,20 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "pymongo";
+ version = "3.7.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8c74e2a9b594f7962c62cef7680a4cb92a96b4e6e3c2f970790da67cc0213a7e";
+ };
+
+ # Tests call a running mongodb instance
+ doCheck = false;
+
+ meta = with lib; {
+ homepage = https://github.com/mongodb/mongo-python-driver;
+ license = licenses.asl20;
+ description = "Python driver for MongoDB";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pympler/default.nix b/nixpkgs/pkgs/development/python-modules/pympler/default.nix
new file mode 100644
index 00000000000..a9350f20eb3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pympler/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "Pympler";
+ version = "0.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0ki7bqp1h9l1xc2k1h4vjyzsgs20i8ingvcdhszyi72s28wyf4bs";
+ };
+
+ postPatch = ''
+ rm test/asizeof/test_asizeof.py
+ '';
+
+ doCheck = stdenv.hostPlatform.isLinux;
+
+ meta = with stdenv.lib; {
+ description = "Tool to measure, monitor and analyze memory behavior";
+ homepage = https://pythonhosted.org/Pympler/;
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pymsgbox/default.nix b/nixpkgs/pkgs/development/python-modules/pymsgbox/default.nix
new file mode 100644
index 00000000000..38cc411f54d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pymsgbox/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchPypi, buildPythonPackage, tkinter }:
+
+buildPythonPackage rec {
+ pname = "PyMsgBox";
+ version = "1.0.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0kmd00w7p6maiyqpqqb2j8m6v2gh9c0h5i198pa02bc1c1m1321q";
+ extension = "zip";
+ };
+
+ propagatedBuildInputs = [ tkinter ];
+
+ # Finding tests fails
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A simple, cross-platform, pure Python module for JavaScript-like message boxes";
+ homepage = https://github.com/asweigart/PyMsgBox;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ jluttine ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pymssql/default.nix b/nixpkgs/pkgs/development/python-modules/pymssql/default.nix
new file mode 100644
index 00000000000..c162f065b79
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pymssql/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildPythonPackage, fetchPypi, freetds, cython, setuptools-git }:
+
+buildPythonPackage rec {
+ pname = "pymssql";
+ version = "2.1.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1yvs3azd8dkf40lybr9wvswvf4hbxn5ys9ypansmbbb328dyn09j";
+ };
+
+ buildInputs = [cython setuptools-git];
+ propagatedBuildInputs = [freetds];
+
+ # The tests require a running instance of SQLServer, so we skip them
+ doCheck = false;
+
+ meta = with lib; {
+ homepage = http://pymssql.org/en/stable/;
+ description = "A simple database interface for Python that builds on top
+ of FreeTDS to provide a Python DB-API (PEP-249) interface to Microsoft
+ SQL Server";
+ license = licenses.lgpl21;
+ maintainers = with maintainers; [ mredaelli ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pymvglive/default.nix b/nixpkgs/pkgs/development/python-modules/pymvglive/default.nix
new file mode 100644
index 00000000000..3b7011fa748
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pymvglive/default.nix
@@ -0,0 +1,19 @@
+{ lib, buildPythonPackage, fetchPypi, requests }:
+
+buildPythonPackage rec {
+ pname = "PyMVGLive";
+ version = "1.1.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0sh4xm74im9qxzpbrlc5h1vnpgvpybnpvdcav1iws0b561zdr08c";
+ };
+
+ propagatedBuildInputs = [ requests ];
+
+ meta = with lib; {
+ description = "get live-data from mvg-live.de";
+ homepage = https://github.com/pc-coholic/PyMVGLive;
+ license = licenses.free;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pymysql/default.nix b/nixpkgs/pkgs/development/python-modules/pymysql/default.nix
new file mode 100644
index 00000000000..4529a736f13
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pymysql/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, cryptography
+}:
+
+buildPythonPackage rec {
+ pname = "PyMySQL";
+ version = "0.9.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1ry8lxgdc1p3k7gbw20r405jqi5lvhi5wk83kxdbiv8xv3f5kh6q";
+ };
+
+ propagatedBuildInputs = [ cryptography ];
+
+ # Wants to connect to MySQL
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Pure Python MySQL Client";
+ homepage = https://github.com/PyMySQL/PyMySQL;
+ license = licenses.mit;
+ maintainers = [ maintainers.kalbasit ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pymysqlsa/default.nix b/nixpkgs/pkgs/development/python-modules/pymysqlsa/default.nix
new file mode 100644
index 00000000000..11813d3d1bc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pymysqlsa/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pymysql
+, sqlalchemy
+}:
+
+buildPythonPackage rec {
+ pname = "pymysql-sa";
+ version = "1.0";
+
+ src = fetchPypi {
+ inherit version;
+ pname = "pymysql_sa";
+ sha256 = "a2676bce514a29b2d6ab418812259b0c2f7564150ac53455420a20bd7935314a";
+ };
+
+ propagatedBuildInputs = [ pymysql sqlalchemy ];
+
+ meta = with stdenv.lib; {
+ description = "PyMySQL dialect for SQL Alchemy";
+ homepage = https://pypi.python.org/pypi/pymysql_sa;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pymystem3/default.nix b/nixpkgs/pkgs/development/python-modules/pymystem3/default.nix
new file mode 100644
index 00000000000..5311d981752
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pymystem3/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+, requests
+, flake8
+, mock
+, pytest
+, mystem
+}:
+
+buildPythonPackage rec {
+ pname = "pymystem3";
+ version = "0.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "15gv78m17g958gfka6rr3rg230g6b5ssgk8bfpsp7k2iajhxdbhs";
+ };
+
+ propagatedBuildInputs = [ requests ];
+ checkInputs = [ flake8 mock pytest ];
+
+ postPatch = ''
+ sed -i 's#^_mystem_info = .*#_mystem_info = ["${mystem}/bin", "${mystem}/bin/mystem"]#' pymystem3/constants.py
+ '';
+
+ meta = with lib; {
+ description = "Python wrapper for the Yandex MyStem 3.1 morpholocial analyzer of the Russian language";
+ homepage = https://github.com/nlpub/pymystem3;
+ license = licenses.mit;
+ maintainers = with maintainers; [ abbradar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pynac/default.nix b/nixpkgs/pkgs/development/python-modules/pynac/default.nix
new file mode 100644
index 00000000000..755dda341c9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pynac/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+}:
+
+buildPythonPackage {
+ pname = "pynac";
+ version = "0.2";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/project/pynac/pynac/pynac-0.2/pynac-0.2.tar.gz";
+ sha256 = "0avzqqcxl54karjmla9jbsyid98mva36lxahwmrsx5h40ys2ggxp";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/se-esss-litterbox/Pynac;
+ description = "A Python wrapper around the Dynac charged particle simulator";
+ license = licenses.gpl3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pynacl/default.nix b/nixpkgs/pkgs/development/python-modules/pynacl/default.nix
new file mode 100644
index 00000000000..1561c3c4d6d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pynacl/default.nix
@@ -0,0 +1,47 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, libsodium
+, cffi
+, six
+, hypothesis
+}:
+
+buildPythonPackage rec {
+ pname = "pynacl";
+ version = "1.3.0";
+
+ src = fetchPypi {
+ inherit version;
+ pname = "PyNaCl";
+ sha256 = "0c6100edd16fefd1557da078c7a31e7b7d7a52ce39fdca2bec29d4f7b6e7600c";
+ };
+
+ checkInputs = [ pytest hypothesis ];
+ buildInputs = [ libsodium ];
+ propagatedBuildInputs = [ cffi six ];
+
+ SODIUM_INSTALL = "system";
+
+ # fixed in next release 1.3.0+
+ # https://github.com/pyca/pynacl/pull/480
+ postPatch = ''
+ substituteInPlace tests/test_bindings.py \
+ --replace "average_size=128," ""
+ '';
+
+ checkPhase = ''
+ py.test
+ '';
+
+ # https://github.com/pyca/pynacl/issues/550
+ PYTEST_ADDOPTS = "-k 'not test_wrong_types'";
+
+ meta = with stdenv.lib; {
+ maintainers = with maintainers; [ va1entin ];
+ description = "Python binding to the Networking and Cryptography (NaCl) library";
+ homepage = https://github.com/pyca/pynacl/;
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pynamodb/default.nix b/nixpkgs/pkgs/development/python-modules/pynamodb/default.nix
new file mode 100644
index 00000000000..1e567a9935c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pynamodb/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, botocore
+, fetchPypi
+, mock
+, mypy
+, python-dateutil
+, pytest
+, requests
+}:
+
+buildPythonPackage rec {
+ pname = "pynamodb";
+ version = "4.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "196pab5whswy3bgi2s842asjhyka2f9mw98m84bvqjmfw0m7x4y0";
+ };
+
+ propagatedBuildInputs = [ python-dateutil botocore ];
+ checkInputs = [ requests mock pytest mypy ];
+
+ meta = with lib; {
+ description = "A Pythonic interface for Amazon’s DynamoDB that supports Python 2 and 3.";
+ longDescription = ''
+ DynamoDB is a great NoSQL service provided by Amazon, but the API is
+ verbose. PynamoDB presents you with a simple, elegant API.
+ '';
+ homepage = "http://jlafon.io/pynamodb.html";
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pync/default.nix b/nixpkgs/pkgs/development/python-modules/pync/default.nix
new file mode 100644
index 00000000000..24d285423f1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pync/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy27
+, dateutil
+, pkgs
+}:
+
+buildPythonPackage rec {
+ version = "2.0.3";
+ pname = "pync";
+ disabled = ! isPy27;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "38b9e61735a3161f9211a5773c5f5ea698f36af4ff7f77fa03e8d1ff0caa117f";
+ };
+
+ buildInputs = [ pkgs.coreutils ];
+ propagatedBuildInputs = [ dateutil ];
+
+ preInstall = stdenv.lib.optionalString stdenv.isDarwin ''
+ sed -i 's|^\([ ]*\)self.bin_path.*$|\1self.bin_path = "${pkgs.terminal-notifier}/bin/terminal-notifier"|' build/lib/pync/TerminalNotifier.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Python Wrapper for Mac OS 10.8 Notification Center";
+ homepage = https://pypi.python.org/pypi/pync/1.4;
+ license = licenses.mit;
+ platforms = platforms.darwin;
+ maintainers = with maintainers; [ lovek323 ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pynisher/default.nix b/nixpkgs/pkgs/development/python-modules/pynisher/default.nix
new file mode 100644
index 00000000000..5f877fd90d2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pynisher/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchPypi, psutil, docutils }:
+
+buildPythonPackage rec {
+ pname = "pynisher";
+ version = "0.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1b1079315ad1009de108c9ad701f6ae5274264e64503fc22c2de366d99953f34";
+ };
+
+ propagatedBuildInputs = [ psutil docutils ];
+
+ # no tests in the Pypi archive
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "The pynisher is a little module intended to limit a functions resources.";
+ homepage = https://github.com/sfalkner/pynisher;
+ license = licenses.mit;
+ maintainers = with maintainers; [ psyanticy ];
+ };
+
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/pynmea2/default.nix b/nixpkgs/pkgs/development/python-modules/pynmea2/default.nix
new file mode 100644
index 00000000000..f950c7798b8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pynmea2/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPythonPackage, fetchPypi, pytest }:
+
+buildPythonPackage rec {
+ pname = "pynmea2";
+ version = "1.15.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8b83fa7e3e668af5e182ef1c2fd4a535433ecadf60d7b627280172d695a1646b";
+ };
+
+ checkInputs = [ pytest ];
+ checkPhase = "pytest";
+
+ meta = {
+ homepage = https://github.com/Knio/pynmea2;
+ description = "Python library for the NMEA 0183 protcol";
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ geistesk ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pynvim/default.nix b/nixpkgs/pkgs/development/python-modules/pynvim/default.nix
new file mode 100644
index 00000000000..e5e14f44e10
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pynvim/default.nix
@@ -0,0 +1,41 @@
+{ buildPythonPackage
+, fetchPypi
+, lib
+, nose
+, msgpack
+, greenlet
+, trollius
+, pythonOlder
+, isPyPy
+}:
+
+buildPythonPackage rec {
+ pname = "pynvim";
+ version = "0.3.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "01dybk4vs452pljn1q3il5z2sd313ki0lgiglc0xmjc6wp290r6g";
+ };
+
+ checkInputs = [ nose ];
+
+ checkPhase = ''
+ nosetests
+ '';
+
+ # Tests require pkgs.neovim,
+ # which we cannot add because of circular dependency.
+ doCheck = false;
+
+ propagatedBuildInputs = [ msgpack ]
+ ++ lib.optional (!isPyPy) greenlet
+ ++ lib.optional (pythonOlder "3.4") trollius;
+
+ meta = {
+ description = "Python client for Neovim";
+ homepage = "https://github.com/neovim/python-client";
+ license = lib.licenses.asl20;
+ maintainers = with lib.maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pynzb/default.nix b/nixpkgs/pkgs/development/python-modules/pynzb/default.nix
new file mode 100644
index 00000000000..4225d30c6fe
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pynzb/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "pynzb";
+ version = "0.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0735b3889a1174bbb65418ee503629d3f5e4a63f04b16f46ffba18253ec3ef17";
+ };
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest -s pynzb -t .
+ '';
+
+ # Can't get them working
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/ericflo/pynzb;
+ description = "Unified API for parsing NZB files";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ domenkozar ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyobjc/default.nix b/nixpkgs/pkgs/development/python-modules/pyobjc/default.nix
new file mode 100644
index 00000000000..8c7af06b743
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyobjc/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchPypi, isPy3k, buildPythonPackage }:
+
+buildPythonPackage rec {
+ pname = "pyobjc";
+ version = "5.1.2";
+
+ # Gives "No matching distribution found for
+ # pyobjc-framework-Collaboration==4.0b1 (from pyobjc==4.0b1)"
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ccfc96382bf04977c68a06733f1d7499a7ddeb1f74760e3f8de483f9a542e691";
+ };
+
+ meta = {
+ description = "A bridge between the Python and Objective-C programming languages";
+ license = stdenv.lib.licenses.mit;
+ maintainers = with stdenv.lib.maintainers; [ sauyon ];
+ homepage = https://pythonhosted.org/pyobjc/;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyocr/default.nix b/nixpkgs/pkgs/development/python-modules/pyocr/default.nix
new file mode 100644
index 00000000000..ca606767f4d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyocr/default.nix
@@ -0,0 +1,66 @@
+{ lib, fetchFromGitLab, buildPythonPackage, pillow, six
+, tesseract, cuneiform, isPy3k, substituteAll, pytest, tox
+}:
+
+buildPythonPackage rec {
+ pname = "pyocr";
+ version = "0.5.3";
+ disabled = !isPy3k;
+
+ # Don't fetch from PYPI because it doesn't contain tests.
+ src = fetchFromGitLab {
+ domain = "gitlab.gnome.org";
+ group = "World";
+ owner = "OpenPaperwork";
+ repo = "pyocr";
+ rev = version;
+ sha256 = "1nihf0qmbpg3yj3yp11jp6hp5z5dqf39nz6j9lqbvgi1nqbs7x15";
+ };
+
+ patches = [ (substituteAll {
+ src = ./paths.patch;
+ inherit cuneiform tesseract;
+ })
+ ];
+
+ postPatch = ''
+ echo 'version = "${version}"' > src/pyocr/_version.py
+
+ # Disable specific tests that are probably failing because of this issue:
+ # https://github.com/jflesch/pyocr/issues/52
+ for test in $disabledTests; do
+ file="''${test%%:*}"
+ fun="''${test#*:}"
+ echo "import pytest" >> "tests/tests_$file.py"
+ echo "$fun = pytest.mark.skip($fun)" >> "tests/tests_$file.py"
+ done
+ '';
+
+ disabledTests = [
+ "cuneiform:TestTxt.test_basic"
+ "cuneiform:TestTxt.test_european"
+ "cuneiform:TestTxt.test_french"
+ "cuneiform:TestWordBox.test_basic"
+ "cuneiform:TestWordBox.test_european"
+ "cuneiform:TestWordBox.test_french"
+ "libtesseract:TestBasicDoc.test_basic"
+ "libtesseract:TestDigitLineBox.test_digits"
+ "libtesseract:TestLineBox.test_japanese"
+ "libtesseract:TestTxt.test_japanese"
+ "libtesseract:TestWordBox.test_japanese"
+ "libtesseract:TestTxt.test_multi"
+ "tesseract:TestTxt.test_multi"
+ "tesseract:TestDigitLineBox.test_digits"
+ "tesseract:TestTxt.test_japanese"
+ ];
+
+ propagatedBuildInputs = [ pillow six ];
+ checkInputs = [ pytest tox ];
+ checkPhase = "pytest";
+
+ meta = {
+ inherit (src.meta) homepage;
+ description = "A Python wrapper for Tesseract and Cuneiform";
+ license = lib.licenses.gpl3Plus;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyocr/paths.patch b/nixpkgs/pkgs/development/python-modules/pyocr/paths.patch
new file mode 100644
index 00000000000..9350d4050da
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyocr/paths.patch
@@ -0,0 +1,108 @@
+Index: current/src/pyocr/cuneiform.py
+===================================================================
+--- current.orig/src/pyocr/cuneiform.py
++++ current/src/pyocr/cuneiform.py
+@@ -27,13 +27,9 @@ from . import error
+ from . import util
+
+
+-# CHANGE THIS IF CUNEIFORM IS NOT IN YOUR PATH, OR IS NAMED DIFFERENTLY
+-CUNEIFORM_CMD = 'cuneiform'
++CUNEIFORM_CMD = '@cuneiform@/bin/cuneiform'
+
+-CUNEIFORM_DATA_POSSIBLE_PATHS = [
+- "/usr/local/share/cuneiform",
+- "/usr/share/cuneiform",
+-]
++CUNEIFORM_DATA_POSSIBLE_PATHS = ['@cuneiform@/share/cuneiform']
+
+ LANGUAGES_LINE_PREFIX = "Supported languages: "
+ LANGUAGES_SPLIT_RE = re.compile("[^a-z]")
+Index: current/src/pyocr/libtesseract/tesseract_raw.py
+===================================================================
+--- current.orig/src/pyocr/libtesseract/tesseract_raw.py
++++ current/src/pyocr/libtesseract/tesseract_raw.py
+@@ -1,52 +1,13 @@
+ import ctypes
+ import logging
+ import os
+-import sys
+
+ from ..error import TesseractError
+
+
+ logger = logging.getLogger(__name__)
+
+-TESSDATA_PREFIX = os.getenv('TESSDATA_PREFIX', None)
+-libnames = []
+-
+-if getattr(sys, 'frozen', False):
+- # Pyinstaller integration
+- libnames += [os.path.join(sys._MEIPASS, "libtesseract-4.dll")]
+- libnames += [os.path.join(sys._MEIPASS, "libtesseract-3.dll")]
+- tessdata = os.path.join(sys._MEIPASS, "data")
+- if not os.path.exists(os.path.join(tessdata, "tessdata")):
+- logger.warning(
+- "Running from container, but no tessdata ({}) found !".format(
+- tessdata
+- )
+- )
+- else:
+- TESSDATA_PREFIX = tessdata
+-
+-
+-if sys.platform[:3] == "win":
+- libnames += [
+- # Jflesch> Don't they have the equivalent of LD_LIBRARY_PATH on
+- # Windows ?
+- "../vs2010/DLL_Release/libtesseract302.dll",
+- # prefer the most recent first
+- "libtesseract305.dll",
+- "libtesseract304.dll",
+- "libtesseract303.dll",
+- "libtesseract302.dll",
+- "libtesseract400.dll", # Tesseract 4 is still in alpha stage
+- "libtesseract.dll",
+- "C:\\Program Files (x86)\\Tesseract-OCR\\libtesseract-4.dll",
+- "C:\\Program Files (x86)\\Tesseract-OCR\\libtesseract-3.dll",
+- ]
+-else:
+- libnames += [
+- "libtesseract.so.4",
+- "libtesseract.so.3",
+- ]
+-
++libnames = [ "@tesseract@/lib/libtesseract.so" ]
+
+ g_libtesseract = None
+
+@@ -346,12 +307,11 @@ def init(lang=None):
+ try:
+ if lang:
+ lang = lang.encode("utf-8")
+- prefix = None
+- if TESSDATA_PREFIX:
+- prefix = TESSDATA_PREFIX.encode("utf-8")
++ prefix = os.getenv('TESSDATA_PREFIX', '@tesseract@/share/tessdata')
++ os.environ['TESSDATA_PREFIX'] = prefix
+ g_libtesseract.TessBaseAPIInit3(
+ ctypes.c_void_p(handle),
+- ctypes.c_char_p(prefix),
++ ctypes.c_char_p(prefix.encode('utf-8')),
+ ctypes.c_char_p(lang)
+ )
+ g_libtesseract.TessBaseAPISetVariable(
+Index: current/src/pyocr/tesseract.py
+===================================================================
+--- current.orig/src/pyocr/tesseract.py
++++ current/src/pyocr/tesseract.py
+@@ -31,8 +31,7 @@ from .builders import DigitBuilder # ba
+ from .error import TesseractError # backward compatibility
+ from .util import digits_only
+
+-# CHANGE THIS IF TESSERACT IS NOT IN YOUR PATH, OR IS NAMED DIFFERENTLY
+-TESSERACT_CMD = 'tesseract.exe' if os.name == 'nt' else 'tesseract'
++TESSERACT_CMD = '@tesseract@/bin/tesseract'
+
+ TESSDATA_EXTENSION = ".traineddata"
+
diff --git a/nixpkgs/pkgs/development/python-modules/pyodbc/default.nix b/nixpkgs/pkgs/development/python-modules/pyodbc/default.nix
new file mode 100644
index 00000000000..8064d9b6d57
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyodbc/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPyPy, unixODBC }:
+
+buildPythonPackage rec {
+ pname = "pyodbc";
+ version = "4.0.27";
+ disabled = isPyPy; # use pypypdbc instead
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1kd2i7hc1330cli72vawzby17c3039cqn1aba4i0zrjnpghjhmib";
+ };
+
+ buildInputs = [ unixODBC ];
+
+ doCheck = false; # tests require a database server
+
+ meta = with stdenv.lib; {
+ description = "Python ODBC module to connect to almost any database";
+ homepage = "https://github.com/mkleehammer/pyodbc";
+ license = licenses.mit;
+ platforms = platforms.unix;
+ maintainers = with maintainers; [ bjornfor ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyogg/default.nix b/nixpkgs/pkgs/development/python-modules/pyogg/default.nix
new file mode 100644
index 00000000000..88fdc960a2b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyogg/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, lib, fetchPypi, buildPythonPackage, libvorbis, flac, libogg, libopus, opusfile, substituteAll }:
+
+buildPythonPackage rec {
+ pname = "PyOgg";
+ version = "0.6.9a1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0xabqwyknpvfc53s7il5pq6b07fcaqvz5bi5vbs3pbaw8602qvim";
+ };
+
+ buildInputs = [ libvorbis flac libogg libopus ];
+ propagatedBuidInputs = [ libvorbis flac libogg libopus opusfile ];
+ # There are no tests in this package.
+ doCheck = false;
+ patchFlags = [ "-p1" "--binary" ]; # patch has dos style eol
+ patches = [
+ (substituteAll {
+ src = ./pyogg-paths.patch;
+ flacLibPath="${flac.out}/lib/libFLAC${stdenv.hostPlatform.extensions.sharedLibrary}";
+ oggLibPath="${libogg}/lib/libogg${stdenv.hostPlatform.extensions.sharedLibrary}";
+ vorbisLibPath="${libvorbis}/lib/libvorbis${stdenv.hostPlatform.extensions.sharedLibrary}";
+ vorbisFileLibPath="${libvorbis}/lib/libvorbisfile${stdenv.hostPlatform.extensions.sharedLibrary}";
+ vorbisEncLibPath="${libvorbis}/lib/libvorbisenc${stdenv.hostPlatform.extensions.sharedLibrary}";
+ opusLibPath="${libopus}/lib/libopus${stdenv.hostPlatform.extensions.sharedLibrary}";
+ opusFileLibPath="${opusfile}/lib/libopusfile${stdenv.hostPlatform.extensions.sharedLibrary}";
+ })
+ ];
+
+ meta = {
+ description = "Xiph.org's Ogg Vorbis, Opus and FLAC for Python";
+ homepage = https://github.com/Zuzu-Typ/PyOgg;
+ license = lib.licenses.publicDomain;
+ maintainers = with lib.maintainers; [ pmiddend ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyogg/pyogg-paths.patch b/nixpkgs/pkgs/development/python-modules/pyogg/pyogg-paths.patch
new file mode 100644
index 00000000000..c7f1933878b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyogg/pyogg-paths.patch
@@ -0,0 +1,79 @@
+diff --git a/pyogg/flac.py b/pyogg/flac.py
+index 37cc788..9fb7e95 100644
+--- a/pyogg/flac.py
++++ b/pyogg/flac.py
+@@ -49,7 +49,7 @@ __here = os.getcwd()
+ libflac = None
+
+ try:
+- libflac = ExternalLibrary.load("FLAC", tests = [lambda lib: hasattr(lib, "FLAC__EntropyCodingMethodTypeString")])
++ libflac = ctypes.CDLL('@flacLibPath@')
+ except ExternalLibraryError:
+ pass
+ except:
+diff --git a/pyogg/ogg.py b/pyogg/ogg.py
+index 7264774..2702e24 100644
+--- a/pyogg/ogg.py
++++ b/pyogg/ogg.py
+@@ -54,7 +54,7 @@ __here = os.getcwd()
+ libogg = None
+
+ try:
+- libogg = ExternalLibrary.load("ogg", tests = [lambda lib: hasattr(lib, "oggpack_writeinit")])
++ libogg = ctypes.CDLL('@oggLibPath@')
+ except ExternalLibraryError:
+ pass
+ except:
+diff --git a/pyogg/opus.py b/pyogg/opus.py
+index 81e73da..640e59c 100644
+--- a/pyogg/opus.py
++++ b/pyogg/opus.py
+@@ -130,7 +130,7 @@ __here = os.getcwd()
+ libopus = None
+
+ try:
+- libopus = ExternalLibrary.load("opus", tests = [lambda lib: hasattr(lib, "opus_encoder_get_size")])
++ libopus = ctypes.CDLL('@opusLibPath@')
+ except ExternalLibraryError:
+ pass
+ except:
+@@ -139,7 +139,7 @@ except:
+ libopusfile = None
+
+ try:
+- libopusfile = ExternalLibrary.load("opusfile", tests = [lambda lib: hasattr(lib, "opus_head_parse")])
++ libopusfile = ctypes.CDLL('@opusFileLibPath@')
+ except ExternalLibraryError:
+ pass
+ except:
+diff --git a/pyogg/vorbis.py b/pyogg/vorbis.py
+index a8e4792..6f44d2d 100644
+--- a/pyogg/vorbis.py
++++ b/pyogg/vorbis.py
+@@ -52,7 +52,7 @@ __here = os.getcwd()
+ libvorbis = None
+
+ try:
+- libvorbis = ExternalLibrary.load("vorbis", tests = [lambda lib: hasattr(lib, "vorbis_info_init")])
++ libvorbis = ctypes.CDLL('@vorbisLibPath@')
+ except ExternalLibraryError:
+ pass
+ except:
+@@ -61,7 +61,7 @@ except:
+ libvorbisfile = None
+
+ try:
+- libvorbisfile = ExternalLibrary.load("vorbisfile", tests = [lambda lib: hasattr(lib, "ov_clear")])
++ libvorbisfile = ctypes.CDLL('@vorbisFileLibPath@')
+ except ExternalLibraryError:
+ pass
+ except:
+@@ -70,7 +70,7 @@ except:
+ libvorbisenc = None
+
+ try:
+- libvorbisenc = ExternalLibrary.load("vorbisenc", tests = [lambda lib: hasattr(lib, "vorbis_encode_init")])
++ libvorbisenc = ctypes.CDLL('@vorbisEncLibPath@')
+ except ExternalLibraryError:
+ pass
+ except:
diff --git a/nixpkgs/pkgs/development/python-modules/pyomo/default.nix b/nixpkgs/pkgs/development/python-modules/pyomo/default.nix
new file mode 100644
index 00000000000..958711754bd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyomo/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pyutilib
+, appdirs
+, ply
+, six
+, nose
+}:
+
+buildPythonPackage rec {
+ pname = "pyomo";
+ version = "5.6.1";
+
+ src = fetchPypi {
+ pname = "Pyomo";
+ inherit version;
+ sha256 = "449be9a4c9b3caee7c89dbe5f0e4e5ad0eaeef8be110a860641cd249986e362c";
+ };
+
+ checkInputs = [ nose ];
+ propagatedBuildInputs = [
+ pyutilib
+ appdirs
+ ply
+ six
+ ];
+
+ checkPhase = ''
+ rm pyomo/bilevel/tests/test_blp.py \
+ pyomo/version/tests/test_installer.py
+ nosetests
+ '';
+
+ meta = with lib; {
+ description = "Pyomo: Python Optimization Modeling Objects";
+ homepage = http://pyomo.org;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyopencl/default.nix b/nixpkgs/pkgs/development/python-modules/pyopencl/default.nix
new file mode 100644
index 00000000000..8561cbac1b8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyopencl/default.nix
@@ -0,0 +1,49 @@
+{ stdenv
+, fetchPypi
+, buildPythonPackage
+, Mako
+, pytest
+, numpy
+, cffi
+, pytools
+, decorator
+, appdirs
+, six
+, opencl-headers
+, ocl-icd
+, pybind11
+}:
+
+buildPythonPackage rec {
+ pname = "pyopencl";
+ version = "2019.1";
+
+ checkInputs = [ pytest ];
+ buildInputs = [ opencl-headers ocl-icd pybind11 ];
+
+ propagatedBuildInputs = [ numpy cffi pytools decorator appdirs six Mako ];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "04ahndgc5aqm3pqix2j4vzn9n3k762ylf3yq55jdbxm5cicz9nx0";
+ };
+
+ # py.test is not needed during runtime, so remove it from `install_requires`
+ postPatch = ''
+ substituteInPlace setup.py --replace "pytest>=2" ""
+ '';
+
+ preBuild = ''
+ export HOME=$(mktemp -d)
+ '';
+
+ # gcc: error: pygpu_language_opencl.cpp: No such file or directory
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Python wrapper for OpenCL";
+ homepage = https://github.com/pyopencl/pyopencl;
+ license = licenses.mit;
+ maintainers = [ maintainers.fridh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyopengl/default.nix b/nixpkgs/pkgs/development/python-modules/pyopengl/default.nix
new file mode 100644
index 00000000000..11a51f354d9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyopengl/default.nix
@@ -0,0 +1,50 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pkgs
+, pillow
+}:
+
+buildPythonPackage rec {
+ pname = "pyopengl";
+ version = "3.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "9b47c5c3a094fa518ca88aeed35ae75834d53e4285512c61879f67a48c94ddaf";
+ };
+
+ propagatedBuildInputs = [ pkgs.libGLU_combined pkgs.freeglut pillow ];
+
+ patchPhase = let
+ ext = stdenv.hostPlatform.extensions.sharedLibrary; in ''
+ substituteInPlace OpenGL/platform/glx.py \
+ --replace "'GL'" "'${pkgs.libGL}/lib/libGL${ext}'" \
+ --replace "'GLU'" "'${pkgs.libGLU}/lib/libGLU${ext}'" \
+ --replace "'glut'" "'${pkgs.freeglut}/lib/libglut${ext}'"
+ substituteInPlace OpenGL/platform/darwin.py \
+ --replace "'OpenGL'" "'${pkgs.libGL}/lib/libGL${ext}'" \
+ --replace "'GLUT'" "'${pkgs.freeglut}/lib/libglut${ext}'"
+ '';
+
+ # Need to fix test runner
+ # Tests have many dependencies
+ # Extension types could not be found.
+ # Should run test suite from $out/${python.sitePackages}
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = http://pyopengl.sourceforge.net/;
+ description = "PyOpenGL, the Python OpenGL bindings";
+ longDescription = ''
+ PyOpenGL is the cross platform Python binding to OpenGL and
+ related APIs. The binding is created using the standard (in
+ Python 2.5) ctypes library, and is provided under an extremely
+ liberal BSD-style Open-Source license.
+ '';
+ license = "BSD-style";
+ platforms = platforms.mesaPlatforms;
+ };
+
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyopenssl/default.nix b/nixpkgs/pkgs/development/python-modules/pyopenssl/default.nix
new file mode 100644
index 00000000000..ec17b77ba20
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyopenssl/default.nix
@@ -0,0 +1,90 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, openssl
+, cryptography
+, pyasn1
+, idna
+, pytest
+, pretend
+, flaky
+, glibcLocales
+}:
+
+with stdenv.lib;
+
+
+let
+ # https://github.com/pyca/pyopenssl/issues/791
+ # These tests, we disable in the case that libressl is passed in as openssl.
+ failingLibresslTests = [
+ "test_op_no_compression"
+ "test_npn_advertise_error"
+ "test_npn_select_error"
+ "test_npn_client_fail"
+ "test_npn_success"
+ "test_use_certificate_chain_file_unicode"
+ "test_use_certificate_chain_file_bytes"
+ "test_add_extra_chain_cert"
+ "test_set_session_id_fail"
+ "test_verify_with_revoked"
+ "test_set_notAfter"
+ "test_set_notBefore"
+ ];
+
+ # these tests are extremely tightly wed to the exact output of the openssl cli tool,
+ # including exact punctuation.
+ failingOpenSSL_1_1Tests = [
+ "test_dump_certificate"
+ "test_dump_privatekey_text"
+ "test_dump_certificate_request"
+ "test_export_text"
+ ];
+
+ disabledTests = [
+ # https://github.com/pyca/pyopenssl/issues/692
+ # These tests, we disable always.
+ "test_set_default_verify_paths"
+ "test_fallback_default_verify_paths"
+ # https://github.com/pyca/pyopenssl/issues/768
+ "test_wantWriteError"
+ ] ++ (
+ optionals (hasPrefix "libressl" openssl.meta.name) failingLibresslTests
+ ) ++ (
+ optionals (versionAtLeast (getVersion openssl.name) "1.1") failingOpenSSL_1_1Tests
+ );
+
+ # Compose the final string expression, including the "-k" and the single quotes.
+ testExpression = optionalString (disabledTests != [])
+ "-k 'not ${concatStringsSep " and not " disabledTests}'";
+
+in
+
+
+buildPythonPackage rec {
+ pname = "pyOpenSSL";
+ version = "19.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "aeca66338f6de19d1aa46ed634c3b9ae519a64b458f8468aec688e7e3c20f200";
+ };
+
+ outputs = [ "out" "dev" ];
+
+ checkPhase = ''
+ runHook preCheck
+ export LANG="en_US.UTF-8"
+ py.test tests ${testExpression}
+ runHook postCheck
+ '';
+
+ # Seems to fail unpredictably on Darwin. See http://hydra.nixos.org/build/49877419/nixlog/1
+ # for one example, but I've also seen ContextTests.test_set_verify_callback_exception fail.
+ doCheck = !stdenv.isDarwin;
+
+ nativeBuildInputs = [ openssl ];
+ propagatedBuildInputs = [ cryptography pyasn1 idna ];
+
+ checkInputs = [ pytest pretend flaky glibcLocales ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyotp/default.nix b/nixpkgs/pkgs/development/python-modules/pyotp/default.nix
new file mode 100644
index 00000000000..6c1dcadaccf
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyotp/default.nix
@@ -0,0 +1,18 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "pyotp";
+ version = "2.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "18d13ikra1iq0xyfqfm72zhgwxi2qi9ps6z1a6zmqp4qrn57wlzw";
+ };
+
+ meta = with lib; {
+ description = "Python One Time Password Library";
+ homepage = https://github.com/pyotp/pyotp;
+ license = licenses.mit;
+ maintainers = with maintainers; [ dotlambda ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyowm/default.nix b/nixpkgs/pkgs/development/python-modules/pyowm/default.nix
new file mode 100644
index 00000000000..1b8fffa1d29
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyowm/default.nix
@@ -0,0 +1,30 @@
+{ lib, buildPythonPackage, fetchPypi, pythonOlder, requests, geojson }:
+
+buildPythonPackage rec {
+ pname = "pyowm";
+ version = "2.10.0";
+
+ disabled = pythonOlder "3.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8fd41a18536f4d6c432bc6d9ea69994efb1ea9b43688cf19523659b6f4d86cf7";
+ };
+
+ propagatedBuildInputs = [ requests geojson ];
+
+ # This may actually break the package.
+ postPatch = ''
+ substituteInPlace setup.py \
+ --replace "requests>=2.18.2,<2.19" "requests"
+ '';
+
+ # No tests in archive
+ doCheck = false;
+
+ meta = with lib; {
+ description = "A Python wrapper around the OpenWeatherMap web API";
+ homepage = https://pyowm.readthedocs.io/;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pypandoc/default.nix b/nixpkgs/pkgs/development/python-modules/pypandoc/default.nix
new file mode 100644
index 00000000000..3af86dabe21
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pypandoc/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, pip, pandoc, glibcLocales, haskellPackages, texlive }:
+
+buildPythonPackage rec {
+ pname = "pypandoc";
+ version = "1.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "e914e6d5f84a76764887e4d909b09d63308725f0cbb5293872c2c92f07c11a5b";
+ };
+
+ # Fix tests: first requires network access, second is a bug (reported upstream)
+ preConfigure = ''
+ substituteInPlace tests.py --replace "pypandoc.convert(url, 'html')" "'GPL2 license'"
+ substituteInPlace tests.py --replace "pypandoc.convert_file(file_name, lua_file_name)" "'<h1 id=\"title\">title</h1>'"
+ '';
+
+ LC_ALL="en_US.UTF-8";
+
+ propagatedBuildInputs = [ pip ];
+
+ buildInputs = [ pandoc texlive.combined.scheme-small haskellPackages.pandoc-citeproc glibcLocales ];
+
+ meta = with stdenv.lib; {
+ description = "Thin wrapper for pandoc";
+ homepage = https://github.com/bebraw/pypandoc;
+ license = licenses.mit;
+ maintainers = with maintainers; [ bennofs ];
+
+ broken = true; # incompatible with pandoc v2
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyparser/default.nix b/nixpkgs/pkgs/development/python-modules/pyparser/default.nix
new file mode 100644
index 00000000000..1c00d726ead
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyparser/default.nix
@@ -0,0 +1,27 @@
+{ buildPythonPackage, lib, fetchFromBitbucket
+, parse
+}:
+
+buildPythonPackage rec {
+ pname = "pyparser";
+ version = "1.0";
+
+ # Missing tests on Pypi
+ src = fetchFromBitbucket {
+ owner = "rw_grim";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "0aplb4zdpgbpmaw9qj0vr7qip9q5w7sl1m1lp1nc9jmjfij9i0hf";
+ };
+
+ postPatch = "sed -i 's/parse==/parse>=/' requirements.txt";
+
+ propagatedBuildInputs = [ parse ];
+
+ meta = {
+ description = "Simple library that makes it easier to parse files";
+ homepage = https://bitbucket.org/rw_grim/pyparser;
+ license = lib.licenses.gpl3;
+ maintainers = [ lib.maintainers.nico202 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyparsing/default.nix b/nixpkgs/pkgs/development/python-modules/pyparsing/default.nix
new file mode 100644
index 00000000000..a6e8d620138
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyparsing/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+buildPythonPackage rec {
+ pname = "pyparsing";
+ version = "2.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "66c9268862641abcac4a96ba74506e594c884e3f57690a696d21ad8210ed667a";
+ };
+
+ # Not everything necessary to run the tests is included in the distribution
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = http://pyparsing.wikispaces.com/;
+ 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;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyparted/default.nix b/nixpkgs/pkgs/development/python-modules/pyparted/default.nix
new file mode 100644
index 00000000000..3defe979d37
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyparted/default.nix
@@ -0,0 +1,48 @@
+{ stdenv
+, buildPythonPackage
+, isPyPy
+, pkgs
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "pyparted";
+ version = "3.10.7";
+ disabled = isPyPy;
+
+ src = pkgs.fetchurl {
+ url = "https://github.com/rhinstaller/pyparted/archive/v${version}.tar.gz";
+ sha256 = "0c9ljrdggwawd8wdzqqqzrna9prrlpj6xs59b0vkxzip0jkf652r";
+ };
+
+ postPatch = ''
+ sed -i -e 's|mke2fs|${pkgs.e2fsprogs}/bin/mke2fs|' tests/baseclass.py
+ sed -i -e '
+ s|e\.path\.startswith("/tmp/temp-device-")|"temp-device-" in e.path|
+ ' tests/test__ped_ped.py
+ '' + stdenv.lib.optionalString stdenv.isi686 ''
+ # remove some integers in this test case which overflow on 32bit systems
+ sed -i -r -e '/class *UnitGetSizeTestCase/,/^$/{/[0-9]{11}/d}' \
+ tests/test__ped_ped.py
+ '';
+
+ preConfigure = ''
+ PATH="${pkgs.parted}/sbin:$PATH"
+ '';
+
+ nativeBuildInputs = [ pkgs.pkgconfig ];
+ propagatedBuildInputs = [ pkgs.parted ];
+
+ checkPhase = ''
+ patchShebangs Makefile
+ make test PYTHON=${python.executable}
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "https://fedorahosted.org/pyparted/";
+ description = "Python interface for libparted";
+ license = licenses.gpl2Plus;
+ platforms = platforms.linux;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pypcap/default.nix b/nixpkgs/pkgs/development/python-modules/pypcap/default.nix
new file mode 100644
index 00000000000..620b1d81160
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pypcap/default.nix
@@ -0,0 +1,39 @@
+{ lib, writeText, buildPythonPackage, fetchPypi, libpcap, dpkt }:
+
+buildPythonPackage rec {
+ pname = "pypcap";
+ version = "1.2.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1w5i79gh7cswvznr8rhilcmzhnh2y5c4jwh2qrfnpx05zqigm1xd";
+ };
+
+ patches = [
+ # The default setup.py searchs for pcap.h in a static list of default
+ # folders. So we have to add the path to libpcap in the nix-store.
+ (writeText "libpcap-path.patch"
+ ''
+ --- a/setup.py
+ +++ b/setup.py
+ @@ -28,6 +28,7 @@ def recursive_search(path, target_files):
+
+ def find_prefix_and_pcap_h():
+ prefixes = chain.from_iterable((
+ + '${libpcap}',
+ ('/usr', sys.prefix),
+ glob.glob('/opt/libpcap*'),
+ glob.glob('../libpcap*'),
+ '')
+ ];
+
+ buildInputs = [ libpcap ];
+ checkInputs = [ dpkt ];
+
+ meta = with lib; {
+ homepage = https://github.com/pynetwork/pypcap;
+ description = "Simplified object-oriented Python wrapper for libpcap";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ geistesk ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pypdf/default.nix b/nixpkgs/pkgs/development/python-modules/pypdf/default.nix
new file mode 100644
index 00000000000..5842e1c510a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pypdf/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, 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 stdenv.lib; {
+ description = "Pure-Python PDF toolkit";
+ homepage = "http://pybrary.net/pyPdf/";
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pypdf2/default.nix b/nixpkgs/pkgs/development/python-modules/pypdf2/default.nix
new file mode 100644
index 00000000000..1c3b908396e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pypdf2/default.nix
@@ -0,0 +1,35 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, glibcLocales
+, python
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "PyPDF2";
+ version = "1.26.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "11a3aqljg4sawjijkvzhs3irpw0y67zivqpbjpm065ha5wpr13z2";
+ };
+
+ LC_ALL = "en_US.UTF-8";
+ buildInputs = [ glibcLocales ];
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover -s Tests
+ '';
+
+ # Tests broken on Python 3.x
+ doCheck = !(isPy3k);
+
+ meta = with stdenv.lib; {
+ description = "A Pure-Python library built as a PDF toolkit";
+ homepage = "http://mstamy2.github.com/PyPDF2/";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ desiderius vrthra ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pypeg2/default.nix b/nixpkgs/pkgs/development/python-modules/pypeg2/default.nix
new file mode 100644
index 00000000000..de2ddc98a8e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pypeg2/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ version = "2.15.2";
+ pname = "pypeg2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0v8ziaam2r637v94ra4dbjw6jzxz99gs5x4i585kgag1v204yb9b";
+ };
+
+ checkPhase = ''
+ # The tests assume that test_xmlast does not run before test_pyPEG2.
+ python -m unittest pypeg2.test.test_pyPEG2 pypeg2.test.test_xmlast
+ '';
+
+ #https://bitbucket.org/fdik/pypeg/issues/36/test-failures-on-py35
+ doCheck = !isPy3k;
+
+ meta = with stdenv.lib; {
+ description = "PEG parser interpreter in Python";
+ homepage = http://fdik.org/pyPEG;
+ license = licenses.gpl2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyperclip/default.nix b/nixpkgs/pkgs/development/python-modules/pyperclip/default.nix
new file mode 100644
index 00000000000..9709aea1d18
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyperclip/default.nix
@@ -0,0 +1,19 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ version = "1.7.0";
+ pname = "pyperclip";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "979325468ccf682104d5dcaf753f869868100631301d3e72f47babdea5700d1c";
+ };
+
+ doCheck = false;
+
+ meta = with lib; {
+ homepage = "https://github.com/asweigart/pyperclip";
+ license = licenses.bsdOriginal;
+ description = "Cross-platform clipboard module";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyperf/default.nix b/nixpkgs/pkgs/development/python-modules/pyperf/default.nix
new file mode 100644
index 00000000000..51a08e1f7ea
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyperf/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, six
+, statistics
+, pythonOlder
+, nose
+, psutil
+, contextlib2
+, mock
+, unittest2
+, isPy27
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "pyperf";
+ version = "1.6.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8d0143a22a13ee10c997a648f30b82cdc40175d5a20b11055ae058a82e45d371";
+ };
+
+ checkInputs = [ nose psutil ] ++
+ lib.optionals isPy27 [ contextlib2 mock unittest2 ];
+ propagatedBuildInputs = [ six ] ++
+ lib.optionals (pythonOlder "3.4") [ statistics ];
+
+ # tests not included in pypi repository
+ doCheck = false;
+
+ checkPhase = ''
+ ${python.interpreter} -m nose
+ '';
+
+ meta = with lib; {
+ description = "Python module to generate and modify perf";
+ homepage = "https://pyperf.readthedocs.io/";
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyphen/default.nix b/nixpkgs/pkgs/development/python-modules/pyphen/default.nix
new file mode 100644
index 00000000000..7a182b6be4a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyphen/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "Pyphen";
+ version = "0.9.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "3b633a50873156d777e1f1075ba4d8e96a6ad0a3ca42aa3ea9a6259f93f18921";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Pure Python module to hyphenate text";
+ homepage = "https://github.com/Kozea/Pyphen";
+ license = with licenses; [gpl2 lgpl21 mpl20];
+ maintainers = with maintainers; [ rvl ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pypillowfight/default.nix b/nixpkgs/pkgs/development/python-modules/pypillowfight/default.nix
new file mode 100644
index 00000000000..0313632e6fd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pypillowfight/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, buildPythonPackage, fetchFromGitLab, nose, pillow
+, isPy3k, isPyPy
+}:
+buildPythonPackage rec {
+ pname = "pypillowfight";
+ version = "0.2.4";
+
+ src = fetchFromGitLab {
+ domain = "gitlab.gnome.org";
+ group = "World";
+ owner = "OpenPaperwork";
+ repo = "libpillowfight";
+ rev = version;
+ sha256 = "0wbzfhbzim61fmkm7p7f2rwslacla1x00a6xp50haawjh9zfwc4y";
+ };
+
+ prePatch = ''
+ echo '#define INTERNAL_PILLOWFIGHT_VERSION "${version}"' > src/pillowfight/_version.h
+ '';
+
+ # Disable tests because they're designed to only work on Debian:
+ # https://github.com/jflesch/libpillowfight/issues/2#issuecomment-268259174
+ doCheck = false;
+
+ # Python 2.x is not supported, see:
+ # https://github.com/jflesch/libpillowfight/issues/1
+ disabled = !isPy3k && !isPyPy;
+
+ # This is needed by setup.py regardless of whether tests are enabled.
+ buildInputs = [ nose ];
+ propagatedBuildInputs = [ pillow ];
+
+ meta = with stdenv.lib; {
+ description = "Library containing various image processing algorithms";
+ inherit (src.meta) homepage;
+ license = licenses.gpl3Plus;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyplatec/default.nix b/nixpkgs/pkgs/development/python-modules/pyplatec/default.nix
new file mode 100644
index 00000000000..a17c650e0f0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyplatec/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "PyPlatec";
+ version = "1.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0kqx33flcrrlipccmqs78d14pj5749bp85b6k5fgaq2c7yzz02jg";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Library to simulate plate tectonics with Python bindings";
+ homepage = https://github.com/Mindwerks/plate-tectonics;
+ license = licenses.lgpl3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pypoppler/default.nix b/nixpkgs/pkgs/development/python-modules/pypoppler/default.nix
new file mode 100644
index 00000000000..ccda4f2631d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pypoppler/default.nix
@@ -0,0 +1,41 @@
+{ stdenv
+, 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.pkgconfig ];
+ 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 stdenv.lib; {
+ homepage = https://code.launchpad.net/~mriedesel/poppler-python/main;
+ description = "Python bindings for poppler-glib, unofficial branch including bug fixes, and removal of gtk dependencies";
+ license = licenses.gpl2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pypoppler/pypoppler-0.39.0.patch b/nixpkgs/pkgs/development/python-modules/pypoppler/pypoppler-0.39.0.patch
new file mode 100644
index 00000000000..b9e02242e00
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pypoppler/pypoppler-0.39.0.patch
@@ -0,0 +1,23 @@
+diff --git a/poppler.defs b/poppler.defs
+index 8b12e03..2b8fc16 100644
+--- a/poppler.defs
++++ b/poppler.defs
+@@ -570,18 +570,6 @@
+ )
+ )
+
+-(define-enum Orientation
+- (in-module "Poppler")
+- (c-name "PopplerOrientation")
+- (gtype-id "POPPLER_TYPE_ORIENTATION")
+- (values
+- '("portrait" "POPPLER_ORIENTATION_PORTRAIT")
+- '("landscape" "POPPLER_ORIENTATION_LANDSCAPE")
+- '("upsidedown" "POPPLER_ORIENTATION_UPSIDEDOWN")
+- '("seascape" "POPPLER_ORIENTATION_SEASCAPE")
+- )
+-)
+-
+ (define-enum PageTransitionType
+ (in-module "Poppler")
+ (c-name "PopplerPageTransitionType")
diff --git a/nixpkgs/pkgs/development/python-modules/pypoppler/pypoppler-poppler.c.patch b/nixpkgs/pkgs/development/python-modules/pypoppler/pypoppler-poppler.c.patch
new file mode 100644
index 00000000000..1104097cd3e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pypoppler/pypoppler-poppler.c.patch
@@ -0,0 +1,12 @@
+diff --git a/poppler.c b/poppler.c
+index 31b4489..16d0838 100644
+--- a/poppler.c
++++ b/poppler.c
+@@ -4501,7 +4501,6 @@ py_poppler_add_constants(PyObject *module, const gchar *strip_prefix)
+ pyg_enum_add(module, "FormTextType", strip_prefix, POPPLER_TYPE_FORM_TEXT_TYPE);
+ pyg_enum_add(module, "FormChoiceType", strip_prefix, POPPLER_TYPE_FORM_CHOICE_TYPE);
+ pyg_enum_add(module, "Error", strip_prefix, POPPLER_TYPE_ERROR);
+- pyg_enum_add(module, "Orientation", strip_prefix, POPPLER_TYPE_ORIENTATION);
+ pyg_enum_add(module, "PageTransitionType", strip_prefix, POPPLER_TYPE_PAGE_TRANSITION_TYPE);
+ pyg_enum_add(module, "PageTransitionAlignment", strip_prefix, POPPLER_TYPE_PAGE_TRANSITION_ALIGNMENT);
+ pyg_enum_add(module, "PageTransitionDirection", strip_prefix, POPPLER_TYPE_PAGE_TRANSITION_DIRECTION);
diff --git a/nixpkgs/pkgs/development/python-modules/pyprind/default.nix b/nixpkgs/pkgs/development/python-modules/pyprind/default.nix
new file mode 100644
index 00000000000..de1b17be739
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyprind/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchPypi, buildPythonPackage
+, psutil
+, pytest }:
+
+buildPythonPackage rec {
+ pname = "PyPrind";
+ version = "2.11.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0xg6m5hr33h9bdlrr42kc58jm2m87a9zsagy7n2m4n407d2snv64";
+ };
+
+ buildInputs = [ psutil ];
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ py.test tests
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Python Progress Bar and Percent Indicator Utility";
+ homepage = https://github.com/rasbt/pyprind;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ jfrankenau ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyprof2calltree/default.nix b/nixpkgs/pkgs/development/python-modules/pyprof2calltree/default.nix
new file mode 100644
index 00000000000..198445177c4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyprof2calltree/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildPythonPackage, fetchFromGitHub }:
+
+buildPythonPackage rec {
+ pname = "pyprof2calltree";
+ version = "1.4.4";
+
+ # Fetch from GitHub because the PyPi packaged version does not
+ # include all test files.
+ src = fetchFromGitHub {
+ owner = "pwaller";
+ repo = "pyprof2calltree";
+ rev = "v" + version;
+ sha256 = "1vrip41ib7nmkwa8rjny1na1wyp7nvvgvm0h9bd21i262kbm4nqx";
+ };
+
+ meta = with lib; {
+ description = "Help visualize profiling data from cProfile with kcachegrind and qcachegrind";
+ homepage = https://pypi.python.org/pypi/pyprof2calltree/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ sfrijters ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyproj/001.proj.patch b/nixpkgs/pkgs/development/python-modules/pyproj/001.proj.patch
new file mode 100644
index 00000000000..b024c28156c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyproj/001.proj.patch
@@ -0,0 +1,47 @@
+diff a/pyproj/datadir.py b/pyproj/datadir.py
+--- a/pyproj/datadir.py
++++ b/pyproj/datadir.py
+@@ -52,6 +52,7 @@ def get_data_dir():
+ str: The valid data directory.
+
+ """
++ return "@proj@/share/proj"
+ # to avoid re-validating
+ global _VALIDATED_PROJ_DATA
+ if _VALIDATED_PROJ_DATA is not None:
+diff a/setup.py b/setup.py
+--- a/setup.py
++++ b/setup.py
+@@ -16,7 +16,7 @@ INTERNAL_PROJ_DIR = os.path.join(CURRENT_FILE_PATH, "pyproj", BASE_INTERNAL_PROJ
+
+ def check_proj_version(proj_dir):
+ """checks that the PROJ library meets the minimum version"""
+- proj = os.path.join(proj_dir, "bin", "proj")
++ proj = "@proj@/bin/proj"
+ proj_ver_bytes = subprocess.check_output(proj, stderr=subprocess.STDOUT)
+ proj_ver_bytes = (proj_ver_bytes.decode("ascii").split()[1]).strip(",")
+ proj_version = parse_version(proj_ver_bytes)
+@@ -33,6 +33,7 @@ def get_proj_dir():
+ """
+ This function finds the base PROJ directory.
+ """
++ return "@proj@"
+ proj_dir = os.environ.get("PROJ_DIR")
+ if proj_dir is None and os.path.exists(INTERNAL_PROJ_DIR):
+ proj_dir = INTERNAL_PROJ_DIR
+@@ -56,6 +57,7 @@ def get_proj_libdirs(proj_dir):
+ """
+ This function finds the library directories
+ """
++ return ["@proj@/lib"]
+ proj_libdir = os.environ.get("PROJ_LIBDIR")
+ libdirs = []
+ if proj_libdir is None:
+@@ -77,6 +79,7 @@ def get_proj_incdirs(proj_dir):
+ """
+ This function finds the include directories
+ """
++ return ["@proj@/include"]
+ proj_incdir = os.environ.get("PROJ_INCDIR")
+ incdirs = []
+ if proj_incdir is None:
diff --git a/nixpkgs/pkgs/development/python-modules/pyproj/default.nix b/nixpkgs/pkgs/development/python-modules/pyproj/default.nix
new file mode 100644
index 00000000000..0f2763faf60
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyproj/default.nix
@@ -0,0 +1,51 @@
+{ lib, buildPythonPackage, fetchFromGitHub, python, pkgs, pythonOlder, substituteAll
+, aenum
+, cython
+, pytest
+, mock
+, numpy
+}:
+
+buildPythonPackage rec {
+ pname = "pyproj";
+ version = "2.2.2";
+
+ src = fetchFromGitHub {
+ owner = "pyproj4";
+ repo = "pyproj";
+ rev = "v${version}rel";
+ sha256 = "0mb0jczgqh3sma69k7237i38h09gxgmvmddls9hpw4f3131f5ax7";
+ };
+
+ # force pyproj to use ${pkgs.proj}
+ patches = [
+ (substituteAll {
+ src = ./001.proj.patch;
+ proj = pkgs.proj;
+ })
+ ];
+
+ buildInputs = [ cython pkgs.proj ];
+
+ propagatedBuildInputs = [
+ numpy
+ ] ++ lib.optional (pythonOlder "3.6") aenum;
+
+ checkInputs = [ pytest mock ];
+
+ # ignore rounding errors, and impure docgen
+ # datadir is ignored because it does the proj look up logic, which isn't relevant
+ checkPhase = ''
+ pytest . -k 'not alternative_grid_name \
+ and not transform_wgs84_to_alaska \
+ and not repr' \
+ --ignore=test/test_doctest_wrapper.py \
+ --ignore=test/test_datadir.py
+ '';
+
+ meta = {
+ description = "Python interface to PROJ.4 library";
+ homepage = "https://github.com/jswhit/pyproj";
+ license = with lib.licenses; [ isc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyptlib/default.nix b/nixpkgs/pkgs/development/python-modules/pyptlib/default.nix
new file mode 100644
index 00000000000..6349b56b474
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyptlib/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPyPy
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "pyptlib";
+ version = "0.0.6";
+ disabled = isPyPy || isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "01y6vbwncqb0hxlnin6whd9wrrm5my4qzjhk76fnix78v7ip515r";
+ };
+
+ doCheck = false; # No such file or directory errors on 32bit
+
+ meta = with stdenv.lib; {
+ homepage = https://pypi.org/project/pyptlib/;
+ description = "A python implementation of the Pluggable Transports for Circumvention specification for Tor";
+ license = licenses.bsd2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyqrcode/default.nix b/nixpkgs/pkgs/development/python-modules/pyqrcode/default.nix
new file mode 100644
index 00000000000..4313f700ae1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyqrcode/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "PyQRCode";
+ version = "1.2.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "fdbf7634733e56b72e27f9bce46e4550b75a3a2c420414035cae9d9d26b234d5";
+ };
+
+ # No tests in PyPI tarball
+ doCheck = false;
+
+ meta = with lib; {
+ description = "A QR code generator written purely in Python with SVG, EPS, PNG and terminal output";
+ homepage = https://github.com/mnooner256/pyqrcode;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ dotlambda ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyqt/4.x.nix b/nixpkgs/pkgs/development/python-modules/pyqt/4.x.nix
new file mode 100644
index 00000000000..9f7c75a02d3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyqt/4.x.nix
@@ -0,0 +1,69 @@
+{ stdenv, fetchurl, buildPythonPackage, python, dbus-python, sip, qt4, pkgconfig, lndir, dbus, makeWrapper }:
+
+buildPythonPackage rec {
+ pname = "PyQt-x11-gpl";
+ version = "4.12";
+ format = "other";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/pyqt/PyQt4_gpl_x11-${version}.tar.gz";
+ sha256 = "1nw8r88a5g2d550yvklawlvns8gd5slw53yy688kxnsa65aln79w";
+ };
+
+ postPatch = ''
+ mkdir -p $out
+ lndir ${dbus-python} $out
+ rm -rf "$out/nix-support"
+
+ export PYTHONPATH=$PYTHONPATH:$out/lib/${python.libPrefix}/site-packages
+ ${stdenv.lib.optionalString stdenv.isDarwin ''
+ export QMAKESPEC="unsupported/macx-clang-libc++" # macOS target after bootstrapping phase \
+ ''}
+
+ substituteInPlace configure.py \
+ --replace 'install_dir=pydbusmoddir' "install_dir='$out/lib/${python.libPrefix}/site-packages/dbus/mainloop'" \
+ ${stdenv.lib.optionalString stdenv.isDarwin ''
+ --replace "qt_macx_spec = 'macx-g++'" "qt_macx_spec = 'unsupported/macx-clang-libc++'" # for bootstrapping phase \
+ ''}
+
+ chmod +x configure.py
+ sed -i '1i#!${python.interpreter}' configure.py
+ '';
+
+ configureScript = "./configure.py";
+ dontAddPrefix = true;
+ configureFlags = [
+ "--confirm-license"
+ "--bindir=${placeholder "out"}/bin"
+ "--destdir=${placeholder "out"}/${python.sitePackages}"
+ "--plugin-destdir=${placeholder "out"}/lib/qt4/plugins"
+ "--sipdir=${placeholder "out"}/share/sip/PyQt4"
+ "--dbus=${stdenv.lib.getDev dbus-python}/include/dbus-1.0"
+ "--verbose"
+ ];
+
+ nativeBuildInputs = [ pkgconfig lndir makeWrapper qt4 ];
+ buildInputs = [ qt4 dbus ];
+
+ propagatedBuildInputs = [ sip ];
+
+ postInstall = ''
+ for i in $out/bin/*; do
+ wrapProgram $i --prefix PYTHONPATH : "$PYTHONPATH"
+ done
+ '';
+
+ enableParallelBuilding = true;
+
+ passthru = {
+ qt = qt4;
+ };
+
+ meta = {
+ description = "Python bindings for Qt";
+ license = "GPL";
+ homepage = http://www.riverbankcomputing.co.uk;
+ maintainers = [ stdenv.lib.maintainers.sander ];
+ platforms = stdenv.lib.platforms.mesaPlatforms;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyqt/5.x.nix b/nixpkgs/pkgs/development/python-modules/pyqt/5.x.nix
new file mode 100644
index 00000000000..f3578459b9d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyqt/5.x.nix
@@ -0,0 +1,146 @@
+{ lib, fetchurl, pythonPackages, pkgconfig
+, dbus
+, qmake, lndir
+, qtbase
+, qtsvg
+, qtdeclarative
+, qtwebchannel
+, withConnectivity ? false, qtconnectivity
+, withMultimedia ? false, qtmultimedia
+, withWebKit ? false, qtwebkit
+, withWebSockets ? false, qtwebsockets
+}:
+
+let
+
+ inherit (pythonPackages) buildPythonPackage python isPy3k dbus-python enum34;
+
+ sip = (pythonPackages.sip.override { sip-module = "PyQt5.sip"; }).overridePythonAttrs(oldAttrs: {
+ # If we install sip in another folder, then we need to create a __init__.py as well
+ # if we want to be able to import it with Python 2.
+ # Python 3 could rely on it being an implicit namespace package, however,
+ # PyQt5 we made an explicit namespace package so sip should be as well.
+ postInstall = ''
+ cat << EOF > $out/${python.sitePackages}/PyQt5/__init__.py
+ from pkgutil import extend_path
+ __path__ = extend_path(__path__, __name__)
+ EOF
+ '';
+ });
+
+in buildPythonPackage rec {
+ pname = "pyqt";
+ version = "5.13.0";
+ format = "other";
+
+ src = fetchurl {
+ url = "https://www.riverbankcomputing.com/static/Downloads/PyQt5/${version}/PyQt5_gpl-${version}.tar.gz";
+ sha256 = "1ydgdz28f1v17qqz3skyv26k5l0w63fr4dncc5xm49jr2gjzznqc";
+ };
+
+ outputs = [ "out" "dev" ];
+
+ nativeBuildInputs = [
+ pkgconfig
+ qmake
+ lndir
+ sip
+ qtbase
+ qtsvg
+ qtdeclarative
+ qtwebchannel
+ ]
+ ++ lib.optional withConnectivity qtconnectivity
+ ++ lib.optional withMultimedia qtmultimedia
+ ++ lib.optional withWebKit qtwebkit
+ ++ lib.optional withWebSockets qtwebsockets
+ ;
+
+ buildInputs = [
+ dbus
+ qtbase
+ qtsvg
+ qtdeclarative
+ ]
+ ++ lib.optional withConnectivity qtconnectivity
+ ++ lib.optional withWebKit qtwebkit
+ ++ lib.optional withWebSockets qtwebsockets
+ ;
+
+ propagatedBuildInputs = [
+ dbus-python
+ sip
+ ] ++ lib.optional (!isPy3k) enum34;
+
+ patches = [
+ # Fix some wrong assumptions by ./configure.py
+ # TODO: figure out how to send this upstream
+ ./pyqt5-fix-dbus-mainloop-support.patch
+ ];
+
+ passthru = {
+ inherit sip;
+ };
+
+ configurePhase = ''
+ runHook preConfigure
+
+ export PYTHONPATH=$PYTHONPATH:$out/${python.sitePackages}
+
+ ${python.executable} configure.py -w \
+ --confirm-license \
+ --dbus-moduledir=$out/${python.sitePackages}/dbus/mainloop \
+ --no-qml-plugin \
+ --bindir=$out/bin \
+ --destdir=$out/${python.sitePackages} \
+ --stubsdir=$out/${python.sitePackages}/PyQt5 \
+ --sipdir=$out/share/sip/PyQt5 \
+ --designer-plugindir=$out/plugins/designer
+
+ runHook postConfigure
+ '';
+
+ postInstall = ''
+ ln -s ${sip}/${python.sitePackages}/PyQt5/sip.* $out/${python.sitePackages}/PyQt5/
+ for i in $out/bin/*; do
+ wrapProgram $i --prefix PYTHONPATH : "$PYTHONPATH"
+ done
+
+ # Let's make it a namespace package
+ cat << EOF > $out/${python.sitePackages}/PyQt5/__init__.py
+ from pkgutil import extend_path
+ __path__ = extend_path(__path__, __name__)
+ EOF
+ '';
+
+ installCheckPhase = let
+ modules = [
+ "PyQt5"
+ "PyQt5.QtCore"
+ "PyQt5.QtQml"
+ "PyQt5.QtWidgets"
+ "PyQt5.QtGui"
+ ]
+ ++ lib.optional withWebSockets "PyQt5.QtWebSockets"
+ ++ lib.optional withWebKit "PyQt5.QtWebKit"
+ ++ lib.optional withMultimedia "PyQt5.QtMultimedia"
+ ++ lib.optional withConnectivity "PyQt5.QtConnectivity"
+ ;
+ imports = lib.concatMapStrings (module: "import ${module};") modules;
+ in ''
+ echo "Checking whether modules can be imported..."
+ ${python.interpreter} -c "${imports}"
+ '';
+
+ doCheck = true;
+
+ enableParallelBuilding = true;
+
+ meta = with lib; {
+ description = "Python bindings for Qt5";
+ homepage = http://www.riverbankcomputing.co.uk;
+ license = licenses.gpl3;
+ platforms = platforms.mesaPlatforms;
+ maintainers = with maintainers; [ sander ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyqt/pyqt5-fix-dbus-mainloop-support.patch b/nixpkgs/pkgs/development/python-modules/pyqt/pyqt5-fix-dbus-mainloop-support.patch
new file mode 100644
index 00000000000..faa36fa1913
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyqt/pyqt5-fix-dbus-mainloop-support.patch
@@ -0,0 +1,70 @@
+From 944d5467e1655aac20a14325631df6daccaf5804 Mon Sep 17 00:00:00 2001
+From: Jan Tojnar <jtojnar@gmail.com>
+Date: Sun, 3 Mar 2019 01:13:46 +0100
+Subject: [PATCH] Fix building on Nix
+
+./configure.py tries to find dbus-python header in dbus-1 includedir
+obtained from pkg-config or from --dbus flag. Unfortunately, when supplied,
+it also uses the flag for locating dbus-1 headers. This fails on Nix,
+since every package is installed into its own immutable tree so we cannot
+use a single directory for both dbus-python and dbus-1. We can fix this by
+using pkg-config for finding dbus-python headers too.
+
+Additionally, the build system also tries to install the dbus support module
+to dbus-python tree. Often, it is possible to handle this in pkgconfig as well [1]
+but unfortunately, dbus-python does not export the moduledir in its pc file
+so I have decided to solve this with an extra configure flag.
+
+[1]: https://www.bassi.io/articles/2018/03/15/pkg-config-and-paths/
+---
+ configure.py | 13 +++++++++++--
+ 1 file changed, 11 insertions(+), 2 deletions(-)
+
+diff --git a/configure.py b/configure.py
+index a3450ca3..440d90a2 100644
+--- a/configure.py
++++ b/configure.py
+@@ -905,6 +905,9 @@ class TargetConfiguration:
+ if opts.pydbusincdir is not None:
+ self.pydbus_inc_dir = opts.pydbusincdir
+
++ if opts.pydbusmoduledir is not None:
++ self.pydbus_module_dir = opts.pydbusmoduledir
++
+ if opts.pyuicinterpreter is not None:
+ self.pyuic_interpreter = opts.pyuicinterpreter
+
+@@ -1184,6 +1187,11 @@ def create_optparser(target_config):
+ metavar="DIR",
+ help="the directory containing the dbus/dbus-python.h header is "
+ "DIR [default: supplied by pkg-config]")
++ g.add_option("--dbus-moduledir", dest='pydbusmoduledir', type='string',
++ default=None, action='callback', callback=store_abspath,
++ metavar="DIR",
++ help="the directory where dbus support module will be installed to"
++ "DIR [default: obtained from dbus.mainloop python module]")
+ p.add_option_group(g)
+
+ # Installation.
+@@ -2149,7 +2157,7 @@ def check_dbus(target_config, verbose):
+
+ inform("Checking to see if the dbus support module should be built...")
+
+- cmd = 'pkg-config --cflags-only-I --libs dbus-1'
++ cmd = 'pkg-config --cflags-only-I --libs dbus-1 dbus-python'
+
+ if verbose:
+ sys.stdout.write(cmd + "\n")
+@@ -2178,7 +2186,8 @@ def check_dbus(target_config, verbose):
+ inform("The Python dbus module doesn't seem to be installed.")
+ return
+
+- target_config.pydbus_module_dir = dbus.mainloop.__path__[0]
++ if target_config.pydbus_module_dir == '':
++ target_config.pydbus_module_dir = dbus.mainloop.__path__[0]
+
+ # Try and find dbus-python.h. We don't use pkg-config because it is broken
+ # for dbus-python (at least for versions up to and including v0.81.0).
+--
+2.18.0
+
diff --git a/nixpkgs/pkgs/development/python-modules/pyqtgraph/default.nix b/nixpkgs/pkgs/development/python-modules/pyqtgraph/default.nix
new file mode 100644
index 00000000000..a2c4a9491b6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyqtgraph/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, scipy
+, numpy
+, pyqt4
+, pyopengl
+}:
+
+buildPythonPackage rec {
+ pname = "pyqtgraph";
+ version = "0.10.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "4c08ab34881fae5ecf9ddfe6c1220b9e41e6d3eb1579a7d8ef501abb8e509251";
+ };
+
+ propagatedBuildInputs = [ scipy numpy pyqt4 pyopengl ];
+
+ doCheck = false; # "PyQtGraph requires either PyQt4 or PySide; neither package could be imported."
+
+ meta = with stdenv.lib; {
+ description = "Scientific Graphics and GUI Library for Python";
+ homepage = http://www.pyqtgraph.org/;
+ license = licenses.mit;
+ platforms = platforms.unix;
+ maintainers = with maintainers; [ koral ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyqtwebengine/default.nix b/nixpkgs/pkgs/development/python-modules/pyqtwebengine/default.nix
new file mode 100644
index 00000000000..b48f21b9e78
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyqtwebengine/default.nix
@@ -0,0 +1,93 @@
+{ lib, fetchurl, pythonPackages, pkgconfig
+, qmake, qtbase, qtsvg, qtwebengine
+, wrapQtAppsHook
+}:
+
+let
+
+ inherit (pythonPackages) buildPythonPackage python isPy3k pyqt5 enum34;
+ inherit (pyqt5) sip;
+
+in buildPythonPackage rec {
+ pname = "pyqtwebengine";
+ version = "5.12.1";
+ format = "other";
+
+ src = fetchurl {
+ url = "https://www.riverbankcomputing.com/static/Downloads/PyQtWebEngine/${version}/PyQtWebEngine_gpl-${version}.tar.gz";
+ sha256 = "0wylkd7fh2g27y3710rpxmj9wx0wpi3z7qbv6khiddm15rkh81w6";
+ };
+
+ outputs = [ "out" "dev" ];
+
+ nativeBuildInputs = [
+ pkgconfig
+ qmake
+ sip
+ qtbase
+ qtsvg
+ qtwebengine
+ ];
+
+ buildInputs = [
+ sip
+ qtbase
+ qtsvg
+ qtwebengine
+ ];
+
+ propagatedBuildInputs = [ pyqt5 ]
+ ++ lib.optional (!isPy3k) enum34;
+
+ configurePhase = ''
+ runHook preConfigure
+
+ mkdir -p "$out/share/sip/PyQt5"
+
+ # FIXME: Without --no-dist-info, I get
+ # unable to create /nix/store/yv4pzx3lxk3lscq0pw3hqzs7k4x76xsm-python3-3.7.2/lib/python3.7/site-packages/PyQtWebEngine-5.12.dist-info
+ ${python.executable} configure.py -w \
+ --destdir="$out/${python.sitePackages}/PyQt5" \
+ --no-dist-info \
+ --apidir="$out/api/${python.libPrefix}" \
+ --sipdir="$out/share/sip/PyQt5" \
+ --pyqt-sipdir="${pyqt5}/share/sip/PyQt5" \
+ --stubsdir="$out/${python.sitePackages}/PyQt5"
+
+ runHook postConfigure
+ '';
+
+ postInstall = ''
+ # Let's make it a namespace package
+ cat << EOF > $out/${python.sitePackages}/PyQt5/__init__.py
+ from pkgutil import extend_path
+ __path__ = extend_path(__path__, __name__)
+ EOF
+ '';
+
+ installCheckPhase = let
+ modules = [
+ "PyQt5.QtWebEngine"
+ "PyQt5.QtWebEngineWidgets"
+ ];
+ imports = lib.concatMapStrings (module: "import ${module};") modules;
+ in ''
+ echo "Checking whether modules can be imported..."
+ PYTHONPATH=$PYTHONPATH:$out/${python.sitePackages} ${python.interpreter} -c "${imports}"
+ '';
+
+ doCheck = true;
+
+ enableParallelBuilding = true;
+
+ passthru = {
+ inherit wrapQtAppsHook;
+ };
+
+ meta = with lib; {
+ description = "Python bindings for Qt5";
+ homepage = http://www.riverbankcomputing.co.uk;
+ license = licenses.gpl3;
+ platforms = platforms.mesaPlatforms;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyquery/default.nix b/nixpkgs/pkgs/development/python-modules/pyquery/default.nix
new file mode 100644
index 00000000000..70f144b6258
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyquery/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, cssselect
+, lxml
+, webob
+}:
+
+buildPythonPackage rec {
+ pname = "pyquery";
+ version = "1.2.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "00p6f1dfma65192hc72dxd506491lsq3g5wgxqafi1xpg2w1xia6";
+ };
+
+ propagatedBuildInputs = [ cssselect lxml webob ];
+
+ # circular dependency on webtest
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/gawel/pyquery;
+ description = "A jquery-like library for python";
+ license = licenses.bsd0;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyramid/default.nix b/nixpkgs/pkgs/development/python-modules/pyramid/default.nix
new file mode 100644
index 00000000000..3c76da67b7b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyramid/default.nix
@@ -0,0 +1,46 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, docutils
+, virtualenv
+, webtest
+, zope_component
+, hupper
+, PasteDeploy
+, plaster
+, plaster-pastedeploy
+, repoze_lru
+, repoze_sphinx_autointerface
+, translationstring
+, venusian
+, webob
+, zope_deprecation
+, zope_interface
+, isPy35
+}:
+
+buildPythonPackage rec {
+ pname = "pyramid";
+ version = "1.10.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d80ccb8cfa550139b50801591d4ca8a5575334adb493c402fce2312f55d07d66";
+ };
+
+ checkInputs = [ docutils virtualenv webtest zope_component ];
+
+ propagatedBuildInputs = [ hupper PasteDeploy plaster plaster-pastedeploy repoze_lru repoze_sphinx_autointerface translationstring venusian webob zope_deprecation zope_interface ];
+
+ # Failing tests
+ # https://github.com/Pylons/pyramid/issues/1899
+ doCheck = !isPy35;
+
+ meta = with stdenv.lib; {
+ description = "The Pyramid Web Framework, a Pylons project";
+ homepage = https://trypyramid.com/;
+ license = licenses.bsd0;
+ maintainers = with maintainers; [ domenkozar ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyramid_beaker/default.nix b/nixpkgs/pkgs/development/python-modules/pyramid_beaker/default.nix
new file mode 100644
index 00000000000..19b26a30ad7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyramid_beaker/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytest, beaker, pyramid }:
+
+buildPythonPackage rec {
+ pname = "pyramid_beaker";
+ version = "0.8";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0hflx3qkcdml1mwpq53sz46s7jickpfn0zy0ns2c7j445j66bp3p";
+ };
+
+ checkPhase = ''
+ # https://github.com/Pylons/pyramid_beaker/issues/29
+ py.test -k 'not test_includeme' pyramid_beaker/tests.py
+ '';
+
+ checkInputs = [ pytest ];
+
+ propagatedBuildInputs = [ beaker pyramid ];
+
+ meta = with stdenv.lib; {
+ maintainers = with maintainers; [ domenkozar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyramid_chameleon/default.nix b/nixpkgs/pkgs/development/python-modules/pyramid_chameleon/default.nix
new file mode 100644
index 00000000000..398869e467b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyramid_chameleon/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, chameleon
+, pyramid
+, zope_interface
+, setuptools
+}:
+
+buildPythonPackage rec {
+ pname = "pyramid_chameleon";
+ version = "0.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d176792a50eb015d7865b44bd9b24a7bd0489fa9a5cebbd17b9e05048cef9017";
+ };
+
+ patches = [
+ # https://github.com/Pylons/pyramid_chameleon/pull/25
+ ./test-renderers-pyramid-import.patch
+ ];
+
+ propagatedBuildInputs = [ chameleon pyramid zope_interface setuptools ];
+
+ meta = with stdenv.lib; {
+ description = "Chameleon template compiler for pyramid";
+ homepage = https://github.com/Pylons/pyramid_chameleon;
+ license = licenses.bsd0;
+ maintainers = with maintainers; [ domenkozar ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyramid_chameleon/test-renderers-pyramid-import.patch b/nixpkgs/pkgs/development/python-modules/pyramid_chameleon/test-renderers-pyramid-import.patch
new file mode 100644
index 00000000000..635ed3510fc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyramid_chameleon/test-renderers-pyramid-import.patch
@@ -0,0 +1,11 @@
+--- a/pyramid_chameleon/tests/test_renderers.py
++++ b/pyramid_chameleon/tests/test_renderers.py
+@@ -258,7 +258,7 @@ class TestChameleonRendererLookup(unittest.TestCase):
+ self.assertRaises(ValueError, lookup.__call__, info)
+
+ def test___call__spec_alreadyregistered(self):
+- from pyramid import tests
++ from pyramid_chameleon import tests
+ module_name = tests.__name__
+ relpath = 'test_renderers.py'
+ spec = '%s:%s' % (module_name, relpath)
diff --git a/nixpkgs/pkgs/development/python-modules/pyramid_exclog/default.nix b/nixpkgs/pkgs/development/python-modules/pyramid_exclog/default.nix
new file mode 100644
index 00000000000..152b12a935a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyramid_exclog/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pyramid
+}:
+
+buildPythonPackage rec {
+ pname = "pyramid_exclog";
+ version = "1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d05ced5c12407507154de6750036bc83861b85c11be70b3ec3098c929652c14b";
+ };
+
+ propagatedBuildInputs = [ pyramid ];
+
+ meta = with stdenv.lib; {
+ description = "A package which logs to a Python logger when an exception is raised by a Pyramid application";
+ homepage = http://docs.pylonsproject.org/;
+ license = licenses.bsd0;
+ maintainers = with maintainers; [ domenkozar ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyramid_hawkauth/default.nix b/nixpkgs/pkgs/development/python-modules/pyramid_hawkauth/default.nix
new file mode 100644
index 00000000000..a2723255057
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyramid_hawkauth/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchgit
+, pyramid
+, hawkauthlib
+, tokenlib
+, webtest
+}:
+
+buildPythonPackage rec {
+ pname = "pyramidhawkauth";
+ version = "0.1.0";
+
+ src = fetchgit {
+ url = https://github.com/mozilla-services/pyramid_hawkauth.git;
+ rev = "refs/tags/v${version}";
+ sha256 = "038ign7qlavlmvrhb2y8bygbxvy4j7bx2k1zg0i3wblg2ja50w7h";
+ };
+
+ propagatedBuildInputs = [ pyramid hawkauthlib tokenlib ];
+ buildInputs = [ webtest ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/mozilla-services/pyramid_hawkauth;
+ description = "A Pyramid authentication plugin for HAWK";
+ license = licenses.mpl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyramid_jinja2/default.nix b/nixpkgs/pkgs/development/python-modules/pyramid_jinja2/default.nix
new file mode 100644
index 00000000000..216fb57c221
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyramid_jinja2/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, webtest
+, jinja2
+, pyramid
+}:
+
+buildPythonPackage rec {
+ pname = "pyramid_jinja2";
+ version = "2.8";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "81e0615cb3108f2a251ff3141ad0d698a5d03685819f3a836ea84787e8489502";
+ };
+
+ buildInputs = [ webtest ];
+ propagatedBuildInputs = [ jinja2 pyramid ];
+
+ meta = with stdenv.lib; {
+ description = "Jinja2 template bindings for the Pyramid web framework";
+ homepage = https://github.com/Pylons/pyramid_jinja2;
+ license = licenses.bsd0;
+ maintainers = with maintainers; [ domenkozar ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyramid_mako/default.nix b/nixpkgs/pkgs/development/python-modules/pyramid_mako/default.nix
new file mode 100644
index 00000000000..b4064e9f0f7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyramid_mako/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, webtest
+, pyramid
+, Mako
+}:
+
+buildPythonPackage rec {
+ pname = "pyramid_mako";
+ version = "1.0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6da0987b9874cf53e72139624665a73965bbd7fbde504d1753e4231ce916f3a1";
+ };
+
+ buildInputs = [ webtest ];
+ propagatedBuildInputs = [ pyramid Mako ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/Pylons/pyramid_mako;
+ description = "Mako template bindings for the Pyramid web framework";
+ license = licenses.bsd0;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyramid_multiauth/default.nix b/nixpkgs/pkgs/development/python-modules/pyramid_multiauth/default.nix
new file mode 100644
index 00000000000..7c01e3e093b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyramid_multiauth/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pyramid
+}:
+
+buildPythonPackage rec {
+ pname = "pyramid_multiauth";
+ version = "0.9.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0lprqjyg3zcji6033p1l3s4nigjigc5423wgivkfhz46vq0jmniy";
+ };
+
+ propagatedBuildInputs = [ pyramid ];
+
+ meta = with stdenv.lib; {
+ description = "Authentication policy for Pyramid that proxies to a stack of other authentication policies";
+ homepage = https://github.com/mozilla-services/pyramid_multiauth;
+ license = licenses.mpl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyreadability/default.nix b/nixpkgs/pkgs/development/python-modules/pyreadability/default.nix
new file mode 100644
index 00000000000..60bdbf01167
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyreadability/default.nix
@@ -0,0 +1,25 @@
+{ lib, fetchPypi, buildPythonPackage
+, requests, chardet, cssselect, lxml
+}:
+
+buildPythonPackage rec {
+ pname = "PyReadability";
+ version = "0.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1k6fq416pdmjcdqh6gdxl0y0k8kj1zlpzwp5574xsvsha18p2zpn";
+ };
+
+ propagatedBuildInputs = [ requests chardet cssselect lxml ];
+
+ # ModuleNotFoundError: No module named 'tests'
+ doCheck = false;
+
+ meta = {
+ homepage = https://github.com/hyperlinkapp/python-readability;
+ description = "fast python port of arc90's readability tool, updated to match latest readability.js!";
+ license = lib.licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyregion/default.nix b/nixpkgs/pkgs/development/python-modules/pyregion/default.nix
new file mode 100644
index 00000000000..a2b0423e558
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyregion/default.nix
@@ -0,0 +1,60 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, fetchpatch
+, pyparsing
+, numpy
+, cython
+, astropy
+, astropy-helpers
+, pytest
+, pytest-astropy
+}:
+
+buildPythonPackage rec {
+ pname = "pyregion";
+ version = "2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a8ac5f764b53ec332f6bc43f6f2193ca13e8b7d5a3fb2e20ced6b2ea42a9d094";
+ };
+
+ propagatedBuildInputs = [
+ pyparsing
+ numpy
+ cython
+ astropy
+ ];
+
+ # Upstream patch needed for the test to pass
+ patches = [
+ (fetchpatch {
+ name = "conftest-astropy-3-fix.patch";
+ url = "https://github.com/astropy/pyregion/pull/136.patch";
+ sha256 = "13yxjxiqnhjy9gh24hvv6pnwx7qic2mcx3ccr1igjrc3f881d59m";
+ })
+ ];
+
+ nativeBuildInputs = [ astropy-helpers ];
+
+ checkInputs = [ pytest pytest-astropy ];
+
+ # Disable automatic update of the astropy-helper module
+ postPatch = ''
+ substituteInPlace setup.cfg --replace "auto_use = True" "auto_use = False"
+ '';
+
+ # Tests must be run in the build directory
+ checkPhase = ''
+ cd build/lib.*
+ pytest
+ '';
+
+ meta = with lib; {
+ description = "Python parser for ds9 region files";
+ homepage = https://github.com/astropy/pyregion;
+ license = licenses.mit;
+ maintainers = [ maintainers.smaret ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyreport/default.nix b/nixpkgs/pkgs/development/python-modules/pyreport/default.nix
new file mode 100644
index 00000000000..d75119b6e32
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyreport/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, 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 stdenv.lib; {
+ homepage = https://pypi.python.org/pypi/pyreport;
+ license = licenses.bsd0;
+ description = "Pyreport makes notes out of a python script";
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyres/default.nix b/nixpkgs/pkgs/development/python-modules/pyres/default.nix
new file mode 100644
index 00000000000..99c4b7116d5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyres/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchPypi, buildPythonPackage, fetchFromGitHub, simplejson, redis, setproctitle, nose, pkgs }:
+
+let
+
+ # the requirements of `pyres` support Redis 3.x (due to a missing upper-bound),
+ # but it doesn't support Redis 3.x.
+ redis' = redis.overridePythonAttrs (old: rec {
+ pname = "redis";
+ version = "2.10.6";
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "03vcgklykny0g0wpvqmy8p6azi2s078317wgb2xjv5m2rs9sjb52";
+ };
+ });
+
+in
+
+buildPythonPackage rec {
+ pname = "pyres";
+ version = "1.5";
+
+ # ps is used in Worker.worker_pids method
+ propagatedBuildInputs = [ simplejson setproctitle redis' pkgs.ps ];
+ checkInputs = [ nose pkgs.redis ];
+
+ # PyPI tarball doesn't contain tests so let's use GitHub
+ src = fetchFromGitHub {
+ owner = "binarydud";
+ repo = pname;
+ rev = version;
+ sha256 = "1rkpv7gbjxl9h9g7kncmsrgmi77l7pgfq8d7dbnsr3ia2jmjqb8y";
+ };
+
+ checkPhase = ''
+ redis-server &
+ nosetests . --exclude test_worker_pids
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Python resque clone";
+ homepage = https://github.com/binarydud/pyres;
+ license = licenses.mit;
+ maintainers = with maintainers; [ jluttine ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyrfc3339/default.nix b/nixpkgs/pkgs/development/python-modules/pyrfc3339/default.nix
new file mode 100644
index 00000000000..ba72bf4be94
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyrfc3339/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytz
+, nose
+}:
+
+buildPythonPackage rec {
+ pname = "pyRFC3339";
+ version = "1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "06jv7ar7lpvvk0dixzwdr3wgm0g1lipxs429s2z7knwwa7hwpf41";
+ };
+
+ propagatedBuildInputs = [ pytz ];
+ buildInputs = [ nose ];
+
+ meta = with stdenv.lib; {
+ description = "Generate and parse RFC 3339 timestamps";
+ homepage = https://github.com/kurtraschke/pyRFC3339;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyro-ppl/default.nix b/nixpkgs/pkgs/development/python-modules/pyro-ppl/default.nix
new file mode 100644
index 00000000000..f70f10da41a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyro-ppl/default.nix
@@ -0,0 +1,38 @@
+{ buildPythonPackage, fetchPypi, lib, pytorch, contextlib2
+, graphviz, networkx, six, opt-einsum, tqdm }:
+buildPythonPackage rec {
+ version = "0.3.3";
+ pname = "pyro-ppl";
+
+ src = fetchPypi {
+ inherit version pname;
+ sha256 = "e980e2aa5a029e2f133d422a9154a21c9cca96c417c230ddde858e41aa43687b";
+ };
+
+ propagatedBuildInputs = [
+ pytorch
+ contextlib2
+ # TODO(tom): graphviz pulls in a lot of dependencies - make
+ # optional when some time to figure out how.
+ graphviz
+ networkx
+ six
+ opt-einsum
+ tqdm
+ ];
+
+ # pyro not shipping tests do simple smoke test instead
+ checkPhase = ''
+ python -c "import pyro"
+ python -c "import pyro.distributions"
+ python -c "import pyro.infer"
+ python -c "import pyro.optim"
+ '';
+
+ meta = {
+ description = "A Python library for probabilistic modeling and inference";
+ homepage = http://pyro.ai;
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ teh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyro4/default.nix b/nixpkgs/pkgs/development/python-modules/pyro4/default.nix
new file mode 100644
index 00000000000..8851b046414
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyro4/default.nix
@@ -0,0 +1,44 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, lib
+, python
+, serpent
+, dill
+, cloudpickle
+, msgpack
+, isPy27
+, isPy33
+, selectors34
+}:
+
+buildPythonPackage rec {
+ pname = "Pyro4";
+ version = "4.75";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1dfpp36imddx19yv0kd28gk1l71ckhpqy6jd590wpm2680jw15rq";
+ };
+
+ propagatedBuildInputs = [
+ serpent
+ ] ++ lib.optionals (isPy27 || isPy33) [ selectors34 ];
+
+ buildInputs = [
+ dill
+ cloudpickle
+ msgpack
+ ];
+
+ checkPhase = ''
+ ${python.interpreter} setup.py test
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Distributed object middleware for Python (RPC)";
+ homepage = https://github.com/irmen/Pyro4;
+ license = licenses.mit;
+ maintainers = with maintainers; [ prusnak ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyroute2/default.nix b/nixpkgs/pkgs/development/python-modules/pyroute2/default.nix
new file mode 100644
index 00000000000..d99a703b173
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyroute2/default.nix
@@ -0,0 +1,22 @@
+{stdenv, buildPythonPackage, fetchPypi}:
+
+buildPythonPackage rec {
+ pname = "pyroute2";
+ version = "0.5.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "deae0e6191a04c3ee213c6fae6ed779602ef5da5ca5e2fa533f27bc04326bfbe";
+ };
+
+ # requires root priviledges
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Python Netlink library";
+ homepage = https://github.com/svinota/pyroute2;
+ license = licenses.asl20;
+ maintainers = [maintainers.mic92];
+ platforms = platforms.unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyrr/default.nix b/nixpkgs/pkgs/development/python-modules/pyrr/default.nix
new file mode 100644
index 00000000000..3380cf1205c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyrr/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, setuptools
+, multipledispatch
+, numpy
+}:
+
+buildPythonPackage rec {
+ version = "0.10.3";
+ pname = "pyrr";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "3c0f7b20326e71f706a610d58f2190fff73af01eef60c19cb188b186f0ec7e1d";
+ };
+
+ buildInputs = [ setuptools ];
+ propagatedBuildInputs = [ multipledispatch numpy ];
+
+ meta = with stdenv.lib; {
+ description = "3D mathematical functions using NumPy";
+ homepage = https://github.com/adamlwgriffiths/Pyrr/;
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ c0deaddict ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyrsistent/default.nix b/nixpkgs/pkgs/development/python-modules/pyrsistent/default.nix
new file mode 100644
index 00000000000..cabb96d2256
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyrsistent/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+, pytest
+, hypothesis
+, pytestrunner
+}:
+
+buildPythonPackage rec {
+ pname = "pyrsistent";
+ version = "0.15.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0fjwnxg7q1b02j7hk1wqm5xdn7wck9j2g3ggkkizab6l77kjws8n";
+ };
+
+ propagatedBuildInputs = [ six ];
+
+ checkInputs = [ pytestrunner pytest hypothesis ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/tobgu/pyrsistent/;
+ description = "Persistent/Functional/Immutable data structures";
+ license = licenses.mit;
+ maintainers = with maintainers; [ desiderius ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyrss2gen/default.nix b/nixpkgs/pkgs/development/python-modules/pyrss2gen/default.nix
new file mode 100644
index 00000000000..1c65d7ca5c7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyrss2gen/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "PyRSS2Gen";
+ version = "1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1rvf5jw9hknqz02rp1vg8abgb1lpa0bc65l7ylmlillqx7bswq3r";
+ };
+
+ # No tests in archive
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = http://www.dalkescientific.om/Python/PyRSS2Gen.html;
+ description = "Library for generating RSS 2.0 feeds";
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ domenkozar ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyrtlsdr/default.nix b/nixpkgs/pkgs/development/python-modules/pyrtlsdr/default.nix
new file mode 100644
index 00000000000..0bb24031084
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyrtlsdr/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, fetchpatch
+, rtl-sdr
+, m2r
+}:
+
+buildPythonPackage rec {
+ pname = "pyrtlsdr";
+ version = "0.2.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "7942fe2e7821d09206002ea7e820e694094b3f964885123eb6eee1167f39b8da";
+ };
+
+ # Replace pypandoc dependency by m2r
+ # See https://github.com/roger-/pyrtlsdr/pull/78
+ patches = [
+ (fetchpatch {
+ url = "${meta.homepage}/commit/2b7df0b.patch";
+ sha256 = "04h5z80969jgdgrf98b9ps56sybms09xacvmj6rwcfrmanli8rgf";
+ })
+ (fetchpatch {
+ url = "${meta.homepage}/commit/97dc3d0.patch";
+ sha256 = "1v1j0n91jwpsiam2j34yj71z4h39cvk4gi4565zgjrzsq6xr93i0";
+ })
+ ];
+
+ nativeBuildInputs = [ m2r ];
+
+ postPatch = ''
+ sed "s|driver_files =.*|driver_files = ['${rtl-sdr}/lib/librtlsdr.so']|" -i rtlsdr/librtlsdr.py
+ '';
+
+ # No tests that can be used.
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Python wrapper for librtlsdr (a driver for Realtek RTL2832U based SDR's)";
+ homepage = https://github.com/roger-/pyrtlsdr;
+ license = licenses.gpl3;
+ platforms = platforms.unix;
+ maintainers = with maintainers; [ bjornfor ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pysam/default.nix b/nixpkgs/pkgs/development/python-modules/pysam/default.nix
new file mode 100644
index 00000000000..05f2db8ac06
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pysam/default.nix
@@ -0,0 +1,48 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, bzip2
+, bcftools
+, curl
+, cython
+, htslib
+, lzma
+, pytest
+, samtools
+, zlib
+}:
+
+buildPythonPackage rec {
+ pname = "pysam";
+ version = "0.15.2";
+
+ # Fetching from GitHub instead of PyPi cause the 0.13 src release on PyPi is
+ # missing some files which cause test failures.
+ # Tracked at: https://github.com/pysam-developers/pysam/issues/616
+ src = fetchFromGitHub {
+ owner = "pysam-developers";
+ repo = "pysam";
+ rev = "v${version}";
+ sha256 = "03aczbzx6gmvgy60fhswpwkry7a8zb5q1pbp55v5gx8hk15n40k1";
+ };
+
+ buildInputs = [ bzip2 curl cython lzma zlib ];
+
+ checkInputs = [ pytest bcftools htslib samtools ];
+
+ checkPhase = "py.test";
+
+ preInstall = ''
+ export HOME=$(mktemp -d)
+ make -C tests/pysam_data
+ make -C tests/cbcf_data
+ '';
+
+ meta = {
+ homepage = http://pysam.readthedocs.io/;
+ description = "A python module for reading, manipulating and writing genome data sets";
+ maintainers = with lib.maintainers; [ unode ];
+ license = lib.licenses.mit;
+ platforms = [ "i686-linux" "x86_64-linux" ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pysaml2/default.nix b/nixpkgs/pkgs/development/python-modules/pysaml2/default.nix
new file mode 100644
index 00000000000..1528623aa0e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pysaml2/default.nix
@@ -0,0 +1,46 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, substituteAll
+, xmlsec
+, cryptography, defusedxml, future, pyopenssl, dateutil, pytz, requests, six
+, mock, pyasn1, pymongo, pytest, responses
+}:
+
+buildPythonPackage rec {
+ pname = "pysaml2";
+ version = "4.8.0";
+
+ # No tests in PyPI tarball
+ src = fetchFromGitHub {
+ owner = "IdentityPython";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "1nnmk7apg169bawqi06jbx3p0x4sq12kszzl7k6j39273hqq5ii4";
+ };
+
+ patches = [
+ (substituteAll {
+ src = ./hardcode-xmlsec1-path.patch;
+ inherit xmlsec;
+ })
+ ];
+
+ propagatedBuildInputs = [ cryptography defusedxml future pyopenssl dateutil pytz requests six ];
+
+ checkInputs = [ mock pyasn1 pymongo pytest responses ];
+
+ # Disabled tests try to access the network
+ checkPhase = ''
+ py.test -k "not test_load_extern_incommon \
+ and not test_load_remote_encoding \
+ and not test_load_external"
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/rohe/pysaml2";
+ description = "Python implementation of SAML Version 2 Standard";
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pysaml2/hardcode-xmlsec1-path.patch b/nixpkgs/pkgs/development/python-modules/pysaml2/hardcode-xmlsec1-path.patch
new file mode 100644
index 00000000000..d984c55a8a7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pysaml2/hardcode-xmlsec1-path.patch
@@ -0,0 +1,39 @@
+diff --git a/src/saml2/sigver.py b/src/saml2/sigver.py
+index 59fe2dee..0c24fbcc 100644
+--- a/src/saml2/sigver.py
++++ b/src/saml2/sigver.py
+@@ -165,33 +165,7 @@ def get_xmlsec_binary(paths=None):
+ :return: full name of the xmlsec1 binary found. If no binaries are
+ found then an exception is raised.
+ """
+- if os.name == 'posix':
+- bin_name = ['xmlsec1']
+- elif os.name == 'nt':
+- bin_name = ['xmlsec.exe', 'xmlsec1.exe']
+- else: # Default !?
+- bin_name = ['xmlsec1']
+-
+- if paths:
+- for bname in bin_name:
+- for path in paths:
+- fil = os.path.join(path, bname)
+- try:
+- if os.lstat(fil):
+- return fil
+- except OSError:
+- pass
+-
+- for path in os.environ['PATH'].split(os.pathsep):
+- for bname in bin_name:
+- fil = os.path.join(path, bname)
+- try:
+- if os.lstat(fil):
+- return fil
+- except OSError:
+- pass
+-
+- raise SigverError('Cannot find {binary}'.format(binary=bin_name))
++ return '@xmlsec@/bin/xmlsec1'
+
+
+ def _get_xmlsec_cryptobackend(path=None, search_paths=None):
diff --git a/nixpkgs/pkgs/development/python-modules/pysc2/default.nix b/nixpkgs/pkgs/development/python-modules/pysc2/default.nix
new file mode 100644
index 00000000000..d02c85fb4ff
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pysc2/default.nix
@@ -0,0 +1,63 @@
+{ buildPythonPackage
+, lib
+, fetchFromGitHub
+, absl-py
+, enum34
+, future
+, mock
+, mpyq
+, numpy
+, portpicker
+, protobuf
+, pygame
+, s2clientprotocol
+, six
+, websocket_client
+, sc2-headless
+}:
+
+buildPythonPackage {
+ pname = "PySC2";
+ version = "1.2";
+
+ src = fetchFromGitHub {
+ owner = "deepmind";
+ repo = "pysc2";
+ rev = "39f84b01d662eb58b3d95791f59208c210afd4e7";
+ sha256 = "0dfbc2krd2rys1ji75ng2nl0ki8nhnylxljcp287bfb8qyz2m25p";
+ };
+
+ patches = [
+ ./fix-setup-for-py3.patch
+ ./parameterize-runconfig-sc2path.patch
+ ];
+
+ postPatch = ''
+ substituteInPlace "./pysc2/run_configs/platforms.py" \
+ --subst-var-by 'sc2path' '${sc2-headless}'
+ '';
+
+ propagatedBuildInputs = [
+ absl-py
+ enum34
+ future
+ mock
+ mpyq
+ numpy
+ portpicker
+ protobuf
+ pygame
+ s2clientprotocol
+ six
+ websocket_client
+ sc2-headless
+ ];
+
+ meta = {
+ description = "Starcraft II environment and library for training agents.";
+ homepage = "https://github.com/deepmind/pysc2";
+ license = lib.licenses.asl20;
+ platforms = lib.platforms.linux;
+ maintainers = with lib.maintainers; [ danharaj ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pysc2/fix-setup-for-py3.patch b/nixpkgs/pkgs/development/python-modules/pysc2/fix-setup-for-py3.patch
new file mode 100644
index 00000000000..b1a2b4e2350
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pysc2/fix-setup-for-py3.patch
@@ -0,0 +1,64 @@
+diff --git a/setup.py b/setup.py
+index 020768f..13c2b67 100755
+--- a/setup.py
++++ b/setup.py
+@@ -17,6 +17,8 @@ from __future__ import absolute_import
+ from __future__ import division
+ from __future__ import print_function
+
++import sys
++
+ from setuptools import setup
+
+ description = """PySC2 - StarCraft II Learning Environment
+@@ -36,6 +38,27 @@ some initial research results using the environment.
+ Read the README at https://github.com/deepmind/pysc2 for more information.
+ """
+
++requires = [
++ 'absl-py>=0.1.0',
++ 'future',
++ 'mock',
++ 'mpyq',
++ 'numpy>=1.10',
++ 'portpicker>=1.2.0',
++ 'protobuf>=2.6',
++ 'pygame',
++ 's2clientprotocol>=3.19.0.58400.0',
++ 'six',
++ 'websocket-client',
++]
++
++if sys.version_info[0] == 2:
++ requires.append('futures')
++
++if (sys.version_info[0] == 2
++ or (sys.version_info[0] == 3 and sys.version_info[1] < 4)):
++ requires.append('enum34')
++
+ setup(
+ name='PySC2',
+ version='1.2',
+@@ -56,21 +79,7 @@ setup(
+ 'pysc2.run_configs',
+ 'pysc2.tests',
+ ],
+- install_requires=[
+- 'absl-py>=0.1.0',
+- 'enum34',
+- 'future',
+- 'futures',
+- 'mock',
+- 'mpyq',
+- 'numpy>=1.10',
+- 'portpicker>=1.2.0',
+- 'protobuf>=2.6',
+- 'pygame',
+- 's2clientprotocol>=3.19.0.58400.0',
+- 'six',
+- 'websocket-client',
+- ],
++ install_requires=requires,
+ entry_points={
+ 'console_scripts': [
+ 'pysc2_agent = pysc2.bin.agent:entry_point',
diff --git a/nixpkgs/pkgs/development/python-modules/pysc2/parameterize-runconfig-sc2path.patch b/nixpkgs/pkgs/development/python-modules/pysc2/parameterize-runconfig-sc2path.patch
new file mode 100644
index 00000000000..be667503d47
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pysc2/parameterize-runconfig-sc2path.patch
@@ -0,0 +1,18 @@
+diff --git a/pysc2/run_configs/platforms.py b/pysc2/run_configs/platforms.py
+index 5cd84f9..1923cb7 100644
+--- a/pysc2/run_configs/platforms.py
++++ b/pysc2/run_configs/platforms.py
+@@ -119,12 +119,9 @@ class Linux(LocalBase):
+ """Config to run on Linux."""
+
+ def __init__(self):
+- base_dir = os.environ.get("SC2PATH", "~/StarCraftII")
++ base_dir = os.environ.get("SC2PATH", "@sc2path@")
+ base_dir = os.path.expanduser(base_dir)
+ env = copy.deepcopy(os.environ)
+- env["LD_LIBRARY_PATH"] = ":".join(filter(None, [
+- os.environ.get("LD_LIBRARY_PATH"),
+- os.path.join(base_dir, "Libs/")]))
+ super(Linux, self).__init__(base_dir, "SC2_x64", env=env)
+
+ @classmethod
diff --git a/nixpkgs/pkgs/development/python-modules/pyscard/default.nix b/nixpkgs/pkgs/development/python-modules/pyscard/default.nix
new file mode 100644
index 00000000000..06e2690c111
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyscard/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, fetchPypi, fetchpatch, buildPythonPackage, swig, pcsclite, PCSC }:
+
+let
+ # Package does not support configuring the pcsc library.
+ withApplePCSC = stdenv.isDarwin;
+
+ inherit (stdenv.lib) getLib getDev optionalString optionals;
+ inherit (stdenv.hostPlatform.extensions) sharedLibrary;
+in
+
+buildPythonPackage rec {
+ version = "1.9.8";
+ pname = "pyscard";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "15fh00z1an6r5j7hrz3jlq0rb3jygwf3x4jcwsa008bv8vpcg7gm";
+ };
+
+ postPatch = if withApplePCSC then ''
+ substituteInPlace smartcard/scard/winscarddll.c \
+ --replace "/System/Library/Frameworks/PCSC.framework/PCSC" \
+ "${PCSC}/Library/Frameworks/PCSC.framework/PCSC"
+ '' else ''
+ substituteInPlace smartcard/scard/winscarddll.c \
+ --replace "libpcsclite.so.1" \
+ "${getLib pcsclite}/lib/libpcsclite${sharedLibrary}"
+ '';
+
+ NIX_CFLAGS_COMPILE = optionalString (! withApplePCSC)
+ "-I ${getDev pcsclite}/include/PCSC";
+
+ # The error message differs depending on the macOS host version.
+ # Since Nix reports a constant host version, but proxies to the
+ # underlying library, it's not possible to determine the correct
+ # expected error message. This patch allows both errors to be
+ # accepted.
+ # See: https://github.com/LudovicRousseau/pyscard/issues/77
+ patches = optionals withApplePCSC [ ./ignore-macos-bug.patch ];
+
+ propagatedBuildInputs = if withApplePCSC then [ PCSC ] else [ pcsclite ];
+ nativeBuildInputs = [ swig ];
+
+ meta = {
+ homepage = https://pyscard.sourceforge.io/;
+ description = "Smartcard library for python";
+ license = stdenv.lib.licenses.lgpl21;
+ maintainers = with stdenv.lib.maintainers; [ layus ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyscard/ignore-macos-bug.patch b/nixpkgs/pkgs/development/python-modules/pyscard/ignore-macos-bug.patch
new file mode 100644
index 00000000000..62b20477c9f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyscard/ignore-macos-bug.patch
@@ -0,0 +1,22 @@
+diff --git a/test/test_SCardGetErrorMessage.py b/test/test_SCardGetErrorMessage.py
+old mode 100644
+new mode 100755
+index c6fe755..c1217f5
+--- a/test/test_SCardGetErrorMessage.py
++++ b/test/test_SCardGetErrorMessage.py
+@@ -29,12 +29,10 @@ class TestError(unittest.TestCase):
+ self.assertEqual(res, expected)
+
+ res = SCardGetErrorMessage(1)
++ expected = "Unknown error: 0x00000001"
+ # macOS bug not yet fixed
+- if get_platform().startswith('macosx-') and get_platform() < 'macosx-10.13':
+- expected = "Unkown error: 0x00000001"
+- else:
+- expected = "Unknown error: 0x00000001"
+- self.assertEqual(res, expected)
++ macos_bug_expected = "Unkown error: 0x00000001"
++ self.assertIn(res, [expected, macos_bug_expected])
+
+
+ if __name__ == '__main__':
diff --git a/nixpkgs/pkgs/development/python-modules/pyschedule/default.nix b/nixpkgs/pkgs/development/python-modules/pyschedule/default.nix
new file mode 100644
index 00000000000..5fbabdc0988
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyschedule/default.nix
@@ -0,0 +1,29 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pulp
+}:
+
+buildPythonPackage rec {
+ pname = "pyschedule";
+ version = "0.2.34";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6bba9e9ea07906ce2dfe3cd847c1822b137f6b13e9f975c50b347312fd98e110";
+ };
+
+ propagatedBuildInputs = [
+ pulp
+ ];
+
+ # tests not included with pypi release (in examples)
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Formulate and solve resource-constrained scheduling problems";
+ homepage = https://github.com/timnon/pyschedule;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyscss/default.nix b/nixpkgs/pkgs/development/python-modules/pyscss/default.nix
new file mode 100644
index 00000000000..2dfa1f22962
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyscss/default.nix
@@ -0,0 +1,39 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, pytest
+, six
+, enum34
+, pathlib
+, ordereddict
+, pythonOlder
+}:
+
+buildPythonPackage {
+ pname = "pyScss";
+ version = "1.3.5";
+
+ src = fetchFromGitHub {
+ sha256 = "0lfsan74vcw6dypb196gmbprvlbran8p7w6czy8hyl2b1l728mhz";
+ rev = "v1.3.5";
+ repo = "pyScss";
+ owner = "Kronuz";
+ };
+
+ checkInputs = [ pytest ];
+
+ propagatedBuildInputs = [ six ]
+ ++ (stdenv.lib.optionals (pythonOlder "3.4") [ enum34 pathlib ])
+ ++ (stdenv.lib.optionals (pythonOlder "2.7") [ ordereddict ]);
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A Scss compiler for Python";
+ homepage = https://pyscss.readthedocs.org/en/latest/;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pysdl2/PySDL2-dll.patch b/nixpkgs/pkgs/development/python-modules/pysdl2/PySDL2-dll.patch
new file mode 100644
index 00000000000..ca723a0e573
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pysdl2/PySDL2-dll.patch
@@ -0,0 +1,119 @@
+diff -ru PySDL2-0.9.6-old/sdl2/dll.py PySDL2-0.9.6/sdl2/dll.py
+--- PySDL2-0.9.6-old/sdl2/dll.py 2018-03-08 10:18:37.583471745 +0100
++++ PySDL2-0.9.6/sdl2/dll.py 2018-03-08 10:20:06.705517520 +0100
+@@ -45,29 +45,31 @@
+ """Function wrapper around the different DLL functions. Do not use or
+ instantiate this one directly from your user code.
+ """
+- def __init__(self, libinfo, libnames, path=None):
+- self._dll = None
+- foundlibs = _findlib(libnames, path)
+- dllmsg = "PYSDL2_DLL_PATH: %s" % (os.getenv("PYSDL2_DLL_PATH") or "unset")
+- if len(foundlibs) == 0:
+- raise RuntimeError("could not find any library for %s (%s)" %
+- (libinfo, dllmsg))
+- for libfile in foundlibs:
+- try:
+- self._dll = CDLL(libfile)
+- self._libfile = libfile
+- break
+- except Exception as exc:
+- # Could not load the DLL, move to the next, but inform the user
+- # about something weird going on - this may become noisy, but
+- # is better than confusing the users with the RuntimeError below
+- warnings.warn(repr(exc), DLLWarning)
+- if self._dll is None:
+- raise RuntimeError("found %s, but it's not usable for the library %s" %
+- (foundlibs, libinfo))
+- if path is not None and sys.platform in ("win32",) and \
+- path in self._libfile:
+- os.environ["PATH"] = "%s;%s" % (path, os.environ["PATH"])
++ def __init__(self, libfile):
++ self._dll = CDLL(libfile)
++ self._libfile = libfile
++ # self._dll = None
++ # foundlibs = _findlib(libnames, path)
++ # dllmsg = "PYSDL2_DLL_PATH: %s" % (os.getenv("PYSDL2_DLL_PATH") or "unset")
++ # if len(foundlibs) == 0:
++ # raise RuntimeError("could not find any library for %s (%s)" %
++ # (libinfo, dllmsg))
++ # for libfile in foundlibs:
++ # try:
++ # self._dll = CDLL(libfile)
++ # self._libfile = libfile
++ # break
++ # except Exception as exc:
++ # # Could not load the DLL, move to the next, but inform the user
++ # # about something weird going on - this may become noisy, but
++ # # is better than confusing the users with the RuntimeError below
++ # warnings.warn(repr(exc), DLLWarning)
++ # if self._dll is None:
++ # raise RuntimeError("found %s, but it's not usable for the library %s" %
++ # (foundlibs, libinfo))
++ # if path is not None and sys.platform in ("win32",) and \
++ # path in self._libfile:
++ # os.environ["PATH"] = "%s;%s" % (path, os.environ["PATH"])
+
+ def bind_function(self, funcname, args=None, returns=None, optfunc=None):
+ """Binds the passed argument and return value types to the specified
+@@ -110,7 +112,7 @@
+ return
+
+ try:
+- dll = DLL("SDL2", ["SDL2", "SDL2-2.0"], os.getenv("PYSDL2_DLL_PATH"))
++ dll = DLL("SDL2")
+ except RuntimeError as exc:
+ raise ImportError(exc)
+
+diff -ru PySDL2-0.9.6-old/sdl2/sdlgfx.py PySDL2-0.9.6/sdl2/sdlgfx.py
+--- PySDL2-0.9.6-old/sdl2/sdlgfx.py 2018-03-08 10:18:37.585471769 +0100
++++ PySDL2-0.9.6/sdl2/sdlgfx.py 2018-03-08 10:20:06.705517520 +0100
+@@ -34,8 +34,7 @@
+ ]
+
+ try:
+- dll = DLL("SDL2_gfx", ["SDL2_gfx", "SDL2_gfx-1.0"],
+- os.getenv("PYSDL2_DLL_PATH"))
++ dll = DLL("SDL2_gfx")
+ except RuntimeError as exc:
+ raise ImportError(exc)
+
+diff -ru PySDL2-0.9.6-old/sdl2/sdlimage.py PySDL2-0.9.6/sdl2/sdlimage.py
+--- PySDL2-0.9.6-old/sdl2/sdlimage.py 2018-03-08 10:18:37.585471769 +0100
++++ PySDL2-0.9.6/sdl2/sdlimage.py 2018-03-08 10:20:06.705517520 +0100
+@@ -26,8 +26,7 @@
+ ]
+
+ try:
+- dll = DLL("SDL2_image", ["SDL2_image", "SDL2_image-2.0"],
+- os.getenv("PYSDL2_DLL_PATH"))
++ dll = DLL("SDL2_image")
+ except RuntimeError as exc:
+ raise ImportError(exc)
+
+diff -ru PySDL2-0.9.6-old/sdl2/sdlmixer.py PySDL2-0.9.6/sdl2/sdlmixer.py
+--- PySDL2-0.9.6-old/sdl2/sdlmixer.py 2018-03-08 10:18:37.585471769 +0100
++++ PySDL2-0.9.6/sdl2/sdlmixer.py 2018-03-08 10:20:27.415758478 +0100
+@@ -50,8 +50,7 @@
+ ]
+
+ try:
+- dll = DLL("SDL2_mixer", ["SDL2_mixer", "SDL2_mixer-2.0"],
+- os.getenv("PYSDL2_DLL_PATH"))
++ dll = DLL("SDL2_mixer")
+ except RuntimeError as exc:
+ raise ImportError(exc)
+
+diff -ru PySDL2-0.9.6-old/sdl2/sdlttf.py PySDL2-0.9.6/sdl2/sdlttf.py
+--- PySDL2-0.9.6-old/sdl2/sdlttf.py 2018-03-08 10:18:37.585471769 +0100
++++ PySDL2-0.9.6/sdl2/sdlttf.py 2018-03-08 10:20:06.705517520 +0100
+@@ -38,8 +38,7 @@
+ ]
+
+ try:
+- dll = DLL("SDL2_ttf", ["SDL2_ttf", "SDL2_ttf-2.0"],
+- os.getenv("PYSDL2_DLL_PATH"))
++ dll = DLL("SDL2_ttf")
+ except RuntimeError as exc:
+ raise ImportError(exc)
+
diff --git a/nixpkgs/pkgs/development/python-modules/pysdl2/default.nix b/nixpkgs/pkgs/development/python-modules/pysdl2/default.nix
new file mode 100644
index 00000000000..1ffc546cfa1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pysdl2/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, lib, fetchPypi, buildPythonPackage, SDL2, SDL2_ttf, SDL2_image, SDL2_gfx, SDL2_mixer }:
+
+buildPythonPackage rec {
+ pname = "PySDL2";
+ version = "0.9.6";
+ # 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
+ # sandboxed. Disable for now.
+ doCheck = false;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "08r1v9wdq8pzds4g3sng2xgh1hlzfs2z7qgy5a6b0xrs96swlamm";
+ };
+
+ # Deliberately not in propagated build inputs; users can decide
+ # which library they want to include.
+ buildInputs = [ SDL2_ttf SDL2_image SDL2_gfx SDL2_mixer ];
+ propagatedBuildInputs = [ SDL2 ];
+ patches = [ ./PySDL2-dll.patch ];
+ postPatch = ''
+ substituteInPlace sdl2/dll.py --replace \
+ "DLL(\"SDL2\")" "DLL('${SDL2}/lib/libSDL2${stdenv.hostPlatform.extensions.sharedLibrary}')"
+ substituteInPlace sdl2/sdlttf.py --replace \
+ "DLL(\"SDL2_ttf\")" "DLL('${SDL2_ttf}/lib/libSDL2_ttf${stdenv.hostPlatform.extensions.sharedLibrary}')"
+ substituteInPlace sdl2/sdlimage.py --replace \
+ "DLL(\"SDL2_image\")" "DLL('${SDL2_image}/lib/libSDL2_image${stdenv.hostPlatform.extensions.sharedLibrary}')"
+ substituteInPlace sdl2/sdlgfx.py --replace \
+ "DLL(\"SDL2_gfx\")" "DLL('${SDL2_gfx}/lib/libSDL2_gfx${stdenv.hostPlatform.extensions.sharedLibrary}')"
+ substituteInPlace sdl2/sdlmixer.py --replace \
+ "DLL(\"SDL2_mixer\")" "DLL('${SDL2_mixer}/lib/libSDL2_mixer${stdenv.hostPlatform.extensions.sharedLibrary}')"
+ '';
+
+ meta = {
+ description = "A wrapper around the SDL2 library and as such similar to the discontinued PySDL project";
+ homepage = https://github.com/marcusva/py-sdl2;
+ license = lib.licenses.publicDomain;
+ maintainers = with lib.maintainers; [ pmiddend ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pysendfile/default.nix b/nixpkgs/pkgs/development/python-modules/pysendfile/default.nix
new file mode 100644
index 00000000000..b49ec5030f9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pysendfile/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "pysendfile";
+ version = "2.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "05qf0m32isflln1zjgxlpw0wf469lj86vdwwqyizp1h94x5l22ji";
+ };
+
+ checkPhase = ''
+ # this test takes too long
+ sed -i 's/test_big_file/noop/' test/test_sendfile.py
+ ${python.executable} test/test_sendfile.py
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/giampaolo/pysendfile";
+ description = "A Python interface to sendfile(2)";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pysensors/default.nix b/nixpkgs/pkgs/development/python-modules/pysensors/default.nix
new file mode 100644
index 00000000000..3f55a015991
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pysensors/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, buildPythonPackage, python, fetchFromGitHub, lm_sensors }:
+buildPythonPackage {
+ version = "2017-07-13";
+ pname = "pysensors";
+
+ # note that https://pypi.org/project/PySensors/ is a different project
+ src = fetchFromGitHub {
+ owner = "bastienleonard";
+ repo = "pysensors";
+ rev = "ef46fc8eb181ecb8ad09b3d80bc002d23d9e26b3";
+ sha256 = "1xvbxnkz55fk5fpr514263c7s7s9r8hgrw4ybfaj5a0mligmmrfm";
+ };
+
+ buildInputs = [ lm_sensors ];
+
+ # Tests are disable because they fail on `aarch64-linux`, probably
+ # due to sandboxing
+ doCheck = false;
+
+ checkPhase = ''
+ cd tests
+ ${python.interpreter} -m unittest discover
+ '';
+
+ meta = with stdenv.lib; {
+ maintainers = with maintainers; [ guibou ];
+ description = "Easy hardware health monitoring in Python for Linux systems";
+ homepage = https://pysensors.readthedocs.org;
+ license = licenses.bsd2;
+ platforms = platforms.linux;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyserial/default.nix b/nixpkgs/pkgs/development/python-modules/pyserial/default.nix
new file mode 100644
index 00000000000..98ffbe5ad9e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyserial/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, lib, fetchPypi, buildPythonPackage }:
+
+buildPythonPackage rec {
+ pname = "pyserial";
+ version="3.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "09y68bczw324a4jb9a1cfwrbjhq179vnfkkkrybbksp0vqgl0bbf";
+ };
+
+ checkPhase = "python -m unittest discover -s test";
+ doCheck = !stdenv.hostPlatform.isDarwin; # broken on darwin
+
+ meta = with lib; {
+ homepage = "https://github.com/pyserial/pyserial";
+ license = licenses.psfl;
+ description = "Python serial port extension";
+ maintainers = with maintainers; [ makefu ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pysftp/default.nix b/nixpkgs/pkgs/development/python-modules/pysftp/default.nix
new file mode 100644
index 00000000000..0ed5790a519
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pysftp/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPyPy
+, paramiko
+}:
+
+buildPythonPackage rec {
+ pname = "pysftp";
+ version = "0.2.9";
+ disabled = isPyPy;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0jl5qix5cxzrv4lb8rfpjkpcghbkacnxkb006ikn7mkl5s05mxgv";
+ };
+
+ propagatedBuildInputs = [ paramiko ];
+
+ meta = with stdenv.lib; {
+ homepage = https://bitbucket.org/dundeemt/pysftp;
+ description = "A friendly face on SFTP";
+ license = licenses.mit;
+ longDescription = ''
+ A simple interface to SFTP. The module offers high level abstractions
+ and task based routines to handle your SFTP needs. Checkout the Cook
+ Book, in the docs, to see what pysftp can do for you.
+ '';
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pysha3/default.nix b/nixpkgs/pkgs/development/python-modules/pysha3/default.nix
new file mode 100644
index 00000000000..d459be25a86
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pysha3/default.nix
@@ -0,0 +1,18 @@
+{ lib, buildPythonPackage, fetchPypi, pythonOlder }:
+
+buildPythonPackage rec {
+ pname = "pysha3";
+ version = "1.0.2";
+ disabled = pythonOlder "2.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "17kkjapv6sr906ib0r5wpldmzw7scza08kv241r98vffy9rqx67y";
+ };
+
+ meta = {
+ description = "Backport of hashlib.sha3 for 2.7 to 3.5";
+ homepage = https://github.com/tiran/pysha3;
+ license = lib.licenses.psfl;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyshp/default.nix b/nixpkgs/pkgs/development/python-modules/pyshp/default.nix
new file mode 100644
index 00000000000..17d60f7507d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyshp/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, setuptools }:
+
+buildPythonPackage rec {
+ version = "2.1.0";
+ pname = "pyshp";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1h75a5fisqqj48m6wq7jhdxv6arjg3mvnr5q404pvfbjscj7yp76";
+ };
+
+ buildInputs = [ setuptools ];
+
+ meta = with stdenv.lib; {
+ description = "Pure Python read/write support for ESRI Shapefile format";
+ homepage = https://github.com/GeospatialPython/pyshp;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyside/apiextractor.nix b/nixpkgs/pkgs/development/python-modules/pyside/apiextractor.nix
new file mode 100644
index 00000000000..d9168f291c0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyside/apiextractor.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, cmake, libxml2, libxslt, python2, qt4 }:
+
+# This derivation does not provide any Python module and should therefore be called via `all-packages.nix`.
+let
+ pythonEnv = python2.withPackages(ps: with ps; [ sphinx ]);
+in stdenv.mkDerivation {
+ name = "pyside-apiextractor-0.10.10";
+
+ src = fetchurl {
+ url = "https://github.com/PySide/Apiextractor/archive/0.10.10.tar.gz";
+ sha256 = "1zj8yrxy08iv1pk38djxw3faimm226w6wmi0gm32w4yczblylwz3";
+ };
+
+ enableParallelBuilding = true;
+
+ buildInputs = [ cmake qt4 pythonEnv libxml2 libxslt ];
+
+ meta = {
+ description = "Eases the development of bindings of Qt-based libraries for high level languages by automating most of the process";
+ license = stdenv.lib.licenses.gpl2;
+ homepage = http://www.pyside.org/docs/apiextractor/;
+ maintainers = [ ];
+ platforms = stdenv.lib.platforms.all;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyside/default.nix b/nixpkgs/pkgs/development/python-modules/pyside/default.nix
new file mode 100644
index 00000000000..37ffd8e76e3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyside/default.nix
@@ -0,0 +1,27 @@
+{ lib, fetchurl, cmake, buildPythonPackage, pysideGeneratorrunner, pysideShiboken, qt4, mesa }:
+
+# This derivation provides a Python module and should therefore be called via `python-packages.nix`.
+buildPythonPackage rec {
+ pname = "pyside";
+ version = "1.2.4";
+ format = "other";
+
+ src = fetchurl {
+ url = "https://github.com/PySide/PySide/archive/${version}.tar.gz";
+ sha256 = "90f2d736e2192ac69e5a2ac798fce2b5f7bf179269daa2ec262986d488c3b0f7";
+ };
+
+ enableParallelBuilding = true;
+
+ nativeBuildInputs = [ cmake pysideGeneratorrunner pysideShiboken qt4 ];
+
+ buildInputs = [ mesa ];
+
+ makeFlags = "QT_PLUGIN_PATH=" + pysideShiboken + "/lib/generatorrunner";
+
+ meta = {
+ description = "LGPL-licensed Python bindings for the Qt cross-platform application and UI framework";
+ license = lib.licenses.lgpl21;
+ homepage = http://www.pyside.org;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyside/gcc6.patch b/nixpkgs/pkgs/development/python-modules/pyside/gcc6.patch
new file mode 100644
index 00000000000..440e94508c5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyside/gcc6.patch
@@ -0,0 +1,18 @@
+--- Shiboken-1.2.4.org/tests/libsample/simplefile.cpp 2017-08-26 09:06:27.216859143 +0100
++++ Shiboken-1.2.4/tests/libsample/simplefile.cpp 2017-08-26 09:05:40.037029652 +0100
+@@ -90,13 +90,13 @@
+ SimpleFile::exists() const
+ {
+ std::ifstream ifile(p->m_filename);
+- return ifile;
++ return (bool)ifile;
+ }
+
+ bool
+ SimpleFile::exists(const char* filename)
+ {
+ std::ifstream ifile(filename);
+- return ifile;
++ return (bool)ifile;
+ }
+
diff --git a/nixpkgs/pkgs/development/python-modules/pyside/generatorrunner.nix b/nixpkgs/pkgs/development/python-modules/pyside/generatorrunner.nix
new file mode 100644
index 00000000000..feeeda812f9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyside/generatorrunner.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, cmake, pysideApiextractor, python2, qt4 }:
+
+# This derivation does not provide any Python module and should therefore be called via `all-packages.nix`.
+let
+ pythonEnv = python2.withPackages(ps: with ps; [ sphinx ]);
+ 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";
+ };
+
+ enableParallelBuilding = true;
+
+ buildInputs = [ cmake pysideApiextractor qt4 pythonEnv ];
+
+ meta = {
+ description = "Eases the development of binding generators for C++ and Qt-based libraries by providing a framework to help automating most of the process";
+ license = stdenv.lib.licenses.gpl2;
+ homepage = http://www.pyside.org/docs/generatorrunner/;
+ maintainers = [ ];
+ platforms = stdenv.lib.platforms.all;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyside/shiboken.nix b/nixpkgs/pkgs/development/python-modules/pyside/shiboken.nix
new file mode 100644
index 00000000000..42ad55ad0b9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyside/shiboken.nix
@@ -0,0 +1,39 @@
+{ lib, fetchurl, cmake, buildPythonPackage, libxml2, libxslt, pysideApiextractor, pysideGeneratorrunner, python, sphinx, qt4, isPy3k, isPy35, isPy36, isPy37 }:
+
+# This derivation provides a Python module and should therefore be called via `python-packages.nix`.
+# Python 3.5 is not supported: https://github.com/PySide/Shiboken/issues/77
+buildPythonPackage rec {
+ pname = "pyside-shiboken";
+ version = "1.2.4";
+
+ format = "other";
+
+ src = fetchurl {
+ url = "https://github.com/PySide/Shiboken/archive/${version}.tar.gz";
+ sha256 = "1536f73a3353296d97a25e24f9554edf3e6a48126886f8d21282c3645ecb96a4";
+ };
+
+
+ enableParallelBuilding = true;
+
+ nativeBuildInputs = [ cmake libxml2 libxslt pysideApiextractor pysideGeneratorrunner python sphinx qt4 ];
+
+ preConfigure = ''
+ echo "preConfigure: Fixing shiboken_generator install target."
+ substituteInPlace generator/CMakeLists.txt --replace \
+ \"$\{GENERATORRUNNER_PLUGIN_DIR}\" lib/generatorrunner/
+ '';
+
+ # gcc6 patch was also sent upstream: https://github.com/pyside/Shiboken/pull/86
+ patches = [ ./gcc6.patch ] ++ (lib.optional (isPy35 || isPy36 || isPy37) ./shiboken_py35.patch);
+
+ cmakeFlags = if isPy3k then "-DUSE_PYTHON3=TRUE" else null;
+
+ meta = {
+ description = "Plugin (front-end) for pyside-generatorrunner, that generates bindings for C++ libraries using CPython source code";
+ license = lib.licenses.gpl2;
+ homepage = http://www.pyside.org/docs/shiboken/;
+ maintainers = [ ];
+ platforms = lib.platforms.all;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyside/shiboken_py35.patch b/nixpkgs/pkgs/development/python-modules/pyside/shiboken_py35.patch
new file mode 100644
index 00000000000..fb095cf991c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyside/shiboken_py35.patch
@@ -0,0 +1,12 @@
+diff --git a/cmake/Modules/FindPython3Libs.cmake b/cmake/Modules/FindPython3Libs.cmake
+--- a/cmake/Modules/FindPython3Libs.cmake
++++ b/cmake/Modules/FindPython3Libs.cmake
+@@ -27,7 +27,7 @@ INCLUDE(CMakeFindFrameworks)
+ # Search for the python framework on Apple.
+ # CMAKE_FIND_FRAMEWORKS(Python)
+
+-FOREACH(_CURRENT_VERSION 3.4 3.3 3.2 3.1 3.0)
++FOREACH(_CURRENT_VERSION 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0)
+ IF(_CURRENT_VERSION GREATER 3.1)
+ SET(_32FLAGS "m" "u" "mu" "dm" "du" "dmu" "")
+ ELSE()
diff --git a/nixpkgs/pkgs/development/python-modules/pyside/tools.nix b/nixpkgs/pkgs/development/python-modules/pyside/tools.nix
new file mode 100644
index 00000000000..6c2b357c566
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyside/tools.nix
@@ -0,0 +1,28 @@
+{ lib, buildPythonPackage, fetchFromGitHub, cmake, qt4, pyside, pysideShiboken }:
+
+buildPythonPackage rec {
+ pname = "pyside-tools";
+ version = "0.2.15";
+ format = "other";
+
+ src = fetchFromGitHub {
+ owner = "PySide";
+ repo = "Tools";
+ rev = version;
+ sha256 = "017i2yxgjrisaifxqnl3ym8ijl63l2yl6a3474dsqhlyqz2nx2ll";
+ };
+
+ nativeBuildInputs = [ cmake ];
+
+ buildInputs = [ qt4 ];
+
+ propagatedBuildInputs = [ pyside pysideShiboken ];
+
+ meta = with lib; {
+ description = "Development tools (pyside-uic/rcc/lupdate) for PySide, the LGPL-licensed Python bindings for the Qt framework";
+ license = licenses.gpl2;
+ homepage = https://wiki.qt.io/PySide;
+ maintainers = [ ];
+ platforms = platforms.all;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyside2-tools/default.nix b/nixpkgs/pkgs/development/python-modules/pyside2-tools/default.nix
new file mode 100644
index 00000000000..a96ea5d32ff
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyside2-tools/default.nix
@@ -0,0 +1,35 @@
+{ buildPythonPackage, wrapPython, python, fetchurl, stdenv, cmake, qt5,
+ shiboken2, pyside2 }:
+
+stdenv.mkDerivation {
+ pname = "pyside2-tools";
+
+ inherit (pyside2) version src;
+
+ postPatch = ''
+ cd sources/pyside2-tools
+ '';
+
+ nativeBuildInputs = [ cmake wrapPython ];
+ propagatedBuildInputs = [ shiboken2 pyside2 ];
+ buildInputs = [ python qt5.qtbase ];
+
+ cmakeFlags = [
+ "-DBUILD_TESTS=OFF"
+ ];
+
+ postInstall = ''
+ rm $out/bin/pyside_tool.py
+ '';
+
+ postFixup = ''
+ wrapPythonPrograms
+ '';
+
+ meta = with stdenv.lib; {
+ description = "PySide2 development tools";
+ license = licenses.gpl2;
+ homepage = "https://wiki.qt.io/Qt_for_Python";
+ maintainers = with maintainers; [ gebner ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyside2/default.nix b/nixpkgs/pkgs/development/python-modules/pyside2/default.nix
new file mode 100644
index 00000000000..afa48569e2a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyside2/default.nix
@@ -0,0 +1,38 @@
+{ buildPythonPackage, python, fetchurl, stdenv,
+ cmake, ninja, qt5, shiboken2 }:
+
+stdenv.mkDerivation rec {
+ pname = "pyside2";
+ version = "5.12.3";
+
+ src = fetchurl {
+ url = "https://download.qt.io/official_releases/QtForPython/pyside2/PySide2-${version}-src/pyside-setup-everywhere-src-${version}.tar.xz";
+ sha256 = "0hk89jm8pa0q6kifask5rrffa3bvx02dg2f97ibv7wds9dysnyjg";
+ };
+
+ patches = [
+ ./dont_ignore_optional_modules.patch
+ ];
+
+ postPatch = ''
+ cd sources/pyside2
+ '';
+
+ cmakeFlags = [
+ "-DBUILD_TESTS=OFF"
+ "-DPYTHON_EXECUTABLE=${python.interpreter}"
+ ];
+
+ nativeBuildInputs = [ cmake ninja qt5.qmake shiboken2 python ];
+ buildInputs = with qt5; [
+ qtbase qtxmlpatterns qtmultimedia qttools qtx11extras qtlocation qtscript
+ qtwebsockets qtwebengine qtwebchannel qtcharts qtsensors qtsvg
+ ];
+
+ meta = with stdenv.lib; {
+ description = "LGPL-licensed Python bindings for Qt";
+ license = licenses.lgpl21;
+ homepage = "https://wiki.qt.io/Qt_for_Python";
+ maintainers = with maintainers; [ gebner ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyside2/dont_ignore_optional_modules.patch b/nixpkgs/pkgs/development/python-modules/pyside2/dont_ignore_optional_modules.patch
new file mode 100644
index 00000000000..681e16a2bfd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyside2/dont_ignore_optional_modules.patch
@@ -0,0 +1,11 @@
+--- pyside-setup-everywhere-src-5.12.3/sources/pyside2/CMakeLists.txt~ 2019-06-15 19:07:48.368704430 +0200
++++ pyside-setup-everywhere-src-5.12.3/sources/pyside2/CMakeLists.txt 2019-06-15 19:08:04.429489908 +0200
+@@ -219,7 +219,7 @@
+ # If the module was found, and also the module path is the same as the
+ # Qt5Core base path, we will generate the list with the modules to be installed
+ set(looked_in_message ". Looked in: ${${_name_dir}}")
+- if("${${_name_found}}" AND (("${found_basepath}" GREATER "0") OR ("${found_basepath}" EQUAL "0")))
++ if("${${_name_found}}")
+ message(STATUS "${module_state} module ${name} found (${ARGN})${looked_in_message}")
+ # record the shortnames for the tests
+ list(APPEND all_module_shortnames ${shortname})
diff --git a/nixpkgs/pkgs/development/python-modules/pysigset/default.nix b/nixpkgs/pkgs/development/python-modules/pysigset/default.nix
new file mode 100644
index 00000000000..85bcf56f062
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pysigset/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "pysigset";
+ version = "0.3.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0ym44z3nwp8chfi7snmknkqnl2q9bghzv9p923r8w748i5hvyxx8";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Provides access to sigprocmask(2) and friends and convenience wrappers to python application developers wanting to SIG_BLOCK and SIG_UNBLOCK signals";
+ homepage = https://github.com/ossobv/pysigset;
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ dzabraev ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyslurm/default.nix b/nixpkgs/pkgs/development/python-modules/pyslurm/default.nix
new file mode 100644
index 00000000000..974ac4499ac
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyslurm/default.nix
@@ -0,0 +1,26 @@
+{ lib, fetchFromGitHub, fetchpatch, buildPythonPackage, cython, slurm }:
+
+buildPythonPackage rec {
+ pname = "pyslurm";
+ version = "19-05-0";
+
+ src = fetchFromGitHub {
+ repo = "pyslurm";
+ owner = "PySlurm";
+ rev = version;
+ sha256 = "1lfb4q81y96syz5an1lzscfcvmfvlkf4cfl3i5zllw9r3gbarl2r";
+ };
+
+ buildInputs = [ cython slurm ];
+ setupPyBuildFlags = [ "--slurm-lib=${slurm}/lib" "--slurm-inc=${slurm.dev}/include" ];
+
+ # Test cases need /etc/slurm/slurm.conf and require a working slurm installation
+ doCheck = false;
+
+ meta = with lib; {
+ homepage = https://github.com/PySlurm/pyslurm;
+ description = "Python bindings to Slurm";
+ license = licenses.gpl2;
+ maintainers = [ maintainers.veprbl ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pysmbc/default.nix b/nixpkgs/pkgs/development/python-modules/pysmbc/default.nix
new file mode 100644
index 00000000000..b6068a65fbd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pysmbc/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, samba, pkgconfig
+, setuptools }:
+
+buildPythonPackage rec {
+ version = "1.0.16";
+ pname = "pysmbc";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "tar.bz2";
+ sha256 = "62199b5cca02c05d5f3b9edbc9a864fb8a2cbe47a465c0b9461642eb3b6f5aca";
+ };
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [ setuptools samba ];
+
+ meta = with stdenv.lib; {
+ description = "libsmbclient binding for Python";
+ homepage = https://github.com/hamano/pysmbc;
+ license = licenses.gpl2Plus;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pysmf/default.nix b/nixpkgs/pkgs/development/python-modules/pysmf/default.nix
new file mode 100644
index 00000000000..ef5e560b08c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pysmf/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi, pkg-config, libsmf, glib, pytest }:
+
+buildPythonPackage rec {
+ pname = "pysmf";
+ version = "0.1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "10i7vvvdx6c3gl4afsgnpdanwgzzag087zs0fxvfipnqknazj806";
+ };
+
+ nativeBuildInputs = [ pkg-config pytest ];
+ buildInputs = [ libsmf glib ];
+
+ meta = with stdenv.lib; {
+ homepage = "http://das.nasophon.de/pysmf/";
+ description = "Python extension module for reading and writing Standard MIDI Files, based on libsmf.";
+ license = licenses.bsd2;
+ maintainers = [ maintainers.gnidorah ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pysmi/default.nix b/nixpkgs/pkgs/development/python-modules/pysmi/default.nix
new file mode 100644
index 00000000000..62c631ac98c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pysmi/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, ply
+}:
+
+buildPythonPackage rec {
+ version = "0.3.4";
+ pname = "pysmi";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "bd15a15020aee8376cab5be264c26330824a8b8164ed0195bd402dd59e4e8f7c";
+ };
+
+ propagatedBuildInputs = [ ply ];
+
+ # Tests require pysnmp, which in turn requires pysmi => infinite recursion
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = http://pysmi.sf.net;
+ description = "SNMP SMI/MIB Parser";
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ koral ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pysnmp/default.nix b/nixpkgs/pkgs/development/python-modules/pysnmp/default.nix
new file mode 100644
index 00000000000..ae4c273fc00
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pysnmp/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pyasn1
+, pycryptodomex
+, pysmi
+}:
+
+buildPythonPackage rec {
+ pname = "pysnmp";
+ version = "4.4.11";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1v7vz045pami4nx5hfvk8drarcswjclb0pfmg932x95fddbdx2zy";
+ };
+
+ # NameError: name 'mibBuilder' is not defined
+ doCheck = false;
+
+ propagatedBuildInputs = [ pyasn1 pycryptodomex pysmi ];
+
+ meta = with stdenv.lib; {
+ homepage = http://snmplabs.com/pysnmp/index.html;
+ description = "A pure-Python SNMPv1/v2c/v3 library";
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ primeos koral ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pysocks/default.nix b/nixpkgs/pkgs/development/python-modules/pysocks/default.nix
new file mode 100644
index 00000000000..ae17ed35105
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pysocks/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "pysocks";
+ version = "1.7.0";
+
+ src = fetchPypi {
+ pname = "PySocks";
+ inherit version;
+ sha256 = "0z4p31bpqm893cf87qqgb30k7nwd8kqfjwwjm5cvxb6zbyj1w0yr";
+ };
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "SOCKS module for Python";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ thoughtpolice ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pysolr/default.nix b/nixpkgs/pkgs/development/python-modules/pysolr/default.nix
new file mode 100644
index 00000000000..0544b84e532
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pysolr/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildPythonPackage, fetchPypi, setuptools_scm, requests, mock }:
+
+buildPythonPackage rec {
+ pname = "pysolr";
+ version = "3.8.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "88ecb176627db6bcf9aeb94a3570bfa0363cb68be4b2a6d89a957d4a87c0a81b";
+ };
+
+ nativeBuildInputs = [ setuptools_scm ];
+
+ propagatedBuildInputs = [ requests ];
+
+ checkInputs = [ mock ];
+
+ doCheck = false; # requires network access
+
+ meta = with lib; {
+ description = "Lightweight Python wrapper for Apache Solr";
+ homepage = "https://github.com/toastdriven/pysolr/";
+ license = licenses.bsd3;
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/pysonos/default.nix b/nixpkgs/pkgs/development/python-modules/pysonos/default.nix
new file mode 100644
index 00000000000..ad0db8dc8bc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pysonos/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, xmltodict
+, requests
+, ifaddr
+
+# Test dependencies
+, pytest, pylint, flake8, graphviz
+, mock, sphinx, sphinx_rtd_theme
+}:
+
+buildPythonPackage rec {
+ pname = "pysonos";
+ version = "0.0.22";
+
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "4a4fe630b97c81261246a448fe9dd2bdfaacd7df4453cf72f020599171416442";
+ };
+
+ propagatedBuildInputs = [ xmltodict requests ifaddr ];
+
+ checkInputs = [
+ pytest pylint flake8 graphviz
+ mock sphinx sphinx_rtd_theme
+ ];
+
+ checkPhase = ''
+ pytest --deselect=tests/test_discovery.py::TestDiscover::test_discover
+ '';
+
+ meta = {
+ homepage = https://github.com/amelchio/pysonos;
+ description = "A SoCo fork with fixes for Home Assistant";
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ juaningan ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyspark/default.nix b/nixpkgs/pkgs/development/python-modules/pyspark/default.nix
new file mode 100644
index 00000000000..45c84d16753
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyspark/default.nix
@@ -0,0 +1,31 @@
+{ buildPythonPackage, fetchPypi, stdenv, py4j }:
+
+buildPythonPackage rec {
+ pname = "pyspark";
+ version = "2.4.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6839718ce9f779e81153d8a14a843a5c4b2d5e6574f3c916aec241022d717cb2";
+ };
+
+ # pypandoc is broken with pandoc2, so we just lose docs.
+ postPatch = ''
+ sed -i "s/'pypandoc'//" setup.py
+
+ # Current release works fine with py4j 0.10.8.1
+ substituteInPlace setup.py --replace py4j==0.10.7 'py4j>=0.10.7,<0.11'
+ '';
+
+ propagatedBuildInputs = [ py4j ];
+
+ # Tests assume running spark...
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Apache Spark";
+ homepage = https://github.com/apache/spark/tree/master/python;
+ license = licenses.asl20;
+ maintainers = [ maintainers.shlevy ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pysparse/default.nix b/nixpkgs/pkgs/development/python-modules/pysparse/default.nix
new file mode 100644
index 00000000000..5c3a6bb26f8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pysparse/default.nix
@@ -0,0 +1,49 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, numpy
+, setuptools
+, liblapack
+, isPy27
+, python
+}:
+
+buildPythonPackage {
+ pname = "pysparse";
+ version = "1.3-dev";
+ disabled = !isPy27;
+
+ src = fetchFromGitHub {
+ owner = "PythonOptimizers";
+ repo = "pysparse";
+ rev = "f8430bd99ac2a6209c462657c5792d10033888cc";
+ sha256 = "19xcq8214yndra1xjhna3qjm32wprsqck97dlnw3xcww7rfy6hqh";
+ };
+
+ hardeningDisable = [ "all" ];
+
+ propagatedBuildInputs = [
+ numpy
+ numpy.blas
+ liblapack
+ ];
+
+ # Include patches from working version of PySparse 1.3-dev in
+ # Conda-Forge,
+ # https://github.com/conda-forge/pysparse-feedstock/tree/b69266911a2/recipe
+ # Thanks to https://github.com/guyer
+ patches = [ ./dropPackageLoader.patch ];
+
+ checkPhase = ''
+ cd test
+ ${python.interpreter} -c "import pysparse"
+ ${python.interpreter} test_sparray.py
+ '';
+
+ meta = with lib; {
+ homepage = https://github.com/PythonOptimizers/pysparse;
+ description = "A Sparse Matrix Library for Python";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pysparse/dropPackageLoader.patch b/nixpkgs/pkgs/development/python-modules/pysparse/dropPackageLoader.patch
new file mode 100644
index 00000000000..b2526645f89
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pysparse/dropPackageLoader.patch
@@ -0,0 +1,88 @@
+diff --git a/pysparse/__init__.py b/pysparse/__init__.py
+index 6d09b00..ff39084 100644
+--- a/pysparse/__init__.py
++++ b/pysparse/__init__.py
+@@ -1,9 +1,42 @@
+-"PySparse: A Fast Sparse Matrix Library for Python"
++"""
++PySparse: A Fast Sparse Matrix Library for Python
++=================================================
++
++Documentation is available in the docstrings and
++online at http://pysparse.sourceforge.net/.
++
++Contents
++--------
++Pysparse imports
++::
++ spmatrix --- sparse matrix types
++
++and, in addition, provides:
++
++Subpackages
++-----------
++Using any of these subpackages requires an explicit import. For example,
++``import pysparse.itsolvers``.
++
++::
++
++ itsolvers --- Iterative linear algebra solvers
++ precon --- Preconditioners
++ direct --- Direct solvers
++ direct.superlu --- Wrappers to SuperLU library
++ direct.umfpack --- Wrappers to UMFPACK library
++ eigen.jdsym --- Jacobi davidson eigenvalue solver for symmetric matrices
++
++Utility tools
++-------------
++::
++
++ __version__ --- pysparse version string
++"""
++
+
+ __docformat__ = 'restructuredtext'
+
+-# Imports
+-from numpy._import_tools import PackageLoader
+ try:
+ from version import version as __version__
+ except ImportError:
+@@ -11,31 +44,6 @@ except ImportError:
+ __version__ = 'undefined'
+
+ from sparse import spmatrix
+-#from sparse import *
+-from misc import get_include
+-
+-pkgload = PackageLoader()
+-pkgload(verbose=False,postpone=True)
+-
+-if __doc__:
+- __doc__ += """
+-
+-Available subpackages
+----------------------
+-"""
+-if __doc__:
+- __doc__ += pkgload.get_pkgdocs()
+-
+-__all__ = filter(lambda s: not s.startswith('_'), dir())
+-__all__ += '__version__'
+-
+-__doc__ += """
+-
+-Miscellaneous
+--------------
+-
+- __version__ : pysparse version string
+-"""
+
+ from pysparse.misc import Deprecated
+
+@@ -47,3 +55,5 @@ class _superlu:
+ return self.factorizeFnc(*args, **kwargs)
+
+ superlu = _superlu()
++
++__all__ = ['spmatrix', 'superlu', '__version__']
diff --git a/nixpkgs/pkgs/development/python-modules/pyspf/default.nix b/nixpkgs/pkgs/development/python-modules/pyspf/default.nix
new file mode 100644
index 00000000000..c4ebaf160fa
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyspf/default.nix
@@ -0,0 +1,20 @@
+{ lib, buildPythonPackage, fetchPypi, pydns }:
+
+buildPythonPackage rec {
+ pname = "pyspf";
+ version = "2.0.12";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "18j1rmbmhih7q6y12grcj169q7sx1986qn4gmpla9y5gwfh1p8la";
+ };
+
+ propagatedBuildInputs = [ pydns ];
+
+ meta = with lib; {
+ homepage = http://bmsi.com/python/milter.html;
+ description = "Python API for Sendmail Milters (SPF)";
+ maintainers = with maintainers; [ abbradar ];
+ license = licenses.gpl2;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyspinel/default.nix b/nixpkgs/pkgs/development/python-modules/pyspinel/default.nix
new file mode 100644
index 00000000000..990e2b28bd8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyspinel/default.nix
@@ -0,0 +1,21 @@
+{ buildPythonPackage, fetchPypi, lib, future, pyserial, ipaddress }:
+
+buildPythonPackage rec {
+ pname = "pyspinel";
+ version = "1.0.0a3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0914a662d57a14bce9df21f22711b5c9b2fef37cf461be54ed35c6e229060fd4";
+ };
+
+ propagatedBuildInputs = [ pyserial ipaddress future ];
+
+ doCheck = false;
+
+ meta = {
+ description = "Interface to the OpenThread Network Co-Processor (NCP)";
+ homepage = "https://github.com/openthread/pyspinel";
+ maintainers = with lib.maintainers; [ gebner ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyspotify/default.nix b/nixpkgs/pkgs/development/python-modules/pyspotify/default.nix
new file mode 100644
index 00000000000..9316e85b260
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyspotify/default.nix
@@ -0,0 +1,44 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, cffi
+, pkgs
+}:
+
+buildPythonPackage rec {
+ pname = "pyspotify";
+ version = "2.0.5";
+
+ src = fetchurl {
+ url = "https://github.com/mopidy/pyspotify/archive/v${version}.tar.gz";
+ sha256 = "1ilbz2w1gw3f1bpapfa09p84dwh08bf7qcrkmd3aj0psz57p2rls";
+ };
+
+ propagatedBuildInputs = [ cffi ];
+ buildInputs = [ pkgs.libspotify ];
+
+ # python zip complains about old timestamps
+ preConfigure = ''
+ find -print0 | xargs -0 touch
+ '';
+
+ postInstall = stdenv.lib.optionalString stdenv.isDarwin ''
+ find "$out" -name _spotify.so -exec \
+ install_name_tool -change \
+ @loader_path/../Frameworks/libspotify.framework/libspotify \
+ ${pkgs.libspotify}/lib/libspotify.dylib \
+ {} \;
+ '';
+
+ # There are no tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = http://pyspotify.mopidy.com;
+ description = "A Python interface to Spotify’s online music streaming service";
+ license = licenses.unfree;
+ maintainers = with maintainers; [ lovek323 ];
+ platforms = platforms.unix;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyspread/default.nix b/nixpkgs/pkgs/development/python-modules/pyspread/default.nix
new file mode 100644
index 00000000000..d80cbf41629
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyspread/default.nix
@@ -0,0 +1,56 @@
+{ buildPythonPackage
+, fetchPypi
+, isPy3k
+, stdenv
+, numpy
+, wxPython
+, matplotlib
+, pycairo
+, python-gnupg
+, xlrd
+, xlwt
+, jedi
+, pyenchant
+, basemap
+, pygtk
+, makeDesktopItem
+}:
+
+buildPythonPackage rec {
+ pname = "pyspread";
+ version = "1.1.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6e5d0eb49750eed7734852e15727e190270880c75dcc5f6c8fb1bfdaa59c48fc";
+ };
+
+ propagatedBuildInputs = [ numpy wxPython matplotlib pycairo python-gnupg xlrd xlwt jedi pyenchant basemap pygtk ];
+ # Could also (optionally) add pyrsvg and python bindings for libvlc
+
+ # Tests try to access X Display
+ doCheck = false;
+
+ disabled = isPy3k;
+
+ desktopItem = makeDesktopItem rec {
+ name = pname;
+ exec = name;
+ icon = name;
+ desktopName = "Pyspread";
+ genericName = "Spreadsheet";
+ comment = meta.description;
+ categories = "Development;Spreadsheet;";
+ };
+
+ postInstall = ''
+ mkdir -p $out/share/applications
+ cp $desktopItem/share/applications/* $out/share/applications
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Pyspread is a non-traditional spreadsheet application that is based on and written in the programming language Python";
+ homepage = https://manns.github.io/pyspread/;
+ license = licenses.gpl3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pysptk/default.nix b/nixpkgs/pkgs/development/python-modules/pysptk/default.nix
new file mode 100644
index 00000000000..46864632964
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pysptk/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage, fetchPypi
+, numpy, scipy, cython, six, decorator
+}:
+
+buildPythonPackage rec {
+ pname = "pysptk";
+ version = "0.1.17";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "aa8bd2ae84bfe72e9015ccb69eb3b687bc64fad6139ae0b327fe07918e1e28ff";
+ };
+
+ PYSPTK_BUILD_VERSION = 0;
+
+ nativeBuildInputs = [
+ cython
+ ];
+
+ propagatedBuildInputs = [
+ numpy
+ scipy
+ six
+ decorator
+ ];
+
+ # No tests in the PyPI tarball
+ doCheck = false;
+
+ meta = with lib; {
+ description = "A python wrapper for Speech Signal Processing Toolkit (SPTK)";
+ homepage = https://pysptk.readthedocs.io/en/latest/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ hyphon81 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pysqlite/default.nix b/nixpkgs/pkgs/development/python-modules/pysqlite/default.nix
new file mode 100644
index 00000000000..c1118aeeecd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pysqlite/default.nix
@@ -0,0 +1,57 @@
+{ 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"
+ ${stdenv.lib.optionalString (!stdenv.isDarwin) ''export LDSHARED="$CC -pthread -shared"''}
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = http://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/nixpkgs/pkgs/development/python-modules/pysrim/default.nix b/nixpkgs/pkgs/development/python-modules/pysrim/default.nix
new file mode 100644
index 00000000000..8fb73455051
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pysrim/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+, pytestrunner
+, numpy
+, pyyaml
+}:
+
+buildPythonPackage rec {
+ pname = "pysrim";
+ version = "0.5.10";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ada088f73f7e1a3bf085206e81e0f83ed89c1d0b23a789ecd0ba0a250724aee8";
+ };
+
+ buildInputs = [ pytestrunner ];
+ propagatedBuildInputs = [ numpy pyyaml ];
+
+ # Tests require git lfs download of repository
+ doCheck = false;
+
+ meta = {
+ description = "Srim Automation of Tasks via Python";
+ homepage = https://gitlab.com/costrouc/pysrim;
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pysrt/default.nix b/nixpkgs/pkgs/development/python-modules/pysrt/default.nix
new file mode 100644
index 00000000000..514ff6eb8fe
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pysrt/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, chardet
+, nose
+}:
+
+buildPythonPackage rec {
+ pname = "pysrt";
+ version = "1.1.1";
+
+ src = fetchFromGitHub {
+ owner = "byroot";
+ repo = "pysrt";
+ rev = "v${version}";
+ sha256 = "0rwjaf26885vxhxnas5d8zwasvj7x88y4y2pdivjd4vdcpqrqdjn";
+ };
+
+ checkInputs = [ nose ];
+ checkPhase = ''
+ nosetests -v
+ '';
+
+ propagatedBuildInputs = [ chardet ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/byroot/pysrt;
+ license = licenses.gpl3;
+ description = "Python library used to edit or create SubRip files";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyssim/default.nix b/nixpkgs/pkgs/development/python-modules/pyssim/default.nix
new file mode 100644
index 00000000000..38dddda9b2e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyssim/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, numpy, scipy, pillow }:
+
+buildPythonPackage rec {
+ pname = "pyssim";
+ version = "0.4";
+
+ propagatedBuildInputs = [ numpy scipy pillow ];
+
+ # PyPI tarball doesn't contain test images so let's use GitHub
+ src = fetchFromGitHub {
+ owner = "jterrace";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "0rnj3xdhma1fc0fg0jjsdy74ar0hgr3w8kygbnijqjdms7m3asqm";
+ };
+
+ # Tests are copied from .travis.yml
+ checkPhase = ''
+ $out/bin/pyssim test-images/test1-1.png test-images/test1-1.png | grep 1
+ $out/bin/pyssim test-images/test1-1.png test-images/test1-2.png | grep 0.998
+ $out/bin/pyssim test-images/test1-1.png "test-images/*" | grep -E " 1| 0.998| 0.672| 0.648" | wc -l | grep 4
+ $out/bin/pyssim --cw --width 128 --height 128 test-images/test1-1.png test-images/test1-1.png | grep 1
+ $out/bin/pyssim --cw --width 128 --height 128 test-images/test3-orig.jpg test-images/test3-rot.jpg | grep 0.938
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Module for computing Structured Similarity Image Metric (SSIM) in Python";
+ homepage = https://github.com/jterrace/pyssim;
+ license = licenses.mit;
+ maintainers = with maintainers; [ jluttine ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pystache/default.nix b/nixpkgs/pkgs/development/python-modules/pystache/default.nix
new file mode 100644
index 00000000000..8ae01e49397
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pystache/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, buildPythonPackage, python, fetchPypi, isPy3k, glibcLocales }:
+
+buildPythonPackage rec {
+ pname = "pystache";
+ version = "0.5.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f7bbc265fb957b4d6c7c042b336563179444ab313fb93a719759111eabd3b85a";
+ };
+
+ LC_ALL = "en_US.UTF-8";
+
+ buildInputs = [ glibcLocales ];
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover
+ '';
+
+ # SyntaxError Python 3
+ # https://github.com/defunkt/pystache/issues/181
+ doCheck = !isPy3k;
+
+ meta = with stdenv.lib; {
+ description = "A framework-agnostic, logic-free templating system inspired by ctemplate and et";
+ homepage = https://github.com/defunkt/pystache;
+ license = licenses.mit;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/pystemd/default.nix b/nixpkgs/pkgs/development/python-modules/pystemd/default.nix
new file mode 100644
index 00000000000..47d6ea7e26b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pystemd/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, python, systemd }:
+
+python.pkgs.buildPythonPackage rec {
+ pname = "pystemd";
+ version = "0.6.0";
+ src = python.pkgs.fetchPypi {
+ inherit pname version;
+ sha256 = "054a3ni71paqa1xa786840z3kjixcgyqdbscyq8nfxp3hwn0gz5i";
+ };
+
+ disabled = !python.pkgs.isPy3k;
+
+ buildInputs = [ systemd ];
+
+ checkInputs = with python.pkgs; [ pytest mock ];
+ checkPhase = "pytest tests";
+
+ meta = with stdenv.lib; {
+ description = "A thin Cython-based wrapper on top of libsystemd, focused on exposing the dbus API via sd-bus in an automated and easy to consume way.";
+ homepage = https://github.com/facebookincubator/pystemd/;
+ license = licenses.lgpl21Plus;
+ maintainers = with maintainers; [ flokli ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pystemmer/default.nix b/nixpkgs/pkgs/development/python-modules/pystemmer/default.nix
new file mode 100644
index 00000000000..e569042f729
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pystemmer/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, python, fetchPypi, buildPythonPackage, cython }:
+
+buildPythonPackage rec {
+ pname = "PyStemmer";
+ version = "1.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d1ac14eb64978c1697fcfba76e3ac7ebe24357c9428e775390f634648947cb91";
+ };
+
+ nativeBuildInputs = [ cython ];
+
+ preBuild = ''
+ cython src/Stemmer.pyx
+ '';
+
+ checkPhase = ''
+ ${python.interpreter} runtests.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Snowball stemming algorithms, for information retrieval";
+ homepage = http://snowball.tartarus.org/;
+ license = licenses.mit;
+ platforms = platforms.unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pysvn/default.nix b/nixpkgs/pkgs/development/python-modules/pysvn/default.nix
new file mode 100644
index 00000000000..2dcb7908522
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pysvn/default.nix
@@ -0,0 +1,58 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, pkgs
+, isPy3k
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "pysvn";
+ version = "1.8.0";
+ disabled = isPy3k;
+ format = "other";
+
+ src = fetchurl {
+ url = "http://pysvn.barrys-emacs.org/source_kits/${pname}-${version}.tar.gz";
+ sha256 = "0srjr2qgxfs69p65d9vvdib2lc142x10w8afbbdrqs7dhi46yn9r";
+ };
+
+ buildInputs = [ pkgs.subversion pkgs.apr pkgs.aprutil pkgs.expat pkgs.neon pkgs.openssl ]
+ ++ (if stdenv.isLinux then [pkgs.e2fsprogs] else []);
+
+ # There seems to be no way to pass that path to configure.
+ NIX_CFLAGS_COMPILE="-I${pkgs.aprutil.dev}/include/apr-1";
+
+ preConfigure = ''
+ cd Source
+ ${python.interpreter} setup.py backport
+ ${python.interpreter} setup.py configure \
+ --apr-inc-dir=${pkgs.apr.dev}/include \
+ --apu-inc-dir=${pkgs.aprutil.dev}/include \
+ --apr-lib-dir=${pkgs.apr.out}/lib \
+ --svn-lib-dir=${pkgs.subversion.out}/lib \
+ --svn-bin-dir=${pkgs.subversion.out}/bin \
+ --svn-root-dir=${pkgs.subversion.dev}
+ '' + (if !stdenv.isDarwin then "" else ''
+ sed -i -e 's|libpython2.7.dylib|lib/libpython2.7.dylib|' Makefile
+ '');
+
+ checkPhase = "make -C ../Tests";
+
+ installPhase = ''
+ dest=$(toPythonPath $out)/pysvn
+ mkdir -p $dest
+ cp pysvn/__init__.py $dest/
+ cp pysvn/_pysvn*.so $dest/
+ mkdir -p $out/share/doc
+ mv -v ../Docs $out/share/doc/pysvn-1.7.2
+ rm -v $out/share/doc/pysvn-1.7.2/generate_cpp_docs_from_html_docs.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Python bindings for Subversion";
+ homepage = http://pysvn.tigris.org/;
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytado/default.nix b/nixpkgs/pkgs/development/python-modules/pytado/default.nix
new file mode 100644
index 00000000000..a1c70b4c205
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytado/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub }:
+
+buildPythonPackage rec {
+ pname = "PyTado";
+ version = "0.2.7";
+
+ src = fetchFromGitHub {
+ owner = "wmalgadey";
+ repo = pname;
+ # Upstream hasn't tagged this release yet. This commit fixes the build.
+ rev = "79a5dfdf75cd9a3e1a1ee8a8ff0d08923aebda7b";
+ sha256 = "14xdfw4913g4j4h576hjbigm7fiw8k0dc8s98gh2ag9xrc2ifgr0";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Python binding for Tado web API. Pythonize your central heating!";
+ homepage = https://github.com/wmalgadey/PyTado;
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ elseym ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytaglib/default.nix b/nixpkgs/pkgs/development/python-modules/pytaglib/default.nix
new file mode 100644
index 00000000000..46d4135d6af
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytaglib/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, taglib
+, cython
+, pytest
+, glibcLocales
+}:
+
+buildPythonPackage rec {
+ pname = "pytaglib";
+ version = "1.4.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8aec64bc146a9f72778a0d2d1f3448f58be6ebea68f64b0ff88ea8e0f4dc5d8f";
+ };
+
+ buildInputs = [ taglib cython ];
+
+ checkInputs = [ pytest glibcLocales ];
+
+ checkPhase = ''
+ LC_ALL=en_US.utf-8 pytest .
+ '';
+
+ meta = {
+ homepage = https://github.com/supermihi/pytaglib;
+ description = "Python 2.x/3.x bindings for the Taglib audio metadata library";
+ license = lib.licenses.gpl3;
+ maintainers = [ lib.maintainers.mrkkrp ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyte/default.nix b/nixpkgs/pkgs/development/python-modules/pyte/default.nix
new file mode 100644
index 00000000000..675bd47481e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyte/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytest, pytestrunner, wcwidth }:
+
+buildPythonPackage rec {
+ pname = "pyte";
+ version = "0.8.0";
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "7e71d03e972d6f262cbe8704ff70039855f05ee6f7ad9d7129df9c977b5a88c5";
+ };
+
+ propagatedBuildInputs = [ wcwidth ];
+
+ checkInputs = [ pytest pytestrunner ];
+
+ # tries to write to os.path.dirname(__file__) in test_input_output
+ checkPhase = ''
+ py.test -k "not test_input_output"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Simple VTXXX-compatible linux terminal emulator";
+ homepage = https://github.com/selectel/pyte;
+ license = licenses.lgpl3;
+ maintainers = with maintainers; [ flokli ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytesseract/default.nix b/nixpkgs/pkgs/development/python-modules/pytesseract/default.nix
new file mode 100644
index 00000000000..e8146a6fc7f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytesseract/default.nix
@@ -0,0 +1,31 @@
+{ buildPythonPackage, fetchPypi, lib, pillow, tesseract, substituteAll }:
+
+buildPythonPackage rec {
+ pname = "pytesseract";
+ version = "0.2.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1mjr3pa4fycdsl7xk9s8fpn2vhpgx7mrdnn5h4lyyjhz86195ivg";
+ };
+
+ patches = [
+ (substituteAll {
+ src = ./tesseract-binary.patch;
+ drv = tesseract;
+ })
+ ];
+
+ buildInputs = [ tesseract ];
+ propagatedBuildInputs = [ pillow ];
+
+ # the package doesn't have any tests.
+ doCheck = false;
+
+ meta = with lib; {
+ homepage = https://pypi.org/project/pytesseract/;
+ license = licenses.gpl3;
+ description = "A Python wrapper for Google Tesseract";
+ maintainers = with maintainers; [ ma27 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytesseract/tesseract-binary.patch b/nixpkgs/pkgs/development/python-modules/pytesseract/tesseract-binary.patch
new file mode 100644
index 00000000000..f7eb9fb1d42
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytesseract/tesseract-binary.patch
@@ -0,0 +1,13 @@
+diff --git a/src/pytesseract.py b/src/pytesseract.py
+index 32713cf..5f9209d 100755
+--- a/src/pytesseract.py
++++ b/src/pytesseract.py
+@@ -25,7 +25,7 @@ if numpy_installed:
+ from numpy import ndarray
+
+ # CHANGE THIS IF TESSERACT IS NOT IN YOUR PATH, OR IS NAMED DIFFERENTLY
+-tesseract_cmd = 'tesseract'
++tesseract_cmd = '@drv@/bin/tesseract'
+ RGB_MODE = 'RGB'
+ OSD_KEYS = {
+ 'Page number': ('page_num', int),
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-aiohttp/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-aiohttp/default.nix
new file mode 100644
index 00000000000..7f707ebc46b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-aiohttp/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytest, aiohttp }:
+
+buildPythonPackage rec {
+ pname = "pytest-aiohttp";
+ version = "0.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0kx4mbs9bflycd8x9af0idcjhdgnzri3nw1qb0vpfyb3751qaaf9";
+ };
+
+ propagatedBuildInputs = [ pytest aiohttp ];
+
+ # There are no tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/aio-libs/pytest-aiohttp/;
+ description = "Pytest plugin for aiohttp support";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ dotlambda ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-annotate/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-annotate/default.nix
new file mode 100644
index 00000000000..12a7baa55bf
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-annotate/default.nix
@@ -0,0 +1,39 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pyannotate
+, pytest
+}:
+
+buildPythonPackage rec {
+ version = "1.0.2";
+ pname = "pytest-annotate";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "03e4dece2d1aa91666034f1b2e8bb7a7b8c6be11baf3cf2929b26eea5c6e86f3";
+ };
+
+ buildInputs = [
+ pytest
+ ];
+
+ propagatedBuildInputs = [
+ pyannotate
+ ];
+
+ postPatch = ''
+ substituteInPlace setup.py \
+ --replace "pytest>=3.2.0,<4.0.0" "pytest"
+ '';
+
+ # no testing in a testing module...
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/kensho-technologies/pytest-annotate;
+ description = "Generate PyAnnotate annotations from your pytest tests";
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-ansible/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-ansible/default.nix
new file mode 100644
index 00000000000..0ef79cd0989
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-ansible/default.nix
@@ -0,0 +1,42 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, ansible
+, pytest
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "pytest-ansible";
+ version = "2.1.1";
+
+ src = fetchFromGitHub {
+ owner = "ansible";
+ repo = "pytest-ansible";
+ rev = "v${version}";
+ sha256 = "0v97sqk3q2vkmwnjlnncz8ss8086x9jg3cz0g2nzlngs4ql1gdb0";
+ };
+
+ patchPhase = ''
+ sed -i "s/'setuptools-markdown'//g" setup.py
+ '';
+
+ # requires pandoc < 2.0
+ # buildInputs = [ setuptools-markdown ];
+ checkInputs = [ mock ];
+ propagatedBuildInputs = [ ansible pytest ];
+
+ # tests not included with release, even on github
+ doCheck = false;
+
+ checkPhase = ''
+ HOME=$TMPDIR pytest tests/
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/jlaska/pytest-ansible;
+ description = "Plugin for py.test to simplify calling ansible modules from tests or fixtures";
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-arraydiff/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-arraydiff/default.nix
new file mode 100644
index 00000000000..e01d26b530e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-arraydiff/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, numpy
+, six
+, pytest
+, astropy
+}:
+
+buildPythonPackage rec {
+ pname = "pytest-arraydiff";
+ version = "0.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "de2d62f53ecc107ed754d70d562adfa7573677a263216a7f19aa332f20dc6c15";
+ };
+
+ propagatedBuildInputs = [
+ numpy
+ six
+ pytest
+ ];
+
+ # The tests requires astropy, which itself requires
+ # pytest-arraydiff. This causes an infinite recursion if the tests
+ # are enabled.
+ doCheck = false;
+
+ 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 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-astropy/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-astropy/default.nix
new file mode 100644
index 00000000000..272b1fa56b9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-astropy/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+, pytest-doctestplus
+, pytest-remotedata
+, pytest-openfiles
+, pytest-arraydiff
+}:
+
+buildPythonPackage rec {
+ pname = "pytest-astropy";
+ version = "0.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6f28fb81dcdfa745f423b8f6d0303d97357d775b4128bcc2b3668f1602fd5a0b";
+ };
+
+ propagatedBuildInputs = [
+ pytest
+ pytest-doctestplus
+ pytest-remotedata
+ pytest-openfiles
+ pytest-arraydiff
+ ];
+
+ # pytest-astropy is a meta package and has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Meta-package containing dependencies for testing";
+ homepage = https://astropy.org;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-asyncio/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-asyncio/default.nix
new file mode 100644
index 00000000000..346530d4a81
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-asyncio/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytest, isPy3k, isPy35, async_generator }:
+buildPythonPackage rec {
+ pname = "pytest-asyncio";
+ version = "0.10.0";
+
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "9fac5100fd716cbecf6ef89233e8590a4ad61d729d1732e0a96b84182df1daaf";
+ };
+
+ buildInputs = [ pytest ]
+ ++ stdenv.lib.optionals isPy35 [ async_generator ];
+
+ # No tests in archive
+ doCheck = false;
+
+ # LICENSE file is not distributed. https://github.com/pytest-dev/pytest-asyncio/issues/92
+ postPatch = ''
+ substituteInPlace setup.cfg --replace "license_file = LICENSE" ""
+ '';
+
+ meta = with stdenv.lib; {
+ description = "library for testing asyncio code with pytest";
+ license = licenses.asl20;
+ homepage = https://github.com/pytest-dev/pytest-asyncio;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-benchmark/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-benchmark/default.nix
new file mode 100644
index 00000000000..b43c00e42d9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-benchmark/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytest
+, py-cpuinfo
+, pythonOlder
+, pathlib
+, statistics
+}:
+
+buildPythonPackage rec {
+ pname = "pytest-benchmark";
+ version = "3.2.2";
+
+ src = fetchFromGitHub {
+ owner = "ionelmc";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "1hslzzinpwc1zqhbpllqh3sllmiyk69pcycl7ahr0rz3micgwczj";
+ };
+
+ propagatedBuildInputs = [ pytest py-cpuinfo ] ++ lib.optional (pythonOlder "3.4") [ pathlib statistics ];
+
+ meta = {
+ description = "Py.test fixture for benchmarking code";
+ homepage = https://github.com/ionelmc/pytest-benchmark;
+ license = lib.licenses.bsd2;
+ maintainers = with lib.maintainers; [ costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-catchlog/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-catchlog/default.nix
new file mode 100644
index 00000000000..fb020ba471f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-catchlog/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytest, unzip }:
+
+buildPythonPackage rec {
+ pname = "pytest-catchlog";
+ version = "1.2.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1w7wxh27sbqwm4jgwrjr9c2gy384aca5jzw9c0wzhl0pmk2mvqab";
+ extension = "zip";
+ };
+
+ buildInputs = [ pytest unzip ];
+ checkPhase = "make test";
+
+ # Requires pytest < 3.1
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ license = licenses.mit;
+ homepage = https://pypi.python.org/pypi/pytest-catchlog/;
+ description = "py.test plugin to catch log messages. This is a fork of pytest-capturelog.";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-check/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-check/default.nix
new file mode 100644
index 00000000000..f91b8191eb1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-check/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, pytest
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+ pname = "pytest-check";
+ version = "0.3.5";
+
+ src = fetchFromGitHub {
+ owner = "okken";
+ repo = "pytest-check";
+ rev = version;
+ sha256 = "11wb4f4sp4cr5mzqdakrbycwgfr2p1sx1l91fa6525wnfvgc0qy3";
+ };
+
+ buildInputs = [ pytest ];
+
+ checkInputs = [ pytest pytestCheckHook ];
+
+ meta = with stdenv.lib; {
+ description = "pytest plugin allowing multiple failures per test";
+ homepage = https://github.com/okken/pytest-check;
+ license = licenses.mit;
+ maintainers = [ maintainers.flokli ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-click/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-click/default.nix
new file mode 100644
index 00000000000..e20ebc77ad1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-click/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytest
+, click
+, pytestcov
+, isPy27
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "pytest-click";
+ version = "0.3";
+
+ src = fetchFromGitHub {
+ owner = "Stranger6667";
+ repo = "pytest-click";
+ rev = version;
+ sha256 = "1cd15anw8d4rq6qs03j6ag38199rqw7vp0w0w0fm41mvdzr0lwvz";
+ };
+
+ postConfigure = ''
+ substituteInPlace setup.py \
+ --replace "mock==1.0.1" "mock"
+ '';
+
+ propagatedBuildInputs = [
+ pytest
+ click
+ ];
+
+ checkInputs = [ pytestcov ] ++ lib.optionals isPy27 [ mock ];
+
+ meta = with lib; {
+ description = "pytest plugin for click";
+ homepage = https://github.com/Stranger6667/pytest-click;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-cov/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-cov/default.nix
new file mode 100644
index 00000000000..9ddec4199d7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-cov/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, pytest, coverage }:
+
+buildPythonPackage rec {
+ pname = "pytest-cov";
+ version = "2.6.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0ab664b25c6aa9716cbf203b17ddb301932383046082c081b9848a0edf5add33";
+ };
+
+ buildInputs = [ pytest ];
+ propagatedBuildInputs = [ coverage ];
+
+ # xdist related tests fail with the following error
+ # OSError: [Errno 13] Permission denied: 'py/_code'
+ doCheck = false;
+ checkPhase = ''
+ # allow to find the module helper during the test run
+ export PYTHONPATH=$PYTHONPATH:$PWD/tests
+ py.test tests
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Plugin for coverage reporting with support for both centralised and distributed testing, including subprocesses and multiprocessing";
+ homepage = https://github.com/pytest-dev/pytest-cov;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-cram/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-cram/default.nix
new file mode 100644
index 00000000000..ff2a29384bc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-cram/default.nix
@@ -0,0 +1,34 @@
+{lib, buildPythonPackage, fetchPypi, pytest, cram, bash}:
+
+buildPythonPackage rec {
+ version = "0.2.0";
+ pname = "pytest-cram";
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ cram ];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "006p5dr3q794sbwwmxmdls3nwq0fvnyrxxmc03pgq8n74chl71qn";
+ extension = "zip";
+ };
+
+ postPatch = ''
+ substituteInPlace pytest_cram/tests/test_options.py \
+ --replace "/bin/bash" "${bash}/bin/bash"
+ '';
+
+ # Remove __init__.py from tests folder, otherwise pytest raises an error that
+ # the imported and collected modules are different.
+ checkPhase = ''
+ rm pytest_cram/tests/__init__.py
+ pytest pytest_cram/ --ignore=pytest_cram/tests/test_examples.py
+ '';
+
+ meta = {
+ description = "Test command-line applications with pytest and cram";
+ homepage = https://github.com/tbekolay/pytest-cram;
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ jluttine ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-datafiles/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-datafiles/default.nix
new file mode 100644
index 00000000000..1c323929a8e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-datafiles/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, buildPythonPackage, fetchPypi, py, pytest }:
+
+buildPythonPackage rec {
+ pname = "pytest-datafiles";
+ version = "2.0";
+ src = fetchPypi {
+ inherit version pname;
+ sha256 = "1yfvaqbqvjfikz215kwn6qiwwn9girka93zq4jphgfyvn75jjcql";
+ };
+
+ buildInputs = [ py pytest ];
+
+ meta = with stdenv.lib; {
+ license = licenses.mit;
+ homepage = https://pypi.python.org/pypi/pytest-catchlog/;
+ description = "py.test plugin to create a 'tmpdir' containing predefined files/directories.";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-dependency/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-dependency/default.nix
new file mode 100644
index 00000000000..2f82f4d7dbd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-dependency/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, buildPythonPackage, fetchPypi, fetchpatch, pytest }:
+
+buildPythonPackage rec {
+ version = "0.4.0";
+ pname = "pytest-dependency";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "bda0ef48e6a44c091399b12ab4a7e580d2dd8294c222b301f88d7d57f47ba142";
+ };
+
+ patches = [
+ # Fix tests for pytest>=4.2.0. Remove with the next release
+ (fetchpatch {
+ url = "https://github.com/RKrahl/pytest-dependency/commit/089395bf77e629ee789666361ee12395d840252c.patch";
+ sha256 = "1nkha2gndrr3mx11kx2ipxhphqd6wr25hvkrfwzyrispqfhgl0wm";
+ excludes = [ "doc/src/changelog.rst" ];
+ })
+ ];
+
+ propagatedBuildInputs = [ pytest ];
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/RKrahl/pytest-dependency;
+ description = "Manage dependencies of tests";
+ license = licenses.asl20;
+ maintainers = [ maintainers.marsam ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-django/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-django/default.nix
new file mode 100644
index 00000000000..794a1e8bf20
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-django/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, django
+, setuptools_scm
+, django-configurations
+, pytest_xdist
+, six
+}:
+buildPythonPackage rec {
+ pname = "pytest-django";
+ version = "3.5.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1fynkswykgnqn8wqibavf598md5p005ilcac6sk4hpfv0v2v8kr6";
+ };
+
+ nativeBuildInputs = [ pytest setuptools_scm ];
+ checkInputs = [ pytest django-configurations pytest_xdist six ];
+ propagatedBuildInputs = [ django ];
+
+ # Complicated. Requires Django setup.
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "py.test plugin for testing of Django applications";
+ homepage = https://pytest-django.readthedocs.org/en/latest/;
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-doctestplus/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-doctestplus/default.nix
new file mode 100644
index 00000000000..a132fdd26f8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-doctestplus/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, six
+, pytest
+, numpy
+}:
+
+buildPythonPackage rec {
+ pname = "pytest-doctestplus";
+ version = "0.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "4e641bc720661c08ec3afe44a7951660cdff5e187259c433aa66e9ec2d5ccea1";
+ };
+
+ propagatedBuildInputs = [
+ six
+ numpy
+ pytest
+ ];
+
+ checkInputs = [
+ pytest
+ ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with lib; {
+ description = "Pytest plugin with advanced doctest features";
+ homepage = https://astropy.org;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-env/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-env/default.nix
new file mode 100644
index 00000000000..909a193bd7b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-env/default.nix
@@ -0,0 +1,20 @@
+{ lib, buildPythonPackage, fetchPypi, pytest }:
+
+buildPythonPackage rec {
+ pname = "pytest-env";
+ version = "0.6.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1hl0ln0cicdid4qjk7mv90lw9xkb0v71dlj7q7rn89vzxxm9b53y";
+ };
+
+ checkInputs = [ pytest ];
+
+ meta = with lib; {
+ description = "Pytest plugin used to set environment variables";
+ homepage = https://github.com/MobileDynasty/pytest-env;
+ license = licenses.mit;
+ maintainers = with maintainers; [ earvstedt ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-expect/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-expect/default.nix
new file mode 100644
index 00000000000..557446b5adc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-expect/default.nix
@@ -0,0 +1,29 @@
+{ buildPythonPackage
+, lib
+, fetchPypi
+, pytest
+, u-msgpack-python
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "pytest-expect";
+ version = "1.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "36b4462704450798197d090809a05f4e13649d9cba9acdc557ce9517da1fd847";
+ };
+
+ buildInputs = [ pytest ];
+ propagatedBuildInputs = [ u-msgpack-python six ];
+
+ # Tests in neither the archive nor the repo
+ doCheck = false;
+
+ meta = {
+ description = "py.test plugin to store test expectations and mark tests based on them";
+ homepage = https://github.com/gsnedders/pytest-expect;
+ license = lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-faulthandler/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-faulthandler/default.nix
new file mode 100644
index 00000000000..9fddb743964
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-faulthandler/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, setuptools_scm
+, pytest
+, pytest-mock
+, pythonOlder
+, faulthandler
+}:
+
+buildPythonPackage rec {
+ pname = "pytest-faulthandler";
+ version = "1.6.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1bvfy6yyh2zlsrkpfmxy17149752m9y6ji9d34qp44bnci83dkjq";
+ };
+
+ nativeBuildInputs = [ setuptools_scm pytest ];
+ checkInputs = [ pytest-mock ];
+ propagatedBuildInputs = lib.optional (pythonOlder "3.0") faulthandler;
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = {
+ description = "Py.test plugin that activates the fault handler module for tests";
+ homepage = https://github.com/pytest-dev/pytest-faulthandler;
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-fixture-config/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-fixture-config/default.nix
new file mode 100644
index 00000000000..7fc3d4e951f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-fixture-config/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, setuptools-git, pytest }:
+
+buildPythonPackage rec {
+ pname = "pytest-fixture-config";
+ version = "1.7.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "13i1qpz22w3x4dmw8vih5jdnbqfqvl7jiqs0dg764s0zf8bp98a1";
+ };
+
+ nativeBuildInputs = [ setuptools-git ];
+
+ buildInputs = [ pytest ];
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Simple configuration objects for Py.test fixtures. Allows you to skip tests when their required config variables aren’t set.";
+ homepage = https://github.com/manahl/pytest-plugins;
+ license = licenses.mit;
+ maintainers = with maintainers; [ ryansydnor ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-flake8/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-flake8/default.nix
new file mode 100644
index 00000000000..d3b2df60399
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-flake8/default.nix
@@ -0,0 +1,28 @@
+{lib, buildPythonPackage, fetchPypi, pytest, flake8}:
+
+buildPythonPackage rec {
+ pname = "pytest-flake8";
+ version = "1.0.4";
+
+ # although pytest is a runtime dependency, do not add it as
+ # propagatedBuildInputs in order to allow packages depend on another version
+ # of pytest more easily
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ flake8 ];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "4d225c13e787471502ff94409dcf6f7927049b2ec251c63b764a4b17447b60c0";
+ };
+
+ checkPhase = ''
+ pytest .
+ '';
+
+ meta = {
+ description = "py.test plugin for efficiently checking PEP8 compliance";
+ homepage = https://github.com/tholo/pytest-flake8;
+ maintainers = with lib.maintainers; [ jluttine ];
+ license = lib.licenses.bsd2;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-flakes/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-flakes/default.nix
new file mode 100644
index 00000000000..df7981e6bfc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-flakes/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, pytestpep8, pytest, pyflakes }:
+
+buildPythonPackage rec {
+ pname = "pytest-flakes";
+ version = "4.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "341964bf5760ebbdde9619f68a17d5632c674c3f6903ef66daa0a4f540b3d143";
+ };
+
+ checkInputs = [ pytestpep8 pytest ];
+ nativeBuildInputs = [ pytest ];
+ propagatedBuildInputs = [ pyflakes ];
+
+ # disable one test case that looks broken
+ checkPhase = ''
+ py.test test_flakes.py -k 'not test_syntax_error'
+ '';
+
+ meta = with stdenv.lib; {
+ license = licenses.mit;
+ homepage = https://pypi.python.org/pypi/pytest-flakes;
+ description = "pytest plugin to check source code with pyflakes";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-flask/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-flask/default.nix
new file mode 100644
index 00000000000..b58b934dadc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-flask/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytest, flask, werkzeug, setuptools_scm }:
+
+buildPythonPackage rec {
+ pname = "pytest-flask";
+ version = "0.15.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0jdzrib94vwfpl8524h34aqzqndh3h4xn706v32xh412c8dphx6q";
+ };
+
+ doCheck = false;
+
+ buildInputs = [
+ pytest
+ ];
+
+ propagatedBuildInputs = [
+ flask
+ werkzeug
+ ];
+
+ nativeBuildInputs = [ setuptools_scm ];
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/pytest-dev/pytest-flask/";
+ license = licenses.mit;
+ description = "A set of py.test fixtures to test Flask applications";
+ maintainers = with maintainers; [ vanschelven ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-forked/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-forked/default.nix
new file mode 100644
index 00000000000..b3ea60174a6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-forked/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, setuptools_scm
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "pytest-forked";
+ version = "1.0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d352aaced2ebd54d42a65825722cb433004b4446ab5d2044851d9cc7a00c9e38";
+ };
+
+ buildInputs = [ pytest setuptools_scm ];
+
+ # Do not function
+ doCheck = false;
+
+ checkPhase = ''
+ py.test testing
+ '';
+
+ meta = {
+ description = "Run tests in isolated forked subprocesses";
+ homepage = https://github.com/pytest-dev/pytest-forked;
+ license = lib.licenses.mit;
+ };
+
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-helpers-namespace/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-helpers-namespace/default.nix
new file mode 100644
index 00000000000..8f24d1dc1f6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-helpers-namespace/default.nix
@@ -0,0 +1,35 @@
+{ buildPythonPackage
+, fetchFromGitHub
+, pytest
+, stdenv
+}:
+
+buildPythonPackage rec {
+ pname = "pytest-helpers-namespace";
+ version = "2019.1.8";
+
+ src = fetchFromGitHub {
+ owner = "saltstack";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "0z9f25d2wpf3lnqzmmnrlvl5b1f7kqwjjf4nzs9x2bpf91s5zny1";
+ };
+
+ buildInputs = [ pytest ];
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ # The tests fail with newest pytest. They passed with pytest_3, which no longer exists
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/saltstack/pytest-helpers-namespace";
+ description = "PyTest Helpers Namespace";
+ license = licenses.asl20;
+ maintainers = [ maintainers.kiwi ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-httpbin/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-httpbin/default.nix
new file mode 100644
index 00000000000..6d84ef0de7d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-httpbin/default.nix
@@ -0,0 +1,35 @@
+{ buildPythonPackage
+, lib
+, fetchPypi
+, pytest
+, httpbin
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "pytest-httpbin";
+ version = "1.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0wlvw5qgkax7f0i5ks1562s37h2hdmn5yxnp1rajcc2289zm9knq";
+ };
+
+ checkInputs = [ pytest ];
+
+ propagatedBuildInputs = [ httpbin six ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ # https://github.com/kevin1024/pytest-httpbin/pull/51
+ doCheck = false;
+
+ meta = {
+ description = "Easily test your HTTP library against a local copy of httpbin.org";
+ homepage = https://github.com/kevin1024/pytest-httpbin;
+ license = lib.licenses.mit;
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-isort/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-isort/default.nix
new file mode 100644
index 00000000000..235d6f3af24
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-isort/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildPythonPackage, fetchPypi, pytest, isort }:
+
+buildPythonPackage rec {
+ pname = "pytest-isort";
+ version = "0.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "4bfee60dad1870b51700d55a85f5ceda766bd9d3d2878c1bbabee80e61b1be1a";
+ };
+
+ propagatedBuildInputs = [ isort ];
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ py.test -vs --cache-clear
+ '';
+
+ meta = with lib; {
+ description = "Pytest plugin to perform isort checks (import ordering)";
+ homepage = https://github.com/moccu/pytest-isort/;
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-localserver/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-localserver/default.nix
new file mode 100644
index 00000000000..5f2516b646c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-localserver/default.nix
@@ -0,0 +1,32 @@
+{ buildPythonPackage
+, lib
+, fetchPypi
+, requests
+, pytest
+, six
+, werkzeug
+}:
+
+buildPythonPackage rec {
+ pname = "pytest-localserver";
+ version = "0.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "3a5427909d1dfda10772c1bae4b9803679c0a8f04adb66c338ac607773bfefc2";
+ };
+
+ propagatedBuildInputs = [ werkzeug ];
+ checkInputs = [ pytest six requests ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = {
+ description = "Plugin for the pytest testing framework to test server connections locally";
+ homepage = https://pypi.python.org/pypi/pytest-localserver;
+ license = lib.licenses.mit;
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-mock/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-mock/default.nix
new file mode 100644
index 00000000000..58e032df4df
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-mock/default.nix
@@ -0,0 +1,50 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, fetchpatch
+, isPy3k
+, pytest
+, mock
+, setuptools_scm
+}:
+
+buildPythonPackage rec {
+ pname = "pytest-mock";
+ version = "1.10.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5bf5771b1db93beac965a7347dc81c675ec4090cb841e49d9d34637a25c30568";
+ };
+
+ propagatedBuildInputs = lib.optional (!isPy3k) mock;
+
+ nativeBuildInputs = [
+ setuptools_scm
+ ];
+
+ checkInputs = [
+ pytest
+ ];
+
+ patches = [
+ # Fix tests for pytest 4.6. Remove with the next release
+ (fetchpatch {
+ url = "https://github.com/pytest-dev/pytest-mock/commit/189cc599d3bfbe91a17c93211c04237b6c5849b1.patch";
+ sha256 = "13nk75ldab3j8nfzyd9w4cgfk2fxq4if1aqkqy82ar7y7qh07a7m";
+ })
+ ];
+
+ checkPhase = ''
+ # remove disabled test on next release
+ # https://github.com/pytest-dev/pytest-mock/pull/151
+ pytest -k "not test_detailed_introspection"
+ '';
+
+ 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; [ nand0p ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-mpl/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-mpl/default.nix
new file mode 100644
index 00000000000..edf0450366c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-mpl/default.nix
@@ -0,0 +1,44 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, matplotlib
+, nose
+}:
+
+buildPythonPackage rec {
+ pname = "pytest-mpl";
+ version = "0.10";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "7006e63bf1ca9c50bea3d189c0f862751a16ce40bb373197b218f57af5b837c0";
+ };
+
+ buildInputs = [ pytest ];
+
+ propagatedBuildInputs = [
+ matplotlib
+ nose
+ ];
+
+ checkInputs = [
+ pytest
+ ];
+
+ checkPhase = ''
+ export HOME=$(mktemp -d)
+ mkdir -p $HOME/.config/matplotlib
+ echo "backend: ps" > $HOME/.config/matplotlib/matplotlibrc
+ ln -s $HOME/.config/matplotlib $HOME/.matplotlib
+
+ pytest
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Pytest plugin to help with testing figures output from Matplotlib";
+ homepage = https://github.com/matplotlib/pytest-mpl;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-mypy/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-mypy/default.nix
new file mode 100644
index 00000000000..09d79b33791
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-mypy/default.nix
@@ -0,0 +1,25 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+, mypy
+}:
+
+buildPythonPackage rec {
+ pname = "pytest-mypy";
+ version = "0.3.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "acc653210e7d8d5c72845a5248f00fd33f4f3379ca13fe56cfc7b749b5655c3e";
+ };
+
+ propagatedBuildInputs = [ pytest mypy ];
+
+ meta = with lib; {
+ description = "Mypy static type checker plugin for Pytest";
+ homepage = https://github.com/dbader/pytest-mypy;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-openfiles/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-openfiles/default.nix
new file mode 100644
index 00000000000..dbce114d7bf
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-openfiles/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+, psutil
+}:
+
+buildPythonPackage rec {
+ pname = "pytest-openfiles";
+ version = "0.3.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "e51c91889eb9e4c75f47735efc57a1435f3f1182463600ba7bce7f2556a46884";
+ };
+
+ propagatedBuildInputs = [
+ pytest
+ psutil
+ ];
+
+ checkInputs = [
+ pytest
+ ];
+
+ postConfigure = ''
+ # remove on next release
+ substituteInPlace setup.cfg \
+ --replace "[pytest]" "[tool:pytest]"
+ '';
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with lib; {
+ description = "Pytest plugin for detecting inadvertent open file handles";
+ homepage = https://astropy.org;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-ordering/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-ordering/default.nix
new file mode 100644
index 00000000000..ec340806964
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-ordering/default.nix
@@ -0,0 +1,31 @@
+{ lib, fetchFromGitHub, buildPythonPackage
+, pytest }:
+
+buildPythonPackage rec {
+ pname = "pytest-ordering";
+ version = "unstable-2019-06-19";
+
+ # Pypi lacks tests/
+ # Resolves PytestUnknownMarkWarning from pytest
+ src = fetchFromGitHub {
+ owner = "ftobia";
+ repo = pname;
+ rev = "492697ee26633cc31d329c1ceaa468375ee8ee9c";
+ sha256 = "1xim0kj5g37p1skgvp8gdylpx949krmx60w3pw6j1m1h7sakmddn";
+ };
+
+ checkInputs = [
+ pytest
+ ];
+
+ checkPhase = ''
+ pytest tests
+ '';
+
+ meta = with lib; {
+ homepage = https://github.com/ftobia/pytest-ordering;
+ description = "Pytest plugin to run your tests in a specific order";
+ license = licenses.mit;
+ maintainers = with maintainers; [ eadwu ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-pep257/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-pep257/default.nix
new file mode 100644
index 00000000000..0ff8890a6fb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-pep257/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytest, pep257 }:
+
+buildPythonPackage rec {
+ pname = "pytest-pep257";
+ version = "0.0.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "082v3d5k4331x53za51kl8zxsndsw1pcyf1xdfpb2gjdjrhixb8w";
+ };
+
+ buildInputs = [ pytest ];
+ propagatedBuildInputs = [ pep257 ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/anderslime/pytest-pep257;
+ description = "py.test plugin for PEP257";
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-pep8/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-pep8/default.nix
new file mode 100644
index 00000000000..1fcb99574b2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-pep8/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, pytest, pytestcache, pep8 }:
+
+buildPythonPackage rec {
+ pname = "pytest-pep8";
+ version = "1.0.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "06032agzhw1i9d9qlhfblnl3dw5hcyxhagn7b120zhrszbjzfbh3";
+ };
+
+ buildInputs = [ pytest ];
+ propagatedBuildInputs = [ pytestcache pep8 ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ # Fails
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ license = licenses.mit;
+ homepage = https://pypi.python.org/pypi/pytest-pep8;
+ description = "pytest plugin to check PEP8 requirements";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-pylint/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-pylint/default.nix
new file mode 100644
index 00000000000..52eeccc7cd0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-pylint/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+, pylint
+, six
+, pytestrunner
+}:
+
+buildPythonPackage rec {
+ pname = "pytest-pylint";
+ version = "0.14.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1v6jqxbvzaw6v3xxwd689agy01k0j06q5c3q8gn2f3jlkrvylf4c";
+ };
+
+ buildInputs = [ pytestrunner ];
+
+ propagatedBuildInputs = [
+ pytest
+ pylint
+ six
+ ];
+
+ # tests not included with release
+ doCheck = false;
+
+ meta = with lib; {
+ description = "pytest plugin to check source code with pylint";
+ homepage = https://github.com/carsongee/pytest-pylint;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-quickcheck/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-quickcheck/default.nix
new file mode 100644
index 00000000000..1e8a49f90be
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-quickcheck/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytest, pytest-flakes, pytestpep8, tox }:
+buildPythonPackage rec {
+ pname = "pytest-quickcheck";
+ version = "0.8.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "17vly6fg0s95lbg620g9dp9jjf12sj4hpbi7cg579kswabl6304g";
+ };
+
+ buildInputs = [ pytest ];
+ propagatedBuildInputs = [ pytest-flakes pytestpep8 tox ];
+
+ meta = with stdenv.lib; {
+ license = licenses.asl20;
+ homepage = "https://pypi.python.org/pypi/pytest-quickcheck";
+ description = "pytest plugin to generate random data inspired by QuickCheck";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-raisesregexp/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-raisesregexp/default.nix
new file mode 100644
index 00000000000..bc7d1413200
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-raisesregexp/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, py, pytest }:
+
+buildPythonPackage rec {
+ pname = "pytest-raisesregexp";
+ version = "2.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b54372494fc1f11388b1b9348aeb36b69609699eb8f46e0e010afc733d78236a";
+ };
+
+ buildInputs = [ py pytest ];
+
+ # https://github.com/kissgyorgy/pytest-raisesregexp/pull/3
+ prePatch = ''
+ sed -i '3i\import io' setup.py
+ substituteInPlace setup.py --replace "long_description=open('README.rst').read()," "long_description=io.open('README.rst', encoding='utf-8').read(),"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Simple pytest plugin to look for regex in Exceptions";
+ homepage = https://github.com/Walkman/pytest_raisesregexp;
+ license = with licenses; [ mit ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-random-order/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-random-order/default.nix
new file mode 100644
index 00000000000..088f8702436
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-random-order/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, pytest
+}:
+
+buildPythonPackage rec {
+ version = "1.0.4";
+ pname = "pytest-random-order";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6b2159342a4c8c10855bc4fc6d65ee890fc614cb2b4ff688979b008a82a0ff52";
+ };
+
+ disabled = pythonOlder "3.5";
+
+ propagatedBuildInputs = [ pytest ];
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/jbasko/pytest-random-order";
+ description = "Randomise the order of tests with some control over the randomness";
+ license = licenses.mit;
+ maintainers = [ maintainers.prusnak ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-relaxed/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-relaxed/default.nix
new file mode 100644
index 00000000000..bd92577d5ba
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-relaxed/default.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, six
+, decorator
+}:
+
+buildPythonPackage rec {
+ version = "1.1.4";
+ pname = "pytest-relaxed";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "511ac473252baa67d5451f7864516e2e8f1acedf0cef71f79d2ed916ee04e146";
+ };
+
+ propagatedBuildInputs = [ pytest six decorator ];
+
+ patchPhase = ''
+ sed -i "s/pytest>=3,<3.3/pytest/g" setup.py
+ '';
+
+ # skip tests due to dir requirements
+ doCheck = false;
+
+ checkPhase = ''
+ pytest tests
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://pytest-relaxed.readthedocs.io/;
+ description = "Relaxed test discovery/organization for pytest";
+ license = licenses.bsd0;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-remotedata/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-remotedata/default.nix
new file mode 100644
index 00000000000..2bf3a7f6cac
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-remotedata/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, six
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "pytest-remotedata";
+ version = "0.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "15b75a38431da96a4da5e48b20a18e4dcc40d191abc199b17cb969f818530481";
+ };
+
+ propagatedBuildInputs = [
+ six
+ pytest
+ ];
+
+ checkInputs = [
+ pytest
+ ];
+
+ checkPhase = ''
+ # these tests require a network connection
+ pytest --ignore tests/test_strict_check.py
+ '';
+
+ meta = with lib; {
+ description = "Pytest plugin for controlling remote data access";
+ homepage = https://astropy.org;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-repeat/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-repeat/default.nix
new file mode 100644
index 00000000000..afd36155cf7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-repeat/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, setuptools_scm
+, pytest
+, fetchpatch
+}:
+
+buildPythonPackage rec {
+ pname = "pytest-repeat";
+ version = "0.7.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0axbrpqal3cqw9zq6dakdbg49pnf5gvyvq6yn93hp1ayc7fnhzk3";
+ };
+
+ # fixes support for pytest >3.6. Should be droppable during the
+ # next bump.
+ patches = [
+ (fetchpatch {
+ url = https://github.com/pytest-dev/pytest-repeat/commit/f94b6940e3651b7593aca5a7a987eb56abe04cb1.patch;
+ sha256 = "00da1gmpq9pslcmm8pw93jcbp8j2zymzqdsm6jq3xinkvjpsbmny";
+ })
+ ];
+
+ buildInputs = [ setuptools_scm ];
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = {
+ description = "Pytest plugin for repeating tests";
+ homepage = https://github.com/pytest-dev/pytest-repeat;
+ maintainers = with lib.maintainers; [ costrouc ];
+ license = lib.licenses.mpl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-rerunfailures/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-rerunfailures/default.nix
new file mode 100644
index 00000000000..79ce9fa63a9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-rerunfailures/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytest, mock }:
+
+buildPythonPackage rec {
+ pname = "pytest-rerunfailures";
+ version = "7.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1zfm9v80bqfdapygy9wmi6j6y5c179ixpnh9ih27py4v6cqwzjgk";
+ };
+
+ checkInputs = [ mock pytest ];
+
+ propagatedBuildInputs = [ pytest ];
+
+ checkPhase = ''
+ py.test test_pytest_rerunfailures.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "pytest plugin to re-run tests to eliminate flaky failures";
+ homepage = https://github.com/pytest-dev/pytest-rerunfailures;
+ license = licenses.mpl20;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-sanic/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-sanic/default.nix
new file mode 100644
index 00000000000..c760b6a5542
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-sanic/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+, aiohttp
+, async_generator
+}:
+
+buildPythonPackage rec {
+ pname = "pytest-sanic";
+ version = "1.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0vlaq6p9g2p1xj9wshmin58p1faf5h9rcxvmjapx26zv8n23rnm1";
+ };
+
+ propagatedBuildInputs = [
+ pytest
+ aiohttp
+ async_generator
+ ];
+
+ # circular dependency on sanic
+ doCheck = false;
+
+ meta = with lib; {
+ description = "A pytest plugin for Sanic";
+ homepage = https://github.com/yunstanford/pytest-sanic/;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-server-fixtures/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-server-fixtures/default.nix
new file mode 100644
index 00000000000..90b60686ee6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-server-fixtures/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, pytest, pytest-shutil, pytest-fixture-config, psutil
+, requests, future, retry }:
+
+buildPythonPackage rec {
+ pname = "pytest-server-fixtures";
+ version = "1.7.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "07vdv3y89qzv89ws0y48h92yplqsx208b9cizx80w644dazb398g";
+ };
+
+ buildInputs = [ pytest ];
+ propagatedBuildInputs = [ pytest-shutil pytest-fixture-config psutil requests future retry ];
+
+ # RuntimeError: Unable to find a free server number to start Xvfb
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Extensible server fixures for py.test";
+ homepage = "https://github.com/manahl/pytest-plugins";
+ license = licenses.mit;
+ maintainers = with maintainers; [ nand0p ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-services/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-services/default.nix
new file mode 100644
index 00000000000..2a4c5591a5f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-services/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, requests
+, psutil
+, pytest
+, subprocess32
+}:
+
+buildPythonPackage rec {
+ pname = "pytest-services";
+ version = "1.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "035bc9ce8addb33f7c2ec95a9c0c88926d213a6c2e12b2c57da31a4ec0765f2c";
+ };
+
+ propagatedBuildInputs = [
+ requests
+ psutil
+ pytest
+ ] ++ lib.optional (!isPy3k) subprocess32;
+
+ # no tests in PyPI tarball
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Services plugin for pytest testing framework";
+ homepage = https://github.com/pytest-dev/pytest-services;
+ license = licenses.mit;
+ maintainers = with maintainers; [ dotlambda ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-shutil/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-shutil/default.nix
new file mode 100644
index 00000000000..6bc7047866e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-shutil/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, lib, isPyPy, buildPythonPackage, fetchPypi
+, pytest, cmdline, pytestcov, coverage, setuptools-git, mock, pathpy, execnet
+, contextlib2, termcolor }:
+
+buildPythonPackage rec {
+ pname = "pytest-shutil";
+ version = "1.7.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0q8j0ayzmnvlraml6i977ybdq4xi096djhf30n2m1rvnvrhm45nq";
+ };
+
+ checkInputs = [ cmdline pytest ];
+ propagatedBuildInputs = [ pytestcov coverage setuptools-git mock pathpy execnet contextlib2 termcolor ];
+ nativeBuildInputs = [ pytest ];
+
+ checkPhase = ''
+ py.test ${lib.optionalString isPyPy "-k'not (test_run or test_run_integration)'"}
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A goodie-bag of unix shell and environment tools for py.test";
+ homepage = https://github.com/manahl/pytest-plugins;
+ maintainers = with maintainers; [ ryansydnor ];
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-socket/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-socket/default.nix
new file mode 100644
index 00000000000..a28970a8ec4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-socket/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "pytest-socket";
+ version = "0.3.3";
+
+ src = fetchFromGitHub {
+ owner = "miketheman";
+ repo = pname;
+ rev = version;
+ sha256 = "1jbzkyp4xki81h01yl4vg3nrg9b6shsk1ryrmkaslffyhrqnj8zh";
+ };
+
+ propagatedBuildInputs = [
+ pytest
+ ];
+
+ checkInputs = [
+ pytest
+ ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ # unsurprisingly pytest-socket require network for majority of tests
+ # to pass...
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Pytest Plugin to disable socket calls during tests";
+ homepage = https://github.com/miketheman/pytest-socket;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-subtesthack/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-subtesthack/default.nix
new file mode 100644
index 00000000000..b639b61ad4d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-subtesthack/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytest }:
+
+buildPythonPackage rec {
+ pname = "pytest-subtesthack";
+ version = "0.1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "15kzcr5pchf3id4ikdvlv752rc0j4d912n589l4rifp8qsj19l1x";
+ };
+
+ buildInputs = [ pytest ];
+
+ # no upstream test
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Terrible plugin to set up and tear down fixtures within the test function itself";
+ homepage = https://github.com/untitaker/pytest-subtesthack;
+ license = licenses.publicDomain;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-sugar/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-sugar/default.nix
new file mode 100644
index 00000000000..5ece578dc25
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-sugar/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, termcolor
+, pytest
+, packaging
+}:
+
+buildPythonPackage rec {
+ pname = "pytest-sugar";
+ version = "0.9.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "fcd87a74b2bce5386d244b49ad60549bfbc4602527797fac167da147983f58ab";
+ };
+
+ propagatedBuildInputs = [
+ termcolor
+ pytest
+ packaging
+ ];
+
+ meta = with lib; {
+ description = "A plugin that changes the default look and feel of py.test";
+ homepage = https://github.com/Frozenball/pytest-sugar;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-testmon/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-testmon/default.nix
new file mode 100644
index 00000000000..17fb56a0588
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-testmon/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, coverage
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "pytest-testmon";
+ version = "0.9.18";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "05648f9b22aeeda9d32e61b46fa78c9ff28f217d69005b3b19ffb75d5992187e";
+ };
+
+ buildInputs = [ pytest ];
+
+ propagatedBuildInputs = [ coverage ];
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ pytest --deselect=test/test_testmon.py::TestmonDeselect::test_dependent_testmodule
+ '';
+
+ meta = with lib; {
+ homepage = "https://github.com/tarpas/pytest-testmon/";
+ description = "This is a py.test plug-in which automatically selects and re-executes only tests affected by recent changes";
+ license = licenses.mit;
+ maintainers = [ maintainers.dmvianna ];
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-timeout/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-timeout/default.nix
new file mode 100644
index 00000000000..3997e716817
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-timeout/default.nix
@@ -0,0 +1,32 @@
+{ buildPythonPackage
+, fetchPypi
+, fetchpatch
+, lib
+, pexpect
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "pytest-timeout";
+ version = "1.3.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1cczcjhw4xx5sjkhxlhc5c1bkr7x6fcyx12wrnvwfckshdvblc2a";
+ };
+
+ patches = fetchpatch {
+ url = https://bitbucket.org/pytest-dev/pytest-timeout/commits/36998c891573d8ec1db1acd4f9438cb3cf2aee2e/raw;
+ sha256 = "05zc2w7mjgv8rm8i1cbxp7k09vlscmay5iy78jlzgjqkrx3wkf46";
+ };
+
+ checkInputs = [ pytest pexpect ];
+ checkPhase = ''pytest -ra'';
+
+ meta = with lib;{
+ description = "py.test plugin to abort hanging tests";
+ homepage = https://bitbucket.org/pytest-dev/pytest-timeout/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ makefu costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-tornado/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-tornado/default.nix
new file mode 100644
index 00000000000..a5c35150268
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-tornado/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, pytest
+, tornado
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "pytest-tornado";
+ version = "0.8.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0ncaq7icijls6qh66kv19w3i9av2wnmaycfr4yadyybajr8yvffz";
+ };
+
+ # package has no tests
+ doCheck = false;
+
+ propagatedBuildInputs = [ pytest tornado ];
+
+ meta = with lib; {
+ description = "A py.test plugin providing fixtures and markers to simplify testing of asynchronous tornado applications.";
+ homepage = https://github.com/eugeniy/pytest-tornado;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ ixxie ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-virtualenv/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-virtualenv/default.nix
new file mode 100644
index 00000000000..0e8add5417b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-virtualenv/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, pytest, pytestcov, mock, cmdline, pytest-fixture-config, pytest-shutil, virtualenv }:
+
+buildPythonPackage rec {
+ pname = "pytest-virtualenv";
+ version = "1.7.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "03w2zz3crblj1p6i8nq17946hbn3zqp9z7cfnifw47hi4a4fww12";
+ };
+
+ checkInputs = [ pytest pytestcov mock cmdline ];
+ propagatedBuildInputs = [ pytest-fixture-config pytest-shutil virtualenv ];
+ checkPhase = '' py.test tests/unit '';
+
+ nativeBuildInputs = [ pytest ];
+
+ meta = with stdenv.lib; {
+ description = "Create a Python virtual environment in your test that cleans up on teardown. The fixture has utility methods to install packages and list what’s installed.";
+ homepage = https://github.com/manahl/pytest-plugins;
+ license = licenses.mit;
+ maintainers = with maintainers; [ ryansydnor ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-warnings/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-warnings/default.nix
new file mode 100644
index 00000000000..78cd02897f9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-warnings/default.nix
@@ -0,0 +1,19 @@
+{ lib, buildPythonPackage, fetchPypi, pytest }:
+
+buildPythonPackage rec {
+ pname = "pytest-warnings";
+ version = "0.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "18yxh153icmndaw8fkl1va0bk0mwzrbpaa6wxd29w3iwxym5zn2a";
+ };
+
+ propagatedBuildInputs = [ pytest ];
+
+ meta = {
+ description = "Plugin to list Python warnings in pytest report";
+ homepage = https://github.com/fschulze/pytest-warnings;
+ license = lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-watch/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-watch/default.nix
new file mode 100644
index 00000000000..12b06c2e1b6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-watch/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, docopt
+, colorama
+, pytest
+, watchdog
+}:
+
+buildPythonPackage rec {
+ pname = "pytest-watch";
+ version = "4.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "06136f03d5b361718b8d0d234042f7b2f203910d8568f63df2f866b547b3d4b9";
+ };
+
+ # No Tests
+ doCheck = false;
+
+ propagatedBuildInputs = [ pytest colorama docopt watchdog ];
+
+ meta = with lib; {
+ homepage = "https://github.com/joeyespo/pytest-watch";
+ description = "Local continuous test runner with pytest and watchdog";
+ license = licenses.mit;
+ maintainers = with maintainers; [ dmvianna ];
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-xdist/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-xdist/default.nix
new file mode 100644
index 00000000000..a2796fba5d8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-xdist/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchPypi, buildPythonPackage, execnet, pytest
+, setuptools_scm, pytest-forked, filelock, six, isPy3k }:
+
+buildPythonPackage rec {
+ pname = "pytest-xdist";
+ version = "1.28.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f83a485293e81fd57c8a5a85a3f12473a532c5ca7dec518857cbb72766bb526c";
+ };
+
+ nativeBuildInputs = [ setuptools_scm pytest ];
+ checkInputs = [ pytest filelock ];
+ propagatedBuildInputs = [ execnet pytest-forked 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 stdenv.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/nixpkgs/pkgs/development/python-modules/pytest-xprocess/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-xprocess/default.nix
new file mode 100644
index 00000000000..840a096a085
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-xprocess/default.nix
@@ -0,0 +1,32 @@
+{ lib, buildPythonPackage, fetchPypi
+, psutil
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "pytest-xprocess";
+ version = "0.12.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "06w2acg0shy0vxrmnxpqclimhgfjys5ql5kmmzr7r1lai46x1q2h";
+ };
+
+ propagatedBuildInputs = [ psutil pytest ];
+
+ # Remove test QoL package from install_requires
+ postPatch = ''
+ substituteInPlace setup.py \
+ --replace "'pytest-cache', " ""
+ '';
+
+ # There's no tests in repo
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Pytest external process plugin";
+ homepage = "https://github.com/pytest-dev";
+ license = licenses.mit;
+ maintainers = with maintainers; [ jonringer ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest/4.nix b/nixpkgs/pkgs/development/python-modules/pytest/4.nix
new file mode 100644
index 00000000000..7a43a2e2517
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest/4.nix
@@ -0,0 +1,48 @@
+{ stdenv, 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.5";
+ pname = "pytest";
+
+ preCheck = ''
+ # don't test bash builtins
+ rm testing/test_argcomplete.py
+ '';
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8fc39199bdda3d9d025d3b1f4eb99a192c20828030ea7c9a0d2840721de7d347";
+ };
+
+ checkInputs = [ hypothesis mock ];
+ buildInputs = [ setuptools_scm ];
+ propagatedBuildInputs = [ attrs py setuptools six pluggy more-itertools atomicwrites wcwidth packaging ]
+ ++ stdenv.lib.optionals (!isPy3k) [ funcsigs ]
+ ++ stdenv.lib.optionals (pythonOlder "3.6") [ pathlib2 ];
+
+ doCheck = !isPyPy; # https://github.com/pytest-dev/pytest/issues/3460
+ checkPhase = ''
+ runHook preCheck
+ $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"
+ '';
+
+ meta = with stdenv.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/nixpkgs/pkgs/development/python-modules/pytest/default.nix b/nixpkgs/pkgs/development/python-modules/pytest/default.nix
new file mode 100644
index 00000000000..1ddf52a33bd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest/default.nix
@@ -0,0 +1,53 @@
+{ stdenv, buildPythonPackage, pythonOlder, fetchPypi, attrs, hypothesis, py
+, setuptools_scm, setuptools, six, pluggy, funcsigs, isPy3k, more-itertools
+, atomicwrites, mock, writeText, pathlib2, wcwidth, packaging, isPyPy, python
+}:
+buildPythonPackage rec {
+ version = "5.1.0";
+ pname = "pytest";
+
+ disabled = !isPy3k;
+
+ preCheck = ''
+ # don't test bash builtins
+ rm testing/test_argcomplete.py
+ '';
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "3805d095f1ea279b9870c3eeae5dddf8a81b10952c8835cd628cf1875b0ef031";
+ };
+
+ checkInputs = [ hypothesis mock ];
+ nativeBuildInputs = [ setuptools_scm ];
+ propagatedBuildInputs = [ attrs py setuptools six pluggy more-itertools atomicwrites wcwidth packaging ]
+ ++ stdenv.lib.optionals (pythonOlder "3.6") [ pathlib2 ];
+
+ doCheck = !isPyPy; # https://github.com/pytest-dev/pytest/issues/3460
+
+ # 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"
+ '';
+
+ pythonImportsCheck = [
+ "pytest"
+ ];
+
+ meta = with stdenv.lib; {
+ homepage = https://docs.pytest.org;
+ description = "Framework for writing tests";
+ maintainers = with maintainers; [ domenkozar lovek323 madjar lsix ];
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytestcache/default.nix b/nixpkgs/pkgs/development/python-modules/pytestcache/default.nix
new file mode 100644
index 00000000000..2875bf88340
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytestcache/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, pytest, execnet }:
+
+buildPythonPackage rec {
+ pname = "pytest-cache";
+ version = "1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1a873fihw4rhshc722j4h6j7g3nj7xpgsna9hhg3zn6ksknnhx5y";
+ };
+
+ buildInputs = [ pytest ];
+ propagatedBuildInputs = [ execnet ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ # Too many failing tests. Are they maintained?
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ license = licenses.mit;
+ homepage = https://pypi.python.org/pypi/pytest-cache/;
+ description = "pytest plugin with mechanisms for caching across test runs";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytestrunner/default.nix b/nixpkgs/pkgs/development/python-modules/pytestrunner/default.nix
new file mode 100644
index 00000000000..78ad4d2abc8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytestrunner/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, buildPythonPackage, fetchPypi, setuptools_scm, pytest }:
+
+buildPythonPackage rec {
+ pname = "pytest-runner";
+ version = "4.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d23f117be39919f00dd91bffeb4f15e031ec797501b717a245e377aee0f577be";
+ };
+
+ nativeBuildInputs = [ setuptools_scm pytest ];
+
+ postPatch = ''
+ rm pytest.ini
+ '';
+
+ checkPhase = ''
+ py.test tests
+ '';
+
+ # Fixture not found
+ doCheck = false;
+
+ meta = with stdenv.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/nixpkgs/pkgs/development/python-modules/python-axolotl-curve25519/default.nix b/nixpkgs/pkgs/development/python-modules/python-axolotl-curve25519/default.nix
new file mode 100644
index 00000000000..e372913af7d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-axolotl-curve25519/default.nix
@@ -0,0 +1,18 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "python-axolotl-curve25519";
+ version = "0.4.1.post2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0705a66297ebd2f508a60dc94e22881c754301eb81db93963322f6b3bdcb63a3";
+ };
+
+ meta = with lib; {
+ homepage = https://github.com/tgalal/python-axolotl-curve25519;
+ description = "Curve25519 with ed25519 signatures";
+ maintainers = with maintainers; [ abbradar ];
+ license = licenses.gpl3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-axolotl/default.nix b/nixpkgs/pkgs/development/python-modules/python-axolotl/default.nix
new file mode 100644
index 00000000000..55a0a355a9e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-axolotl/default.nix
@@ -0,0 +1,20 @@
+{ lib, buildPythonPackage, fetchPypi, cryptography, python-axolotl-curve25519, protobuf }:
+
+buildPythonPackage rec {
+ pname = "python-axolotl";
+ version = "0.2.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1bwdp24fmriffwx91aigs9k162albb51iskp23nc939z893q23py";
+ };
+
+ propagatedBuildInputs = [ cryptography python-axolotl-curve25519 protobuf ];
+
+ meta = with lib; {
+ homepage = https://github.com/tgalal/python-axolotl;
+ description = "Python port of libaxolotl-android";
+ maintainers = with maintainers; [ abbradar ];
+ license = licenses.gpl3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-binance/default.nix b/nixpkgs/pkgs/development/python-modules/python-binance/default.nix
new file mode 100644
index 00000000000..9ed165f93b1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-binance/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildPythonPackage, fetchPypi
+, pytest, requests-mock, tox
+, autobahn, certifi, chardet, cryptography, dateparser, pyopenssl, requests, service-identity, twisted }:
+
+buildPythonPackage rec {
+ version = "0.7.1";
+ pname = "python-binance";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "9ce406da68bfbc209ae6852d1b8a2812708d04502f82a61b0c9ca41356cc6ab7";
+ };
+
+ doCheck = false; # Tries to test multiple interpreters with tox
+ checkInputs = [ pytest requests-mock tox ];
+
+ propagatedBuildInputs = [ autobahn certifi chardet cryptography dateparser pyopenssl requests service-identity twisted ];
+
+ meta = {
+ description = "Binance Exchange API python implementation for automated trading";
+ homepage = https://github.com/sammchardy/python-binance;
+ license = lib.licenses.mit;
+ maintainers = [ lib.maintainers.bhipple ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-ctags3/default.nix b/nixpkgs/pkgs/development/python-modules/python-ctags3/default.nix
new file mode 100644
index 00000000000..c37abf7b55f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-ctags3/default.nix
@@ -0,0 +1,17 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "python-ctags3";
+ version = "1.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "69029185ec70db4180be2b58e9a7245700c7ddcdc9049bf0641448f439112176";
+ };
+
+ meta = with lib; {
+ description = "Ctags indexing python bindings";
+ homepage = https://github.com/jonashaag/python-ctags3;
+ license = licenses.lgpl3Plus;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-daemon/default.nix b/nixpkgs/pkgs/development/python-modules/python-daemon/default.nix
new file mode 100644
index 00000000000..93c05106404
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-daemon/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildPythonPackage, fetchPypi, mock, testscenarios, docutils, lockfile }:
+
+buildPythonPackage rec {
+ pname = "python-daemon";
+ version = "2.2.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "affeca9e5adfce2666a63890af9d6aff79f670f7511899edaddca7f96593cc25";
+ };
+
+ # A test fail within chroot builds.
+ doCheck = false;
+
+ buildInputs = [ mock testscenarios ];
+ propagatedBuildInputs = [ docutils lockfile ];
+
+ meta = with lib; {
+ description = "Library to implement a well-behaved Unix daemon process";
+ homepage = "https://pagure.io/python-daemon/";
+ license = [ licenses.gpl3Plus licenses.asl20 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-dbusmock/default.nix b/nixpkgs/pkgs/development/python-modules/python-dbusmock/default.nix
new file mode 100644
index 00000000000..bee0cab0a3f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-dbusmock/default.nix
@@ -0,0 +1,59 @@
+{ lib, buildPythonPackage, fetchPypi,
+ nose, dbus, dbus-python, pygobject3,
+ which, pyflakes, pycodestyle, bluez, networkmanager
+}:
+
+buildPythonPackage rec {
+ pname = "python-dbusmock";
+ version = "0.18.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1hj02p65cic4jdc6a5xf1hx8j5icwy7dcrm5kg91lkjks4gwpg5h";
+ };
+
+ prePatch = ''
+ sed -i -e 's|pyflakes3|pyflakes|g' tests/test_code.py;
+ '';
+
+ # TODO: Get the rest of these tests running?
+ # This is a mocking library used as a check dependency for a single derivation.
+ # That derivation's tests pass. Maybe not worth the effort to fix these...
+ NOSE_EXCLUDE = lib.concatStringsSep "," [
+ "test_bluez4" # NixOS ships BlueZ5
+ # These appear to fail because they're expecting to run in an Ubuntu chroot?
+ "test_everything" # BlueZ5 OBEX
+ "test_polkitd"
+ "test_consolekit"
+ "test_api"
+ "test_logind"
+ "test_notification_daemon"
+ "test_ofono"
+ "test_gnome_screensaver"
+ "test_cli"
+ "test_timedated"
+ "test_upower"
+ # Very slow, consider disabling?
+ # "test_networkmanager"
+ ];
+
+ checkInputs = [
+ nose dbus dbus-python which pycodestyle pyflakes
+ pygobject3 bluez bluez.test networkmanager
+ ];
+
+ checkPhase = ''
+ runHook preCheck
+ export PATH="$PATH:${bluez.test}/test";
+ nosetests -v
+ runHook postCheck
+ '';
+
+ meta = with lib; {
+ description = "Mock D-Bus objects for tests";
+ homepage = https://github.com/martinpitt/python-dbusmock;
+ license = licenses.lgpl3Plus;
+ maintainers = with maintainers; [ callahad ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-docx/default.nix b/nixpkgs/pkgs/development/python-modules/python-docx/default.nix
new file mode 100644
index 00000000000..f86cdc665a1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-docx/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, behave
+, buildPythonPackage
+, fetchPypi
+, lxml
+, pytest
+, pyparsing
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "python-docx";
+ version = "0.8.10";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "bc76ecac6b2d00ce6442a69d03a6f35c71cd72293cd8405a7472dfe317920024";
+ };
+
+ checkInputs = [ behave mock pyparsing pytest ];
+ propagatedBuildInputs = [ lxml ];
+
+ checkPhase = ''
+ py.test tests
+ '';
+
+ meta = {
+ description = "Create and update Microsoft Word .docx files";
+ homepage = https://python-docx.readthedocs.io/en/latest/;
+ license = lib.licenses.mit;
+ maintainers = [ lib.maintainers.alexchapman ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-dotenv/default.nix b/nixpkgs/pkgs/development/python-modules/python-dotenv/default.nix
new file mode 100644
index 00000000000..ba74817a63f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-dotenv/default.nix
@@ -0,0 +1,33 @@
+{ lib, buildPythonPackage, fetchPypi, isPy27
+, click
+, ipython
+, pytest
+, sh
+, typing
+}:
+
+buildPythonPackage rec {
+ pname = "python-dotenv";
+ version = "0.10.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0i25gh8wi87l4g0iflp81rlgmps4cdmp90hwypalp7gcbwfxfmzi";
+ };
+
+ propagatedBuildInputs = [ click ] ++ lib.optionals isPy27 [ typing ];
+
+ checkInputs = [ ipython pytest sh ];
+
+ # cli tests are impure
+ checkPhase = ''
+ pytest tests/ -k 'not cli'
+ '';
+
+ meta = with lib; {
+ description = "Add .env support to your django/flask apps in development and deployments";
+ homepage = https://github.com/theskumar/python-dotenv;
+ license = licenses.bsdOriginal;
+ maintainers = with maintainers; [ earvstedt ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-editor/default.nix b/nixpkgs/pkgs/development/python-modules/python-editor/default.nix
new file mode 100644
index 00000000000..4691785dae1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-editor/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ version = "1.0.4";
+ pname = "python-editor";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "51fda6bcc5ddbbb7063b2af7509e43bd84bfc32a4ff71349ec7847713882327b";
+ };
+
+ # No proper tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A library that provides the `editor` module for programmatically";
+ homepage = https://github.com/fmoo/python-editor;
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-efl/default.nix b/nixpkgs/pkgs/development/python-modules/python-efl/default.nix
new file mode 100644
index 00000000000..beb57ac491a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-efl/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, buildPythonPackage, pkgconfig, python, enlightenment }:
+
+# Should be bumped along with EFL!
+
+buildPythonPackage rec {
+ pname = "python-efl";
+ version = "1.22.0";
+
+ src = fetchurl {
+ url = "http://download.enlightenment.org/rel/bindings/python/${pname}-${version}.tar.xz";
+ sha256 = "1qhy63c3fs2bxkx2np5z14hyxbr12ii030crsjnhpbyw3mic0s63";
+ };
+
+ nativeBuildInputs = [ pkgconfig ];
+
+ buildInputs = [ enlightenment.efl ];
+
+ propagatedBuildInputs = [ python.pkgs.dbus-python ];
+
+ preConfigure = ''
+ export NIX_CFLAGS_COMPILE="$(pkg-config --cflags efl) -I${stdenv.lib.getDev python.pkgs.dbus-python}/include/dbus-1.0 $NIX_CFLAGS_COMPILE"
+ '';
+
+ preBuild = "${python.interpreter} setup.py build_ext";
+
+ installPhase= "${python.interpreter} setup.py install --prefix=$out";
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Python bindings for EFL and Elementary";
+ homepage = https://phab.enlightenment.org/w/projects/python_bindings_for_efl/;
+ platforms = platforms.linux;
+ license = with licenses; [ gpl3 lgpl3 ];
+ maintainers = with maintainers; [ matejc tstrobel ftrvxmtrx ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-engineio/default.nix b/nixpkgs/pkgs/development/python-modules/python-engineio/default.nix
new file mode 100644
index 00000000000..bf6d4cd2381
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-engineio/default.nix
@@ -0,0 +1,53 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub
+, aiohttp
+, eventlet
+, iana-etc
+, libredirect
+, mock
+, requests
+, six
+, tornado
+, websocket_client
+, websockets
+}:
+
+buildPythonPackage rec {
+ pname = "python-engineio";
+ version = "3.9.3";
+
+ src = fetchFromGitHub {
+ owner = "miguelgrinberg";
+ repo = "python-engineio";
+ rev = "v${version}";
+ sha256 = "0rwlj12d37dpw6y3bdn6rxv68xnd9ykj4fr3ly0fa143xci35d9y";
+ };
+
+ propagatedBuildInputs = [
+ six
+ ];
+
+ checkInputs = [
+ aiohttp
+ eventlet
+ mock
+ requests
+ tornado
+ websocket_client
+ websockets
+ ];
+
+ # make /etc/protocols accessible to fix socket.getprotobyname('tcp') in sandbox
+ preCheck = stdenv.lib.optionalString stdenv.isLinux ''
+ export NIX_REDIRECTS=/etc/protocols=${iana-etc}/etc/protocols \
+ LD_PRELOAD=${libredirect}/lib/libredirect.so
+ '';
+ postCheck = "unset NIX_REDIRECTS LD_PRELOAD";
+
+ meta = with stdenv.lib; {
+ description = "Engine.IO server";
+ homepage = https://github.com/miguelgrinberg/python-engineio/;
+ license = licenses.mit;
+ platforms = platforms.linux;
+ maintainers = [ maintainers.mic92 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-etcd/default.nix b/nixpkgs/pkgs/development/python-modules/python-etcd/default.nix
new file mode 100644
index 00000000000..1369479ac4f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-etcd/default.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, mock
+, pyopenssl
+, urllib3
+, dnspython
+}:
+
+buildPythonPackage rec {
+ pname = "python-etcd";
+ version = "0.4.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f1b5ebb825a3e8190494f5ce1509fde9069f2754838ed90402a8c11e1f52b8cb";
+ };
+
+ buildInputs = [ nose mock pyopenssl ];
+
+ propagatedBuildInputs = [ urllib3 dnspython ];
+
+ postPatch = ''
+ sed -i '19s/dns/"dnspython"/' setup.py
+ '';
+
+ # Some issues with etcd not in path even though most tests passed
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A python client for Etcd";
+ homepage = https://github.com/jplana/python-etcd;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-fontconfig/default.nix b/nixpkgs/pkgs/development/python-modules/python-fontconfig/default.nix
new file mode 100644
index 00000000000..dbfde18a874
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-fontconfig/default.nix
@@ -0,0 +1,34 @@
+{ lib, buildPythonPackage, fetchPypi, fontconfig, python, cython, freefont_ttf, makeFontsConf }:
+
+let
+ fontsConf = makeFontsConf {
+ fontDirectories = [ freefont_ttf ];
+ };
+in buildPythonPackage rec {
+ pname = "Python-fontconfig";
+ version = "0.5.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "154rfd0ygcbj9y8m32n537b457yijpfx9dvmf76vi0rg4ikf7kxp";
+ };
+
+ buildInputs = [ fontconfig ];
+ nativeBuildInputs = [ cython ];
+
+ preBuild = ''
+ ${python.interpreter} setup.py build_ext -i
+ '';
+
+ checkPhase = ''
+ export FONTCONFIG_FILE=${fontsConf};
+ echo y | ${python.interpreter} test/test.py
+ '';
+
+ meta = {
+ homepage = https://github.com/Vayn/python-fontconfig;
+ description = "Python binding for Fontconfig";
+ license = lib.licenses.gpl3;
+ maintainers = with lib.maintainers; [ gnidorah ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-forecastio/default.nix b/nixpkgs/pkgs/development/python-modules/python-forecastio/default.nix
new file mode 100644
index 00000000000..68f9ad16977
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-forecastio/default.nix
@@ -0,0 +1,31 @@
+{ buildPythonPackage, stdenv, fetchPypi
+, requests
+, nose
+, responses
+}:
+
+buildPythonPackage rec {
+ pname = "python-forecastio";
+ version = "1.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0m6lf4a46pnwm5xg9dnmwslwzrpnj6d9agw570grciivbvb1ji0l";
+
+ };
+
+ checkInputs = [ nose ];
+
+ propagatedBuildInputs = [ requests responses ];
+
+ checkPhase = ''
+ nosetests
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://zeevgilovitz.com/python-forecast.io/;
+ description = "A thin Python Wrapper for the Dark Sky (formerly forecast.io) weather API";
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ makefu ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-gitlab/default.nix b/nixpkgs/pkgs/development/python-modules/python-gitlab/default.nix
new file mode 100644
index 00000000000..bbd05b6757b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-gitlab/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi, requests, six, mock, httmock }:
+
+buildPythonPackage rec {
+ pname = "python-gitlab";
+ version = "1.9.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1p0i6gsl4mcv6w1sm0rsxq9bq2cmmg3n7c0dniqlvqmzkk62qqhx";
+ };
+
+ propagatedBuildInputs = [ requests six ];
+
+ checkInputs = [ mock httmock ];
+
+ meta = with stdenv.lib; {
+ description = "Interact with GitLab API";
+ homepage = https://github.com/python-gitlab/python-gitlab;
+ license = licenses.lgpl3;
+ maintainers = with maintainers; [ nyanloutre ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-gnupg/default.nix b/nixpkgs/pkgs/development/python-modules/python-gnupg/default.nix
new file mode 100644
index 00000000000..728a353cec7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-gnupg/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, buildPythonPackage, fetchPypi, gnupg }:
+
+buildPythonPackage rec {
+ pname = "python-gnupg";
+ version = "0.4.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "45daf020b370bda13a1429c859fcdff0b766c0576844211446f9266cae97fb0e";
+ };
+
+ # Let's make the library default to our gpg binary
+ patchPhase = ''
+ substituteInPlace gnupg.py \
+ --replace "gpgbinary='gpg'" "gpgbinary='${gnupg}/bin/gpg'"
+ substituteInPlace test_gnupg.py \
+ --replace "gpgbinary=GPGBINARY" "gpgbinary='${gnupg}/bin/gpg'" \
+ --replace "test_search_keys" "disabled__test_search_keys"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A wrapper for the Gnu Privacy Guard";
+ homepage = https://pypi.python.org/pypi/python-gnupg;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ copumpkin ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-hosts/default.nix b/nixpkgs/pkgs/development/python-modules/python-hosts/default.nix
new file mode 100644
index 00000000000..c2fcb5440ad
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-hosts/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, buildPythonPackage, fetchPypi, pyyaml, pytest, pytestcov }:
+
+buildPythonPackage rec {
+ pname = "python-hosts";
+ version = "0.4.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1e5f04430fdaf09d6a7d9e82aa989669bc70fbba3e3e263f112a3e85193259b6";
+ };
+
+ # win_inet_pton is required for windows support
+ prePatch = ''
+ substituteInPlace setup.py --replace "install_requires=['win_inet_pton']," ""
+ substituteInPlace python_hosts/utils.py --replace "import win_inet_pton" ""
+ '';
+
+ checkInputs = [ pyyaml pytest pytestcov ];
+
+ # Removing 1 test file (it requires internet connection) and keeping the other two
+ checkPhase = ''
+ pytest tests/test_hosts_entry.py
+ pytest tests/test_utils.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A library for managing a hosts file. It enables adding and removing entries, or importing them from a file or URL";
+ homepage = https://github.com/jonhadfield/python-hosts;
+ license = licenses.mit;
+ maintainers = with maintainers; [ psyanticy ];
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/python-igraph/default.nix b/nixpkgs/pkgs/development/python-modules/python-igraph/default.nix
new file mode 100644
index 00000000000..0f20a01e0b2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-igraph/default.nix
@@ -0,0 +1,24 @@
+{ buildPythonPackage, fetchPypi, lib, isPy3k
+, pkgconfig, igraph }:
+
+buildPythonPackage rec {
+ pname = "python-igraph";
+ version = "0.7.1.post6";
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [ igraph ];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0xp61zz710qlzhmzbfr65d5flvsi8zf2xy78s6rsszh719wl5sm5";
+ };
+
+ doCheck = !isPy3k;
+
+ meta = {
+ description = "High performance graph data structures and algorithms";
+ homepage = "https://igraph.org/python/";
+ license = lib.licenses.gpl2;
+ maintainers = [ lib.maintainers.MostAwesomeDude ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-jenkins/default.nix b/nixpkgs/pkgs/development/python-modules/python-jenkins/default.nix
new file mode 100644
index 00000000000..9cd55757aac
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-jenkins/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, mock
+, pbr
+, pyyaml
+, six
+, multi_key_dict
+, testscenarios
+, requests
+, unittest2
+, requests-mock
+}:
+
+buildPythonPackage rec {
+ pname = "python-jenkins";
+ version = "1.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1h14hfcwichmppbgxf1k8njw29hchpav1kj574b4lly3j0n2vnag";
+ };
+
+ buildInputs = [ mock ];
+ propagatedBuildInputs = [ pbr pyyaml six multi_key_dict requests ];
+
+ checkInputs = [ unittest2 testscenarios requests-mock ];
+ checkPhase = ''
+ unit2
+ '';
+
+ meta = with lib; {
+ description = "Python bindings for the remote Jenkins API";
+ homepage = https://pypi.python.org/pypi/python-jenkins;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ ma27 ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-jose/default.nix b/nixpkgs/pkgs/development/python-modules/python-jose/default.nix
new file mode 100644
index 00000000000..a9377c4a1c2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-jose/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub
+, future, six, ecdsa, rsa
+, pycrypto, pytest, pytestcov, pytestrunner, cryptography
+}:
+
+buildPythonPackage rec {
+ pname = "python-jose";
+ version = "3.0.1";
+
+ src = fetchFromGitHub {
+ owner = "mpdavis";
+ repo = "python-jose";
+ rev = version;
+ sha256 = "1ahq4m86z504bnlk9z473r7r3dprg5m39900rld797hbczdhqa4f";
+ };
+
+ checkInputs = [
+ pycrypto
+ pytest
+ pytestcov
+ pytestrunner
+ cryptography # optional dependency, but needed in tests
+ ];
+ checkPhase = ''
+ py.test
+ '';
+
+ # https://github.com/mpdavis/python-jose/issues/149
+ PYTEST_ADDOPTS = "-k 'not test_invalid_claims_json and not test_invalid_claims'";
+
+ propagatedBuildInputs = [ future six ecdsa rsa ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/mpdavis/python-jose;
+ description = "A JOSE implementation in Python";
+ license = licenses.mit;
+ maintainers = [ maintainers.jhhuh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-json-logger/default.nix b/nixpkgs/pkgs/development/python-modules/python-json-logger/default.nix
new file mode 100644
index 00000000000..0141141b43c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-json-logger/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+}:
+
+buildPythonPackage rec {
+ version = "0.1.11";
+ pname = "python-json-logger";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b7a31162f2a01965a5efb94453ce69230ed208468b0bbc7fdfc56e6d8df2e281";
+ };
+
+ checkInputs = [ nose ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/madzak/python-json-logger;
+ description = "A python library adding a json log formatter";
+ license = licenses.bsdOriginal;
+ maintainers = [ maintainers.costrouc ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-jsonrpc-server/default.nix b/nixpkgs/pkgs/development/python-modules/python-jsonrpc-server/default.nix
new file mode 100644
index 00000000000..29c6950070a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-jsonrpc-server/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, pythonOlder
+, pytest, mock, pytestcov, coverage
+, future, futures
+}:
+
+buildPythonPackage rec {
+ pname = "python-jsonrpc-server";
+ version = "0.2.0";
+
+ src = fetchFromGitHub {
+ owner = "palantir";
+ repo = "python-jsonrpc-server";
+ rev = version;
+ sha256 = "054b0xm5z3f82jwp7zj21pkh7gwj9jd933jhymdx49n1n1iynfn0";
+ };
+
+ postPatch = ''
+ sed -i 's/version=versioneer.get_version(),/version="${version}",/g' setup.py
+ '';
+
+ checkInputs = [
+ pytest mock pytestcov coverage
+ ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ propagatedBuildInputs = [ future ]
+ ++ stdenv.lib.optional (pythonOlder "3.2") futures;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/palantir/python-jsonrpc-server;
+ description = "A Python 2 and 3 asynchronous JSON RPC server";
+ license = licenses.mit;
+ maintainers = [ maintainers.mic92 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-language-server/default.nix b/nixpkgs/pkgs/development/python-modules/python-language-server/default.nix
new file mode 100644
index 00000000000..76508d1ec96
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-language-server/default.nix
@@ -0,0 +1,65 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, pythonOlder, isPy27
+, backports_functools_lru_cache, configparser, futures, future, jedi, pluggy, python-jsonrpc-server
+, pytest, mock, pytestcov, coverage, setuptools
+, # Allow building a limited set of providers, e.g. ["pycodestyle"].
+ providers ? ["*"]
+ # The following packages are optional and
+ # can be overwritten with null as your liking.
+, autopep8 ? null
+, mccabe ? null
+, pycodestyle ? null
+, pydocstyle ? null
+, pyflakes ? null
+, pylint ? null
+, rope ? null
+, yapf ? null
+}:
+
+let
+ withProvider = p: builtins.elem "*" providers || builtins.elem p providers;
+in
+
+buildPythonPackage rec {
+ pname = "python-language-server";
+ version = "0.28.1";
+
+ src = fetchFromGitHub {
+ owner = "palantir";
+ repo = "python-language-server";
+ rev = version;
+ sha256 = "0xa0zw7hlfqqa305ic4csgfmlbxhklb5xzx72mfkcz8gcc0f5qwd";
+ };
+
+ # The tests require all the providers, disable otherwise.
+ doCheck = providers == ["*"];
+
+ checkInputs = [
+ pytest mock pytestcov coverage
+ # rope is technically a dependency, but we don't add it by default since we
+ # already have jedi, which is the preferred option
+ rope
+ ];
+
+ checkPhase = ''
+ HOME=$TEMPDIR pytest
+ '';
+
+ propagatedBuildInputs = [ setuptools jedi pluggy future python-jsonrpc-server ]
+ ++ stdenv.lib.optional (withProvider "autopep8") autopep8
+ ++ stdenv.lib.optional (withProvider "mccabe") mccabe
+ ++ stdenv.lib.optional (withProvider "pycodestyle") pycodestyle
+ ++ stdenv.lib.optional (withProvider "pydocstyle") pydocstyle
+ ++ stdenv.lib.optional (withProvider "pyflakes") pyflakes
+ ++ stdenv.lib.optional (withProvider "pylint") pylint
+ ++ stdenv.lib.optional (withProvider "rope") rope
+ ++ stdenv.lib.optional (withProvider "yapf") yapf
+ ++ stdenv.lib.optional isPy27 configparser
+ ++ stdenv.lib.optionals (pythonOlder "3.2") [ backports_functools_lru_cache futures ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/palantir/python-language-server;
+ description = "An implementation of the Language Server Protocol for Python";
+ license = licenses.mit;
+ maintainers = [ maintainers.mic92 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-ldap-test/default.nix b/nixpkgs/pkgs/development/python-modules/python-ldap-test/default.nix
new file mode 100644
index 00000000000..3ba81cacfd4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-ldap-test/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi, py4j }:
+
+buildPythonPackage rec {
+ pname = "python-ldap-test";
+ version = "0.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1qh9x3lncaldnw79fgpqbayichs8pbz8abr6pxb5qxbs7zrnyrwf";
+ };
+
+ propagatedBuildInputs = [ py4j ];
+
+ # Tests needs java to be present in path
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Tool for testing code speaking with LDAP server";
+ homepage = https://github.com/zoldar/python-ldap-test;
+ license = licenses.mit;
+ maintainers = with maintainers; [ psyanticy ];
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/python-levenshtein/default.nix b/nixpkgs/pkgs/development/python-modules/python-levenshtein/default.nix
new file mode 100644
index 00000000000..7a16621da0a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-levenshtein/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "python-Levenshtein";
+ version = "0.12.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1c9ybqcja31nghfcc8xxbbz9h60s9qi12b9hr4jyl69xbvg12fh3";
+ };
+
+ # No tests included in archive
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Functions for fast computation of Levenshtein distance and string similarity";
+ homepage = "https://github.com/ztane/python-Levenshtein";
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ aske ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-libarchive/default.nix b/nixpkgs/pkgs/development/python-modules/python-libarchive/default.nix
new file mode 100644
index 00000000000..bae94191fc0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-libarchive/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, isPy3k
+, pkgs
+}:
+
+buildPythonPackage rec {
+ version = "3.1.2-1";
+ pname = "libarchive";
+ disabled = isPy3k;
+
+ src = fetchurl {
+ url = "http://python-libarchive.googlecode.com/files/python-libarchive-${version}.tar.gz";
+ sha256 = "0j4ibc4mvq64ljya9max8832jafi04jciff9ia9qy0xhhlwkcx8x";
+ };
+
+ propagatedBuildInputs = [ pkgs.libarchive.lib ];
+
+ meta = with stdenv.lib; {
+ description = "Multi-format archive and compression library";
+ homepage = https://libarchive.org/;
+ license = licenses.bsd0;
+ broken = true;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-ly/default.nix b/nixpkgs/pkgs/development/python-modules/python-ly/default.nix
new file mode 100644
index 00000000000..4c1bd05f4a0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-ly/default.nix
@@ -0,0 +1,21 @@
+{ buildPythonPackage, fetchPypi, stdenv }:
+
+buildPythonPackage rec {
+ pname = "python-ly";
+ version = "0.9.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0x98dv7p8mg26p4816yy8hz4f34zf6hpnnfmr56msgh9jnsm2qfl";
+ };
+
+ # tests not shipped on `pypi` and
+ # seem to be broken ATM: https://github.com/wbsoft/python-ly/issues/70
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Tool and library for manipulating LilyPond files";
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ ma27 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-lz4/default.nix b/nixpkgs/pkgs/development/python-modules/python-lz4/default.nix
new file mode 100644
index 00000000000..e967ba9934d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-lz4/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, future
+, isPy3k
+, pkgconfig
+, psutil
+, pytest
+, pytestcov
+, pytestrunner
+, setuptools_scm
+}:
+
+buildPythonPackage rec {
+ pname = "python-lz4";
+ version = "2.1.10";
+
+ # get full repository inorder to run tests
+ src = fetchFromGitHub {
+ owner = pname;
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "02cadqfdmw4vc94px18dh4hcybpsa2lr6jz6j5phwc0jjaavh3wr";
+ };
+
+ buildInputs = [ setuptools_scm pkgconfig pytestrunner ];
+ checkInputs = [ pytest pytestcov psutil ];
+ propagatedBuildInputs = lib.optionals (!isPy3k) [ future ];
+
+ # give a hint to setuptools_scm on package version
+ preBuild = ''
+ export SETUPTOOLS_SCM_PRETEND_VERSION="v${version}"
+ '';
+
+ meta = {
+ description = "LZ4 Bindings for Python";
+ homepage = https://github.com/python-lz4/python-lz4;
+ license = lib.licenses.bsd3;
+ maintainers = with lib.maintainers; [ costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-magic/default.nix b/nixpkgs/pkgs/development/python-modules/python-magic/default.nix
new file mode 100644
index 00000000000..d48a6288a7d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-magic/default.nix
@@ -0,0 +1,28 @@
+{ buildPythonPackage, lib, fetchPypi, file, stdenv }:
+
+buildPythonPackage rec {
+ pname = "python-magic";
+ version = "0.4.15";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f3765c0f582d2dfc72c15f3b5a82aecfae9498bd29ca840d72f37d7bd38bfcd5";
+ };
+
+ postPatch = ''
+ substituteInPlace magic.py --replace "ctypes.util.find_library('magic')" "'${file}/lib/libmagic${stdenv.hostPlatform.extensions.sharedLibrary}'"
+ '';
+
+ doCheck = false;
+
+ # TODO: tests are failing
+ #checkPhase = ''
+ # ${python}/bin/${python.executable} ./test.py
+ #'';
+
+ meta = {
+ description = "A python interface to the libmagic file type identification library";
+ homepage = https://github.com/ahupp/python-magic;
+ license = lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-mapnik/default.nix b/nixpkgs/pkgs/development/python-modules/python-mapnik/default.nix
new file mode 100644
index 00000000000..35b7a706f60
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-mapnik/default.nix
@@ -0,0 +1,66 @@
+{ stdenv
+, buildPythonPackage
+, isPyPy
+, python
+, pkgs
+, pillow
+, pycairo
+}:
+
+let
+ boost = pkgs.boost.override {
+ enablePython = true;
+ inherit python;
+ };
+ mapnik = pkgs.mapnik.override {
+ inherit python boost;
+ };
+
+in buildPythonPackage rec {
+ pname = "python-mapnik";
+ version = "3.0.16";
+
+ src = pkgs.fetchFromGitHub {
+ owner = "mapnik";
+ repo = "python-mapnik";
+ rev = "v${version}";
+ sha256 = "1gqs4kvmjawdgl80j0ab5r8y0va9kw0rvwix3093xsv4hwd00lcc";
+ };
+
+ disabled = isPyPy;
+ doCheck = false; # doesn't find needed test data files
+ preBuild = let
+ pythonVersion = with stdenv.lib.versions; "${major python.version}${minor python.version}";
+ in ''
+ export BOOST_PYTHON_LIB="boost_python${pythonVersion}"
+ export BOOST_THREAD_LIB="boost_thread"
+ export BOOST_SYSTEM_LIB="boost_system"
+ '';
+
+ nativeBuildInputs = [
+ mapnik # for mapnik_config
+ ];
+
+ buildInputs = [
+ mapnik
+ boost
+ ] ++ (with pkgs; [
+ cairo
+ harfbuzz
+ icu
+ libjpeg
+ libpng
+ libtiff
+ libwebp
+ proj
+ zlib
+ ]);
+ propagatedBuildInputs = [ pillow pycairo ];
+
+ meta = with stdenv.lib; {
+ description = "Python bindings for Mapnik";
+ homepage = https://mapnik.org;
+ license = licenses.lgpl21;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-markdown-math/default.nix b/nixpkgs/pkgs/development/python-modules/python-markdown-math/default.nix
new file mode 100644
index 00000000000..053b4897e83
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-markdown-math/default.nix
@@ -0,0 +1,24 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, markdown
+}:
+
+buildPythonPackage rec {
+ pname = "python-markdown-math";
+ version = "0.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c68d8cb9695cb7b435484403dc18941d1bad0ff148e4166d9417046a0d5d3022";
+ };
+
+ checkInputs = [ markdown ];
+
+ meta = {
+ description = "Math extension for Python-Markdown";
+ homepage = https://github.com/mitya57/python-markdown-math;
+ license = lib.licenses.bsd3;
+ maintainers = with lib.maintainers; [ klntsky ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-mnist/default.nix b/nixpkgs/pkgs/development/python-modules/python-mnist/default.nix
new file mode 100644
index 00000000000..67cb4eae251
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-mnist/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "python-mnist";
+ version = "0.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5d59a44335eccb4b310efb2ebb76f44e8588a1732cfb4923f4a502b61d8b653a";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/sorki/python-mnist;
+ description = "Simple MNIST data parser written in Python";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ cmcdragonkai ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-oauth2/default.nix b/nixpkgs/pkgs/development/python-modules/python-oauth2/default.nix
new file mode 100644
index 00000000000..e8c71bff18b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-oauth2/default.nix
@@ -0,0 +1,23 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "python-oauth2";
+ version = "1.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b24da812837c19183df1924e80a22ba0a1869582dea8b04a9ecd807b04dbc525";
+ };
+ # attempts to run mysql
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Framework that aims at making it easy to provide authentication via OAuth 2.0 within an application stack";
+ homepage = https://github.com/wndhydrnt/python-oauth2;
+ license = licenses.mit;
+ maintainers = with maintainers; [ ixxie ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-otr/default.nix b/nixpkgs/pkgs/development/python-modules/python-otr/default.nix
new file mode 100644
index 00000000000..2b08bbffa45
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-otr/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, 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 stdenv.lib; {
+ description = "A pure python implementation of OTR";
+ homepage = https://github.com/AGProjects/otr;
+ license = licenses.lgpl21Plus;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ edwtjo ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-packer/default.nix b/nixpkgs/pkgs/development/python-modules/python-packer/default.nix
new file mode 100644
index 00000000000..ff3d28b4746
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-packer/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, buildPythonPackage, fetchPypi, fetchpatch, sh }:
+
+buildPythonPackage rec {
+ pname = "python-packer";
+ version = "0.1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "fd363dae9bd2efd447739bbf7a4f29c1e4741596ae7b02d252fe525b2b4176e7";
+ };
+
+ patches = fetchpatch {
+ url = "${meta.homepage}/commit/de3421bf13bf7c3ec11fe0a381f0944e102b1d97.patch";
+ excludes = [ "dev-requirements.txt" ];
+ sha256 = "0rgmkyn7i6y1xs8m75dpl8hq7j2ns2s3dvp7kv9j4zwic93rrlsc";
+ };
+
+ propagatedBuildInputs = [ sh ];
+
+ # Tests requires network connections
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "An interface for packer.io";
+ homepage = https://github.com/nir0s/python-packer;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ psyanticy ];
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/python-periphery/default.nix b/nixpkgs/pkgs/development/python-modules/python-periphery/default.nix
new file mode 100644
index 00000000000..38642f066d7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-periphery/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "python-periphery";
+ version = "1.1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1bhzkzjvz6zb6rc5zmvgqfszrcyh64v1hay7m1m5dn083gaznyk9";
+ };
+
+ # Some tests require physical probing and additional physical setup
+ doCheck = false;
+
+ meta = {
+ homepage = https://github.com/vsergeev/python-periphery;
+ description = "Linux Peripheral I/O (GPIO, LED, PWM, SPI, I2C, MMIO, Serial) with Python 2 & 3";
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ bandresen ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-pipedrive/default.nix b/nixpkgs/pkgs/development/python-modules/python-pipedrive/default.nix
new file mode 100644
index 00000000000..e21f01d5cd6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-pipedrive/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+, httplib2
+}:
+
+buildPythonPackage rec {
+ pname = "python-pipedrive";
+ version = "0.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0f8qiyl82bpwxwjw2746vdvkps2010mvn1x9b6j6ppmifff2d4pl";
+ };
+
+ propagatedBuildInputs = [ httplib2 ];
+
+ doCheck = false; # Tests are not provided.
+
+ meta = with stdenv.lib; {
+ description = "Python library for interacting with the pipedrive.com API";
+ homepage = "https://github.com/jscott1989/python-pipedrive";
+ license = licenses.unfree;
+ maintainers = with maintainers; [ mrmebelman ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-prctl/default.nix b/nixpkgs/pkgs/development/python-modules/python-prctl/default.nix
new file mode 100644
index 00000000000..5d092f5e6ea
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-prctl/default.nix
@@ -0,0 +1,26 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, libcap
+}:
+
+buildPythonPackage rec {
+ pname = "python-prctl";
+ version = "1.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1njgixnavmwq45r3gpkhn1y760sax204clagg4gzwvvdc5bdbssp";
+ };
+
+ patches = [ ./skip_bad_tests.patch ];
+ buildInputs = [ libcap ];
+
+ meta = {
+ description = "Python(ic) interface to the linux prctl syscall";
+ homepage = https://github.com/seveas/python-prctl;
+ license = lib.licenses.gpl3;
+ platforms = lib.platforms.linux;
+ maintainers = with lib.maintainers; [ catern ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-prctl/skip_bad_tests.patch b/nixpkgs/pkgs/development/python-modules/python-prctl/skip_bad_tests.patch
new file mode 100644
index 00000000000..19d70f234a9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-prctl/skip_bad_tests.patch
@@ -0,0 +1,34 @@
+--- ./test_prctl.py 2018-01-26 16:02:52.000000000 -0500
++++ ./test_prctl.py 2018-06-21 18:26:43.370065009 -0400
+@@ -154,6 +154,7 @@
+ prctl.set_keepcaps(False)
+ self.assertEqual(prctl.get_keepcaps(), False)
+
++ @unittest.skip("No access to /proc in the Nix build sandbox")
+ @require('set_mce_kill')
+ def test_mce_kill(self):
+ """Test the MCE_KILL setting"""
+@@ -173,6 +174,7 @@
+ prctl.set_name(name)
+ self.assertEqual(prctl.get_name(), name[:15])
+
++ @unittest.skip("The Nix build sandbox has no_new_privs already enabled")
+ @require('get_no_new_privs')
+ def test_no_new_privs(self):
+ """Test the no_new_privs function"""
+@@ -189,6 +191,7 @@
+ self.assertNotEqual(sp.returncode, 0)
+ os._exit(0)
+
++ @unittest.skip("No access to /proc in the Nix build sandbox")
+ def test_proctitle(self):
+ """Test setting the process title, including too long titles"""
+ title = "This is a test!"
+@@ -225,6 +228,7 @@
+ os._exit(0)
+ self.assertRaises(OSError, prctl.set_ptracer, new_pid)
+
++ @unittest.skip("The Nix build sandbox has seccomp already enabled")
+ @require('get_seccomp')
+ def test_seccomp(self):
+ """Test manipulation of the seccomp setting"""
diff --git a/nixpkgs/pkgs/development/python-modules/python-ptrace/default.nix b/nixpkgs/pkgs/development/python-modules/python-ptrace/default.nix
new file mode 100644
index 00000000000..ad0a17da2ac
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-ptrace/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "python-ptrace";
+ version = "0.9.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "019jlpya2d2b3vbg037hnj4z0f564r7ibygayda7bm7qbpw0sa4g";
+ };
+
+ # requires distorm, which is optionally
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Python binding of ptrace library";
+ homepage = https://github.com/vstinner/python-ptrace;
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ mic92 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-rapidjson/default.nix b/nixpkgs/pkgs/development/python-modules/python-rapidjson/default.nix
new file mode 100644
index 00000000000..c25f97434b0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-rapidjson/default.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, pytest
+, pytz
+, glibcLocales
+}:
+
+buildPythonPackage rec {
+ version = "0.7.2";
+ pname = "python-rapidjson";
+ disabled = pythonOlder "3.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0z8wzl5mjzs97y7sbhlm59kak3z377xln3z8lkjwrsh2sh5c9x3v";
+ };
+
+ LC_ALL="en_US.utf-8";
+ buildInputs = [ glibcLocales ];
+
+ # buildInputs = [ ];
+ checkInputs = [ pytest pytz ];
+ # propagatedBuildInputs = [ ];
+
+ checkPhase = ''
+ pytest tests
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/python-rapidjson/python-rapidjson;
+ description = "Python wrapper around rapidjson ";
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-redis-lock/default.nix b/nixpkgs/pkgs/development/python-modules/python-redis-lock/default.nix
new file mode 100644
index 00000000000..65c5e08d934
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-redis-lock/default.nix
@@ -0,0 +1,36 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, redis
+, pytest
+, process-tests
+, pkgs
+, withDjango ? false, django_redis
+}:
+
+buildPythonPackage rec {
+ pname = "python-redis-lock";
+ version = "3.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5316d473ce6ce86a774b9f9c110d84c3a9bd1a2abfda5d99e9c0c8a872a8e6d6";
+ };
+
+ checkInputs = [ pytest process-tests pkgs.redis ];
+
+ checkPhase = ''
+ pytest tests/
+ '';
+
+ propagatedBuildInputs = [ redis ]
+ ++ stdenv.lib.optional withDjango django_redis;
+
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/ionelmc/python-redis-lock";
+ license = licenses.bsd2;
+ description = "Lock context manager implemented via redis SETNX/BLPOP";
+ maintainers = with maintainers; [ vanschelven ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-simple-hipchat/default.nix b/nixpkgs/pkgs/development/python-modules/python-simple-hipchat/default.nix
new file mode 100644
index 00000000000..24a21959b8c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-simple-hipchat/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, unzip }:
+
+buildPythonPackage rec {
+ pname = "python-simple-hipchat";
+ version = "0.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0zy6prrj85jjc4xmxgfg8h94j81k6zhfxfffcbvq9b10jis1rgav";
+ };
+
+ buildInputs = [ unzip ];
+
+ meta = with stdenv.lib; {
+ description = "Easy peasy wrapper for HipChat's v1 API";
+ homepage = https://github.com/kurttheviking/simple-hipchat-py;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-slugify/default.nix b/nixpkgs/pkgs/development/python-modules/python-slugify/default.nix
new file mode 100644
index 00000000000..699d370af75
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-slugify/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchPypi, buildPythonPackage, python, text-unidecode }:
+
+buildPythonPackage rec {
+ pname = "python-slugify";
+ version = "3.0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "57163ffb345c7e26063435a27add1feae67fa821f1ef4b2f292c25847575d758";
+ };
+
+ propagatedBuildInputs = [ text-unidecode ];
+
+ checkPhase = ''
+ ${python.interpreter} test.py
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/un33k/python-slugify;
+ description = "A Python Slugify application that handles Unicode";
+ license = licenses.mit;
+ platforms = platforms.all;
+ maintainers = with maintainers; [ vrthra ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-snappy/default.nix b/nixpkgs/pkgs/development/python-modules/python-snappy/default.nix
new file mode 100644
index 00000000000..328b1ec0994
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-snappy/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, isPyPy
+, snappy
+, cffi
+, nose
+}:
+
+buildPythonPackage rec {
+ pname = "python-snappy";
+ version = "0.5.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d9c26532cfa510f45e8d135cde140e8a5603d3fb254cfec273ebc0ecf9f668e2";
+ };
+
+ buildInputs = [ snappy ];
+
+ propagatedBuildInputs = lib.optional isPyPy cffi;
+
+ checkInputs = [ nose ];
+
+ checkPhase = ''
+ rm -r snappy # prevent local snappy from being picked up
+ nosetests test_snappy.py
+ '' + lib.optionalString isPyPy ''
+ nosetests test_snappy_cffi.py
+ '';
+
+ meta = with lib; {
+ description = "Python library for the snappy compression library from Google";
+ homepage = https://github.com/andrix/python-snappy;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-socketio/default.nix b/nixpkgs/pkgs/development/python-modules/python-socketio/default.nix
new file mode 100644
index 00000000000..5dff7189e66
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-socketio/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, six
+, python-engineio
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "python-socketio";
+ version = "3.1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "aa702157694d55a743fb6f1cc0bd1af58fbfda8a7d71d747d4b12d6dac29cab3";
+ };
+
+ propagatedBuildInputs = [
+ six
+ python-engineio
+ ];
+
+ checkInputs = [ mock ];
+ # tests only on github, but latest github release not tagged
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Socket.IO server";
+ homepage = https://github.com/miguelgrinberg/python-socketio/;
+ license = licenses.mit;
+ maintainers = [ maintainers.mic92 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-sql/default.nix b/nixpkgs/pkgs/development/python-modules/python-sql/default.nix
new file mode 100644
index 00000000000..451138fa38d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-sql/default.nix
@@ -0,0 +1,16 @@
+{ lib, fetchPypi, buildPythonPackage }:
+
+buildPythonPackage rec {
+ pname = "python-sql";
+ version = "1.0.0";
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "05ni936y0ia9xmryl7mlhbj9i80nnvq1bi4zxhb96rv7yvpb3fqb";
+ };
+ meta = {
+ homepage = http://python-sql.tryton.org/;
+ description = "A library to write SQL queries in a pythonic way";
+ maintainers = with lib.maintainers; [ johbo ];
+ license = lib.licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-stdnum/default.nix b/nixpkgs/pkgs/development/python-modules/python-stdnum/default.nix
new file mode 100644
index 00000000000..06577249a02
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-stdnum/default.nix
@@ -0,0 +1,23 @@
+{ lib, fetchPypi, buildPythonPackage, nose }:
+
+buildPythonPackage rec {
+ version = "1.11";
+ pname = "python-stdnum";
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d5f0af1bee9ddd9a20b398b46ce062dbd4d41fcc9646940f2667256a44df3854";
+ };
+
+ checkInputs = [ nose ];
+
+ checkPhase = ''
+ nosetests
+ '';
+
+ meta = {
+ homepage = https://arthurdejong.org/python-stdnum/;
+ description = "Python module to handle standardized numbers and codes";
+ maintainers = with lib.maintainers; [ johbo ];
+ license = lib.licenses.lgpl2Plus;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-telegram-bot/default.nix b/nixpkgs/pkgs/development/python-modules/python-telegram-bot/default.nix
new file mode 100644
index 00000000000..5af4383d44b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-telegram-bot/default.nix
@@ -0,0 +1,43 @@
+{ stdenv
+, fetchPypi
+, buildPythonPackage
+, certifi
+, future
+, urllib3
+, tornado
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "python-telegram-bot";
+ version = "11.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "cca4e32ebb8da7fdf35ab2fa2b3edd441211364819c5592fc253acdb7561ea5b";
+ };
+
+ prePatch = ''
+ rm -rf telegram/vendor
+ substituteInPlace telegram/utils/request.py \
+ --replace "import telegram.vendor.ptb_urllib3.urllib3 as urllib3" "import urllib3 as urllib3" \
+ --replace "import telegram.vendor.ptb_urllib3.urllib3.contrib.appengine as appengine" "import urllib3.contrib.appengine as appengine" \
+ --replace "from telegram.vendor.ptb_urllib3.urllib3.connection import HTTPConnection" "from urllib3.connection import HTTPConnection" \
+ --replace "from telegram.vendor.ptb_urllib3.urllib3.util.timeout import Timeout" "from urllib3.util.timeout import Timeout"
+
+ touch LICENSE.dual
+ '';
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ certifi future urllib3 tornado ];
+
+ # tests not included with release
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "This library provides a pure Python interface for the Telegram Bot API.";
+ homepage = https://python-telegram-bot.org;
+ license = licenses.lgpl3;
+ maintainers = with maintainers; [ veprbl ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-u2flib-host/default.nix b/nixpkgs/pkgs/development/python-modules/python-u2flib-host/default.nix
new file mode 100644
index 00000000000..38785d81313
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-u2flib-host/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchPypi, buildPythonPackage, requests, hidapi }:
+
+buildPythonPackage rec {
+ pname = "python-u2flib-host";
+ version = "3.0.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "02pwafd5kyjpc310ys0pgnd0adff1laz18naxxwsfrllqafqnrxb";
+ };
+
+ propagatedBuildInputs = [ requests hidapi ];
+
+ # Tests fail: "ValueError: underlying buffer has been detached"
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Python based U2F host library";
+ homepage = https://github.com/Yubico/python-u2flib-host;
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ jluttine ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-uinput/default.nix b/nixpkgs/pkgs/development/python-modules/python-uinput/default.nix
new file mode 100644
index 00000000000..ba5a527fdb0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-uinput/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, udev }:
+
+buildPythonPackage rec {
+ pname = "python-uinput";
+ version = "0.11.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "033zqiypjz0nigav6vz0s57pbzikvds55mxphrdpkdbpdikjnfcr";
+ };
+
+ buildInputs = [ udev ];
+
+ NIX_CFLAGS_LINK = [ "-ludev" ];
+
+ meta = with stdenv.lib; {
+ description = "Pythonic API to Linux uinput kernel module";
+ homepage = http://tjjr.fi/sw/python-uinput/;
+ license = licenses.gpl3Plus;
+ maintainers = with maintainers; [ abbradar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-unshare/default.nix b/nixpkgs/pkgs/development/python-modules/python-unshare/default.nix
new file mode 100644
index 00000000000..a7f0bd93b0a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-unshare/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+}:
+
+buildPythonPackage {
+ pname = "python-unshare";
+ # pypi version doesn't support Python 3 and the package didn't update for a long time:
+ # https://github.com/TheTincho/python-unshare/pull/8
+ version = "unstable-2018-05-20";
+
+ src = fetchFromGitHub {
+ owner = "TheTincho";
+ repo = "python-unshare";
+ rev = "4e98c177bdeb24c5dcfcd66c457845a776bbb75c";
+ sha256 = "1h9biinhy5m7r2cj4abhvsg2hb6xjny3n2dxnj1336zpa082ys3h";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Python bindings for the Linux unshare() syscall";
+ homepage = "https://github.com/thetincho/python-unshare";
+ license = licenses.gpl2;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ abbradar ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-utils/default.nix b/nixpkgs/pkgs/development/python-modules/python-utils/default.nix
new file mode 100644
index 00000000000..67fbd4e24eb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-utils/default.nix
@@ -0,0 +1,30 @@
+{ lib, buildPythonPackage, fetchPypi, pytest, pytestrunner, pytestcov, pytest-flakes, pytestpep8, sphinx, six }:
+
+buildPythonPackage rec {
+ pname = "python-utils";
+ version = "2.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "34aaf26b39b0b86628008f2ae0ac001b30e7986a8d303b61e1357dfcdad4f6d3";
+ };
+
+ postPatch = ''
+ rm -r tests/__pycache__
+ rm tests/*.pyc
+ '';
+
+ checkInputs = [ pytest pytestrunner pytestcov pytest-flakes pytestpep8 sphinx ];
+
+ checkPhase = ''
+ py.test tests
+ '';
+
+ propagatedBuildInputs = [ six ];
+
+ meta = with lib; {
+ description = "Module with some convenient utilities";
+ homepage = "https://github.com/WoLpH/python-utils";
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-vagrant/default.nix b/nixpkgs/pkgs/development/python-modules/python-vagrant/default.nix
new file mode 100644
index 00000000000..88982f15293
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-vagrant/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ version = "0.5.15";
+ pname = "python-vagrant";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1ikrh6canhcxg5y7pzmkcnnydikppv7s6sm9prfx90nk0ac8m6mg";
+ };
+
+ # The tests try to connect to qemu
+ doCheck = false;
+
+ meta = {
+ description = "Python module that provides a thin wrapper around the vagrant command line executable";
+ homepage = https://github.com/todddeluca/python-vagrant;
+ license = lib.licenses.mit;
+ maintainers = [ lib.maintainers.pmiddend ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-vipaccess/default.nix b/nixpkgs/pkgs/development/python-modules/python-vipaccess/default.nix
new file mode 100644
index 00000000000..30c6dff048a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-vipaccess/default.nix
@@ -0,0 +1,42 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, lxml
+, oath
+, pycryptodome
+, requests
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "python-vipaccess";
+ version = "0.10.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1m6b7qipiaj6pz86kjhyq5m5jxxijpk58gpsdkj5bn0wjl6x1pg2";
+ };
+
+ propagatedBuildInputs = [
+ lxml
+ oath
+ pycryptodome
+ requests
+ ];
+
+ checkInputs = [ pytest ];
+ # test_check_token_detects_valid_hotp_token,
+ # test_check_token_detects_valid_totp_token and
+ # test_check_token_detects_invlaid_token require network
+ checkPhase = ''
+ mv vipaccess vipaccess.hidden
+ pytest tests/ -k 'not test_check_token'
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A free software implementation of Symantec's VIP Access application and protocol";
+ homepage = "https://github.com/dlenski/python-vipaccess";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ aw ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-wifi/default.nix b/nixpkgs/pkgs/development/python-modules/python-wifi/default.nix
new file mode 100644
index 00000000000..7e4f2ebccf0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-wifi/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy27
+}:
+
+buildPythonPackage rec {
+ pname = "python-wifi";
+ version = "0.6.1";
+ disabled = !isPy27;
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "tar.bz2";
+ sha256 = "149c3dznb63d82143cz5hqdim0mqjysz6p3yk0zv271vq3xnmzvv";
+ };
+
+ meta = with stdenv.lib; {
+ inherit version;
+ description = "Read & write wireless card capabilities using the Linux Wireless Extensions";
+ homepage = http://pythonwifi.tuxfamily.org/;
+ # From the README: "pythonwifi is licensed under LGPLv2+, however, the
+ # examples (e.g. iwconfig.py and iwlist.py) are licensed under GPLv2+."
+ license = with licenses; [ lgpl2Plus gpl2Plus ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-xmp-toolkit/default.nix b/nixpkgs/pkgs/development/python-modules/python-xmp-toolkit/default.nix
new file mode 100644
index 00000000000..8a160da2964
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-xmp-toolkit/default.nix
@@ -0,0 +1,44 @@
+{ buildPythonPackage
+, exempi
+, fetchFromGitHub
+, mock
+, pythonOlder
+, pytz
+, stdenv
+}:
+
+buildPythonPackage {
+ pname = "python-xmp-toolkit";
+ version = "2.0.2";
+
+ # PyPi has version 2.0.1; the tests fail
+ # There are commits for a 2.0.2 release that was never published
+ # Not to github, not to PyPi
+ # This is the latest commit from Jun 29, 2017 (as of Mar 13, 2019)
+ # It includes the commits for the unreleased version 2.0.2 and more
+ # Tests pass with this version
+ src = fetchFromGitHub {
+ owner = "python-xmp-toolkit";
+ repo = "python-xmp-toolkit";
+ rev = "5692bdf8dac3581a0d5fb3c5aeb29be0ab6a54fc";
+ sha256 = "16bylcm183ilzp7mrpdzw0pzp6csv9v5v247914qsv2abg0hgl5y";
+ };
+
+ buildInputs = [ exempi ];
+
+ checkInputs = stdenv.lib.optionals (pythonOlder "3.3") [ mock ];
+
+ propagatedBuildInputs = [ pytz ];
+
+ postPatch = ''
+ substituteInPlace libxmp/exempi.py \
+ --replace "ctypes.util.find_library('exempi')" "'${exempi}/lib/libexempi${stdenv.hostPlatform.extensions.sharedLibrary}'"
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/python-xmp-toolkit/python-xmp-toolkit;
+ description = "Python XMP Toolkit for working with metadata";
+ license = licenses.bsd3;
+ maintainers = [ maintainers.kiwi ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python2-pythondialog/default.nix b/nixpkgs/pkgs/development/python-modules/python2-pythondialog/default.nix
new file mode 100644
index 00000000000..144887c75b3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python2-pythondialog/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "python2-pythondialog";
+ version = "3.4.0";
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a96d9cea9a371b5002b5575d1ec351233112519268d382ba6f3582323b3d1335";
+ };
+
+ patchPhase = ''
+ substituteInPlace dialog.py --replace ":/bin:/usr/bin" ":$out/bin"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A Python interface to the UNIX dialog utility and mostly-compatible programs (Python 2 backport)";
+ homepage = "http://pythondialog.sourceforge.net/";
+ license = licenses.lgpl3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python3-openid/default.nix b/nixpkgs/pkgs/development/python-modules/python3-openid/default.nix
new file mode 100644
index 00000000000..d0b10c42d01
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python3-openid/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, isPy3k, buildPythonPackage, fetchPypi, defusedxml }:
+
+buildPythonPackage rec {
+ pname = "python3-openid";
+ version = "3.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "00l5hrjh19740w00b3fnsqldnla41wbr2rics09dl4kyd1fkd3b2";
+ };
+
+ propagatedBuildInputs = [ defusedxml ];
+
+ doCheck = false;
+
+ disabled = !isPy3k;
+
+ meta = with stdenv.lib; {
+ description = "OpenID support for modern servers and consumers";
+ homepage = https://github.com/necaris/python3-openid;
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python_fedora/default.nix b/nixpkgs/pkgs/development/python-modules/python_fedora/default.nix
new file mode 100644
index 00000000000..24f56ae53b2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python_fedora/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi, kitchen, requests, bunch, paver
+, six, munch, urllib3, beautifulsoup4, openidc-client, lockfile }:
+
+buildPythonPackage rec {
+ pname = "python-fedora";
+ version = "0.10.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5516b8c066bb2eb5d604ae8e84c3d31e27753795c5d84f6a792979363756405c";
+ };
+ propagatedBuildInputs = [ kitchen requests bunch paver lockfile
+ six munch urllib3 beautifulsoup4 openidc-client ];
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Python Fedora Module";
+ homepage = https://github.com/fedora-infra/python-fedora;
+ license = licenses.lgpl2;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python_keyczar/default.nix b/nixpkgs/pkgs/development/python-modules/python_keyczar/default.nix
new file mode 100644
index 00000000000..da4f3ed529e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python_keyczar/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pyasn1
+, pycrypto
+}:
+
+buildPythonPackage rec {
+ pname = "python-keyczar";
+ version = "0.716";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f9b614112dc8248af3d03b989da4aeca70e747d32fe7e6fce9512945365e3f83";
+ };
+
+ buildInputs = [ pyasn1 pycrypto ];
+
+ meta = with stdenv.lib; {
+ description = "Toolkit for safe and simple cryptography";
+ homepage = https://pypi.python.org/pypi/python-keyczar;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ lovek323 ];
+ platforms = platforms.unix;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python_mimeparse/default.nix b/nixpkgs/pkgs/development/python-modules/python_mimeparse/default.nix
new file mode 100644
index 00000000000..90da2f256d4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python_mimeparse/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "python-mimeparse";
+ version = "1.6.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "76e4b03d700a641fd7761d3cd4fdbbdcd787eade1ebfac43f877016328334f78";
+ };
+
+ # error: invalid command 'test'
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A module provides basic functions for parsing mime-type names and matching them against a list of media-ranges";
+ homepage = https://code.google.com/p/mimeparse/;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python_openzwave/default.nix b/nixpkgs/pkgs/development/python-modules/python_openzwave/default.nix
new file mode 100644
index 00000000000..ae3f0ba933a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python_openzwave/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k
+, pkgconfig
+, systemd, libyaml, openzwave, cython
+, six, pydispatcher, urwid }:
+
+buildPythonPackage rec {
+ pname = "python_openzwave";
+ version = "0.4.19";
+
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6b40c7711383eeb3535cf5504f1cf47cc1ac7018eb820f299642a5a2795aef84";
+ extension = "zip";
+ };
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [ systemd libyaml openzwave cython ];
+ propagatedBuildInputs = [ six urwid pydispatcher ];
+
+ # primary location for the .xml files is in /etc/openzwave so we override the
+ # /usr/local/etc lookup instead as that allows us to dump new .xml files into
+ # /etc/openzwave if needed
+ postPatch = ''
+ substituteInPlace src-lib/libopenzwave/libopenzwave.pyx \
+ --replace /usr/local/etc/openzwave ${openzwave}/etc/openzwave
+ '';
+
+ # no tests available
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Python wrapper for the OpenZWave C++ library";
+ homepage = https://github.com/OpenZWave/python-openzwave;
+ license = licenses.gpl3Plus;
+ maintainers = with maintainers; [ etu ];
+ inherit (openzwave.meta) platforms;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python_statsd/default.nix b/nixpkgs/pkgs/development/python-modules/python_statsd/default.nix
new file mode 100644
index 00000000000..d6b262d9aa3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python_statsd/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, 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 stdenv.lib; {
+ description = "A client for Etsy's node-js statsd server";
+ homepage = https://github.com/WoLpH/python-statsd;
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pythonirclib/default.nix b/nixpkgs/pkgs/development/python-modules/pythonirclib/default.nix
new file mode 100644
index 00000000000..35873d301be
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pythonirclib/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, 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 stdenv.lib; {
+ description = "Python IRC library";
+ homepage = https://bitbucket.org/jaraco/irc;
+ license = with licenses; [ lgpl21 ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pythonix/default.nix b/nixpkgs/pkgs/development/python-modules/pythonix/default.nix
new file mode 100644
index 00000000000..6ed150d1239
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pythonix/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, ninja, boost, meson, pkgconfig, nix, isPy3k }:
+
+buildPythonPackage rec {
+ pname = "pythonix";
+ version = "0.1.6";
+ format = "other";
+
+ src = fetchFromGitHub {
+ owner = "Mic92";
+ repo = "pythonix";
+ rev = "v${version}";
+ sha256 = "1qzcrpn333hsgn6fj1m1s3cvaf0ny8qpygamcrazqv57xmwyr8h5";
+ };
+
+ disabled = !isPy3k;
+
+ nativeBuildInputs = [ meson ninja pkgconfig ];
+
+ buildInputs = [ nix boost ];
+
+ meta = with stdenv.lib; {
+ description = ''
+ Eval nix code from python.
+ '';
+ maintainers = [ maintainers.mic92 ];
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pythonnet/default.nix b/nixpkgs/pkgs/development/python-modules/pythonnet/default.nix
new file mode 100644
index 00000000000..98f714c8d53
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pythonnet/default.nix
@@ -0,0 +1,84 @@
+{ lib
+, fetchPypi
+, fetchNuGet
+, buildPythonPackage
+, python
+, pytest
+, pycparser
+, pkgconfig
+, dotnetbuildhelpers
+, clang
+, mono
+}:
+
+let
+
+ UnmanagedExports127 = fetchNuGet {
+ baseName = "UnmanagedExports";
+ version = "1.2.7";
+ sha256 = "0bfrhpmq556p0swd9ssapw4f2aafmgp930jgf00sy89hzg2bfijf";
+ outputFiles = [ "*" ];
+ };
+
+ NUnit360 = fetchNuGet {
+ baseName = "NUnit";
+ version = "3.6.0";
+ sha256 = "0wz4sb0hxlajdr09r22kcy9ya79lka71w0k1jv5q2qj3d6g2frz1";
+ outputFiles = [ "*" ];
+ };
+
+in
+
+buildPythonPackage rec {
+ pname = "pythonnet";
+ version = "2.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1hxnkrfj8ark9sbamcxzd63p98vgljfvdwh79qj3ac8pqrgghq80";
+ };
+
+ postPatch = ''
+ substituteInPlace setup.py --replace 'self._install_packages()' '#self._install_packages()'
+ '';
+
+ preConfigure = ''
+ [ -z "$dontPlacateNuget" ] && placate-nuget.sh
+ [ -z "$dontPlacatePaket" ] && placate-paket.sh
+ '';
+
+ nativeBuildInputs = [
+ pytest
+ pycparser
+
+ pkgconfig
+ dotnetbuildhelpers
+ clang
+
+ NUnit360
+ UnmanagedExports127
+ ];
+
+ buildInputs = [
+ mono
+ ];
+
+ preBuild = ''
+ rm -rf packages
+ mkdir packages
+
+ ln -s ${NUnit360}/lib/dotnet/NUnit/ packages/NUnit.3.6.0
+ ln -s ${UnmanagedExports127}/lib/dotnet/NUnit/ packages/UnmanagedExports.1.2.7
+ '';
+
+ checkPhase = ''
+ ${python.interpreter} -m pytest
+ '';
+
+ meta = with lib; {
+ description = ".Net and Mono integration for Python";
+ homepage = https://pythonnet.github.io;
+ license = licenses.mit;
+ maintainers = with maintainers; [ jraygauthier ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pythonocc-core/default.nix b/nixpkgs/pkgs/development/python-modules/pythonocc-core/default.nix
new file mode 100644
index 00000000000..b3a9cfe82ee
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pythonocc-core/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, python, fetchFromGitHub, cmake, swig, ninja,
+ opencascade, smesh, freetype, libGL, libGLU, libX11 }:
+
+stdenv.mkDerivation rec {
+ pname = "pythonocc-core";
+ version = "0.18.1";
+
+ src = fetchFromGitHub {
+ owner = "tpaviot";
+ repo = "pythonocc-core";
+ rev = version;
+ sha256 = "1jk4y7f75z9lyawffpfkr50qw5452xzi1imcdlw9pdvf4i0y86k3";
+ };
+
+ nativeBuildInputs = [ cmake swig ninja ];
+ buildInputs = [
+ python opencascade smesh
+ freetype libGL libGLU libX11
+ ];
+
+ cmakeFlags = [
+ "-Wno-dev"
+ "-DPYTHONOCC_INSTALL_DIRECTORY=${placeholder "out"}/${python.sitePackages}/OCC"
+
+ "-DSMESH_INCLUDE_PATH=${smesh}/include/smesh"
+ "-DSMESH_LIB_PATH=${smesh}/lib"
+ "-DPYTHONOCC_WRAP_SMESH=TRUE"
+ ];
+
+ meta = with stdenv.lib; {
+ description = "Python wrapper for the OpenCASCADE 3D modeling kernel";
+ homepage = "https://github.com/tpaviot/pythonocc-core";
+ license = licenses.lgpl3;
+ platforms = platforms.unix;
+ maintainers = with maintainers; [ gebner ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytidylib/default.nix b/nixpkgs/pkgs/development/python-modules/pytidylib/default.nix
new file mode 100644
index 00000000000..4ece6fb4134
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytidylib/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, buildPythonPackage, fetchPypi, python, html-tidy }:
+
+buildPythonPackage rec {
+ pname = "pytidylib";
+ version = "0.3.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "22b1c8d75970d8064ff999c2369e98af1d0685417eda4c829a5c9f56764b0af3";
+ };
+
+ postPatch = ''
+ # Patch path to library
+ substituteInPlace tidylib/tidy.py \
+ --replace "load_library(name)" \
+ "load_library('${html-tidy}/lib/libtidy${stdenv.hostPlatform.extensions.sharedLibrary}')"
+
+ # Test fails
+ substituteInPlace tests/test_docs.py \
+ --replace " def test_large_document(self):" \
+ $' @unittest.skip("")\n def test_large_document(self):'
+ '';
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Python wrapper for HTML Tidy (tidylib) on Python 2 and 3";
+ homepage = https://countergram.github.io/pytidylib/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ layus ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytimeparse/default.nix b/nixpkgs/pkgs/development/python-modules/pytimeparse/default.nix
new file mode 100644
index 00000000000..ac48fe1c240
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytimeparse/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchPypi, buildPythonPackage, nose }:
+
+buildPythonPackage rec {
+ pname = "pytimeparse";
+ version = "1.1.8";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "e86136477be924d7e670646a98561957e8ca7308d44841e21f5ddea757556a0a";
+ };
+
+ propagatedBuildInputs = [ nose ];
+
+ meta = with stdenv.lib; {
+ description = "A small Python library to parse various kinds of time expressions";
+ homepage = "https://github.com/wroberts/pytimeparse";
+ license = licenses.mit;
+ maintainers = with maintainers; [ vrthra ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytoml/default.nix b/nixpkgs/pkgs/development/python-modules/pytoml/default.nix
new file mode 100644
index 00000000000..d65de812323
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytoml/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, python
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "pytoml";
+ version = "0.1.20";
+
+ src = fetchFromGitHub {
+ owner = "avakar";
+ repo = "pytoml";
+ rev = "v${version}";
+ fetchSubmodules = true; # ensure test submodule is available
+ sha256 = "02hjq44zhh6z0fsbm3hvz34sav6fic90sjrw8g1pkdvskzzl46mz";
+ };
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ ${python.interpreter} test/test.py
+ pytest test
+ '';
+
+
+ meta = with stdenv.lib; {
+ description = "A TOML parser/writer for Python";
+ homepage = https://github.com/avakar/pytoml;
+ license = licenses.mit;
+ maintainers = with maintainers; [ peterhoeg ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytools/default.nix b/nixpkgs/pkgs/development/python-modules/pytools/default.nix
new file mode 100644
index 00000000000..2de5b21d86f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytools/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, decorator
+, appdirs
+, six
+, numpy
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "pytools";
+ version = "2019.1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ce2d702ae4ef10a70197b00b93141461140d00578f2a862fa946ca1446a300db";
+ };
+
+ checkInputs = [ pytest ];
+
+ propagatedBuildInputs = [
+ decorator
+ appdirs
+ six
+ numpy
+ ];
+
+ checkPhase = ''
+ py.test -k 'not test_persistent_dict'
+ '';
+
+ meta = {
+ homepage = https://github.com/inducer/pytools/;
+ description = "Miscellaneous Python lifesavers.";
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ artuuge ];
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/pytorch/default.nix b/nixpkgs/pkgs/development/python-modules/pytorch/default.nix
new file mode 100644
index 00000000000..f14200b3542
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytorch/default.nix
@@ -0,0 +1,109 @@
+{ stdenv, fetchurl, buildPythonPackage, pythonOlder,
+ cudaSupport ? false, cudatoolkit ? null, cudnn ? null,
+ fetchFromGitHub, lib, numpy, pyyaml, cffi, typing, cmake, hypothesis, numactl,
+ linkFarm, symlinkJoin,
+ utillinux, which }:
+
+assert cudnn == null || cudatoolkit != null;
+assert !cudaSupport || cudatoolkit != null;
+
+let
+ cudatoolkit_joined = symlinkJoin {
+ name = "${cudatoolkit.name}-unsplit";
+ paths = [ cudatoolkit.out cudatoolkit.lib ];
+ };
+
+ # Normally libcuda.so.1 is provided at runtime by nvidia-x11 via
+ # LD_LIBRARY_PATH=/run/opengl-driver/lib. We only use the stub
+ # libcuda.so from cudatoolkit for running tests, so that we don’t have
+ # to recompile pytorch on every update to nvidia-x11 or the kernel.
+ cudaStub = linkFarm "cuda-stub" [{
+ name = "libcuda.so.1";
+ path = "${cudatoolkit}/lib/stubs/libcuda.so";
+ }];
+ cudaStubEnv = lib.optionalString cudaSupport
+ "LD_LIBRARY_PATH=${cudaStub}\${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} ";
+
+in buildPythonPackage rec {
+ version = "1.0.0";
+ pname = "pytorch";
+
+ src = fetchFromGitHub {
+ owner = "pytorch";
+ repo = "pytorch";
+ rev = "v${version}";
+ fetchSubmodules = true;
+ sha256 = "076cpbig4sywn9vv674c0xdg832sdrd5pk1d0725pjkm436kpvlm";
+ };
+
+ patches =
+ [ # Skips two tests that are only meant to run on multi GPUs
+ (fetchurl {
+ url = "https://github.com/pytorch/pytorch/commit/bfa666eb0deebac21b03486e26642fd70d66e478.patch";
+ sha256 = "1fgblcj02gjc0y62svwc5gnml879q3x2z7m69c9gax79dpr37s9i";
+ })
+ ];
+
+ preConfigure = lib.optionalString cudaSupport ''
+ export CC=${cudatoolkit.cc}/bin/gcc CXX=${cudatoolkit.cc}/bin/g++
+ '' + lib.optionalString (cudaSupport && cudnn != null) ''
+ export CUDNN_INCLUDE_DIR=${cudnn}/include
+ '';
+
+ preFixup = ''
+ function join_by { local IFS="$1"; shift; echo "$*"; }
+ function strip2 {
+ IFS=':'
+ read -ra RP <<< $(patchelf --print-rpath $1)
+ IFS=' '
+ RP_NEW=$(join_by : ''${RP[@]:2})
+ patchelf --set-rpath \$ORIGIN:''${RP_NEW} "$1"
+ }
+
+ for f in $(find ''${out} -name 'libcaffe2*.so')
+ do
+ strip2 $f
+ done
+ '';
+
+ # Override the (weirdly) wrong version set by default. See
+ # https://github.com/NixOS/nixpkgs/pull/52437#issuecomment-449718038
+ # https://github.com/pytorch/pytorch/blob/v1.0.0/setup.py#L267
+ PYTORCH_BUILD_VERSION = version;
+ PYTORCH_BUILD_NUMBER = 0;
+
+ # Suppress a weird warning in mkl-dnn, part of ideep in pytorch
+ # (upstream seems to have fixed this in the wrong place?)
+ # https://github.com/intel/mkl-dnn/commit/8134d346cdb7fe1695a2aa55771071d455fae0bc
+ NIX_CFLAGS_COMPILE = lib.optionals (numpy.blasImplementation == "mkl") [ "-Wno-error=array-bounds" ];
+
+ nativeBuildInputs = [
+ cmake
+ utillinux
+ which
+ ] ++ lib.optionals cudaSupport [ cudatoolkit_joined ];
+
+ buildInputs = [
+ numpy.blas
+ ] ++ lib.optionals cudaSupport [ cudnn ]
+ ++ lib.optionals stdenv.isLinux [ numactl ];
+
+ propagatedBuildInputs = [
+ cffi
+ numpy
+ pyyaml
+ ] ++ lib.optional (pythonOlder "3.5") typing;
+
+ checkInputs = [ hypothesis ];
+ checkPhase = ''
+ ${cudaStubEnv}python test/run_test.py --exclude dataloader sparse torch utils thd_distributed distributed cpp_extensions
+ '';
+
+ meta = {
+ description = "Open source, prototype-to-production deep learning platform";
+ homepage = https://pytorch.org/;
+ license = lib.licenses.bsd3;
+ platforms = lib.platforms.linux;
+ maintainers = with lib.maintainers; [ teh thoughtpolice ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytrends/default.nix b/nixpkgs/pkgs/development/python-modules/pytrends/default.nix
new file mode 100644
index 00000000000..b3ada6247e3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytrends/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, requests
+, lxml
+, pandas
+}:
+
+buildPythonPackage rec {
+ pname = "pytrends";
+ version = "4.6.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "03gnn2mgjvpc7pbcijy7xilrhgjg7x2pp6ci96pdyqnhkqv02d3n";
+ };
+
+ doCheck = false;
+
+ propagatedBuildInputs = [ requests lxml pandas ];
+
+ meta = with stdenv.lib; {
+ description = "Pseudo API for Google Trends";
+ homepage = "https://github.com/GeneralMills/pytrends";
+ license = [ licenses.asl20 ];
+ maintainers = [ maintainers.mmahut ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytricia/default.nix b/nixpkgs/pkgs/development/python-modules/pytricia/default.nix
new file mode 100644
index 00000000000..2f95d7fcecb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytricia/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+}:
+
+buildPythonPackage rec {
+ pname = "pytricia";
+ version = "unstable-2019-01-16";
+
+ src = fetchFromGitHub {
+ owner = "jsommers";
+ repo = pname;
+ rev = "4ba88f68c3125f789ca8cd1cfae156e1464bde87";
+ sha256 = "0qp5774xkm700g35k5c76pck8pdzqlyzbaqgrz76a1yh67s2ri8h";
+ };
+
+ meta = with stdenv.lib; {
+ description = "A library for fast IP address lookup in Python";
+ homepage = https://github.com/jsommers/pytricia;
+ license = with licenses; [ lgpl3Plus ];
+ maintainers = with maintainers; [ mkg ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytun/default.nix b/nixpkgs/pkgs/development/python-modules/pytun/default.nix
new file mode 100644
index 00000000000..32e3b683e41
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytun/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+}:
+
+buildPythonPackage rec {
+ pname = "pytun";
+ version = "2.2.1";
+
+ src = fetchFromGitHub {
+ rev = "v${version}";
+ owner = "montag451";
+ repo = "pytun";
+ sha256 = "1bxk0z0v8m0b01xg94f039j3bsclkshb7girvjqfzk5whbd2nryh";
+ };
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/montag451/pytun;
+ description = "Linux TUN/TAP wrapper for Python";
+ license = licenses.mit;
+ maintainers = with maintainers; [ montag451 ];
+ platforms = platforms.linux;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytz/default.nix b/nixpkgs/pkgs/development/python-modules/pytz/default.nix
new file mode 100644
index 00000000000..534bb1618bc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytz/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildPythonPackage, fetchPypi, python }:
+
+buildPythonPackage rec {
+ pname = "pytz";
+ version = "2019.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d747dd3d23d77ef44c6a3526e274af6efeb0a6f1afd5a69ba4d5be4098c8e141";
+ };
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover -s pytz/tests
+ '';
+
+ meta = with lib; {
+ description = "World timezone definitions, modern and historical";
+ homepage = "https://pythonhosted.org/pytz";
+ license = licenses.mit;
+ maintainers = with maintainers; [ dotlambda ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytzdata/default.nix b/nixpkgs/pkgs/development/python-modules/pytzdata/default.nix
new file mode 100644
index 00000000000..6fa4eb6387d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytzdata/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchPypi, buildPythonPackage }:
+
+buildPythonPackage rec {
+ pname = "pytzdata";
+ version = "2019.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f0469062f799c66480fcc7eae69a8270dc83f0e6522c0e70db882d6bd708d378";
+ };
+
+ # No tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Timezone database for Python";
+ homepage = https://github.com/sdispater/pytzdata;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyu2f/default.nix b/nixpkgs/pkgs/development/python-modules/pyu2f/default.nix
new file mode 100644
index 00000000000..16aa7b0ec31
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyu2f/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, lib, fetchFromGitHub, buildPythonPackage,
+ six, mock, pyfakefs, unittest2, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "pyu2f";
+ version = "0.1.4";
+
+ src = fetchFromGitHub {
+ owner = "google";
+ repo = pname;
+ rev = version;
+ sha256 = "0waxdydvxn05a8ab9j235mz72x7p4pwa59pnxyk1zzbwxnpxb3p9";
+ };
+
+ # Platform detection for linux fails
+ postPatch = lib.optionalString stdenv.isLinux ''
+ rm pyu2f/tests/hid/macos_test.py
+ '';
+
+ propagatedBuildInputs = [ six ];
+
+ checkInputs = [ pytest six mock pyfakefs unittest2 ];
+
+ checkPhase = ''
+ pytest pyu2f/tests
+ '';
+
+ meta = with lib; {
+ description = "U2F host library for interacting with a U2F device over USB";
+ homepage = https://github.com/google/pyu2f/;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ prusnak ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyudev/default.nix b/nixpkgs/pkgs/development/python-modules/pyudev/default.nix
new file mode 100644
index 00000000000..c35c35d6c57
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyudev/default.nix
@@ -0,0 +1,35 @@
+{ lib, fetchPypi, buildPythonPackage
+, six, systemd, pytest, mock, hypothesis, docutils
+}:
+
+buildPythonPackage rec {
+ pname = "pyudev";
+ version = "0.21.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0arz0dqp75sszsmgm6vhg92n1lsx91ihddx3m944f4ah0487ljq9";
+ };
+
+ postPatch = ''
+ substituteInPlace src/pyudev/_ctypeslib/utils.py \
+ --replace "find_library(name)" "'${systemd.lib}/lib/libudev.so'"
+ '';
+
+ checkInputs = [ pytest mock hypothesis docutils ];
+ propagatedBuildInputs = [ systemd six ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ # Bunch of failing tests
+ # https://github.com/pyudev/pyudev/issues/187
+ doCheck = false;
+
+ meta = {
+ homepage = https://pyudev.readthedocs.org/;
+ description = "Pure Python libudev binding";
+ license = lib.licenses.lgpl21Plus;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyunifi/default.nix b/nixpkgs/pkgs/development/python-modules/pyunifi/default.nix
new file mode 100644
index 00000000000..49b01550772
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyunifi/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, requests }:
+
+buildPythonPackage rec {
+ pname = "pyunifi";
+ version = "2.16";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1d28ec8204fe3b0eb1043f5ba9b646a2c38e5fd89a0419d760cff8f0df507c83";
+ };
+
+ propagatedBuildInputs = [ requests ];
+
+ meta = with stdenv.lib; {
+ description = "API towards Ubiquity Networks UniFi controller";
+ homepage = https://github.com/finish06/unifi-api;
+ license = licenses.mit;
+ maintainers = with maintainers; [ peterhoeg ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyupdate/default.nix b/nixpkgs/pkgs/development/python-modules/pyupdate/default.nix
new file mode 100644
index 00000000000..d9ff4369c7a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyupdate/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k
+, requests }:
+
+buildPythonPackage rec {
+ pname = "pyupdate";
+ version = "1.3.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "151dxqvdpik4jy84sq6fhjyrq2qq5l70dccgxdbxxf9qyjxpywfl";
+ };
+
+ propagatedBuildInputs = [ requests ];
+
+ # As of 0.2.16, pyupdate is intimately tied to Home Assistant which is py3 only
+ disabled = !isPy3k;
+
+ # no tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ # This description is terrible, but it's what upstream uses.
+ description = "Package to update stuff";
+ homepage = https://github.com/ludeeus/pyupdate;
+ license = licenses.mit;
+ maintainers = with maintainers; [ peterhoeg ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyusb/default.nix b/nixpkgs/pkgs/development/python-modules/pyusb/default.nix
new file mode 100644
index 00000000000..c54711bb6c8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyusb/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchPypi, buildPythonPackage, libusb, libusb1 }:
+
+buildPythonPackage rec {
+ pname = "pyusb";
+ version = "1.0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0qkk2jn270jwwl1x26hmdhb14m9kkbrzzwzizdjcl1a29b6756sf";
+ };
+
+ # Fix the USB backend library lookup
+ postPatch =
+ ''
+ libusb=${libusb1.out}/lib/libusb-1.0${stdenv.hostPlatform.extensions.sharedLibrary}
+ test -f $libusb || { echo "ERROR: $libusb doesn't exist, please update/fix this build expression."; exit 1; }
+ sed -i -e "s|find_library=None|find_library=lambda _:\"$libusb\"|" usb/backend/libusb1.py
+ '';
+
+ propagatedBuildInputs = [ libusb ];
+
+ # No tests included
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Python USB access module (wraps libusb 1.0)"; # can use other backends
+ homepage = http://pyusb.sourceforge.net/;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ bjornfor ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyutil/default.nix b/nixpkgs/pkgs/development/python-modules/pyutil/default.nix
new file mode 100644
index 00000000000..ce0c514e3ec
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyutil/default.nix
@@ -0,0 +1,48 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, setuptoolsDarcs
+, setuptoolsTrial
+, simplejson
+, twisted
+, isPyPy
+}:
+
+buildPythonPackage rec {
+ pname = "pyutil";
+ version = "3.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8e254aa0a3b59e90515f7bca7ebc467b20a8d3fd2e26b63d196655c075da8d38";
+ };
+
+ buildInputs = [ setuptoolsDarcs setuptoolsTrial ] ++ (if doCheck then [ simplejson ] else []);
+ propagatedBuildInputs = [ twisted ];
+
+ # Tests fail because they try to write new code into the twisted
+ # package, apparently some kind of plugin.
+ doCheck = false;
+
+ prePatch = stdenv.lib.optionalString isPyPy ''
+ grep -rl 'utf-8-with-signature-unix' ./ | xargs sed -i -e "s|utf-8-with-signature-unix|utf-8|g"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Pyutil, a collection of mature utilities for Python programmers";
+
+ longDescription = ''
+ These are a few data structures, classes and functions which
+ we've needed over many years of Python programming and which
+ seem to be of general use to other Python programmers. Many of
+ the modules that have existed in pyutil over the years have
+ subsequently been obsoleted by new features added to the
+ Python language or its standard library, thus showing that
+ we're not alone in wanting tools like these.
+ '';
+
+ homepage = http://allmydata.org/trac/pyutil;
+ license = licenses.gpl2Plus;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyutilib/default.nix b/nixpkgs/pkgs/development/python-modules/pyutilib/default.nix
new file mode 100644
index 00000000000..8d9157fd7fb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyutilib/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, nose
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "pyutilib";
+ version = "5.7.1";
+
+ src = fetchPypi {
+ pname = "PyUtilib";
+ inherit version;
+ sha256 = "1m5ijc5qmv8hg4yj496ix77hbcf7ylk4sa98ym53sfsyz0mg3kxr";
+ };
+
+ propagatedBuildInputs = [
+ nose
+ six
+ ];
+
+ # tests require text files that are not included in the pypi package
+ doCheck = false;
+
+ meta = with lib; {
+ description = "PyUtilib: A collection of Python utilities";
+ homepage = https://github.com/PyUtilib/pyutilib;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyuv/default.nix b/nixpkgs/pkgs/development/python-modules/pyuv/default.nix
new file mode 100644
index 00000000000..cd76b283028
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyuv/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, isPyPy
+, pkgs
+}:
+
+buildPythonPackage rec {
+ pname = "pyuv";
+ version = "1.2.0";
+ disabled = isPyPy; # see https://github.com/saghul/pyuv/issues/49
+
+ src = pkgs.fetchurl {
+ url = "https://github.com/saghul/pyuv/archive/${pname}-${version}.tar.gz";
+ sha256 = "19yl1l5l6dq1xr8xcv6dhx1avm350nr4v2358iggcx4ma631rycx";
+ };
+
+ patches = [ ./pyuv-external-libuv.patch ];
+
+ buildInputs = [ pkgs.libuv ];
+
+ meta = with stdenv.lib; {
+ description = "Python interface for libuv";
+ homepage = https://github.com/saghul/pyuv;
+ repositories.git = git://github.com/saghul/pyuv.git;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyuv/pyuv-external-libuv.patch b/nixpkgs/pkgs/development/python-modules/pyuv/pyuv-external-libuv.patch
new file mode 100644
index 00000000000..41e169acd5f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyuv/pyuv-external-libuv.patch
@@ -0,0 +1,25 @@
+diff --git a/setup.py b/setup.py
+index 5071c3b..4b4a176 100644
+--- a/setup.py
++++ b/setup.py
+@@ -7,7 +7,6 @@ try:
+ from setuptools import setup, Extension
+ except ImportError:
+ from distutils.core import setup, Extension
+-from setup_libuv import libuv_build_ext, libuv_sdist
+
+
+ def get_version():
+@@ -35,11 +34,10 @@ setup(name = "pyuv",
+ "Programming Language :: Python :: 3.3",
+ "Programming Language :: Python :: 3.4"
+ ],
+- cmdclass = {'build_ext': libuv_build_ext,
+- 'sdist' : libuv_sdist},
+ packages = ['pyuv'],
+ ext_modules = [Extension('pyuv._cpyuv',
+ sources = ['src/pyuv.c'],
++ libraries = ['uv']
+ )]
+ )
+
diff --git a/nixpkgs/pkgs/development/python-modules/pyvcd/default.nix b/nixpkgs/pkgs/development/python-modules/pyvcd/default.nix
new file mode 100644
index 00000000000..b3d4483d65d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyvcd/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, setuptools_scm
+, six
+, pytest }:
+
+buildPythonPackage rec {
+ version = "0.1.4";
+ pname = "pyvcd";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0dv9wac5y5z9j54ypyc59csxdiy9ybpphw9ipxp1k8nfg65q9jxx";
+ };
+
+ buildInputs = [ setuptools_scm ];
+ propagatedBuildInputs = [ six ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ checkInputs = [ pytest ];
+
+ meta = with lib; {
+ description = "Python package for writing Value Change Dump (VCD) files";
+ homepage = https://github.com/SanDisk-Open-Source/pyvcd;
+ license = licenses.mit;
+ maintainers = [ maintainers.sb0 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyviz-comms/default.nix b/nixpkgs/pkgs/development/python-modules/pyviz-comms/default.nix
new file mode 100644
index 00000000000..422e2896082
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyviz-comms/default.nix
@@ -0,0 +1,27 @@
+{ buildPythonPackage
+, fetchPypi
+, lib
+, param
+}:
+
+buildPythonPackage rec {
+ pname = "pyviz_comms";
+ version = "0.7.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c1722a496b08eb20ae3f2fedcc1ebcd207567b62e6453c7198a0b8f78ae96049";
+ };
+
+ propagatedBuildInputs = [ param ];
+
+ # there are not tests with the package
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Launch jobs, organize the output, and dissect the results";
+ homepage = http://pyviz.org/;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyvmomi/default.nix b/nixpkgs/pkgs/development/python-modules/pyvmomi/default.nix
new file mode 100644
index 00000000000..a7fbf301295
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyvmomi/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildPythonPackage, fetchFromGitHub, requests }:
+
+buildPythonPackage rec {
+ pname = "pyvmomi";
+ version = "6.7.1.2018.12";
+
+ src = fetchFromGitHub {
+ owner = "vmware";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "1pgl95rbghidbyr8hndjzfzgb1yjchfcknlqgg3qbqvljnz9hfja";
+ };
+
+ # requires old version of vcrpy
+ doCheck = false;
+
+ propagatedBuildInputs = [ requests ];
+
+ meta = with lib; {
+ description = "Python SDK for the VMware vSphere API that allows you to manage ESX, ESXi, and vCenter";
+ homepage = "https://github.com/vmware/pyvmomi";
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyvoro/default.nix b/nixpkgs/pkgs/development/python-modules/pyvoro/default.nix
new file mode 100644
index 00000000000..83bdcec86bd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyvoro/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ version = "1.3.2";
+ pname = "pyvoro";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f31c047f6e4fc5f66eb0ab43afd046ba82ce247e18071141791364c4998716fc";
+ };
+
+ # No tests in package
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/joe-jordan/pyvoro;
+ description = "2D and 3D Voronoi tessellations: a python entry point for the voro++ library";
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pywal/convert.patch b/nixpkgs/pkgs/development/python-modules/pywal/convert.patch
new file mode 100644
index 00000000000..999bc1abeaf
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pywal/convert.patch
@@ -0,0 +1,21 @@
+diff --git a/pywal/backends/wal.py b/pywal/backends/wal.py
+index a75fdc5..4339680 100644
+--- a/pywal/backends/wal.py
++++ b/pywal/backends/wal.py
+@@ -21,15 +21,7 @@ def imagemagick(color_count, img, magick_command):
+
+ def has_im():
+ """Check to see if the user has im installed."""
+- if shutil.which("magick"):
+- return ["magick", "convert"]
+-
+- if shutil.which("convert"):
+- return ["convert"]
+-
+- logging.error("Imagemagick wasn't found on your system.")
+- logging.error("Try another backend. (wal --backend)")
+- sys.exit(1)
++ return ["@convert@"]
+
+
+ def gen_colors(img):
diff --git a/nixpkgs/pkgs/development/python-modules/pywal/default.nix b/nixpkgs/pkgs/development/python-modules/pywal/default.nix
new file mode 100644
index 00000000000..3fd61891878
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pywal/default.nix
@@ -0,0 +1,36 @@
+{ lib, buildPythonPackage, fetchPypi, imagemagick, feh, isPy3k }:
+
+buildPythonPackage rec {
+ pname = "pywal";
+ version = "3.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1drha9kshidw908k7h3gd9ws2bl64ms7bjcsa83pwb3hqa9bkspg";
+ };
+
+ preCheck = ''
+ mkdir tmp
+ HOME=$PWD/tmp
+ '';
+
+ patches = [
+ ./convert.patch
+ ./feh.patch
+ ];
+
+ # Invalid syntax
+ disabled = !isPy3k;
+
+ postPatch = ''
+ substituteInPlace pywal/backends/wal.py --subst-var-by convert "${imagemagick}/bin/convert"
+ substituteInPlace pywal/wallpaper.py --subst-var-by feh "${feh}/bin/feh"
+ '';
+
+ meta = with lib; {
+ description = "Generate and change colorschemes on the fly. A 'wal' rewrite in Python 3.";
+ homepage = https://github.com/dylanaraps/pywal;
+ license = licenses.mit;
+ maintainers = with maintainers; [ Fresheyeball ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pywal/feh.patch b/nixpkgs/pkgs/development/python-modules/pywal/feh.patch
new file mode 100644
index 00000000000..985e601d625
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pywal/feh.patch
@@ -0,0 +1,39 @@
+commit c31faa212e09aa62c232d9008e05976b1cdc9ee5
+Author: Frederik Rietdijk <fridh@fridh.nl>
+Date: Wed Dec 26 12:54:32 2018 +0100
+
+ nix: hardcode feh
+
+diff --git a/pywal/wallpaper.py b/pywal/wallpaper.py
+index ba61e66..fad34f7 100644
+--- a/pywal/wallpaper.py
++++ b/pywal/wallpaper.py
+@@ -47,27 +47,7 @@ def xfconf(path, img):
+
+ def set_wm_wallpaper(img):
+ """Set the wallpaper for non desktop environments."""
+- if shutil.which("feh"):
+- util.disown(["feh", "--bg-fill", img])
+-
+- elif shutil.which("nitrogen"):
+- util.disown(["nitrogen", "--set-zoom-fill", img])
+-
+- elif shutil.which("bgs"):
+- util.disown(["bgs", "-z", img])
+-
+- elif shutil.which("hsetroot"):
+- util.disown(["hsetroot", "-fill", img])
+-
+- elif shutil.which("habak"):
+- util.disown(["habak", "-mS", img])
+-
+- elif shutil.which("display"):
+- util.disown(["display", "-backdrop", "-window", "root", img])
+-
+- else:
+- logging.error("No wallpaper setter found.")
+- return
++ return util.disown(["@feh@", "--bg-fill", img])
+
+
+ def set_desktop_wallpaper(desktop, img):
diff --git a/nixpkgs/pkgs/development/python-modules/pywatchman/default.nix b/nixpkgs/pkgs/development/python-modules/pywatchman/default.nix
new file mode 100644
index 00000000000..40aaea9c01a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pywatchman/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, buildPythonPackage, fetchPypi, watchman }:
+
+buildPythonPackage rec {
+ pname = "pywatchman";
+ version = "1.4.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1yf2gm20wc3djpb5larxii3l55xxby0il2ns3q0v1byyfnr7w16h";
+ };
+
+ postPatch = ''
+ substituteInPlace pywatchman/__init__.py \
+ --replace "'watchman'" "'${watchman}/bin/watchman'"
+ '';
+
+ # No tests in archive
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Watchman client for Python";
+ homepage = https://facebook.github.io/watchman/;
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pywavelets/default.nix b/nixpkgs/pkgs/development/python-modules/pywavelets/default.nix
new file mode 100644
index 00000000000..bbd02d8daaf
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pywavelets/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, cython
+, nose
+, pytest
+, numpy
+}:
+
+buildPythonPackage rec {
+ pname = "PyWavelets";
+ version = "1.0.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a12c7a6258c0015d2c75d88b87393ee015494551f049009e8b63eafed2d78efc";
+ };
+
+ checkInputs = [ nose pytest ];
+
+ buildInputs = [ cython ];
+
+ propagatedBuildInputs = [ numpy ];
+
+ # Somehow nosetests doesn't run the tests, so let's use pytest instead
+ checkPhase = ''
+ py.test pywt/tests
+ '';
+
+ meta = {
+ description = "Wavelet transform module";
+ homepage = https://github.com/PyWavelets/pywt;
+ license = lib.licenses.mit;
+ };
+
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/pywbem/default.nix b/nixpkgs/pkgs/development/python-modules/pywbem/default.nix
new file mode 100644
index 00000000000..83403b3d150
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pywbem/default.nix
@@ -0,0 +1,57 @@
+{ lib, buildPythonPackage, fetchPypi, libxml2
+, m2crypto, ply, pyyaml, six, pbr, pythonOlder, isPy37
+, httpretty, lxml, mock, pytest, requests, decorator, unittest2
+}:
+
+buildPythonPackage rec {
+ pname = "pywbem";
+ version = "0.12.6";
+
+ # Support added in master https://github.com/pywbem/pywbem/commit/b2f2f1a151a30355bbc6652dca69a7b30bfe941e awaiting release
+ disabled = isPy37;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1dc6b745rrys600n05apdf6lb2vv5arlcwv7aiz9whgkbcd9qhki";
+ };
+
+ propagatedBuildInputs = [
+ mock
+ pbr
+ ply
+ pyyaml
+ six
+ ] ++ lib.optionals (pythonOlder "3.0") [ m2crypto ];
+
+ checkInputs = [
+ decorator
+ httpretty
+ libxml2
+ lxml
+ pytest
+ requests
+ unittest2
+ ];
+
+ postPatch = ''
+ # Uses deprecated library yamlordereddictloader
+ rm testsuite/test_client.py
+
+ # Wants `wbemcli` in PATH
+ rm testsuite/test_wbemcli.py
+
+ # Disables tests that use testfixtures which is currently broken by nonbuilding zope_component
+ rm testsuite/{test_logging,test_recorder,test_wbemconnection_mock}.*
+ '';
+
+ checkPhase = ''
+ pytest testsuite/
+ '';
+
+ meta = with lib; {
+ description = "Support for the WBEM standard for systems management";
+ homepage = https://pywbem.github.io;
+ license = licenses.lgpl21Plus;
+ maintainers = with maintainers; [ peterhoeg ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pywebdav/default.nix b/nixpkgs/pkgs/development/python-modules/pywebdav/default.nix
new file mode 100644
index 00000000000..15cb474f5fe
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pywebdav/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, fetchPypi, buildPythonPackage, isPy3k }:
+
+buildPythonPackage rec {
+ pname = "PyWebDAV";
+ version = "0.9.8";
+ disabled = isPy3k;
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1v10vg79h85milnq8w7yd75qq5z6297ywkn9b2kxajldzwqxn3ji";
+ };
+ meta = with stdenv.lib; {
+ homepage = http://code.google.com/p/pywebdav/;
+ description = "WebDAV library including a standalone server for python";
+ maintainers = with maintainers; [ johbo ];
+ license = licenses.gpl2Plus;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pywebkitgtk/default.nix b/nixpkgs/pkgs/development/python-modules/pywebkitgtk/default.nix
new file mode 100644
index 00000000000..c76f1f47077
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pywebkitgtk/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, pkgs
+, pygtk
+}:
+
+buildPythonPackage rec {
+ pname = "pywebkitgtk";
+ version = "1.1.8";
+ format = "other";
+
+ src = fetchurl {
+ url = "http://pywebkitgtk.googlecode.com/files/${pname}-${version}.tar.bz2";
+ sha256 = "1svlwyl61rvbqbcbalkg6pbf38yjyv7qkq9sx4x35yk69lscaac2";
+ };
+
+ nativeBuildInputs = [ pkgs.pkgconfig ];
+ buildInputs = [ pygtk pkgs.gtk2 pkgs.libxml2 pkgs.libxslt pkgs.libsoup pkgs.webkitgtk24x-gtk2 pkgs.icu ];
+
+ meta = with stdenv.lib; {
+ homepage = "https://code.google.com/p/pywebkitgtk/";
+ description = "Python bindings for the WebKit GTK port";
+ license = licenses.lgpl2Plus;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pywebpush/default.nix b/nixpkgs/pkgs/development/python-modules/pywebpush/default.nix
new file mode 100644
index 00000000000..c9077c7a17c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pywebpush/default.nix
@@ -0,0 +1,28 @@
+{ lib, fetchPypi, buildPythonPackage
+, coverage, flake8, mock, nose
+, http-ece, py-vapid, requests }:
+
+buildPythonPackage rec {
+ pname = "pywebpush";
+ version = "1.9.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "03qkijz56fx7p8405sknw2wji4pfj5knajk2lmj9y58mjxydbpp3";
+ };
+
+ propagatedBuildInputs = [
+ http-ece py-vapid requests
+ ];
+
+ checkInputs = [
+ coverage flake8 mock nose
+ ];
+
+ meta = with lib; {
+ description = "Webpush Data encryption library for Python";
+ homepage = https://github.com/web-push-libs/pywebpush;
+ license = licenses.mpl20;
+ maintainers = with maintainers; [ peterhoeg ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pywinrm/default.nix b/nixpkgs/pkgs/development/python-modules/pywinrm/default.nix
new file mode 100644
index 00000000000..3bdc5efaaa5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pywinrm/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, mock
+, pytest
+, requests
+, requests_ntlm
+, six
+, xmltodict
+}:
+
+buildPythonPackage rec {
+ pname = "pywinrm";
+ version = "0.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "799fc3e33fec8684443adf5778860388289102ea4fa1458f1bf307d167855573";
+ };
+
+ checkInputs = [ mock pytest ];
+ propagatedBuildInputs = [ requests requests_ntlm six xmltodict ];
+
+ meta = with lib; {
+ description = "Python library for Windows Remote Management";
+ homepage = https://github.com/diyan/pywinrm/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ elasticdog ];
+ platforms = platforms.all;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyx/default.nix b/nixpkgs/pkgs/development/python-modules/pyx/default.nix
new file mode 100644
index 00000000000..a377845563a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyx/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "pyx";
+ version = "0.14.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "05d1b7fc813379d2c12fcb5bd0195cab522b5aabafac88f72913f1d47becd912";
+ };
+
+ disabled = !isPy3k;
+
+ # No tests in archive
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Python package for the generation of PostScript, PDF, and SVG files";
+ homepage = http://pyx.sourceforge.net/;
+ license = with licenses; [ gpl2 ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyxattr/default.nix b/nixpkgs/pkgs/development/python-modules/pyxattr/default.nix
new file mode 100644
index 00000000000..7a137f5204c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyxattr/default.nix
@@ -0,0 +1,25 @@
+{ lib
+, pkgs
+, fetchPypi
+, buildPythonPackage
+}:
+
+buildPythonPackage rec {
+ pname = "pyxattr";
+ version = "0.6.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b525843f6b51036198b3b87c4773a5093d6dec57d60c18a1f269dd7059aa16e3";
+ };
+
+ # IOError: [Errno 95] Operation not supported (expected)
+ doCheck = false;
+
+ buildInputs = with pkgs; [ attr ];
+
+ meta = with lib; {
+ description = "A Python extension module which gives access to the extended attributes for filesystem objects available in some operating systems";
+ license = licenses.lgpl21Plus;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyxdg/default.nix b/nixpkgs/pkgs/development/python-modules/pyxdg/default.nix
new file mode 100644
index 00000000000..2f2b6e9b543
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyxdg/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "pyxdg";
+ version = "0.26";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "fe2928d3f532ed32b39c32a482b54136fe766d19936afc96c8f00645f9da1a06";
+ };
+
+ # error: invalid command 'test'
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = http://freedesktop.org/wiki/Software/pyxdg;
+ description = "Contains implementations of freedesktop.org standards";
+ license = licenses.lgpl2;
+ maintainers = with maintainers; [ domenkozar ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyxl3/default.nix b/nixpkgs/pkgs/development/python-modules/pyxl3/default.nix
new file mode 100644
index 00000000000..159645c425e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyxl3/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, unittest2
+, python
+, isPy27
+}:
+
+buildPythonPackage rec {
+ pname = "pyxl3";
+ version = "1.0";
+ disabled = isPy27;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "df413d86664e2d261f67749beffff07eb830ab8c7bbe631d11d4c42f3a5e5fde";
+ };
+
+ checkInputs = [ unittest2 ];
+
+ checkPhase = ''
+ ${python.interpreter} tests/test_basic.py
+ '';
+
+ # tests require weird codec installation
+ # which is not necessary for major use of package
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Python 3 port of pyxl for writing structured and reusable inline HTML";
+ homepage = https://github.com/gvanrossum/pyxl3;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyxml/default.nix b/nixpkgs/pkgs/development/python-modules/pyxml/default.nix
new file mode 100644
index 00000000000..5a55c1f47bb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyxml/default.nix
@@ -0,0 +1,30 @@
+{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";
+ };
+
+ buildInputs = [ makeWrapper ];
+ buildPhase = "${python.interpreter} ./setup.py build";
+ installPhase = ''
+ ${python.interpreter} ./setup.py install --prefix="$out" || exit 1
+
+ for i in "$out/bin/"*
+ do
+ wrapProgram "$i" --prefix PYTHONPATH : \
+ "$out/${python.sitePackages}" || \
+ exit 2
+ done
+ '';
+
+ meta = {
+ description = "A collection of libraries to process XML with Python";
+ homepage = http://pyxml.sourceforge.net/;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyyaml/default.nix b/nixpkgs/pkgs/development/python-modules/pyyaml/default.nix
new file mode 100644
index 00000000000..9663d9ab04b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyyaml/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildPythonPackage, fetchPypi, cython, libyaml, buildPackages }:
+
+buildPythonPackage rec {
+ pname = "PyYAML";
+ version = "5.1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b4bb4d3f5e232425e25dda21c070ce05168a786ac9eda43768ab7f3ac2770955";
+ };
+
+ # force regeneration using Cython
+ postPatch = ''
+ rm ext/_yaml.c
+ '';
+
+ nativeBuildInputs = [ cython buildPackages.stdenv.cc ];
+
+ buildInputs = [ libyaml ];
+
+ meta = with lib; {
+ description = "The next generation YAML parser and emitter for Python";
+ homepage = https://github.com/yaml/pyyaml;
+ license = licenses.mit;
+ maintainers = with maintainers; [ dotlambda ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyzmq/default.nix b/nixpkgs/pkgs/development/python-modules/pyzmq/default.nix
new file mode 100644
index 00000000000..40273cce888
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyzmq/default.nix
@@ -0,0 +1,38 @@
+{ buildPythonPackage
+, fetchPypi
+, pytest
+, tornado
+, zeromq
+, py
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "pyzmq";
+ version = "18.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0k3y6k3l9dmih3qmc4vrw26dpjggdk5c6r6806qhgjgpyq2rhccb";
+ };
+
+ checkInputs = [ pytest tornado ];
+ buildInputs = [ zeromq ];
+ propagatedBuildInputs = [ py ];
+
+ # test_socket.py seems to be hanging
+ # others fail
+ # for test_monitor: https://github.com/zeromq/pyzmq/issues/1272
+ checkPhase = ''
+ py.test $out/${python.sitePackages}/zmq/ -k "not test_socket \
+ and not test_current \
+ and not test_instance \
+ and not test_callable_check \
+ and not test_on_recv_basic \
+ and not test_on_recv_wake \
+ and not test_monitor"
+ '';
+
+ # Some of the tests use localhost networking.
+ __darwinAllowLocalNetworking = true;
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyzufall/default.nix b/nixpkgs/pkgs/development/python-modules/pyzufall/default.nix
new file mode 100644
index 00000000000..20666010f9a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyzufall/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchPypi, python, buildPythonPackage, nose, future, coverage }:
+
+buildPythonPackage rec {
+ pname = "PyZufall";
+ version = "0.13.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1jffhi20m82fdf78bjhncbdxkfzcskrlipxlrqq9741xdvrn14b5";
+ };
+
+ # disable tests due to problem with nose
+ # https://github.com/nose-devs/nose/issues/1037
+ doCheck = false;
+
+ checkInputs = [ nose coverage ];
+ propagatedBuildInputs = [ future ];
+
+ checkPhase = ''
+ ${python.interpreter} setup.py nosetests
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://pyzufall.readthedocs.io/de/latest/;
+ description = "Library for generating random data and sentences in german language";
+ license = licenses.gpl3Plus;
+ maintainers = with maintainers; [ davidak ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/qasm2image/default.nix b/nixpkgs/pkgs/development/python-modules/qasm2image/default.nix
new file mode 100644
index 00000000000..00f15f801d1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/qasm2image/default.nix
@@ -0,0 +1,52 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, cairocffi
+, cairosvg
+, cffi
+, qiskit
+, svgwrite
+, colorama
+, python
+, pythonOlder
+}:
+
+buildPythonPackage {
+ pname = "qasm2image";
+ version = "0.8.0";
+
+ src = fetchFromGitHub {
+ owner = "nelimee";
+ repo = "qasm2image";
+ rev = "2c01756946ba9782973359dbd7bbf6651af6bee5";
+ sha256 = "1bnkzv7wrdvrq71dmsqanb3v2hcsxh5zaglfcxm2d9zzpmvb4a2n";
+ };
+
+ disabled = pythonOlder "3.5";
+
+ propagatedBuildInputs = [
+ cairocffi
+ cairosvg
+ cffi
+ qiskit
+ svgwrite
+ ];
+
+ checkInputs = [
+ colorama
+ ];
+ checkPhase = ''
+ ${python.interpreter} tests/launch_tests.py
+ '';
+
+ LC_ALL="en_US.UTF-8";
+
+ meta = {
+ description = "A Python module to visualise quantum circuit";
+ homepage = https://github.com/nelimeee/qasm2image;
+ license = lib.licenses.cecill-b;
+ maintainers = with lib.maintainers; [
+ pandaman
+ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/qdarkstyle/default.nix b/nixpkgs/pkgs/development/python-modules/qdarkstyle/default.nix
new file mode 100644
index 00000000000..425bb21a687
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/qdarkstyle/default.nix
@@ -0,0 +1,22 @@
+{ lib, fetchPypi, buildPythonPackage }:
+
+buildPythonPackage rec {
+ pname = "qdarkstyle";
+ version = "2.6.8";
+
+ src = fetchPypi {
+ inherit version;
+ pname = "QDarkStyle";
+ sha256 = "18l2ynq2x8jd380nr47xy947c3qdmhv8nnxnan03y5d51azm8yh3";
+ };
+
+ # No tests available
+ doCheck = false;
+
+ meta = with lib; {
+ description = "A dark stylesheet for Python and Qt applications";
+ homepage = https://github.com/ColinDuquesnoy/QDarkStyleSheet;
+ license = licenses.mit;
+ maintainers = with maintainers; [ nyanloutre ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/qiskit/default.nix b/nixpkgs/pkgs/development/python-modules/qiskit/default.nix
new file mode 100644
index 00000000000..bb92fc9df9a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/qiskit/default.nix
@@ -0,0 +1,63 @@
+{ stdenv
+, isPy3k
+, buildPythonPackage
+, fetchPypi
+, numpy
+, scipy
+, sympy
+, matplotlib
+, networkx
+, ply
+, pillow
+, cffi
+, requests
+, requests_ntlm
+, IBMQuantumExperience
+, jsonschema
+, psutil
+, cmake
+, llvmPackages
+}:
+
+buildPythonPackage rec {
+ pname = "qiskit";
+ version = "0.7.3";
+
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "63e7a7c3033fe955d715cc825b3fb61d27c25ad66e1761493ca2243b5dbfb4f9";
+ };
+
+ buildInputs = [ cmake ]
+ ++ stdenv.lib.optional stdenv.isDarwin llvmPackages.openmp;
+
+ propagatedBuildInputs = [
+ numpy
+ matplotlib
+ networkx
+ ply
+ scipy
+ sympy
+ pillow
+ cffi
+ requests
+ requests_ntlm
+ IBMQuantumExperience
+ jsonschema
+ psutil
+ ];
+
+ # Pypi's tarball doesn't contain tests
+ doCheck = false;
+
+ meta = {
+ description = "Quantum Software Development Kit for writing quantum computing experiments, programs, and applications";
+ homepage = https://github.com/QISKit/qiskit-terra;
+ license = stdenv.lib.licenses.asl20;
+ maintainers = with stdenv.lib.maintainers; [
+ pandaman
+ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/qpid-python/default.nix b/nixpkgs/pkgs/development/python-modules/qpid-python/default.nix
new file mode 100644
index 00000000000..713e9db566e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/qpid-python/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, 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 stdenv.lib; {
+ homepage = http://qpid.apache.org/;
+ description = "Python client implementation and AMQP conformance tests for Apache Qpid";
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/qrcode/default.nix b/nixpkgs/pkgs/development/python-modules/qrcode/default.nix
new file mode 100644
index 00000000000..4321c025b56
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/qrcode/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+, pillow
+, pymaging_png
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "qrcode";
+ version = "6.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "505253854f607f2abf4d16092c61d4e9d511a3b4392e60bff957a68592b04369";
+ };
+
+ propagatedBuildInputs = [ six pillow pymaging_png ];
+ checkInputs = [ mock ];
+
+ meta = with stdenv.lib; {
+ description = "Quick Response code generation for Python";
+ homepage = "https://pypi.python.org/pypi/qrcode";
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/qscintilla-qt5/default.nix b/nixpkgs/pkgs/development/python-modules/qscintilla-qt5/default.nix
new file mode 100644
index 00000000000..e8076db6053
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/qscintilla-qt5/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, pythonPackages
+, qscintilla
+, lndir
+, qtbase
+}:
+with pythonPackages;
+buildPythonPackage {
+ pname = "qscintilla";
+ version = qscintilla.version;
+ src = qscintilla.src;
+ format = "other";
+
+ nativeBuildInputs = [ lndir sip qtbase ];
+ buildInputs = [ qscintilla ];
+ propagatedBuildInputs = [ pyqt5 ];
+
+ preConfigure = ''
+ mkdir -p $out
+ lndir ${pyqt5} $out
+ rm -rf "$out/nix-support"
+ cd Python
+ ${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-libdir=${qscintilla}/lib \
+ --pyqt-sipdir=${pyqt5}/share/sip/PyQt5 \
+ --qsci-sipdir=$out/share/sip/PyQt5 \
+ --sip-incdir=${sip}/include
+ '';
+
+ meta = with lib; {
+ description = "A Python binding to QScintilla, Qt based text editing control";
+ license = licenses.lgpl21Plus;
+ maintainers = with maintainers; [ lsix ];
+ homepage = https://www.riverbankcomputing.com/software/qscintilla/;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/qscintilla/default.nix b/nixpkgs/pkgs/development/python-modules/qscintilla/default.nix
new file mode 100644
index 00000000000..e44f6205d39
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/qscintilla/default.nix
@@ -0,0 +1,43 @@
+{ stdenv
+, 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 stdenv.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/nixpkgs/pkgs/development/python-modules/qserve/default.nix b/nixpkgs/pkgs/development/python-modules/qserve/default.nix
new file mode 100644
index 00000000000..ad1a7fd2ca3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/qserve/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "qserve";
+ version = "0.2.8";
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "0b04b2d4d11b464ff1efd42a9ea9f8136187d59f4076f57c9ba95361d41cd7ed";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Job queue server";
+ homepage = "https://github.com/pediapress/qserve";
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/qtawesome/default.nix b/nixpkgs/pkgs/development/python-modules/qtawesome/default.nix
new file mode 100644
index 00000000000..a6c431764be
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/qtawesome/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, buildPythonPackage, fetchPypi, qtpy, six, pyqt5, pytest }:
+
+buildPythonPackage rec {
+ pname = "QtAwesome";
+ version = "0.6.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "05qypwlzjkw31x7qgn01d4kcf40mbymg5c9h3i7cx2r8sw29akjy";
+ };
+
+ propagatedBuildInputs = [ qtpy six ];
+
+ checkInputs = [ pyqt5 pytest ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ # Requires https://github.com/boylea/qtbot
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Iconic fonts in PyQt and PySide applications";
+ homepage = https://github.com/spyder-ide/qtawesome;
+ license = licenses.mit;
+ platforms = platforms.linux; # fails on Darwin
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/qtconsole/default.nix b/nixpkgs/pkgs/development/python-modules/qtconsole/default.nix
new file mode 100644
index 00000000000..055a54612a0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/qtconsole/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, nose
+, isPy27
+, mock
+, traitlets
+, jupyter_core
+, jupyter_client
+, pygments
+, ipykernel
+, pyqt5
+}:
+
+buildPythonPackage rec {
+ pname = "qtconsole";
+ version = "4.5.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0z6d2rmzrx2dzbx94xxmsrl6vn6jjpzvb6014y2bqhwr7znbjzkn";
+ };
+
+ checkInputs = [ nose ] ++ lib.optionals isPy27 [mock];
+ propagatedBuildInputs = [traitlets jupyter_core jupyter_client pygments ipykernel pyqt5];
+
+ # : cannot connect to X server
+ doCheck = false;
+
+ meta = {
+ description = "Jupyter Qt console";
+ homepage = https://jupyter.org/;
+ license = lib.licenses.bsd3;
+ platforms = lib.platforms.unix;
+ maintainers = with lib.maintainers; [ fridh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/qtpy/default.nix b/nixpkgs/pkgs/development/python-modules/qtpy/default.nix
new file mode 100644
index 00000000000..5d2210e00c4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/qtpy/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchPypi, pyside, pytest }:
+
+buildPythonPackage rec {
+ pname = "QtPy";
+ version = "1.9.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "13cw8l7zrhbdi03k1wl1pg9xdl4ahdfa7yz8gd0f23sxnm22rdrd";
+ };
+
+ # no concrete propagatedBuildInputs as multiple backends are supposed
+ checkInputs = [ pyside pytest ];
+
+ doCheck = false; # require X
+ checkPhase = ''
+ py.test qtpy/tests
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Abstraction layer for PyQt5/PyQt4/PySide2/PySide";
+ homepage = https://github.com/spyder-ide/qtpy;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/quamash/default.nix b/nixpkgs/pkgs/development/python-modules/quamash/default.nix
new file mode 100644
index 00000000000..b39e081c471
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/quamash/default.nix
@@ -0,0 +1,30 @@
+{ lib, buildPythonPackage, fetchFromGitHub, pytest, isPy3k, pyqt5, pyqt ? pyqt5 }:
+
+buildPythonPackage rec {
+ pname = "quamash";
+ version = "0.6.1";
+
+ disabled = !isPy3k;
+
+ # No tests in PyPi tarball
+ src = fetchFromGitHub {
+ owner = "harvimt";
+ repo = "quamash";
+ rev = "version-${version}";
+ sha256 = "117rp9r4lz0kfz4dmmpa35hp6nhbh6b4xq0jmgvqm68g9hwdxmqa";
+ };
+
+ propagatedBuildInputs = [ pyqt ];
+
+ checkInputs = [ pytest ];
+ checkPhase = ''
+ pytest -k 'test_qthreadexec.py' # the others cause the test execution to be aborted, I think because of asyncio
+ '';
+
+ meta = with lib; {
+ description = "Implementation of the PEP 3156 event-loop (asyncio) api using the Qt Event-Loop";
+ homepage = https://github.com/harvimt/quamash;
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ borisbabic ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/quandl/default.nix b/nixpkgs/pkgs/development/python-modules/quandl/default.nix
new file mode 100644
index 00000000000..fc4c192968f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/quandl/default.nix
@@ -0,0 +1,55 @@
+{
+ lib, fetchPypi, buildPythonPackage, isPy3k,
+ # runtime dependencies
+ pandas, numpy, requests, inflection, python-dateutil, six, more-itertools,
+ # test suite dependencies
+ nose, unittest2, flake8, httpretty, mock, jsondate, parameterized, faker, factory_boy,
+ # additional runtime dependencies are required on Python 2.x
+ pyOpenSSL ? null, ndg-httpsclient ? null, pyasn1 ? null
+}:
+
+buildPythonPackage rec {
+ pname = "quandl";
+ version = "3.4.6";
+
+ src = fetchPypi {
+ inherit version;
+ pname = "Quandl";
+ sha256 = "15b58nj45bdax0aha6kwjz5pxj3bz8bs6ajwxqp9r89j13xxn94g";
+ };
+
+ doCheck = true;
+
+ checkInputs = [
+ nose
+ unittest2
+ flake8
+ httpretty
+ mock
+ jsondate
+ parameterized
+ faker
+ factory_boy
+ ];
+
+ propagatedBuildInputs = [
+ pandas
+ numpy
+ requests
+ inflection
+ python-dateutil
+ six
+ more-itertools
+ ] ++ lib.optional (!isPy3k) [
+ pyOpenSSL
+ ndg-httpsclient
+ pyasn1
+ ];
+
+ meta = {
+ homepage = "https://github.com/quandl/quandl-python";
+ description = "Quandl Python client library";
+ maintainers = [ lib.maintainers.ilya-kolpakov ];
+ license = lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/quantities/default.nix b/nixpkgs/pkgs/development/python-modules/quantities/default.nix
new file mode 100644
index 00000000000..bc778984493
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/quantities/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, numpy
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "quantities";
+ version = "0.12.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "582f3c7aeba897846761e966615e01202a5e5d06add304492931b05085d19883";
+ };
+
+ propagatedBuildInputs = [ numpy ];
+
+ checkPhase = ''
+ ${python.interpreter} setup.py test -V 1
+ '';
+
+ meta = {
+ description = "Quantities is designed to handle arithmetic and";
+ homepage = http://python-quantities.readthedocs.io/;
+ license = lib.licenses.bsd2;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/queuelib/default.nix b/nixpkgs/pkgs/development/python-modules/queuelib/default.nix
new file mode 100644
index 00000000000..dbcdd4c5924
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/queuelib/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "queuelib";
+ version = "1.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "42b413295551bdc24ed9376c1a2cd7d0b1b0fa4746b77b27ca2b797a276a1a17";
+ };
+
+ buildInputs = [ pytest ];
+
+ meta = with stdenv.lib; {
+ description = "A collection of persistent (disk-based) queues for Python";
+ homepage = "https://github.com/scrapy/queuelib";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ drewkett ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/qutip/default.nix b/nixpkgs/pkgs/development/python-modules/qutip/default.nix
new file mode 100644
index 00000000000..13c24312ed0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/qutip/default.nix
@@ -0,0 +1,44 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, numpy
+, scipy
+, matplotlib
+, pyqt4
+, cython
+, pkgs
+, nose
+}:
+
+buildPythonPackage rec {
+ pname = "qutip";
+ version = "2.2.0";
+
+ src = fetchurl {
+ url = "https://qutip.googlecode.com/files/QuTiP-${version}.tar.gz";
+ sha256 = "a26a639d74b2754b3a1e329d91300e587e8c399d8a81d8f18a4a74c6d6f02ba3";
+ };
+
+ propagatedBuildInputs = [ numpy scipy matplotlib pyqt4 cython ];
+
+ buildInputs = [ pkgs.gcc pkgs.qt4 pkgs.blas nose ];
+
+ meta = with stdenv.lib; {
+ description = "QuTiP - Quantum Toolbox in Python";
+ longDescription = ''
+ QuTiP is open-source software for simulating the dynamics of
+ open quantum systems. The QuTiP library depends on the
+ excellent Numpy and Scipy numerical packages. In addition,
+ graphical output is provided by Matplotlib. QuTiP aims to
+ provide user-friendly and efficient numerical simulations of a
+ wide variety of Hamiltonians, including those with arbitrary
+ time-dependence, commonly found in a wide range of physics
+ applications such as quantum optics, trapped ions,
+ superconducting circuits, and quantum nanomechanical
+ resonators.
+ '';
+ homepage = http://qutip.org/;
+ license = licenses.bsd0;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/r2pipe/default.nix b/nixpkgs/pkgs/development/python-modules/r2pipe/default.nix
new file mode 100644
index 00000000000..f51aed9462a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/r2pipe/default.nix
@@ -0,0 +1,51 @@
+{ stdenv
+, lib
+, python
+, buildPythonPackage
+, fetchPypi
+, radare2
+, coreutils
+}:
+
+buildPythonPackage rec {
+ pname = "r2pipe";
+ version = "1.4.1";
+
+ postPatch = let
+ r2lib = "${lib.getOutput "lib" radare2}/lib";
+ libr_core = "${r2lib}/libr_core${stdenv.hostPlatform.extensions.sharedLibrary}";
+ in
+ ''
+ # Fix find_library, can be removed after
+ # https://github.com/NixOS/nixpkgs/issues/7307 is resolved.
+ substituteInPlace r2pipe/native.py --replace "find_library('r_core')" "'${libr_core}'"
+
+ # Fix the default r2 executable
+ substituteInPlace r2pipe/open_sync.py --replace "r2e = 'radare2'" "r2e = '${radare2}/bin/radare2'"
+ substituteInPlace r2pipe/open_base.py --replace 'which("radare2")' "'${radare2}/bin/radare2'"
+ '';
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "02r2xrnanzp7iskqbq8flzhc4d56hlzyf3qwqp3azys838y0kcyy";
+ };
+
+ # Tiny sanity check to make sure r2pipe finds radare2 (since r2pipe doesn't
+ # provide its own tests):
+ # Analyze ls with the fastest analysis and do nothing with the result.
+ postCheck = ''
+ ${python.interpreter} <<EOF
+ import r2pipe
+ r2 = r2pipe.open('${coreutils}/bin/ls')
+ r2.cmd('a')
+ r2.quit()
+ EOF
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Interact with radare2";
+ homepage = https://github.com/radare/radare2-r2pipe;
+ license = licenses.mit;
+ maintainers = with maintainers; [ timokau ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rabbitpy/default.nix b/nixpkgs/pkgs/development/python-modules/rabbitpy/default.nix
new file mode 100644
index 00000000000..7406faca601
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rabbitpy/default.nix
@@ -0,0 +1,43 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, mock
+, nose
+, pamqp
+}:
+
+buildPythonPackage rec {
+ version = "1.0.0";
+ pname = "rabbitpy";
+
+ # No tests in the pypi tarball, so we directly fetch from git
+ src = fetchFromGitHub {
+ owner = "gmr";
+ repo = pname;
+ rev = version;
+ sha256 = "0fd80zlr4p2sh77rxyyfi9l0h2zqi2csgadr0rhnpgpqsy10qck6";
+ };
+
+ propagatedBuildInputs = [ pamqp ];
+ checkInputs = [ mock nose ];
+
+ checkPhase = ''
+ runHook preCheck
+ rm tests/integration_tests.py # Impure tests requiring network
+ nosetests tests
+ runHook postCheck
+ '';
+
+ postPatch = ''
+ # See: https://github.com/gmr/rabbitpy/issues/118
+ substituteInPlace setup.py \
+ --replace 'pamqp>=1.6.1,<2.0' 'pamqp'
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A pure python, thread-safe, minimalistic and pythonic RabbitMQ client library";
+ homepage = https://pypi.python.org/pypi/rabbitpy;
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/radicale_infcloud/default.nix b/nixpkgs/pkgs/development/python-modules/radicale_infcloud/default.nix
new file mode 100644
index 00000000000..08d4a8f36a3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/radicale_infcloud/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchFromGitHub, buildPythonPackage }:
+
+buildPythonPackage {
+ pname = "radicale_infcloud";
+ version = "2017-07-27";
+
+ src = fetchFromGitHub {
+ owner = "Unrud";
+ repo = "RadicaleInfCloud";
+ rev = "972757bf4c6be8b966ee063e3741ced29ba8169f";
+ sha256 = "1c9ql9nv8kwi791akwzd19dcqzd916i7yxzbnrismzw4f5bhgzsk";
+ };
+
+ doCheck = false; # Tries to import radicale, circular dependency
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/Unrud/RadicaleInfCloud/;
+ description = "Integrate InfCloud into Radicale's web interface";
+ license = with licenses; [ agpl3 gpl3 ];
+ platforms = platforms.all;
+ maintainers = with maintainers; [ aneeshusa ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/radio_beam/default.nix b/nixpkgs/pkgs/development/python-modules/radio_beam/default.nix
new file mode 100644
index 00000000000..09d815134ef
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/radio_beam/default.nix
@@ -0,0 +1,46 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+, astropy
+, pytest
+, pytest-astropy
+, astropy-helpers
+, scipy
+}:
+
+buildPythonPackage rec {
+ pname = "radio_beam";
+ version = "0.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1wgd9dyz3pcc9ighkclb6qfyshwbg35s57lz6k62jhcxpvp8r5zb";
+ };
+
+ propagatedBuildInputs = [ astropy ];
+
+ nativeBuildInputs = [ astropy-helpers ];
+
+ # Disable automatic update of the astropy-helper module
+ postPatch = ''
+ substituteInPlace setup.cfg --replace "auto_use = True" "auto_use = False"
+ '';
+
+ checkInputs = [ pytest pytest-astropy scipy ];
+
+ # Tests must be run in the build directory
+ checkPhase = ''
+ cd build/lib
+ pytest
+ '';
+
+ meta = {
+ description = "Tools for Beam IO and Manipulation";
+ homepage = http://radio-astro-tools.github.io;
+ license = lib.licenses.bsd3;
+ platforms = lib.platforms.all;
+ maintainers = with lib.maintainers; [ smaret ];
+ };
+}
+
+
diff --git a/nixpkgs/pkgs/development/python-modules/rainbowstream/default.nix b/nixpkgs/pkgs/development/python-modules/rainbowstream/default.nix
new file mode 100644
index 00000000000..ca6e4614f33
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rainbowstream/default.nix
@@ -0,0 +1,54 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+, pkgs
+, pillow
+, twitter
+, pyfiglet
+, requests
+, arrow
+, dateutil
+, pysocks
+, pocket
+}:
+
+buildPythonPackage rec {
+ pname = "rainbowstream";
+ version = "1.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "16881d8bb15416389eeaf4ceee7a588069060c216b55e7602dbcff5134feb7cc";
+ };
+
+ patches = [ ./image.patch ];
+
+ postPatch = ''
+ clib=$out/${python.sitePackages}/rainbowstream/image.so
+ substituteInPlace rainbowstream/c_image.py \
+ --replace @CLIB@ $clib
+ sed -i 's/requests.*"/requests"/' setup.py
+ '';
+
+ LC_ALL="en_US.UTF-8";
+
+ postInstall = ''
+ mkdir -p $out/lib
+ cc -fPIC -shared -o $clib rainbowstream/image.c
+ for prog in "$out/bin/"*; do
+ wrapProgram "$prog" \
+ --prefix PYTHONPATH : "$PYTHONPATH"
+ done
+ '';
+
+ buildInputs = [ pkgs.libjpeg pkgs.freetype pkgs.zlib pkgs.glibcLocales pillow twitter pyfiglet requests arrow dateutil pysocks pocket ];
+
+ meta = with stdenv.lib; {
+ description = "Streaming command-line twitter client";
+ homepage = "http://www.rainbowstream.org/";
+ license = licenses.mit;
+ maintainers = with maintainers; [ thoughtpolice ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rainbowstream/image.patch b/nixpkgs/pkgs/development/python-modules/rainbowstream/image.patch
new file mode 100644
index 00000000000..215152ae4fb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rainbowstream/image.patch
@@ -0,0 +1,18 @@
+diff --git a/rainbowstream/c_image.py b/rainbowstream/c_image.py
+index f050150..a0fb77d 100644
+--- a/rainbowstream/c_image.py
++++ b/rainbowstream/c_image.py
+@@ -12,11 +12,7 @@ def call_c():
+ """
+ Call the C program for converting RGB to Ansi colors
+ """
+- library = expanduser('~/.image.so')
+- sauce = join(dirname(__file__), 'image.c')
+- if not exists(library) or getmtime(sauce) > getmtime(library):
+- build = "cc -fPIC -shared -o %s %s" % (library, sauce)
+- os.system(build + " >/dev/null 2>&1")
++ library = '@CLIB@'
+ image_c = ctypes.cdll.LoadLibrary(library)
+ image_c.init()
+ return image_c.rgb_to_ansi
+
diff --git a/nixpkgs/pkgs/development/python-modules/ramlfications/default.nix b/nixpkgs/pkgs/development/python-modules/ramlfications/default.nix
new file mode 100644
index 00000000000..0f870a5ab7a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ramlfications/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, mock, pytest, pytest-mock, pytest-server-fixtures, pytest-localserver
+, termcolor, click, markdown2, six, jsonref, pyyaml, xmltodict, attrs
+}:
+
+buildPythonPackage rec {
+ pname = "ramlfications";
+ version = "0.1.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0xvnna7kaq4nm5nfnwcwbr5bcm2s532hgyp7kq4v9iivn48rrf3v";
+ };
+
+ meta = with stdenv.lib; {
+ description = "A Python RAML parser.";
+ homepage = "https://ramlfications.readthedocs.org";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ nand0p ];
+ platforms = platforms.all;
+ };
+
+ doCheck = false;
+ # [darwin] AssertionError: Expected 'update_mime_types' to have been called once. Called 0 times.
+
+ buildInputs = [ mock pytest pytest-mock pytest-server-fixtures pytest-localserver ];
+
+ propagatedBuildInputs = [ termcolor click markdown2 six jsonref pyyaml xmltodict attrs ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/random2/default.nix b/nixpkgs/pkgs/development/python-modules/random2/default.nix
new file mode 100644
index 00000000000..ecc049b34f4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/random2/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPyPy
+}:
+
+buildPythonPackage rec {
+ pname = "random2";
+ version = "1.0.1";
+ doCheck = !isPyPy;
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "34ad30aac341039872401595df9ab2c9dc36d0b7c077db1cea9ade430ed1c007";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = http://pypi.python.org/pypi/random2;
+ description = "Python 3 compatible Python 2 `random` Module";
+ license = licenses.psfl;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rarfile/default.nix b/nixpkgs/pkgs/development/python-modules/rarfile/default.nix
new file mode 100644
index 00000000000..a2da451905a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rarfile/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, pytest, nose, libarchive, glibcLocales
+# unrar is non-free software
+, useUnrar ? false, unrar
+}:
+
+assert useUnrar -> unrar != null;
+assert !useUnrar -> libarchive != null;
+
+buildPythonPackage {
+ pname = "rarfile";
+ version = "3.0";
+
+ src = fetchFromGitHub {
+ owner = "markokr";
+ repo = "rarfile";
+ rev = "rarfile_3_0";
+ sha256 = "07yliz6p1bxzhipnrgz133gl8laic35gl4rqfay7f1vc384ch7sn";
+ };
+ buildInputs = [ pytest nose glibcLocales ];
+
+ prePatch = ''
+ substituteInPlace rarfile.py \
+ '' + (if useUnrar then
+ ''--replace 'UNRAR_TOOL = "unrar"' "UNRAR_TOOL = \"${unrar}/bin/unrar\""
+ ''
+ else
+ ''--replace 'ALT_TOOL = "bsdtar"' "ALT_TOOL = \"${libarchive}/bin/bsdtar\""
+ '')
+ + ''
+ '';
+ # the tests only work with the standard unrar package
+ doCheck = useUnrar;
+ LC_ALL = "en_US.UTF-8";
+ checkPhase = ''
+ py.test test -k "not test_printdir"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "RAR archive reader for Python";
+ homepage = https://github.com/markokr/rarfile;
+ license = licenses.isc;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rasterio/default.nix b/nixpkgs/pkgs/development/python-modules/rasterio/default.nix
new file mode 100644
index 00000000000..1a4fdff5812
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rasterio/default.nix
@@ -0,0 +1,29 @@
+{ buildPythonPackage, lib, fetchFromGitHub, isPy3k
+, cython
+, numpy, affine, attrs, cligj, click-plugins, snuggs, gdal
+, pytest, pytestcov, packaging, hypothesis, boto3, mock
+}:
+
+buildPythonPackage rec {
+ pname = "rasterio";
+ version = "1.0.25";
+
+ # Pypi doesn't ship the tests, so we fetch directly from GitHub
+ src = fetchFromGitHub {
+ owner = "mapbox";
+ repo = "rasterio";
+ rev = version;
+ sha256 = "15m0ajcrxjdzahdkxa3mylk87l31zz48k99bvmmx96hcl31cf347";
+ };
+
+ checkInputs = [ boto3 pytest pytestcov packaging hypothesis ] ++ lib.optional (!isPy3k) mock;
+ nativeBuildInputs = [ cython gdal ];
+ propagatedBuildInputs = [ gdal numpy attrs affine cligj click-plugins snuggs ];
+
+ meta = with lib; {
+ description = "Python package to read and write geospatial raster data";
+ license = licenses.bsd3;
+ homepage = https://rasterio.readthedocs.io/en/latest/;
+ maintainers = with maintainers; [ mredaelli ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ratelimiter/default.nix b/nixpkgs/pkgs/development/python-modules/ratelimiter/default.nix
new file mode 100644
index 00000000000..375b6639368
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ratelimiter/default.nix
@@ -0,0 +1,35 @@
+{
+ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, glibcLocales
+}:
+
+buildPythonPackage rec {
+ pname = "ratelimiter";
+ version = "1.2.0.post0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5c395dcabdbbde2e5178ef3f89b568a3066454a6ddc223b76473dac22f89b4f7";
+ };
+
+ LC_ALL = "en_US.utf-8";
+
+ nativeBuildInputs = [ glibcLocales ];
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ py.test tests
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/RazerM/ratelimiter;
+ license = licenses.asl20;
+ description = "Simple python rate limiting object";
+ maintainers = with maintainers; [ helkafen ];
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/raven/default.nix b/nixpkgs/pkgs/development/python-modules/raven/default.nix
new file mode 100644
index 00000000000..9ea04fa8bdf
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/raven/default.nix
@@ -0,0 +1,28 @@
+{ lib, buildPythonPackage, fetchFromGitHub, isPy3k
+, contextlib2, blinker
+}:
+
+buildPythonPackage rec {
+ pname = "raven";
+ version = "6.10.0";
+
+ src = fetchFromGitHub {
+ owner = "getsentry";
+ repo = "raven-python";
+ rev = version;
+ sha256 = "16x9ldl8cy7flw5kh7qmgbmflqyf210j3q6ac2lw61sgwajsnvw8";
+ };
+
+ # way too many dependencies to run tests
+ # see https://github.com/getsentry/raven-python/blob/master/setup.py
+ doCheck = false;
+
+ propagatedBuildInputs = [ blinker ] ++ lib.optionals (!isPy3k) [ contextlib2 ];
+
+ meta = {
+ description = "A Python client for Sentry (getsentry.com)";
+ homepage = https://github.com/getsentry/raven-python;
+ license = [ lib.licenses.bsd3 ];
+ maintainers = with lib.maintainers; [ primeos ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rawkit/default.nix b/nixpkgs/pkgs/development/python-modules/rawkit/default.nix
new file mode 100644
index 00000000000..6bee2bf1b0a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rawkit/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchPypi, buildPythonPackage, fetchpatch
+, libraw
+, pytest, mock }:
+
+buildPythonPackage rec {
+ pname = "rawkit";
+ version = "0.6.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0vrhrpr70i61y5q5ysk341x1539ff1q1k82g59zq69lv16s0f76s";
+ };
+
+ patches = [
+ # Python 3.7 compatibility
+ (fetchpatch {
+ url = https://github.com/photoshell/rawkit/commit/663e90afa835d398aedd782c87b8cd0bff64bc9f.patch;
+ sha256 = "1cdw0x9bgk0b5jnpjnmd8jpbaryarr3cjqizq44366qh3l0jycxy";
+ })
+ ];
+
+ buildInputs = [ libraw ];
+
+ checkInputs = [ pytest mock ];
+
+ checkPhase = ''
+ py.test tests
+ '';
+
+ meta = with stdenv.lib; {
+ description = "CTypes based LibRaw bindings for Python";
+ homepage = https://rawkit.readthedocs.org/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ jfrankenau ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rbtools/default.nix b/nixpkgs/pkgs/development/python-modules/rbtools/default.nix
new file mode 100644
index 00000000000..2bd42172917
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rbtools/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, nose
+, six
+, isPy3k
+}:
+
+buildPythonPackage {
+ pname = "rbtools";
+ version = "0.7.2";
+ disabled = isPy3k;
+
+ src = fetchurl {
+ url = "http://downloads.reviewboard.org/releases/RBTools/0.7/RBTools-0.7.2.tar.gz";
+ sha256 = "1ng8l8cx81cz23ls7fq9wz4ijs0zbbaqh4kj0mj6plzcqcf8na4i";
+ };
+
+ checkInputs = [ nose ];
+ propagatedBuildInputs = [ six ];
+
+ checkPhase = "LC_ALL=C nosetests";
+
+ meta = with stdenv.lib; {
+ homepage = https://www.reviewboard.org/docs/rbtools/dev/;
+ description = "RBTools is a set of command line tools for working with Review Board and RBCommons";
+ license = licenses.mit;
+ maintainers = with maintainers; [ domenkozar ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rcssmin/default.nix b/nixpkgs/pkgs/development/python-modules/rcssmin/default.nix
new file mode 100644
index 00000000000..53a8e046b55
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rcssmin/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+buildPythonPackage rec {
+ pname = "rcssmin";
+ version = "1.0.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0w42l4dhxghcz7pj3q7hkxp015mvb8z2cq9sfxbl31npsfavd1ya";
+ };
+
+ # The package does not ship tests, and the setup machinary confuses
+ # tests auto-discovery
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = http://opensource.perlig.de/rcssmin/;
+ license = licenses.asl20;
+ description = "CSS minifier written in pure python";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rdflib/default.nix b/nixpkgs/pkgs/development/python-modules/rdflib/default.nix
new file mode 100644
index 00000000000..badaf9b3787
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rdflib/default.nix
@@ -0,0 +1,36 @@
+{ buildPythonPackage
+, fetchPypi
+, isodate
+, html5lib
+, SPARQLWrapper
+, networkx
+, nose
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "rdflib";
+ version = "4.2.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0398c714znnhaa2x7v51b269hk20iz073knq2mvmqp2ma92z27fs";
+ };
+
+ propagatedBuildInputs = [isodate html5lib SPARQLWrapper ];
+
+ checkInputs = [ networkx nose ];
+
+ # Python 2 syntax
+ # Failing doctest
+ doCheck = false;
+
+ checkPhase = ''
+ ${python.interpreter} run_tests.py
+ '';
+
+ meta = {
+ description = "A Python library for working with RDF, a simple yet powerful language for representing information";
+ homepage = http://www.rdflib.net/;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/readchar/default.nix b/nixpkgs/pkgs/development/python-modules/readchar/default.nix
new file mode 100644
index 00000000000..1ed4539dca0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/readchar/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, flake8, pytest, pytestcov, pexpect }:
+
+buildPythonPackage rec {
+ pname = "readchar";
+ version = "2.0.0";
+
+ # Don't use wheels on PyPI
+ src = fetchFromGitHub {
+ owner = "magmax";
+ repo = "python-${pname}";
+ rev = version;
+ sha256 = "0j1vj4f2j8x5f40rs6h8qplklcxcdbvkkvjpkpmr1xagw05i12bm";
+ };
+
+ nativeBuildInputs = [ flake8 ];
+ checkInputs = [ pytest pytestcov pexpect ];
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/magmax/python-readchar";
+ description = "Python library to read characters and key strokes";
+ license = licenses.mit;
+ maintainers = [ maintainers.mmahut ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/readme/default.nix b/nixpkgs/pkgs/development/python-modules/readme/default.nix
new file mode 100644
index 00000000000..057283babe7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/readme/default.nix
@@ -0,0 +1,40 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, readme_renderer
+}:
+
+buildPythonPackage rec {
+ pname = "readme";
+ version = "0.7.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "32fbe1538a437da160fa4e4477270bfdcd8876e2e364d0d12898302644496231";
+ };
+
+ checkInputs = [
+ pytest
+ ];
+
+ propagatedBuildInputs = [
+ readme_renderer
+ ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ # tests are not included with pypi release
+ # package is not readme_renderer
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Readme is a library for rendering readme descriptions for Warehouse";
+ homepage = "https://github.com/pypa/readme";
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/readme_renderer/default.nix b/nixpkgs/pkgs/development/python-modules/readme_renderer/default.nix
new file mode 100644
index 00000000000..df943cfcca4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/readme_renderer/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+, mock
+, cmarkgfm
+, bleach
+, docutils
+, future
+, pygments
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "readme_renderer";
+ version = "24.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0br0562lnvj339f1nwz4nfl4ay49rw05xkqacigzf9wz4mdza5mv";
+ };
+
+ checkInputs = [ pytest mock ];
+
+ propagatedBuildInputs = [
+ bleach cmarkgfm docutils future pygments six
+ ];
+
+ checkPhase = ''
+ # disable one failing test case
+ py.test -k "not test_invalid_link"
+ '';
+
+ meta = {
+ description = "readme_renderer is a library for rendering readme descriptions for Warehouse";
+ homepage = https://github.com/pypa/readme_renderer;
+ license = lib.licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/readthedocs-sphinx-ext/default.nix b/nixpkgs/pkgs/development/python-modules/readthedocs-sphinx-ext/default.nix
new file mode 100644
index 00000000000..baf26c2437b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/readthedocs-sphinx-ext/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, requests
+, pytest
+, mock
+, sphinx
+}:
+
+buildPythonPackage rec {
+ pname = "readthedocs-sphinx-ext";
+ version = "0.5.17";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "21097cbb37c9a0590e2cb444b55bd87302fc8f69640fa2d4f2d113e98e9558ff";
+ };
+
+ propagatedBuildInputs = [ requests ];
+
+ checkInputs = [ pytest mock sphinx ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with lib; {
+ description = "Sphinx extension for Read the Docs overrides";
+ homepage = https://github.com/rtfd/readthedocs-sphinx-ext;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rebulk/default.nix b/nixpkgs/pkgs/development/python-modules/rebulk/default.nix
new file mode 100644
index 00000000000..7042b42f7ed
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rebulk/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytest, pytestrunner, six, regex}:
+
+buildPythonPackage rec {
+ pname = "rebulk";
+ version = "1.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "11164sy9vwphf7iw60n4hmns2q6anazrkhc15lwi6sb2qmkjc541";
+ };
+
+ # Some kind of trickery with imports that doesn't work.
+ doCheck = false;
+ buildInputs = [ pytest pytestrunner ];
+ propagatedBuildInputs = [ six regex ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/Toilal/rebulk/;
+ license = licenses.mit;
+ description = "Advanced string matching from simple patterns";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/recaptcha_client/default.nix b/nixpkgs/pkgs/development/python-modules/recaptcha_client/default.nix
new file mode 100644
index 00000000000..09090540a5b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/recaptcha_client/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pythonAtLeast
+}:
+
+buildPythonPackage rec {
+ pname = "recaptcha-client";
+ version = "1.0.6";
+ disabled = pythonAtLeast "3.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "28c6853c1d13d365b7dc71a6b05e5ffb56471f70a850de318af50d3d7c0dea2f";
+ };
+
+ meta = with stdenv.lib; {
+ description = "A CAPTCHA for Python using the reCAPTCHA service";
+ homepage = http://recaptcha.net/;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/recommonmark/default.nix b/nixpkgs/pkgs/development/python-modules/recommonmark/default.nix
new file mode 100644
index 00000000000..f6965fd6cd9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/recommonmark/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytest
+, CommonMark
+, docutils
+, sphinx
+}:
+
+buildPythonPackage rec {
+ pname = "recommonmark";
+ version = "0.5.0";
+
+ # PyPI tarball is missing some test files: https://github.com/rtfd/recommonmark/pull/128
+ src = fetchFromGitHub {
+ owner = "rtfd";
+ repo = pname;
+ rev = version;
+ sha256 = "04bjqx2hczmg7rnj2rpsjk7h24diwk83s6fhgrxk00k40w2bpz5j";
+ };
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ CommonMark docutils sphinx ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = {
+ description = "A docutils-compatibility bridge to CommonMark";
+ homepage = https://github.com/rtfd/recommonmark;
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ fridh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/recursive-pth-loader/default.nix b/nixpkgs/pkgs/development/python-modules/recursive-pth-loader/default.nix
new file mode 100644
index 00000000000..c49f891ec1d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/recursive-pth-loader/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, python }:
+
+stdenv.mkDerivation {
+ pname = "python-recursive-pth-loader";
+ version = "1.0";
+
+ dontUnpack = true;
+
+ buildInputs = [ python ];
+
+ patchPhase = "cat ${./sitecustomize.py} > sitecustomize.py";
+
+ buildPhase = "${python}/bin/${python.executable} -m compileall .";
+
+ installPhase =
+ ''
+ dst=$out/lib/${python.libPrefix}/site-packages
+ mkdir -p $dst
+ cp sitecustomize.* $dst/
+ '';
+
+ meta = {
+ description = "Enable recursive processing of pth files anywhere in sys.path";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/recursive-pth-loader/sitecustomize.py b/nixpkgs/pkgs/development/python-modules/recursive-pth-loader/sitecustomize.py
new file mode 100644
index 00000000000..057e779803c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/recursive-pth-loader/sitecustomize.py
@@ -0,0 +1,46 @@
+"""Recursively load pth files in site-packages of sys.path
+
+- iterate over sys.path
+- check for pth in dirs that end in site-packages
+- ignore import statements in pth files
+- add dirs listed in pth files right after current sys.path element,
+ they will be processed in next iteration
+"""
+
+import os
+import site
+import sys
+
+
+for path_idx, sitedir in enumerate(sys.path):
+ # ignore non-site-packages
+ if not sitedir.endswith('site-packages'):
+ continue
+
+ # find pth files
+ try:
+ names = os.listdir(sitedir)
+ except os.error:
+ continue
+ dotpth = os.extsep + "pth"
+ pths = [name for name in names if name.endswith(dotpth)]
+
+ for pth in pths:
+ fullname = os.path.join(sitedir, pth)
+ try:
+ f = open(fullname, "rU")
+ except IOError:
+ continue
+
+ with f:
+ for n, line in enumerate(f):
+ if line.startswith("#"):
+ continue
+
+ if line.startswith(("import ", "import\t")):
+ continue
+
+ line = line.rstrip()
+ dir, dircase = site.makepath(sitedir, line)
+ if not dircase in sys.path:
+ sys.path.insert(path_idx+1, dir)
diff --git a/nixpkgs/pkgs/development/python-modules/redis/default.nix b/nixpkgs/pkgs/development/python-modules/redis/default.nix
new file mode 100644
index 00000000000..62a1177054b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/redis/default.nix
@@ -0,0 +1,20 @@
+{ lib, fetchPypi, buildPythonPackage }:
+
+buildPythonPackage rec {
+ pname = "redis";
+ version = "3.3.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "18n6k113izfqsm8yysrw1a5ba6kv0vsgfz6ab5n0k6k65yvr690z";
+ };
+
+ # tests require a running redis
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Python client for Redis key-value store";
+ homepage = "https://pypi.python.org/pypi/redis/";
+ license = with licenses; [ mit ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rednose/default.nix b/nixpkgs/pkgs/development/python-modules/rednose/default.nix
new file mode 100644
index 00000000000..fa142cf8723
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rednose/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy27, nose, six, colorama, termstyle }:
+
+buildPythonPackage rec {
+ pname = "rednose";
+ version = "1.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6da77917788be277b70259edc0bb92fc6f28fe268b765b4ea88206cc3543a3e1";
+ };
+
+ prePatch = ''
+ substituteInPlace setup.py --replace "six==1.10.0" "six>=1.10.0"
+ '';
+
+ # Do not test on Python 2 because the tests suite gets stuck
+ # https://github.com/NixOS/nixpkgs/issues/60786
+ doCheck = !(isPy27);
+
+ checkInputs = [ six ];
+ propagatedBuildInputs = [ nose colorama termstyle ];
+
+ meta = with stdenv.lib; {
+ description = "A python nose plugin adding color to console results";
+ homepage = https://github.com/JBKahn/rednose;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/regex/default.nix b/nixpkgs/pkgs/development/python-modules/regex/default.nix
new file mode 100644
index 00000000000..bc16fffcef5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/regex/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, python
+}:
+
+
+buildPythonPackage rec {
+ pname = "regex";
+ version = "2019.02.21";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "587bd4cad11c7294f89799c45778abca271d7c6668a0e85c41a6dbfa8096f9bb";
+ };
+
+ postCheck = ''
+ echo "We now run tests ourselves, since the setuptools installer doesn't."
+ ${python.interpreter} -c 'import test_regex; test_regex.test_main();'
+ '';
+
+ # No tests in archive
+ doCheck = false;
+
+ meta = {
+ description = "Alternative regular expression module, to replace re";
+ homepage = https://bitbucket.org/mrabarnett/mrab-regex;
+ license = lib.licenses.psfl;
+ maintainers = with lib.maintainers; [ abbradar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/regional/default.nix b/nixpkgs/pkgs/development/python-modules/regional/default.nix
new file mode 100644
index 00000000000..5f2aee1b42a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/regional/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, numpy
+, scipy
+, matplotlib
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "regional";
+ version = "1.1.2";
+
+ src = fetchFromGitHub {
+ owner = "freeman-lab";
+ repo = pname;
+ rev = "e3a29c58982e5cd3d5700131ac96e5e0b84fb981"; # no tags in repo
+ sha256 = "03qgm35q9sa5cy0kkw4bj60zfylw0isfzb96nlhdfrsigzs2zkxv";
+ };
+
+ propagatedBuildInputs = [
+ numpy
+ scipy
+ matplotlib
+ ];
+
+ checkInputs = [
+ pytest
+ ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with lib; {
+ description = "Simple manipualtion and display of spatial regions";
+ homepage = https://github.com/freeman-lab/regional;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/reikna/default.nix b/nixpkgs/pkgs/development/python-modules/reikna/default.nix
new file mode 100644
index 00000000000..6a7cbdcc5af
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/reikna/default.nix
@@ -0,0 +1,44 @@
+{ stdenv
+, fetchPypi
+, buildPythonPackage
+, sphinx
+, pytestcov
+, pytest
+, Mako
+, numpy
+, funcsigs
+, withCuda ? false, pycuda
+, withOpenCL ? true, pyopencl
+}:
+
+buildPythonPackage rec {
+ pname = "reikna";
+ version = "0.7.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "52bbce24fa1fd7bb950d38ce9b60f497dd00ac6b26688d80ab9bce709f063e71";
+ };
+
+ checkInputs = [ sphinx pytestcov pytest ];
+
+ propagatedBuildInputs = [ Mako numpy funcsigs ]
+ ++ stdenv.lib.optional withCuda pycuda
+ ++ stdenv.lib.optional withOpenCL pyopencl;
+
+ checkPhase = ''
+ py.test
+ '';
+
+ # Requires device
+ doCheck = false;
+
+ meta = {
+ description = "GPGPU algorithms for PyCUDA and PyOpenCL";
+ homepage = https://github.com/fjarri/reikna;
+ license = stdenv.lib.licenses.mit;
+ maintainers = [ stdenv.lib.maintainers.fridh ];
+
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/relatorio/default.nix b/nixpkgs/pkgs/development/python-modules/relatorio/default.nix
new file mode 100644
index 00000000000..13a41d14f02
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/relatorio/default.nix
@@ -0,0 +1,21 @@
+{ lib, fetchPypi, buildPythonPackage, genshi, lxml, python_magic }:
+
+buildPythonPackage rec {
+ pname = "relatorio";
+ version = "0.9.0";
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0q93sl7ppfvjxylgq9m5n4xdgv4af7d69yxd84zszq10vjmpsg6k";
+ };
+ propagatedBuildInputs = [
+ genshi
+ lxml
+ python_magic
+ ];
+ meta = {
+ homepage = http://relatorio.tryton.org/;
+ description = "A templating library able to output odt and pdf files";
+ maintainers = with lib.maintainers; [ johbo ];
+ license = lib.licenses.gpl3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/remotecv/default.nix b/nixpkgs/pkgs/development/python-modules/remotecv/default.nix
new file mode 100644
index 00000000000..a4d1dcc485e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/remotecv/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, 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 stdenv.lib; {
+ description = "OpenCV worker for facial and feature recognition";
+ homepage = https://github.com/thumbor/remotecv/wiki;
+ license = licenses.mit;
+ maintainers = with maintainers; [ jluttine ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/remotecv/install_requires.patch b/nixpkgs/pkgs/development/python-modules/remotecv/install_requires.patch
new file mode 100644
index 00000000000..37203128486
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/remotecv/install_requires.patch
@@ -0,0 +1,16 @@
+diff --git a/setup.py b/setup.py
+index 70f765c..8003cda 100644
+--- a/setup.py
++++ b/setup.py
+@@ -53,9 +53,8 @@ remotecv is an OpenCV worker for facial and feature recognition
+ },
+
+ install_requires=[
+- "argparse>=1.2.1,<1.3.0",
+- "pyres>=1.5,<1.6",
+- "Pillow>=4.3.0,<5.2.0",
++ "pyres>=1.5",
++ "Pillow>=4.3.0",
+ ],
+
+ entry_points={
diff --git a/nixpkgs/pkgs/development/python-modules/rencode/default.nix b/nixpkgs/pkgs/development/python-modules/rencode/default.nix
new file mode 100644
index 00000000000..46f562ee5d6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rencode/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, isPy33
+, fetchgit
+, cython
+}:
+
+buildPythonPackage {
+ pname = "rencode";
+ version = "git20150810";
+ disabled = isPy33;
+
+ src = fetchgit {
+ url = https://github.com/aresch/rencode;
+ rev = "b45e04abdca0dea36e383a8199783269f186c99e";
+ sha256 = "b4bd82852d4220e8a9493d3cfaecbc57b1325708a2d48c0f8acf262edb10dc40";
+ };
+
+ buildInputs = [ cython ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/aresch/rencode;
+ description = "Fast (basic) object serialization similar to bencode";
+ license = licenses.gpl3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/repeated_test/default.nix b/nixpkgs/pkgs/development/python-modules/repeated_test/default.nix
new file mode 100644
index 00000000000..c5c2e43b657
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/repeated_test/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, 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 stdenv.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/nixpkgs/pkgs/development/python-modules/repocheck/default.nix b/nixpkgs/pkgs/development/python-modules/repocheck/default.nix
new file mode 100644
index 00000000000..88437ae9032
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/repocheck/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+}:
+
+buildPythonPackage rec {
+ pname = "repocheck";
+ version = "2015-08-05";
+
+ src = fetchFromGitHub {
+ sha256 = "1jc4v5zy7z7xlfmbfzvyzkyz893f5x2k6kvb3ni3rn2df7jqhc81";
+ rev = "ee48d0e88d3f5814d24a8d1f22d5d83732824688";
+ repo = "repocheck";
+ owner = "kynikos";
+ };
+
+ meta = with stdenv.lib; {
+ inherit (src.meta) homepage;
+ description = "Check the status of code repositories under a root directory";
+ license = licenses.gpl3Plus;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/reportlab/default.nix b/nixpkgs/pkgs/development/python-modules/reportlab/default.nix
new file mode 100644
index 00000000000..eba47a3b2d1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/reportlab/default.nix
@@ -0,0 +1,47 @@
+{ buildPythonPackage
+, fetchPypi
+, freetype
+, pillow
+, glibcLocales
+, python
+, isPyPy
+}:
+
+let
+ ft = freetype.overrideAttrs (oldArgs: { dontDisableStatic = true; });
+in buildPythonPackage rec {
+ pname = "reportlab";
+ version = "3.5.21";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "08e6e63a4502d3a00062ba9ff9669f95577fbdb1a5f8c6cdb1230c5ee295273a";
+ };
+
+ checkInputs = [ glibcLocales ];
+
+ buildInputs = [ ft pillow ];
+
+ postPatch = ''
+ # Remove all the test files that require access to the internet to pass.
+ rm tests/test_lib_utils.py
+ rm tests/test_platypus_general.py
+ rm tests/test_platypus_images.py
+
+ # Remove the tests that require Vera fonts installed
+ rm tests/test_graphics_render.py
+ '';
+
+ checkPhase = ''
+ cd tests
+ LC_ALL="en_US.UTF-8" ${python.interpreter} runAll.py
+ '';
+
+ # See https://bitbucket.org/pypy/compatibility/wiki/reportlab%20toolkit
+ disabled = isPyPy;
+
+ meta = {
+ description = "An Open Source Python library for generating PDFs and graphics";
+ homepage = http://www.reportlab.com/;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/repoze_lru/default.nix b/nixpkgs/pkgs/development/python-modules/repoze_lru/default.nix
new file mode 100644
index 00000000000..ef2a7fb246a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/repoze_lru/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "repoze.lru";
+ version = "0.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0429a75e19380e4ed50c0694e26ac8819b4ea7851ee1fc7583c8572db80aff77";
+ };
+
+ meta = with stdenv.lib; {
+ description = "A tiny LRU cache implementation and decorator";
+ homepage = http://www.repoze.org/;
+ license = licenses.bsd0;
+ maintainers = with maintainers; [ domenkozar ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/repoze_sphinx_autointerface/default.nix b/nixpkgs/pkgs/development/python-modules/repoze_sphinx_autointerface/default.nix
new file mode 100644
index 00000000000..9e144340fb3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/repoze_sphinx_autointerface/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, zope_interface
+, sphinx
+}:
+
+buildPythonPackage rec {
+ pname = "repoze.sphinx.autointerface";
+ version = "0.8";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8ef0383276ab722efb1e4a6523726262058dfd82615ccf7e5004aee3fe8ecc23";
+ };
+
+ propagatedBuildInputs = [ zope_interface sphinx ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/repoze/repoze.sphinx.autointerface;
+ description = "Auto-generate Sphinx API docs from Zope interfaces";
+ license = licenses.bsd0;
+ maintainers = with maintainers; [ domenkozar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/repoze_who/default.nix b/nixpkgs/pkgs/development/python-modules/repoze_who/default.nix
new file mode 100644
index 00000000000..20001ff7ef8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/repoze_who/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, zope_interface
+, webob
+}:
+
+buildPythonPackage rec {
+ pname = "repoze.who";
+ version = "2.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b95dadc1242acc55950115a629cfb1352669774b46d22def51400ca683efea28";
+ };
+
+ propagatedBuildInputs = [ zope_interface webob ];
+
+ meta = with stdenv.lib; {
+ description = "WSGI Authentication Middleware / API";
+ homepage = "http://www.repoze.org";
+ license = licenses.bsd0;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/reproject/default.nix b/nixpkgs/pkgs/development/python-modules/reproject/default.nix
new file mode 100644
index 00000000000..f84508fe53c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/reproject/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, numpy
+, astropy
+, astropy-healpix
+, astropy-helpers
+, scipy
+}:
+
+buildPythonPackage rec {
+ pname = "reproject";
+ version = "0.4";
+
+ doCheck = false; # tests require pytest-astropy
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "dbbb18a8b211292c7ce61121b8538fc279540337be1c05cabc7570c5aca6d734";
+ };
+
+ propagatedBuildInputs = [ numpy astropy astropy-healpix astropy-helpers scipy ];
+
+ # Disable automatic update of the astropy-helper module
+ postPatch = ''
+ substituteInPlace setup.cfg --replace "auto_use = True" "auto_use = False"
+ '';
+
+ meta = with lib; {
+ description = "Reproject astronomical images";
+ homepage = https://reproject.readthedocs.io;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.smaret ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/requests-aws4auth/default.nix b/nixpkgs/pkgs/development/python-modules/requests-aws4auth/default.nix
new file mode 100644
index 00000000000..46d1dbdbbd6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/requests-aws4auth/default.nix
@@ -0,0 +1,28 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k, requests }:
+with lib;
+buildPythonPackage rec {
+ pname = "requests-aws4auth";
+ version = "0.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0g52a1pm53aqkc9qb5q1m918c1qy6q47c1qz63p5ilynfbs3m5y9";
+ };
+
+ postPatch = optionalString isPy3k ''
+ sed "s/path_encoding_style/'path_encoding_style'/" \
+ -i requests_aws4auth/service_parameters.py
+ '';
+
+ propagatedBuildInputs = [ requests ];
+
+ # The test fail on Python >= 3 because of module import errors.
+ doCheck = !isPy3k;
+
+ meta = {
+ description = "Amazon Web Services version 4 authentication for the Python Requests library.";
+ homepage = https://github.com/sam-washington/requests-aws4auth;
+ license = licenses.mit;
+ maintainers = [ maintainers.basvandijk ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/requests-cache/default.nix b/nixpkgs/pkgs/development/python-modules/requests-cache/default.nix
new file mode 100644
index 00000000000..c8886b75d64
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/requests-cache/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, mock, requests, six, urllib3 }:
+
+buildPythonPackage rec {
+ pname = "requests-cache";
+ version = "0.4.13";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "18jpyivnq5pjbkymk3i473rihpj2bgikafpha7xvr6w736hiqmpy";
+ };
+
+ buildInputs = [ mock ];
+ propagatedBuildInputs = [ requests six urllib3 ];
+
+ meta = with stdenv.lib; {
+ description = "Persistent cache for requests library";
+ homepage = https://pypi.python.org/pypi/requests-cache;
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/requests-file/default.nix b/nixpkgs/pkgs/development/python-modules/requests-file/default.nix
new file mode 100644
index 00000000000..fac22217651
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/requests-file/default.nix
@@ -0,0 +1,20 @@
+{ lib, fetchPypi, buildPythonPackage, requests, six }:
+
+buildPythonPackage rec {
+ pname = "requests-file";
+ version = "1.4.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1yp2jaxg3v86pia0q512dg3hz6s9y5vzdivsgrba1kds05ial14g";
+ };
+
+ propagatedBuildInputs = [ requests six ];
+
+ meta = {
+ homepage = https://github.com/dashea/requests-file;
+ description = "Transport adapter for fetching file:// URLs with the requests python library";
+ license = lib.licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/requests-kerberos/default.nix b/nixpkgs/pkgs/development/python-modules/requests-kerberos/default.nix
new file mode 100644
index 00000000000..ab0758a84e1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/requests-kerberos/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, buildPythonPackage, requests, pykerberos, mock }:
+
+buildPythonPackage rec {
+ pname = "requests-kerberos";
+ version = "0.12.0";
+
+ # tests are not present in the PyPI version
+ src = fetchFromGitHub {
+ owner = "requests";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "1qw96aw84nljh9cip372mfv50p1yyirfgigavvavgpc3c5g278s6";
+ };
+
+ checkInputs = [ mock ];
+ propagatedBuildInputs = [ requests pykerberos ];
+
+ # they have a setup.py which mentions a test suite that doesn't exist...
+ patches = [ ./fix_setup.patch ];
+
+ meta = with stdenv.lib; {
+ description = "An authentication handler for using Kerberos with Python Requests.";
+ homepage = "https://github.com/requests/requests-kerberos";
+ license = licenses.isc;
+ maintainers = with maintainers; [ catern ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/requests-kerberos/fix_setup.patch b/nixpkgs/pkgs/development/python-modules/requests-kerberos/fix_setup.patch
new file mode 100644
index 00000000000..67cc3a60f77
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/requests-kerberos/fix_setup.patch
@@ -0,0 +1,9 @@
+--- ./setup.py 1980-01-02 00:00:00.000000000 +0000
++++ ./setup.py 1980-01-02 00:00:00.000000000 +0000
+@@ -56,6 +56,5 @@
+ ':sys_platform=="win32"': ['winkerberos>=0.5.0'],
+ ':sys_platform!="win32"': ['pykerberos>=1.1.8,<2.0.0'],
+ },
+- test_suite='test_requests_kerberos',
+ tests_require=['mock'],
+ )
diff --git a/nixpkgs/pkgs/development/python-modules/requests-mock/default.nix b/nixpkgs/pkgs/development/python-modules/requests-mock/default.nix
new file mode 100644
index 00000000000..9728639e0ef
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/requests-mock/default.nix
@@ -0,0 +1,33 @@
+{ lib, buildPythonPackage, fetchPypi, python
+, mock
+, purl
+, requests
+, six
+, testrepository
+, testtools
+}:
+
+buildPythonPackage rec {
+ pname = "requests-mock";
+ version = "1.7.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0ij6ir5cy0gpy5xw4sykxz320ndi26np6flx9yg9mimkv0nl1lw8";
+ };
+
+ patchPhase = ''
+ sed -i 's@python@${python.interpreter}@' .testr.conf
+ '';
+
+ propagatedBuildInputs = [ requests six ];
+
+ checkInputs = [ mock purl testrepository testtools ];
+
+ meta = with lib; {
+ description = "Mock out responses from the requests package";
+ homepage = "https://requests-mock.readthedocs.io";
+ license = licenses.asl20;
+ maintainers = [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/requests-oauthlib/default.nix b/nixpkgs/pkgs/development/python-modules/requests-oauthlib/default.nix
new file mode 100644
index 00000000000..be37a48f00c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/requests-oauthlib/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, oauthlib, requests }:
+
+buildPythonPackage rec {
+ version = "1.2.0";
+ pname = "requests-oauthlib";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "bd6533330e8748e94bf0b214775fed487d309b8b8fe823dc45641ebcd9a32f57";
+ };
+
+ doCheck = false; # Internet tests fail when building in chroot
+ propagatedBuildInputs = [ oauthlib requests ];
+
+ meta = with stdenv.lib; {
+ description = "OAuthlib authentication support for Requests";
+ homepage = https://github.com/requests/requests-oauthlib;
+ maintainers = with maintainers; [ prikhi ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/requests-toolbelt/default.nix b/nixpkgs/pkgs/development/python-modules/requests-toolbelt/default.nix
new file mode 100644
index 00000000000..8dba9a91226
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/requests-toolbelt/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, requests
+, betamax
+, mock
+, pytest
+, pyopenssl
+}:
+
+buildPythonPackage rec {
+ pname = "requests-toolbelt";
+ version = "0.9.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0";
+ };
+
+ checkInputs = [ pyopenssl betamax mock pytest ];
+ propagatedBuildInputs = [ requests ];
+
+ 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"
+ '';
+
+ meta = {
+ description = "A toolbelt of useful classes and functions to be used with python-requests";
+ homepage = http://toolbelt.rtfd.org;
+ license = lib.licenses.asl20;
+ maintainers = with lib.maintainers; [ matthiasbeyer ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/requests-unixsocket/default.nix b/nixpkgs/pkgs/development/python-modules/requests-unixsocket/default.nix
new file mode 100644
index 00000000000..4eb3a33926f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/requests-unixsocket/default.nix
@@ -0,0 +1,28 @@
+{ lib, buildPythonPackage, fetchPypi
+, pbr, requests
+, pytest, pytestpep8, waitress }:
+
+buildPythonPackage rec {
+ pname = "requests-unixsocket";
+ version = "0.1.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0k19knydh0fzd7w12lfy18arl1ndwa0zln33vsb37yv1iw9w06x9";
+ };
+
+ nativeBuildInputs = [ pbr ];
+ propagatedBuildInputs = [ requests ];
+
+ checkInputs = [ pytest pytestpep8 waitress ];
+ checkPhase = ''
+ py.test
+ '';
+
+ 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 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/requests/default.nix b/nixpkgs/pkgs/development/python-modules/requests/default.nix
new file mode 100644
index 00000000000..260c0329576
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/requests/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchPypi, buildPythonPackage
+, urllib3, idna, chardet, certifi
+, pytest }:
+
+buildPythonPackage rec {
+ pname = "requests";
+ version = "2.22.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4";
+ };
+
+ nativeBuildInputs = [ pytest ];
+ propagatedBuildInputs = [ urllib3 idna chardet certifi ];
+ # sadly, tests require networking
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "An Apache2 licensed HTTP library, written in Python, for human beings";
+ homepage = http://docs.python-requests.org/en/latest/;
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/requests_download/default.nix b/nixpkgs/pkgs/development/python-modules/requests_download/default.nix
new file mode 100644
index 00000000000..8062834e180
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/requests_download/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, requests
+}:
+
+buildPythonPackage rec {
+ pname = "requests_download";
+ version = "0.1.2";
+
+ format = "wheel";
+
+ #src = pkgs.fetchurl {
+ # url = https://files.pythonhosted.org/packages/60/af/10f899f0574a81cbc511124c08d7c7dc46c20d4f956a6a3c793ad4330bb4/requests_download-0.1.2-py2.py3-none-any.whl;
+ # sha256 = "1ballx1hljpdpyvqzqn79m0dc21z2smrnxk2ylb6dbpg5crrskcr";
+ #};
+
+ src = fetchPypi {
+ inherit pname version format;
+ sha256 = "1ballx1hljpdpyvqzqn79m0dc21z2smrnxk2ylb6dbpg5crrskcr";
+ };
+
+ propagatedBuildInputs = [ requests ];
+
+ meta = {
+ description = "Download files using requests and save them to a target path";
+ homepage = https://www.github.com/takluyver/requests_download;
+ license = lib.licenses.mit;
+ maintainers = [ lib.maintainers.fridh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/requests_ntlm/default.nix b/nixpkgs/pkgs/development/python-modules/requests_ntlm/default.nix
new file mode 100644
index 00000000000..12cbae543ce
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/requests_ntlm/default.nix
@@ -0,0 +1,29 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, ntlm-auth
+, requests
+}:
+
+buildPythonPackage rec {
+ pname = "requests_ntlm";
+ version = "1.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "9189c92e8c61ae91402a64b972c4802b2457ce6a799d658256ebf084d5c7eb71";
+ };
+
+ propagatedBuildInputs = [ ntlm-auth requests ];
+
+ # Tests require networking
+ doCheck = false;
+
+ meta = with lib; {
+ description = "HTTP NTLM authentication support for python-requests";
+ homepage = https://github.com/requests/requests-ntlm;
+ license = licenses.isc;
+ maintainers = with maintainers; [ elasticdog ];
+ platforms = platforms.all;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/requestsexceptions/default.nix b/nixpkgs/pkgs/development/python-modules/requestsexceptions/default.nix
new file mode 100644
index 00000000000..55b32095535
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/requestsexceptions/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildPythonPackage, fetchPypi, pbr }:
+
+buildPythonPackage rec {
+ pname = "requestsexceptions";
+ version = "1.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b095cbc77618f066d459a02b137b020c37da9f46d9b057704019c9f77dba3065";
+ };
+
+ propagatedBuildInputs = [ pbr ];
+
+ # upstream hacking package is not required for functional testing
+ patchPhase = ''
+ sed -i '/^hacking/d' test-requirements.txt
+ '';
+
+ meta = with lib; {
+ description = "Import exceptions from potentially bundled packages in requests.";
+ homepage = "https://pypi.python.org/pypi/requestsexceptions";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ makefu ];
+ platforms = platforms.all;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/resampy/default.nix b/nixpkgs/pkgs/development/python-modules/resampy/default.nix
new file mode 100644
index 00000000000..e9e51756d9f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/resampy/default.nix
@@ -0,0 +1,38 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, pytest
+, pytestcov
+, numpy
+, scipy
+, cython
+, numba
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "resampy";
+ version = "0.2.1";
+
+ # No tests in PyPi Archive
+ src = fetchFromGitHub {
+ owner = "bmcfee";
+ repo = pname;
+ rev = version;
+ sha256 = "0a2bxj042y62dimm2i4vglbhpwbybam07mcl67cb6pmfsw9fbqhj";
+ };
+
+ checkInputs = [ pytest pytestcov ];
+ propagatedBuildInputs = [ numpy scipy cython numba six ];
+
+ checkPhase = ''
+ pytest tests
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/bmcfee/resampy;
+ description = "Efficient signal resampling";
+ license = licenses.isc;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/responses/default.nix b/nixpkgs/pkgs/development/python-modules/responses/default.nix
new file mode 100644
index 00000000000..d154499c03b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/responses/default.nix
@@ -0,0 +1,16 @@
+{ buildPythonPackage, fetchPypi
+, cookies, mock, requests, six }:
+
+buildPythonPackage rec {
+ pname = "responses";
+ version = "0.10.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "502d9c0c8008439cfcdef7e251f507fcfdd503b56e8c0c87c3c3e3393953f790";
+ };
+
+ propagatedBuildInputs = [ cookies mock requests six ];
+
+ doCheck = false;
+}
diff --git a/nixpkgs/pkgs/development/python-modules/restructuredtext_lint/default.nix b/nixpkgs/pkgs/development/python-modules/restructuredtext_lint/default.nix
new file mode 100644
index 00000000000..340c558b7a4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/restructuredtext_lint/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, docutils
+, nose
+, testtools
+}:
+
+buildPythonPackage rec {
+ pname = "restructuredtext_lint";
+ version = "1.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "97b3da356d5b3a8514d8f1f9098febd8b41463bed6a1d9f126cf0a048b6fd908";
+ };
+
+ checkInputs = [ nose testtools ];
+ propagatedBuildInputs = [ docutils ];
+
+ checkPhase = ''
+ nosetests --nocapture
+ '';
+
+ meta = {
+ description = "reStructuredText linter";
+ homepage = https://github.com/twolfson/restructuredtext-lint;
+ license = lib.licenses.unlicense;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/restview/default.nix b/nixpkgs/pkgs/development/python-modules/restview/default.nix
new file mode 100644
index 00000000000..a6b22220da3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/restview/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, fetchpatch
+, docutils
+, readme_renderer
+, pygments
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "restview";
+ version = "2.9.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "de87c84f19526bd4a76505f6d40b51b7bb03ca43b6067c93f82f1c7237ac9e84";
+ };
+
+ propagatedBuildInputs = [ docutils readme_renderer pygments ];
+ checkInputs = [ mock ];
+
+ patches = [
+ # fix tests after readme_renderer update
+ # TODO remove on next update
+ (fetchpatch {
+ url = "https://github.com/mgedmin/restview/commit/541743ded13ae55dea4c437046984a5f13d06e8b.patch";
+ sha256 = "031b1dlqx346bz7afpc011lslnq771lnxb6iy1l2285pph534bci";
+ })
+ ];
+
+ postPatch = ''
+ # dict order breaking tests
+ sed -i 's@<a href="http://www.example.com" rel="nofollow">@...@' src/restview/tests.py
+ '';
+
+ meta = {
+ description = "ReStructuredText viewer";
+ homepage = https://mg.pov.lt/restview/;
+ license = lib.licenses.gpl2;
+ maintainers = with lib.maintainers; [ koral ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rethinkdb/default.nix b/nixpkgs/pkgs/development/python-modules/rethinkdb/default.nix
new file mode 100644
index 00000000000..f6d816d37c0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rethinkdb/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "rethinkdb";
+ version = "2.3.0.post6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "05qwkmq6kn437ywyjs02jxbry720gw39q4z4jdb0cnbbi76lwddm";
+ };
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Python driver library for the RethinkDB database server";
+ homepage = "https://pypi.python.org/pypi/rethinkdb";
+ license = licenses.agpl3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/retry/default.nix b/nixpkgs/pkgs/development/python-modules/retry/default.nix
new file mode 100644
index 00000000000..a4743dcbfe4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/retry/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pbr
+, decorator
+, py
+, mock
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "retry";
+ version = "0.9.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f8bfa8b99b69c4506d6f5bd3b0aabf77f98cdb17f3c9fc3f5ca820033336fba4";
+ };
+
+ nativeBuildInputs = [
+ pbr
+ ];
+
+ propagatedBuildInputs = [
+ decorator
+ py
+ ];
+
+ checkInputs = [
+ mock
+ pytest
+ ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with lib; {
+ description = "Easy to use retry decorator";
+ homepage = https://github.com/invl/retry;
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/retry_decorator/default.nix b/nixpkgs/pkgs/development/python-modules/retry_decorator/default.nix
new file mode 100644
index 00000000000..496705acbc4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/retry_decorator/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "retry_decorator";
+ version = "1.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b7723b83730a09a5a884f2d1c422c9556d20324b7a0f5b129ad94fd07baba36d";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/pnpnpn/retry-decorator;
+ description = "Retry Decorator for python functions";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/retrying/default.nix b/nixpkgs/pkgs/development/python-modules/retrying/default.nix
new file mode 100644
index 00000000000..9074634e9b6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/retrying/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "retrying";
+ version = "1.3.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0fwp86xv0rvkncjdvy2mwcvbglw4w9k0fva25i7zx8kd19b3kh08";
+ };
+
+ propagatedBuildInputs = [ six ];
+
+ # doesn't ship tests in tarball
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/rholder/retrying;
+ description = "General-purpose retrying library";
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rfc-bibtex/default.nix b/nixpkgs/pkgs/development/python-modules/rfc-bibtex/default.nix
new file mode 100644
index 00000000000..a1626d6b65c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rfc-bibtex/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonApplication, fetchPypi, isPy3k }:
+
+buildPythonApplication rec {
+ pname = "rfc-bibtex";
+ version = "0.2.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1p8xjgq4rig1jgqy5jqh34mbifxgxsyyxh8sizwz2wyixf8by8lq";
+ };
+
+ disabled = !isPy3k;
+
+ meta = with stdenv.lib; {
+ homepage = ttps://github.com/iluxonchik/rfc-bibtex/;
+ description = "Generate Bibtex entries for IETF RFCs and Internet-Drafts";
+ license = licenses.mit;
+ maintainers = with maintainers; [ teto ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rfc3986/default.nix b/nixpkgs/pkgs/development/python-modules/rfc3986/default.nix
new file mode 100644
index 00000000000..eda1be2c110
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rfc3986/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, fetchPypi,
+ pytest }:
+
+buildPythonPackage rec {
+ pname = "rfc3986";
+ version = "1.3.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0344d0bd428126ce554e7ca2b61787b6a28d2bbd19fc70ed2dd85efe31176405";
+ };
+
+ checkInputs = [ pytest ];
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://rfc3986.readthedocs.org;
+ license = licenses.asl20;
+ description = "Validating URI References per RFC 3986";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rfc3987/default.nix b/nixpkgs/pkgs/development/python-modules/rfc3987/default.nix
new file mode 100644
index 00000000000..6488dfdd8ce
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rfc3987/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "rfc3987";
+ version = "1.3.8";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d3c4d257a560d544e9826b38bc81db676890c79ab9d7ac92b39c7a253d5ca733";
+ };
+
+ doCheck = false;
+ meta = with stdenv.lib; {
+ homepage = "https://pypi.python.org/pypi/rfc3987";
+ license = licenses.gpl3Plus;
+ description = "Parsing and validation of URIs (RFC 3986) and IRIs (RFC 3987)";
+ maintainers = with maintainers; [ vanschelven ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rfc6555/default.nix b/nixpkgs/pkgs/development/python-modules/rfc6555/default.nix
new file mode 100644
index 00000000000..0bd7b0ca686
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rfc6555/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, buildPythonPackage, fetchPypi, pythonPackages }:
+
+buildPythonPackage rec {
+ pname = "rfc6555";
+ version = "0.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "05sjrd6jc0sdvx0z7d3llk82rx366jlmc7ijam0nalsv66hbn70r";
+ };
+
+ propagatedBuildInputs = with pythonPackages; [ selectors2 ];
+
+ checkInputs = with pythonPackages; [ mock pytest ];
+ # disabling tests that require a functional DNS IPv{4,6} stack to pass.
+ patches = [ ./disable_network_tests.patch ];
+ # default doCheck = true; is not enough, apparently
+ postCheck = ''
+ py.test tests/
+ '';
+
+ meta = {
+ description = "Python implementation of the Happy Eyeballs Algorithm";
+ homepage = "https://pypi.org/project/rfc6555";
+ license = stdenv.lib.licenses.asl20;
+ maintainers = with stdenv.lib.maintainers; [ endocrimes ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rfc6555/disable_network_tests.patch b/nixpkgs/pkgs/development/python-modules/rfc6555/disable_network_tests.patch
new file mode 100644
index 00000000000..dc59111ac43
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rfc6555/disable_network_tests.patch
@@ -0,0 +1,31 @@
+diff --git a/tests/test_create_connection.py b/tests/test_create_connection.py
+index fe38026..cdb26b4 100644
+--- a/tests/test_create_connection.py
++++ b/tests/test_create_connection.py
+@@ -6,10 +6,12 @@ from .test_utils import requires_network
+
+
+ class _BasicCreateConnectionTests(object):
++
+ @requires_network
+ def test_create_connection_google(self):
+ sock = rfc6555.create_connection(('www.google.com', 80))
+
++ @requires_network
+ @pytest.mark.parametrize('timeout', [None, 5.0])
+ def test_create_connection_has_proper_timeout(self, timeout):
+ sock = rfc6555.create_connection(('www.google.com', 80), timeout=timeout)
+diff --git a/tests/test_ipv6.py b/tests/test_ipv6.py
+index 3ee8564..f0db28e 100644
+--- a/tests/test_ipv6.py
++++ b/tests/test_ipv6.py
+@@ -2,7 +2,9 @@ import socket
+ import mock
+ import rfc6555
+
++from .test_utils import requires_network
+
++@requires_network
+ def test_ipv6_available():
+ assert rfc6555._detect_ipv6()
+
diff --git a/nixpkgs/pkgs/development/python-modules/rfc7464/default.nix b/nixpkgs/pkgs/development/python-modules/rfc7464/default.nix
new file mode 100644
index 00000000000..60a5308d718
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rfc7464/default.nix
@@ -0,0 +1,19 @@
+{ buildPythonPackage, fetchPypi, lib }:
+
+buildPythonPackage rec {
+ pname = "rfc7464";
+ version = "17.7.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1hcn6h38qplfcmq392cs58r01k16k202bqyap4br02376pr4ik7a";
+ extension = "zip";
+ };
+
+ meta = with lib; {
+ homepage = https://github.com/moshez/rfc7464;
+ description = "RFC 7464 is a proposed standard for streaming JSON documents.";
+ license = [ licenses.mit ];
+ maintainers = with maintainers; [ shlevy ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rhpl/builder.sh b/nixpkgs/pkgs/development/python-modules/rhpl/builder.sh
new file mode 100644
index 00000000000..dc93effe802
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rhpl/builder.sh
@@ -0,0 +1,13 @@
+source $stdenv/setup
+
+rpmextract $src
+tar xfvj rhpl-*.tar.bz2
+rm rhpl-*.tar.bz2
+cd rhpl-*
+incl=$(echo $python/include/python2.*)
+sed -i -e "s@/usr/include/\$(PYTHON)@$incl@" \
+ -e "s@PYTHONLIBDIR = /usr/\$(LIBDIR)/\$(PYTHON)/site-packages@PYTHONLIBDIR = $(toPythonPath $out)@" Makefile.inc
+sed -i -e "s@/usr/bin/install@install@g" \
+ -e "s@\$(DESTDIR)/usr/share/locale@$out/share/locale@" po/Makefile
+make PREFIX=$out
+make PREFIX=$out install
diff --git a/nixpkgs/pkgs/development/python-modules/rhpl/default.nix b/nixpkgs/pkgs/development/python-modules/rhpl/default.nix
new file mode 100644
index 00000000000..577c21d6e0b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rhpl/default.nix
@@ -0,0 +1,19 @@
+{buildPythonPackage, fetchurl, rpmextract, python, wirelesstools, gettext}:
+
+buildPythonPackage {
+ pname = "rhpl";
+ version = "0.218";
+ format = "other";
+
+ src = fetchurl {
+ url = http://ftp-stud.hs-esslingen.de/pub/Mirrors/archive.fedoraproject.org/fedora/linux/releases/10/Everything/source/SRPMS//rhpl-0.218-1.src.rpm;
+ sha256 = "0c3sc74cjzz5dmpr2gi5naxcc5p2qmzagz7k561xj07njn0ddg16";
+ };
+
+ inherit python;
+
+ builder = ./builder.sh;
+
+ nativeBuildInputs = [ rpmextract gettext ];
+ buildInputs = [ wirelesstools ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rig/default.nix b/nixpkgs/pkgs/development/python-modules/rig/default.nix
new file mode 100644
index 00000000000..d83afd7885f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rig/default.nix
@@ -0,0 +1,29 @@
+{ lib, buildPythonPackage, fetchPypi
+, isPy34, isPy35, isPy27
+, numpy, pytz, six, enum-compat, sentinel
+}:
+
+buildPythonPackage rec {
+ pname = "rig";
+ version = "2.4.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5a3896dbde3f291c5dd34769e7329ef5d5e4da34fee53479bd13dc5e5d540b8a";
+ };
+
+ propagatedBuildInputs = [ numpy pytz six sentinel enum-compat ];
+
+ # This is the list of officially supported versions. Other versions may work
+ # as well.
+ disabled = !(isPy35 || isPy34 || isPy27);
+
+ # Test Phase is only supported in development sources.
+ doCheck = false;
+
+ meta = with lib; {
+ description = "A collection of tools for developing SpiNNaker applications";
+ homepage = "https://github.com/project-rig/rig";
+ license = licenses.gpl2;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ripser/default.nix b/nixpkgs/pkgs/development/python-modules/ripser/default.nix
new file mode 100644
index 00000000000..7a0ae68993a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ripser/default.nix
@@ -0,0 +1,48 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, cython
+, numpy
+, scipy
+, scikitlearn
+, persim
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "ripser";
+ version = "0.3.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ff9f50fba911f0e9212077b78014f83e30c97526194dd6bd1df3d81896e6cb58";
+ };
+
+ checkInputs = [
+ pytest
+ ];
+
+ propagatedBuildInputs = [
+ cython
+ numpy
+ scipy
+ scikitlearn
+ persim
+ ];
+
+ checkPhase = ''
+ # specifically needed for darwin
+ export HOME=$(mktemp -d)
+ mkdir -p $HOME/.matplotlib
+ echo "backend: ps" > $HOME/.matplotlib/matplotlibrc
+
+ pytest
+ '';
+
+ meta = with lib; {
+ description = "A Lean Persistent Homology Library for Python";
+ homepage = https://ripser.scikit-tda.org;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rjsmin/default.nix b/nixpkgs/pkgs/development/python-modules/rjsmin/default.nix
new file mode 100644
index 00000000000..287ae0391df
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rjsmin/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+buildPythonPackage rec {
+ pname = "rjsmin";
+ version = "1.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0cmc72rlkvzz8fl89bc83czkx0pcvhzj7yn7m29r8pgnf5fcfpdi";
+ };
+
+ # The package does not ship tests, and the setup machinary confuses
+ # tests auto-discovery
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = http://opensource.perlig.de/rjsmin/;
+ license = licenses.asl20;
+ description = "Javascript minifier written in python";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rl-coach/default.nix b/nixpkgs/pkgs/development/python-modules/rl-coach/default.nix
new file mode 100644
index 00000000000..10bc1a70924
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rl-coach/default.nix
@@ -0,0 +1,98 @@
+{ stdenv
+, lib
+, buildPythonPackage
+, pythonOlder
+, fetchPypi
+, tensorflow
+, annoy
+, pillow
+, matplotlib
+, numpy
+, pandas
+, pygame
+, pyopengl
+, scipy
+, scikitimage
+, gym
+, bokeh
+, kubernetes
+, redis
+, minio
+, pytest
+, psutil
+}:
+
+buildPythonPackage rec {
+ version = "0.12.1";
+ pname = "rl-coach";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1zqlq61zxn732915nznj7pz8zh6kd6inl170fiavwhs32brmv84l";
+ };
+
+ propagatedBuildInputs = [
+ tensorflow
+ annoy
+ pillow
+ matplotlib
+ numpy
+ pandas
+ pygame
+ pyopengl
+ scipy
+ scikitimage
+ gym
+ bokeh
+ kubernetes
+ redis
+ minio
+ psutil
+ ];
+
+ checkInputs = [
+ pytest
+ ];
+
+ # run only some tests that do not need any optional dependencies
+ # available tests: https://github.com/NervanaSystems/coach/tree/master/rl_coach/tests
+ testsToRun = [
+ # test only the tensorflow backend (not mxnet)
+ "architectures/tensorflow_components"
+ "agents"
+ "exploration_policies"
+ "filters"
+ "memories"
+ "utils"
+ ];
+ checkPhase = let
+ fullTestPaths = map (testfile: "rl_coach/tests/${testfile}") testsToRun;
+ escapedPaths = map lib.escapeShellArg fullTestPaths;
+ pytestArgs = builtins.concatStringsSep " " escapedPaths;
+ in
+ ''
+ pytest ${pytestArgs}
+ '';
+
+ postPatch = ''
+ # pinned to 8.0.1 for unknown reason, at least basic functionallity seems to work without it
+ # https://github.com/NervanaSystems/coach/pull/149#issuecomment-495915804
+ sed -i '/kubernetes/d' requirements.txt
+
+ # this is just an "intel-optimized" version of tensorflow, e.g. an implementation detail
+ sed -i 's/intel-tensorflow/tensorflow/g' setup.py
+
+ # backports of python3 features not needed
+ # https://github.com/NervanaSystems/coach/issues/324
+ sed -i '/futures/d' requirements.txt
+ '';
+
+ disabled = pythonOlder "3.5"; # minimum required version
+
+ meta = with stdenv.lib; {
+ description = "Enables easy experimentation with state of the art Reinforcement Learning algorithms";
+ homepage = "https://nervanasystems.github.io/coach/";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ timokau ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rlp/default.nix b/nixpkgs/pkgs/development/python-modules/rlp/default.nix
new file mode 100644
index 00000000000..c8c4315b66b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rlp/default.nix
@@ -0,0 +1,31 @@
+{ lib, fetchPypi, buildPythonPackage, pytest, hypothesis, eth-utils }:
+
+buildPythonPackage rec {
+ pname = "rlp";
+ version = "1.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0742hdnhwcx1bm7pdk83290rxfcb0i2xskgl8yn6lg8fql1hms7b";
+ };
+
+ checkInputs = [ pytest hypothesis ];
+ propagatedBuildInputs = [ eth-utils ];
+
+ # setuptools-markdown uses pypandoc which is broken at the moment
+ preConfigure = ''
+ substituteInPlace setup.py --replace \'setuptools-markdown\' ""
+ substituteInPlace setup.py --replace "long_description_markdown_filename='README.md'," ""
+ '';
+
+ checkPhase = ''
+ pytest .
+ '';
+
+ meta = {
+ description = "A package for encoding and decoding data in and from Recursive Length Prefix notation";
+ homepage = "https://github.com/ethereum/pyrlp";
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ gebner ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/robomachine/default.nix b/nixpkgs/pkgs/development/python-modules/robomachine/default.nix
new file mode 100644
index 00000000000..58a767432a2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/robomachine/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchPypi, buildPythonPackage, pyparsing, robotframework, allpairspy }:
+
+buildPythonPackage rec {
+ pname = "RoboMachine";
+ version = "0.8.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "242cfd9be0f7591138eaeba03c9c190f894ce045e1767ab7b90eca330259fc45";
+ };
+
+ propagatedBuildInputs = [ pyparsing robotframework allpairspy ];
+
+ # Remove Windows .bat files
+ postInstall = ''
+ rm "$out/bin/"*.bat
+ '';
+
+ postPatch = ''
+ substituteInPlace setup.py --replace "argparse" ""
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Test data generator for Robot Framework";
+ homepage = https://github.com/mkorpela/RoboMachine;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ bjornfor ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/roboschool/default.nix b/nixpkgs/pkgs/development/python-modules/roboschool/default.nix
new file mode 100644
index 00000000000..a86e17e921b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/roboschool/default.nix
@@ -0,0 +1,77 @@
+{ lib
+, buildPythonPackage
+, isPy3k
+, python
+, fetchFromGitHub
+, fetchpatch
+, qt5
+, boost
+, assimp
+, gym
+, bullet-roboschool
+, pkgconfig
+, 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 = [
+ pkgconfig
+ qt5.qtbase # needs the `moc` tool
+ which
+ ];
+
+ buildInputs = [
+ bullet-roboschool
+ assimp
+ qt5.qtbase
+ boost
+ ];
+
+ 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/nixpkgs/pkgs/development/python-modules/robot-detection/default.nix b/nixpkgs/pkgs/development/python-modules/robot-detection/default.nix
new file mode 100644
index 00000000000..81428b44ad9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/robot-detection/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi, six }:
+
+buildPythonPackage rec {
+ pname = "robot-detection";
+ version = "0.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1xd2jm3yn31bnk1kqzggils2rxj26ylxsfz3ap7bhr3ilhnbg3rx";
+ };
+
+ propagatedBuildInputs = [ six ];
+
+ # no tests in archive
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Library for detecting if a HTTP User Agent header is likely to be a bot";
+ homepage = https://github.com/rory/robot-detection;
+ license = licenses.gpl3Plus;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/robotframework-requests/default.nix b/nixpkgs/pkgs/development/python-modules/robotframework-requests/default.nix
new file mode 100644
index 00000000000..7233a82a395
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/robotframework-requests/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, unittest2
+, robotframework
+, lxml
+, requests
+}:
+
+buildPythonPackage rec {
+ version = "0.5.0";
+ pname = "robotframework-requests";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1c253b8061c8a91251abf3ebadc33152b8621671621405dd343efd17bdc9e620";
+ };
+
+ buildInputs = [ unittest2 ];
+ propagatedBuildInputs = [ robotframework lxml requests ];
+
+ meta = with stdenv.lib; {
+ description = "Robot Framework keyword library wrapper around the HTTP client library requests";
+ homepage = https://github.com/bulkan/robotframework-requests;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/robotframework-ride/default.nix b/nixpkgs/pkgs/development/python-modules/robotframework-ride/default.nix
new file mode 100644
index 00000000000..4db1db04acc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/robotframework-ride/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, 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 stdenv.lib; {
+ description = "Light-weight and intuitive editor for Robot Framework test case files";
+ homepage = https://code.google.com/p/robotframework-ride/;
+ license = licenses.asl20;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ bjornfor ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/robotframework-selenium2library/default.nix b/nixpkgs/pkgs/development/python-modules/robotframework-selenium2library/default.nix
new file mode 100644
index 00000000000..67f04f4f991
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/robotframework-selenium2library/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi, robotframework-seleniumlibrary }:
+
+buildPythonPackage rec {
+ version = "3.0.0";
+ pname = "robotframework-selenium2library";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2a8e942b0788b16ded253039008b34d2b46199283461b294f0f41a579c70fda7";
+ };
+
+ # Neither the PyPI tarball nor the repository has tests
+ doCheck = false;
+
+ propagatedBuildInputs = [ robotframework-seleniumlibrary ];
+
+ meta = with stdenv.lib; {
+ description = "Web testing library for Robot Framework";
+ homepage = https://github.com/robotframework/Selenium2Library;
+ license = licenses.asl20;
+ maintainers = [ maintainers.marsam ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/robotframework-seleniumlibrary/default.nix b/nixpkgs/pkgs/development/python-modules/robotframework-seleniumlibrary/default.nix
new file mode 100644
index 00000000000..7294126f516
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/robotframework-seleniumlibrary/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, python, robotframework, selenium, mockito, robotstatuschecker, approvaltests }:
+
+buildPythonPackage rec {
+ version = "3.3.1";
+ pname = "robotframework-seleniumlibrary";
+
+ # no tests included in PyPI tarball
+ src = fetchFromGitHub {
+ owner = "robotframework";
+ repo = "SeleniumLibrary";
+ rev = "v${version}";
+ sha256 = "0dabc5dwx0pwsyiy74d7wj97k72yl28a17sasjzrdq819pyc3dvq";
+ };
+
+ propagatedBuildInputs = [ robotframework selenium ];
+ checkInputs = [ mockito robotstatuschecker approvaltests ];
+
+ # Only execute Unit Tests. Acceptance Tests require headlesschrome, currently
+ # not available in nixpkgs
+ checkPhase = ''
+ ${python.interpreter} utest/run.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Web testing library for Robot Framework";
+ homepage = https://github.com/robotframework/SeleniumLibrary;
+ license = licenses.asl20;
+ maintainers = [ maintainers.marsam ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/robotframework-sshlibrary/default.nix b/nixpkgs/pkgs/development/python-modules/robotframework-sshlibrary/default.nix
new file mode 100644
index 00000000000..b5ca464938b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/robotframework-sshlibrary/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, robotframework
+, paramiko
+, scp
+}:
+
+buildPythonPackage rec {
+ version = "3.4.0";
+ pname = "robotframework-sshlibrary";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "21fa0183776e6061366f517765db479aaa634b707f3dd9d90ef6972adae6a755";
+ };
+
+ # unit tests are impure
+ doCheck = false;
+
+ propagatedBuildInputs = [ robotframework paramiko scp ];
+
+ meta = with stdenv.lib; {
+ description = "SSHLibrary is a Robot Framework test library for SSH and SFTP";
+ homepage = https://github.com/robotframework/SSHLibrary;
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/robotframework-tools/default.nix b/nixpkgs/pkgs/development/python-modules/robotframework-tools/default.nix
new file mode 100644
index 00000000000..97bc9de0bf7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/robotframework-tools/default.nix
@@ -0,0 +1,50 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, robotframework
+, moretools
+, pathpy
+, six
+, zetup
+, modeled
+, pytest
+}:
+
+buildPythonPackage rec {
+ version = "0.1rc4";
+ pname = "robotframework-tools";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0377ikajf6c3zcy3lc0kh4w9zmlqyplk2c2hb0yyc7h3jnfnya96";
+ };
+
+ nativeBuildInputs = [
+ zetup
+ ];
+
+ propagatedBuildInputs = [
+ robotframework
+ moretools
+ pathpy
+ six
+ modeled
+ ];
+
+ checkInputs = [
+ pytest
+ ];
+
+ checkPhase = ''
+ # tests require network
+ pytest test --ignore test/remote/test_remote.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Python Tools for Robot Framework and Test Libraries";
+ homepage = https://bitbucket.org/userzimmermann/robotframework-tools;
+ license = licenses.gpl3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/robotframework/default.nix b/nixpkgs/pkgs/development/python-modules/robotframework/default.nix
new file mode 100644
index 00000000000..09d98c91203
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/robotframework/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchPypi, buildPythonPackage }:
+
+buildPythonPackage rec {
+ pname = "robotframework";
+ version = "3.1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f10dd7c0c8c7962a4f80dd1e026b5db731b9391bc6e1f9ebb96d685eb1230dbc";
+ extension = "zip";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Generic test automation framework";
+ homepage = http://robotframework.org/;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ bjornfor ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/robotstatuschecker/default.nix b/nixpkgs/pkgs/development/python-modules/robotstatuschecker/default.nix
new file mode 100644
index 00000000000..1a2ef201c50
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/robotstatuschecker/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, python, robotframework }:
+
+buildPythonPackage rec {
+ version = "1.3";
+ pname = "robotstatuschecker";
+
+ # no tests included in PyPI tarball
+ src = fetchFromGitHub {
+ owner = "robotframework";
+ repo = "statuschecker";
+ rev = version;
+ sha256 = "0rppwwpp4djn5c43x7icwslnxbzcfnnn3c6awpg1k97j69d2nmln";
+ };
+
+ propagatedBuildInputs = [ robotframework ];
+
+ checkPhase = ''
+ ${python.interpreter} test/run.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A tool for checking that Robot Framework test cases have expected statuses and log messages";
+ homepage = https://github.com/robotframework/statuschecker;
+ license = licenses.asl20;
+ maintainers = [ maintainers.marsam ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/robotsuite/default.nix b/nixpkgs/pkgs/development/python-modules/robotsuite/default.nix
new file mode 100644
index 00000000000..59ef766adf1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/robotsuite/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, unittest2, lxml, robotframework
+}:
+
+buildPythonPackage rec {
+ pname = "robotsuite";
+ version = "2.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "15iw7g6gspf1ill0mzjrj71dirqfc86f1j14wphdvs2lazv8d50z";
+ };
+
+ buildInputs = [ unittest2 ];
+ propagatedBuildInputs = [ robotframework lxml ];
+
+ postPatch = ''
+ substituteInPlace setup.py \
+ --replace robotframework-python3 robotframework
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Python unittest test suite for Robot Framework";
+ homepage = https://github.com/collective/robotsuite/;
+ license = licenses.gpl3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rocket-errbot/default.nix b/nixpkgs/pkgs/development/python-modules/rocket-errbot/default.nix
new file mode 100644
index 00000000000..616927531a5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rocket-errbot/default.nix
@@ -0,0 +1,24 @@
+{ lib, fetchPypi, fetchpatch, buildPythonPackage }:
+
+buildPythonPackage rec {
+ pname = "rocket-errbot";
+ version = "1.2.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "181y1wqjvlry5xdzbliajvrxvswzh3myh795jnj1pm92r5grqzda";
+ };
+
+ # remove with 1.2.6
+ patches = [ (fetchpatch {
+ url = "https://github.com/errbotio/rocket/pull/1.patch";
+ sha256 = "1s668yv5b86b78vbqwhcl44k2l16c9bhk3199yy9hayf0vkxnwif";
+ }) ];
+
+ meta = {
+ homepage = https://github.com/errbotio/rocket;
+ description = "Modern, multi-threaded and extensible web server";
+ license = lib.licenses.mit;
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/roman/default.nix b/nixpkgs/pkgs/development/python-modules/roman/default.nix
new file mode 100644
index 00000000000..52d45d72875
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/roman/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ version = "2.0.0";
+ pname = "roman";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "90e83b512b44dd7fc83d67eb45aa5eb707df623e6fc6e66e7f273abd4b2613ae";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Integer to Roman numerals converter";
+ homepage = "https://pypi.python.org/pypi/roman";
+ license = licenses.psfl;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/root_numpy/default.nix b/nixpkgs/pkgs/development/python-modules/root_numpy/default.nix
new file mode 100644
index 00000000000..dc2c5f790b5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/root_numpy/default.nix
@@ -0,0 +1,27 @@
+{ lib, fetchPypi, isPy3k, buildPythonPackage, numpy, root, nose }:
+
+buildPythonPackage rec {
+ pname = "root_numpy";
+ version = "4.8.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5842bbcde92133f60a61f56e9f0a875a0dbc2a567cc65a9ac141ecd72e416878";
+ };
+
+ disabled = isPy3k; # blocked by #27649
+ checkInputs = [ nose ];
+ checkPhase = ''
+ python setup.py install_lib -d .
+ nosetests -s -v root_numpy
+ '';
+
+ propagatedBuildInputs = [ numpy root ];
+
+ meta = with lib; {
+ homepage = http://scikit-hep.org/root_numpy;
+ license = licenses.bsd3;
+ description = "The interface between ROOT and NumPy";
+ maintainers = with maintainers; [ veprbl ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rootpy/default.nix b/nixpkgs/pkgs/development/python-modules/rootpy/default.nix
new file mode 100644
index 00000000000..8384510468a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rootpy/default.nix
@@ -0,0 +1,30 @@
+{ lib, fetchPypi, isPy3k, buildPythonPackage, numpy, matplotlib, root, root_numpy, tables, pytest }:
+
+buildPythonPackage rec {
+ pname = "rootpy";
+ version = "1.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0zp2bh87l3f0shiqslbvfmavfdj8m80y8fsrz8rsi5pzqj7zr1bx";
+ };
+
+ disabled = isPy3k;
+
+ propagatedBuildInputs = [ matplotlib numpy root root_numpy tables ];
+
+ checkInputs = [ pytest ];
+ checkPhase = ''
+ # tests fail with /homeless-shelter
+ export HOME=$PWD
+ # skip problematic tests
+ py.test rootpy -k "not test_stl and not test_cpp and not test_xrootd_glob_single and not test_xrootd_glob_multiple"
+ '';
+
+ meta = with lib; {
+ homepage = http://www.rootpy.org;
+ license = licenses.bsd3;
+ description = "Pythonic interface to the ROOT framework";
+ maintainers = with maintainers; [ veprbl ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rope/default.nix b/nixpkgs/pkgs/development/python-modules/rope/default.nix
new file mode 100644
index 00000000000..66340f91770
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rope/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi, nose }:
+
+buildPythonPackage rec {
+ pname = "rope";
+ version = "0.14.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1bwayj0hh459s3yh0sdrxksr9wfilgi3a49izfaj06kvgyladif5";
+ };
+
+ checkInputs = [ nose ];
+ checkPhase = ''
+ # tracked upstream here https://github.com/python-rope/rope/issues/247
+ NOSE_IGNORE_FILES=type_hinting_test.py nosetests ropetest
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Python refactoring library";
+ homepage = https://github.com/python-rope/rope;
+ maintainers = with maintainers; [ goibhniu ];
+ license = licenses.gpl2;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ropper/default.nix b/nixpkgs/pkgs/development/python-modules/ropper/default.nix
new file mode 100644
index 00000000000..7b07bf3ff05
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ropper/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonApplication
+, fetchPypi
+, capstone
+, filebytes
+, pytest
+}:
+
+buildPythonApplication rec {
+ pname = "ropper";
+ version = "1.12.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1aignpxz6rcbf6yxy1gjr708p56i6nqrbgblq24nanssz9rhkyzg";
+ };
+ # XXX tests rely on user-writeable /dev/shm to obtain process locks and return PermissionError otherwise
+ # workaround: sudo chmod 777 /dev/shm
+ checkPhase = ''
+ py.test testcases
+ '';
+ doCheck = false; # Tests not included in archive
+
+ checkInputs = [pytest];
+ propagatedBuildInputs = [ capstone filebytes ];
+ meta = with stdenv.lib; {
+ homepage = https://scoding.de/ropper/;
+ license = licenses.bsd3;
+ description = "Show information about files in different file formats";
+ maintainers = with maintainers; [ bennofs ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/routes/default.nix b/nixpkgs/pkgs/development/python-modules/routes/default.nix
new file mode 100644
index 00000000000..1e2e67c6206
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/routes/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, repoze_lru
+, six
+, webob
+, coverage
+, webtest
+}:
+
+buildPythonPackage rec {
+ pname = "Routes";
+ version = "2.4.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1zamff3m0kc4vyfniyhxpkkcqv1rrgnmh37ykxv34nna1ws47vi6";
+ };
+
+ propagatedBuildInputs = [ repoze_lru six webob ];
+ checkInputs = [ coverage webtest ];
+
+ meta = with stdenv.lib; {
+ description = "A Python re-implementation of the Rails routes system for mapping URLs to application actions";
+ homepage = http://routes.groovie.org/;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rpdb/default.nix b/nixpkgs/pkgs/development/python-modules/rpdb/default.nix
new file mode 100644
index 00000000000..8b22ef967d5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rpdb/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "rpdb";
+ version = "0.1.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5d1a1cee34378ab075879dc30fa6328d448a9f680a66c4e84cac7382ad92f15f";
+ };
+
+ meta = with stdenv.lib; {
+ description = "pdb wrapper with remote access via tcp socket";
+ homepage = https://github.com/tamentis/rpdb;
+ license = licenses.bsd2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rpkg/default.nix b/nixpkgs/pkgs/development/python-modules/rpkg/default.nix
new file mode 100644
index 00000000000..bbe20fd1e82
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rpkg/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, 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 stdenv.lib; {
+ description = "Python library for dealing with rpm packaging";
+ homepage = https://pagure.io/fedpkg;
+ license = licenses.gpl2Plus;
+ maintainers = with maintainers; [ ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rply/default.nix b/nixpkgs/pkgs/development/python-modules/rply/default.nix
new file mode 100644
index 00000000000..a468bee275c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rply/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, pytest, fetchFromGitHub, buildPythonPackage, appdirs }:
+
+buildPythonPackage rec {
+ pname = "rply";
+ version = "0.7.7";
+
+ src = fetchFromGitHub {
+ owner = "alex";
+ repo = "rply";
+ rev = "v${version}";
+ sha256 = "1qv37hn7hhxd388znri76g0zjxsbwhxhcaic94dvw9pq4l60vqp6";
+ };
+
+ propagatedBuildInputs = [ appdirs ];
+
+ checkInputs = [ pytest ];
+ checkPhase = ''
+ HOME=$(mktemp -d) py.test tests
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A python Lex/Yacc that works with RPython";
+ homepage = https://github.com/alex/rply;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ nixy ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rpmfluff/default.nix b/nixpkgs/pkgs/development/python-modules/rpmfluff/default.nix
new file mode 100644
index 00000000000..76fc508a5d8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rpmfluff/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, glibcLocales
+}:
+
+buildPythonPackage rec {
+ pname = "rpmfluff";
+ version = "0.5.7.1";
+
+ src = fetchurl {
+ url = "https://releases.pagure.org/${pname}/${pname}-${version}.tar.xz";
+ sha256 = "19vnlzma8b0aghdiixk0q3wc10y6306hsnic0qvswaaiki94fss1";
+ };
+
+ LC_ALL="en_US.utf-8";
+ buildInputs = [ glibcLocales ];
+
+ meta = with stdenv.lib; {
+ description = "lightweight way of building RPMs, and sabotaging them";
+ homepage = https://pagure.io/rpmfluff;
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ disassembler ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rpy2/default.nix b/nixpkgs/pkgs/development/python-modules/rpy2/default.nix
new file mode 100644
index 00000000000..1b4ab4d40db
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rpy2/default.nix
@@ -0,0 +1,108 @@
+{ lib
+, python
+, buildPythonPackage
+, fetchPypi
+, isPyPy
+, isPy27
+, readline
+, R
+, rWrapper
+, rPackages
+, pcre
+, lzma
+, bzip2
+, zlib
+, icu
+, singledispatch
+, six
+, jinja2
+, pytz
+, numpy
+, pytest
+, mock
+, extraRPackages ? []
+}:
+
+buildPythonPackage rec {
+ version = if isPy27 then
+ "2.8.6" # python2 support dropped in 2.9.x
+ else
+ "2.9.5";
+ pname = "rpy2";
+ disabled = isPyPy;
+ src = fetchPypi {
+ inherit version pname;
+ sha256 = if isPy27 then
+ "162zki5c1apgv6qbafi7n66y4hgpgp43xag7q75qb6kv99ri6k80" # 2.8.x
+ else
+ "1nrj8pgyxrwrfdrxzb4j3z1adjwjx1mr8d1n5cmrz4nhlzy8w7xr"; # 2.9.x
+ };
+ buildInputs = [
+ readline
+ R
+ pcre
+ lzma
+ bzip2
+ zlib
+ icu
+ ] ++ (with rPackages; [
+ # packages expected by the test framework
+ ggplot2
+ dplyr
+ RSQLite
+ broom
+ DBI
+ dbplyr
+ hexbin
+ lme4
+ tidyr
+ ]) ++ 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 rpy/rinterface/__init__.py --replace '@NIX_R_LIBS_SITE@' "$R_LIBS_SITE"
+ '';
+
+ 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.tests'
+ '';
+
+ # For some reason libreadline.so is not found. Curiously `ldd _rinterface.so | grep readline` shows two readline entries:
+ # libreadline.so.6 => not found
+ # libreadline.so.6 => /nix/store/z2zhmrg6jcrn5iq2779mav0nnq4vm2q6-readline-6.3p08/lib/libreadline.so.6 (0x00007f333ac43000)
+ # There must be a better way to fix this, but I don't know it.
+ postFixup = ''
+ patchelf --add-needed ${readline}/lib/libreadline.so "$out/${python.sitePackages}/rpy2/rinterface/"_rinterface*.so
+ '';
+
+ meta = {
+ homepage = http://rpy.sourceforge.net/rpy2;
+ description = "Python interface to R";
+ license = lib.licenses.gpl2Plus;
+ platforms = lib.platforms.unix;
+ maintainers = with lib.maintainers; [ joelmo ];
+ };
+ }
diff --git a/nixpkgs/pkgs/development/python-modules/rpy2/r-libs-site.patch b/nixpkgs/pkgs/development/python-modules/rpy2/r-libs-site.patch
new file mode 100644
index 00000000000..a55b6038bb4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rpy2/r-libs-site.patch
@@ -0,0 +1,20 @@
+diff --git a/rpy/rinterface/__init__.py b/rpy/rinterface/__init__.py
+index 9362e57..1af258e 100644
+--- a/rpy/rinterface/__init__.py
++++ b/rpy/rinterface/__init__.py
+@@ -43,6 +43,15 @@ if not R_HOME:
+ if not os.environ.get("R_HOME"):
+ os.environ['R_HOME'] = R_HOME
+
++# path to libraries
++existing = os.environ.get('R_LIBS_SITE')
++if existing is not None:
++ prefix = existing + ':'
++else:
++ prefix = ''
++additional = '@NIX_R_LIBS_SITE@'
++os.environ['R_LIBS_SITE'] = prefix + additional
++
+ if sys.platform == 'win32':
+ _load_r_dll(R_HOME)
+
diff --git a/nixpkgs/pkgs/development/python-modules/rpyc/default.nix b/nixpkgs/pkgs/development/python-modules/rpyc/default.nix
new file mode 100644
index 00000000000..5fbfba39ddc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rpyc/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, plumbum
+}:
+
+buildPythonPackage rec {
+ pname = "rpyc";
+ version = "4.1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0rhmwq1jra2cs0j09z2ks4vnv0svi8lj21nq9qq50i52x4ml4yb7";
+ };
+
+ propagatedBuildInputs = [ nose plumbum ];
+
+ meta = with stdenv.lib; {
+ description = "Remote Python Call (RPyC), a transparent and symmetric RPC library";
+ homepage = https://rpyc.readthedocs.org;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rq/default.nix b/nixpkgs/pkgs/development/python-modules/rq/default.nix
new file mode 100644
index 00000000000..8c91579d241
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rq/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchPypi, buildPythonPackage, click, redis }:
+
+buildPythonPackage rec {
+ pname = "rq";
+ version = "1.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1fs03g1n1l8k03zwhkhckhsrnnsm3645sqby2nwh5gfij2kcc9sg";
+ };
+
+ # test require a running redis rerver, which is something we can't do yet
+ doCheck = false;
+
+ propagatedBuildInputs = [ click redis ];
+
+ meta = with stdenv.lib; {
+ description = "A simple, lightweight library for creating background jobs, and processing them";
+ homepage = "https://github.com/nvie/rq/";
+ maintainers = with maintainers; [ mrmebelman ];
+ license = licenses.bsd2;
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/rsa/default.nix b/nixpkgs/pkgs/development/python-modules/rsa/default.nix
new file mode 100644
index 00000000000..1b3d339b078
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rsa/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, 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 = stdenv.lib.optionalString (isPy3k && pythonOlder "3.7") ''
+ substituteInPlace setup.py --replace "open('README.md')" "open('README.md',encoding='utf-8')"
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://stuvel.eu/rsa;
+ license = licenses.asl20;
+ description = "A pure-Python RSA implementation";
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rtslib/default.nix b/nixpkgs/pkgs/development/python-modules/rtslib/default.nix
new file mode 100644
index 00000000000..5453541e2de
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rtslib/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchFromGitHub, buildPythonPackage, six, pyudev, pygobject3 }:
+
+buildPythonPackage rec {
+ pname = "rtslib";
+ version = "2.1.fb69";
+
+ src = fetchFromGitHub {
+ owner = "open-iscsi";
+ repo ="${pname}-fb";
+ rev = "v${version}";
+ sha256 = "17rlcrd9757nq91pa8xjr7147k7mxxp8zdka7arhlgsp3kcnbsfd";
+ };
+
+ propagatedBuildInputs = [ six pyudev pygobject3 ];
+
+ meta = with stdenv.lib; {
+ description = "A Python object API for managing the Linux LIO kernel target";
+ homepage = https://github.com/open-iscsi/rtslib-fb;
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ruamel_base/default.nix b/nixpkgs/pkgs/development/python-modules/ruamel_base/default.nix
new file mode 100644
index 00000000000..ba6a79fdd63
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ruamel_base/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "ruamel.base";
+ version = "1.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1wswxrn4givsm917mfl39rafgadimf1sldpbjdjws00g1wx36hf0";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Common routines for ruamel packages";
+ homepage = https://bitbucket.org/ruamel/base;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ruamel_ordereddict/default.nix b/nixpkgs/pkgs/development/python-modules/ruamel_ordereddict/default.nix
new file mode 100644
index 00000000000..7dec5bb54ca
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ruamel_ordereddict/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, isPyPy
+}:
+
+buildPythonPackage rec {
+ pname = "ruamel.ordereddict";
+ version = "0.4.13";
+ disabled = isPy3k || isPyPy;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "bf0a198c8ce5d973c24e5dba12d3abc254996788ca6ad8448eabc6aa710db149";
+ };
+
+ meta = with stdenv.lib; {
+ description = "A version of dict that keeps keys in insertion resp. sorted order";
+ homepage = https://bitbucket.org/ruamel/ordereddict;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ruamel_yaml/default.nix b/nixpkgs/pkgs/development/python-modules/ruamel_yaml/default.nix
new file mode 100644
index 00000000000..a4ac86302cf
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ruamel_yaml/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, ruamel_base
+, ruamel_ordereddict
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "ruamel.yaml";
+ version = "0.15.96";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "343ace5ffbab036536a3da65e4cfd31b8292388a389f6305744984581a479b2a";
+ };
+
+ # Tests cannot load the module to test
+ doCheck = false;
+
+ propagatedBuildInputs = [ ruamel_base ]
+ ++ stdenv.lib.optional (!isPy3k) ruamel_ordereddict;
+
+ meta = with stdenv.lib; {
+ description = "YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order";
+ homepage = https://bitbucket.org/ruamel/yaml;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rubymarshal/default.nix b/nixpkgs/pkgs/development/python-modules/rubymarshal/default.nix
new file mode 100644
index 00000000000..ac7ba00c586
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rubymarshal/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi, hypothesis }:
+
+buildPythonPackage rec {
+ pname = "rubymarshal";
+ version = "1.2.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0gq344jlb9wkapzpxj7jqwjlc5ccdhhspkw6rfb1d0rammq6hpf6";
+ };
+
+ propagatedBuildInputs = [ hypothesis ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/d9pouces/RubyMarshal/;
+ description = "Read and write Ruby-marshalled data";
+ license = licenses.wtfpl;
+ maintainers = [ maintainers.ryantm ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ruffus/default.nix b/nixpkgs/pkgs/development/python-modules/ruffus/default.nix
new file mode 100644
index 00000000000..37222964b04
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ruffus/default.nix
@@ -0,0 +1,53 @@
+{ gevent
+, buildPythonPackage
+, fetchFromGitHub
+, hostname
+, pytest
+, python
+, stdenv
+}:
+
+buildPythonPackage rec {
+ pname = "ruffus";
+ version = "2.8.1";
+
+ src = fetchFromGitHub {
+ owner = "cgat-developers";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "1gyabqafq4s2sy0prh3k1m8859shzjmfxr7fimx10liflvki96a9";
+ };
+
+ propagatedBuildInputs = [ gevent ];
+
+ postPatch = ''
+ sed -i -e 's|/bin/bash|${stdenv.shell}|' ruffus/test/Makefile
+ sed -i -e 's|\tpytest|\t${pytest}/bin/pytest|' ruffus/test/Makefile
+ sed -i -e 's|\tpython|\t${python.interpreter}|' ruffus/test/Makefile
+ sed -i -e 's|/usr/bin/env bash|${stdenv.shell}|' ruffus/test/run_all_unit_tests.cmd
+ sed -i -e 's|python3|${python.interpreter}|' ruffus/test/run_all_unit_tests3.cmd
+ sed -i -e 's|python %s|${python.interpreter} %s|' ruffus/test/test_drmaa_wrapper_run_job_locally.py
+ '';
+
+ makefile = "ruffus/test/Makefile";
+
+ checkInputs = [
+ gevent
+ hostname
+ pytest
+ ];
+
+ checkPhase = ''
+ export HOME=$TMPDIR
+ cd ruffus/test
+ make all PYTEST_OPTIONS="-q --disable-warnings"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Light-weight Python Computational Pipeline Management";
+ homepage = http://www.ruffus.org.uk;
+ license = licenses.mit;
+ maintainers = [ maintainers.kiwi ];
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/runsnakerun/default.nix b/nixpkgs/pkgs/development/python-modules/runsnakerun/default.nix
new file mode 100644
index 00000000000..eba8871fd02
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/runsnakerun/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, squaremap
+, wxPython
+}:
+
+buildPythonPackage rec {
+ pname = "runsnakerun";
+ version = "2.0.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "61d03a13f1dcb3c1829f5a146da1fe0cc0e27947558a51e848b6d469902815ef";
+ };
+
+ propagatedBuildInputs = [ squaremap wxPython ];
+
+ meta = with stdenv.lib; {
+ description = "GUI Viewer for Python profiling runs";
+ homepage = http://www.vrplumber.com/programming/runsnakerun/;
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/runway-python/default.nix b/nixpkgs/pkgs/development/python-modules/runway-python/default.nix
new file mode 100644
index 00000000000..958b1ee45b3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/runway-python/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, flask
+, flask-cors
+, numpy
+, pillow
+, gevent
+, wget
+, six
+, colorcet
+}:
+
+buildPythonPackage rec {
+ pname = "runway-python";
+ version = "0.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "cd23550211aa8542d9c06516e25c32de3963fff50d0793d94def271a4e2b4514";
+ };
+
+ propagatedBuildInputs = [ flask flask-cors numpy pillow gevent wget six colorcet ];
+
+ # tests are not packaged in the released tarball
+ doCheck = false;
+
+ meta = {
+ description = "Helper library for creating Runway models";
+ homepage = https://github.com/runwayml/model-sdk;
+ license = with lib.licenses; [ mit ];
+ maintainers = with lib.maintainers; [ prusnak ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rx/default.nix b/nixpkgs/pkgs/development/python-modules/rx/default.nix
new file mode 100644
index 00000000000..6183596ef7d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rx/default.nix
@@ -0,0 +1,28 @@
+{ lib, fetchFromGitHub, buildPythonPackage, nose }:
+
+buildPythonPackage rec {
+ pname = "rx";
+ version = "1.6.1";
+
+ # There are no tests on the pypi source
+ src = fetchFromGitHub {
+ owner = "ReactiveX";
+ repo = "rxpy";
+ rev = version;
+ sha256 = "14bca67a26clzcf2abz2yb8g9lfxffjs2l236dp966sp0lfbpsn5";
+ };
+
+ checkInputs = [ nose ];
+
+ # Some tests are nondeterministic. (`grep sleep -r tests`)
+ # test_timeout_schedule_action_cancel: https://hydra.nixos.org/build/74954646
+ # test_new_thread_scheduler_timeout: https://hydra.nixos.org/build/74949851
+ doCheck = false;
+
+ meta = {
+ homepage = https://github.com/ReactiveX/RxPY;
+ description = "Reactive Extensions for Python";
+ maintainers = with lib.maintainers; [ thanegill ];
+ license = lib.licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/s2clientprotocol/default.nix b/nixpkgs/pkgs/development/python-modules/s2clientprotocol/default.nix
new file mode 100644
index 00000000000..5fbf4b6fab2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/s2clientprotocol/default.nix
@@ -0,0 +1,26 @@
+{ buildPythonPackage
+, lib
+, fetchPypi
+, protobuf
+}:
+
+buildPythonPackage rec {
+ pname = "s2clientprotocol";
+ version = "3.19.1.58600.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "02jqwdfj5zpag4c5nf0707qmwk7sqm98yfgrd19rq6pi58zgl74f";
+ };
+
+ patches = [ ./pure-version.patch ];
+
+ buildInputs = [ protobuf ];
+
+ meta = {
+ description = "StarCraft II - client protocol.";
+ homepage = "https://github.com/Blizzard/sc2client-proto";
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ danharaj ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/s2clientprotocol/pure-version.patch b/nixpkgs/pkgs/development/python-modules/s2clientprotocol/pure-version.patch
new file mode 100644
index 00000000000..43675c3bb11
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/s2clientprotocol/pure-version.patch
@@ -0,0 +1,13 @@
+diff --git a/setup.py b/setup.py
+index 89131a8..19527df 100755
+--- a/setup.py
++++ b/setup.py
+@@ -13,8 +13,6 @@ from distutils.spawn import find_executable
+ from setuptools import setup
+ from setuptools.command.build_py import build_py
+
+-import gameversion_autogen as ver
+-
+ SETUP_DIR = os.path.dirname(os.path.abspath(__file__))
+ PROTO_DIR = os.path.join(SETUP_DIR, 's2clientprotocol')
+
diff --git a/nixpkgs/pkgs/development/python-modules/s3fs/default.nix b/nixpkgs/pkgs/development/python-modules/s3fs/default.nix
new file mode 100644
index 00000000000..157549a6f17
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/s3fs/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, buildPythonPackage, fetchPypi, docutils, boto3 }:
+
+buildPythonPackage rec {
+ pname = "s3fs";
+ version = "0.2.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1l3vdy3h6l03kjjzq1vq7h252749f8dg7kkz65s890y4xxvjxlyw";
+ };
+
+ buildInputs = [ docutils ];
+ propagatedBuildInputs = [ boto3 ];
+
+ # Depends on `moto` which has a long dependency chain with exact
+ # version requirements that can't be made to work with current
+ # pythonPackages.
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "S3FS builds on boto3 to provide a convenient Python filesystem interface for S3.";
+ homepage = https://github.com/dask/s3fs/;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ teh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/s3transfer/default.nix b/nixpkgs/pkgs/development/python-modules/s3transfer/default.nix
new file mode 100644
index 00000000000..7589d0fce73
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/s3transfer/default.nix
@@ -0,0 +1,53 @@
+{ stdenv
+, fetchPypi
+, pythonOlder
+, buildPythonPackage
+, docutils
+, mock
+, nose
+, coverage
+, wheel
+, unittest2
+, botocore
+, futures
+}:
+
+buildPythonPackage rec {
+ pname = "s3transfer";
+ version = "0.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f23d5cb7d862b104401d9021fc82e5fa0e0cf57b7660a1331425aab0c691d021";
+ };
+
+ foo = 1;
+
+ propagatedBuildInputs =
+ [ botocore
+ ] ++ stdenv.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 = {
+ homepage = https://github.com/boto/s3transfer;
+ license = stdenv.lib.licenses.asl20;
+ description = "A library for managing Amazon S3 transfers";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sabyenc/default.nix b/nixpkgs/pkgs/development/python-modules/sabyenc/default.nix
new file mode 100644
index 00000000000..e8294ce7bcd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sabyenc/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "sabyenc";
+ version = "3.3.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1qbymi1626mmcxnsqdwnz2krxg7jvl4qbh8nwjj54z2p681wvjm4";
+ };
+
+ # tests are not included in pypi distribution
+ doCheck = false;
+
+ meta = {
+ description = "Python yEnc package optimized for use within SABnzbd";
+ homepage = "https://github.com/sabnzbd/sabyenc/";
+ license = lib.licenses.lgpl3;
+ maintainers = [ lib.maintainers.georgewhewell ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/safe/default.nix b/nixpkgs/pkgs/development/python-modules/safe/default.nix
new file mode 100644
index 00000000000..f7f6f7eabf9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/safe/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+}:
+
+buildPythonPackage rec {
+ version = "0.4";
+ pname = "Safe";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a2fdac9fe8a9dcf02b438201d6ce0b7be78f85dc6492d03edfb89be2adf489de";
+ };
+
+ buildInputs = [ nose ];
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/lepture/safe";
+ license = licenses.bsd3;
+ description = "Check password strength";
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/salmon-mail/default.nix b/nixpkgs/pkgs/development/python-modules/salmon-mail/default.nix
new file mode 100644
index 00000000000..afd915ed840
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/salmon-mail/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, buildPythonPackage, fetchPypi, nose, dnspython
+, chardet, lmtpd, python-daemon, six, jinja2, mock }:
+
+buildPythonPackage rec {
+ pname = "salmon-mail";
+ version = "3.1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0ddd9nwdmiibk3jaampznm8nai5b7zalp0f8c65l71674300bqnw";
+ };
+
+ checkInputs = [ nose jinja2 mock ];
+ propagatedBuildInputs = [ chardet dnspython lmtpd python-daemon six ];
+
+ # The tests use salmon executable installed by salmon itself so we need to add
+ # that to PATH
+ checkPhase = ''
+ PATH=$out/bin:$PATH nosetests .
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://salmon-mail.readthedocs.org/;
+ description = "Pythonic mail application server";
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ jluttine ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sampledata/default.nix b/nixpkgs/pkgs/development/python-modules/sampledata/default.nix
new file mode 100644
index 00000000000..fcc27e3c4db
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sampledata/default.nix
@@ -0,0 +1,30 @@
+{ lib, buildPythonPackage, fetchPypi,
+ nose, pytz, six, versiontools
+}:
+
+buildPythonPackage rec {
+ pname = "sampledata";
+ version = "0.3.7";
+
+ meta = {
+ description = "Sample Data generator for Python ";
+ homepage = https://github.com/jespino/sampledata;
+ license = lib.licenses.bsd3;
+ };
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1kx2j49lag30d32zhzsr50gl5b949wa4lcdap2filg0d07picsdh";
+ };
+
+ buildInputs = [ nose versiontools ];
+ propagatedBuildInputs = [ pytz six ];
+
+# ERROR: test_image_path_from_directory (tests.tests.TestImageHelpers)
+# ERROR: test_image_stream (tests.tests.TestImageHelpers)
+ doCheck = false;
+
+ checkPhase = ''
+ nosetests -e "TestImageHelpers"
+ '';
+}
diff --git a/nixpkgs/pkgs/development/python-modules/samplerate/default.nix b/nixpkgs/pkgs/development/python-modules/samplerate/default.nix
new file mode 100644
index 00000000000..8de675d4ea1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/samplerate/default.nix
@@ -0,0 +1,36 @@
+{ stdenv
+, buildPythonPackage
+, numpy
+, pkgs
+}:
+
+buildPythonPackage {
+ pname = "scikits.samplerate";
+ version = "0.3.3";
+
+ src = pkgs.fetchgit {
+ url = https://github.com/cournape/samplerate;
+ rev = "a536c97eb2d6195b5f266ea3cc3a35364c4c2210";
+ sha256 = "0mgic7bs5zv5ji05vr527jlxxlb70f9dg93hy1lzyz2plm1kf7gg";
+ };
+
+ buildInputs = [ pkgs.libsamplerate ];
+ propagatedBuildInputs = [ numpy ];
+
+ preConfigure = ''
+ cat > site.cfg << END
+ [samplerate]
+ library_dirs=${pkgs.libsamplerate.out}/lib
+ include_dirs=${pkgs.libsamplerate.dev}/include
+ END
+ '';
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/cournape/samplerate;
+ description = "High quality sampling rate convertion from audio data in numpy arrays";
+ license = licenses.gpl2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sandboxlib/default.nix b/nixpkgs/pkgs/development/python-modules/sandboxlib/default.nix
new file mode 100644
index 00000000000..1a3511dab97
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sandboxlib/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pbr
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "sandboxlib";
+ version = "0.31";
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0csj8hbpylqdkxcpqkcfs73dfvdqkyj23axi8m9drqdi4dhxb41h";
+ };
+
+ buildInputs = [ pbr ];
+
+ meta = with stdenv.lib; {
+ description = "Sandboxing Library for Python";
+ homepage = https://pypi.python.org/pypi/sandboxlib/0.3.1;
+ license = licenses.gpl2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sanic/default.nix b/nixpkgs/pkgs/development/python-modules/sanic/default.nix
new file mode 100644
index 00000000000..6aae4c11fdd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sanic/default.nix
@@ -0,0 +1,68 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, httptools
+, aiofiles
+, websockets
+, multidict
+, uvloop
+, ujson
+, pytest
+, gunicorn
+, pytestcov
+, aiohttp
+, beautifulsoup4
+, pytest-sanic
+, pytest-sugar
+, pytest-benchmark
+}:
+
+buildPythonPackage rec {
+ pname = "sanic";
+ version = "19.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ce434eb154872ca64493a6c3a288f11fd10bca0de7be7bf9f1d0d063185e51ec";
+ };
+
+ propagatedBuildInputs = [
+ httptools
+ aiofiles
+ websockets
+ multidict
+ uvloop
+ ujson
+ ];
+
+ checkInputs = [
+ pytest
+ gunicorn
+ pytestcov
+ aiohttp
+ beautifulsoup4
+ pytest-sanic
+ pytest-sugar
+ pytest-benchmark
+ ];
+
+ postConfigure = ''
+ substituteInPlace setup.py \
+ --replace "websockets>=6.0,<7.0" "websockets"
+ '';
+
+ # 10/500 tests ignored due to missing directory and
+ # requiring network access
+ checkPhase = ''
+ pytest --ignore tests/test_blueprints.py \
+ --ignore tests/test_routes.py \
+ --ignore tests/test_worker.py
+ '';
+
+ meta = with lib; {
+ description = "A microframework based on uvloop, httptools, and learnings of flask";
+ homepage = http://github.com/channelcat/sanic/;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sarge/default.nix b/nixpkgs/pkgs/development/python-modules/sarge/default.nix
new file mode 100644
index 00000000000..4d7a3a5972f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sarge/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "sarge";
+ version = "0.1.5.post0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "da8cc90883f8e5ab4af0d746438f608662f5f2a35da2e858517927edefa134b0";
+ };
+
+ # No tests in PyPI tarball
+ doCheck = false;
+
+ meta = with lib; {
+ homepage = https://sarge.readthedocs.org/;
+ description = "A wrapper for subprocess which provides command pipeline functionality";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ abbradar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sasmodels/default.nix b/nixpkgs/pkgs/development/python-modules/sasmodels/default.nix
new file mode 100644
index 00000000000..bf0b1e01563
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sasmodels/default.nix
@@ -0,0 +1,30 @@
+{ lib, fetchFromGitHub, buildPythonPackage, pytest, numpy, scipy, matplotlib, docutils
+, pyopencl, opencl-headers
+}:
+
+buildPythonPackage rec {
+ pname = "sasmodels";
+ version = "1.0.0";
+
+ src = fetchFromGitHub {
+ owner = "SasView";
+ repo = "sasmodels";
+ rev = "v${version}";
+ sha256 = "082wnk10axincc4a62zxyr33l7v80yf7iz630y3421b50fwwyd8j";
+ };
+
+ buildInputs = [ opencl-headers ];
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ docutils matplotlib numpy scipy pyopencl ];
+
+ checkPhase = ''
+ HOME=$(mktemp -d) py.test -c ./pytest.ini
+ '';
+
+ meta = {
+ description = "Library of small angle scattering models";
+ homepage = http://sasview.org;
+ license = lib.licenses.bsd3;
+ maintainers = with lib.maintainers; [ rprospero ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/scales/default.nix b/nixpkgs/pkgs/development/python-modules/scales/default.nix
new file mode 100644
index 00000000000..4fb169b1558
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/scales/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "scales";
+ version = "1.0.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8b6930f7d4bf115192290b44c757af5e254e3fcfcb75ff9a51f5c96a404e2753";
+ };
+
+ checkInputs = [ nose ];
+ propagatedBuildInputs = [ six ];
+
+ # No tests included
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Stats for Python processes";
+ homepage = https://www.github.com/Cue/scales;
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/scandir/default.nix b/nixpkgs/pkgs/development/python-modules/scandir/default.nix
new file mode 100644
index 00000000000..bc71fde5ced
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/scandir/default.nix
@@ -0,0 +1,20 @@
+{ 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/nixpkgs/pkgs/development/python-modules/scapy/default.nix b/nixpkgs/pkgs/development/python-modules/scapy/default.nix
new file mode 100644
index 00000000000..8f51b1eda21
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/scapy/default.nix
@@ -0,0 +1,55 @@
+{ buildPythonPackage, fetchFromGitHub, lib, isPyPy, isPy3k, pythonOlder
+, pycrypto, ecdsa # TODO
+, enum34, mock
+, withOptionalDeps ? true, tcpdump, ipython
+, withCryptography ? true, cryptography
+, withVoipSupport ? true, sox
+, withPlottingSupport ? true, matplotlib
+, withGraphicsSupport ? false, pyx, texlive, graphviz, imagemagick
+, withManufDb ? false, wireshark
+# 2D/3D graphics and graphs TODO: VPython
+# TODO: nmap, numpy
+}:
+
+buildPythonPackage rec {
+ pname = "scapy";
+ version = "2.4.3";
+
+ disabled = isPyPy;
+
+ src = fetchFromGitHub {
+ owner = "secdev";
+ repo = "scapy";
+ rev = "v${version}";
+ sha256 = "08ypdzp0p3gvmz3pwi0i9q5f7hz9cq8yn6gawia49ynallwnv4zy";
+ };
+
+ # TODO: Temporary workaround
+ patches = [ ./fix-version.patch ];
+
+ postPatch = ''
+ sed -i "s/NIXPKGS_SCAPY_VERSION/${version}/" scapy/__init__.py
+ '' + lib.optionalString withManufDb ''
+ substituteInPlace scapy/data.py --replace "/opt/wireshark" "${wireshark}"
+ '';
+
+ propagatedBuildInputs = [ pycrypto ecdsa ]
+ ++ lib.optional withOptionalDeps [ tcpdump ipython ]
+ ++ lib.optional withCryptography [ cryptography ]
+ ++ lib.optional withVoipSupport [ sox ]
+ ++ lib.optional withPlottingSupport [ matplotlib ]
+ ++ lib.optional withGraphicsSupport [ pyx texlive.combined.scheme-minimal graphviz imagemagick ]
+ ++ lib.optional (isPy3k && pythonOlder "3.4") [ enum34 ]
+ ++ lib.optional doCheck [ mock ];
+
+ # Tests fail with Python 3.6 (seems to be an upstream bug, I'll investigate)
+ doCheck = if isPy3k then false else true;
+
+ meta = with lib; {
+ description = "Powerful interactive network packet manipulation program";
+ homepage = https://scapy.net/;
+ license = licenses.gpl2;
+ platforms = platforms.unix;
+ maintainers = with maintainers; [ primeos bjornfor ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/scapy/fix-version.patch b/nixpkgs/pkgs/development/python-modules/scapy/fix-version.patch
new file mode 100644
index 00000000000..c39458e9fea
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/scapy/fix-version.patch
@@ -0,0 +1,13 @@
+diff --git a/scapy/__init__.py b/scapy/__init__.py
+index d5ad6164..245ce2fb 100644
+--- a/scapy/__init__.py
++++ b/scapy/__init__.py
+@@ -90,7 +90,7 @@ def _version():
+ return 'unknown.version'
+
+
+-VERSION = __version__ = _version()
++VERSION = __version__ = "NIXPKGS_SCAPY_VERSION"
+ VERSION_MAIN = re.search(r"[0-9.]+", VERSION).group()
+
+ if __name__ == "__main__":
diff --git a/nixpkgs/pkgs/development/python-modules/schedule/default.nix b/nixpkgs/pkgs/development/python-modules/schedule/default.nix
new file mode 100644
index 00000000000..4d4ec409e02
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/schedule/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "schedule";
+ version = "0.6.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f9fb5181283de4db6e701d476dd01b6a3dd81c38462a54991ddbb9d26db857c9";
+ };
+
+ buildInputs = [ mock ];
+
+ meta = with stdenv.lib; {
+ description = "Python job scheduling for humans";
+ homepage = https://github.com/dbader/schedule;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/schema/default.nix b/nixpkgs/pkgs/development/python-modules/schema/default.nix
new file mode 100644
index 00000000000..d68f38aa4bb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/schema/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytest }:
+
+buildPythonPackage rec {
+
+ pname = "schema";
+ version = "0.6.8";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "fa1a53fe5f3b6929725a4e81688c250f46838e25d8c1885a10a590c8c01a7b74";
+ };
+
+ checkInputs = [ pytest ];
+
+ meta = with stdenv.lib; {
+ description = "Library for validating Python data structures";
+ homepage = https://github.com/keleshev/schema;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/scikit-bio/default.nix b/nixpkgs/pkgs/development/python-modules/scikit-bio/default.nix
new file mode 100644
index 00000000000..c5e36f8ac07
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/scikit-bio/default.nix
@@ -0,0 +1,54 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, cython
+, lockfile
+, cachecontrol
+, decorator
+, ipython
+, matplotlib
+, natsort
+, numpy
+, pandas
+, scipy
+, hdmedians
+, scikitlearn
+, coverage
+, python
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ version = "0.5.5";
+ pname = "scikit-bio";
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "9fa813be66e88a994f7b7a68b8ba2216e205c525caa8585386ebdeebed6428df";
+ };
+
+ buildInputs = [ cython ];
+ checkInputs = [ coverage ];
+ propagatedBuildInputs = [ lockfile cachecontrol decorator ipython matplotlib natsort numpy pandas scipy hdmedians scikitlearn ];
+
+ # remove on when version > 0.5.4
+ postPatch = ''
+ sed -i "s/numpy >= 1.9.2, < 1.14.0/numpy/" setup.py
+ sed -i "s/pandas >= 0.19.2, < 0.23.0/pandas/" setup.py
+ '';
+
+ # cython package not included for tests
+ doCheck = false;
+
+ checkPhase = ''
+ ${python.interpreter} -m skbio.test
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = http://scikit-bio.org/;
+ description = "Data structures, algorithms and educational resources for bioinformatics";
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/scikit-build/default.nix b/nixpkgs/pkgs/development/python-modules/scikit-build/default.nix
new file mode 100644
index 00000000000..91fa26ef44d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/scikit-build/default.nix
@@ -0,0 +1,44 @@
+{ lib, buildPythonPackage, fetchPypi, wheel, setuptools, packaging
+, cmake, ninja, cython, codecov, coverage, six, virtualenv, pathpy
+, pytest, pytestcov, pytest-virtualenv, pytest-mock, pytestrunner
+, requests, flake8 }:
+
+buildPythonPackage rec {
+ pname = "scikit-build";
+ version = "0.8.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1hh275lj98wgwi53mr9fqk8wh1dajjksch52xjax6a79gld4391a";
+ };
+
+ # Fixes incorrect specified requirement (part of next release)
+ patches = [ ./fix_pytestrunner_req.patch ];
+
+ propagatedBuildInputs = [ wheel setuptools packaging ];
+ checkInputs = [
+ cmake ninja cython codecov coverage six pathpy
+ pytest pytestcov pytest-mock pytest-virtualenv pytestrunner
+ requests flake8
+ ];
+
+ disabledTests = lib.concatMapStringsSep " and " (s: "not " + s) ([
+ "test_hello_develop" # tries setuptools develop install
+ "test_source_distribution" # pip has no way to install missing dependencies
+ "test_wheel" # pip has no way to install missing dependencies
+ "test_fortran_compiler" # passes if gfortran is available
+ "test_install_command" # tries to alter out path
+ "test_test_command" # tries to alter out path
+ ]);
+
+ checkPhase = ''
+ py.test -k '${disabledTests}'
+ '';
+
+ meta = with lib; {
+ homepage = http://scikit-build.org/;
+ description = "Improved build system generator for CPython C/C++/Fortran/Cython extensions";
+ license = with licenses; [ mit bsd2 ]; # BSD due to reuses of PyNE code
+ maintainers = [ maintainers.FlorianFranzen ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/scikit-build/fix_pytestrunner_req.patch b/nixpkgs/pkgs/development/python-modules/scikit-build/fix_pytestrunner_req.patch
new file mode 100644
index 00000000000..e8e19f84a5d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/scikit-build/fix_pytestrunner_req.patch
@@ -0,0 +1,13 @@
+diff --git a/setup.py b/setup.py
+index dd348fa..4de89c6 100755
+--- a/setup.py
++++ b/setup.py
+@@ -22,7 +22,7 @@ with open('requirements-dev.txt', 'r') as fp:
+ dev_requirements = list(filter(bool, (line.strip() for line in fp)))
+
+ # Require pytest-runner only when running tests
+-pytest_runner = (['pytest-runner>=2.0,<3dev']
++pytest_runner = (['pytest-runner>=2.0']
+ if any(arg in sys.argv for arg in ('pytest', 'test'))
+ else [])
+
diff --git a/nixpkgs/pkgs/development/python-modules/scikit-fmm/default.nix b/nixpkgs/pkgs/development/python-modules/scikit-fmm/default.nix
new file mode 100644
index 00000000000..122af8cfda2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/scikit-fmm/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, numpy
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "scikit-fmm";
+ version = "2019.1.30";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "eb64b6d8e30b8df8f8636d5fc4fd7ca6a9b05938ccd62518c80c1d9e823069dd";
+ };
+
+ propagatedBuildInputs = [
+ numpy
+ ];
+
+ checkPhase = ''
+ mkdir testdir; cd testdir
+ ${python.interpreter} -c "import skfmm, sys; sys.exit(skfmm.test())"
+ '';
+
+ meta = with lib; {
+ description = "A Python extension module which implements the fast marching method";
+ homepage = https://github.com/scikit-fmm/scikit-fmm;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/scikit-image/default.nix b/nixpkgs/pkgs/development/python-modules/scikit-image/default.nix
new file mode 100644
index 00000000000..e2ba35e0438
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/scikit-image/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+, cython
+, numpy
+, scipy
+, matplotlib
+, networkx
+, six
+, pillow
+, pywavelets
+, dask
+, cloudpickle
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "scikit-image";
+ version = "0.14.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1afd0b84eefd77afd1071c5c1c402553d67be2d7db8950b32d6f773f25850c1f";
+ };
+
+ buildInputs = [ cython ];
+
+ propagatedBuildInputs = [ numpy scipy matplotlib networkx six pillow pywavelets dask cloudpickle ];
+
+ checkInputs = [ pytest ];
+
+ # No tests in archive
+ doCheck = false;
+
+ meta = {
+ description = "Image processing routines for SciPy";
+ homepage = http://scikit-image.org;
+ license = lib.licenses.bsd3;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/scikit-optimize/default.nix b/nixpkgs/pkgs/development/python-modules/scikit-optimize/default.nix
new file mode 100644
index 00000000000..f82dc947b06
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/scikit-optimize/default.nix
@@ -0,0 +1,44 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, numpy
+, scipy
+, scikitlearn
+, pyaml
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "scikit-optimize";
+ version = "0.6";
+
+ src = fetchFromGitHub {
+ owner = "scikit-optimize";
+ repo = "scikit-optimize";
+ rev = "v${version}";
+ sha256 = "1srbb20k8ddhpcfxwdflapfh6xfyrd3dnclcg3bsfq1byrcmv0d4";
+ };
+
+ propagatedBuildInputs = [
+ numpy
+ scipy
+ scikitlearn
+ pyaml
+ ];
+
+ checkInputs = [
+ pytest
+ ];
+
+ # remove --ignore at next release > 0.6
+ checkPhase = ''
+ pytest skopt --ignore skopt/tests/test_searchcv.py
+ '';
+
+ meta = with lib; {
+ description = "Sequential model-based optimization toolbox";
+ homepage = https://scikit-optimize.github.io/;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/scikit-tda/default.nix b/nixpkgs/pkgs/development/python-modules/scikit-tda/default.nix
new file mode 100644
index 00000000000..0c33f7a0dab
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/scikit-tda/default.nix
@@ -0,0 +1,64 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, numpy
+, scipy
+, scikitlearn
+, matplotlib
+, numba
+, umap-learn
+, cython
+, ripser
+, persim
+, pillow
+, kmapper
+, tadasets
+, pytest
+, isPy27
+}:
+
+buildPythonPackage rec {
+ pname = "scikit-tda";
+ version = "0.0.4";
+ disabled = isPy27;
+
+ src = fetchFromGitHub {
+ owner = "scikit-tda";
+ repo = "scikit-tda";
+ rev = version;
+ sha256 = "0a90k6i9fkmc9gf250b4fidx2fzd2qrn025l74mjk51fvf23q13a";
+ };
+
+ propagatedBuildInputs = [
+ numpy
+ scipy
+ scikitlearn
+ matplotlib
+ numba
+ umap-learn
+ cython
+ ripser
+ persim
+ pillow
+ kmapper
+ tadasets
+ ];
+
+ checkInputs = [
+ pytest
+ ];
+
+ checkPhase = ''
+ pytest test
+ '';
+
+ # tests will be included in next release
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Topological Data Analysis for humans";
+ homepage = https://github.com/scikit-tda/scikit-tda;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/scikitlearn/0.20.nix b/nixpkgs/pkgs/development/python-modules/scikitlearn/0.20.nix
new file mode 100644
index 00000000000..92977331a84
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/scikitlearn/0.20.nix
@@ -0,0 +1,38 @@
+{ 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";
+ };
+
+ buildInputs = [ pillow gfortran 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 stdenv.lib; {
+ description = "A set of python modules for machine learning and data mining";
+ homepage = http://scikit-learn.org;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/scikitlearn/default.nix b/nixpkgs/pkgs/development/python-modules/scikitlearn/default.nix
new file mode 100644
index 00000000000..939782722c6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/scikitlearn/default.nix
@@ -0,0 +1,68 @@
+{ stdenv
+, lib
+, buildPythonPackage
+, fetchPypi
+, fetchpatch
+, gfortran, glibcLocales
+, numpy, scipy, pytest, pillow
+, cython
+, joblib
+, llvmPackages
+}:
+
+buildPythonPackage rec {
+ pname = "scikit-learn";
+ version = "0.21.2";
+ # 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 = "1nvj9j16y1hz9gm0qwzpnx2zmz55c63k1fai643migsyll9c7bqa";
+ };
+
+ buildInputs = [
+ pillow
+ gfortran
+ glibcLocales
+ ] ++ lib.optionals stdenv.cc.isClang [
+ llvmPackages.openmp
+ ];
+
+ nativeBuildInputs = [
+ cython
+ ];
+
+ propagatedBuildInputs = [
+ numpy
+ scipy
+ numpy.blas
+ joblib
+ ];
+ checkInputs = [ pytest ];
+
+ patches = [
+ # Fixes tests by changing threshold of a test-case that broke
+ # with numpy versions >= 1.17. This should be removed for versions > 0.21.2.
+ ( fetchpatch {
+ url = "https://github.com/scikit-learn/scikit-learn/commit/b730befc821caec5b984d9ff3aa7bc4bd7f4d9bb.patch";
+ sha256 = "0z36m05mv6d494qwq0688rgwa7c4bbnm5s2rcjlrp29fwn3fy1bv";
+ })
+ ];
+
+ 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 stdenv.lib; {
+ description = "A set of python modules for machine learning and data mining";
+ homepage = http://scikit-learn.org;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/scikits-odes/default.nix b/nixpkgs/pkgs/development/python-modules/scikits-odes/default.nix
new file mode 100644
index 00000000000..89ffe334e7f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/scikits-odes/default.nix
@@ -0,0 +1,55 @@
+{ stdenv
+, lib
+, buildPythonPackage
+, fetchFromGitHub
+, fetchurl
+, cython
+, enum34
+, gfortran
+, isPy3k
+, numpy
+, pytest
+, python
+, scipy
+, sundials_3
+}:
+
+buildPythonPackage rec {
+ pname = "scikits.odes";
+ version = "2.4.0-9-g93075ae";
+
+ # we fetch github instead of Pypi, as we want #104 and #105, which don't apply cleanly on 2.4.0
+ src = fetchFromGitHub {
+ owner = "bmcage";
+ repo = "odes";
+ rev = "93075ae25c409f572f13ca7207fada5706f73c73";
+ sha256 = "161rab7hy6r1a9xw1zby9xhnnmxi0zwdpzxfpjkw9651xn2k5xyw";
+ };
+
+ nativeBuildInputs = [
+ gfortran
+ cython
+ ];
+
+ propagatedBuildInputs = [
+ numpy
+ sundials_3
+ scipy
+ ] ++ lib.optionals (!isPy3k) [ enum34 ];
+
+ doCheck = true;
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ cd $out/${python.sitePackages}/scikits/odes/tests
+ pytest
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A scikit offering extra ode/dae solvers, as an extension to what is available in scipy";
+ homepage = https://github.com/bmcage/odes;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ flokli idontgetoutmuch ];
+ platforms = [ "aarch64-linux" "x86_64-linux" "x86_64-darwin" ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/scipy/default.nix b/nixpkgs/pkgs/development/python-modules/scipy/default.nix
new file mode 100644
index 00000000000..93488917017
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/scipy/default.nix
@@ -0,0 +1,56 @@
+{lib, fetchPypi, python, buildPythonPackage, gfortran, nose, pytest, numpy}:
+
+buildPythonPackage rec {
+ pname = "scipy";
+ version = "1.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2643cfb46d97b7797d1dbdb6f3c23fe3402904e3c90e6facfe6a9b98d808c1b5";
+ };
+
+ checkInputs = [ nose pytest ];
+ nativeBuildInputs = [ gfortran ];
+ buildInputs = [ numpy.blas ];
+ propagatedBuildInputs = [ numpy ];
+
+ # Remove tests because of broken wrapper
+ prePatch = ''
+ rm scipy/linalg/tests/test_lapack.py
+ '';
+
+ # INTERNALERROR, solved with https://github.com/scipy/scipy/pull/8871
+ # however, it does not apply cleanly.
+ doCheck = false;
+
+ preConfigure = ''
+ sed -i '0,/from numpy.distutils.core/s//import setuptools;from numpy.distutils.core/' setup.py
+ export NPY_NUM_BUILD_JOBS=$NIX_BUILD_CORES
+ '';
+
+ preBuild = ''
+ ln -s ${numpy.cfg} site.cfg
+ '';
+
+ enableParallelBuilding = true;
+
+ checkPhase = ''
+ runHook preCheck
+ pushd dist
+ ${python.interpreter} -c 'import scipy; scipy.test("fast", verbose=10)'
+ popd
+ runHook postCheck
+ '';
+
+ passthru = {
+ blas = numpy.blas;
+ };
+
+ setupPyBuildFlags = [ "--fcompiler='gnu95'" ];
+
+ meta = {
+ description = "SciPy (pronounced 'Sigh Pie') is open-source software for mathematics, science, and engineering. ";
+ homepage = https://www.scipy.org/;
+ maintainers = with lib.maintainers; [ fridh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/scour/default.nix b/nixpkgs/pkgs/development/python-modules/scour/default.nix
new file mode 100644
index 00000000000..7c198519331
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/scour/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildPythonPackage, fetchPypi, six }:
+
+buildPythonPackage rec {
+ pname = "scour";
+ version = "0.37";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "05k1f8i8v7sp5v39lian865vwvapq05a6vmvk7fwnxv8kivi6ccn";
+ };
+
+ propagatedBuildInputs = [ six ];
+
+ # No tests included in archive
+ doCheck = false;
+
+ meta = with lib; {
+ description = "An SVG Optimizer / Cleaner ";
+ homepage = https://github.com/scour-project/scour;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ worldofpeace ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/scp/default.nix b/nixpkgs/pkgs/development/python-modules/scp/default.nix
new file mode 100644
index 00000000000..c57d10cf890
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/scp/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, paramiko
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "scp";
+ version = "0.13.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1crlpw9lnn58fs1c1rmh7s7s9y5gkgpgjsqlvg9qa51kq1knx7gg";
+ };
+
+ propagatedBuildInputs = [
+ paramiko
+ ];
+
+ checkPhase = ''
+ SCPPY_PORT=10022 ${python.interpreter} test.py
+ '';
+
+ #The Pypi package doesn't include the test
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/jbardin/scp.py;
+ description = "SCP module for paramiko";
+ license = licenses.lgpl3;
+ maintainers = with maintainers; [ xnaveira ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/scrapy/default.nix b/nixpkgs/pkgs/development/python-modules/scrapy/default.nix
new file mode 100644
index 00000000000..ee1445bef5c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/scrapy/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, buildPythonPackage, fetchPypi, glibcLocales, mock, pytest, botocore,
+ testfixtures, pillow, six, twisted, w3lib, lxml, queuelib, pyopenssl,
+ service-identity, parsel, pydispatcher, cssselect, lib }:
+buildPythonPackage rec {
+ version = "1.7.3";
+ pname = "Scrapy";
+
+ checkInputs = [ glibcLocales mock pytest botocore testfixtures pillow ];
+ propagatedBuildInputs = [
+ six twisted w3lib lxml cssselect queuelib pyopenssl service-identity parsel pydispatcher
+ ];
+
+ patches = [
+ # Scrapy is usually installed via pip where copying all
+ # permissions makes sense. In Nix the files copied are owned by
+ # root and readonly. As a consequence scrapy can't edit the
+ # project templates.
+ ./permissions-fix.patch
+ ];
+
+ LC_ALL="en_US.UTF-8";
+
+ # Disable doctest plugin—enabled in the shipped pytest.ini—because it causes pytest to hang
+ # Ignore proxy tests because requires mitmproxy
+ # Ignore test_retry_dns_error because tries to resolve an invalid dns and weirdly fails with "Reactor was unclean"
+ # Ignore xml encoding test on darwin because lxml can't find encodings https://bugs.launchpad.net/lxml/+bug/707396
+ checkPhase = ''
+ substituteInPlace pytest.ini --replace "addopts = --doctest-modules" "addopts ="
+ pytest --ignore=tests/test_linkextractors_deprecated.py --ignore=tests/test_proxy_connect.py --deselect tests/test_crawl.py::CrawlTestCase::test_retry_dns_error ${lib.optionalString stdenv.isDarwin "--deselect tests/test_utils_iterators.py::LxmlXmliterTestCase::test_xmliter_encoding"}
+ '';
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "fe5a40177960e97d42d1c752a73edb40f76a85a24076dec8535cffa499eb08c8";
+ };
+
+ postInstall = ''
+ install -m 644 -D extras/scrapy.1 $out/share/man/man1/scrapy.1
+ install -m 644 -D extras/scrapy_bash_completion $out/share/bash-completion/completions/scrapy
+ install -m 644 -D extras/scrapy_zsh_completion $out/share/zsh/site-functions/_scrapy
+ '';
+
+ meta = with lib; {
+ description = "A fast high-level web crawling and web scraping framework, used to crawl websites and extract structured data from their pages";
+ homepage = https://scrapy.org/;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ drewkett marsam ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/scrapy/permissions-fix.patch b/nixpkgs/pkgs/development/python-modules/scrapy/permissions-fix.patch
new file mode 100644
index 00000000000..53038cf74e5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/scrapy/permissions-fix.patch
@@ -0,0 +1,23 @@
+diff --git a/scrapy/commands/startproject.py b/scrapy/commands/startproject.py
+index 5941066..89f8edb 100644
+--- a/scrapy/commands/startproject.py
++++ b/scrapy/commands/startproject.py
+@@ -4,7 +4,7 @@ import os
+ import string
+ from importlib import import_module
+ from os.path import join, exists, abspath
+-from shutil import ignore_patterns, move, copy2, copystat
++from shutil import ignore_patterns, move, copyfile, copystat
+
+ import scrapy
+ from scrapy.commands import ScrapyCommand
+@@ -76,8 +76,7 @@ class Command(ScrapyCommand):
+ if os.path.isdir(srcname):
+ self._copytree(srcname, dstname)
+ else:
+- copy2(srcname, dstname)
+- copystat(src, dst)
++ copyfile(srcname, dstname)
+
+ def run(self, args, opts):
+ if len(args) not in (1, 2):
diff --git a/nixpkgs/pkgs/development/python-modules/scripttest/default.nix b/nixpkgs/pkgs/development/python-modules/scripttest/default.nix
new file mode 100644
index 00000000000..2ae7a4c8e36
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/scripttest/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+}:
+
+buildPythonPackage rec {
+ version = "1.3";
+ pname = "scripttest";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "951cfc25219b0cd003493a565f2e621fd791beaae9f9a3bdd7024d8626419c38";
+ };
+
+ buildInputs = [ pytest ];
+
+ # Tests are not included. See https://github.com/pypa/scripttest/issues/11
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A library for testing interactive command-line applications";
+ homepage = https://pypi.python.org/pypi/ScriptTest/;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sdnotify/default.nix b/nixpkgs/pkgs/development/python-modules/sdnotify/default.nix
new file mode 100644
index 00000000000..47845382178
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sdnotify/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "sdnotify";
+ version = "0.3.2";
+
+ src = fetchPypi {
+ sha256 = "1wdrdg2j16pmqhk0ify20s5pngijh7zc6hyxhh8w8v5k8v3pz5vk";
+ inherit pname version;
+ };
+
+ meta = with stdenv.lib; {
+ description = "A pure Python implementation of systemd's service notification protocol";
+ homepage = https://github.com/bb4242/sdnotify;
+ license = licenses.mit;
+ maintainers = with maintainers; [ pmiddend ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/seaborn/default.nix b/nixpkgs/pkgs/development/python-modules/seaborn/default.nix
new file mode 100644
index 00000000000..d596c640823
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/seaborn/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, nose
+, pandas
+, matplotlib
+}:
+
+buildPythonPackage rec {
+ pname = "seaborn";
+ version = "0.9.0";
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "76c83f794ca320fb6b23a7c6192d5e185a5fcf4758966a0c0a54baee46d41e2f";
+ };
+
+ checkInputs = [ nose ];
+ propagatedBuildInputs = [ pandas matplotlib ];
+
+ checkPhase = ''
+ nosetests -v
+ '';
+
+ # Computationally very demanding tests
+ doCheck = false;
+
+ meta = {
+ description = "Statisitical data visualization";
+ homepage = "http://stanford.edu/~mwaskom/software/seaborn/";
+ license = with lib.licenses; [ bsd3 ];
+ maintainers = with lib.maintainers; [ fridh ];
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/seabreeze/default.nix b/nixpkgs/pkgs/development/python-modules/seabreeze/default.nix
new file mode 100644
index 00000000000..8555c024c76
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/seabreeze/default.nix
@@ -0,0 +1,44 @@
+{ stdenv
+, fetchFromGitHub
+, buildPythonPackage
+, pyusb
+, numpy
+}:
+
+## Usage
+# In NixOS, simply add the `udev` multiple output to services.udev.packages:
+# services.udev.packages = [ pkgs.python3Packages.seabreeze.udev ];
+
+buildPythonPackage rec {
+ pname = "seabreeze";
+ version = "0.6.0";
+
+ src = fetchFromGitHub {
+ owner = "ap--";
+ repo = "python-seabreeze";
+ rev = "python-seabreeze-v${version}";
+ sha256 = "0bc2s9ic77gz9m40w89snixphxlzib60xa4f49n4zasjrddfz1l8";
+ };
+
+ outputs = [ "out" "udev" ];
+
+ postInstall = ''
+ mkdir -p $udev/lib/udev/rules.d
+ cp misc/10-oceanoptics.rules $udev/lib/udev/rules.d/10-oceanoptics.rules
+ '';
+
+ # underlying c libraries are tested and fail
+ # (c libs are used with anaconda, which we don't care about as we use the alternative path, being that of pyusb).
+ doCheck = false;
+
+ propagatedBuildInputs = [ pyusb numpy ];
+
+ setupPyBuildFlags = [ "--without-cseabreeze" ];
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/ap--/python-seabreeze";
+ description = "A python library to access Ocean Optics spectrometers";
+ maintainers = [];
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/secp256k1/default.nix b/nixpkgs/pkgs/development/python-modules/secp256k1/default.nix
new file mode 100644
index 00000000000..6b9f00783fd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/secp256k1/default.nix
@@ -0,0 +1,48 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pkgconfig
+, pytest
+, pytestrunner
+, cffi
+, secp256k1
+}:
+
+buildPythonPackage rec {
+ pname = "secp256k1";
+ version = "0.13.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a3b43e02d321c09eafa769a6fc2c156f555cab3a7db62175ef2fd21e16cdf20c";
+ };
+
+ nativeBuildInputs = [ pkgconfig ];
+ checkInputs = [ pytest pytestrunner ];
+ propagatedBuildInputs = [ cffi secp256k1 ];
+
+ # Tests are not included in archive
+ doCheck = false;
+
+ preConfigure = ''
+ cp -r ${secp256k1.src} libsecp256k1
+ touch libsecp256k1/autogen.sh
+ export INCLUDE_DIR=${secp256k1}/include
+ export LIB_DIR=${secp256k1}/lib
+ '';
+
+ checkPhase = ''
+ py.test tests
+ '';
+
+ postPatch = ''
+ substituteInPlace setup.py --replace ", 'pytest-runner==2.6.2'" ""
+ '';
+
+ meta = {
+ homepage = https://github.com/ludbb/secp256k1-py;
+ description = "Python FFI bindings for secp256k1";
+ license = with lib.licenses; [ mit ];
+ maintainers = with lib.maintainers; [ chris-martin ];
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/secretstorage/2.nix b/nixpkgs/pkgs/development/python-modules/secretstorage/2.nix
new file mode 100644
index 00000000000..8fa044e638a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/secretstorage/2.nix
@@ -0,0 +1,24 @@
+{ 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/nixpkgs/pkgs/development/python-modules/secretstorage/default.nix b/nixpkgs/pkgs/development/python-modules/secretstorage/default.nix
new file mode 100644
index 00000000000..e2c3e975b9a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/secretstorage/default.nix
@@ -0,0 +1,30 @@
+{ lib, fetchPypi, buildPythonPackage, pythonOlder, cryptography, jeepney, pygobject3 }:
+
+buildPythonPackage rec {
+ pname = "secretstorage";
+ version = "3.1.1";
+
+ disabled = pythonOlder "3.5";
+
+ src = fetchPypi {
+ pname = "SecretStorage";
+ inherit version;
+ sha256 = "14lznnn916ddn6yrd3w2nr2zq49zc8hw53yjz1k9yhd492p9gir0";
+ };
+
+ propagatedBuildInputs = [
+ cryptography
+ jeepney
+ pygobject3
+ ];
+
+ # 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; [ teto ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/seekpath/default.nix b/nixpkgs/pkgs/development/python-modules/seekpath/default.nix
new file mode 100644
index 00000000000..7578b047940
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/seekpath/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, buildPythonPackage, fetchPypi, numpy, future, spglib, glibcLocales, pytest }:
+
+buildPythonPackage rec {
+ pname = "seekpath";
+ version = "1.8.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b61dadba82acc0838402981b7944155adc092b114ca81f53f61b1d498a512e3a";
+ };
+
+ LC_ALL = "en_US.utf-8";
+
+ propagatedBuildInputs = [ numpy spglib future ];
+
+ nativeBuildInputs = [ glibcLocales ];
+
+ checkInputs = [ pytest ];
+
+ # I don't know enough about crystal structures to fix
+ checkPhase = ''
+ pytest . -k 'not oI2Y'
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A module to obtain and visualize band paths in the Brillouin zone of crystal structures.";
+ homepage = "https://github.com/giovannipizzi/seekpath";
+ license = licenses.mit;
+ maintainers = with maintainers; [ psyanticy ];
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/selectors2/default.nix b/nixpkgs/pkgs/development/python-modules/selectors2/default.nix
new file mode 100644
index 00000000000..030178fef83
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/selectors2/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, nose, psutil, mock }:
+
+buildPythonPackage rec {
+ version = "2.0.1";
+ pname = "selectors2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "81b77c4c6f607248b1d6bbdb5935403fef294b224b842a830bbfabb400c81884";
+ };
+
+ checkInputs = [ nose psutil mock ];
+
+ checkPhase = ''
+ # https://github.com/NixOS/nixpkgs/pull/46186#issuecomment-419450064
+ # Trick to disable certain tests that depend on timing which
+ # will always fail on hydra
+ export TRAVIS=""
+ nosetests tests/test_selectors2.py
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://www.github.com/SethMichaelLarson/selectors2;
+ description = "Back-ported, durable, and portable selectors";
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/selectors34/default.nix b/nixpkgs/pkgs/development/python-modules/selectors34/default.nix
new file mode 100644
index 00000000000..7bb66be3096
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/selectors34/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "selectors34";
+ version = "1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "09f5066337f8a76fb5233f267873f89a27a17c10bf79575954894bb71686451c";
+ };
+
+ propagatedBuildInputs = [ six ];
+
+ checkPhase = ''
+ ${python.interpreter} setup.py test
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A backport of the selectors module from Python 3.4";
+ homepage = https://github.com/berkerpeksag/selectors34;
+ license = licenses.psfl;
+ maintainers = with maintainers; [ prusnak ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/selenium/default.nix b/nixpkgs/pkgs/development/python-modules/selenium/default.nix
new file mode 100644
index 00000000000..ada159aaa12
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/selenium/default.nix
@@ -0,0 +1,56 @@
+{ lib
+, stdenv
+, fetchPypi
+, fetchFromGitHub
+, buildPythonPackage
+, geckodriver
+, urllib3
+, xorg
+}:
+
+
+let
+ # Recompiling x_ignore_nofocus.so as the original one dlopen's libX11.so.6 by some
+ # absolute paths. Replaced by relative path so it is found when used in nix.
+ x_ignore_nofocus =
+ fetchFromGitHub {
+ owner = "SeleniumHQ";
+ repo = "selenium";
+ rev = "selenium-3.6.0";
+ sha256 = "13wf4hx4i7nhl4s8xkziwxl0km1j873syrj4amragj6mpip2wn8v";
+ };
+in
+
+buildPythonPackage rec {
+ pname = "selenium";
+ version = "3.141.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "039hf9knvl4s3hp21bzwsp1g5ri9gxsh504dp48lc6nr1av35byy";
+ };
+
+ buildInputs = [xorg.libX11];
+
+ propagatedBuildInputs = [
+ geckodriver urllib3
+ ];
+
+ patchPhase = stdenv.lib.optionalString stdenv.isLinux ''
+ cp "${x_ignore_nofocus}/cpp/linux-specific/"* .
+ substituteInPlace x_ignore_nofocus.c --replace "/usr/lib/libX11.so.6" "${xorg.libX11.out}/lib/libX11.so.6"
+ cc -c -fPIC x_ignore_nofocus.c -o x_ignore_nofocus.o
+ cc -shared \
+ -Wl,${if stdenv.isDarwin then "-install_name" else "-soname"},x_ignore_nofocus.so \
+ -o x_ignore_nofocus.so \
+ x_ignore_nofocus.o
+ cp -v x_ignore_nofocus.so selenium/webdriver/firefox/${if stdenv.is64bit then "amd64" else "x86"}/
+ '';
+
+ meta = with lib; {
+ description = "The selenium package is used to automate web browser interaction from Python";
+ homepage = http://www.seleniumhq.org;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ jraygauthier ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/semantic-version/default.nix b/nixpkgs/pkgs/development/python-modules/semantic-version/default.nix
new file mode 100644
index 00000000000..4fcc19e57fc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/semantic-version/default.nix
@@ -0,0 +1,20 @@
+{ lib, fetchPypi, buildPythonPackage }:
+
+buildPythonPackage rec {
+ pname = "semantic_version";
+ version = "2.8.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1lnnpxmf3z1rcfr5n562vbraq236s13wlj8fmw2kwr2mrq7lqb8r";
+ };
+
+ # ModuleNotFoundError: No module named 'tests'
+ doCheck = false;
+
+ meta = with lib; {
+ description = "A library implementing the 'SemVer' scheme";
+ license = licenses.bsdOriginal;
+ maintainers = with maintainers; [ layus makefu ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/semantic/default.nix b/nixpkgs/pkgs/development/python-modules/semantic/default.nix
new file mode 100644
index 00000000000..b5855fbb143
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/semantic/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, 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 stdenv.lib; {
+ description = "Common Natural Language Processing Tasks for Python";
+ homepage = https://github.com/crm416/semantic;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/semver/default.nix b/nixpkgs/pkgs/development/python-modules/semver/default.nix
new file mode 100644
index 00000000000..3201de0ba46
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/semver/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, buildPythonPackage, pytest }:
+
+buildPythonPackage {
+ pname = "semver";
+ version = "2.8.1";
+
+ src = fetchFromGitHub {
+ owner = "k-bx";
+ repo = "python-semver";
+ rev = "41775dd5f143dfa6ca94885056c9ef5b3ed4e6e1"; # not tagged in repository
+ sha256 = "1rqaakha4sw06k9h0h4g1wmk66zkmhpq92y2rw0kyfpp6xk1zbk2";
+ };
+
+ checkInputs = [ pytest ];
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Python package to work with Semantic Versioning (http://semver.org/)";
+ homepage = https://github.com/k-bx/python-semver;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ np ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/send2trash/default.nix b/nixpkgs/pkgs/development/python-modules/send2trash/default.nix
new file mode 100644
index 00000000000..35115a45716
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/send2trash/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytest
+, configparser
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "Send2Trash";
+ version = "1.4.2";
+
+ src = fetchFromGitHub {
+ owner = "hsoft";
+ repo = "send2trash";
+ rev = version;
+ sha256 = "1w502i5h8xaqf03g6h95h4vs1wqfv6kg925dn63phrwmg1hfz2xx";
+ };
+
+ doCheck = !stdenv.isDarwin;
+ checkPhase = "HOME=. py.test";
+ checkInputs = [ pytest ] ++ lib.optional (!isPy3k) configparser;
+
+ meta = with lib; {
+ description = "Send file to trash natively under macOS, Windows and Linux";
+ homepage = https://github.com/hsoft/send2trash;
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sentinel/default.nix b/nixpkgs/pkgs/development/python-modules/sentinel/default.nix
new file mode 100644
index 00000000000..e8ed047e03f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sentinel/default.nix
@@ -0,0 +1,17 @@
+{ lib, buildPythonPackage, fetchPypi}:
+
+buildPythonPackage rec {
+ pname = "sentinel";
+ version = "0.1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c00ba2a4f240ea4c5414059a696d6e128730272cb2c631b2eff42e86da1f89b3";
+ };
+
+ meta = with lib; {
+ description = "Create sentinel and singleton objects";
+ homepage = "https://github.com/eddieantonio/sentinel";
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sentry-sdk/default.nix b/nixpkgs/pkgs/development/python-modules/sentry-sdk/default.nix
new file mode 100644
index 00000000000..c3cc1baaf43
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sentry-sdk/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi, urllib3, certifi, django, flask, tornado, sanic, aiohttp, bottle, rq, falcon, pyramid, celery }:
+
+buildPythonPackage rec {
+ pname = "sentry-sdk";
+ version = "0.8.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f5819df450d7b0696be69a0c6d70a09e4890a3844ee8ccb7a461794135bd5965";
+ };
+
+ checkInputs = [ django flask tornado sanic aiohttp bottle rq falcon pyramid celery ];
+
+ propagatedBuildInputs = [ urllib3 certifi ];
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/getsentry/sentry-python";
+ description = "New Python SDK for Sentry.io";
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ gebner ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sepaxml/default.nix b/nixpkgs/pkgs/development/python-modules/sepaxml/default.nix
new file mode 100644
index 00000000000..6e6809663a6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sepaxml/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, isPy27
+, lxml
+, pytest
+, text-unidecode
+, xmlschema
+}:
+
+buildPythonPackage rec {
+ version = "2.1.0";
+ pname = "sepaxml";
+ disabled = isPy27;
+
+ src = fetchFromGitHub {
+ owner = "raphaelm";
+ repo = "python-sepaxml";
+ rev = version;
+ sha256 = "0lkb0nnyxmwvm6gkwls8w2290b66lwz9bv8p39wwcn7flabviwhj";
+ };
+
+ propagatedBuildInputs = [
+ text-unidecode
+ xmlschema
+ ];
+
+ checkInputs = [ pytest lxml ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/raphaelm/python-sepaxml/;
+ description = "SEPA Direct Debit XML generation in python";
+ license = licenses.mit;
+ maintainers = with maintainers; [ elohmeier ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/seqdiag/default.nix b/nixpkgs/pkgs/development/python-modules/seqdiag/default.nix
new file mode 100644
index 00000000000..1f6307f2cbb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/seqdiag/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, buildPythonPackage, pep8, nose, unittest2, docutils
+, blockdiag
+}:
+
+buildPythonPackage rec {
+ pname = "seqdiag";
+ version = "0.9.6";
+
+ src = fetchurl {
+ url = "mirror://pypi/s/seqdiag/${pname}-${version}.tar.gz";
+ sha256 = "78104e7644c1a4d3a5cacb68de6a7f720793f08dd78561ef0e9e80bed63702bf";
+ };
+
+ buildInputs = [ pep8 nose unittest2 docutils ];
+
+ propagatedBuildInputs = [ blockdiag ];
+
+ # Tests fail:
+ # ...
+ # ERROR: Failure: OSError ([Errno 2] No such file or directory: '/tmp/nix-build-python2.7-seqdiag-0.9.0.drv-0/seqdiag-0.9.0/src/seqdiag/tests/diagrams/')
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Generate sequence-diagram image from spec-text file (similar to Graphviz)";
+ homepage = http://blockdiag.com/;
+ license = licenses.asl20;
+ platforms = platforms.unix;
+ maintainers = with maintainers; [ bjornfor ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/serpent/default.nix b/nixpkgs/pkgs/development/python-modules/serpent/default.nix
new file mode 100644
index 00000000000..887d0c54424
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/serpent/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, lib
+, python
+, isPy27
+, isPy33
+, enum34
+}:
+
+buildPythonPackage rec {
+ pname = "serpent";
+ version = "1.27";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6f8dc4317fb5b5a9629b5e518846bc9fee374b8171533726dc68df52b36ee912";
+ };
+
+ propagatedBuildInputs = lib.optionals (isPy27 || isPy33) [ enum34 ];
+
+ checkPhase = ''
+ ${python.interpreter} setup.py test
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A simple serialization library based on ast.literal_eval";
+ homepage = https://github.com/irmen/Serpent;
+ license = licenses.mit;
+ maintainers = with maintainers; [ prusnak ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/serpy/default.nix b/nixpkgs/pkgs/development/python-modules/serpy/default.nix
new file mode 100644
index 00000000000..b627322307d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/serpy/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildPythonPackage, fetchPypi,
+ flake8, py, pyflakes, six, tox
+}:
+
+buildPythonPackage rec {
+ pname = "serpy";
+ version = "0.3.1";
+
+ meta = {
+ description = "ridiculously fast object serialization";
+ homepage = https://github.com/clarkduvall/serpy;
+ license = lib.licenses.mit;
+ };
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "3772b2a9923fbf674000ff51abebf6ea8f0fca0a2cfcbfa0d63ff118193d1ec5";
+ };
+
+ buildInputs = [ flake8 py pyflakes tox ];
+ propagatedBuildInputs = [ six ];
+
+ # ImportError: No module named 'tests
+ doCheck = false;
+}
diff --git a/nixpkgs/pkgs/development/python-modules/serverlessrepo/default.nix b/nixpkgs/pkgs/development/python-modules/serverlessrepo/default.nix
new file mode 100644
index 00000000000..c6795f17206
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/serverlessrepo/default.nix
@@ -0,0 +1,46 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+, boto3
+, six
+, pyyaml
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "serverlessrepo";
+ version = "0.1.8";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "533389d41a51450e50cc01405ab766550170149c08e1c85b3a1559b0fab4cb25";
+ };
+
+ propagatedBuildInputs = [
+ six
+ boto3
+ pyyaml
+ ];
+
+ checkInputs = [ pytest mock ];
+
+ checkPhase = ''
+ pytest tests/unit
+ '';
+
+ postPatch = ''
+ substituteInPlace setup.py --replace "pyyaml~=3.12" "pyyaml~=5.1"
+ '';
+
+ meta = with lib; {
+ homepage = https://github.com/awslabs/aws-serverlessrepo-python;
+ description = "Helpers for working with the AWS Serverless Application Repository";
+ longDescription = ''
+ A Python library with convenience helpers for working with the
+ AWS Serverless Application Repository.
+ '';
+ license = lib.licenses.asl20;
+ maintainers = with maintainers; [ dhkl ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/serversyncstorage/default.nix b/nixpkgs/pkgs/development/python-modules/serversyncstorage/default.nix
new file mode 100644
index 00000000000..2f7acce976d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/serversyncstorage/default.nix
@@ -0,0 +1,47 @@
+{ stdenv
+, 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 stdenv.lib; {
+ broken = cornice.version != "0.17";
+ description = "The SyncServer server software, as used by Firefox Sync";
+ homepage = https://github.com/mozilla-services/server-syncstorage;
+ license = licenses.mpl20;
+ maintainers = with maintainers; [ nadrieril ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/service_identity/default.nix b/nixpkgs/pkgs/development/python-modules/service_identity/default.nix
new file mode 100644
index 00000000000..f39dd48232b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/service_identity/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+, cryptography
+, ipaddress
+, pyasn1
+, pyasn1-modules
+, idna
+, attrs
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "service_identity";
+ version = "18.1.0";
+
+ src = fetchFromGitHub {
+ owner = "pyca";
+ repo = pname;
+ rev = version;
+ sha256 = "1aw475ksmd4vpl8cwfdcsw2v063nbhnnxpy633sb75iqp9aazhlx";
+ };
+
+ propagatedBuildInputs = [
+ pyasn1 pyasn1-modules idna attrs cryptography
+ ] ++ lib.optionals (pythonOlder "3.3") [ ipaddress ];
+
+ checkInputs = [ pytest ];
+ checkPhase = "py.test";
+
+ meta = with lib; {
+ description = "Service identity verification for pyOpenSSL";
+ license = licenses.mit;
+ homepage = https://service-identity.readthedocs.io;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/setproctitle/default.nix b/nixpkgs/pkgs/development/python-modules/setproctitle/default.nix
new file mode 100644
index 00000000000..e45638edd10
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/setproctitle/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "setproctitle";
+ version = "1.1.10";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6283b7a58477dd8478fbb9e76defb37968ee4ba47b05ec1c053cb39638bd7398";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Allows a process to change its title (as displayed by system tools such as ps and top)";
+ homepage = https://github.com/dvarrazzo/py-setproctitle;
+ license = licenses.bsdOriginal;
+ maintainers = with maintainers; [ exi ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/setuptools-git/default.nix b/nixpkgs/pkgs/development/python-modules/setuptools-git/default.nix
new file mode 100644
index 00000000000..862a7bc2778
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/setuptools-git/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pkgs
+}:
+
+buildPythonPackage rec {
+ pname = "setuptools-git";
+ version = "1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ff64136da01aabba76ae88b050e7197918d8b2139ccbf6144e14d472b9c40445";
+ };
+
+ propagatedBuildInputs = [ pkgs.git ];
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Setuptools revision control system plugin for Git";
+ homepage = https://pypi.python.org/pypi/setuptools-git;
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/setuptools-scm-git-archive/default.nix b/nixpkgs/pkgs/development/python-modules/setuptools-scm-git-archive/default.nix
new file mode 100644
index 00000000000..9c08871339a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/setuptools-scm-git-archive/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, fetchPypi, setuptools_scm, pytest }:
+
+buildPythonPackage rec {
+ pname = "setuptools-scm-git-archive";
+ version = "1.1";
+
+ src = fetchPypi {
+ inherit version;
+ pname = "setuptools_scm_git_archive";
+ sha256 = "6026f61089b73fa1b5ee737e95314f41cb512609b393530385ed281d0b46c062";
+ };
+
+ nativeBuildInputs = [ setuptools_scm ];
+
+ checkInputs = [ pytest ];
+
+ meta = with stdenv.lib; {
+ description = "setuptools_scm plugin for git archives";
+ homepage = "https://github.com/Changaco/setuptools_scm_git_archive";
+ license = licenses.mit;
+ maintainers = [ maintainers.marsam ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/setuptools/default.nix b/nixpkgs/pkgs/development/python-modules/setuptools/default.nix
new file mode 100644
index 00000000000..569ff017ea9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/setuptools/default.nix
@@ -0,0 +1,48 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+, wrapPython
+, unzip
+, callPackage
+, bootstrapped-pip
+}:
+
+buildPythonPackage rec {
+ pname = "setuptools";
+ version = "41.2.0";
+ format = "other";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "66b86bbae7cc7ac2e867f52dc08a6bd064d938bac59dfec71b9b565dd36d6012";
+ };
+
+ # There is nothing to build
+ dontBuild = true;
+
+ nativeBuildInputs = [ bootstrapped-pip ];
+
+ installPhase = ''
+ dst=$out/${python.sitePackages}
+ mkdir -p $dst
+ export PYTHONPATH="$dst:$PYTHONPATH"
+ ${python.pythonForBuild.interpreter} setup.py install --prefix=$out
+ wrapPythonPrograms
+ '';
+
+ # Adds setuptools to nativeBuildInputs causing infinite recursion.
+ catchConflicts = false;
+
+ # Requires pytest, causing infinite recursion.
+ doCheck = false;
+
+ meta = with stdenv.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/nixpkgs/pkgs/development/python-modules/setuptools_scm/default.nix b/nixpkgs/pkgs/development/python-modules/setuptools_scm/default.nix
new file mode 100644
index 00000000000..eda01679528
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/setuptools_scm/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, buildPythonPackage, fetchPypi, pip }:
+
+buildPythonPackage rec {
+ pname = "setuptools_scm";
+ version = "3.3.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "19cyndx23xmpbhz4qrwmfwsmnnaczd0dw7qg977ksq2dbvxy29dx";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = https://bitbucket.org/pypa/setuptools_scm/;
+ description = "Handles managing your python package versions in scm metadata";
+ license = licenses.mit;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/setuptoolsdarcs/default.nix b/nixpkgs/pkgs/development/python-modules/setuptoolsdarcs/default.nix
new file mode 100644
index 00000000000..d696a5be08f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/setuptoolsdarcs/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, 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 stdenv.lib; {
+ description = "Setuptools plugin for the Darcs version control system";
+ homepage = http://allmydata.org/trac/setuptools_darcs;
+ license = licenses.bsd0;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/setuptoolstrial/default.nix b/nixpkgs/pkgs/development/python-modules/setuptoolstrial/default.nix
new file mode 100644
index 00000000000..b393d0eb200
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/setuptoolstrial/default.nix
@@ -0,0 +1,38 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, virtualenv
+, pytestrunner
+, pytest-virtualenv
+, twisted
+, pathlib2
+}:
+
+buildPythonPackage rec {
+ pname = "setuptools_trial";
+ version = "0.6.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "14220f8f761c48ba1e2526f087195077cf54fad7098b382ce220422f0ff59b12";
+ };
+
+ buildInputs = [ pytest virtualenv pytestrunner pytest-virtualenv ];
+ propagatedBuildInputs = [ twisted pathlib2 ];
+
+ postPatch = ''
+ sed -i '12,$d' tests/test_main.py
+ '';
+
+ # Couldn't get tests working
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Setuptools plugin that makes unit tests execute with trial instead of pyunit.";
+ homepage = "https://github.com/rutsky/setuptools-trial";
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ ryansydnor nand0p ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sexpdata/default.nix b/nixpkgs/pkgs/development/python-modules/sexpdata/default.nix
new file mode 100644
index 00000000000..1e282f9660a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sexpdata/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "sexpdata";
+ version = "0.0.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1ac827a616c5e87ebb60fd6686fb86f8a166938c645f4089d92de3ffbdd494e0";
+ };
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "S-expression parser for Python";
+ homepage = "https://github.com/tkf/sexpdata";
+ license = licenses.bsd0;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sh/default.nix b/nixpkgs/pkgs/development/python-modules/sh/default.nix
new file mode 100644
index 00000000000..aa18f07e49e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sh/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, buildPythonPackage, fetchPypi, fetchpatch, python, coverage, lsof, glibcLocales }:
+
+buildPythonPackage rec {
+ pname = "sh";
+ version = "1.12.14";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1z2hx357xp3v4cv44xmqp7lli3frndqpyfmpbxf7n76h7s1zaaxm";
+ };
+
+ patches = [
+ # Disable tests that fail on Darwin
+ # Some of the failures are due to Nix using GNU coreutils
+ ./disable-broken-tests-darwin.patch
+ # Fix tests for Python 3.7. See: https://github.com/amoffat/sh/pull/468
+ (fetchpatch {
+ url = "https://github.com/amoffat/sh/commit/b6202f75706473f02084d819e0765056afa43664.patch";
+ sha256 = "1kzxyxcc88zhgn2kmfg9yrbs4n405b2jq7qykb453l52hy10vi94";
+ excludes = [ ".travis.yml" ];
+ })
+ ];
+
+ postPatch = ''
+ sed -i 's#/usr/bin/env python#${python.interpreter}#' test.py
+ '';
+
+ checkInputs = [ coverage lsof glibcLocales ];
+
+ # A test needs the HOME directory to be different from $TMPDIR.
+ preCheck = ''
+ export LC_ALL="en_US.UTF-8"
+ HOME=$(mktemp -d)
+ '';
+
+ meta = {
+ description = "Python subprocess interface";
+ homepage = https://pypi.python.org/pypi/sh/;
+ license = stdenv.lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sh/disable-broken-tests-darwin.patch b/nixpkgs/pkgs/development/python-modules/sh/disable-broken-tests-darwin.patch
new file mode 100644
index 00000000000..6488dd1ffea
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sh/disable-broken-tests-darwin.patch
@@ -0,0 +1,49 @@
+From 264f2f6a04d25156bba43524a6b172d2e99c53f4 Mon Sep 17 00:00:00 2001
+From: Ben Wolsieffer <benwolsieffer@gmail.com>
+Date: Fri, 21 Dec 2018 17:39:45 -0500
+Subject: [PATCH] Disable tests that fail on OSX.
+
+Some of the failures are due to the use of GNU ls.
+---
+ test.py | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/test.py b/test.py
+index 68ef40c..2f53360 100644
+--- a/test.py
++++ b/test.py
+@@ -352,6 +352,7 @@ exit(3)
+ self.assertEqual(sed(_in="one test three", e="s/test/two/").strip(),
+ "one two three")
+
++ @not_osx
+ def test_ok_code(self):
+ from sh import ls, ErrorReturnCode_1, ErrorReturnCode_2
+
+@@ -498,6 +499,7 @@ while True:
+ self.assertEqual(out, match)
+
+
++ @not_osx
+ def test_environment(self):
+ """ tests that environments variables that we pass into sh commands
+ exist in the environment, and on the sh module """
+@@ -861,6 +863,7 @@ print(sys.argv[1])
+ self.assertTrue(now - start > sleep_time)
+
+
++ @not_osx
+ def test_background_exception(self):
+ from sh import ls, ErrorReturnCode_1, ErrorReturnCode_2
+ p = ls("/ofawjeofj", _bg=True) # should not raise
+@@ -2036,6 +2039,7 @@ else:
+ self.assertEqual(p, "test")
+
+
++ @not_osx
+ def test_signal_exception(self):
+ from sh import SignalException_15
+
+--
+2.20.0
+
diff --git a/nixpkgs/pkgs/development/python-modules/shamir-mnemonic/default.nix b/nixpkgs/pkgs/development/python-modules/shamir-mnemonic/default.nix
new file mode 100644
index 00000000000..13a946aeafd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/shamir-mnemonic/default.nix
@@ -0,0 +1,22 @@
+{ lib, fetchPypi, buildPythonPackage, isPy3k, click, colorama }:
+
+buildPythonPackage rec {
+ pname = "shamir-mnemonic";
+ version = "0.1.0";
+
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1cc08d276e05b13cd32bd3b0c5d1cb6c30254e0086e0f6857ec106d4cceff121";
+ };
+
+ propagatedBuildInputs = [ click colorama ];
+
+ meta = with lib; {
+ description = "Reference implementation of SLIP-0039";
+ homepage = "https://github.com/trezor/python-shamir-mnemonic";
+ license = licenses.mit;
+ maintainers = [ maintainers."1000101" ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/shapely/default.nix b/nixpkgs/pkgs/development/python-modules/shapely/default.nix
new file mode 100644
index 00000000000..220726733dc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/shapely/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, buildPythonPackage, fetchPypi, substituteAll
+, geos, pytest, cython
+, numpy
+}:
+
+buildPythonPackage rec {
+ pname = "Shapely";
+ version = "1.6.4.post2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c4b87bb61fc3de59fc1f85e71a79b0c709dc68364d9584473697aad4aa13240f";
+ };
+
+ nativeBuildInputs = [
+ geos # for geos-config
+ cython
+ ];
+
+ checkInputs = [ pytest ];
+
+ propagatedBuildInputs = [ numpy ];
+
+ # environment variable used in shapely/_buildcfg.py
+ GEOS_LIBRARY_PATH = "${geos}/lib/libgeos_c${stdenv.hostPlatform.extensions.sharedLibrary}";
+
+ patches = [
+ (substituteAll {
+ src = ./library-paths.patch;
+ libgeos_c = GEOS_LIBRARY_PATH;
+ libc = "${stdenv.cc.libc}/lib/libc${stdenv.hostPlatform.extensions.sharedLibrary}"
+ + stdenv.lib.optionalString (!stdenv.isDarwin) ".6";
+ })
+ ];
+
+ # Disable the tests that improperly try to use the built extensions
+ checkPhase = ''
+ rm -r shapely # prevent import of local shapely
+ py.test tests
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Geometric objects, predicates, and operations";
+ maintainers = with maintainers; [ knedlsepp ];
+ homepage = "https://pypi.python.org/pypi/Shapely/";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/shapely/library-paths.patch b/nixpkgs/pkgs/development/python-modules/shapely/library-paths.patch
new file mode 100644
index 00000000000..f75ad7a9486
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/shapely/library-paths.patch
@@ -0,0 +1,127 @@
+diff --git a/shapely/geos.py b/shapely/geos.py
+index 09bf1ab..837aa98 100644
+--- a/shapely/geos.py
++++ b/shapely/geos.py
+@@ -55,100 +55,10 @@ def load_dll(libname, fallbacks=None, mode=DEFAULT_MODE):
+ "Could not find lib {0} or load any of its variants {1}.".format(
+ libname, fallbacks or []))
+
+-_lgeos = None
+-
+-if sys.platform.startswith('linux'):
+- # Test to see if we have a wheel repaired by 'auditwheel' containing its
+- # own libgeos_c
+- geos_whl_so = glob.glob(os.path.abspath(os.path.join(os.path.dirname(
+- __file__), '.libs/libgeos_c-*.so.*')))
+- if len(geos_whl_so) == 1:
+- _lgeos = CDLL(geos_whl_so[0])
+- LOG.debug("Found GEOS DLL: %r, using it.", _lgeos)
+- else:
+- alt_paths = [
+- 'libgeos_c.so.1',
+- 'libgeos_c.so',
+- # anaconda
+- os.path.join(sys.prefix, "lib", "libgeos_c.so"),
+- ]
+- _lgeos = load_dll('geos_c', fallbacks=alt_paths)
+- free = load_dll('c').free
+- free.argtypes = [c_void_p]
+- free.restype = None
+-
+-elif sys.platform == 'darwin':
+- # Test to see if we have a delocated wheel with a GEOS dylib.
+- geos_whl_dylib = os.path.abspath(os.path.join(os.path.dirname(
+- __file__), '.dylibs/libgeos_c.1.dylib'))
+- if os.path.exists(geos_whl_dylib):
+- _lgeos = CDLL(geos_whl_dylib)
+- LOG.debug("Found GEOS DLL: %r, using it.", _lgeos)
+-
+- else:
+- if hasattr(sys, 'frozen'):
+- try:
+- # .app file from py2app
+- alt_paths = [os.path.join(
+- os.environ['RESOURCEPATH'], '..', 'Frameworks',
+- 'libgeos_c.dylib')]
+- except KeyError:
+- # binary from pyinstaller
+- alt_paths = [
+- os.path.join(sys.executable, 'libgeos_c.dylib')]
+- if hasattr(sys, '_MEIPASS'):
+- alt_paths.append(
+- os.path.join(sys._MEIPASS, 'libgeos_c.1.dylib'))
+- else:
+- alt_paths = [
+- # anaconda
+- os.path.join(sys.prefix, "lib", "libgeos_c.dylib"),
+- # The Framework build from Kyng Chaos
+- "/Library/Frameworks/GEOS.framework/Versions/Current/GEOS",
+- # macports
+- '/opt/local/lib/libgeos_c.dylib',
+- ]
+- _lgeos = load_dll('geos_c', fallbacks=alt_paths)
+-
+- free = load_dll('c').free
+- free.argtypes = [c_void_p]
+- free.restype = None
+-
+-elif sys.platform == 'win32':
+- try:
+- egg_dlls = os.path.abspath(
+- os.path.join(os.path.dirname(__file__), 'DLLs'))
+- if hasattr(sys, "frozen"):
+- wininst_dlls = os.path.normpath(
+- os.path.abspath(sys.executable + '../../DLLS'))
+- else:
+- wininst_dlls = os.path.abspath(os.__file__ + "../../../DLLs")
+- original_path = os.environ['PATH']
+- os.environ['PATH'] = "%s;%s;%s" % \
+- (egg_dlls, wininst_dlls, original_path)
+- _lgeos = load_dll("geos_c.dll", fallbacks=[
+- os.path.join(sys.prefix, "Library", "lib", "geos_c.dll"),
+- ])
+- except (ImportError, WindowsError, OSError):
+- raise
+-
+- def free(m):
+- try:
+- cdll.msvcrt.free(m)
+- except WindowsError:
+- # XXX: See http://trac.gispython.org/projects/PCL/ticket/149
+- pass
+-
+-elif sys.platform == 'sunos5':
+- _lgeos = load_dll('geos_c', fallbacks=['libgeos_c.so.1', 'libgeos_c.so'])
+- free = CDLL('libc.so.1').free
+- free.argtypes = [c_void_p]
+- free.restype = None
+-else: # other *nix systems
+- _lgeos = load_dll('geos_c', fallbacks=['libgeos_c.so.1', 'libgeos_c.so'])
+- free = load_dll('c', fallbacks=['libc.so.6']).free
+- free.argtypes = [c_void_p]
+- free.restype = None
++_lgeos = CDLL('@libgeos_c@')
++free = CDLL('@libc@').free
++free.argtypes = [c_void_p]
++free.restype = None
+
+
+ def _geos_version():
+diff --git a/tests/test_dlls.py b/tests/test_dlls.py
+index 35f9cc2..3dfcaac 100644
+--- a/tests/test_dlls.py
++++ b/tests/test_dlls.py
+@@ -12,12 +12,7 @@ class LoadingTestCase(unittest.TestCase):
+ @unittest.skipIf(sys.platform == "win32", "FIXME: adapt test for win32")
+ def test_fallbacks(self):
+ load_dll('geos_c', fallbacks=[
+- os.path.join(sys.prefix, "lib", "libgeos_c.dylib"), # anaconda (Mac OS X)
+- '/opt/local/lib/libgeos_c.dylib', # MacPorts
+- '/usr/local/lib/libgeos_c.dylib', # homebrew (Mac OS X)
+- os.path.join(sys.prefix, "lib", "libgeos_c.so"), # anaconda (Linux)
+- 'libgeos_c.so.1',
+- 'libgeos_c.so'])
++ '@libgeos_c@'])
+
+
+ def test_suite():
diff --git a/nixpkgs/pkgs/development/python-modules/sharedmem/default.nix b/nixpkgs/pkgs/development/python-modules/sharedmem/default.nix
new file mode 100644
index 00000000000..d3222ac7d14
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sharedmem/default.nix
@@ -0,0 +1,21 @@
+{ buildPythonPackage, fetchPypi, lib, numpy }:
+
+buildPythonPackage rec {
+
+ pname = "sharedmem";
+ version = "0.3.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c351ab3f6a4fe9fe0c692ab6a8c88013e625845b31a168ff12d16254ed4154d5";
+ };
+
+ propagatedBuildInputs = [ numpy ];
+
+ meta = {
+ homepage = http://rainwoodman.github.io/sharedmem/;
+ description = "Easier parallel programming on shared memory computers";
+ maintainers = with lib.maintainers; [ edwtjo ];
+ license = lib.licenses.gpl3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/shellingham/default.nix b/nixpkgs/pkgs/development/python-modules/shellingham/default.nix
new file mode 100644
index 00000000000..707a79e1055
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/shellingham/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "shellingham";
+ version = "1.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1q7kws7w4x2hji3g7y0ni9ddk4sd676ylrb3db54gbpys6xj6nwq";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Tool to Detect Surrounding Shell";
+ homepage = https://github.com/sarugaku/shellingham;
+ license = licenses.isc;
+ maintainers = with maintainers; [ mbode ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/shiboken2/default.nix b/nixpkgs/pkgs/development/python-modules/shiboken2/default.nix
new file mode 100644
index 00000000000..9b2062dbf6c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/shiboken2/default.nix
@@ -0,0 +1,36 @@
+{ buildPythonPackage, python, fetchurl, stdenv, pyside2,
+ cmake, qt5, llvmPackages }:
+
+stdenv.mkDerivation {
+ pname = "shiboken2";
+
+ inherit (pyside2) version src;
+
+ patches = [
+ ./nix_compile_cflags.patch
+ ];
+
+ postPatch = ''
+ cd sources/shiboken2
+ '';
+
+ CLANG_INSTALL_DIR = llvmPackages.libclang.out;
+
+ nativeBuildInputs = [ cmake ];
+ buildInputs = [ llvmPackages.libclang python qt5.qtbase qt5.qtxmlpatterns ];
+
+ cmakeFlags = [
+ "-DBUILD_TESTS=OFF"
+ ];
+
+ postInstall = ''
+ rm $out/bin/shiboken_tool.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Generator for the PySide2 Qt bindings";
+ license = with licenses; [ gpl2 lgpl21 ];
+ homepage = "https://wiki.qt.io/Qt_for_Python";
+ maintainers = with maintainers; [ gebner ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/shiboken2/nix_compile_cflags.patch b/nixpkgs/pkgs/development/python-modules/shiboken2/nix_compile_cflags.patch
new file mode 100644
index 00000000000..0884c020e83
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/shiboken2/nix_compile_cflags.patch
@@ -0,0 +1,27 @@
+--- pyside-setup-everywhere-src-5.12.3/sources/shiboken2/ApiExtractor/clangparser/compilersupport.cpp~ 2019-06-15 10:31:04.712949189 +0200
++++ pyside-setup-everywhere-src-5.12.3/sources/shiboken2/ApiExtractor/clangparser/compilersupport.cpp 2019-06-15 11:52:52.894987343 +0200
+@@ -317,15 +317,15 @@
+ }
+ #endif // NEED_CLANG_BUILTIN_INCLUDES
+
+- // Append the c++ include paths since Clang is unable to find <list> etc
+- // on RHEL 7 with g++ 6.3 or CentOS 7.2.
+- // A fix for this has been added to Clang 5.0, so, the code can be removed
+- // once Clang 5.0 is the minimum version.
+- if (needsGppInternalHeaders()) {
+- const HeaderPaths gppPaths = gppInternalIncludePaths(QStringLiteral("g++"));
+- for (const HeaderPath &h : gppPaths) {
+- if (h.path.contains("c++"))
+- headerPaths.append(h);
++ const HeaderPaths gppPaths = gppInternalIncludePaths(QStringLiteral("g++"));
++ for (const HeaderPath &h : gppPaths) {
++ // PySide2 requires that Qt headers are not -isystem
++ // https://bugreports.qt.io/browse/PYSIDE-787
++ if (!h.path.contains("-qt")) {
++ // add using -isystem
++ headerPaths.append(h);
++ } else {
++ headerPaths.append({h.path, HeaderType::Standard});
+ }
+ }
+ #else
diff --git a/nixpkgs/pkgs/development/python-modules/shippai/default.nix b/nixpkgs/pkgs/development/python-modules/shippai/default.nix
new file mode 100644
index 00000000000..7682d208603
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/shippai/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "shippai";
+ # Please make sure that vdirsyncer still builds if you update this package.
+ version = "0.3.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0r6iwvmay8ygn2m15pyjrk9am4mfpk7rkf0lcbcb15pnabixlyzj";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Use Rust failures as Python exceptions";
+ homepage = https://github.com/untitaker/shippai;
+ license = licenses.mit;
+ maintainers = with maintainers; [ gebner ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/shodan/default.nix b/nixpkgs/pkgs/development/python-modules/shodan/default.nix
new file mode 100644
index 00000000000..8723a7b940c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/shodan/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+, click-plugins
+, colorama
+, requests
+, XlsxWriter
+}:
+
+buildPythonPackage rec {
+ pname = "shodan";
+ version = "1.14.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0c5x53757p6ihh1f8xqsal2gi9ikcl3464b38qinva51s0kkb58k";
+ };
+
+ propagatedBuildInputs = [
+ click-plugins
+ colorama
+ requests
+ XlsxWriter
+ ];
+
+ # The tests require a shodan api key, so skip them.
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Python library and command-line utility for Shodan";
+ homepage = https://github.com/achillean/shodan-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ lihop ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/shortuuid/default.nix b/nixpkgs/pkgs/development/python-modules/shortuuid/default.nix
new file mode 100644
index 00000000000..ac2fef9f2df
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/shortuuid/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pep8
+}:
+
+buildPythonPackage rec {
+ pname = "shortuuid";
+ version = "0.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d08fd398f40f8baf87e15eef8355e92fa541bca4eb8465fefab7ee22f92711b9";
+ };
+
+ buildInputs = [pep8];
+
+ meta = with stdenv.lib; {
+ description = "A generator library for concise, unambiguous and URL-safe UUIDs";
+ homepage = https://github.com/stochastic-technologies/shortuuid/;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ zagy ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/should-dsl/default.nix b/nixpkgs/pkgs/development/python-modules/should-dsl/default.nix
new file mode 100644
index 00000000000..987d7e60cea
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/should-dsl/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "should-dsl";
+ version = "2.1.2";
+
+ src = fetchPypi {
+ inherit version;
+ pname = "should_dsl";
+ sha256 = "0ai30dxgygwzaj9sgdzyfr9p5b7gwc9piq59nzr4xy5x1zcm7xrn";
+ };
+
+ # There are no tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Should assertions in Python as clear and readable as possible";
+ homepage = http://www.should-dsl.info/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ jluttine ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/shouldbe/default.nix b/nixpkgs/pkgs/development/python-modules/shouldbe/default.nix
new file mode 100644
index 00000000000..ccff9ff4b9f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/shouldbe/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, forbiddenfruit
+}:
+
+buildPythonPackage rec {
+ version = "0.1.2";
+ pname = "shouldbe";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "16zbvjxf71dl4yfbgcr6idyim3mdrfvix1dv8b95p0s9z07372pj";
+ };
+
+ checkInputs = [ nose ];
+ propagatedBuildInputs = [ forbiddenfruit ];
+
+ meta = with stdenv.lib; {
+ description = "Python Assertion Helpers inspired by Shouldly";
+ homepage = https://pypi.python.org/pypi/shouldbe/;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/showit/default.nix b/nixpkgs/pkgs/development/python-modules/showit/default.nix
new file mode 100644
index 00000000000..4060b1a4fc5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/showit/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, numpy
+, matplotlib
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "showit";
+ version = "1.1.4";
+
+ src = fetchFromGitHub {
+ owner = "freeman-lab";
+ repo = pname;
+ rev = "ef76425797c71fbe3795b4302c49ab5be6b0bacb"; # no tags in repo
+ sha256 = "0xd8isrlwwxlgji90lly1sq4l2a37rqvhsmyhv7bd3aj1dyjmdr6";
+ };
+
+ propagatedBuildInputs = [
+ numpy
+ matplotlib
+ ];
+
+ checkInputs = [
+ pytest
+ ];
+
+ checkPhase = ''
+ pytest test
+ '';
+
+ meta = with lib; {
+ description = "simple and sensible display of images";
+ homepage = https://github.com/freeman-lab/showit;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sievelib/default.nix b/nixpkgs/pkgs/development/python-modules/sievelib/default.nix
new file mode 100644
index 00000000000..d579f3ef744
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sievelib/default.nix
@@ -0,0 +1,41 @@
+{ lib, buildPythonPackage, fetchPypi, fetchpatch, mock
+, future, six, setuptools_scm }:
+
+buildPythonPackage rec {
+ pname = "sievelib";
+ version = "1.1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1sl1fnwr5jdacrrnq2rvzh4vv1dyxd3x31vnqga36gj8h546h7mz";
+ };
+
+ patches = [
+ (fetchpatch {
+ url = "https://github.com/tonioo/sievelib/commit/1deef0e2bf039a0e817ea6f19aaf1947dc9fafbc.patch";
+ sha256 = "0vaj73mcij9dism8vfaai82irh8j1b2n8gf9jl1a19d2l26jrflk";
+ })
+ ];
+
+ buildInputs = [ setuptools_scm ];
+ propagatedBuildInputs = [ future six ];
+ checkInputs = [ mock ];
+
+ meta = {
+ description = "Client-side Sieve and Managesieve library written in Python";
+ homepage = https://github.com/tonioo/sievelib;
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ leenaars ];
+ longDescription = ''
+ A library written in Python that implements RFC 5228 (Sieve: An Email
+ Filtering Language) and RFC 5804 (ManageSieve: A Protocol for
+ Remotely Managing Sieve Scripts), as well as the following extensions:
+
+ * Copying Without Side Effects (RFC 3894)
+ * Body (RFC 5173)
+ * Date and Index (RFC 5260)
+ * Vacation (RFC 5230)
+ * Imap4flags (RFC 5232)
+ '';
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/signedjson/default.nix b/nixpkgs/pkgs/development/python-modules/signedjson/default.nix
new file mode 100644
index 00000000000..33a615fefd4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/signedjson/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchgit
+, canonicaljson
+, unpaddedbase64
+, pynacl
+}:
+
+buildPythonPackage rec {
+ pname = "signedjson";
+ version = "1.0.0";
+
+ src = fetchgit {
+ url = "https://github.com/matrix-org/python-signedjson.git";
+ rev = "refs/tags/v${version}";
+ sha256 = "0b8xxhc3npd4567kqapfp4gs7m0h057xam3an7424az262ind82n";
+ };
+
+ propagatedBuildInputs = [ canonicaljson unpaddedbase64 pynacl ];
+
+ meta = with stdenv.lib; {
+ homepage = https://pypi.org/project/signedjson/;
+ description = "Sign JSON with Ed25519 signatures";
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sigtools/default.nix b/nixpkgs/pkgs/development/python-modules/sigtools/default.nix
new file mode 100644
index 00000000000..92a39e26da0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sigtools/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, repeated_test
+, sphinx
+, mock
+, coverage
+, unittest2
+, funcsigs
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "sigtools";
+ version = "2.0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1b890f22ece64bc47d3d4e84c950581e83917794a6cf1548698145590e221aff";
+ };
+
+ buildInputs = [ repeated_test sphinx mock coverage unittest2 ];
+ propagatedBuildInputs = [ funcsigs six ];
+
+ patchPhase = ''sed -i s/test_suite="'"sigtools.tests"'"/test_suite="'"unittest2.collector"'"/ setup.py'';
+
+ meta = with stdenv.lib; {
+ description = "Utilities for working with 3.3's inspect.Signature objects.";
+ homepage = "https://pypi.python.org/pypi/sigtools";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/simanneal/default.nix b/nixpkgs/pkgs/development/python-modules/simanneal/default.nix
new file mode 100644
index 00000000000..ad1f2643e5f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/simanneal/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchFromGitHub, buildPythonPackage, pytest }:
+
+buildPythonPackage rec {
+ pname = "simanneal";
+ version = "0.4.2";
+
+ src = fetchFromGitHub {
+ owner = "perrygeo";
+ repo = "simanneal";
+ rev = version;
+ sha256 = "0p75da4nbk6iy16aahl0ilqg605jrr6aa1pzfyd9hc7ak2vs6840";
+ };
+
+ checkInputs = [ pytest ];
+ checkPhase = "pytest tests";
+
+ meta = with stdenv.lib; {
+ description = "A python implementation of the simulated annealing optimization technique";
+ homepage = https://github.com/perrygeo/simanneal;
+ license = licenses.isc;
+ maintainers = with maintainers; [ veprbl ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/simple-salesforce/default.nix b/nixpkgs/pkgs/development/python-modules/simple-salesforce/default.nix
new file mode 100644
index 00000000000..1eacd25bede
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/simple-salesforce/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, fetchFromGitHub
+, buildPythonPackage
+, requests
+, pyopenssl
+, cryptography
+, idna
+, mock
+, isPy27
+, nose
+, pytz
+, responses
+}:
+
+buildPythonPackage rec {
+ pname = "simple-salesforce";
+ version = "0.74.3";
+
+ src = fetchFromGitHub {
+ owner = pname;
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "1n960xgrnmv20l31nm0im7pb4nfa83bmx4x4clqrh2jkpzq3ric0";
+ };
+
+ propagatedBuildInputs = [
+ requests
+ pyopenssl
+ cryptography
+ idna
+ ];
+
+ checkInputs = [
+ nose
+ pytz
+ responses
+ ] ++ lib.optionals isPy27 [ mock ];
+
+ postPatch = ''
+ substituteInPlace setup.py \
+ --replace "mock==1.0.1" "mock"
+ '';
+
+ meta = with lib; {
+ description = "A very simple Salesforce.com REST API client for Python";
+ homepage = https://github.com/simple-salesforce/simple-salesforce;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ costrouc ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/simple-websocket-server/default.nix b/nixpkgs/pkgs/development/python-modules/simple-websocket-server/default.nix
new file mode 100644
index 00000000000..312f58bf9fa
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/simple-websocket-server/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub }:
+
+buildPythonPackage {
+ pname = "simple-websocket-server";
+ version = "20180414";
+ src = fetchFromGitHub {
+ owner = "dpallot";
+ repo = "simple-websocket-server";
+ rev = "34e6def93502943d426fb8bb01c6901341dd4fe6";
+ sha256 = "19rcpdx4vxg9is1cpyh9m9br5clyzrpb7gyfqsl0g3im04m098n5";
+ };
+
+ doCheck = false; # no tests
+
+ meta = with stdenv.lib; {
+ description = "A python based websocket server that is simple and easy to use";
+ homepage = https://github.com/dpallot/simple-websocket-server/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ rvolosatovs ];
+ platforms = platforms.all;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/simpleai/default.nix b/nixpkgs/pkgs/development/python-modules/simpleai/default.nix
new file mode 100644
index 00000000000..230ac17fa0a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/simpleai/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, numpy
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ version = "0.8.2";
+ pname = "simpleai";
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2927d460b09ff6dd177999c2f48f3275c84c956efe5b41b567b5316e2259d21e";
+ };
+
+ propagatedBuildInputs = [ numpy ];
+
+ #No tests in archive
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/simpleai-team/simpleai;
+ description = "This lib implements many of the artificial intelligence algorithms described on the book 'Artificial Intelligence, a Modern Approach'";
+ maintainers = with maintainers; [ NikolaMandic ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/simplebayes/default.nix b/nixpkgs/pkgs/development/python-modules/simplebayes/default.nix
new file mode 100644
index 00000000000..57f7df73c21
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/simplebayes/default.nix
@@ -0,0 +1,36 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, nose
+, mock
+, isPy3k
+}:
+
+buildPythonPackage {
+ pname = "simplebayes";
+ version = "1.5.8";
+
+ # Use GitHub instead of pypi, because it contains tests.
+ src = fetchFromGitHub {
+ repo = "simplebayes";
+ owner = "hickeroar";
+ # NOTE: This is actually 1.5.8 but the tag is wrong!
+ rev = "1.5.7";
+ sha256 = "0mp7rvfdmpfxnka4czw3lv5kkh6gdxh6dm4r6hcln1zzfg9lxp4h";
+ };
+
+ checkInputs = [ nose mock ];
+
+ postPatch = stdenv.lib.optionalString isPy3k ''
+ sed -i -e 's/open *(\([^)]*\))/open(\1, encoding="utf-8")/' setup.py
+ '';
+
+ checkPhase = "nosetests tests/test.py";
+
+ meta = with stdenv.lib; {
+ description = "Memory-based naive bayesian text classifier";
+ homepage = "https://github.com/hickeroar/simplebayes";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/simpleeval/default.nix b/nixpkgs/pkgs/development/python-modules/simpleeval/default.nix
new file mode 100644
index 00000000000..ca304fc10f6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/simpleeval/default.nix
@@ -0,0 +1,16 @@
+{ lib, fetchPypi, buildPythonPackage }:
+
+buildPythonPackage rec {
+ pname = "simpleeval";
+ version = "0.9.8";
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "00fzwbjg98lsnmfzmbgzg1k8q8iqbahcxjnnlhzhb44phrhcxql5";
+ };
+ meta = {
+ homepage = https://github.com/danthedeckie/simpleeval;
+ description = "A simple, safe single expression evaluator library";
+ maintainers = with lib.maintainers; [ johbo ];
+ license = lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/simplefix/default.nix b/nixpkgs/pkgs/development/python-modules/simplefix/default.nix
new file mode 100644
index 00000000000..8b84d6a248e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/simplefix/default.nix
@@ -0,0 +1,25 @@
+{ lib, python, buildPythonPackage, fetchFromGitHub }:
+
+buildPythonPackage rec {
+ pname = "simplefix";
+ version = "1.0.12";
+
+ src = fetchFromGitHub {
+ repo = "simplefix";
+ owner = "da4089";
+ rev = "v${version}";
+ sha256 = "0pnyqxpki1ija0kha7axi6irgiifcz4w77libagkv46b1z11cc4r";
+ };
+
+ checkPhase = ''
+ cd test
+ ${python.interpreter} -m unittest all
+ '';
+
+ meta = with lib; {
+ description = "Simple FIX Protocol implementation for Python";
+ homepage = https://github.com/da4089/simplefix;
+ license = licenses.mit;
+ maintainers = with maintainers; [ catern ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/simplegeneric/default.nix b/nixpkgs/pkgs/development/python-modules/simplegeneric/default.nix
new file mode 100644
index 00000000000..491e218154c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/simplegeneric/default.nix
@@ -0,0 +1,21 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "simplegeneric";
+ version = "0.8.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "dc972e06094b9af5b855b3df4a646395e43d1c9d0d39ed345b7393560d0b9173";
+ };
+
+ meta = {
+ description = "Simple generic functions";
+ homepage = http://cheeseshop.python.org/pypi/simplegeneric;
+ license = lib.licenses.zpl21;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/simplejson/default.nix b/nixpkgs/pkgs/development/python-modules/simplejson/default.nix
new file mode 100644
index 00000000000..abd4854c73f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/simplejson/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, stdenv
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "simplejson";
+ version = "3.16.1";
+ doCheck = !stdenv.isDarwin;
+
+ src = fetchFromGitHub {
+ owner = pname;
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "1v80dbk3ajhgz7q5cc8k0dd22zj9rrlz838c90l5g3w1i280r1iq";
+ };
+
+ # Package does not need pytest, but its a bit easier debugging.
+ checkInputs = [ pytest ];
+ # Ignore warnings because test does not expect them in stderr
+ # See https://github.com/simplejson/simplejson/issues/241
+ checkPhase = ''
+ PYTHONWARNINGS="ignore" pytest simplejson/tests
+ '';
+
+ meta = {
+ description = "A simple, fast, extensible JSON encoder/decoder for Python";
+ longDescription = ''
+ simplejson is compatible with Python 2.4 and later with no
+ external dependencies. It covers the full JSON specification
+ for both encoding and decoding, with unicode support. By
+ default, encoding is done in an encoding neutral fashion (plain
+ ASCII with \uXXXX escapes for unicode characters).
+ '';
+ homepage = https://github.com/simplejson/simplejson;
+ license = with lib.licenses; [ mit afl21 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/simplekml/default.nix b/nixpkgs/pkgs/development/python-modules/simplekml/default.nix
new file mode 100644
index 00000000000..d97c1b0c963
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/simplekml/default.nix
@@ -0,0 +1,20 @@
+{ lib , buildPythonPackage , fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "simplekml";
+ version = "1.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "30c121368ce1d73405721730bf766721e580cae6fbb7424884c734c89ec62ad7";
+ };
+
+ doCheck = false; # no tests are defined in 1.3.1
+
+ meta = with lib; {
+ description = "Generate KML with as little effort as possible";
+ homepage = https://readthedocs.org/projects/simplekml/;
+ license = licenses.lgpl3Plus;
+ maintainers = with maintainers; [ rvolosatovs ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/simpleparse/default.nix b/nixpkgs/pkgs/development/python-modules/simpleparse/default.nix
new file mode 100644
index 00000000000..339f6d1debd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/simpleparse/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, isPyPy
+}:
+
+buildPythonPackage rec {
+ version = "2.2.0";
+ pname = "simpleparse";
+ disabled = isPy3k || isPyPy;
+
+ src = fetchPypi {
+ pname = "SimpleParse";
+ inherit version;
+ sha256 = "18ccdc249bb550717af796af04a7d50aef523368901f64036a48eee5daca149d";
+ };
+
+ doCheck = false; # weird error
+
+ meta = with stdenv.lib; {
+ description = "A Parser Generator for Python";
+ homepage = https://pypi.python.org/pypi/SimpleParse;
+ license = licenses.bsd0;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/simpy/default.nix b/nixpkgs/pkgs/development/python-modules/simpy/default.nix
new file mode 100644
index 00000000000..981b6693f7d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/simpy/default.nix
@@ -0,0 +1,18 @@
+{ buildPythonPackage, fetchPypi, lib }:
+
+buildPythonPackage rec {
+ pname = "simpy";
+ version = "3.0.11";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0hqgxk3lggf21jq9lh8838cdl24mdkdnpzh0w4m28d0zn2wjb5nh";
+ };
+
+ meta = with lib; {
+ homepage = https://simpy.readthedocs.io/en/latest/;
+ description = "A process-based discrete-event simulation framework based on standard Python.";
+ license = [ licenses.mit ];
+ maintainers = with maintainers; [ shlevy ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/singledispatch/default.nix b/nixpkgs/pkgs/development/python-modules/singledispatch/default.nix
new file mode 100644
index 00000000000..e0b207735df
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/singledispatch/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "singledispatch";
+ version = "3.4.0.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5b06af87df13818d14f08a028e42f566640aef80805c3b50c5056b086e3c2b9c";
+ };
+
+ propagatedBuildInputs = [ six ];
+
+ # pypi singledispatch tarbal does not contain tests
+ doCheck = false;
+
+ meta = {
+ description = "This library brings functools.singledispatch from Python 3.4 to Python 2.6-3.3.";
+ homepage = https://docs.python.org/3/library/functools.html;
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sip/default.nix b/nixpkgs/pkgs/development/python-modules/sip/default.nix
new file mode 100644
index 00000000000..cb1575f9349
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sip/default.nix
@@ -0,0 +1,44 @@
+{ lib, fetchurl, buildPythonPackage, python, isPyPy, sip-module ? "sip" }:
+
+buildPythonPackage rec {
+ pname = sip-module;
+ version = "4.19.18";
+ format = "other";
+
+ disabled = isPyPy;
+
+ src = fetchurl {
+ url = "https://www.riverbankcomputing.com/static/Downloads/sip/${version}/sip-${version}.tar.gz";
+ sha256 = "07kyd56xgbb40ljb022rq82shgxprlbl0z27mpf1b6zd00w8dgf0";
+ };
+
+ configurePhase = ''
+ ${python.executable} ./configure.py \
+ --sip-module ${sip-module} \
+ -d $out/${python.sitePackages} \
+ -b $out/bin -e $out/include
+ '';
+
+ enableParallelBuilding = true;
+
+ installCheckPhase = let
+ modules = [
+ sip-module
+ "sipconfig"
+ ];
+ imports = lib.concatMapStrings (module: "import ${module};") modules;
+ in ''
+ echo "Checking whether modules can be imported..."
+ PYTHONPATH=$out/${python.sitePackages}:$PYTHONPATH ${python.interpreter} -c "${imports}"
+ '';
+
+ doCheck = true;
+
+ meta = with lib; {
+ description = "Creates C++ bindings for Python modules";
+ homepage = "http://www.riverbankcomputing.co.uk/";
+ license = licenses.gpl2Plus;
+ maintainers = with maintainers; [ lovek323 sander ];
+ platforms = platforms.all;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sipsimple/default.nix b/nixpkgs/pkgs/development/python-modules/sipsimple/default.nix
new file mode 100644
index 00000000000..7839a77f9f5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sipsimple/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, isPy3k
+, pkgs
+, cython
+, dnspython
+, 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 = ''
+ chmod +x ./deps/pjsip/configure ./deps/pjsip/aconfigure
+ export LD=$CC
+ '';
+
+ nativeBuildInputs = [ pkgs.pkgconfig ];
+ buildInputs = with pkgs; [ alsaLib ffmpeg libv4l sqlite libvpx ];
+ propagatedBuildInputs = [ cython pkgs.openssl dnspython dateutil xcaplib msrplib lxml python-otr ];
+
+ meta = with lib; {
+ description = "SIP SIMPLE implementation for Python";
+ homepage = http://sipsimpleclient.org/;
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ pSub ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/six/default.nix b/nixpkgs/pkgs/development/python-modules/six/default.nix
new file mode 100644
index 00000000000..78e7a5f0538
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/six/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "six";
+ version = "1.12.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73";
+ };
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ py.test test_six.py
+ '';
+
+ # To prevent infinite recursion with pytest
+ doCheck = false;
+
+ meta = {
+ description = "A Python 2 and 3 compatibility library";
+ homepage = https://pypi.python.org/pypi/six/;
+ license = lib.licenses.mit;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/sklearn-deap/default.nix b/nixpkgs/pkgs/development/python-modules/sklearn-deap/default.nix
new file mode 100644
index 00000000000..47df62dd1c6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sklearn-deap/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, fetchpatch, numpy, scipy, deap, scikitlearn, python }:
+
+buildPythonPackage rec {
+ pname = "sklearn-deap";
+ version = "0.2.3";
+
+ # No tests in Pypi
+ src = fetchFromGitHub {
+ owner = "rsteca";
+ repo = pname;
+ rev = version;
+ sha256 = "1yqnmy8h08i2y6bb2s0a5nx9cwvyg45293whqh420c195gpzg1x3";
+ };
+
+ patches = [
+ # Fix for newer versions of scikit-learn. See: https://github.com/rsteca/sklearn-deap/pull/62
+ (fetchpatch {
+ url = "https://github.com/rsteca/sklearn-deap/commit/3ae62990fc87f36b59382e7c4db3c74cf99ec3bf.patch";
+ sha256 = "1na6wf4v0dcmyz3pz8aiqkmv76d1iz3hi4iyfq9kfnycgzpv1kxk";
+ })
+ ];
+
+ propagatedBuildInputs = [ numpy scipy deap scikitlearn ];
+
+ checkPhase = ''
+ ${python.interpreter} test.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Use evolutionary algorithms instead of gridsearch in scikit-learn";
+ homepage = https://github.com/rsteca/sklearn-deap;
+ license = licenses.lgpl3;
+ maintainers = with maintainers; [ psyanticy ];
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/slackclient/default.nix b/nixpkgs/pkgs/development/python-modules/slackclient/default.nix
new file mode 100644
index 00000000000..6a16b38c6e1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/slackclient/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, websocket_client, requests, six, pytest, codecov, coverage, mock, pytestcov, pytest-mock, responses, flake8 }:
+
+buildPythonPackage rec {
+ pname = "python-slackclient";
+ version = "1.2.1";
+
+ src = fetchFromGitHub {
+ owner = "slackapi";
+ repo = pname;
+ rev = version;
+ sha256 = "073fwf6fm2sqdp5ms3vm1v3ljh0pldi69k048404rp6iy3cfwkp0";
+ };
+
+ propagatedBuildInputs = [ websocket_client requests six ];
+
+ checkInputs = [ pytest codecov coverage mock pytestcov pytest-mock responses flake8 ];
+ # test_server.py fails because it needs connection (I think);
+ checkPhase = ''
+ py.test --cov-report= --cov=slackclient tests --ignore=tests/test_server.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A client for Slack, which supports the Slack Web API and Real Time Messaging (RTM) API";
+ homepage = https://github.com/slackapi/python-slackclient;
+ license = licenses.mit;
+ maintainers = with maintainers; [ psyanticy ];
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/sleekxmpp/default.nix b/nixpkgs/pkgs/development/python-modules/sleekxmpp/default.nix
new file mode 100644
index 00000000000..426019fc8a9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sleekxmpp/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchPypi, buildPythonPackage, dns, pyasn1 }:
+
+buildPythonPackage rec {
+ pname = "sleekxmpp";
+ version = "1.3.3";
+
+ propagatedBuildInputs = [ dns pyasn1 ];
+
+ patches = [
+ ./dnspython-ip6.patch
+ ];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d213c1de71d92505f95ced0460ee0f84fdc4ddcacb7d7dd343739ed4028e5569";
+ };
+
+ meta = with stdenv.lib; {
+ description = "XMPP library for Python";
+ license = licenses.mit;
+ homepage = "http://sleekxmpp.com/";
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sleekxmpp/dnspython-ip6.patch b/nixpkgs/pkgs/development/python-modules/sleekxmpp/dnspython-ip6.patch
new file mode 100644
index 00000000000..d8d6eb10683
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sleekxmpp/dnspython-ip6.patch
@@ -0,0 +1,55 @@
+--- a/sleekxmpp/xmlstream/resolver.py
++++ b/sleekxmpp/xmlstream/resolver.py
+@@ -175,6 +175,9 @@ def get_A(host, resolver=None, use_dnspy
+ """
+ log.debug("DNS: Querying %s for A records." % host)
+
++ if isinstance(host, bytes):
++ host = host.decode("utf-8")
++
+ # If not using dnspython, attempt lookup using the OS level
+ # getaddrinfo() method.
+ if resolver is None or not use_dnspython:
+@@ -189,7 +192,10 @@ def get_A(host, resolver=None, use_dnspy
+ # Using dnspython:
+ try:
+ recs = resolver.query(host, dns.rdatatype.A)
+- return [rec.to_text() for rec in recs]
++ if isinstance(recs[0].to_text(), bytes):
++ return [rec.to_text().decode("utf-8") for rec in recs]
++ else:
++ return [rec.to_text() for rec in recs]
+ except (dns.resolver.NXDOMAIN, dns.resolver.NoAnswer):
+ log.debug("DNS: No A records for %s" % host)
+ return []
+@@ -222,6 +228,9 @@ def get_AAAA(host, resolver=None, use_dn
+ """
+ log.debug("DNS: Querying %s for AAAA records." % host)
+
++ if isinstance(host, bytes):
++ host = host.decode("utf-8")
++
+ # If not using dnspython, attempt lookup using the OS level
+ # getaddrinfo() method.
+ if resolver is None or not use_dnspython:
+@@ -240,7 +249,10 @@ def get_AAAA(host, resolver=None, use_dn
+ # Using dnspython:
+ try:
+ recs = resolver.query(host, dns.rdatatype.AAAA)
+- return [rec.to_text() for rec in recs]
++ if isinstance(recs[0].to_text(), bytes):
++ return [rec.to_text().decode("utf-8") for rec in recs]
++ else:
++ return [rec.to_text() for rec in recs]
+ except (dns.resolver.NXDOMAIN, dns.resolver.NoAnswer):
+ log.debug("DNS: No AAAA records for %s" % host)
+ return []
+@@ -324,6 +336,8 @@ def get_SRV(host, port, service, proto='
+ if running_sum >= selected:
+ rec = sums[running_sum]
+ host = rec.target.to_text()
++ if isinstance(host, bytes):
++ host = host.decode("utf-8")
+ if host.endswith('.'):
+ host = host[:-1]
+ sorted_recs.append((host, rec.port))
diff --git a/nixpkgs/pkgs/development/python-modules/slicedimage/default.nix b/nixpkgs/pkgs/development/python-modules/slicedimage/default.nix
new file mode 100644
index 00000000000..3b9aa19062b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/slicedimage/default.nix
@@ -0,0 +1,50 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, boto3
+, diskcache
+, enum34
+, packaging
+, pathlib
+, numpy
+, requests
+, scikitimage
+, six
+, pytest
+, isPy27
+}:
+
+buildPythonPackage rec {
+ pname = "slicedimage";
+ version = "3.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "adab09457e22465f05998fdcf8ea14179185f8e780a4021526ba163dd476cd02";
+ };
+
+ propagatedBuildInputs = [
+ boto3
+ diskcache
+ packaging
+ numpy
+ requests
+ scikitimage
+ six
+ ] ++ lib.optionals isPy27 [ pathlib enum34 ];
+
+ checkInputs = [
+ pytest
+ ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with lib; {
+ description = "Library to access sliced imaging data";
+ homepage = https://github.com/spacetx/slicedimage;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/slicerator/default.nix b/nixpkgs/pkgs/development/python-modules/slicerator/default.nix
new file mode 100644
index 00000000000..af17780909e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/slicerator/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+, six
+}:
+
+buildPythonPackage rec {
+ version = "0.9.8";
+ pname = "slicerator";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b91dd76a415fd8872185cbd6fbf1922fe174359053d4694983fc719e4a0f5667";
+ };
+
+ propagatedBuildInputs = [ six ];
+
+ checkPhase = ''
+ ${python.interpreter} run_tests.py
+ '';
+
+ # run_tests.py not packaged with pypi release
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/soft-matter/slicerator;
+ description = "A lazy-loading, fancy-sliceable iterable";
+ license = licenses.bsdOriginal;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/slimit/default.nix b/nixpkgs/pkgs/development/python-modules/slimit/default.nix
new file mode 100644
index 00000000000..e82cbe5b705
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/slimit/default.nix
@@ -0,0 +1,36 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k, fetchpatch, python, ply }:
+
+buildPythonPackage rec {
+ pname = "slimit";
+ version = "0.8.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "f433dcef899f166b207b67d91d3f7344659cb33b8259818f084167244e17720b";
+ };
+
+ # Some patches from https://github.com/rspivak/slimit/pull/65
+ patches = lib.optionals isPy3k [
+ (fetchpatch {
+ url = https://github.com/lelit/slimit/commit/a61e12d88cc123c4b7af2abef21d06fd182e561a.patch;
+ sha256 = "0lbhvkgn4l8g9fwvb81rfwjx7hsaq2pid8a5gczdk1ba65wfvdq5";
+ })
+ (fetchpatch {
+ url = https://github.com/lelit/slimit/commit/e8331659fb89e8a4613c5e4e338c877fead9c551.patch;
+ sha256 = "1hv4ysn09c9bfd5bxhhrp51hsi81hdidmx0y7zcrjjiich9ayrni";
+ })
+ ];
+
+ propagatedBuildInputs = [ ply ];
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover -s src/slimit
+ '';
+
+ meta = with lib; {
+ description = "JavaScript minifier";
+ homepage = https://slimit.readthedocs.org/;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/slither-analyzer/default.nix b/nixpkgs/pkgs/development/python-modules/slither-analyzer/default.nix
new file mode 100644
index 00000000000..10241104ef3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/slither-analyzer/default.nix
@@ -0,0 +1,36 @@
+{ lib, buildPythonPackage, fetchPypi, makeWrapper, prettytable, pythonOlder, solc }:
+
+buildPythonPackage rec {
+ pname = "slither-analyzer";
+ version = "0.3.0";
+
+ disabled = pythonOlder "3.6";
+
+ # No Python tests
+ doCheck = false;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "10vrcqm371kqmf702xmqmzimv3xgrn3k3ip06nr1l6gnj3jk138g";
+ };
+
+ nativeBuildInputs = [ makeWrapper ];
+ propagatedBuildInputs = [ prettytable ];
+
+ postFixup = ''
+ wrapProgram $out/bin/slither \
+ --prefix PATH : "${lib.makeBinPath [ solc ]}"
+ '';
+
+ meta = with lib; {
+ description = "Static Analyzer for Solidity";
+ longDescription = ''
+ Slither is a Solidity static analysis framework written in Python 3. It
+ runs a suite of vulnerability detectors, prints visual information about
+ contract details, and provides an API to easily write custom analyses.
+ '';
+ homepage = https://github.com/trailofbits/slither;
+ license = licenses.agpl3;
+ maintainers = [ maintainers.asymmetric ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/slixmpp/default.nix b/nixpkgs/pkgs/development/python-modules/slixmpp/default.nix
new file mode 100644
index 00000000000..53d2006315c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/slixmpp/default.nix
@@ -0,0 +1,34 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k, substituteAll, aiodns, pyasn1, pyasn1-modules, aiohttp, gnupg, nose }:
+
+buildPythonPackage rec {
+ pname = "slixmpp";
+ version = "1.4.2";
+
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0rqpmscxjznxyz3dyxpc56gib319k01vl837r8g8w57dinz4y863";
+ };
+
+ patches = [
+ (substituteAll {
+ src = ./hardcode-gnupg-path.patch;
+ inherit gnupg;
+ })
+ ];
+
+ propagatedBuildInputs = [ aiodns pyasn1 pyasn1-modules aiohttp ];
+
+ checkInputs = [ nose ];
+
+ checkPhase = ''
+ nosetests --where=tests --exclude=live -i slixtest.py
+ '';
+
+ meta = {
+ description = "Elegant Python library for XMPP";
+ license = lib.licenses.mit;
+ homepage = https://dev.louiz.org/projects/slixmpp;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/slixmpp/hardcode-gnupg-path.patch b/nixpkgs/pkgs/development/python-modules/slixmpp/hardcode-gnupg-path.patch
new file mode 100644
index 00000000000..4bb3b7c7349
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/slixmpp/hardcode-gnupg-path.patch
@@ -0,0 +1,26 @@
+diff --git a/slixmpp/plugins/xep_0027/gpg.py b/slixmpp/plugins/xep_0027/gpg.py
+index a0b1df4..7cfb3bd 100644
+--- a/slixmpp/plugins/xep_0027/gpg.py
++++ b/slixmpp/plugins/xep_0027/gpg.py
+@@ -41,7 +41,7 @@ class XEP_0027(BasePlugin):
+ dependencies = set()
+ stanza = stanza
+ default_config = {
+- 'gpg_binary': 'gpg',
++ 'gpg_binary': '@gnupg@/bin/gpg',
+ 'gpg_home': '',
+ 'use_agent': True,
+ 'keyring': None,
+diff --git a/slixmpp/thirdparty/gnupg.py b/slixmpp/thirdparty/gnupg.py
+index a89289f..46dd9b7 100644
+--- a/slixmpp/thirdparty/gnupg.py
++++ b/slixmpp/thirdparty/gnupg.py
+@@ -468,7 +468,7 @@ class GPG(object):
+ }
+
+ "Encapsulate access to the gpg executable"
+- def __init__(self, gpgbinary='gpg', gnupghome=None, verbose=False,
++ def __init__(self, gpgbinary='@gnupg@/bin/gpg', gnupghome=None, verbose=False,
+ use_agent=False, keyring=None):
+ """Initialize a GPG process wrapper. Options are:
+
diff --git a/nixpkgs/pkgs/development/python-modules/slob/default.nix b/nixpkgs/pkgs/development/python-modules/slob/default.nix
new file mode 100644
index 00000000000..8a6971ceb8f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/slob/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, isPy3k
+, PyICU
+, python
+}:
+
+buildPythonPackage {
+ name = "slob";
+ verison = "unstable-2016-11-03";
+ disabled = !isPy3k;
+
+ src = fetchFromGitHub {
+ owner = "itkach";
+ repo = "slob";
+ rev = "d1ed71e4778729ecdfc2fe27ed783689a220a6cd";
+ sha256 = "1r510s4r124s121wwdm9qgap6zivlqqxrhxljz8nx0kv0cdyypi5";
+ };
+
+ propagatedBuildInputs = [ PyICU ];
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest slob
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/itkach/slob/;
+ description = "Reference implementation of the slob (sorted list of blobs) format";
+ license = licenses.gpl3;
+ maintainers = [ maintainers.rycee ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/slowaes/default.nix b/nixpkgs/pkgs/development/python-modules/slowaes/default.nix
new file mode 100644
index 00000000000..f9175e507b4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/slowaes/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "slowaes";
+ version = "0.1a1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "83658ae54cc116b96f7fdb12fdd0efac3a4e8c7c7064e3fac3f4a881aa54bf09";
+ };
+
+ disabled = isPy3k;
+
+ meta = with stdenv.lib; {
+ homepage = "http://code.google.com/p/slowaes/";
+ description = "AES implemented in pure python";
+ license = with licenses; [ asl20 ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sly/default.nix b/nixpkgs/pkgs/development/python-modules/sly/default.nix
new file mode 100644
index 00000000000..011fa1799ab
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sly/default.nix
@@ -0,0 +1,29 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+ pname = "sly";
+ version = "0.3";
+ disabled = pythonOlder "3.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "be6a3825b042a9e1b6f5730fc747e6d983c917f0f002d798d0b9f86ca5c05ad9";
+ };
+
+ checkInputs = [ pytest ];
+
+ # tests not included with pypi release
+ doCheck = false;
+
+ meta = with lib; {
+ description = "An improved PLY implementation of lex and yacc for Python 3";
+ homepage = https://github.com/dabeaz/sly;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/smart_open/default.nix b/nixpkgs/pkgs/development/python-modules/smart_open/default.nix
new file mode 100644
index 00000000000..325f59b1df2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/smart_open/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, boto
+, boto3
+, bz2file
+, mock
+, moto
+, requests
+, responses
+}:
+
+buildPythonPackage rec {
+ pname = "smart_open";
+ version = "1.8.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1y845mfsswyvczknwh359xprgc3hk8r17qy1wdibpz6y6pq0g3kq";
+ };
+
+ # nixpkgs version of moto is >=1.2.0, remove version pin to fix build
+ postPatch = ''
+ substituteInPlace ./setup.py --replace "moto==0.4.31" "moto"
+ '';
+
+ # moto>=1.0.0 is backwards-incompatible and some tests fail with it,
+ # so disable tests for now
+ doCheck = false;
+
+ checkInputs = [ mock moto responses ];
+
+ # upstream code requires both boto and boto3
+ propagatedBuildInputs = [ boto boto3 bz2file requests ];
+ meta = {
+ license = lib.licenses.mit;
+ description = "smart_open is a Python 2 & Python 3 library for efficient streaming of very large file";
+ maintainers = with lib.maintainers; [ jyp ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/smartdc/default.nix b/nixpkgs/pkgs/development/python-modules/smartdc/default.nix
new file mode 100644
index 00000000000..50667ce9398
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/smartdc/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, 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 stdenv.lib; {
+ description = "Joyent SmartDataCenter CloudAPI connector using http-signature authentication via Requests";
+ homepage = https://github.com/atl/py-smartdc;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/smartypants/default.nix b/nixpkgs/pkgs/development/python-modules/smartypants/default.nix
new file mode 100644
index 00000000000..71ff2037de8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/smartypants/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchhg
+, isPyPy
+}:
+
+buildPythonPackage rec {
+ version = "1.8.6";
+ pname = "smartypants";
+ disabled = isPyPy;
+
+ src = fetchhg {
+ url = "https://bitbucket.org/livibetter/smartypants.py";
+ rev = "v${version}";
+ sha256 = "1cmzz44d2hm6y8jj2xcq1wfr26760gi7iq92ha8xbhb1axzd7nq6";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Python with the SmartyPants";
+ homepage = "https://bitbucket.org/livibetter/smartypants.py";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/smmap/default.nix b/nixpkgs/pkgs/development/python-modules/smmap/default.nix
new file mode 100644
index 00000000000..366897d3e19
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/smmap/default.nix
@@ -0,0 +1,19 @@
+{ lib, fetchPypi, buildPythonPackage, nosexcover }:
+
+buildPythonPackage rec {
+ pname = "smmap";
+ version = "0.9.0";
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0qlx25f6n2n9ff37w9gg62f217fzj16xlbh0pkz0lpxxjys64aqf";
+ };
+
+ checkInputs = [ nosexcover ];
+
+ meta = {
+ description = "A pure python implementation of a sliding window memory map manager";
+ homepage = https://github.com/gitpython-developers/smmap;
+ maintainers = [ ];
+ license = lib.licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/smmap2/default.nix b/nixpkgs/pkgs/development/python-modules/smmap2/default.nix
new file mode 100644
index 00000000000..cf0b76d1a87
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/smmap2/default.nix
@@ -0,0 +1,20 @@
+{ lib, fetchPypi, buildPythonPackage, nosexcover }:
+
+buildPythonPackage rec {
+ pname = "smmap2";
+ version = "2.0.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "29a9ffa0497e7f2be94ca0ed1ca1aa3cd4cf25a1f6b4f5f87f74b46ed91d609a";
+ };
+
+ checkInputs = [ nosexcover ];
+
+ meta = {
+ description = "A pure python implementation of a sliding window memory map manager";
+ homepage = https://pypi.org/project/smmap2;
+ maintainers = [ ];
+ license = lib.licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/smugline/default.nix b/nixpkgs/pkgs/development/python-modules/smugline/default.nix
new file mode 100644
index 00000000000..514a3005725
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/smugline/default.nix
@@ -0,0 +1,40 @@
+{ stdenv
+, fetchFromGitHub
+, docopt
+, requests
+, smugpy
+, python
+, pkgs
+}:
+
+stdenv.mkDerivation rec {
+ pname = "smugline";
+ version = "20160106";
+
+ src = fetchFromGitHub {
+ owner = "gingerlime";
+ repo = pname;
+ rev = "134554c574c2d282112ba60165a8c5ffe0f16fd4";
+ sha256 = "00n012ijkdrx8wsl8x3ghdcxcdp29s4kwr3yxvlyj79g5yhfvaj6";
+ };
+
+ phases = [ "unpackPhase" "installPhase" ];
+
+ buildInputs = [ python pkgs.makeWrapper ];
+ propagatedBuildInputs = [ docopt requests smugpy ];
+
+ installPhase = ''
+ mkdir -p $out/bin $out/libexec
+ cp smugline.py $out/libexec
+ makeWrapper ${python.interpreter} $out/bin/smugline \
+ --add-flags "$out/libexec/smugline.py" \
+ --prefix PYTHONPATH : "$PYTHONPATH"
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/gingerlime/smugline;
+ description = "A simple command line tool for smugmug ";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/smugpy/default.nix b/nixpkgs/pkgs/development/python-modules/smugpy/default.nix
new file mode 100644
index 00000000000..c2028228c31
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/smugpy/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub }:
+
+buildPythonPackage rec {
+ pname = "smugpy";
+ version = "20131218";
+
+ src = fetchFromGitHub {
+ owner = "chrishoffman";
+ repo = pname;
+ rev = "f698d6749ce446e3d6c7d925b2cd1cd5b3d695ea";
+ sha256 = "029x6hm1744iznv4sw8sfyl974wmx1sqnr1k5dvzzwpk3ja49a1y";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Python library for the SmugMug API";
+ license = with licenses; [ mit ];
+ homepage = https://github.com/chrishoffman/smugpy;
+ };
+
+ doCheck = false; # Tries to login to Smugmug…
+}
diff --git a/nixpkgs/pkgs/development/python-modules/snakeviz/default.nix b/nixpkgs/pkgs/development/python-modules/snakeviz/default.nix
new file mode 100644
index 00000000000..c55d6c7376a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/snakeviz/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchPypi, buildPythonPackage, tornado }:
+
+buildPythonPackage rec {
+ pname = "snakeviz";
+ version = "2.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "11a8cd4g98vq2x61i99ncl5w83clnndwg909ya4y1cdf0k1ckb40";
+ };
+
+ # Upstream doesn't run tests from setup.py
+ doCheck = false;
+ propagatedBuildInputs = [ tornado ];
+
+ meta = with stdenv.lib; {
+ description = "Browser based viewer for profiling data";
+ homepage = https://jiffyclub.github.io/snakeviz;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ nixy ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/snapcast/default.nix b/nixpkgs/pkgs/development/python-modules/snapcast/default.nix
new file mode 100644
index 00000000000..1e008d96497
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/snapcast/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k, pytest
+, construct }:
+
+buildPythonPackage rec {
+ pname = "snapcast";
+ version = "2.0.10";
+
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2a862a57ca65aa11cf010a19cdfee37e5728d486ee92684b00233442613b5120";
+ };
+
+ checkInputs = [ pytest ];
+
+ propagatedBuildInputs = [ construct ];
+
+ # no checks from Pypi - https://github.com/happyleavesaoc/python-snapcast/issues/23
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Control Snapcast, a multi-room synchronous audio solution";
+ homepage = https://github.com/happyleavesaoc/python-snapcast/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ peterhoeg ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/snappergui/default.nix b/nixpkgs/pkgs/development/python-modules/snappergui/default.nix
new file mode 100644
index 00000000000..6b31145d519
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/snappergui/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchgit
+, pygobject3
+, dbus-python
+}:
+
+buildPythonPackage {
+ pname = "Snapper-GUI";
+ version = "0.1";
+
+ src = fetchgit {
+ url = "https://github.com/ricardomv/snapper-gui";
+ rev = "11d98586b122180c75a86fccda45c4d7e3137591";
+ sha256 = "7a9f86fc17dbf130526e70c3e925eac30e2c74d6b932efbf7e7cd9fbba6dc4b1";
+ };
+
+ # no tests available
+ doCheck = false;
+
+ propagatedBuildInputs = [ pygobject3 dbus-python ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/ricardomv/snapper-gui;
+ description = "Graphical frontend for snapper";
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ tstrobel ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sniffio/default.nix b/nixpkgs/pkgs/development/python-modules/sniffio/default.nix
new file mode 100644
index 00000000000..f5674c09e02
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sniffio/default.nix
@@ -0,0 +1,31 @@
+{ buildPythonPackage, lib, fetchPypi, glibcLocales, isPy3k, contextvars
+, pythonOlder, pytest, curio
+}:
+
+buildPythonPackage rec {
+ pname = "sniffio";
+ version = "1.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8e3810100f69fe0edd463d02ad407112542a11ffdc29f67db2bf3771afb87a21";
+ };
+
+ disabled = !isPy3k;
+
+ buildInputs = [ glibcLocales ];
+
+ propagatedBuildInputs = lib.optionals (pythonOlder "3.7") [ contextvars ];
+
+ checkInputs = [ pytest curio ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with lib; {
+ homepage = https://github.com/python-trio/sniffio;
+ license = licenses.asl20;
+ description = "Sniff out which async library your code is running under";
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/snowballstemmer/default.nix b/nixpkgs/pkgs/development/python-modules/snowballstemmer/default.nix
new file mode 100644
index 00000000000..9b7481a62a6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/snowballstemmer/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, PyStemmer, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "snowballstemmer";
+ version = "1.2.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "919f26a68b2c17a7634da993d91339e288964f93c274f1343e3bbbe2096e1128";
+ };
+
+ # No tests included
+ doCheck = false;
+
+ propagatedBuildInputs = [ PyStemmer ];
+
+ meta = with stdenv.lib; {
+ description = "16 stemmer algorithms (15 + Poerter English stemmer) generated from Snowball algorithms";
+ homepage = http://sigal.saimon.org/en/latest/index.html;
+ license = licenses.bsd3;
+ platforms = platforms.unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/snscrape/default.nix b/nixpkgs/pkgs/development/python-modules/snscrape/default.nix
new file mode 100644
index 00000000000..18a7c2bb209
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/snscrape/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, isPy3k
+, fetchPypi
+, setuptools_scm
+, setuptools
+, requests
+, lxml
+, beautifulsoup4
+}:
+
+buildPythonPackage rec {
+ pname = "snscrape";
+ version = "0.3.0";
+
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1f3lyq06l8s4kcsmwbxcwcxnv6mvz9c3zj70np8vnx149p3zi983";
+ };
+
+ # There are no tests; make sure the executable works.
+ checkPhase = ''
+ export PATH=$PATH:$out/bin
+ snscrape --help
+ '';
+
+ nativeBuildInputs = [ setuptools_scm ];
+ propagatedBuildInputs = [ setuptools requests lxml beautifulsoup4 ];
+
+ meta = with lib; {
+ homepage = https://github.com/JustAnotherArchivist/snscrape;
+ description = "A social networking service scraper in Python";
+ license = licenses.gpl3Plus;
+ maintainers = with maintainers; [ ivan ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/snug/default.nix b/nixpkgs/pkgs/development/python-modules/snug/default.nix
new file mode 100644
index 00000000000..0b3adbe15d9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/snug/default.nix
@@ -0,0 +1,37 @@
+{ buildPythonPackage, lib, fetchFromGitHub, glibcLocales
+, pytest, pytest-mock, gentools
+, typing, singledispatch, pythonOlder
+}:
+
+buildPythonPackage rec {
+ pname = "snug";
+ version = "1.3.4";
+
+ # Pypi doesn't ship the tests, so we fetch directly from GitHub
+ src = fetchFromGitHub {
+ owner = "ariebovenberg";
+ repo = "snug";
+ rev = "v${version}";
+ sha256 = "0jmg0sivz9ljazlnsrrqaizrb3r7asy5pa0dj3idx49gbig4589i";
+ };
+
+ # Prevent unicode decoding error in setup.py
+ # while reading README.rst and HISTORY.rst
+ buildInputs = [ glibcLocales ];
+ LC_ALL = "en_US.UTF-8";
+
+ propagatedBuildInputs =
+ lib.optionals (pythonOlder "3.4") [ singledispatch ] ++
+ lib.optionals (pythonOlder "3.5") [ typing ];
+
+ checkInputs = [ pytest pytest-mock gentools ];
+ checkPhase = "pytest";
+
+ meta = with lib; {
+ description = "Tiny toolkit for writing reusable interactions with web APIs";
+ license = licenses.mit;
+ homepage = https://snug.readthedocs.io/en/latest/;
+ maintainers = with maintainers; [ mredaelli ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/snuggs/default.nix b/nixpkgs/pkgs/development/python-modules/snuggs/default.nix
new file mode 100644
index 00000000000..017ea7e0d5f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/snuggs/default.nix
@@ -0,0 +1,29 @@
+{ buildPythonPackage, lib, fetchFromGitHub
+, click, numpy, pyparsing
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "snuggs";
+ version = "1.4.3";
+
+ # Pypi doesn't ship the tests, so we fetch directly from GitHub
+ src = fetchFromGitHub {
+ owner = "mapbox";
+ repo = pname;
+ rev = version;
+ sha256 = "198nbgkhlg4ik2i1r2cp900iqlairh2hnii2y8v5wy1qk3rv0s9g";
+ };
+
+ propagatedBuildInputs = [ click numpy pyparsing ];
+
+ checkInputs = [ pytest ];
+ checkPhase = "pytest test_snuggs.py";
+
+ meta = with lib; {
+ description = "S-expressions for Numpy";
+ license = licenses.mit;
+ homepage = https://github.com/mapbox/snuggs;
+ maintainers = with maintainers; [ mredaelli ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sockjs-tornado/default.nix b/nixpkgs/pkgs/development/python-modules/sockjs-tornado/default.nix
new file mode 100644
index 00000000000..10722e8af06
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sockjs-tornado/default.nix
@@ -0,0 +1,20 @@
+{ lib, buildPythonPackage, fetchPypi, tornado }:
+
+buildPythonPackage rec {
+ pname = "sockjs-tornado";
+ version = "1.0.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ec12b0c37723b0aac56610fb9b6aa68390720d0c9c2a10461df030c3a1d9af95";
+ };
+
+ propagatedBuildInputs = [ tornado ];
+
+ meta = with lib; {
+ homepage = https://github.com/mrjoes/sockjs-tornado/;
+ description = "SockJS python server implementation on top of Tornado framework";
+ license = licenses.mit;
+ maintainers = with maintainers; [ abbradar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/socksipy-branch/default.nix b/nixpkgs/pkgs/development/python-modules/socksipy-branch/default.nix
new file mode 100644
index 00000000000..37961f898f5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/socksipy-branch/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "SocksiPy-branch";
+ version = "1.01";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "01l41v4g7fy9fzvinmjxy6zcbhgqaif8dhdqm4w90fwcw9h51a8p";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = http://code.google.com/p/socksipy-branch/;
+ description = "This Python module allows you to create TCP connections through a SOCKS proxy without any special effort";
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/soco/default.nix b/nixpkgs/pkgs/development/python-modules/soco/default.nix
new file mode 100644
index 00000000000..3f0d16cc8a8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/soco/default.nix
@@ -0,0 +1,34 @@
+{ lib, buildPythonPackage, fetchPypi, xmltodict, requests
+
+# Test dependencies
+, pytest, pytestcov, coveralls, pylint, flake8, graphviz, mock, sphinx
+, sphinx_rtd_theme
+}:
+
+buildPythonPackage rec {
+ pname = "soco";
+ version = "0.17";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "15zw6i5z5p8vsa3lp20rjizhv4lzz935r73im0xm6zsl71bsgvj8";
+ };
+
+ postPatch = ''
+ # https://github.com/SoCo/SoCo/pull/670
+ substituteInPlace requirements-dev.txt \
+ --replace "pytest-cov>=2.4.0,<2.6" "pytest-cov>=2.4.0"
+ '';
+
+ propagatedBuildInputs = [ xmltodict requests ];
+ checkInputs = [
+ pytest pytestcov coveralls pylint flake8 graphviz mock sphinx
+ sphinx_rtd_theme
+ ];
+
+ meta = {
+ homepage = http://python-soco.com/;
+ description = "A CLI and library to control Sonos speakers";
+ license = lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sopel/default.nix b/nixpkgs/pkgs/development/python-modules/sopel/default.nix
new file mode 100644
index 00000000000..d01fd722ab8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sopel/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPyPy
+, dnspython
+, geoip2
+, ipython
+, praw
+, pyenchant
+, pygeoip
+, pytest
+, python
+, pytz
+, xmltodict
+}:
+
+buildPythonPackage rec {
+ pname = "sopel";
+ version = "6.6.9";
+ disabled = isPyPy;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1arldn3p2yp09wnn2cw50r5ri303d5jdsjnf6lgfl82jhfmk49a2";
+ };
+
+ propagatedBuildInputs = [
+ dnspython
+ geoip2
+ ipython
+ praw
+ pyenchant
+ pygeoip
+ pytz
+ xmltodict
+ ];
+
+ # remove once https://github.com/sopel-irc/sopel/pull/1653 lands
+ postPatch = ''
+ substituteInPlace requirements.txt \
+ --replace "praw<6.0.0" "praw<7.0.0"
+ '';
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ HOME=$PWD # otherwise tries to create tmpdirs at root
+ pytest .
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Simple and extensible IRC bot";
+ homepage = "http://sopel.chat";
+ license = licenses.efl20;
+ maintainers = with maintainers; [ mog ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sorl_thumbnail/default.nix b/nixpkgs/pkgs/development/python-modules/sorl_thumbnail/default.nix
new file mode 100644
index 00000000000..098e2292efd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sorl_thumbnail/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "sorl-thumbnail";
+ version = "12.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8dfe5fda91a5047d1d35a0b9effe7b000764a01d648e15ca076f44e9c34b6dbd";
+ };
+
+ # Disabled due to an improper configuration error when tested against django. This looks like something broken in the test cases for sorl.
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://sorl-thumbnail.readthedocs.org/en/latest/;
+ description = "Thumbnails for Django";
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sortedcollections/default.nix b/nixpkgs/pkgs/development/python-modules/sortedcollections/default.nix
new file mode 100644
index 00000000000..b8261d88628
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sortedcollections/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, sortedcontainers
+}:
+
+buildPythonPackage rec {
+ pname = "sortedcollections";
+ version = "1.1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "12nkw69lnyvh9wy6rsd0ng4bcia81vkhj1rj1kj1k3vzppn0sgmr";
+ };
+
+ propagatedBuildInputs = [ sortedcontainers ];
+
+ # No tests in PyPi tarball
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Python Sorted Collections";
+ homepage = http://www.grantjenks.com/docs/sortedcollections/;
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sortedcontainers/default.nix b/nixpkgs/pkgs/development/python-modules/sortedcontainers/default.nix
new file mode 100644
index 00000000000..b2b7f203503
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sortedcontainers/default.nix
@@ -0,0 +1,24 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "sortedcontainers";
+ version = "2.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "974e9a32f56b17c1bac2aebd9dcf197f3eb9cd30553c5852a3187ad162e1a03a";
+ };
+
+ # pypi tarball does not come with tests
+ doCheck = false;
+
+ meta = {
+ description = "Python Sorted Container Types: SortedList, SortedDict, and SortedSet";
+ homepage = http://www.grantjenks.com/docs/sortedcontainers/;
+ license = lib.licenses.asl20;
+ maintainers = with lib.maintainers; [ costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sounddevice/default.nix b/nixpkgs/pkgs/development/python-modules/sounddevice/default.nix
new file mode 100644
index 00000000000..2094aa7793d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sounddevice/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, cffi
+, numpy
+, portaudio
+, substituteAll
+}:
+
+buildPythonPackage rec {
+ pname = "sounddevice";
+ version = "0.3.13";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "01x2hm3xxzhxrjcj21si4ggmvkwmy5hag7f6yabqlhwskws721cd";
+ };
+
+ propagatedBuildInputs = [ cffi numpy portaudio ];
+
+ # No tests included nor upstream available.
+ doCheck = false;
+
+ patches = [
+ (substituteAll {
+ src = ./fix-portaudio-library-path.patch;
+ portaudio = "${portaudio}/lib/libportaudio.so.2";
+ })
+ ];
+
+ meta = {
+ description = "Play and Record Sound with Python";
+ homepage = http://python-sounddevice.rtfd.org/;
+ license = with lib.licenses; [ mit ];
+ maintainers = with lib.maintainers; [ fridh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sounddevice/fix-portaudio-library-path.patch b/nixpkgs/pkgs/development/python-modules/sounddevice/fix-portaudio-library-path.patch
new file mode 100644
index 00000000000..a5761764fdb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sounddevice/fix-portaudio-library-path.patch
@@ -0,0 +1,35 @@
+diff --git i/sounddevice.py w/sounddevice.py
+index c7c1d62..aabcb12 100644
+--- i/sounddevice.py
++++ w/sounddevice.py
+@@ -58,29 +58,7 @@ from ctypes.util import find_library as _find_library
+ from _sounddevice import ffi as _ffi
+
+
+-try:
+- for _libname in (
+- 'portaudio', # Default name on POSIX systems
+- 'bin\\libportaudio-2.dll', # DLL from conda-forge
+- 'lib/libportaudio.dylib', # dylib from anaconda
+- ):
+- _libname = _find_library(_libname)
+- if _libname is not None:
+- break
+- else:
+- raise OSError('PortAudio library not found')
+- _lib = _ffi.dlopen(_libname)
+-except OSError:
+- if _platform.system() == 'Darwin':
+- _libname = 'libportaudio.dylib'
+- elif _platform.system() == 'Windows':
+- _libname = 'libportaudio' + _platform.architecture()[0] + '.dll'
+- else:
+- raise
+- import _sounddevice_data
+- _libname = _os.path.join(
+- next(iter(_sounddevice_data.__path__)), 'portaudio-binaries', _libname)
+- _lib = _ffi.dlopen(_libname)
++_lib = _ffi.dlopen('@portaudio@')
+
+ _sampleformats = {
+ 'float32': _lib.paFloat32,
diff --git a/nixpkgs/pkgs/development/python-modules/soundfile/default.nix b/nixpkgs/pkgs/development/python-modules/soundfile/default.nix
new file mode 100644
index 00000000000..4ba18618674
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/soundfile/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+, numpy
+, libsndfile
+, cffi
+, isPyPy
+, stdenv
+}:
+
+buildPythonPackage rec {
+ pname = "soundfile";
+ version = "0.10.2";
+
+ src = fetchPypi {
+ pname = "SoundFile";
+ inherit version;
+ sha256 = "0w8mjadairg6av88090kwsridd0k115672b91zlcmf37r0c64zv3";
+ };
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ numpy libsndfile cffi ];
+
+ meta = {
+ description = "An audio library based on libsndfile, CFFI and NumPy";
+ license = lib.licenses.bsd3;
+ homepage = https://github.com/bastibe/PySoundFile;
+ maintainers = with lib.maintainers; [ fridh ];
+ };
+
+ postPatch = ''
+ substituteInPlace soundfile.py --replace "_find_library('sndfile')" "'${libsndfile.out}/lib/libsndfile${stdenv.hostPlatform.extensions.sharedLibrary}'"
+ '';
+
+ # https://github.com/bastibe/PySoundFile/issues/157
+ disabled = isPyPy || stdenv.isi686;
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/soupsieve/default.nix b/nixpkgs/pkgs/development/python-modules/soupsieve/default.nix
new file mode 100644
index 00000000000..9f877ffb355
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/soupsieve/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+, beautifulsoup4
+, isPy3k
+, backports_functools_lru_cache
+}:
+
+buildPythonPackage rec {
+ pname = "soupsieve";
+ version = "1.7.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "87db12ae79194f0ff9808d2b1641c4f031ae39ffa3cab6b907ea7c1e5e5ed445";
+ };
+
+ 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;
+ };
+
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/spacy/default.nix b/nixpkgs/pkgs/development/python-modules/spacy/default.nix
new file mode 100644
index 00000000000..cdef1b2a9bd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/spacy/default.nix
@@ -0,0 +1,75 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, pytest
+, preshed
+, ftfy
+, numpy
+, murmurhash
+, plac
+, ujson
+, dill
+, requests
+, thinc
+, regex
+, cymem
+, pathlib
+, msgpack-python
+, msgpack-numpy
+, jsonschema
+, blis
+, wasabi
+, srsly
+}:
+
+buildPythonPackage rec {
+ pname = "spacy";
+ version = "2.1.8";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1dja0crbai2n1l19m0hkv2fkj9r6zzy5ijd6dffp60v7lrch8lcw";
+ };
+
+ prePatch = ''
+ substituteInPlace setup.py \
+ --replace "plac<1.0.0,>=0.9.6" "plac>=0.9.6"
+ '';
+
+ propagatedBuildInputs = [
+ numpy
+ murmurhash
+ cymem
+ preshed
+ thinc
+ plac
+ ujson
+ dill
+ requests
+ regex
+ ftfy
+ msgpack-python
+ msgpack-numpy
+ jsonschema
+ blis
+ wasabi
+ srsly
+ ] ++ lib.optional (pythonOlder "3.4") pathlib;
+
+ checkInputs = [
+ pytest
+ ];
+
+ doCheck = false;
+ # checkPhase = ''
+ # ${python.interpreter} -m pytest spacy/tests --vectors --models --slow
+ # '';
+
+ meta = with lib; {
+ description = "Industrial-strength Natural Language Processing (NLP) with Python and Cython";
+ homepage = https://github.com/explosion/spaCy;
+ license = licenses.mit;
+ maintainers = with maintainers; [ danieldk sdll ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/spacy/models.json b/nixpkgs/pkgs/development/python-modules/spacy/models.json
new file mode 100644
index 00000000000..d8078c116c2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/spacy/models.json
@@ -0,0 +1,96 @@
+[{
+ "pname": "de_core_news_md",
+ "version": "2.1.0",
+ "sha256": "0q1flyrp2n8ja11kdlw6x1k0gll0r096pxy8ba4xv15hjng2zay1",
+ "license": "cc-by-sa-40"
+},
+{
+ "pname": "de_core_news_sm",
+ "version": "2.1.0",
+ "sha256": "0fj4dqa915i6niyskxmw2318fxzjhgdjhjx79h9cpp4mxw719w95",
+ "license": "cc-by-sa-40"
+},
+{
+ "pname": "el_core_news_md",
+ "version": "2.1.0",
+ "sha256": "1rgy9hlb92amhlbwkd91yh87xssqj2a1ign0wm59aai69rb79q3s",
+ "license": "cc-by-sa-40"
+},
+{
+ "pname": "el_core_news_sm",
+ "version": "2.1.0",
+ "sha256": "07n7qg0nnzg5gjq7vs72j9qc6z4zjx65qsrrj0hjhiihk3ps378z",
+ "license": "cc-by-sa-40"
+},
+{
+ "pname": "en_core_web_lg",
+ "version": "2.1.0",
+ "sha256": "0ywcczd9nsxmpfwknxa7z54h566bwi7chq0jzx3sqk2a6lva4q52",
+ "license": "cc-by-sa-40"
+},
+{
+ "pname": "en_core_web_md",
+ "version": "2.1.0",
+ "sha256": "10vgq1xd6dpdl7xdssgf0kywbq7xpxp79yqc2vcnl3c4axfpwk5q",
+ "license": "cc-by-sa-40"
+},
+{
+ "pname": "en_core_web_sm",
+ "version": "2.1.0",
+ "sha256": "1wg5a7nxq82sfmnc3j5xfr8il65rprmcx2h36va5dvydm1h6icad",
+ "license": "cc-by-sa-40"
+},
+{
+ "pname": "en_vectors_web_lg",
+ "version": "2.1.0",
+ "sha256": "1sq41pr70215f2s8k35x5ni4w0i4xhbzbfg3iyxgbp1b35gizg94",
+ "license": "cc-by-sa-40"
+},
+{
+ "pname": "es_core_news_md",
+ "version": "2.1.0",
+ "sha256": "02v7hm711r9ma8p5yk057z7hm2pcvpfjgnjszc697d0ymfn4avby",
+ "license": "cc-by-sa-40"
+},
+{
+ "pname": "es_core_news_sm",
+ "version": "2.1.0",
+ "sha256": "1smyyb1gqp090sailqdqp5v5ww4kf99a3hcd9d9rdhn1wgsv28dh",
+ "license": "cc-by-sa-40"
+},
+{
+ "pname": "fr_core_news_md",
+ "version": "2.1.0",
+ "sha256": "0n94ja7y4jbvz0k0x5bij2dypy11ikvgpd9dav0m0hw1wpqgls1i",
+ "license": "cc-by-sa-40"
+},
+{
+ "pname": "fr_core_news_sm",
+ "version": "2.1.0",
+ "sha256": "1czr40y5sqs0n2dd4s37kc2xawkh2nsj41wvmsx48bw0aksb1n75",
+ "license": "cc-by-sa-40"
+},
+{
+ "pname": "it_core_news_sm",
+ "version": "2.1.0",
+ "sha256": "1i8dm703mf1l39jwis3mn5mb9azpx6bsimh66iriax94612x64mb",
+ "license": "cc-by-sa-40"
+},
+{
+ "pname": "nl_core_news_sm",
+ "version": "2.1.0",
+ "sha256": "0ywyn7jprsfr10bvwnm3qk270raxm9s9rvzyp1cp7ca037ab633y",
+ "license": "cc-by-sa-40"
+},
+{
+ "pname": "pt_core_news_sm",
+ "version": "2.1.0",
+ "sha256": "0vigc9x7158sdqxjgcxgvp6458k5936jlmlp2qdmlmzxr5wmfrbc",
+ "license": "cc-by-sa-40"
+},
+{
+ "pname": "xx_ent_wiki_sm",
+ "version": "2.1.0",
+ "sha256": "19sfsxwjqdzlfm43gb4hbyj0hgqcfhcfxwdib4g5i1pcfx1v3pf4",
+ "license": "cc-by-sa-40"
+}]
diff --git a/nixpkgs/pkgs/development/python-modules/spacy/models.nix b/nixpkgs/pkgs/development/python-modules/spacy/models.nix
new file mode 100644
index 00000000000..b091c3b7d56
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/spacy/models.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchurl, spacy }:
+let
+ buildModelPackage = { pname, version, sha256, license }: buildPythonPackage {
+ inherit pname version;
+
+ src = fetchurl {
+ url = "https://github.com/explosion/spacy-models/releases/download/${pname}-${version}/${pname}-${version}.tar.gz";
+ inherit sha256;
+ };
+
+ propagatedBuildInputs = [ spacy ];
+
+ meta = with stdenv.lib; {
+ description = "Models for the spaCy NLP library";
+ homepage = "https://github.com/explosion/spacy-models";
+ license = licenses.${license};
+ maintainers = with maintainers; [ rvl ];
+ };
+ };
+
+ makeModelSet = models: with stdenv.lib; listToAttrs (map (m: nameValuePair m.pname (buildModelPackage m)) models);
+
+in makeModelSet (stdenv.lib.importJSON ./models.json)
+
+# cat models.json | jq -r '.[] | @uri "https://github.com/explosion/spacy-models/releases/download/\(.pname)-\(.version)/\(.pname)-\(.version).tar.gz"' | xargs -n1 nix-prefetch-url
diff --git a/nixpkgs/pkgs/development/python-modules/spake2/default.nix b/nixpkgs/pkgs/development/python-modules/spake2/default.nix
new file mode 100644
index 00000000000..2d2f066eaed
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/spake2/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildPythonPackage, fetchPypi, hkdf, pytest }:
+
+buildPythonPackage rec {
+ pname = "spake2";
+ version = "0.8";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c17a614b29ee4126206e22181f70a406c618d3c6c62ca6d6779bce95e9c926f4";
+ };
+
+ checkInputs = [ pytest ];
+
+ propagatedBuildInputs = [ hkdf ];
+
+ checkPhase = ''
+ py.test $out
+ '';
+
+ meta = with lib; {
+ description = "SPAKE2 password-authenticated key exchange library";
+ homepage = https://github.com/warner/python-spake2;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/spambayes/default.nix b/nixpkgs/pkgs/development/python-modules/spambayes/default.nix
new file mode 100644
index 00000000000..bbd7cbb210e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/spambayes/default.nix
@@ -0,0 +1,20 @@
+{ buildPythonPackage, isPy3k, fetchPypi, bsddb3, pydns, lockfile }:
+
+buildPythonPackage rec {
+ pname = "spambayes";
+ version = "1.1b3";
+
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "016r3g43ja73rls1nh1dl82d75lgsjdl4cv2r5s7zcihm47nb38q";
+ };
+
+ propagatedBuildInputs = [ bsddb3 pydns lockfile ];
+
+ meta = {
+ description = "Statistical anti-spam filter, initially based on the work of Paul Graham";
+ homepage = http://spambayes.sourceforge.net/;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/spark_parser/default.nix b/nixpkgs/pkgs/development/python-modules/spark_parser/default.nix
new file mode 100644
index 00000000000..b513a9f33c8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/spark_parser/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, click
+}:
+
+buildPythonPackage rec {
+ pname = "spark_parser";
+ version = "1.8.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0np2y4jcir4a4j18wws7yzkz2zj6nqhdhn41rpq8pyskg6wrgfx7";
+ };
+
+ buildInputs = [ nose ];
+ propagatedBuildInputs = [ click ];
+
+ meta = with stdenv.lib; {
+ description = ''An Early-Algorithm Context-free grammar Parser'';
+ homepage = "https://github.com/rocky/python-spark";
+ license = licenses.mit;
+ maintainers = with maintainers; [raskin];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sparqlwrapper/default.nix b/nixpkgs/pkgs/development/python-modules/sparqlwrapper/default.nix
new file mode 100644
index 00000000000..0a51bb5f9e8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sparqlwrapper/default.nix
@@ -0,0 +1,35 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+, isodate
+, pyparsing
+, html5lib
+, keepalive
+}:
+
+buildPythonPackage rec {
+ pname = "SPARQLWrapper";
+ version = "1.8.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "21928e7a97f565e772cdeeb0abad428960f4307e3a13dbdd8f6d3da8a6a506c9";
+ };
+
+ # break circular dependency loop
+ patchPhase = ''
+ sed -i '/rdflib/d' requirements.txt
+ '';
+
+ # Doesn't actually run tests
+ doCheck = false;
+
+ propagatedBuildInputs = [ six isodate pyparsing html5lib keepalive ];
+
+ meta = with stdenv.lib; {
+ description = "This is a wrapper around a SPARQL service. It helps in creating the query URI and, possibly, convert the result into a more manageable format";
+ homepage = "http://rdflib.github.io/sparqlwrapper";
+ license = licenses.w3c;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sparse/default.nix b/nixpkgs/pkgs/development/python-modules/sparse/default.nix
new file mode 100644
index 00000000000..168c491f7ef
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sparse/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, numpy
+, scipy
+, numba
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "sparse";
+ version = "0.7.0";
+
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0ija4pl8wg36ldsdv5jmqr5i75qi17vijcwwf2jdn1k15kqg35j4";
+ };
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [
+ numpy
+ scipy
+ numba
+ ];
+
+ checkPhase = ''
+ pytest sparse
+ '';
+
+ meta = with lib; {
+ description = "Sparse n-dimensional arrays computations";
+ homepage = https://github.com/pydata/sparse/;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/speaklater/default.nix b/nixpkgs/pkgs/development/python-modules/speaklater/default.nix
new file mode 100644
index 00000000000..5de86d9e14c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/speaklater/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "speaklater";
+ version = "1.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1ab5dbfzzgz6cnz4xlwx79gz83id4bhiw67k1cgqrlzfs0va7zjr";
+ };
+
+ meta = with stdenv.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; [ matejc ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/spectral-cube/default.nix b/nixpkgs/pkgs/development/python-modules/spectral-cube/default.nix
new file mode 100644
index 00000000000..c28b249d192
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/spectral-cube/default.nix
@@ -0,0 +1,46 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+, astropy
+, radio_beam
+, pytest
+, pytest-astropy
+, astropy-helpers
+}:
+
+buildPythonPackage rec {
+ pname = "spectral-cube";
+ version = "0.4.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "9051ede204b1e25b6358b5e0e573b624ec0e208c24eb03a7ed4925b745c93b5e";
+ };
+
+ propagatedBuildInputs = [ astropy radio_beam ];
+
+ nativeBuildInputs = [ astropy-helpers ];
+
+ checkInputs = [ pytest pytest-astropy ];
+
+ # Disable automatic update of the astropy-helper module
+ postPatch = ''
+ substituteInPlace setup.cfg --replace "auto_use = True" "auto_use = False"
+ '';
+
+ # Tests must be run in the build directory
+ checkPhase = ''
+ cd build/lib
+ pytest
+ '';
+
+ meta = {
+ description = "Library for reading and analyzing astrophysical spectral data cubes";
+ homepage = http://radio-astro-tools.github.io;
+ license = lib.licenses.bsd3;
+ platforms = lib.platforms.all;
+ maintainers = with lib.maintainers; [ smaret ];
+ };
+}
+
+
diff --git a/nixpkgs/pkgs/development/python-modules/speedtest-cli/default.nix b/nixpkgs/pkgs/development/python-modules/speedtest-cli/default.nix
new file mode 100644
index 00000000000..3c7a1c8d839
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/speedtest-cli/default.nix
@@ -0,0 +1,26 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+# cannot be built as pythonApplication because the library functions are
+# required for home-assistant
+buildPythonPackage rec {
+ pname = "speedtest-cli";
+ version = "2.1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0m1fpsb318mrpliw026a7nhx8iky306rmfi565734k7r49i3h7fg";
+ };
+
+ # tests require working internet connection
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Command line interface for testing internet bandwidth using speedtest.net";
+ homepage = https://github.com/sivel/speedtest-cli;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ makefu domenkozar ndowens ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/spglib/default.nix b/nixpkgs/pkgs/development/python-modules/spglib/default.nix
new file mode 100644
index 00000000000..73af5d7b00c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/spglib/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, buildPythonPackage, fetchPypi, fetchpatch, numpy, nose, pyyaml }:
+
+buildPythonPackage rec {
+ pname = "spglib";
+ version = "1.12.2.post0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "15b02b74c0f06179bc3650c43a710a5200abbba387c6eda3105bfd9236041443";
+ };
+
+ patches = [
+ (fetchpatch {
+ name = "fix-assertions.patch";
+ url = https://github.com/atztogo/spglib/commit/d57070831585a6f02dec0a31d25b375ba347798c.patch;
+ stripLen = 1;
+ sha256 = "0crmkc498rbrawiy9zbl39qis2nmsbfr4s6kk6k3zhdy8z2ppxw7";
+ })
+ ];
+
+ propagatedBuildInputs = [ numpy ];
+
+ checkInputs = [ nose pyyaml ];
+
+ meta = with stdenv.lib; {
+ description = "Python bindings for C library for finding and handling crystal symmetries";
+ homepage = https://atztogo.github.io/spglib;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ psyanticy ];
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/sphfile/default.nix b/nixpkgs/pkgs/development/python-modules/sphfile/default.nix
new file mode 100644
index 00000000000..f1455f945a9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sphfile/default.nix
@@ -0,0 +1,23 @@
+{ lib, fetchurl, buildPythonPackage, numpy }:
+
+buildPythonPackage rec {
+ pname = "sphfile";
+ version = "1.0.1";
+
+ src = fetchurl {
+ url = "mirror://pypi/s/sphfile/${pname}-${version}.tar.gz";
+ sha256 = "422b0704107b02ef3ca10e55ccdc80b0bb5ad8e2613b6442f8e2ea372c7cf5d8";
+ };
+
+ propagatedBuildInputs = [ numpy ];
+
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Numpy-based NIST SPH audio-file reader";
+ homepage = https://github.com/mcfletch/sphfile;
+ license = licenses.mit;
+ maintainers = with maintainers; [ abbradar ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sphinx-argparse/default.nix b/nixpkgs/pkgs/development/python-modules/sphinx-argparse/default.nix
new file mode 100644
index 00000000000..f5de476d109
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sphinx-argparse/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+, sphinx
+}:
+
+buildPythonPackage rec {
+ pname = "sphinx-argparse";
+ version = "0.2.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "05wc8f5hb3jsg2vh2jf7jsyan8d4i09ifrz2c8fp6f7x1zw9iav0";
+ };
+
+ checkInputs = [
+ pytest
+ ];
+
+ checkPhase = "py.test";
+
+ propagatedBuildInputs = [
+ sphinx
+ ];
+
+ meta = {
+ description = "A sphinx extension that automatically documents argparse commands and options";
+ homepage = https://github.com/ribozz/sphinx-argparse;
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ clacke ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sphinx-jinja/default.nix b/nixpkgs/pkgs/development/python-modules/sphinx-jinja/default.nix
new file mode 100644
index 00000000000..375f59ec3f9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sphinx-jinja/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildPythonPackage, fetchPypi, pbr, sphinx, sphinx-testing, nose, glibcLocales }:
+
+buildPythonPackage rec {
+ pname = "sphinx-jinja";
+ version = "1.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "02pgp9pbn0zrs0lggrc74mv6cvlnlq8wib84ga6yjvq30gda9v8q";
+ };
+
+ buildInputs = [ pbr ];
+ propagatedBuildInputs = [ sphinx ];
+
+ checkInputs = [ sphinx-testing nose glibcLocales ];
+
+ checkPhase = ''
+ # Zip (epub) does not support files with epoch timestamp
+ LC_ALL="en_US.UTF-8" nosetests -e test_build_epub
+ '';
+
+ meta = with lib; {
+ description = "Sphinx extension to include jinja templates in documentation";
+ maintainers = with maintainers; [ nand0p ];
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sphinx-navtree/default.nix b/nixpkgs/pkgs/development/python-modules/sphinx-navtree/default.nix
new file mode 100644
index 00000000000..02e5711e888
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sphinx-navtree/default.nix
@@ -0,0 +1,18 @@
+{ lib, fetchPypi, buildPythonPackage, sphinx }:
+
+buildPythonPackage rec {
+ version = "0.3.0";
+ pname = "sphinx-navtree";
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1nqcsbqwr8ihk1fv534i0naag1qw04f7ibcgl2j8csvkh8q90b4p";
+ };
+
+ propagatedBuildInputs = [ sphinx ];
+
+ meta = {
+ description = "Navigation tree customization for Sphinx";
+ homepage = "https://github.com/bintoro/sphinx-navtree";
+ license = lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sphinx-testing/default.nix b/nixpkgs/pkgs/development/python-modules/sphinx-testing/default.nix
new file mode 100644
index 00000000000..8f953970555
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sphinx-testing/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, mock
+, sphinx
+, six
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "sphinx-testing";
+ version = "1.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ef661775b5722d7b00f67fc229104317d35637a4fb4434bf2c005afdf1da4d09";
+ };
+
+ checkInputs = [ mock ];
+ propagatedBuildInputs = [ sphinx six ];
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover -s tests
+ '';
+
+ # Test failures https://github.com/sphinx-doc/sphinx-testing/issues/5
+ doCheck = false;
+
+ meta = {
+ homepage = https://github.com/sphinx-doc/sphinx-testing;
+ license = lib.licenses.bsd2;
+ description = "Testing utility classes and functions for Sphinx extensions";
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/sphinx/default.nix b/nixpkgs/pkgs/development/python-modules/sphinx/default.nix
new file mode 100644
index 00000000000..1e69692eac1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sphinx/default.nix
@@ -0,0 +1,75 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+, simplejson
+, mock
+, glibcLocales
+, html5lib
+, pythonOlder
+, enum34
+, python
+, docutils
+, jinja2
+, pygments
+, alabaster
+, Babel
+, snowballstemmer
+, six
+, sqlalchemy
+, whoosh
+, imagesize
+, requests
+, sphinxcontrib-websupport
+, typing
+, setuptools
+}:
+
+buildPythonPackage rec {
+ pname = "sphinx";
+ version = "1.8.3";
+ src = fetchPypi {
+ pname = "Sphinx";
+ inherit version;
+ sha256 = "c4cb17ba44acffae3d3209646b6baec1e215cad3065e852c68cc569d4df1b9f8";
+ };
+ 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
+ sqlalchemy
+ whoosh
+ imagesize
+ requests
+ sphinxcontrib-websupport
+ ] ++ lib.optional (pythonOlder "3.5") typing;
+
+ # Lots of tests. Needs network as well at some point.
+ doCheck = false;
+
+ # 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; [ nand0p ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sphinx_pypi_upload/default.nix b/nixpkgs/pkgs/development/python-modules/sphinx_pypi_upload/default.nix
new file mode 100644
index 00000000000..52590817c71
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sphinx_pypi_upload/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "Sphinx-PyPI-upload";
+ version = "0.2.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5f919a47ce7a7e6028dba809de81ae1297ac192347cf6fc54efca919d4865159";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Setuptools command for uploading Sphinx documentation to PyPI";
+ homepage = https://bitbucket.org/jezdez/sphinx-pypi-upload/;
+ license = licenses.bsd0;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sphinx_rtd_theme/default.nix b/nixpkgs/pkgs/development/python-modules/sphinx_rtd_theme/default.nix
new file mode 100644
index 00000000000..515f6b6156a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sphinx_rtd_theme/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, sphinx
+, readthedocs-sphinx-ext
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "sphinx_rtd_theme";
+ version = "0.4.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "728607e34d60456d736cc7991fd236afb828b21b82f956c5ea75f94c8414040a";
+ };
+
+ propagatedBuildInputs = [ sphinx ];
+
+ checkInputs = [ readthedocs-sphinx-ext pytest ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with stdenv.lib; {
+ description = "ReadTheDocs.org theme for Sphinx";
+ homepage = https://github.com/snide/sphinx_rtd_theme/;
+ license = licenses.bsd3;
+ platforms = platforms.unix;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sphinxcontrib-bibtex/default.nix b/nixpkgs/pkgs/development/python-modules/sphinxcontrib-bibtex/default.nix
new file mode 100644
index 00000000000..2daa9766a3a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sphinxcontrib-bibtex/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, oset, pybtex, pybtex-docutils, sphinx
+}:
+
+buildPythonPackage rec {
+ version = "0.4.2";
+ pname = "sphinxcontrib-bibtex";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0af7651hfjh4hv97xns4vpf8n3kqy7ghyjlkfda5wxw56hxgp6hn";
+ };
+
+ propagatedBuildInputs = [ oset pybtex pybtex-docutils sphinx ];
+
+ meta = {
+ description = "A Sphinx extension for BibTeX style citations";
+ homepage = "https://github.com/mcmtroffaes/sphinxcontrib-bibtex";
+ license = stdenv.lib.licenses.bsd2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sphinxcontrib-blockdiag/default.nix b/nixpkgs/pkgs/development/python-modules/sphinxcontrib-blockdiag/default.nix
new file mode 100644
index 00000000000..1eeb40ddbc2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sphinxcontrib-blockdiag/default.nix
@@ -0,0 +1,36 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+, mock
+, sphinx-testing
+, sphinx
+, blockdiag
+}:
+
+buildPythonPackage rec {
+ pname = "sphinxcontrib-blockdiag";
+ version = "1.5.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1w7q2hhpzk159wd35hlbwkh80hnglqa475blcd9vjwpkv1kgkpvw";
+ };
+
+ buildInputs = [ mock sphinx-testing ];
+ propagatedBuildInputs = [ sphinx blockdiag ];
+
+ # Seems to look for files in the wrong dir
+ doCheck = false;
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover -s tests
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Sphinx blockdiag extension";
+ homepage = "https://github.com/blockdiag/sphinxcontrib-blockdiag";
+ maintainers = with maintainers; [ nand0p ];
+ license = licenses.bsd2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sphinxcontrib-openapi/default.nix b/nixpkgs/pkgs/development/python-modules/sphinxcontrib-openapi/default.nix
new file mode 100644
index 00000000000..b8a4f25f5df
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sphinxcontrib-openapi/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, setuptools_scm
+, pyyaml
+, jsonschema
+, sphinxcontrib_httpdomain
+}:
+
+buildPythonPackage rec {
+ pname = "sphinxcontrib-openapi";
+ version = "0.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "9d64c8a119bfc592e6316af3e5475ce2d4d8ed6e013dc016a3f2e7971e50d7f3";
+ };
+
+ propagatedBuildInputs = [setuptools_scm pyyaml jsonschema sphinxcontrib_httpdomain];
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/ikalnytskyi/sphinxcontrib-openapi;
+ description = "OpenAPI (fka Swagger) spec renderer for Sphinx";
+ license = licenses.bsd0;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sphinxcontrib-spelling/default.nix b/nixpkgs/pkgs/development/python-modules/sphinxcontrib-spelling/default.nix
new file mode 100644
index 00000000000..f528edb75ab
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sphinxcontrib-spelling/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, sphinx
+, pyenchant
+, pbr
+}:
+
+buildPythonPackage rec {
+ pname = "sphinxcontrib-spelling";
+ version = "4.2.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "7bcbaabef7aa9c176b81d960b20d0f67817ccea5e098968c366d2db4ad76d476";
+ };
+
+ propagatedBuildInputs = [ sphinx pyenchant pbr ];
+
+ # No tests included
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Sphinx spelling extension";
+ homepage = https://bitbucket.org/dhellmann/sphinxcontrib-spelling;
+ maintainers = with maintainers; [ nand0p ];
+ license = licenses.bsd2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sphinxcontrib-websupport/default.nix b/nixpkgs/pkgs/development/python-modules/sphinxcontrib-websupport/default.nix
new file mode 100644
index 00000000000..d4f17171e3b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sphinxcontrib-websupport/default.nix
@@ -0,0 +1,25 @@
+{ 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;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/sphinxcontrib_httpdomain/default.nix b/nixpkgs/pkgs/development/python-modules/sphinxcontrib_httpdomain/default.nix
new file mode 100644
index 00000000000..5173c54be34
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sphinxcontrib_httpdomain/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, sphinx
+}:
+
+buildPythonPackage rec {
+ pname = "sphinxcontrib-httpdomain";
+ version = "1.7.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ac40b4fba58c76b073b03931c7b8ead611066a6aebccafb34dc19694f4eb6335";
+ };
+
+ propagatedBuildInputs = [ sphinx ];
+
+ # Check is disabled due to this issue:
+ # https://bitbucket.org/pypa/setuptools/issue/137/typeerror-unorderable-types-str-nonetype
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Provides a Sphinx domain for describing RESTful HTTP APIs";
+ homepage = https://bitbucket.org/birkenfeld/sphinx-contrib;
+ license = licenses.bsd0;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sphinxcontrib_newsfeed/default.nix b/nixpkgs/pkgs/development/python-modules/sphinxcontrib_newsfeed/default.nix
new file mode 100644
index 00000000000..2dfaf7dbc14
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sphinxcontrib_newsfeed/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, sphinx
+}:
+
+buildPythonPackage rec {
+ pname = "sphinxcontrib-newsfeed";
+ version = "0.1.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1d7gam3mn8v4in4p16yn3v10vps7nnaz6ilw99j4klij39dqd37p";
+ };
+
+ propagatedBuildInputs = [ sphinx ];
+
+ meta = with stdenv.lib; {
+ description = "Extension for adding a simple Blog, News or Announcements section to a Sphinx website";
+ homepage = https://bitbucket.org/prometheus/sphinxcontrib-newsfeed;
+ license = licenses.bsd2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sphinxcontrib_plantuml/default.nix b/nixpkgs/pkgs/development/python-modules/sphinxcontrib_plantuml/default.nix
new file mode 100644
index 00000000000..7e1d08eb21b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sphinxcontrib_plantuml/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, sphinx
+, plantuml
+}:
+
+buildPythonPackage rec {
+ pname = "sphinxcontrib-plantuml";
+ version = "0.17";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1e388ea0c8bc933adecf438f5243857ca238050a107d2768e5ffb490bbb733d7";
+ };
+
+ # No tests included.
+ doCheck = false;
+
+ propagatedBuildInputs = [ sphinx plantuml ];
+
+ meta = with stdenv.lib; {
+ description = "Provides a Sphinx domain for embedding UML diagram with PlantUML";
+ homepage = "https://github.com/sphinx-contrib/plantuml/";
+ license = with licenses; [ bsd2 ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/splinter/default.nix b/nixpkgs/pkgs/development/python-modules/splinter/default.nix
new file mode 100644
index 00000000000..274a5148d8a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/splinter/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, selenium
+, flask
+, coverage
+}:
+
+buildPythonPackage rec {
+ pname = "splinter";
+ version = "0.11.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0ddv80dv54rraa18lg9v7m9z61wzfwv6ww9ld83mr32gy3a2238p";
+ };
+
+ propagatedBuildInputs = [ selenium ];
+
+ checkInputs = [ flask coverage ];
+
+ # No tests included
+ doCheck = false;
+
+ meta = {
+ description = "Browser abstraction for web acceptance testing";
+ homepage = https://github.com/cobrateam/splinter;
+ license = lib.licenses.bsd3;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/spotipy/default.nix b/nixpkgs/pkgs/development/python-modules/spotipy/default.nix
new file mode 100644
index 00000000000..70471aedbd7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/spotipy/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi, requests }:
+
+buildPythonPackage rec {
+ pname = "spotipy";
+ version = "2.4.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1l8ya0cln936x0mx2j5ngl1xwpc0r89hs3wcvb8x8paw3d4dl1ab";
+ };
+
+ propagatedBuildInputs = [ requests ];
+
+ meta = with stdenv.lib; {
+ homepage = https://spotipy.readthedocs.org/;
+ description = "A light weight Python library for the Spotify Web API";
+ license = licenses.mit;
+ maintainers = [ maintainers.rvolosatovs ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/spyder-kernels/default.nix b/nixpkgs/pkgs/development/python-modules/spyder-kernels/default.nix
new file mode 100644
index 00000000000..206b0799b4a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/spyder-kernels/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, buildPythonPackage, fetchPypi, cloudpickle, ipykernel, wurlitzer,
+ jupyter_client, pyzmq }:
+
+buildPythonPackage rec {
+ pname = "spyder-kernels";
+ version = "0.5.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "7e124fad5203b748005e952cf33b44695dbb9d92f5e0dc5443e7ca0db817f400";
+ };
+
+ propagatedBuildInputs = [
+ cloudpickle
+ ipykernel
+ wurlitzer
+ jupyter_client
+ pyzmq
+ ];
+
+ # No tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Jupyter kernels for Spyder's console";
+ homepage = "https://github.com/spyder-ide/spyder-kernels";
+ license = licenses.mit;
+ maintainers = with maintainers; [ gebner ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/spyder/default.nix b/nixpkgs/pkgs/development/python-modules/spyder/default.nix
new file mode 100644
index 00000000000..7222f18d5f9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/spyder/default.nix
@@ -0,0 +1,62 @@
+{ stdenv, buildPythonPackage, fetchPypi, makeDesktopItem, jedi, pycodestyle,
+ psutil, pyflakes, rope, numpy, scipy, matplotlib, pylint, keyring, numpydoc,
+ qtconsole, qtawesome, nbconvert, mccabe, pyopengl, cloudpickle, pygments,
+ spyder-kernels, qtpy, pyzmq, chardet
+, pyqtwebengine
+}:
+
+buildPythonPackage rec {
+ pname = "spyder";
+ version = "3.3.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1z7qw1h3rhca12ycv8xrzw6z2gf81v0j6lfq9kpwh472w4vk75v1";
+ };
+
+ propagatedBuildInputs = [
+ jedi pycodestyle psutil pyflakes rope numpy scipy matplotlib pylint keyring
+ numpydoc qtconsole qtawesome nbconvert mccabe pyopengl cloudpickle spyder-kernels
+ pygments qtpy pyzmq chardet pyqtwebengine
+ ];
+
+ # There is no test for spyder
+ doCheck = false;
+
+ desktopItem = makeDesktopItem {
+ name = "Spyder";
+ exec = "spyder";
+ icon = "spyder";
+ comment = "Scientific Python Development Environment";
+ desktopName = "Spyder";
+ genericName = "Python IDE";
+ categories = "Application;Development;Editor;IDE;";
+ };
+
+ postPatch = ''
+ # remove dependency on pyqtwebengine
+ # this is still part of the pyqt 5.11 version we have in nixpkgs
+ sed -i /pyqtwebengine/d setup.py
+ substituteInPlace setup.py --replace "pyqt5<5.13" "pyqt5"
+ '';
+
+ # Create desktop item
+ postInstall = ''
+ mkdir -p $out/share/icons
+ cp spyder/images/spyder.svg $out/share/icons
+ cp -r $desktopItem/share/applications/ $out/share
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Scientific python development environment";
+ longDescription = ''
+ Spyder (previously known as Pydee) is a powerful interactive development
+ environment for the Python language with advanced editing, interactive
+ testing, debugging and introspection features.
+ '';
+ homepage = "https://github.com/spyder-ide/spyder/";
+ license = licenses.mit;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ gebner ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sqlalchemy-imageattach/default.nix b/nixpkgs/pkgs/development/python-modules/sqlalchemy-imageattach/default.nix
new file mode 100644
index 00000000000..eefb53dd7a6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sqlalchemy-imageattach/default.nix
@@ -0,0 +1,41 @@
+{ stdenv
+, buildPythonPackage
+, pytest
+, Wand
+, webob
+, sqlalchemy
+, isPyPy
+, pkgs
+}:
+
+buildPythonPackage rec {
+ pname = "SQLAlchemy-ImageAttach";
+ version = "1.0.0";
+
+ src = pkgs.fetchFromGitHub {
+ repo = "sqlalchemy-imageattach";
+ owner = "dahlia";
+ rev = version;
+ sha256 = "0ba97pn5dh00qvxyjbr0mr3pilxqw5kb3a6jd4wwbsfcv6nngqig";
+ };
+
+ checkInputs = [ pytest Wand.imagemagick webob ];
+ propagatedBuildInputs = [ sqlalchemy Wand ];
+
+ checkPhase = ''
+ cd tests
+ export MAGICK_HOME="${pkgs.imagemagick.dev}"
+ export PYTHONPATH=$PYTHONPATH:../
+ py.test
+ cd ..
+ '';
+
+ doCheck = !isPyPy; # failures due to sqla version mismatch
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/dahlia/sqlalchemy-imageattach;
+ description = "SQLAlchemy extension for attaching images to entity objects";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sqlalchemy-migrate/default.nix b/nixpkgs/pkgs/development/python-modules/sqlalchemy-migrate/default.nix
new file mode 100644
index 00000000000..ba93fb040b9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sqlalchemy-migrate/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, buildPythonPackage, fetchPypi, fetchpatch, python
+, unittest2, scripttest, pytz, mock
+, testtools, pbr, tempita, decorator, sqlalchemy
+, six, sqlparse, testrepository
+}:
+buildPythonPackage rec {
+ pname = "sqlalchemy-migrate";
+ version = "0.12.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1bngmbcry97kwhrxwm0d74zg9qg7gmiws6rd78xshyfgpcqdmylc";
+ };
+
+ # See: https://review.openstack.org/#/c/608382/
+ patches = [ (fetchpatch {
+ url = https://github.com/openstack/sqlalchemy-migrate/pull/18.patch;
+ sha256 = "1qyfq2m7w7xqf0r9bc2x42qcra4r9k9l9g1jy5j0fvlb6bvvjj07";
+ }) ];
+
+ checkInputs = [ unittest2 scripttest pytz mock testtools 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
+ # depends on ibm_db_sa
+ rm migrate/tests/changeset/databases/test_ibmdb2.py
+ # wants very old testtools
+ rm migrate/tests/versioning/test_schema.py
+ # transient failures on py27
+ substituteInPlace migrate/tests/versioning/test_util.py --replace "test_load_model" "noop"
+ ${python.interpreter} setup.py test
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/openstack/sqlalchemy-migrate;
+ description = "Schema migration tools for SQLAlchemy";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ makefu ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sqlalchemy-utils/default.nix b/nixpkgs/pkgs/development/python-modules/sqlalchemy-utils/default.nix
new file mode 100644
index 00000000000..ef30b6917a3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sqlalchemy-utils/default.nix
@@ -0,0 +1,50 @@
+{ lib, fetchPypi, buildPythonPackage
+, six, sqlalchemy
+, mock, pytz, isort, flake8, jinja2, pg8000, pyodbc, pytest, pymysql, dateutil
+, docutils, flexmock, psycopg2, pygments }:
+
+buildPythonPackage rec {
+ pname = "sqlalchemy-utils";
+ version = "0.34.2";
+
+ src = fetchPypi {
+ inherit version;
+ pname = "SQLAlchemy-Utils";
+ sha256 = "126c9p8rnnb043w57ah7idqfryczbz4vi9lzsz2cgiaig6fv52b6";
+ };
+
+ propagatedBuildInputs = [
+ six
+ sqlalchemy
+ ];
+
+ # Attempts to access localhost and there's also no database access
+ doCheck = false;
+ checkInputs = [
+ mock
+ pytz
+ isort
+ flake8
+ jinja2
+ pg8000
+ pyodbc
+ pytest
+ pymysql
+ dateutil
+ docutils
+ flexmock
+ psycopg2
+ pygments
+ ];
+
+ checkPhase = ''
+ pytest tests
+ '';
+
+ meta = with lib; {
+ homepage = https://github.com/kvesteri/sqlalchemy-utils;
+ description = "Various utility functions and datatypes for SQLAlchemy";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ eadwu ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sqlalchemy/default.nix b/nixpkgs/pkgs/development/python-modules/sqlalchemy/default.nix
new file mode 100644
index 00000000000..beb19b64f5f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sqlalchemy/default.nix
@@ -0,0 +1,34 @@
+{ lib, fetchPypi, buildPythonPackage, isPy3k
+, mock
+, pysqlite
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "SQLAlchemy";
+ version = "1.3.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1zxhabcgzspwrh9l7b68p57kqx4h664a1dp9xr8mi84r472pyzi1";
+ };
+
+ checkInputs = [
+ pytest
+ mock
+ ] ++ lib.optional (!isPy3k) pysqlite;
+
+ postInstall = ''
+ sed -e 's:--max-worker-restart=5::g' -i setup.cfg
+ '';
+
+ checkPhase = ''
+ pytest test
+ '';
+
+ meta = with lib; {
+ homepage = http://www.sqlalchemy.org/;
+ description = "A Python SQL toolkit and Object Relational Mapper";
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sqlite3dbm/default.nix b/nixpkgs/pkgs/development/python-modules/sqlite3dbm/default.nix
new file mode 100644
index 00000000000..bc49c0e426b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sqlite3dbm/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "sqlite3dbm";
+ version = "0.1.4";
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "4721607e0b817b89efdba7e79cab881a03164b94777f4cf796ad5dd59a7612c5";
+ };
+
+ meta = with stdenv.lib; {
+ description = "sqlite-backed dictionary";
+ homepage = https://github.com/Yelp/sqlite3dbm;
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sqlmap/default.nix b/nixpkgs/pkgs/development/python-modules/sqlmap/default.nix
new file mode 100644
index 00000000000..40eefc1db56
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sqlmap/default.nix
@@ -0,0 +1,24 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "sqlmap";
+ version = "1.3.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "84e0da1a3d846df2f7c886540828f374b357924207e915c8885e0472acdf68dd";
+ };
+
+ # No tests in archive
+ doCheck = false;
+
+ meta = with lib; {
+ homepage = "http://sqlmap.org";
+ license = licenses.gpl2;
+ description = "Automatic SQL injection and database takeover tool";
+ maintainers = with maintainers; [ bennofs ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sqlobject/default.nix b/nixpkgs/pkgs/development/python-modules/sqlobject/default.nix
new file mode 100644
index 00000000000..187f06c6ad9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sqlobject/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, FormEncode
+, PasteDeploy
+, paste
+, pydispatcher
+}:
+
+buildPythonPackage rec {
+ pname = "SQLObject";
+ version = "3.7.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8aee27279231bae59e95b299e253b27ac2d78934989f4ccbe317c7b25faab6de";
+ };
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ FormEncode PasteDeploy paste pydispatcher ];
+
+ meta = with stdenv.lib; {
+ description = "Object Relational Manager for providing an object interface to your database";
+ homepage = "http://www.sqlobject.org/";
+ license = licenses.lgpl21;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sqlparse/default.nix b/nixpkgs/pkgs/development/python-modules/sqlparse/default.nix
new file mode 100644
index 00000000000..5858779b86b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sqlparse/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "sqlparse";
+ version = "0.2.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ce028444cfab83be538752a2ffdb56bc417b7784ff35bb9a3062413717807dec";
+ };
+
+ checkInputs = [ pytest ];
+ checkPhase = ''
+ py.test
+ '';
+
+ # Package supports 3.x, but tests are clearly 2.x only.
+ doCheck = !isPy3k;
+
+ meta = with stdenv.lib; {
+ description = "Non-validating SQL parser for Python";
+ longDescription = ''
+ Provides support for parsing, splitting and formatting SQL statements.
+ '';
+ homepage = https://github.com/andialbrecht/sqlparse;
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/squaremap/default.nix b/nixpkgs/pkgs/development/python-modules/squaremap/default.nix
new file mode 100644
index 00000000000..3a0e95ab77e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/squaremap/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, isPy3k
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "squaremap";
+ version = "1.0.4";
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "feab6cb3b222993df68440e34825d8a16de2c74fdb290ae3974c86b1d5f3eef8";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Hierarchic visualization control for wxPython";
+ homepage = https://launchpad.net/squaremap;
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/srptools/default.nix b/nixpkgs/pkgs/development/python-modules/srptools/default.nix
new file mode 100644
index 00000000000..e7e9a1e5391
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/srptools/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi, six, pytest, pytestrunner }:
+
+buildPythonPackage rec {
+ pname = "srptools";
+ version = "1.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5754f639ed1888f47c1185d74e8907ff9af4c0ccc1c8be2ef19339d0a1327f4d";
+ };
+
+ propagatedBuildInputs = [ six ];
+
+ checkInputs = [ pytest pytestrunner ];
+
+ meta = with stdenv.lib; {
+ description = "Python-Tools to implement Secure Remote Password (SRP) authentication";
+ homepage = https://github.com/idlesign/srptools;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ elseym ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/srsly/default.nix b/nixpkgs/pkgs/development/python-modules/srsly/default.nix
new file mode 100644
index 00000000000..d1685b4d579
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/srsly/default.nix
@@ -0,0 +1,41 @@
+{ stdenv
+, lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, mock
+, numpy
+, pathlib
+, pytest
+, pytz
+}:
+
+buildPythonPackage rec {
+ pname = "srsly";
+ version = "0.0.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1v9nn17q2lshnvnc8ff6nk53rggz2hgnmx4fj4czfr40125r98pk";
+ };
+
+ propagatedBuildInputs = lib.optional (pythonOlder "3.4") pathlib;
+
+ checkInputs = [
+ mock
+ numpy
+ pytest
+ pytz
+ ];
+
+ # TypeError: cannot serialize '_io.BufferedRandom' object
+ # Possibly because of sandbox restrictions.
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Modern high-performance serialization utilities for Python";
+ homepage = https://github.com/explosion/srsly;
+ license = licenses.mit;
+ maintainers = with maintainers; [ danieldk ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ssdeep/default.nix b/nixpkgs/pkgs/development/python-modules/ssdeep/default.nix
new file mode 100644
index 00000000000..f41452b4b61
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ssdeep/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pkgs
+, cffi
+, six
+, pytest
+, pytestrunner
+}:
+
+buildPythonPackage rec {
+ pname = "ssdeep";
+ version = "3.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "255de1f034652b3ed21920221017e70e570b1644f9436fea120ae416175f4ef5";
+ };
+
+ buildInputs = [ pkgs.ssdeep pytestrunner ];
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ cffi six ];
+
+ # tests repository does not include required files
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/DinoTools/python-ssdeep;
+ description = "Python wrapper for the ssdeep library";
+ license = licenses.lgpl3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ssdp/default.nix b/nixpkgs/pkgs/development/python-modules/ssdp/default.nix
new file mode 100644
index 00000000000..5ade47587d1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ssdp/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy27
+, pbr
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "ssdp";
+ version = "1.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0yhjqs9jyvwmba8fi72xfi9k8pxy11wkz4iywayrg71ka3la49bk";
+ };
+
+ buildInputs = [ pbr ];
+ checkInputs = [ pytest ];
+
+ # test suite uses new async primitives
+ doCheck = !isPy27;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/codingjoe/ssdp;
+ description = "Python asyncio library for Simple Service Discovery Protocol (SSDP).";
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sseclient/default.nix b/nixpkgs/pkgs/development/python-modules/sseclient/default.nix
new file mode 100644
index 00000000000..8157b893d74
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sseclient/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, requests, six
+, backports_unittest-mock, pytest, pytestrunner }:
+
+buildPythonPackage rec {
+ pname = "sseclient";
+ version = "0.0.24";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1b4c5119b9381cb6ddaf3236f3f7e1437a14e488d1ed61336873a839788481b0";
+ };
+
+ propagatedBuildInputs = [ requests six ];
+
+ checkInputs = [ backports_unittest-mock pytest pytestrunner ];
+
+ meta = with stdenv.lib; {
+ description = "Client library for reading Server Sent Event streams";
+ homepage = https://github.com/btubbs/sseclient;
+ license = licenses.mit;
+ maintainers = with maintainers; [ peterhoeg ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sshpubkeys/default.nix b/nixpkgs/pkgs/development/python-modules/sshpubkeys/default.nix
new file mode 100644
index 00000000000..aefb4bd4d4b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sshpubkeys/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildPythonPackage, fetchFromGitHub
+, cryptography
+, ecdsa
+}:
+
+buildPythonPackage rec {
+ version = "3.1.0";
+ pname = "sshpubkeys";
+
+ src = fetchFromGitHub {
+ owner = "ojarva";
+ repo = "python-${pname}";
+ rev = "v${version}";
+ sha256 = "1h4gwmcfn84kkqh83km1vfz8sc5kr2g4gzgzmr8gz704jmqiv7nq";
+ };
+
+ propagatedBuildInputs = [ cryptography ecdsa ];
+
+ meta = with lib; {
+ description = "OpenSSH Public Key Parser for Python";
+ homepage = https://github.com/ojarva/python-sshpubkeys;
+ license = licenses.bsd3;
+ maintainers = [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sslib/default.nix b/nixpkgs/pkgs/development/python-modules/sslib/default.nix
new file mode 100644
index 00000000000..3e5be211d42
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sslib/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchPypi, buildPythonPackage, isPy3k }:
+
+buildPythonPackage rec {
+ pname = "sslib";
+ version = "0.2.0";
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0b5zrjkvx4klmv57pzhcmvbkdlyn745mn02k7hp811hvjrhbz417";
+ };
+
+ # No tests available
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/jqueiroz/python-sslib;
+ description = "A Python3 library for sharing secrets";
+ license = licenses.mit;
+ maintainers = with maintainers; [ jqueiroz ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/starfish/default.nix b/nixpkgs/pkgs/development/python-modules/starfish/default.nix
new file mode 100644
index 00000000000..d7989d80e8e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/starfish/default.nix
@@ -0,0 +1,89 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, click
+, dataclasses
+, jsonschema
+, matplotlib
+, numpy
+, pandas
+, regional
+, semantic-version
+, scikitimage
+, scikitlearn
+, scipy
+, showit
+, slicedimage
+, sympy
+, tqdm
+, trackpy
+, validators
+, xarray
+, ipywidgets
+, pytest
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+ pname = "starfish";
+ version = "0.1.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "19bec2a869affbca0a7e3fc0aee1b9978ff7f0f1a2a8551c2d4ae148a7ddc251";
+ };
+
+ propagatedBuildInputs = [
+ click
+ jsonschema
+ matplotlib
+ numpy
+ pandas
+ regional
+ semantic-version
+ scikitimage
+ scikitlearn
+ scipy
+ showit
+ slicedimage
+ sympy
+ tqdm
+ trackpy
+ validators
+ xarray
+ ipywidgets
+ ] ++ lib.optionals (pythonOlder "3.7") [ dataclasses ];
+
+ checkInputs = [
+ pytest
+ ];
+
+ postConfigure = ''
+ substituteInPlace REQUIREMENTS.txt \
+ --replace "slicedimage==3.1.1" "slicedimage"
+ '';
+
+ checkPhase = ''
+ # a few tests < 5% require
+ rm -rf starfish/test/full_pipelines/*
+ pytest starfish \
+ --ignore starfish/core/config/test/test_config.py \
+ --ignore starfish/core/experiment/builder/test/test_build.py \
+ --ignore starfish/core/experiment/test/test_experiment.py \
+ --ignore starfish/core/image/_filter/test/test_reduce.py \
+ --ignore starfish/core/image/_registration/_apply_transform/test/test_warp.py \
+ --ignore starfish/core/image/_registration/_learn_transform/test/test_translation.py \
+ --ignore starfish/core/image/_registration/test/test_transforms_list.py \
+ --ignore starfish/core/imagestack/test/test_max_proj.py \
+ --ignore starfish/core/recipe/test/test_recipe.py \
+ --ignore starfish/core/recipe/test/test_runnable.py \
+ --ignore starfish/core/test/test_profiler.py
+ '';
+
+ meta = with lib; {
+ description = "Pipelines and pipeline components for the analysis of image-based transcriptomics data";
+ homepage = https://spacetx-starfish.readthedocs.io/en/latest/;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/starlette/default.nix b/nixpkgs/pkgs/development/python-modules/starlette/default.nix
new file mode 100644
index 00000000000..6e2bd8250b6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/starlette/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, aiofiles
+, graphene
+, itsdangerous
+, jinja2
+, pyyaml
+, requests
+, ujson
+, pytest
+, python
+, uvicorn
+, isPy27
+}:
+
+buildPythonPackage rec {
+ pname = "starlette";
+ version = "0.12.4";
+ disabled = isPy27;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1m7qf4g5dn7n36406zbqsag71nmwp2dz91yxpplm7h7wiw2xxw93";
+ };
+
+ propagatedBuildInputs = [
+ aiofiles
+ graphene
+ itsdangerous
+ jinja2
+ pyyaml
+ requests
+ ujson
+ uvicorn
+ ];
+
+ checkPhase = ''
+ ${python.interpreter} -c """
+from starlette.applications import Starlette
+app = Starlette(debug=True)
+"""
+ '';
+
+ meta = with lib; {
+ homepage = https://www.starlette.io/;
+ description = "The little ASGI framework that shines";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ wd15 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/staticjinja/default.nix b/nixpkgs/pkgs/development/python-modules/staticjinja/default.nix
new file mode 100644
index 00000000000..32aecdc9191
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/staticjinja/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+, docopt
+, easywatch
+, jinja2
+}:
+
+buildPythonPackage rec {
+ pname = "staticjinja";
+ version = "0.3.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "fbd61cca1dad44b6891d1a1d72b11ae100e21b3909802e3ff1861ab55bf16603";
+ };
+
+ propagatedBuildInputs = [ jinja2 docopt easywatch ];
+
+ # There are no tests on pypi
+ doCheck = false;
+
+ meta = with lib; {
+ description = "A library and cli tool that makes it easy to build static sites using Jinja2";
+ homepage = https://staticjinja.readthedocs.io/en/latest/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ fgaz ];
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/statistics/default.nix b/nixpkgs/pkgs/development/python-modules/statistics/default.nix
new file mode 100644
index 00000000000..4380e592ff5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/statistics/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+, docutils
+}:
+
+buildPythonPackage rec {
+ pname = "statistics";
+ version = "1.0.3.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2dc379b80b07bf2ddd5488cad06b2b9531da4dd31edb04dc9ec0dc226486c138";
+ };
+
+ propagatedBuildInputs = [ docutils ];
+
+ # statistics package does not have any tests
+ doCheck = false;
+
+ meta = {
+ description = "A Python 2.* port of 3.4 Statistics Module";
+ homepage = https://github.com/digitalemagine/py-statistics;
+ license = lib.licenses.asl20;
+ maintainers = with lib.maintainers; [ costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/statsd/default.nix b/nixpkgs/pkgs/development/python-modules/statsd/default.nix
new file mode 100644
index 00000000000..36042a72ea8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/statsd/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "statsd";
+ version = "3.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "07yxnlalvcglgwa9pjs1clwrmwx7a4575jai7q05jz3g4i6dprp3";
+ };
+
+ buildInputs = [ nose mock ];
+
+ patchPhase = ''
+ # Failing test: ERROR: statsd.tests.test_ipv6_resolution_udp
+ sed -i 's/test_ipv6_resolution_udp/noop/' statsd/tests.py
+ # well this is a noop, but so it was before
+ sed -i 's/assert_called_once()/called/' statsd/tests.py
+ '';
+
+ meta = with stdenv.lib; {
+ maintainers = with maintainers; [ domenkozar ];
+ description = "A simple statsd client";
+ license = licenses.mit;
+ homepage = https://github.com/jsocol/pystatsd;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/statsmodels/default.nix b/nixpkgs/pkgs/development/python-modules/statsmodels/default.nix
new file mode 100644
index 00000000000..46daaa21a99
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/statsmodels/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, self
+, buildPythonPackage
+, fetchPypi
+, nose
+, numpy
+, scipy
+, pandas
+, patsy
+, cython
+, matplotlib
+}:
+
+buildPythonPackage rec {
+ pname = "statsmodels";
+ version = "0.10.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "320659a80f916c2edf9dfbe83512d9004bb562b72eedb7d9374562038697fa10";
+ };
+
+ checkInputs = with self; [ nose ];
+ propagatedBuildInputs = with self; [numpy scipy pandas patsy cython matplotlib];
+
+ # Huge test suites with several test failures
+ doCheck = false;
+
+ meta = {
+ description = "Statistical computations and models for use with SciPy";
+ homepage = https://www.github.com/statsmodels/statsmodels;
+ license = lib.licenses.bsd3;
+ maintainers = with lib.maintainers; [ fridh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/stem/default.nix b/nixpkgs/pkgs/development/python-modules/stem/default.nix
new file mode 100644
index 00000000000..69931a46007
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/stem/default.nix
@@ -0,0 +1,30 @@
+{ lib, buildPythonPackage, fetchPypi, python, mock }:
+
+buildPythonPackage rec {
+ pname = "stem";
+ version = "1.7.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "18lc95pmc7i089nlsb06dsxyjl5wbhxfqgdxbjcia35ndh8z7sn9";
+ };
+
+ postPatch = ''
+ rm test/unit/installation.py
+ sed -i "/test.unit.installation/d" test/settings.cfg
+ '';
+
+ 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://stem.torproject.org/;
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ phreedom ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/stevedore/default.nix b/nixpkgs/pkgs/development/python-modules/stevedore/default.nix
new file mode 100644
index 00000000000..e7f8be7b469
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/stevedore/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi, pbr, six }:
+
+buildPythonPackage rec {
+ pname = "stevedore";
+ version = "1.30.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1860zslirsqskc2iifljxcyly28zqgjpmkm7k3bj6zyqagzriq3v";
+ };
+
+ doCheck = false;
+
+ propagatedBuildInputs = [ pbr six ];
+
+ meta = with stdenv.lib; {
+ description = "Manage dynamic plugins for Python applications";
+ homepage = https://pypi.python.org/pypi/stevedore;
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/stm32loader/default.nix b/nixpkgs/pkgs/development/python-modules/stm32loader/default.nix
new file mode 100644
index 00000000000..13272a5a0b7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/stm32loader/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, buildPythonPackage
+, isPy27
+, fetchPypi
+, progress
+, pyserial
+, pytest
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "stm32loader";
+ version = "0.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1w6jg4dcyz6si6dcyx727sxi75wnl0j89xkiwqmsw286s1y8ijjw";
+ };
+
+ propagatedBuildInputs = [ progress pyserial ];
+
+ checkInputs = [ pytest ] ++ lib.optional isPy27 mock;
+
+ checkPhase = ''
+ pytest --strict tests/unit
+ '';
+
+ meta = with lib; {
+ description = "Flash firmware to STM32 microcontrollers in Python";
+ homepage = https://github.com/florisla/stm32loader;
+ changelog = "https://github.com/florisla/stm32loader/blob/v${version}/CHANGELOG.md";
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ emily ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/stompclient/default.nix b/nixpkgs/pkgs/development/python-modules/stompclient/default.nix
new file mode 100644
index 00000000000..1efcd6a6500
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/stompclient/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, 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 stdenv.lib; {
+ description = "Lightweight and extensible STOMP messaging client";
+ homepage = https://bitbucket.org/hozn/stompclient;
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/strategies/default.nix b/nixpkgs/pkgs/development/python-modules/strategies/default.nix
new file mode 100644
index 00000000000..2b03ddcf9c9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/strategies/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildPythonPackage, fetchPypi
+, multipledispatch, toolz
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "strategies";
+ version = "0.2.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "02i4ydrs9k61p8iv2vl2akks8p9gc88rw8031wlwb1zqsyjmb328";
+ };
+
+ propagatedBuildInputs = [ multipledispatch toolz ];
+ checkInputs = [ pytest ];
+
+ meta = {
+ description = "A Python library for control flow programming";
+ homepage = "https://github.com/logpy/strategies";
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ suhr ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/stravalib/default.nix b/nixpkgs/pkgs/development/python-modules/stravalib/default.nix
new file mode 100644
index 00000000000..e8e4eb4bf35
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/stravalib/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, nose
+, arrow
+, requests
+, units
+, pytz
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "stravalib";
+ version = "0.10.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "76db248b24cbd6c51cf93b475d8a8df04ec4b6c6287dca244e47f37a433276d7";
+ };
+
+ checkInputs = [
+ nose
+ ];
+
+ propagatedBuildInputs = [
+ arrow
+ requests
+ units
+ pytz
+ six
+ ];
+
+ # tests require network access
+ # testing strava api
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Python library for interacting with Strava v3 REST API";
+ homepage = https://github.com/hozn/stravalib;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/streamz/default.nix b/nixpkgs/pkgs/development/python-modules/streamz/default.nix
new file mode 100644
index 00000000000..5360b951de2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/streamz/default.nix
@@ -0,0 +1,44 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, tornado
+, toolz
+, zict
+, six
+, pytest
+, networkx
+, distributed
+, confluent-kafka
+, graphviz
+}:
+
+buildPythonPackage rec {
+ pname = "streamz";
+ version = "0.5.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "80c9ded1d6e68d3b78339deb6e9baf93a633d84b4a8875221e337ac06890103f";
+ };
+
+ checkInputs = [ pytest networkx distributed confluent-kafka graphviz ];
+ propagatedBuildInputs = [
+ tornado
+ toolz
+ zict
+ six
+ ];
+
+ # Disable test_tcp_async because fails on sandbox build
+ checkPhase = ''
+ pytest --deselect=streamz/tests/test_sources.py::test_tcp_async \
+ --deselect=streamz/tests/test_sources.py::test_tcp
+ '';
+
+ meta = with lib; {
+ description = "Pipelines to manage continuous streams of data";
+ homepage = https://github.com/mrocklin/streamz/;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/strict-rfc3339/default.nix b/nixpkgs/pkgs/development/python-modules/strict-rfc3339/default.nix
new file mode 100644
index 00000000000..7f45f326903
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/strict-rfc3339/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "strict-rfc3339";
+ version = "0.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5cad17bedfc3af57b399db0fed32771f18fc54bbd917e85546088607ac5e1277";
+ };
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/danielrichman/strict-rfc3339";
+ license = licenses.gpl3;
+ description = "Strict, simple, lightweight RFC3339 functions";
+ maintainers = with maintainers; [ vanschelven ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/strictyaml/default.nix b/nixpkgs/pkgs/development/python-modules/strictyaml/default.nix
new file mode 100644
index 00000000000..50c1cc50a2c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/strictyaml/default.nix
@@ -0,0 +1,29 @@
+{ buildPythonPackage
+, lib
+, fetchPypi
+, ruamel_yaml
+, python-dateutil
+}:
+
+buildPythonPackage rec {
+ version = "1.0.1";
+ pname = "strictyaml";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1baz5zjl1z9dwaczaga1ik1iy1v9zg3acwnpmgghwnk9hw2i1mq6";
+ };
+
+ propagatedBuildInputs = [ ruamel_yaml python-dateutil ];
+
+ # Library tested with external tool
+ # https://hitchdev.com/approach/contributing-to-hitch-libraries/
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Strict, typed YAML parser";
+ homepage = https://hitchdev.com/strictyaml/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ jonringer ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/stringcase/default.nix b/nixpkgs/pkgs/development/python-modules/stringcase/default.nix
new file mode 100644
index 00000000000..79f05f9b72d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/stringcase/default.nix
@@ -0,0 +1,22 @@
+{ buildPythonPackage, fetchPypi, stdenv
+}:
+
+buildPythonPackage rec {
+ pname = "stringcase";
+ version = "1.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "023hv3gknblhf9lx5kmkcchzmbhkdhmsnknkv7lfy20rcs06k828";
+ };
+
+ # PyPi package does not include tests.
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/okunishinishi/python-stringcase;
+ description = "Convert string cases between camel case, pascal case, snake case etc…";
+ license = licenses.mit;
+ maintainers = with maintainers; [ alunduil ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/stringtemplate/default.nix b/nixpkgs/pkgs/development/python-modules/stringtemplate/default.nix
new file mode 100644
index 00000000000..3d2b2337be4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/stringtemplate/default.nix
@@ -0,0 +1,24 @@
+{stdenv, fetchurl, buildPythonPackage, antlr, isPy3k}:
+
+buildPythonPackage rec {
+ pname = "PyStringTemplate";
+ version = "3.2b1";
+
+ src = fetchurl {
+ url = "http://www.stringtemplate.org/download/${pname}-${version}.tar.gz";
+ sha256 = "0lbib0l8c1q7i1j610rwcdagymr1idahrql4dkgnm5rzyg2vk3ml";
+ };
+
+ propagatedBuildInputs = [ antlr ];
+
+ disabled = isPy3k;
+
+ # No tests included in archive
+ doCheck = false;
+
+ meta = {
+ homepage = http://www.stringtemplate.org/;
+ description = "Text Templating Library";
+ platforms = stdenv.lib.platforms.linux;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/stripe/default.nix b/nixpkgs/pkgs/development/python-modules/stripe/default.nix
new file mode 100644
index 00000000000..9c252aa9ce2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/stripe/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildPythonPackage, fetchPypi, requests, pytest, pytestcov, pytest-mock, pytest_xdist }:
+
+buildPythonPackage rec {
+ pname = "stripe";
+ version = "2.30.0";
+
+ # Tests require network connectivity and there's no easy way to disable
+ # them. ~ C.
+ doCheck = false;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "de6be07c9e8a350d588278186316f66c72af7036aa5e917d1a924fb875249034";
+ };
+
+ propagatedBuildInputs = [ requests ];
+
+ checkInputs = [ pytest pytestcov pytest-mock pytest_xdist ];
+
+ meta = with lib; {
+ description = "Stripe Python bindings";
+ homepage = https://github.com/stripe/stripe-python;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/structlog/default.nix b/nixpkgs/pkgs/development/python-modules/structlog/default.nix
new file mode 100644
index 00000000000..f7e390bd678
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/structlog/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+, python-rapidjson
+, pretend
+, freezegun
+, twisted
+, simplejson
+, six
+, pythonAtLeast
+}:
+
+buildPythonPackage rec {
+ pname = "structlog";
+ version = "19.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5feae03167620824d3ae3e8915ea8589fc28d1ad6f3edf3cc90ed7c7cb33fab5";
+ };
+
+ checkInputs = [ pytest pretend freezegun simplejson twisted ]
+ ++ lib.optionals (pythonAtLeast "3.6") [ python-rapidjson ];
+ propagatedBuildInputs = [ six ];
+
+ checkPhase = ''
+ # rm tests/test_twisted.py*
+ py.test
+ '';
+
+ meta = {
+ description = "Painless structural logging";
+ homepage = http://www.structlog.org/;
+ license = lib.licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/stumpy/default.nix b/nixpkgs/pkgs/development/python-modules/stumpy/default.nix
new file mode 100644
index 00000000000..71b643e5cb5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/stumpy/default.nix
@@ -0,0 +1,55 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, numpy
+, scipy
+, numba
+, pandas
+, dask
+, distributed
+, coverage
+, flake8
+, black
+, pytest
+, codecov
+}:
+
+buildPythonPackage {
+ pname = "stumpy";
+ version = "1.0";
+
+ src = fetchFromGitHub {
+ owner = "TDAmeritrade";
+ repo = "stumpy";
+ rev = "115e477c1eec9291ab7c1fd8da30d67a70854f8e"; # no git version tag
+ sha256 = "0s2s3y855jjwdb7p55zx8lknplz58ghpw547yzmqisacr968b67w";
+ };
+
+ propagatedBuildInputs = [
+ numpy
+ scipy
+ numba
+ ];
+
+ checkInputs = [
+ pandas
+ dask
+ distributed
+ coverage
+ flake8
+ black
+ pytest
+ codecov
+ ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ 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;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/subdownloader/default.nix b/nixpkgs/pkgs/development/python-modules/subdownloader/default.nix
new file mode 100644
index 00000000000..24b082123b8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/subdownloader/default.nix
@@ -0,0 +1,66 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, mmpython
+, pyqt4
+}:
+
+buildPythonPackage rec {
+ version = "2.0.18";
+ pname = "subdownloader";
+
+ src = fetchurl {
+ url = "https://launchpad.net/subdownloader/trunk/2.0.18/+download/subdownloader_2.0.18.orig.tar.gz";
+ sha256 = "0manlfdpb585niw23ibb8n21mindd1bazp0pnxvmdjrp2mnw97ig";
+ };
+
+ propagatedBuildInputs = [ mmpython pyqt4 ];
+
+ setup = ''
+ import os
+ import sys
+
+ try:
+ if os.environ.get("NO_SETUPTOOLS"):
+ raise ImportError()
+ from setuptools import setup, Extension
+ SETUPTOOLS = True
+ except ImportError:
+ SETUPTOOLS = False
+ # Use distutils.core as a fallback.
+ # We won t be able to build the Wheel file on Windows.
+ from distutils.core import setup, Extension
+
+ with open("README") as fp:
+ long_description = fp.read()
+
+ requirements = [ ]
+
+ install_options = {
+ "name": "subdownloader",
+ "version": "2.0.18",
+ "description": "Tool for automatic download/upload subtitles for videofiles using fast hashing",
+ "long_description": long_description,
+ "url": "http://www.subdownloader.net",
+
+ "scripts": ["run.py"],
+ "packages": ["cli", "FileManagement", "gui", "languages", "modules"],
+
+ }
+ if SETUPTOOLS:
+ install_options["install_requires"] = requirements
+
+ setup(**install_options)
+ '';
+
+ postUnpack = ''
+ echo '${setup}' > $sourceRoot/setup.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Tool for automatic download/upload subtitles for videofiles using fast hashing";
+ homepage = http://www.subdownloader.net;
+ license = licenses.gpl3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/subliminal/default.nix b/nixpkgs/pkgs/development/python-modules/subliminal/default.nix
new file mode 100644
index 00000000000..61d406edafc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/subliminal/default.nix
@@ -0,0 +1,57 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+, isPy3k
+, guessit
+, babelfish
+, enzyme
+, beautifulsoup4
+, requests
+, click
+, dogpile_cache
+, stevedore
+, chardet
+, pysrt
+, six
+, appdirs
+, rarfile
+, pytz
+, futures
+, sympy
+, vcrpy
+, pytest
+, pytestpep8
+, pytest-flakes
+, pytestcov
+, pytestrunner
+}:
+
+buildPythonPackage rec {
+ pname = "subliminal";
+ version = "2.0.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1dzv5csjcwgz69aimarx2c6606ckm2gbn4x2mzydcqnyai7sayhl";
+ };
+
+ propagatedBuildInputs = [
+ guessit babelfish enzyme beautifulsoup4 requests
+ click dogpile_cache stevedore chardet pysrt six
+ appdirs rarfile pytz
+ ] ++ lib.optional (!isPy3k) futures;
+
+ checkInputs = [
+ sympy vcrpy pytest pytestpep8 pytest-flakes
+ pytestcov pytestrunner
+ ];
+
+ # https://github.com/Diaoul/subliminal/pull/963
+ doCheck = false;
+
+ meta = with lib; {
+ homepage = https://github.com/Diaoul/subliminal;
+ description = "Python library to search and download subtitles";
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/subprocess32/default.nix b/nixpkgs/pkgs/development/python-modules/subprocess32/default.nix
new file mode 100644
index 00000000000..0f43a73546d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/subprocess32/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, isPyPy
+, bash
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "subprocess32";
+ version = "3.5.4";
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "eb2937c80497978d181efa1b839ec2d9622cf9600a039a79d0e108d1f9aec79d";
+ };
+
+ buildInputs = [ bash ];
+
+ preConfigure = ''
+ substituteInPlace test_subprocess32.py \
+ --replace '/usr/' '${bash}/'
+ '';
+
+ doCheck = !isPyPy;
+ checkPhase = ''
+ ${python.interpreter} test_subprocess32.py
+ '';
+
+ meta = {
+ homepage = https://pypi.python.org/pypi/subprocess32;
+ description = "Backport of the subprocess module from Python 3.2.5 for use on 2.x";
+ maintainers = with lib.maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/subunit/default.nix b/nixpkgs/pkgs/development/python-modules/subunit/default.nix
new file mode 100644
index 00000000000..eeef94e6c76
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/subunit/default.nix
@@ -0,0 +1,22 @@
+{ buildPythonPackage
+, pkgs
+, testtools
+, testscenarios
+}:
+
+buildPythonPackage {
+ name = pkgs.subunit.name;
+ src = pkgs.subunit.src;
+
+ propagatedBuildInputs = [ testtools ];
+ checkInputs = [ testscenarios ];
+ nativeBuildInputs = [ pkgs.pkgconfig ];
+ buildInputs = [ pkgs.check pkgs.cppunit ];
+
+ patchPhase = ''
+ sed -i 's/version=VERSION/version="${pkgs.subunit.version}"/' setup.py
+ '';
+
+ meta = pkgs.subunit.meta;
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/suds-jurko/default.nix b/nixpkgs/pkgs/development/python-modules/suds-jurko/default.nix
new file mode 100644
index 00000000000..25ff5fd1636
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/suds-jurko/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPyPy
+}:
+
+buildPythonPackage rec {
+ pname = "suds-jurko";
+ version = "0.6";
+ disabled = isPyPy; # lots of failures
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "1s4radwf38kdh3jrn5acbidqlr66sx786fkwi0rgq61hn4n2bdqw";
+ };
+
+ doCheck = false;
+
+ postPatch = ''
+ # fails
+ substituteInPlace tests/test_transport_http.py \
+ --replace "test_sending_unicode_data" "noop"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Lightweight SOAP client (Jurko's fork)";
+ homepage = https://bitbucket.org/jurko/suds;
+ license = licenses.lgpl3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/suds/default.nix b/nixpkgs/pkgs/development/python-modules/suds/default.nix
new file mode 100644
index 00000000000..c4a8e480ed4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/suds/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, 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 stdenv.lib; {
+ # Broken for security issues:
+ # - https://github.com/NixOS/nixpkgs/issues/19678
+ # - https://lwn.net/Vulnerabilities/559200/
+ broken = true;
+ description = "Lightweight SOAP client";
+ homepage = https://fedorahosted.org/suds;
+ license = licenses.lgpl3Plus;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/suds/suds-0.4-CVE-2013-2217.patch b/nixpkgs/pkgs/development/python-modules/suds/suds-0.4-CVE-2013-2217.patch
new file mode 100644
index 00000000000..235fc1f928c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/suds/suds-0.4-CVE-2013-2217.patch
@@ -0,0 +1,19 @@
+--- suds.orig/suds/cache.py 2013-06-29 16:26:16.930326017 +0200
++++ suds.orig/suds/cache.py 2013-06-29 16:02:15.000000000 +0200
+@@ -19,6 +19,7 @@
+ """
+
+ import os
++import tempfile
+ import suds
+ from tempfile import gettempdir as tmp
+ from suds.transport import *
+@@ -138,7 +139,7 @@
+ @type duration: {unit:value}
+ """
+ if location is None:
+- location = os.path.join(tmp(), 'suds')
++ location = tempfile.mkdtemp()
+ self.location = location
+ self.duration = (None, 0)
+ self.setduration(**duration)
diff --git a/nixpkgs/pkgs/development/python-modules/sumo/default.nix b/nixpkgs/pkgs/development/python-modules/sumo/default.nix
new file mode 100644
index 00000000000..504d9121287
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sumo/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, isPy27
+, h5py
+, matplotlib
+, numpy
+, phonopy
+, pymatgen
+, pytest
+, scipy
+, seekpath
+, spglib
+}:
+
+buildPythonPackage rec {
+ pname = "sumo";
+ version = "1.0.9";
+
+ # No tests in Pypi tarball
+ src = fetchFromGitHub {
+ owner = "SMTG-UCL";
+ repo = "sumo";
+ rev = "v${version}";
+ sha256 = "1zw86qp9ycw2k0anw6pzvwgd3zds0z2cwy0s663zhiv9mnb5hx1n";
+ };
+
+ propagatedBuildInputs = [ numpy scipy spglib pymatgen h5py matplotlib seekpath phonopy ];
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ pytest .
+ '';
+
+ # tests have type annotations, can only run on 3.5+
+ doCheck = (!isPy27);
+
+ meta = with stdenv.lib; {
+ description = "Toolkit for plotting and analysis of ab initio solid-state calculation data";
+ homepage = "https://github.com/SMTG-UCL/sumo";
+ license = licenses.mit;
+ maintainers = with maintainers; [ psyanticy ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sunpy/default.nix b/nixpkgs/pkgs/development/python-modules/sunpy/default.nix
new file mode 100644
index 00000000000..252eafec465
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sunpy/default.nix
@@ -0,0 +1,80 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, numpy
+, scipy
+, matplotlib
+, pandas
+, astropy
+, parfive
+, pythonOlder
+, sqlalchemy
+, scikitimage
+, glymur
+, beautifulsoup4
+, drms
+, python-dateutil
+, zeep
+, tqdm
+, asdf
+, astropy-helpers
+, hypothesis
+, pytest-astropy
+, pytestcov
+, pytest-mock
+}:
+
+buildPythonPackage rec {
+ pname = "sunpy";
+ version = "1.0.2";
+ disabled = pythonOlder "3.6";
+
+ src = fetchFromGitHub {
+ owner = "sunpy";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "0dmfzxxsjjax9wf2ljyl4z07pxbshrj828zi5qnsa9rgk4148q9x";
+ };
+
+ propagatedBuildInputs = [
+ numpy
+ scipy
+ matplotlib
+ pandas
+ astropy
+ astropy-helpers
+ parfive
+ sqlalchemy
+ scikitimage
+ glymur
+ beautifulsoup4
+ drms
+ python-dateutil
+ zeep
+ tqdm
+ asdf
+ ];
+
+ checkInputs = [
+ hypothesis
+ pytest-astropy
+ pytestcov
+ pytest-mock
+ ];
+
+ preBuild = ''
+ export SETUPTOOLS_SCM_PRETEND_VERSION="${version}"
+ export HOME=$(mktemp -d)
+ '';
+
+ checkPhase = ''
+ pytest sunpy -k "not test_rotation"
+ '';
+
+ meta = with lib; {
+ description = "SunPy: Python for Solar Physics";
+ homepage = https://sunpy.org;
+ license = licenses.bsd2;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/supervise_api/default.nix b/nixpkgs/pkgs/development/python-modules/supervise_api/default.nix
new file mode 100644
index 00000000000..47cdc8a28b1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/supervise_api/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, substituteAll
+, supervise
+, isPy3k
+, whichcraft
+, utillinux
+}:
+
+buildPythonPackage rec {
+ pname = "supervise_api";
+ version = "0.6.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1230f42294910e83421b7d3b08a968d27d510a4a709e966507ed70db5da1b9de";
+ };
+
+ patches = [
+ (substituteAll {
+ src = ./supervise-path.patch;
+ inherit supervise;
+ })
+ ];
+
+ # In the git repo, supervise_api lives inside a python subdir
+ patchFlags = [ "-p2" ];
+
+ propagatedBuildInputs = lib.optional (!isPy3k) whichcraft;
+
+ checkInputs = [ utillinux ];
+
+ meta = {
+ description = "An API for running processes safely and securely";
+ homepage = https://github.com/catern/supervise;
+ license = lib.licenses.lgpl3;
+ maintainers = with lib.maintainers; [ catern ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/supervise_api/supervise-path.patch b/nixpkgs/pkgs/development/python-modules/supervise_api/supervise-path.patch
new file mode 100644
index 00000000000..c5538ddc26e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/supervise_api/supervise-path.patch
@@ -0,0 +1,15 @@
+diff --git a/python/supervise_api/supervise.py b/python/supervise_api/supervise.py
+index 497d3ea..be57e35 100644
+--- a/python/supervise_api/supervise.py
++++ b/python/supervise_api/supervise.py
+@@ -41,9 +41,7 @@ try:
+ except:
+ from whichcraft import which
+
+-supervise_utility_location = which("supervise")
+-if not supervise_utility_location:
+- raise FileNotFoundError(errno.ENOENT, "Executable not found in PATH", "supervise")
++supervise_utility_location = '@supervise@/bin/supervise'
+
+
+ def ignore_sigchld():
diff --git a/nixpkgs/pkgs/development/python-modules/supervisor/default.nix b/nixpkgs/pkgs/development/python-modules/supervisor/default.nix
new file mode 100644
index 00000000000..4771ba7a89d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/supervisor/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildPythonPackage, isPy3k, fetchPypi
+, mock
+, meld3
+}:
+buildPythonPackage rec {
+ pname = "supervisor";
+ version = "3.3.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1w3ahridzbc6rxfpbyx8lij6pjlcgf2ymzyg53llkjqxalp6sk8v";
+ };
+
+ checkInputs = [ mock ];
+
+ propagatedBuildInputs = [ meld3 ];
+
+ # Supervisor requires Python 2.4 or later but does not work on any version of Python 3. You are using version 3.6.5 (default, Mar 28 2018, 10:24:30)
+ disabled = isPy3k;
+
+ meta = {
+ description = "A system for controlling process state under UNIX";
+ homepage = http://supervisord.org/;
+ license = lib.licenses.free; # http://www.repoze.org/LICENSE.txt
+ maintainers = with lib.maintainers; [ zimbatm ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sure/default.nix b/nixpkgs/pkgs/development/python-modules/sure/default.nix
new file mode 100644
index 00000000000..b4c5fdf4022
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sure/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, rednose
+, six
+, mock
+, isPyPy
+}:
+
+buildPythonPackage rec {
+ pname = "sure";
+ version = "1.4.11";
+ disabled = isPyPy;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "3c8d5271fb18e2c69e2613af1ad400d8df090f1456081635bd3171847303cdaa";
+ };
+
+ buildInputs = [ rednose ];
+ propagatedBuildInputs = [ six mock ];
+
+ meta = with stdenv.lib; {
+ description = "Utility belt for automated testing";
+ homepage = https://sure.readthedocs.io/en/latest/;
+ license = licenses.gpl3Plus;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/suseapi/default.nix b/nixpkgs/pkgs/development/python-modules/suseapi/default.nix
new file mode 100644
index 00000000000..0e9f4f43656
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/suseapi/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, django
+, suds-jurko
+, ldap
+, mechanize
+, beautifulsoup4
+, pyxdg
+, dateutil
+, requests
+, httpretty
+}:
+
+buildPythonPackage rec {
+ pname = "suseapi";
+ version = "0.24-31-g0fcbe96";
+
+ src = fetchFromGitHub {
+ owner = "openSUSE";
+ repo = "python-${pname}";
+ rev = version;
+ sha256 = "0hyzq0h1w8gp0zfvhqh7qsgcg1wp05a14371m6bn5a7gss93rbv4";
+ };
+
+ propagatedBuildInputs = [
+ django suds-jurko ldap mechanize beautifulsoup4 pyxdg dateutil requests
+ ];
+
+ buildInputs = [ httpretty ];
+
+ doCheck = false;
+
+ meta = {
+ homepage = "https://github.com/openSUSE/python-suseapi/";
+ description = "Python module to work with various SUSE services";
+ license = lib.licenses.gpl3Plus;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/svg-path/default.nix b/nixpkgs/pkgs/development/python-modules/svg-path/default.nix
new file mode 100644
index 00000000000..3a11bf67e13
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/svg-path/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+buildPythonPackage rec {
+ pname = "svg.path";
+ version = "3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "7b568f90f67fd25413c8da9f8bc9f9f8ab089425c20fa03330e97e77d13880ee";
+ };
+
+ meta = with stdenv.lib; {
+ description = "SVG path objects and parser";
+ homepage = https://github.com/regebro/svg.path;
+ license = licenses.mit;
+ maintainers = with maintainers; [ goibhniu ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/svg2tikz/default.nix b/nixpkgs/pkgs/development/python-modules/svg2tikz/default.nix
new file mode 100644
index 00000000000..36f6dc06850
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/svg2tikz/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchgit
+, lxml
+, isPy27
+}:
+
+buildPythonPackage {
+ pname = "svg2tikz";
+ version = "1.0.0";
+ disabled = ! isPy27;
+
+ propagatedBuildInputs = [ lxml ];
+
+ src = fetchgit {
+ url = "https://github.com/kjellmf/svg2tikz";
+ sha256 = "429428ec435e53672b85cdfbb89bb8af0ff9f8238f5d05970729e5177d252d5f";
+ rev = "ad36f2c3818da13c4136d70a0fd8153acf8daef4";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/kjellmf/svg2tikz;
+ description = "An SVG to TikZ converter";
+ license = licenses.gpl2Plus;
+ maintainers = with maintainers; [ gal_bolle ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/svgwrite/default.nix b/nixpkgs/pkgs/development/python-modules/svgwrite/default.nix
new file mode 100644
index 00000000000..1772e8794ff
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/svgwrite/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, setuptools
+, pyparsing
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "svgwrite";
+ version = "1.2.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "72ef66c9fe367989823cb237ab7f012ac809dd3ba76c1b5ebd9aa61580e2e75e";
+ };
+
+ buildInputs = [ setuptools ];
+ propagatedBuildInputs = [ pyparsing ];
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A Python library to create SVG drawings";
+ homepage = https://github.com/mozman/svgwrite;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/swagger-spec-validator/default.nix b/nixpkgs/pkgs/development/python-modules/swagger-spec-validator/default.nix
new file mode 100644
index 00000000000..dc4b99c40a7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/swagger-spec-validator/default.nix
@@ -0,0 +1,37 @@
+{ lib, buildPythonPackage, fetchFromGitHub, pyyaml, jsonschema, six, pytest, mock }:
+
+buildPythonPackage rec {
+ pname = "swagger-spec-validator";
+ version = "2.4.3";
+
+ src = fetchFromGitHub {
+ owner = "Yelp";
+ repo = "swagger_spec_validator";
+ rev = "v" + version;
+ sha256 = "02f8amc6iq2clxxmrz8hirbb57sizaxijp0higqy16shk63ibalw";
+ };
+
+ checkInputs = [
+ pytest
+ mock
+ ];
+
+ checkPhase = ''
+ pytest tests
+ '';
+
+ propagatedBuildInputs = [
+ pyyaml
+ jsonschema
+ six
+ ];
+
+ meta = with lib; {
+ homepage = "https://github.com/Yelp/swagger_spec_validator";
+ license = licenses.asl20;
+ description = "Validation of Swagger specifications";
+ maintainers = with maintainers; [ vanschelven ];
+ };
+}
+
+
diff --git a/nixpkgs/pkgs/development/python-modules/swagger-ui-bundle/default.nix b/nixpkgs/pkgs/development/python-modules/swagger-ui-bundle/default.nix
new file mode 100644
index 00000000000..9922e081934
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/swagger-ui-bundle/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, buildPythonPackage, fetchPypi, jinja2, flake8 }:
+
+buildPythonPackage rec {
+ pname = "swagger-ui-bundle";
+ version = "0.0.5";
+
+ src = fetchPypi {
+ pname = "swagger_ui_bundle";
+ inherit version;
+ sha256 = "0v69v94mzzb63ciwpz3n8jwxqcyll3fsyx087s9k9q543zdqzbh1";
+ };
+
+ # patch away unused test requirements since package contains no tests
+ postPatch = ''
+ substituteInPlace setup.py --replace "setup_requires=['pytest-runner', 'flake8']" "setup_requires=[]"
+ '';
+
+ propagatedBuildInputs = [ jinja2 ];
+
+ # package contains no tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "bundled swagger-ui pip package";
+ homepage = https://github.com/dtkav/swagger_ui_bundle;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ elohmeier ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sybase/default.nix b/nixpkgs/pkgs/development/python-modules/sybase/default.nix
new file mode 100644
index 00000000000..7821c7b3d74
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sybase/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, 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 stdenv.lib; {
+ description = "The Sybase module provides a Python interface to the Sybase relational database system";
+ homepage = http://python-sybase.sourceforge.net;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ veprbl ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sybil/default.nix b/nixpkgs/pkgs/development/python-modules/sybil/default.nix
new file mode 100644
index 00000000000..8b1677a7b84
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sybil/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, buildPythonApplication, fetchPypi, fetchpatch
+, pytest, nose }:
+
+buildPythonApplication rec {
+ pname = "sybil";
+ version = "1.0.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "41d2f1dba8fd1d8ead5e9b1220b590fab8b0d1ca01d43da08555b1fb08d4d8e8";
+ };
+
+ patches = [
+ (fetchpatch {
+ url = https://github.com/cjw296/sybil/commit/6461d8156cfb68bd073ec613a5a516916e97e549.patch;
+ sha256 = "0aqny0i7l6g6d7vr025b90zz8wzszqdbmi05mp67dxw5xqjqvxj2";
+ })
+ ];
+
+ checkInputs = [ pytest nose ];
+
+ checkPhase = ''
+ py.test tests
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Automated testing for the examples in your documentation.";
+ homepage = https://github.com/cjw296/sybil/;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/symengine/default.nix b/nixpkgs/pkgs/development/python-modules/symengine/default.nix
new file mode 100644
index 00000000000..a2c0578f0c7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/symengine/default.nix
@@ -0,0 +1,52 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, cython
+, cmake
+, symengine
+, pytest
+, sympy
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "symengine";
+ version = "0.4.0";
+
+ src = fetchFromGitHub {
+ owner = "symengine";
+ repo = "symengine.py";
+ rev = "v${version}";
+ sha256 = "07i9rwxphi4zgwc7y6f6qvq73iym2cx4k1bpd7rmd3wkpgrrfxqx";
+ };
+
+ postConfigure = ''
+ substituteInPlace setup.py \
+ --replace "\"cmake\"" "\"${cmake}/bin/cmake\""
+
+ substituteInPlace cmake/FindCython.cmake \
+ --replace "SET(CYTHON_BIN cython" "SET(CYTHON_BIN ${cython}/bin/cython"
+ '';
+
+ buildInputs = [ cython cmake ];
+
+ checkInputs = [ pytest sympy ];
+
+ setupPyBuildFlags = [
+ "--symengine-dir=${symengine}/"
+ "--define=\"CYTHON_BIN=${cython}/bin/cython\""
+ ];
+
+ checkPhase = ''
+ mkdir empty
+ cd empty
+ ${python.interpreter} ../bin/test_python.py
+ '';
+
+ meta = with lib; {
+ description = "Python library providing wrappers to SymEngine";
+ homepage = https://github.com/symengine/symengine.py;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sympy/default.nix b/nixpkgs/pkgs/development/python-modules/sympy/default.nix
new file mode 100644
index 00000000000..c09267662c1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sympy/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, fetchpatch
+, glibcLocales
+, mpmath
+}:
+
+buildPythonPackage rec {
+ pname = "sympy";
+ version = "1.4"; # Upgrades may break sage. Please test or ping @timokau.
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1q937csy8rd18pk2fz1ssj7jyj7l3rjx4nzbiz5vcymfhrb1x8bi";
+ };
+
+ checkInputs = [ glibcLocales ];
+
+ propagatedBuildInputs = [ mpmath ];
+
+ # tests take ~1h
+ doCheck = false;
+
+ patches = [
+ # to be fixed by https://github.com/sympy/sympy/pull/13476
+ (fetchpatch {
+ url = "https://git.sagemath.org/sage.git/plain/build/pkgs/sympy/patches/03_undeffun_sage.patch?id=3277ba76d0ba7174608a31a0c6623e9210c63e3d";
+ sha256 = "0xcp1qafvqnivvvi0byh51mbgqicjhmswwvqvamjz9rxfzm5f7d7";
+ })
+ ];
+
+ preCheck = ''
+ export LANG="en_US.UTF-8"
+ '';
+
+ meta = {
+ description = "A Python library for symbolic mathematics";
+ homepage = http://www.sympy.org/;
+ license = lib.licenses.bsd3;
+ maintainers = with lib.maintainers; [ lovek323 timokau ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/systemd/default.nix b/nixpkgs/pkgs/development/python-modules/systemd/default.nix
new file mode 100644
index 00000000000..cbe2a213191
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/systemd/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, systemd, pkgconfig }:
+
+buildPythonPackage rec {
+ pname = "systemd";
+ version = "234";
+
+ src = fetchFromGitHub {
+ owner = "systemd";
+ repo = "python-systemd";
+ rev = "v${version}";
+ sha256 = "1fakw7qln44mfd6pj4kqsgyrhkc6cyr653id34kv0rdnb1bvysrz";
+ };
+
+ buildInputs = [ systemd ];
+ nativeBuildInputs = [ pkgconfig ];
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Python module for native access to the systemd facilities";
+ homepage = http://www.freedesktop.org/software/systemd/python-systemd/;
+ license = licenses.lgpl21;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tableaudocumentapi/default.nix b/nixpkgs/pkgs/development/python-modules/tableaudocumentapi/default.nix
new file mode 100644
index 00000000000..a2f8fbb2f53
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tableaudocumentapi/default.nix
@@ -0,0 +1,24 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "tableaudocumentapi";
+ version = "0.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "fc6d44b62cf6ea29916c073686e2f9f35c9902eccd57b8493f8d44a59a2f60d9";
+ };
+
+ # tests not inclued with release
+ doCheck = false;
+
+ meta = with lib; {
+ description = "A Python module for working with Tableau files";
+ homepage = https://github.com/tableau/document-api-python;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tables/default.nix b/nixpkgs/pkgs/development/python-modules/tables/default.nix
new file mode 100644
index 00000000000..7b1b4f7c36f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tables/default.nix
@@ -0,0 +1,57 @@
+{ stdenv, 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=${hdf5}"
+ "--lzo=${lzo}"
+ "--bzip2=${bzip2.dev}"
+ "--blosc=${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 = {
+ description = "Hierarchical datasets for Python";
+ homepage = http://www.pytables.org/;
+ license = stdenv.lib.licenses.bsd2;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tablib/default.nix b/nixpkgs/pkgs/development/python-modules/tablib/default.nix
new file mode 100644
index 00000000000..9f1bf2390b6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tablib/default.nix
@@ -0,0 +1,29 @@
+{ buildPythonPackage, stdenv, fetchPypi, pytest, unicodecsv, pandas
+, xlwt, openpyxl, pyyaml, xlrd, odfpy, fetchpatch
+}:
+
+buildPythonPackage rec {
+ pname = "tablib";
+ version = "0.12.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "11wxchj0qz77dn79yiq30k4b4gsm429f4bizk4lm4rb63nk51kxq";
+ };
+
+ checkInputs = [ pytest unicodecsv pandas ];
+ propagatedBuildInputs = [ xlwt openpyxl pyyaml xlrd odfpy ];
+
+ patches = [
+ (fetchpatch {
+ url = "https://github.com/kennethreitz/tablib/commit/0e51a2d0944022af186d2dcd34c0ab3c47141ba5.patch";
+ sha256 = "0lbbl871zdn5vpgqyjkil0c2ap3b5hz19rmihhyvrx7m4mlh1aij";
+ })
+ ];
+
+ meta = with stdenv.lib; {
+ description = "Tablib: format-agnostic tabular dataset library";
+ homepage = http://python-tablib.org;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tabulate/default.nix b/nixpkgs/pkgs/development/python-modules/tabulate/default.nix
new file mode 100644
index 00000000000..7321848afd0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tabulate/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, nose
+}:
+
+buildPythonPackage rec {
+ version = "0.8.3";
+ pname = "tabulate";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8af07a39377cee1103a5c8b3330a421c2d99b9141e9cc5ddd2e3263fea416943";
+ };
+
+ checkInputs = [ nose ];
+
+ # Tests: cannot import common (relative import).
+ doCheck = false;
+
+ meta = {
+ description = "Pretty-print tabular data";
+ homepage = https://bitbucket.org/astanin/python-tabulate;
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ fridh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tadasets/default.nix b/nixpkgs/pkgs/development/python-modules/tadasets/default.nix
new file mode 100644
index 00000000000..61f6b866455
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tadasets/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, numpy
+, matplotlib
+, pytest
+, scipy
+}:
+
+buildPythonPackage rec {
+ pname = "tadasets";
+ version = "0.0.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a0e6c14678750315febd97fcf334bbbfd2695ebd91b4fe7707bb1220d7348416";
+ };
+
+ propagatedBuildInputs = [
+ numpy
+ matplotlib
+ ];
+
+ checkInputs = [
+ pytest
+ scipy
+ ];
+
+ meta = with lib; {
+ description = "Great data sets for Topological Data Analysis";
+ homepage = https://tadasets.scikit-tda.org;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tarman/default.nix b/nixpkgs/pkgs/development/python-modules/tarman/default.nix
new file mode 100644
index 00000000000..305daecc8de
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tarman/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, 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 stdenv.lib; {
+ homepage = https://github.com/matejc/tarman;
+ description = "Archive manager with curses interface";
+ license = licenses.bsd0;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/taskw/default.nix b/nixpkgs/pkgs/development/python-modules/taskw/default.nix
new file mode 100644
index 00000000000..d2d12ca0b96
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/taskw/default.nix
@@ -0,0 +1,41 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, tox
+, six
+, dateutil
+, kitchen
+, pytz
+, pkgs
+}:
+
+buildPythonPackage rec {
+ version = "1.2.0";
+ pname = "taskw";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "fadd8afc12df026c3c2d39b633c55d3337f7dca95602fce2239455a048bc85fe";
+ };
+
+ patches = [ ./use-template-for-taskwarrior-install-path.patch ];
+ postPatch = ''
+ substituteInPlace taskw/warrior.py \
+ --replace '@@taskwarrior@@' '${pkgs.taskwarrior}'
+ '';
+
+ # https://github.com/ralphbean/taskw/issues/98
+ doCheck = false;
+
+ buildInputs = [ nose pkgs.taskwarrior tox ];
+ propagatedBuildInputs = [ six dateutil kitchen pytz ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/ralphbean/taskw;
+ description = "Python bindings for your taskwarrior database";
+ license = licenses.gpl3Plus;
+ maintainers = with maintainers; [ pierron ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/taskw/use-template-for-taskwarrior-install-path.patch b/nixpkgs/pkgs/development/python-modules/taskw/use-template-for-taskwarrior-install-path.patch
new file mode 100644
index 00000000000..8c7685c9d03
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/taskw/use-template-for-taskwarrior-install-path.patch
@@ -0,0 +1,14 @@
+commit 4de021d049a9b194da93d7e96ff12cc1cbabac83
+Author: Nicolas B. Pierron <nixos@nbp.name>
+Date: Sun Nov 16 15:19:38 2014 +0100
+
+ Use a template for taskwarrior install path.
+
+--- a/taskw/warrior.py
++++ b/taskw/warrior.py
+@@ -449 +449 @@ class TaskWarriorShellout(TaskWarriorBase):
+- 'task',
++ '@@taskwarrior@@/bin/task',
+@@ -553 +553 @@ class TaskWarriorShellout(TaskWarriorBase):
+- ['task', '--version'],
++ ['@@taskwarrior@@/bin/task', '--version'],
diff --git a/nixpkgs/pkgs/development/python-modules/tblib/default.nix b/nixpkgs/pkgs/development/python-modules/tblib/default.nix
new file mode 100644
index 00000000000..4b5ad014b97
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tblib/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "tblib";
+ version = "1.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1k9vmw0kcbkij9lbz80imkwkhq24vgrqf1i95kv8y5aaarjda6mx";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Traceback fiddling library. Allows you to pickle tracebacks.";
+ homepage = https://github.com/ionelmc/python-tblib;
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ teh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/telegram/default.nix b/nixpkgs/pkgs/development/python-modules/telegram/default.nix
new file mode 100644
index 00000000000..df45aaaee3b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/telegram/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "telegram";
+ version = "0.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1495l2ml8mg120wfvqhikqkfczhwwaby40vdmsz8v2l69jps01fl";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/liluo/telegram;
+ description = "Telegram APIs";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/telethon-session-sqlalchemy/default.nix b/nixpkgs/pkgs/development/python-modules/telethon-session-sqlalchemy/default.nix
new file mode 100644
index 00000000000..b74fe9dc0de
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/telethon-session-sqlalchemy/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k, sqlalchemy }:
+
+buildPythonPackage rec {
+ pname = "telethon-session-sqlalchemy";
+ version = "0.2.15";
+
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2ba603d95d5be6ddecd8ecaeaffba00b75b49dd80eb77f6228dd7b793ca67fd2";
+ };
+
+ propagatedBuildInputs = [
+ sqlalchemy
+ ];
+
+ # No tests available
+ doCheck = false;
+
+ meta = with lib; {
+ homepage = https://github.com/tulir/telethon-session-sqlalchemy;
+ description = "SQLAlchemy backend for Telethon session storage";
+ license = licenses.mit;
+ maintainers = with maintainers; [ nyanloutre ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/telethon/default.nix b/nixpkgs/pkgs/development/python-modules/telethon/default.nix
new file mode 100644
index 00000000000..334163114a1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/telethon/default.nix
@@ -0,0 +1,30 @@
+{ lib, buildPythonPackage, fetchPypi, async_generator, rsa, pyaes, pythonOlder }:
+
+buildPythonPackage rec {
+ pname = "telethon";
+ version = "1.9.0";
+
+ src = fetchPypi {
+ inherit version;
+ pname = "Telethon";
+ sha256 = "a8797ad5bfee2b350cfc9b73cbb30fc19c8f73c0db42471e0df1371b1a269edc";
+ };
+
+ propagatedBuildInputs = [
+ async_generator
+ rsa
+ pyaes
+ ];
+
+ # No tests available
+ doCheck = false;
+
+ disabled = pythonOlder "3.5";
+
+ meta = with lib; {
+ homepage = https://github.com/LonamiWebs/Telethon;
+ description = "Full-featured Telegram client library for Python 3";
+ license = licenses.mit;
+ maintainers = with maintainers; [ nyanloutre ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tempita/default.nix b/nixpkgs/pkgs/development/python-modules/tempita/default.nix
new file mode 100644
index 00000000000..a903aae104e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tempita/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPythonPackage, fetchFromGitHub, nose }:
+
+buildPythonPackage {
+ version = "0.5.3-2016-09-28";
+ pname = "tempita";
+
+ src = fetchFromGitHub {
+ owner = "gjhiggins";
+ repo = "tempita";
+ rev = "47414a7c6e46a9a9afe78f0bce2ea299fa84d10";
+ sha256 = "0f33jjjs5rvp7ar2j6ggyfykcrsrn04jaqcq71qfvycf6b7nw3rn";
+ };
+
+ buildInputs = [ nose ];
+
+ meta = {
+ homepage = https://github.com/gjhiggins/tempita;
+ description = "A very small text templating language";
+ license = lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tempora/default.nix b/nixpkgs/pkgs/development/python-modules/tempora/default.nix
new file mode 100644
index 00000000000..10de193866b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tempora/default.nix
@@ -0,0 +1,30 @@
+{ lib, buildPythonPackage, fetchPypi
+, setuptools_scm, pytest, freezegun, backports_unittest-mock
+, six, pytz, jaraco_functools }:
+
+buildPythonPackage rec {
+ pname = "tempora";
+ version = "1.14.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "cb60b1d2b1664104e307f8e5269d7f4acdb077c82e35cd57246ae14a3427d2d6";
+ };
+
+ buildInputs = [ setuptools_scm ];
+
+ propagatedBuildInputs = [ six pytz jaraco_functools ];
+
+ checkInputs = [ pytest freezegun backports_unittest-mock ];
+
+ checkPhase = ''
+ substituteInPlace pytest.ini --replace "--flake8" ""
+ pytest
+ '';
+
+ meta = with lib; {
+ description = "Objects and routines pertaining to date and time";
+ homepage = https://github.com/jaraco/tempora;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tenacity/default.nix b/nixpkgs/pkgs/development/python-modules/tenacity/default.nix
new file mode 100644
index 00000000000..3540bebd196
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tenacity/default.nix
@@ -0,0 +1,34 @@
+{ lib, buildPythonPackage, fetchPypi, isPy27
+, pbr, six, futures, monotonic
+, pytest, sphinx, tornado
+}:
+
+buildPythonPackage rec {
+ pname = "tenacity";
+ version = "5.0.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "06sp12cn8zcb7rqklq91f6mxhvrdq5cs0p3pdiazacqcmvvwbhx0";
+ };
+
+ nativeBuildInputs = [ pbr ];
+ propagatedBuildInputs = [ six ]
+ ++ lib.optionals isPy27 [ futures monotonic ];
+
+ checkInputs = [ pytest sphinx tornado ];
+ checkPhase = (if isPy27 then ''
+ pytest --ignore='tenacity/tests/test_asyncio.py'
+ '' else ''
+ pytest
+ '') + ''
+ sphinx-build -a -E -W -b doctest doc/source doc/build
+ '';
+
+ meta = with lib; {
+ homepage = https://github.com/jd/tenacity;
+ description = "Retrying library for Python";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ jakewaksbaum ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tensorflow-estimator/default.nix b/nixpkgs/pkgs/development/python-modules/tensorflow-estimator/default.nix
new file mode 100644
index 00000000000..127e7560679
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tensorflow-estimator/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchPypi, buildPythonPackage
+, numpy
+, absl-py
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "tensorflow-estimator";
+ version = "1.14.0";
+ format = "wheel";
+
+ src = fetchPypi {
+ pname = "tensorflow_estimator";
+ inherit version format;
+ sha256 = "14irpsyj14vn2dpwr601f54058wywci1pv0hss8s01rl0rk3y1ya";
+ };
+
+ propagatedBuildInputs = [ mock numpy absl-py ];
+
+ meta = with stdenv.lib; {
+ description = "TensorFlow Estimator is a high-level API that encapsulates model training, evaluation, prediction, and exporting.";
+ homepage = http://tensorflow.org;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ jyp ];
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/tensorflow-probability/default.nix b/nixpkgs/pkgs/development/python-modules/tensorflow-probability/default.nix
new file mode 100644
index 00000000000..b585ab4f81b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tensorflow-probability/default.nix
@@ -0,0 +1,110 @@
+{ lib
+, fetchFromGitHub
+, buildBazelPackage
+, buildPythonPackage
+, python
+, setuptools
+, wheel
+, tensorflow
+, six
+, numpy
+, decorator
+, cloudpickle
+, hypothesis
+, scipy
+, matplotlib
+, mock
+, pytest
+}:
+
+let
+ version = "0.7";
+ pname = "tensorflow_probability";
+
+ # first build all binaries and generate setup.py using bazel
+ bazel-wheel = buildBazelPackage {
+ name = "${pname}-${version}-py2.py3-none-any.whl";
+
+ src = fetchFromGitHub {
+ owner = "tensorflow";
+ repo = "probability";
+ rev = "v${version}";
+ sha256 = "0sy9gmjcvmwciamqvd7kd9qw2wd7ksklk80815fsn7sj0wiqxjyd";
+ };
+
+ nativeBuildInputs = [
+ # needed to create the output wheel in installPhase
+ python
+ setuptools
+ wheel
+ ];
+
+ bazelTarget = ":pip_pkg";
+
+ fetchAttrs = {
+ sha256 = "0sjjj9z1dhilhpc8pq4154czrb79z9cm044jvn75kxcjv6v5l2m5";
+ };
+
+ buildAttrs = {
+ preBuild = ''
+ patchShebangs .
+ '';
+
+ installPhase = ''
+ # work around timestamp issues
+ # https://github.com/NixOS/nixpkgs/issues/270#issuecomment-467583872
+ export SOURCE_DATE_EPOCH=315532800
+
+ # First build, then move. Otherwise pip_pkg would create the dir $out
+ # and then put the wheel in that directory. However we want $out to
+ # point directly to the wheel file.
+ ./bazel-bin/pip_pkg . --release
+ mv *.whl "$out"
+ '';
+ };
+ };
+in buildPythonPackage {
+ inherit version pname;
+ format = "wheel";
+
+ src = bazel-wheel;
+
+ propagatedBuildInputs = [
+ tensorflow
+ six
+ numpy
+ decorator
+ cloudpickle
+ ];
+
+ # Listed here:
+ # https://github.com/tensorflow/probability/blob/f01d27a6f256430f03b14beb14d37def726cb257/testing/run_tests.sh#L58
+ checkInputs = [
+ hypothesis
+ pytest
+ scipy
+ 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
+ # '';
+
+ # sanity check
+ checkPhase = ''
+ python -c 'import tensorflow_probability'
+ '';
+
+ meta = with lib; {
+ description = "Library for probabilistic reasoning and statistical analysis";
+ homepage = https://www.tensorflow.org/probability/;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ timokau ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tensorflow-tensorboard/default.nix b/nixpkgs/pkgs/development/python-modules/tensorflow-tensorboard/default.nix
new file mode 100644
index 00000000000..fa1759119c9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tensorflow-tensorboard/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, lib, fetchPypi, buildPythonPackage, isPy3k
+, numpy
+, werkzeug
+, protobuf
+, grpcio
+, markdown
+, futures
+, absl-py
+}:
+
+# tensorflow/tensorboard is built from a downloaded wheel, because
+# https://github.com/tensorflow/tensorboard/issues/719 blocks
+# buildBazelPackage.
+
+buildPythonPackage rec {
+ pname = "tensorflow-tensorboard";
+ version = "1.14.0";
+ format = "wheel";
+
+ src = fetchPypi ({
+ pname = "tensorboard";
+ inherit version;
+ format = "wheel";
+ } // (if isPy3k then {
+ python = "py3";
+ sha256 = "1z631614jk5zgasgmwfr33gz8bwv11p9f5llzlwvx3a8rnyv3q2h";
+ } else {
+ python = "py2";
+ sha256 = "1clv29yy942l3mfar2z6wkkk6l18fz7j6mi2dfz24j9dln0scny3";
+ }));
+
+ propagatedBuildInputs = [
+ numpy
+ werkzeug
+ protobuf
+ markdown
+ grpcio absl-py
+ ] ++ lib.optional (!isPy3k) futures;
+
+ meta = with stdenv.lib; {
+ description = "TensorFlow's Visualization Toolkit";
+ homepage = http://tensorflow.org;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ abbradar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tensorflow/bin.nix b/nixpkgs/pkgs/development/python-modules/tensorflow/bin.nix
new file mode 100644
index 00000000000..e46d0298953
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tensorflow/bin.nix
@@ -0,0 +1,111 @@
+{ stdenv
+, lib
+, fetchurl
+, buildPythonPackage
+, isPy3k, pythonOlder
+, astor
+, gast
+, google-pasta
+, wrapt
+, numpy
+, six
+, termcolor
+, protobuf
+, absl-py
+, grpcio
+, mock
+, backports_weakref
+, tensorflow-estimator
+, tensorflow-tensorboard
+, cudaSupport ? false
+, cudatoolkit ? null
+, cudnn ? null
+, nvidia_x11 ? null
+, zlib
+, python
+, symlinkJoin
+, keras-applications
+, keras-preprocessing
+}:
+
+# We keep this binary build for two reasons:
+# - the source build doesn't work on Darwin.
+# - the source build is currently brittle and not easy to maintain
+
+assert cudaSupport -> cudatoolkit != null
+ && cudnn != null
+ && nvidia_x11 != null;
+
+# unsupported combination
+assert ! (stdenv.isDarwin && cudaSupport);
+
+let
+ packages = import ./binary-hashes.nix;
+
+ variant = if cudaSupport then "-gpu" else "";
+ pname = "tensorflow${variant}";
+
+in buildPythonPackage {
+ inherit pname;
+ inherit (packages) version;
+ format = "wheel";
+
+ src = let
+ pyVerNoDot = lib.strings.stringAsChars (x: if x == "." then "" else x) python.pythonVersion;
+ pyver = if stdenv.isDarwin then builtins.substring 0 1 pyVerNoDot else pyVerNoDot;
+ platform = if stdenv.isDarwin then "mac" else "linux";
+ unit = if cudaSupport then "gpu" else "cpu";
+ key = "${platform}_py_${pyver}_${unit}";
+ in fetchurl packages.${key};
+
+ propagatedBuildInputs = [
+ protobuf
+ numpy
+ termcolor
+ grpcio
+ six
+ astor
+ absl-py
+ gast
+ google-pasta
+ wrapt
+ tensorflow-estimator
+ tensorflow-tensorboard
+ keras-applications
+ keras-preprocessing
+ ] ++ lib.optional (!isPy3k) mock
+ ++ lib.optionals (pythonOlder "3.4") [ backports_weakref ];
+
+ # Upstream has a pip hack that results in bin/tensorboard being in both tensorflow
+ # and the propageted input tensorflow-tensorboard which causes environment collisions.
+ # another possibility would be to have tensorboard only in the buildInputs
+ # https://github.com/tensorflow/tensorflow/blob/v1.7.1/tensorflow/tools/pip_package/setup.py#L79
+ postInstall = ''
+ rm $out/bin/tensorboard
+ '';
+
+ # Note that we need to run *after* the fixup phase because the
+ # libraries are loaded at runtime. If we run in preFixup then
+ # patchelf --shrink-rpath will remove the cuda libraries.
+ postFixup = let
+ rpath = stdenv.lib.makeLibraryPath
+ ([ stdenv.cc.cc.lib zlib ] ++ lib.optionals cudaSupport [ cudatoolkit.out cudatoolkit.lib cudnn nvidia_x11 ]);
+ in
+ lib.optionalString stdenv.isLinux ''
+ rrPath="$out/${python.sitePackages}/tensorflow/:$out/${python.sitePackages}/tensorflow/contrib/tensor_forest/:${rpath}"
+ internalLibPath="$out/${python.sitePackages}/tensorflow/python/_pywrap_tensorflow_internal.so"
+ find $out \( -name '*.so' -or -name '*.so.*' \) -exec patchelf --set-rpath "$rrPath" {} \;
+ '';
+
+
+ meta = with stdenv.lib; {
+ description = "Computation using data flow graphs for scalable machine learning";
+ homepage = http://tensorflow.org;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ jyp abbradar ];
+ platforms = [ "x86_64-linux" "x86_64-darwin" ];
+ # Python 2.7 build uses different string encoding.
+ # See https://github.com/NixOS/nixpkgs/pull/37044#issuecomment-373452253
+ broken = stdenv.isDarwin && !isPy3k;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tensorflow/binary-hashes.nix b/nixpkgs/pkgs/development/python-modules/tensorflow/binary-hashes.nix
new file mode 100644
index 00000000000..fa4809dc3f1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tensorflow/binary-hashes.nix
@@ -0,0 +1,43 @@
+{
+version = "1.14.0";
+linux_py_27_cpu = {
+ url = "https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.14.0-cp27-none-linux_x86_64.whl";
+ sha256 = "0yywdrfk97dh1bxhibspg0raz70fx9lcczj6xlimqy4xb60clx7k";
+};
+linux_py_35_cpu = {
+ url = "https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.14.0-cp35-cp35m-linux_x86_64.whl";
+ sha256 = "1xvyb6xcrjhlwvrmrhn5vs9xy7g98smqmpv4i3hhpry4qyasphhj";
+};
+linux_py_36_cpu = {
+ url = "https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.14.0-cp36-cp36m-linux_x86_64.whl";
+ sha256 = "1psd9vyxz9f39dwj77nvrg373sxv3p5vdp9fnz81dpsm0b0mwl44";
+};
+linux_py_37_cpu = {
+ url = "https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.14.0-cp37-cp37m-linux_x86_64.whl";
+ sha256 = "0bg2sb1n2ag27r7ww695kg5hb0mjrw4kc5893krmixx2j71860c5";
+};
+linux_py_27_gpu = {
+ url = "https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.14.0-cp27-none-linux_x86_64.whl";
+ sha256 = "0y1x91gayg6pjddgl8ndcm63wfzhyv4s5khgl7ffzsgni1ivaqw5";
+};
+linux_py_35_gpu = {
+ url = "https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.14.0-cp35-cp35m-linux_x86_64.whl";
+ sha256 = "03piggpbz1jx8m2b95spq3jrdff4w6xx63ji07am7hyw2nsgx3mx";
+};
+linux_py_36_gpu = {
+ url = "https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.14.0-cp36-cp36m-linux_x86_64.whl";
+ sha256 = "0ypkp8cfhharsyyikb1qgf44cfm6284km9xswzvzymjzz75vg3gd";
+};
+linux_py_37_gpu = {
+ url = "https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.14.0-cp37-cp37m-linux_x86_64.whl";
+ sha256 = "0virp8nn2ysx4855hq29kas6fm6b3dsiybwzdxy9nnb9n2d8qlm2";
+};
+mac_py_2_cpu = {
+ url = "https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.14.0-py2-none-any.whl";
+ sha256 = "14f86k3pgq7z6i4s4im55zpp38f0drnm7xlclavsgcc0nxnj3z26";
+};
+mac_py_3_cpu = {
+ url = "https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.14.0-py3-none-any.whl";
+ sha256 = "0f3swpcjfgqhj6h5wnx8snc0xjkx4hnkqx83fmlrwpncs8c131d3";
+};
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tensorflow/default.nix b/nixpkgs/pkgs/development/python-modules/tensorflow/default.nix
new file mode 100644
index 00000000000..7f6952e8fe5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tensorflow/default.nix
@@ -0,0 +1,357 @@
+{ stdenv, pkgs, buildBazelPackage, lib, fetchFromGitHub, fetchpatch, symlinkJoin
+# Python deps
+, buildPythonPackage, isPy3k, pythonOlder, pythonAtLeast, python
+# Python libraries
+, numpy, tensorflow-tensorboard, backports_weakref, mock, enum34, absl-py
+, future, setuptools, wheel, keras-preprocessing, keras-applications, google-pasta
+, termcolor, grpcio, six, wrapt, protobuf, tensorflow-estimator
+# Common deps
+, git, swig, which, binutils, glibcLocales, cython
+# Common libraries
+, jemalloc, openmpi, astor, gast, grpc, sqlite, openssl, jsoncpp, re2
+, curl, snappy, flatbuffers, icu, double-conversion, libpng, libjpeg, giflib
+, cudaSupport ? false, nvidia_x11 ? null, cudatoolkit ? null, cudnn ? null, nccl ? null
+# XLA without CUDA is broken
+, xlaSupport ? cudaSupport
+# Default from ./configure script
+, cudaCapabilities ? [ "3.5" "5.2" ]
+, sse42Support ? builtins.elem (stdenv.hostPlatform.platform.gcc.arch or "default") ["westmere" "sandybridge" "ivybridge" "haswell" "broadwell" "skylake" "skylake-avx512"]
+, avx2Support ? builtins.elem (stdenv.hostPlatform.platform.gcc.arch or "default") [ "haswell" "broadwell" "skylake" "skylake-avx512"]
+, fmaSupport ? builtins.elem (stdenv.hostPlatform.platform.gcc.arch or "default") [ "haswell" "broadwell" "skylake" "skylake-avx512"]
+}:
+
+assert cudaSupport -> nvidia_x11 != null
+ && cudatoolkit != null
+ && cudnn != null;
+
+# unsupported combination
+assert ! (stdenv.isDarwin && cudaSupport);
+
+let
+ withTensorboard = pythonOlder "3.6";
+
+ cudatoolkit_joined = symlinkJoin {
+ name = "${cudatoolkit.name}-merged";
+ paths = [ cudatoolkit.out cudatoolkit.lib ];
+ };
+
+ cudatoolkit_cc_joined = symlinkJoin {
+ name = "${cudatoolkit.cc.name}-merged";
+ paths = [
+ cudatoolkit.cc
+ binutils.bintools # for ar, dwp, nm, objcopy, objdump, strip
+ ];
+ };
+
+ # Needed for _some_ system libraries, grep INCLUDEDIR.
+ includes_joined = symlinkJoin {
+ name = "tensorflow-deps-merged";
+ paths = [
+ pkgs.protobuf
+ jsoncpp
+ ];
+ };
+
+ tfFeature = x: if x then "1" else "0";
+
+ version = "1.14.0";
+ variant = if cudaSupport then "-gpu" else "";
+ pname = "tensorflow${variant}";
+
+ pythonEnv = python.withPackages (_:
+ [ # python deps needed during wheel build time
+ numpy
+ keras-preprocessing
+ protobuf
+ wrapt
+ gast
+ astor
+ absl-py
+ termcolor
+ keras-applications
+ setuptools
+ wheel
+ ] ++ lib.optionals (!isPy3k)
+ [ future
+ mock
+ ]);
+
+ bazel-build = buildBazelPackage {
+ name = "${pname}-${version}";
+
+ src = fetchFromGitHub {
+ owner = "tensorflow";
+ repo = "tensorflow";
+ rev = "v${version}";
+ sha256 = "06jvwlsm14b8rqwd8q8796r0vmn0wk64s4ps2zg0sapkmp9vvcmi";
+ };
+
+ patches = [
+ # Work around https://github.com/tensorflow/tensorflow/issues/24752
+ ./no-saved-proto.patch
+ # Fixes for NixOS jsoncpp
+ ./system-jsoncpp.patch
+
+ # https://github.com/tensorflow/tensorflow/pull/29673
+ (fetchpatch {
+ name = "fix-compile-with-cuda-and-mpi.patch";
+ url = "https://github.com/tensorflow/tensorflow/pull/29673/commits/498e35a3bfe38dd75cf1416a1a23c07c3b59e6af.patch";
+ sha256 = "1m2qmwv1ysqa61z6255xggwbq6mnxbig749bdvrhnch4zydxb4di";
+ })
+
+ # https://github.com/tensorflow/tensorflow/issues/29220
+ (fetchpatch {
+ name = "bazel-0.27.patch";
+ url = "https://github.com/tensorflow/tensorflow/commit/cfccbdb8c4a92dd26382419dceb4d934c2380391.patch";
+ sha256 = "1l56wjia2c4685flsfkkgy471wx3c66wyv8khspv06zchj0k0liw";
+ })
+ ];
+
+ # On update, it can be useful to steal the changes from gentoo
+ # https://gitweb.gentoo.org/repo/gentoo.git/tree/sci-libs/tensorflow
+
+ nativeBuildInputs = [
+ swig which pythonEnv
+ ];
+
+ buildInputs = [
+ jemalloc
+ openmpi
+ glibcLocales
+ git
+
+ # libs taken from system through the TF_SYS_LIBS mechanism
+ # grpc
+ sqlite
+ openssl
+ jsoncpp
+ pkgs.protobuf
+ curl
+ snappy
+ flatbuffers
+ icu
+ double-conversion
+ libpng
+ libjpeg
+ giflib
+ re2
+ pkgs.lmdb
+ ] ++ lib.optionals cudaSupport [
+ cudatoolkit
+ cudnn
+ nvidia_x11
+ ];
+
+ # arbitrarily set to the current latest bazel version, overly careful
+ TF_IGNORE_MAX_BAZEL_VERSION = true;
+
+ # Take as many libraries from the system as possible. Keep in sync with
+ # list of valid syslibs in
+ # https://github.com/tensorflow/tensorflow/blob/master/third_party/systemlibs/syslibs_configure.bzl
+ TF_SYSTEM_LIBS = lib.concatStringsSep "," [
+ "absl_py"
+ "astor_archive"
+ "boringssl"
+ # Not packaged in nixpkgs
+ # "com_github_googleapis_googleapis"
+ # "com_github_googlecloudplatform_google_cloud_cpp"
+ "com_google_protobuf"
+ "com_google_protobuf_cc"
+ "com_googlesource_code_re2"
+ "curl"
+ "cython"
+ "double_conversion"
+ "flatbuffers"
+ "gast_archive"
+ "gif_archive"
+ # Lots of errors, requires an older version
+ # "grpc"
+ "hwloc"
+ "icu"
+ "jpeg"
+ "jsoncpp_git"
+ "keras_applications_archive"
+ "lmdb"
+ "nasm"
+ # "nsync" # not packaged in nixpkgs
+ "org_sqlite"
+ "pasta"
+ "pcre"
+ "png_archive"
+ "protobuf_archive"
+ "six_archive"
+ "snappy"
+ "swig"
+ "termcolor_archive"
+ "wrapt"
+ "zlib_archive"
+ ];
+
+ INCLUDEDIR = "${includes_joined}/include";
+
+ PYTHON_BIN_PATH = pythonEnv.interpreter;
+
+ TF_NEED_GCP = true;
+ TF_NEED_HDFS = true;
+ TF_ENABLE_XLA = tfFeature xlaSupport;
+
+ CC_OPT_FLAGS = " ";
+
+ # https://github.com/tensorflow/tensorflow/issues/14454
+ TF_NEED_MPI = tfFeature cudaSupport;
+
+ TF_NEED_CUDA = tfFeature cudaSupport;
+ TF_CUDA_PATHS = lib.optionalString cudaSupport "${cudatoolkit_joined},${cudnn},${nccl}";
+ GCC_HOST_COMPILER_PREFIX = lib.optionalString cudaSupport "${cudatoolkit_cc_joined}/bin";
+ TF_CUDA_COMPUTE_CAPABILITIES = lib.concatStringsSep "," cudaCapabilities;
+
+ postPatch = ''
+ # https://github.com/tensorflow/tensorflow/issues/20919
+ sed -i '/androidndk/d' tensorflow/lite/kernels/internal/BUILD
+
+ # Tensorboard pulls in a bunch of dependencies, some of which may
+ # include security vulnerabilities. So we make it optional.
+ # https://github.com/tensorflow/tensorflow/issues/20280#issuecomment-400230560
+ sed -i '/tensorboard >=/d' tensorflow/tools/pip_package/setup.py
+ '';
+
+ preConfigure = let
+ opt_flags = []
+ ++ lib.optionals sse42Support ["-msse4.2"]
+ ++ lib.optionals avx2Support ["-mavx2"]
+ ++ lib.optionals fmaSupport ["-mfma"];
+ in ''
+ patchShebangs configure
+
+ # dummy ldconfig
+ mkdir dummy-ldconfig
+ echo "#!${stdenv.shell}" > dummy-ldconfig/ldconfig
+ chmod +x dummy-ldconfig/ldconfig
+ export PATH="$PWD/dummy-ldconfig:$PATH"
+
+ export PYTHON_LIB_PATH="$NIX_BUILD_TOP/site-packages"
+ export CC_OPT_FLAGS="${lib.concatStringsSep " " opt_flags}"
+ mkdir -p "$PYTHON_LIB_PATH"
+
+ # To avoid mixing Python 2 and Python 3
+ unset PYTHONPATH
+ '';
+
+ configurePhase = ''
+ runHook preConfigure
+ ./configure
+ runHook postConfigure
+ '';
+
+ # FIXME: Tensorflow uses dlopen() for CUDA libraries.
+ NIX_LDFLAGS = lib.optionals cudaSupport [ "-lcudart" "-lcublas" "-lcufft" "-lcurand" "-lcusolver" "-lcusparse" "-lcudnn" ];
+
+ hardeningDisable = [ "format" ];
+
+ bazelFlags = [
+ # temporary fixes to make the build work with bazel 0.27
+ "--incompatible_no_support_tools_in_action_inputs=false"
+ ];
+ bazelBuildFlags = [
+ "--config=opt" # optimize using the flags set in the configure phase
+ ];
+
+ bazelTarget = "//tensorflow/tools/pip_package:build_pip_package //tensorflow/tools/lib_package:libtensorflow";
+
+ fetchAttrs = {
+ # So that checksums don't depend on these.
+ TF_SYSTEM_LIBS = null;
+
+ # cudaSupport causes fetch of ncclArchive, resulting in different hashes
+ sha256 = if cudaSupport then
+ "196pm3ynfafqlcxah07hkvphf536hpix1ydgsynr1yg08aynlvvx"
+ else
+ "138r85n27ijzwxfwb5pcfyb79v14368jpckw0vmciz6pwf11bd9g";
+ };
+
+ buildAttrs = {
+ outputs = [ "out" "python" ];
+
+ preBuild = ''
+ patchShebangs .
+ '';
+
+ installPhase = ''
+ mkdir -p "$out"
+ tar -xf bazel-bin/tensorflow/tools/lib_package/libtensorflow.tar.gz -C "$out"
+ # Write pkgconfig file.
+ mkdir "$out/lib/pkgconfig"
+ cat > "$out/lib/pkgconfig/tensorflow.pc" << EOF
+ Name: TensorFlow
+ Version: ${version}
+ Description: Library for computation using data flow graphs for scalable machine learning
+ Requires:
+ Libs: -L$out/lib -ltensorflow
+ Cflags: -I$out/include/tensorflow
+ EOF
+
+ # build the source code, then copy it to $python (build_pip_package
+ # actually builds a symlink farm so we must dereference them).
+ bazel-bin/tensorflow/tools/pip_package/build_pip_package --src "$PWD/dist"
+ cp -Lr "$PWD/dist" "$python"
+ '';
+ };
+ };
+
+in buildPythonPackage {
+ inherit version pname;
+
+ src = bazel-build.python;
+
+ # Upstream has a pip hack that results in bin/tensorboard being in both tensorflow
+ # and the propagated input tensorflow-tensorboard, which causes environment collisions.
+ # Another possibility would be to have tensorboard only in the buildInputs
+ # https://github.com/tensorflow/tensorflow/blob/v1.7.1/tensorflow/tools/pip_package/setup.py#L79
+ postInstall = ''
+ rm $out/bin/tensorboard
+ '';
+
+ setupPyGlobalFlags = [ "--project_name ${pname}" ];
+
+ # tensorflow/tools/pip_package/setup.py
+ propagatedBuildInputs = [
+ absl-py
+ astor
+ gast
+ google-pasta
+ keras-applications
+ keras-preprocessing
+ numpy
+ six
+ protobuf
+ tensorflow-estimator
+ termcolor
+ wrapt
+ grpcio
+ ] ++ lib.optionals (!isPy3k) [
+ mock
+ future # FIXME
+ ] ++ lib.optionals (pythonOlder "3.4") [
+ backports_weakref enum34
+ ] ++ lib.optionals withTensorboard [
+ tensorflow-tensorboard
+ ];
+
+ # Actual tests are slow and impure.
+ # TODO try to run them anyway
+ # TODO better test (files in tensorflow/tools/ci_build/builds/*test)
+ checkPhase = ''
+ ${python.interpreter} -c "import tensorflow"
+ '';
+
+ passthru.libtensorflow = bazel-build.out;
+
+ meta = with stdenv.lib; {
+ description = "Computation using data flow graphs for scalable machine learning";
+ homepage = http://tensorflow.org;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ jyp abbradar ];
+ platforms = platforms.linux;
+ broken = !(xlaSupport -> cudaSupport);
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tensorflow/no-saved-proto.patch b/nixpkgs/pkgs/development/python-modules/tensorflow/no-saved-proto.patch
new file mode 100644
index 00000000000..ead112f8ddd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tensorflow/no-saved-proto.patch
@@ -0,0 +1,14 @@
+diff --git a/tensorflow/cc/saved_model/BUILD b/tensorflow/cc/saved_model/BUILD
+index 8626ed0087..27deb34387 100644
+--- a/tensorflow/cc/saved_model/BUILD
++++ b/tensorflow/cc/saved_model/BUILD
+@@ -49,9 +49,6 @@ cc_library(
+ # tf_lib depending on the build platform.
+ "//tensorflow/core:lib",
+ "//tensorflow/core:protos_all_cc",
+- ]) + if_mobile([
+- # Mobile-friendly SavedModel proto. See go/portable-proto for more info.
+- "//tensorflow/core:saved_model_portable_proto",
+ ]) + if_android([
+ "//tensorflow/core:android_tensorflow_lib",
+ ]) + if_ios([
diff --git a/nixpkgs/pkgs/development/python-modules/tensorflow/prefetcher.sh b/nixpkgs/pkgs/development/python-modules/tensorflow/prefetcher.sh
new file mode 100755
index 00000000000..d590fb0f173
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tensorflow/prefetcher.sh
@@ -0,0 +1,33 @@
+#!/usr/bin/env bash
+
+version=1.14.0
+hashfile=binary-hashes.nix
+rm -f $hashfile
+echo "{" >> $hashfile
+echo "version = \"$version\";" >> $hashfile
+for sys in "linux" "mac"; do
+ for tfpref in "cpu/tensorflow" "gpu/tensorflow_gpu"; do
+ for pykind in "py2-none-any" "py3-none-any" "cp27-none-linux_x86_64" "cp35-cp35m-linux_x86_64" "cp36-cp36m-linux_x86_64" "cp37-cp37m-linux_x86_64"; do
+ if [ $sys == "mac" ]; then
+ [[ $pykind =~ py.* ]] && [[ $tfpref =~ cpu.* ]]
+ result=$?
+ pyver=${pykind:2:1}
+ flavour=cpu
+ else
+ [[ $pykind =~ .*linux.* ]]
+ result=$?
+ pyver=${pykind:2:2}
+ flavour=${tfpref:0:3}
+ fi
+ if [ $result == 0 ]; then
+ url=https://storage.googleapis.com/tensorflow/$sys/$tfpref-$version-$pykind.whl
+ hash=$(nix-prefetch-url $url)
+ echo "${sys}_py_${pyver}_${flavour} = {" >> $hashfile
+ echo " url = \"$url\";" >> $hashfile
+ echo " sha256 = \"$hash\";" >> $hashfile
+ echo "};" >> $hashfile
+ fi
+ done
+ done
+done
+echo "}" >> $hashfile
diff --git a/nixpkgs/pkgs/development/python-modules/tensorflow/system-jsoncpp.patch b/nixpkgs/pkgs/development/python-modules/tensorflow/system-jsoncpp.patch
new file mode 100644
index 00000000000..ecb2d04d7ee
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tensorflow/system-jsoncpp.patch
@@ -0,0 +1,21 @@
+diff --git a/third_party/systemlibs/jsoncpp.BUILD b/third_party/systemlibs/jsoncpp.BUILD
+index 526fd0c418..646f3fdcea 100644
+--- a/third_party/systemlibs/jsoncpp.BUILD
++++ b/third_party/systemlibs/jsoncpp.BUILD
+@@ -7,6 +7,7 @@ filegroup(
+
+ HEADERS = [
+ "include/json/autolink.h",
++ "include/json/allocator.h",
+ "include/json/config.h",
+ "include/json/features.h",
+ "include/json/forwards.h",
+@@ -23,7 +24,7 @@ genrule(
+ cmd = """
+ for i in $(OUTS); do
+ i=$${i##*/}
+- ln -sf $(INCLUDEDIR)/jsoncpp/json/$$i $(@D)/include/json/$$i
++ ln -sf $(INCLUDEDIR)/json/$$i $(@D)/include/json/$$i
+ done
+ """,
+ )
diff --git a/nixpkgs/pkgs/development/python-modules/termcolor/default.nix b/nixpkgs/pkgs/development/python-modules/termcolor/default.nix
new file mode 100644
index 00000000000..2931f0e5199
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/termcolor/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "termcolor";
+ version = "1.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1d6d69ce66211143803fbc56652b41d73b4a400a2891d7bf7a1cdf4c02de613b";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Termcolor";
+ homepage = https://pypi.python.org/pypi/termcolor;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/terminado/default.nix b/nixpkgs/pkgs/development/python-modules/terminado/default.nix
new file mode 100644
index 00000000000..dbcc5935e5e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/terminado/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, ptyprocess
+, tornado
+}:
+
+buildPythonPackage rec {
+ pname = "terminado";
+ version = "0.8.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "de08e141f83c3a0798b050ecb097ab6259c3f0331b2f7b7750c9075ced2c20c2";
+ };
+
+ propagatedBuildInputs = [ ptyprocess tornado ];
+
+ # test_max_terminals fails
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Terminals served by Tornado websockets";
+ homepage = https://github.com/jupyter/terminado;
+ license = licenses.bsd2;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/terminaltables/default.nix b/nixpkgs/pkgs/development/python-modules/terminaltables/default.nix
new file mode 100644
index 00000000000..bb6961f77ec
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/terminaltables/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "terminaltables";
+ version = "3.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f3eb0eb92e3833972ac36796293ca0906e998dc3be91fbe1f8615b331b853b81";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Display simple tables in terminals";
+ homepage = "https://github.com/Robpol86/terminaltables";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/termstyle/default.nix b/nixpkgs/pkgs/development/python-modules/termstyle/default.nix
new file mode 100644
index 00000000000..0a1c4e76412
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/termstyle/default.nix
@@ -0,0 +1,20 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "termstyle";
+ version = "0.1.11";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ef74b83698ea014112040cf32b1a093c1ab3d91c4dd18ecc03ec178fd99c9f9f";
+ };
+
+ # Only manual tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Console colouring for python";
+ homepage = "https://pypi.python.org/pypi/python-termstyle/0.1.10";
+ license = licenses.bsdOriginal;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tess/default.nix b/nixpkgs/pkgs/development/python-modules/tess/default.nix
new file mode 100644
index 00000000000..c168492be72
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tess/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, cython
+, numpy
+, scipy
+}:
+
+buildPythonPackage {
+ pname = "tess";
+ version = "unstable-2019-05-07";
+
+ src = fetchFromGitHub {
+ owner = "wackywendell";
+ repo = "tess";
+ rev = "22c19df952732f9749637d1bf6d7b676b6c7b26c";
+ sha256 = "0pj18nrfx749fjc6bjdk5r3g1104c6jy6xg7jrpmssllhypbb1m4";
+ };
+
+ buildInputs = [ cython ];
+
+ propagatedBuildInputs = [ numpy scipy ];
+
+ meta = with lib; {
+ description = "A module for calculating and analyzing Voronoi tessellations";
+ homepage = https://tess.readthedocs.org;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/testfixtures/default.nix b/nixpkgs/pkgs/development/python-modules/testfixtures/default.nix
new file mode 100644
index 00000000000..f9d35297306
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/testfixtures/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, buildPythonPackage, fetchPypi, fetchpatch
+, mock, pytest, sybil, zope_component }:
+
+buildPythonPackage rec {
+ pname = "testfixtures";
+ version = "6.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1x16xkw483nb1ngv74s7lgaj514pb1ldklal7kb7iwqbxcgnrh2k";
+ };
+
+ checkInputs = [ pytest mock sybil zope_component ];
+
+ patches = [
+ # Fix tests for Python 3.7. Remove with the next release
+ (fetchpatch {
+ url = https://github.com/Simplistix/testfixtures/commit/6e8807543b804946aba58e2c9e92f5bdc3656a57.patch;
+ sha256 = "1584jz2qz04arx8z8f6d1l1vab7gi38k3akzm223rmp7j4m7yrii";
+ })
+ ];
+
+ checkPhase = ''
+ # django is too much hasle to setup at the moment
+ pytest -W ignore::DeprecationWarning --ignore=testfixtures/tests/test_django testfixtures/tests
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/Simplistix/testfixtures;
+ description = "A collection of helpers and mock objects for unit tests and doc tests";
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/testpath/default.nix b/nixpkgs/pkgs/development/python-modules/testpath/default.nix
new file mode 100644
index 00000000000..8bdd50f52d2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/testpath/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "testpath";
+ version = "0.4.2";
+ format = "wheel";
+
+ src = fetchPypi {
+ inherit pname version format;
+ sha256 = "46c89ebb683f473ffe2aab0ed9f12581d4d078308a3cb3765d79c6b2317b0109";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Test utilities for code working with files and commands";
+ license = licenses.mit;
+ homepage = https://github.com/jupyter/testpath;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/testrepository/default.nix b/nixpkgs/pkgs/development/python-modules/testrepository/default.nix
new file mode 100644
index 00000000000..188c320e761
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/testrepository/default.nix
@@ -0,0 +1,35 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, testtools
+, testresources
+, pbr
+, subunit
+, fixtures
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "testrepository";
+ version = "0.0.20";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1ssqb07c277010i6gzzkbdd46gd9mrj0bi0i8vn560n2k2y4j93m";
+ };
+
+ checkInputs = [ testresources ];
+ buildInputs = [ pbr ];
+ propagatedBuildInputs = [ fixtures subunit testtools ];
+
+ checkPhase = ''
+ ${python.interpreter} ./testr
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A database of test results which can be used as part of developer workflow";
+ homepage = https://pypi.python.org/pypi/testrepository;
+ license = licenses.bsd2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/testresources/default.nix b/nixpkgs/pkgs/development/python-modules/testresources/default.nix
new file mode 100644
index 00000000000..fa4fc0b1fed
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/testresources/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildPythonPackage, fetchPypi, python
+, pbr, fixtures, testtools }:
+
+buildPythonPackage rec {
+ pname = "testresources";
+ version = "2.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ee9d1982154a1e212d4e4bac6b610800bfb558e4fb853572a827bc14a96e4417";
+ };
+
+ buildInputs = [ pbr ];
+
+ checkInputs = [ fixtures testtools ];
+
+ checkPhase = ''
+ ${python.interpreter} -m testtools.run discover
+ '';
+
+ meta = with lib; {
+ description = "Pyunit extension for managing expensive test resources";
+ homepage = https://launchpad.net/testresources;
+ license = licenses.bsd2;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/testscenarios/default.nix b/nixpkgs/pkgs/development/python-modules/testscenarios/default.nix
new file mode 100644
index 00000000000..6fddc17af32
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/testscenarios/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, testtools
+}:
+
+buildPythonPackage rec {
+ pname = "testscenarios";
+ version = "0.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c257cb6b90ea7e6f8fef3158121d430543412c9a87df30b5dde6ec8b9b57a2b6";
+ };
+
+ postPatch = ''
+ substituteInPlace setup.cfg \
+ --replace "buffer = 1" "" \
+ --replace "catch = 1" ""
+ '';
+
+ propagatedBuildInputs = [ testtools ];
+
+ meta = with stdenv.lib; {
+ description = "A pyunit extension for dependency injection";
+ homepage = https://pypi.python.org/pypi/testscenarios;
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/testtools/default.nix b/nixpkgs/pkgs/development/python-modules/testtools/default.nix
new file mode 100644
index 00000000000..1a99378a541
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/testtools/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pbr
+, python_mimeparse
+, extras
+, unittest2
+, traceback2
+, testscenarios
+}:
+
+buildPythonPackage rec {
+ pname = "testtools";
+ version = "2.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5827ec6cf8233e0f29f51025addd713ca010061204fdea77484a2934690a0559";
+ };
+
+ propagatedBuildInputs = [ pbr python_mimeparse extras unittest2 ];
+ buildInputs = [ traceback2 ];
+
+ # testscenarios has a circular dependency on testtools
+ doCheck = false;
+ checkInputs = [ testscenarios ];
+
+ # testtools 2.0.0 and up has a circular run-time dependency on futures
+ postPatch = ''
+ substituteInPlace requirements.txt --replace "fixtures>=1.3.0" ""
+ '';
+
+ meta = {
+ description = "A set of extensions to the Python standard library's unit testing framework";
+ homepage = https://pypi.python.org/pypi/testtools;
+ license = lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/text-unidecode/default.nix b/nixpkgs/pkgs/development/python-modules/text-unidecode/default.nix
new file mode 100644
index 00000000000..94aebc59512
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/text-unidecode/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildPythonPackage, fetchPypi, pytest }:
+
+buildPythonPackage rec {
+ pname = "text-unidecode";
+ version = "1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5a1375bb2ba7968740508ae38d92e1f889a0832913cb1c447d5e2046061a396d";
+ };
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with lib; {
+ description = "The most basic Text::Unidecode port";
+ homepage = https://github.com/kmike/text-unidecode;
+ license = licenses.artistic1;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/textacy/default.nix b/nixpkgs/pkgs/development/python-modules/textacy/default.nix
new file mode 100644
index 00000000000..454cff5e4a8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/textacy/default.nix
@@ -0,0 +1,59 @@
+{ lib, buildPythonPackage, fetchPypi, isPy27
+, cachetools
+, cytoolz
+, jellyfish
+, matplotlib
+, networkx
+, numpy
+, pyemd
+, pyphen
+, pytest
+, requests
+, scikitlearn
+, scipy
+, spacy
+, srsly
+}:
+
+buildPythonPackage rec {
+ pname = "textacy";
+ version = "0.9.1";
+ disabled = isPy27;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1jhj02g6kh5vc0z4az7n547siav3gj5571bqpzdryskj6bsma2z1";
+ };
+
+ propagatedBuildInputs = [
+ cachetools
+ cytoolz
+ jellyfish
+ matplotlib
+ networkx
+ numpy
+ pyemd
+ pyphen
+ requests
+ scikitlearn
+ scipy
+ spacy
+ srsly
+ ];
+
+ checkInputs = [ pytest ];
+ # almost all tests have to deal with downloading a dataset, only test pure tests
+ checkPhase = ''
+ pytest tests/test_text_utils.py \
+ tests/test_utils.py \
+ tests/preprocessing \
+ tests/datasets/test_base_dataset.py
+ '';
+
+ meta = with lib; {
+ description = "Higher-level text processing, built on spaCy";
+ homepage = "http://textacy.readthedocs.io/";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ rvl ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/texttable/default.nix b/nixpkgs/pkgs/development/python-modules/texttable/default.nix
new file mode 100644
index 00000000000..a8c20a0eeac
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/texttable/default.nix
@@ -0,0 +1,20 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "texttable";
+ version = "1.6.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1x5l77akfc20x52jma9573qp8l8r07q103pm4l0pbizvh4vp1wzg";
+ };
+
+ meta = with lib; {
+ description = "A module to generate a formatted text table, using ASCII characters";
+ homepage = "https://github.com/foutaise/texttable";
+ license = licenses.lgpl2;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tflearn/default.nix b/nixpkgs/pkgs/development/python-modules/tflearn/default.nix
new file mode 100644
index 00000000000..03185ae4d9f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tflearn/default.nix
@@ -0,0 +1,24 @@
+{ lib, fetchPypi, buildPythonPackage, pytest, scipy, h5py
+, pillow, tensorflow }:
+
+buildPythonPackage rec {
+ pname = "tflearn";
+ version = "0.3.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "034lvbslcivyj64r4w6xmr90ckmyxmrnkka9kal50x4175h02n1z";
+ };
+
+ buildInputs = [ pytest ];
+
+ propagatedBuildInputs = [ scipy h5py pillow tensorflow ];
+
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Deep learning library featuring a higher-level API for TensorFlow";
+ homepage = "https://github.com/tflearn/tflearn";
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/thespian/default.nix b/nixpkgs/pkgs/development/python-modules/thespian/default.nix
new file mode 100644
index 00000000000..1c59b0cae6b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/thespian/default.nix
@@ -0,0 +1,25 @@
+{ fetchPypi, buildPythonPackage, lib }:
+
+buildPythonPackage rec {
+ version = "3.9.11";
+ pname = "thespian";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "84887f0437ec144f7266ae22678bc5dc5d2a9e60a89f1f7c1707cbea5e03022a";
+ };
+
+ # Do not run the test suite: it takes a long time and uses
+ # significant system resources, including requiring localhost
+ # network operations. Thespian tests are performed via its Travis
+ # CI configuration and do not need to be duplicated here.
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Python Actor concurrency library";
+ homepage = http://thespianpy.com/;
+ license = licenses.mit;
+ maintainers = [ maintainers.kquick ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/thinc/default.nix b/nixpkgs/pkgs/development/python-modules/thinc/default.nix
new file mode 100644
index 00000000000..ac8ab3fd864
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/thinc/default.nix
@@ -0,0 +1,86 @@
+{ stdenv
+, lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, pytest
+, cython
+, cymem
+, darwin
+, msgpack-numpy
+, msgpack-python
+, preshed
+, numpy
+, murmurhash
+, pathlib
+, hypothesis
+, tqdm
+, cytoolz
+, plac
+, six
+, mock
+, wrapt
+, dill
+, blis
+, srsly
+, wasabi
+}:
+
+buildPythonPackage rec {
+ pname = "thinc";
+ version = "7.0.8";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "191admjvhqsbxpqn73q42i0i8kvlblj0k6p0z9p7n3pcxzl75nsw";
+ };
+
+ buildInputs = lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [
+ Accelerate CoreFoundation CoreGraphics CoreVideo
+ ]);
+
+ propagatedBuildInputs = [
+ blis
+ cython
+ cymem
+ msgpack-numpy
+ msgpack-python
+ preshed
+ numpy
+ murmurhash
+ tqdm
+ cytoolz
+ plac
+ six
+ srsly
+ wrapt
+ dill
+ wasabi
+ ] ++ lib.optional (pythonOlder "3.4") pathlib;
+
+
+ checkInputs = [
+ hypothesis
+ mock
+ pytest
+ ];
+
+ prePatch = ''
+ substituteInPlace setup.py \
+ --replace "plac>=0.9.6,<1.0.0" "plac>=0.9.6"
+ '';
+
+ # Cannot find cython modules.
+ doCheck = false;
+
+ checkPhase = ''
+ pytest thinc/tests
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Practical Machine Learning for NLP in Python";
+ homepage = https://github.com/explosion/thinc;
+ license = licenses.mit;
+ maintainers = with maintainers; [ aborsu danieldk sdll ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/threadpool/default.nix b/nixpkgs/pkgs/development/python-modules/threadpool/default.nix
new file mode 100644
index 00000000000..b3d7f58c66d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/threadpool/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "threadpool";
+ version = "1.3.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "197gzrxn9lbk0q1v079814c6s05cr4rwzyl6c1m6inkyif4yzr6c";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = http://chrisarndt.de/projects/threadpool/;
+ description = "Easy to use object-oriented thread pool framework";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/thrift/default.nix b/nixpkgs/pkgs/development/python-modules/thrift/default.nix
new file mode 100644
index 00000000000..d5a83832cb2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/thrift/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "thrift";
+ version = "0.11.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "7d59ac4fdcb2c58037ebd4a9da5f9a49e3e034bf75b3f26d9fe48ba3d8806e6b";
+ };
+
+ propagatedBuildInputs = [ six ];
+
+ # No tests. Breaks when not disabling.
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Python bindings for the Apache Thrift RPC system";
+ homepage = http://thrift.apache.org/;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ hbunke ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/thumbor/0001-Don-t-use-which-implementation-to-find-required-exec.patch b/nixpkgs/pkgs/development/python-modules/thumbor/0001-Don-t-use-which-implementation-to-find-required-exec.patch
new file mode 100644
index 00000000000..4a2d9df0618
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/thumbor/0001-Don-t-use-which-implementation-to-find-required-exec.patch
@@ -0,0 +1,277 @@
+From bd5a5b58b438ff34d27781e28cd7fab93bfc9f3f Mon Sep 17 00:00:00 2001
+From: Maximilian Bosch <maximilian@mbosch.me>
+Date: Sat, 9 Mar 2019 23:26:30 +0100
+Subject: [PATCH] Don't use `which` implementation to find required executables
+
+Nix specific patch.
+
+Rather than relying on a global state, we set an absolute store path for
+all external dependencies to ensure their functionality.
+---
+ integration_tests/__init__.py | 4 ++--
+ tests/engines/test_gif.py | 2 +-
+ tests/handlers/test_base_handler.py | 30 ++++++++++++++---------------
+ tests/optimizers/test_gifv.py | 2 +-
+ tests/test_server.py | 4 ++++
+ tests/test_utils.py | 3 +++
+ thumbor/server.py | 7 +------
+ 7 files changed, 26 insertions(+), 26 deletions(-)
+
+diff --git a/integration_tests/__init__.py b/integration_tests/__init__.py
+index 9bdd0a3..7d9de8f 100644
+--- a/integration_tests/__init__.py
++++ b/integration_tests/__init__.py
+@@ -15,7 +15,7 @@ class EngineCase(AsyncHTTPTestCase):
+ def get_app(self):
+ cfg = Config(SECURITY_KEY='ACME-SEC')
+ server_params = ServerParameters(None, None, None, None, None, None)
+- server_params.gifsicle_path = which('gifsicle')
++ server_params.gifsicle_path = '@gifsicle@'
+
+ cfg.DETECTORS = [
+ 'thumbor.detectors.face_detector',
+@@ -28,7 +28,7 @@ class EngineCase(AsyncHTTPTestCase):
+ cfg.FILE_LOADER_ROOT_PATH = os.path.join(os.path.dirname(__file__), 'imgs')
+ cfg.ENGINE = getattr(self, 'engine', None)
+ cfg.USE_GIFSICLE_ENGINE = True
+- cfg.FFMPEG_PATH = which('ffmpeg')
++ cfg.FFMPEG_PATH = '@ffmpeg@'
+ cfg.ENGINE_THREADPOOL_SIZE = 10
+ cfg.OPTIMIZERS = [
+ 'thumbor.optimizers.gifv',
+diff --git a/tests/engines/test_gif.py b/tests/engines/test_gif.py
+index c0c8430..ce0cc51 100644
+--- a/tests/engines/test_gif.py
++++ b/tests/engines/test_gif.py
+@@ -44,7 +44,7 @@ class GitEngineTestCase(TestCase):
+ def get_server(self):
+ server = ServerParameters(8889, 'localhost', 'thumbor.conf', None, 'info', None)
+ server.security_key = 'ACME-SEC'
+- server.gifsicle_path = which('gifsicle')
++ server.gifsicle_path = '@gifsicle@'
+ return server
+
+ def get_context(self, *args, **kwargs):
+diff --git a/tests/handlers/test_base_handler.py b/tests/handlers/test_base_handler.py
+index 69dc110..4493abe 100644
+--- a/tests/handlers/test_base_handler.py
++++ b/tests/handlers/test_base_handler.py
+@@ -557,7 +557,7 @@ class ImageOperationsWithAutoWebPTestCase(BaseImagingTestCase):
+ server = ServerParameters(8889, 'localhost', 'thumbor.conf', None, 'info', None)
+ server.security_key = 'ACME-SEC'
+ ctx = Context(server, cfg, importer)
+- ctx.server.gifsicle_path = which('gifsicle')
++ ctx.server.gifsicle_path = '@gifsicle@'
+ return ctx
+
+ def get_as_webp(self, url):
+@@ -657,7 +657,7 @@ class ImageOperationsWithAutoWebPWithResultStorageTestCase(BaseImagingTestCase):
+ server.security_key = 'ACME-SEC'
+ ctx = Context(server, cfg, importer)
+ ctx.request = self.get_request()
+- ctx.server.gifsicle_path = which('gifsicle')
++ ctx.server.gifsicle_path = '@gifsicle@'
+ return ctx
+
+ @property
+@@ -783,7 +783,7 @@ class ImageOperationsWithGifVTestCase(BaseImagingTestCase):
+ cfg = Config(SECURITY_KEY='ACME-SEC')
+ cfg.LOADER = "thumbor.loaders.file_loader"
+ cfg.FILE_LOADER_ROOT_PATH = self.loader_path
+- cfg.FFMPEG_PATH = which('ffmpeg')
++ cfg.FFMPEG_PATH = '@ffmpeg@'
+ cfg.OPTIMIZERS = [
+ 'thumbor.optimizers.gifv',
+ ]
+@@ -793,7 +793,7 @@ class ImageOperationsWithGifVTestCase(BaseImagingTestCase):
+ server = ServerParameters(8889, 'localhost', 'thumbor.conf', None, 'info', None)
+ server.security_key = 'ACME-SEC'
+ ctx = Context(server, cfg, importer)
+- ctx.server.gifsicle_path = which('gifsicle')
++ ctx.server.gifsicle_path = '@gifsicle@'
+ return ctx
+
+ def test_should_convert_animated_gif_to_mp4_when_filter_without_params(self):
+@@ -828,7 +828,7 @@ class ImageOperationsImageCoverTestCase(BaseImagingTestCase):
+ server = ServerParameters(8889, 'localhost', 'thumbor.conf', None, 'info', None)
+ server.security_key = 'ACME-SEC'
+ ctx = Context(server, cfg, importer)
+- ctx.server.gifsicle_path = which('gifsicle')
++ ctx.server.gifsicle_path = '@gifsicle@'
+ return ctx
+
+ def test_can_get_image_cover(self):
+@@ -849,7 +849,7 @@ class ImageOperationsWithResultStorageTestCase(BaseImagingTestCase):
+ cfg.RESULT_STORAGE_FILE_STORAGE_ROOT_PATH = self.root_path
+
+ cfg.USE_GIFSICLE_ENGINE = True
+- cfg.FFMPEG_PATH = which('ffmpeg')
++ cfg.FFMPEG_PATH = '@ffmpeg@'
+ cfg.AUTO_WEBP = True
+ cfg.OPTIMIZERS = [
+ 'thumbor.optimizers.gifv',
+@@ -860,7 +860,7 @@ class ImageOperationsWithResultStorageTestCase(BaseImagingTestCase):
+ server = ServerParameters(8889, 'localhost', 'thumbor.conf', None, 'info', None)
+ server.security_key = 'ACME-SEC'
+ ctx = Context(server, cfg, importer)
+- ctx.server.gifsicle_path = which('gifsicle')
++ ctx.server.gifsicle_path = '@gifsicle@'
+
+ return ctx
+
+@@ -891,7 +891,7 @@ class ImageOperationsResultStorageOnlyTestCase(BaseImagingTestCase):
+ cfg.RESULT_STORAGE = 'thumbor.result_storages.file_storage'
+ cfg.RESULT_STORAGE_EXPIRATION_SECONDS = 60
+ cfg.RESULT_STORAGE_FILE_STORAGE_ROOT_PATH = self.root_path
+- cfg.FFMPEG_PATH = which('ffmpeg')
++ cfg.FFMPEG_PATH = '@ffmpeg@'
+
+ cfg.USE_GIFSICLE_ENGINE = True
+ cfg.AUTO_WEBP = True
+@@ -904,7 +904,7 @@ class ImageOperationsResultStorageOnlyTestCase(BaseImagingTestCase):
+ server = ServerParameters(8889, 'localhost', 'thumbor.conf', None, 'info', None)
+ server.security_key = 'ACME-SEC'
+ ctx = Context(server, cfg, importer)
+- ctx.server.gifsicle_path = which('gifsicle')
++ ctx.server.gifsicle_path = '@gifsicle@'
+
+ return ctx
+
+@@ -1040,7 +1040,7 @@ class ImageOperationsWithMaxPixels(BaseImagingTestCase):
+ server = ServerParameters(8889, 'localhost', 'thumbor.conf', None, 'info', None)
+ server.security_key = 'ACME-SEC'
+ ctx = Context(server, cfg, importer)
+- ctx.server.gifsicle_path = which('gifsicle')
++ ctx.server.gifsicle_path = '@gifsicle@'
+ return ctx
+
+ def test_should_error(self):
+@@ -1061,7 +1061,7 @@ class ImageOperationsWithRespectOrientation(BaseImagingTestCase):
+ server = ServerParameters(8889, 'localhost', 'thumbor.conf', None, 'info', None)
+ server.security_key = 'ACME-SEC'
+ self.context = Context(server, cfg, importer)
+- self.context.server.gifsicle_path = which('gifsicle')
++ self.context.server.gifsicle_path = '@gifsicle@'
+ return self.context
+
+ def test_should_be_ok_when_orientation_exif(self):
+@@ -1153,7 +1153,7 @@ class ImageOperationsWithJpegtranTestCase(BaseImagingTestCase):
+ cfg = Config(SECURITY_KEY='ACME-SEC')
+ cfg.LOADER = "thumbor.loaders.file_loader"
+ cfg.FILE_LOADER_ROOT_PATH = self.loader_path
+- cfg.JPEGTRAN_PATH = which('jpegtran')
++ cfg.JPEGTRAN_PATH = '@jpegtran@'
+ cfg.PROGRESSIVE_JPEG = True,
+ cfg.RESULT_STORAGE_STORES_UNSAFE = True,
+ cfg.OPTIMIZERS = [
+@@ -1175,9 +1175,7 @@ class ImageOperationsWithJpegtranTestCase(BaseImagingTestCase):
+ f.write(response.body)
+ f.close()
+
+- exiftool = which('exiftool')
+- if not exiftool:
+- raise AssertionError('exiftool was not found. Please install it to run thumbor\'s tests.')
++ exiftool = '@exiftool@'
+
+ command = [
+ exiftool,
+@@ -1221,7 +1219,7 @@ class ImageOperationsWithoutStorage(BaseImagingTestCase):
+ server = ServerParameters(8889, 'localhost', 'thumbor.conf', None, 'info', None)
+ server.security_key = 'ACME-SEC'
+ ctx = Context(server, cfg, importer)
+- ctx.server.gifsicle_path = which('gifsicle')
++ ctx.server.gifsicle_path = '@gifsicle@'
+ return ctx
+
+ def test_meta(self):
+diff --git a/tests/optimizers/test_gifv.py b/tests/optimizers/test_gifv.py
+index 229e9cd..066f2d5 100644
+--- a/tests/optimizers/test_gifv.py
++++ b/tests/optimizers/test_gifv.py
+@@ -31,7 +31,7 @@ class GifvOptimizerTest(TestCase):
+ def get_context(self):
+ conf = Config()
+ conf.STATSD_HOST = ''
+- conf.FFMPEG_PATH = which('ffmpeg')
++ conf.FFMPEG_PATH = '@ffmpeg@'
+ ctx = Context(config=conf)
+ ctx.request = RequestParameters()
+ ctx.request.filters.append('gifv')
+diff --git a/tests/test_server.py b/tests/test_server.py
+index 5b31750..c2a65dc 100644
+--- a/tests/test_server.py
++++ b/tests/test_server.py
+@@ -11,6 +11,8 @@
+ from unittest import TestCase
+ import mock
+
++from nose.tools import nottest
++
+ from preggy import expect
+
+ from thumbor.app import ThumborServiceApp
+@@ -118,6 +120,7 @@ class ServerTestCase(TestCase):
+ expect(server_parameters.security_key).to_equal('something')
+
+ @mock.patch.object(thumbor.server, 'which')
++ @nottest
+ def test_validate_gifsicle_path(self, which_mock):
+ server_parameters = mock.Mock(security_key=None)
+ conf = Config(SECURITY_KEY='test', USE_GIFSICLE_ENGINE=True)
+@@ -128,6 +131,7 @@ class ServerTestCase(TestCase):
+ expect(server_parameters.gifsicle_path).to_equal('/usr/bin/gifsicle')
+
+ @mock.patch.object(thumbor.server, 'which')
++ @nottest
+ def test_validate_null_gifsicle_path(self, which_mock):
+ server_parameters = mock.Mock(security_key=None)
+ conf = Config(SECURITY_KEY='test', USE_GIFSICLE_ENGINE=True)
+diff --git a/tests/test_utils.py b/tests/test_utils.py
+index 38cd51b..7dd0b3e 100644
+--- a/tests/test_utils.py
++++ b/tests/test_utils.py
+@@ -10,6 +10,7 @@
+
+ from mock import Mock, patch
+ from unittest import TestCase
++from nose.tools import nottest
+ import logging
+
+ from preggy import expect
+@@ -112,6 +113,7 @@ class UtilsTestCase(TestCase):
+ test_func()
+ mock_warn.assert_called_once_with('Deprecated function test_func: func2')
+
++ @nottest
+ def test_can_which_by_path(self):
+ result = which('/bin/ls')
+ expect(result).to_equal('/bin/ls')
+@@ -119,6 +121,7 @@ class UtilsTestCase(TestCase):
+ result = which('/tmp')
+ expect(result).to_be_null()
+
++ @nottest
+ def test_can_which_by_env(self):
+ result = which('ls')
+ expect(result).to_equal('/bin/ls')
+diff --git a/thumbor/server.py b/thumbor/server.py
+index c75a769..821163b 100644
+--- a/thumbor/server.py
++++ b/thumbor/server.py
+@@ -89,12 +89,7 @@ def validate_config(config, server_parameters):
+ warnings.simplefilter('error', Image.DecompressionBombWarning)
+
+ if config.USE_GIFSICLE_ENGINE:
+- server_parameters.gifsicle_path = which('gifsicle')
+- if server_parameters.gifsicle_path is None:
+- raise RuntimeError(
+- 'If using USE_GIFSICLE_ENGINE configuration to True, the `gifsicle` binary must be in the PATH '
+- 'and must be an executable.'
+- )
++ server_parameters.gifsicle_path = '@gifsicle@'
+
+
+ def get_context(server_parameters, config, importer):
+--
+2.18.1
+
diff --git a/nixpkgs/pkgs/development/python-modules/thumbor/default.nix b/nixpkgs/pkgs/development/python-modules/thumbor/default.nix
new file mode 100644
index 00000000000..720391772b5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/thumbor/default.nix
@@ -0,0 +1,90 @@
+{ 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}/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; [ ma27 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/thumborpexif/default.nix b/nixpkgs/pkgs/development/python-modules/thumborpexif/default.nix
new file mode 100644
index 00000000000..2a1240526ab
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/thumborpexif/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy27
+}:
+
+buildPythonPackage rec {
+ pname = "thumbor-pexif";
+ version = "0.14.1";
+ disabled = ! isPy27;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "96dcc03ea6066d9546baf54f6841f4048b0b24a291eed65d098b3348c8872d99";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Module to parse and edit the EXIF data tags in a JPEG image";
+ homepage = http://www.benno.id.au/code/pexif/;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tifffile/default.nix b/nixpkgs/pkgs/development/python-modules/tifffile/default.nix
new file mode 100644
index 00000000000..9a0876548e5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tifffile/default.nix
@@ -0,0 +1,34 @@
+{ lib, fetchPypi, buildPythonPackage, isPy27
+, numpy, enum34, futures, pathlib
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "tifffile";
+ version = "2019.2.22";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ed49d75b3eff711dbe74b35324dfd79e0db598b6e772a9096001545e81e95437";
+ };
+
+ patches = lib.optional isPy27 ./python2-regex-compat.patch;
+
+ # Missing dependencies: imagecodecs, czifile, cmapfile, oiffile, lfdfiles
+ # and test data missing from PyPI tarball
+ doCheck = false;
+ checkInputs = [ pytest ];
+ checkPhase = ''
+ pytest
+ '';
+
+ propagatedBuildInputs = [ numpy ]
+ ++ lib.optional isPy27 [ futures enum34 pathlib ];
+
+ meta = with lib; {
+ description = "Read and write image data from and to TIFF files.";
+ homepage = https://www.lfd.uci.edu/~gohlke/;
+ maintainers = [ maintainers.lebastr ];
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tifffile/python2-regex-compat.patch b/nixpkgs/pkgs/development/python-modules/tifffile/python2-regex-compat.patch
new file mode 100644
index 00000000000..7f4ec5764bb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tifffile/python2-regex-compat.patch
@@ -0,0 +1,23 @@
+--- a/setup.py 2019-02-20 18:52:12.000000000 +0100
++++ b/setup.py 2019-03-02 13:55:39.014019260 +0100
+@@ -20,12 +20,6 @@
+
+ description = re.search(r'"""(.*)\.(?:\r\n|\r|\n)', code).groups()[0]
+
+-readme = re.search(r'(?:\r\n|\r|\n){2}"""(.*)"""(?:\r\n|\r|\n){2}from', code,
+- re.MULTILINE | re.DOTALL).groups()[0]
+-
+-readme = '\n'.join([description, '=' * len(description)]
+- + readme.splitlines()[1:])
+-
+ license = re.search(r'(# Copyright.*?(?:\r\n|\r|\n))(?:\r\n|\r|\n)+""', code,
+ re.MULTILINE | re.DOTALL).groups()[0]
+
+@@ -41,7 +35,6 @@
+ name='tifffile',
+ version=version,
+ description=description,
+- long_description=readme,
+ author='Christoph Gohlke',
+ author_email='cgohlke@uci.edu',
+ url='https://www.lfd.uci.edu/~gohlke/',
diff --git a/nixpkgs/pkgs/development/python-modules/tilestache/default.nix b/nixpkgs/pkgs/development/python-modules/tilestache/default.nix
new file mode 100644
index 00000000000..2b0fc68ca4c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tilestache/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, modestmaps
+, pillow
+, pycairo
+, python-mapnik
+, simplejson
+, werkzeug
+, isPy27
+}:
+
+buildPythonPackage rec {
+ pname = "tilestache";
+ version = "1.51.13";
+ disabled = !isPy27;
+
+ src = fetchPypi {
+ pname = "TileStache";
+ inherit version;
+ sha256 = "11e15dd85501345bcfeb18dce5b1c8fb74ac8d867df2520afe0eefe1edd85f27";
+ };
+
+ propagatedBuildInputs = [ modestmaps pillow pycairo python-mapnik simplejson werkzeug ];
+
+ meta = with stdenv.lib; {
+ description = "A tile server for rendered geographic data";
+ homepage = http://tilestache.org;
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/timelib/default.nix b/nixpkgs/pkgs/development/python-modules/timelib/default.nix
new file mode 100644
index 00000000000..39ff4b6de15
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/timelib/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "timelib";
+ version = "0.2.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "49142233bdb5971d64a41e05a1f80a408a02be0dc7d9f8c99e7bdd0613ba81cb";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Parse english textual date descriptions";
+ homepage = "https://github.com/pediapress/timelib/";
+ license = licenses.zlib;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/timeout-decorator/default.nix b/nixpkgs/pkgs/development/python-modules/timeout-decorator/default.nix
new file mode 100644
index 00000000000..af1a85c9627
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/timeout-decorator/default.nix
@@ -0,0 +1,16 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+buildPythonPackage rec {
+ pname = "timeout-decorator";
+ version = "0.4.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1inkf68i2s2x27arpqwkdxigiqbpbpjbbnfv7jzsrif1fmp2fphs";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Timeout decorator";
+ license = licenses.mit;
+ homepage = https://github.com/pnpnpn/timeout-decorator;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tinycss/default.nix b/nixpkgs/pkgs/development/python-modules/tinycss/default.nix
new file mode 100644
index 00000000000..223d778095a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tinycss/default.nix
@@ -0,0 +1,47 @@
+{ pkgs
+, buildPythonPackage
+, fetchPypi
+, pytest
+, python
+, cython
+, cssutils
+, isPyPy
+}:
+
+buildPythonPackage rec {
+ pname = "tinycss";
+ version = "0.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "12306fb50e5e9e7eaeef84b802ed877488ba80e35c672867f548c0924a76716e";
+ };
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ cssutils ];
+ nativeBuildInputs = [
+ cython
+ ];
+
+ preBuild = ''
+ # Force cython to re-generate this file. If it is present, cython will
+ # think it is "up to date" even though it was generated with an older,
+ # incompatible version of cython. See
+ # https://github.com/Kozea/tinycss/issues/17.
+ rm tinycss/speedups.c
+ '';
+
+ checkPhase = ''
+ py.test $out/${python.sitePackages}
+ '';
+
+ # Disable Cython tests for PyPy
+ TINYCSS_SKIP_SPEEDUPS_TESTS = pkgs.lib.optional isPyPy true;
+
+ meta = with pkgs.lib; {
+ description = "Complete yet simple CSS parser for Python";
+ license = licenses.bsd3;
+ homepage = https://pythonhosted.org/tinycss/;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tinycss2/default.nix b/nixpkgs/pkgs/development/python-modules/tinycss2/default.nix
new file mode 100644
index 00000000000..894d4f737fb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tinycss2/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildPythonPackage, pythonOlder, fetchPypi
+, webencodings
+, pytest, pytestrunner, pytestcov, pytest-flake8, pytest-isort }:
+
+buildPythonPackage rec {
+ pname = "tinycss2";
+ version = "1.0.2";
+ disabled = pythonOlder "3.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1kw84y09lggji4krkc58jyhsfj31w8npwhznr7lf19d0zbix09v4";
+ };
+
+ patches = [ ./remove-redundant-dependency.patch ];
+
+ propagatedBuildInputs = [ webencodings ];
+
+ checkInputs = [ pytest pytestrunner pytestcov pytest-flake8 pytest-isort ];
+
+ meta = with lib; {
+ description = "Low-level CSS parser for Python";
+ homepage = https://github.com/Kozea/tinycss2;
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tinycss2/remove-redundant-dependency.patch b/nixpkgs/pkgs/development/python-modules/tinycss2/remove-redundant-dependency.patch
new file mode 100644
index 00000000000..27ec511c55f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tinycss2/remove-redundant-dependency.patch
@@ -0,0 +1,12 @@
+diff --git a/setup.cfg b/setup.cfg
+index b3b3c2d..480f3e6 100644
+--- a/setup.cfg
++++ b/setup.cfg
+@@ -33,7 +33,6 @@ project_urls =
+
+ [options]
+ packages = find:
+-setup_requires = pytest-runner
+ install_requires =
+ setuptools >= 39.2.0
+ webencodings >= 0.4
diff --git a/nixpkgs/pkgs/development/python-modules/tiros/default.nix b/nixpkgs/pkgs/development/python-modules/tiros/default.nix
new file mode 100644
index 00000000000..edc4bbdebb1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tiros/default.nix
@@ -0,0 +1,20 @@
+{ fetchPypi, buildPythonPackage
+, semantic-version, boto3, flask, docutils, requests
+}:
+
+buildPythonPackage rec {
+ pname = "tiros";
+ version = "1.0.44";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d6bf7410967554ec283f9d4eabc0ce6821d6e6d36001afbdb7fe0826423d4f37";
+ };
+
+ patchPhase = ''
+ sed -E -i "s/'([[:alnum:].-_]+)[=><]{2}[[:digit:].]*'/'\\1'/g" setup.py
+ sed -i "s/'datetime',//" setup.py
+ '';
+
+ propagatedBuildInputs = [ semantic-version boto3 flask docutils requests ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tissue/default.nix b/nixpkgs/pkgs/development/python-modules/tissue/default.nix
new file mode 100644
index 00000000000..895700f681e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tissue/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, pep8
+}:
+
+buildPythonPackage rec {
+ pname = "tissue";
+ version = "0.9.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "7e34726c3ec8fae358a7faf62de172db15716f5582e5192a109e33348bd76c2e";
+ };
+
+ buildInputs = [ nose ];
+ propagatedBuildInputs = [ pep8 ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/WoLpH/tissue;
+ description = "Tissue - automated pep8 checker for nose";
+ license = licenses.lgpl2;
+ maintainers = with maintainers; [ domenkozar ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/titlecase/default.nix b/nixpkgs/pkgs/development/python-modules/titlecase/default.nix
new file mode 100644
index 00000000000..e25d871f978
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/titlecase/default.nix
@@ -0,0 +1,20 @@
+{buildPythonPackage, lib, nose, fetchPypi}:
+
+buildPythonPackage rec {
+ pname = "titlecase";
+ version = "0.12.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0486i99wf8ssa7sgn81fn6fv6i4rhhq6n751bc740b3hzfbpmpl4";
+ };
+
+ checkInputs = [ nose ];
+
+ meta = {
+ homepage = https://github.com/ppannuto/python-titlecase;
+ description = "Python Port of John Gruber's titlecase.pl";
+ license = lib.licenses.mit;
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/tkinter/default.nix b/nixpkgs/pkgs/development/python-modules/tkinter/default.nix
new file mode 100644
index 00000000000..ba910f75e19
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tkinter/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, python
+, py
+, isPyPy
+}:
+
+buildPythonPackage {
+ name = "tkinter-${python.version}";
+ src = py;
+ format = "other";
+
+ disabled = isPyPy;
+
+ installPhase = ''
+ # Move the tkinter module
+ mkdir -p $out/${py.sitePackages}
+ mv lib/${py.libPrefix}/lib-dynload/_tkinter* $out/${py.sitePackages}/
+ '' + stdenv.lib.optionalString (!stdenv.isDarwin) ''
+ # Update the rpath to point to python without x11Support
+ old_rpath=$(patchelf --print-rpath $out/${py.sitePackages}/_tkinter*)
+ new_rpath=$(sed "s#${py}#${python}#g" <<< "$old_rpath" )
+ patchelf --set-rpath $new_rpath $out/${py.sitePackages}/_tkinter*
+ '';
+
+ meta = py.meta;
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tld/default.nix b/nixpkgs/pkgs/development/python-modules/tld/default.nix
new file mode 100644
index 00000000000..b3d83deeac9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tld/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchPypi, python }:
+
+python.pkgs.buildPythonPackage rec {
+ pname = "tld";
+ version = "0.9.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0i0prgwrmm157h6fa5bx9wm0m70qq2nhzp743374a94p9s766rpp";
+ };
+
+ propagatedBuildInputs = with python.pkgs; [ six ];
+ checkInputs = with python.pkgs; [ factory_boy faker pytestcov tox pytestCheckHook];
+
+ # https://github.com/barseghyanartur/tld/issues/54
+ disabledTests = [
+ "test_1_update_tld_names"
+ "test_1_update_tld_names_command"
+ "test_2_update_tld_names_module"
+ ];
+
+ preCheck = ''
+ export PATH="$PATH:$out/bin"
+ '';
+
+ dontUseSetuptoolsCheck = true;
+
+ pythonImportsCheck = [
+ "tld"
+ ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/barseghyanartur/tld;
+ description = "Extracts the top level domain (TLD) from the URL given";
+ license = licenses.lgpl21;
+ maintainers = with maintainers; [ genesis ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tldextract/default.nix b/nixpkgs/pkgs/development/python-modules/tldextract/default.nix
new file mode 100644
index 00000000000..88b41793180
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tldextract/default.nix
@@ -0,0 +1,24 @@
+{ lib, fetchPypi, buildPythonPackage
+, requests, requests-file, idna, pytest
+, responses
+}:
+
+buildPythonPackage rec {
+ pname = "tldextract";
+ version = "2.2.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1lcywabjy7vpm6awl2cw4m6rk6h85qnbql0j33xcfryy2dhfyaxp";
+ };
+
+ propagatedBuildInputs = [ requests requests-file idna ];
+ checkInputs = [ pytest responses ];
+
+ meta = {
+ homepage = https://github.com/john-kurkowski/tldextract;
+ description = "Accurately separate the TLD from the registered domain and subdomains of a URL, using the Public Suffix List.";
+ license = lib.licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tlsh/default.nix b/nixpkgs/pkgs/development/python-modules/tlsh/default.nix
new file mode 100644
index 00000000000..2a74a00539f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tlsh/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, cmake
+}:
+
+buildPythonPackage {
+ pname = "tlsh";
+ version = "3.4.5";
+
+ src = fetchFromGitHub {
+ owner = "trendmicro";
+ repo = "tlsh";
+ rev = "22fa9a62068b92c63f2b5a87004a7a7ceaac1930";
+ sha256 = "1ydliir308xn4ywy705mmsh7863ldlixdvpqwdhbipzq9vfpmvll";
+ };
+
+ nativeBuildInputs = [ cmake ];
+
+ # no test data
+ doCheck = false;
+
+ postConfigure = ''
+ cd ../py_ext
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Trend Micro Locality Sensitive Hash";
+ homepage = https://github.com/trendmicro/tlsh;
+ license = licenses.asl20;
+ platforms = platforms.unix;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tlslite-ng/default.nix b/nixpkgs/pkgs/development/python-modules/tlslite-ng/default.nix
new file mode 100644
index 00000000000..ac68019d369
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tlslite-ng/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, ecdsa
+}:
+
+buildPythonPackage rec {
+ pname = "tlslite-ng";
+ version = "0.7.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1aw7j50byzab0xwp50m5w5c14fzdzwk2law5a5bn6dn3i5fc6fw2";
+ };
+
+ buildInputs = [ ecdsa ];
+
+ meta = with stdenv.lib; {
+ description = "Pure python implementation of SSL and TLS.";
+ homepage = https://pypi.python.org/pypi/tlslite-ng;
+ license = licenses.lgpl2;
+ maintainers = [ maintainers.erictapen ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tlslite/default.nix b/nixpkgs/pkgs/development/python-modules/tlslite/default.nix
new file mode 100644
index 00000000000..fb1cdd0a471
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tlslite/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "tlslite";
+ version = "0.4.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "9b9a487694c239efea8cec4454a99a56ee1ae1a5f3af0858ccf8029e2ac2d42d";
+ };
+
+ meta = with stdenv.lib; {
+ description = "A pure Python implementation of SSL and TLS";
+ homepage = https://pypi.python.org/pypi/tlslite;
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tmdb3/default.nix b/nixpkgs/pkgs/development/python-modules/tmdb3/default.nix
new file mode 100644
index 00000000000..87b62cd78ac
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tmdb3/default.nix
@@ -0,0 +1,20 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "tmdb3";
+ version = "0.7.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "9b6e043b8a65d159e7fc8f720badc7ffee5109296e38676c107454e03a895983";
+ };
+
+ # no tests implemented
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Python implementation of the v3 API for TheMovieDB.org, allowing access to movie and cast information";
+ homepage = https://pypi.python.org/pypi/tmdb3;
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/todoist/default.nix b/nixpkgs/pkgs/development/python-modules/todoist/default.nix
new file mode 100644
index 00000000000..6f3eae60c63
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/todoist/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchPypi, buildPythonPackage
+, requests }:
+
+buildPythonPackage rec {
+ pname = "todoist-python";
+ version = "7.0.17";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0gs4vlvvmkz627ybswj0l6m3c8dyrqgfqjlawbc8d9rkx88srkr2";
+ };
+
+ propagatedBuildInputs = [ requests ];
+
+ meta = {
+ description = "The official Todoist Python API library";
+ homepage = http://todoist-python.readthedocs.io/en/latest/;
+ license = stdenv.lib.licenses.mit;
+ maintainers = with stdenv.lib.maintainers; [ the-kenny ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/toggl-cli/default.nix b/nixpkgs/pkgs/development/python-modules/toggl-cli/default.nix
new file mode 100644
index 00000000000..2c43ebf2c7e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/toggl-cli/default.nix
@@ -0,0 +1,57 @@
+{ stdenv, buildPythonPackage, fetchPypi, twine, pbr, click, click-completion, validate-email,
+pendulum, ptable, requests, inquirer, pythonOlder, pytest, pytestcov, pytest-mock, faker, factory_boy }:
+
+
+buildPythonPackage rec {
+ pname = "toggl-cli";
+ version = "2.1.0";
+
+ disabled = pythonOlder "3.5";
+
+ src = fetchPypi {
+ pname = "togglCli";
+ inherit version;
+ sha256 = "0iirvvb8772569v28d36bnryksm1qkkw48d48fw26j7ka01qq6mm";
+ };
+
+ postPatch = ''
+ substituteInPlace requirements.txt \
+ --replace "click-completion==0.5.0" "click-completion>=0.5.0" \
+ --replace "pbr==5.1.2" "pbr>=5.1.2" \
+ --replace "inquirer==2.5.1" "inquirer>=2.5.1"
+ '';
+
+ nativeBuildInputs = [ pbr twine ];
+ checkInputs = [ pbr pytest pytestcov pytest-mock faker factory_boy ];
+
+ preCheck = ''
+ export TOGGL_API_TOKEN=your_api_token
+ export TOGGL_PASSWORD=toggl_password
+ export TOGGL_USERNAME=user@example.com
+ '';
+
+ checkPhase = ''
+ runHook preCheck
+ pytest -k "not premium and not TestDateTimeType and not TestDateTimeField" tests/unit --maxfail=20
+ runHook postCheck
+ '';
+
+ propagatedBuildInputs = [
+ click
+ click-completion
+ validate-email
+ pendulum
+ ptable
+ requests
+ inquirer
+ pbr
+ ];
+
+ meta = with stdenv.lib; {
+ homepage = "https://toggl.uhlir.dev/";
+ description = "Command line tool and set of Python wrapper classes for interacting with toggl's API";
+ license = licenses.mit;
+ maintainers = [ maintainers.mmahut ];
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/tokenlib/default.nix b/nixpkgs/pkgs/development/python-modules/tokenlib/default.nix
new file mode 100644
index 00000000000..24f54b98a96
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tokenlib/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchgit
+, requests
+, webob
+}:
+
+buildPythonPackage rec {
+ pname = "tokenlib";
+ version = "0.3.1";
+
+ src = fetchgit {
+ url = https://github.com/mozilla-services/tokenlib.git;
+ rev = "refs/tags/${version}";
+ sha256 = "0bq6dqyfwh29pg8ngmrm4mx4q27an9lsj0p9l79p9snn4g2rxzc8";
+ };
+
+ propagatedBuildInputs = [ requests webob ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/mozilla-services/tokenlib;
+ description = "Generic support library for signed-token-based auth schemes";
+ license = licenses.mpl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tokenserver/default.nix b/nixpkgs/pkgs/development/python-modules/tokenserver/default.nix
new file mode 100644
index 00000000000..08f3f87321f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tokenserver/default.nix
@@ -0,0 +1,36 @@
+{ lib, buildPythonPackage, fetchFromGitHub
+, alembic, boto, cornice, hawkauthlib, mozsvc, paste, pybrowserid, pyfxa
+, pymysql, pymysqlsa, sqlalchemy, testfixtures, tokenlib, umemcache
+, mock, nose, unittest2, webtest
+}:
+
+buildPythonPackage rec {
+ pname = "tokenserver";
+ version = "1.3.1";
+
+ src = fetchFromGitHub {
+ owner = "mozilla-services";
+ repo = pname;
+ rev = version;
+ sha256 = "04z0r8xzrmhvh04y8ggdz9gs8qa8lv3qr7kasf6lm63fixsfgrlp";
+ };
+
+ propagatedBuildInputs = [
+ alembic boto cornice hawkauthlib mozsvc paste pybrowserid pyfxa
+ pymysql pymysqlsa sqlalchemy testfixtures tokenlib umemcache
+ ];
+
+ checkInputs = [
+ mock nose unittest2 webtest
+ ];
+
+ # Requires virtualenv, MySQL, ...
+ doCheck = false;
+
+ meta = with lib; {
+ description = "The Mozilla Token Server";
+ homepage = https://github.com/mozilla-services/tokenserver;
+ license = licenses.mpl20;
+ maintainers = with maintainers; [ nadrieril ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/toml/default.nix b/nixpkgs/pkgs/development/python-modules/toml/default.nix
new file mode 100644
index 00000000000..29d0a4c692f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/toml/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "toml";
+ version = "0.10.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0p1xww2mzkhqvxkfvmfzm58bbfj812zhdz4rwdjiv94ifz2q37r2";
+ };
+
+ # This package has a test script (built for Travis) that involves a)
+ # looking in the home directory for a binary test runner and b) using
+ # git to download a test suite.
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "a Python library for parsing and creating TOML";
+ homepage = "https://github.com/uiri/toml";
+ license = licenses.mit;
+ maintainers = with maintainers; [ twey ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tomlkit/default.nix b/nixpkgs/pkgs/development/python-modules/tomlkit/default.nix
new file mode 100644
index 00000000000..d75458acf7c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tomlkit/default.nix
@@ -0,0 +1,29 @@
+{ lib, buildPythonPackage, fetchPypi, isPy27, isPy34
+, enum34, functools32, typing
+}:
+
+buildPythonPackage rec {
+ pname = "tomlkit";
+ version = "0.5.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0xlmx280mzd3f63ydqhr76whbr2lhcwihyg9my9d5hjklkrhdn58";
+ };
+
+ propagatedBuildInputs =
+ lib.optionals isPy27 [ enum34 functools32 ]
+ ++ lib.optional (isPy27 || isPy34) typing;
+
+ # The Pypi tarball doesn't include tests, and the GitHub source isn't
+ # buildable until we bootstrap poetry, see
+ # https://github.com/NixOS/nixpkgs/pull/53599#discussion_r245855665
+ doCheck = false;
+
+ meta = with lib; {
+ homepage = https://github.com/sdispater/tomlkit;
+ description = "Style-preserving TOML library for Python";
+ license = licenses.mit;
+ maintainers = with maintainers; [ jakewaksbaum ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/toolz/default.nix b/nixpkgs/pkgs/development/python-modules/toolz/default.nix
new file mode 100644
index 00000000000..7f506e56413
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/toolz/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, nose
+}:
+
+buildPythonPackage rec{
+ pname = "toolz";
+ version = "0.10.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "08fdd5ef7c96480ad11c12d472de21acd32359996f69a5259299b540feba4560";
+ };
+
+ checkInputs = [ nose ];
+
+ checkPhase = ''
+ # https://github.com/pytoolz/toolz/issues/357
+ rm toolz/tests/test_serialization.py
+ nosetests toolz/tests
+ '';
+
+ meta = with lib; {
+ homepage = https://github.com/pytoolz/toolz;
+ description = "List processing tools and functional utilities";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ fridh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/toposort/default.nix b/nixpkgs/pkgs/development/python-modules/toposort/default.nix
new file mode 100644
index 00000000000..dd1156f4355
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/toposort/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "toposort";
+ version = "1.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "dba5ae845296e3bf37b042c640870ffebcdeb8cd4df45adaa01d8c5476c557dd";
+ };
+
+ meta = with stdenv.lib; {
+ description = "A topological sort algorithm";
+ homepage = https://pypi.python.org/pypi/toposort/1.1;
+ maintainers = with maintainers; [ tstrobel ];
+ platforms = platforms.unix;
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/torchvision/default.nix b/nixpkgs/pkgs/development/python-modules/torchvision/default.nix
new file mode 100644
index 00000000000..0413fd33f6f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/torchvision/default.nix
@@ -0,0 +1,30 @@
+{ buildPythonPackage
+, fetchPypi
+, six
+, numpy
+, pillow
+, pytorch
+, lib
+}:
+
+buildPythonPackage rec {
+ version = "0.2.1";
+ pname = "torchvision";
+
+ format = "wheel";
+
+ src = fetchPypi {
+ inherit pname version;
+ format = "wheel";
+ sha256 = "18gvdabkmzfjg47ns0lw38mf85ry28nq1mas5rzlwvb4l5zmw2ms";
+ };
+
+ propagatedBuildInputs = [ six numpy pillow pytorch ];
+
+ meta = {
+ description = "PyTorch vision library";
+ homepage = https://pytorch.org/;
+ license = lib.licenses.bsd3;
+ maintainers = with lib.maintainers; [ ericsagnes ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tornado/default.nix b/nixpkgs/pkgs/development/python-modules/tornado/default.nix
new file mode 100644
index 00000000000..1d8a03578cd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tornado/default.nix
@@ -0,0 +1,52 @@
+{ lib
+, python
+, buildPythonPackage
+, fetchPypi
+, backports_abc
+, backports_ssl_match_hostname
+, certifi
+, singledispatch
+, pythonOlder
+, futures
+, version ? "5.1"
+}:
+
+let
+ versionMap = {
+ "4.5.3" = {
+ sha256 = "02jzd23l4r6fswmwxaica9ldlyc2p6q8dk6dyff7j58fmdzf853d";
+ };
+ "5.1" = {
+ sha256 = "4f66a2172cb947387193ca4c2c3e19131f1c70fa8be470ddbbd9317fd0801582";
+ };
+ };
+in
+
+with versionMap.${version};
+
+buildPythonPackage rec {
+ pname = "tornado";
+ inherit version;
+
+ propagatedBuildInputs = [ backports_abc certifi singledispatch ]
+ ++ lib.optional (pythonOlder "3.5") backports_ssl_match_hostname
+ ++ lib.optional (pythonOlder "3.2") futures;
+
+ # We specify the name of the test files to prevent
+ # https://github.com/NixOS/nixpkgs/issues/14634
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover *_test.py
+ '';
+
+ src = fetchPypi {
+ inherit pname sha256 version;
+ };
+
+ __darwinAllowLocalNetworking = true;
+
+ meta = {
+ description = "A web framework and asynchronous networking library";
+ homepage = http://www.tornadoweb.org/;
+ license = lib.licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tox/default.nix b/nixpkgs/pkgs/development/python-modules/tox/default.nix
new file mode 100644
index 00000000000..772128c6860
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tox/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, packaging
+, pluggy
+, py
+, six
+, virtualenv
+, setuptools_scm
+, toml
+, filelock
+}:
+
+buildPythonPackage rec {
+ pname = "tox";
+ version = "3.7.0";
+
+ buildInputs = [ setuptools_scm ];
+ propagatedBuildInputs = [ packaging pluggy py six virtualenv toml filelock ];
+
+ doCheck = false;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "25ef928babe88c71e3ed3af0c464d1160b01fca2dd1870a5bb26c2dea61a17fc";
+ };
+
+ meta = with lib; {
+ description = "Virtualenv-based automation of test activities";
+ homepage = https://tox.readthedocs.io/;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tqdm/default.nix b/nixpkgs/pkgs/development/python-modules/tqdm/default.nix
new file mode 100644
index 00000000000..f6038acc1ca
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tqdm/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, nose
+, coverage
+, glibcLocales
+, flake8
+}:
+
+buildPythonPackage rec {
+ pname = "tqdm";
+ version = "4.32.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "25d4c0ea02a305a688e7e9c2cdc8f862f989ef2a4701ab28ee963295f5b109ab";
+ };
+
+ buildInputs = [ nose coverage glibcLocales flake8 ];
+
+ postPatch = ''
+ # Remove performance testing.
+ # Too sensitive for on Hydra.
+ rm tqdm/tests/tests_perf.py
+ '';
+
+ LC_ALL="en_US.UTF-8";
+
+# doCheck = !stdenv.isDarwin;
+ # Test suite is too big and slow.
+ doCheck = false;
+
+ meta = {
+ description = "A Fast, Extensible Progress Meter";
+ homepage = https://github.com/tqdm/tqdm;
+ license = with lib.licenses; [ mit ];
+ maintainers = with lib.maintainers; [ fridh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/traceback2/default.nix b/nixpkgs/pkgs/development/python-modules/traceback2/default.nix
new file mode 100644
index 00000000000..fe15285f065
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/traceback2/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pbr
+, linecache2
+}:
+
+buildPythonPackage rec {
+ version = "1.4.0";
+ pname = "traceback2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0c1h3jas1jp1fdbn9z2mrgn3jj0hw1x3yhnkxp7jw34q15xcdb05";
+ };
+
+ propagatedBuildInputs = [ pbr linecache2 ];
+
+ # circular dependencies for tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A backport of traceback to older supported Pythons";
+ homepage = https://pypi.python.org/pypi/traceback2/;
+ license = licenses.psfl;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tracing/default.nix b/nixpkgs/pkgs/development/python-modules/tracing/default.nix
new file mode 100644
index 00000000000..094c01eef78
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tracing/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, sphinx
+}:
+
+buildPythonPackage rec {
+ pname = "tracing";
+ version = "0.8";
+
+ src = fetchurl {
+ url = "http://code.liw.fi/debian/pool/main/p/python-tracing/python-tracing_${version}.orig.tar.gz";
+ sha256 = "1l4ybj5rvrrcxf8csyq7qx52izybd502pmx70zxp46gxqm60d2l0";
+ };
+
+ buildInputs = [ sphinx ];
+
+ # error: invalid command 'test'
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = http://liw.fi/tracing/;
+ description = "Python debug logging helper";
+ license = licenses.gpl3;
+ maintainers = [];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/trackpy/default.nix b/nixpkgs/pkgs/development/python-modules/trackpy/default.nix
new file mode 100644
index 00000000000..2e26679ebf2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/trackpy/default.nix
@@ -0,0 +1,57 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, numpy
+, scipy
+, six
+, pandas
+, pyyaml
+, matplotlib
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "trackpy";
+ version = "0.4.1";
+
+ src = fetchFromGitHub {
+ owner = "soft-matter";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "01fdv93f6z16gypmvqnlbjmcih7dmr7a63n5w9swmp11x3if4iyq";
+ };
+
+ propagatedBuildInputs = [
+ numpy
+ scipy
+ six
+ pandas
+ pyyaml
+ matplotlib
+ ];
+
+ checkInputs = [
+ pytest
+ ];
+
+ checkPhase = ''
+ ${stdenv.lib.optionalString (stdenv.isDarwin) ''
+ # specifically needed for darwin
+ export HOME=$(mktemp -d)
+ mkdir -p $HOME/.matplotlib
+ echo "backend: ps" > $HOME/.matplotlib/matplotlibrc
+ ''}
+
+ pytest trackpy --ignore trackpy/tests/test_motion.py \
+ --ignore trackpy/tests/test_feature_saving.py \
+ --ignore trackpy/tests/test_feature.py \
+ --ignore trackpy/tests/test_legacy_linking.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Particle-tracking toolkit";
+ homepage = https://github.com/soft-matter/trackpy;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/traitlets/default.nix b/nixpkgs/pkgs/development/python-modules/traitlets/default.nix
new file mode 100644
index 00000000000..0f18c669386
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/traitlets/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, glibcLocales
+, pytest
+, mock
+, ipython_genutils
+, decorator
+, enum34
+, pythonOlder
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "traitlets";
+ version = "4.3.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "9c4bd2d267b7153df9152698efb1050a5d84982d3384a37b2c1f7723ba3e7835";
+ };
+
+ checkInputs = [ glibcLocales pytest mock ];
+ propagatedBuildInputs = [ ipython_genutils decorator six ] ++ lib.optional (pythonOlder "3.4") enum34;
+
+ checkPhase = ''
+ LC_ALL="en_US.UTF-8" py.test
+ '';
+
+# doCheck = false;
+
+ meta = {
+ description = "Traitlets Python config system";
+ homepage = http://ipython.org/;
+ license = lib.licenses.bsd3;
+ maintainers = with lib.maintainers; [ fridh ];
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/traits/default.nix b/nixpkgs/pkgs/development/python-modules/traits/default.nix
new file mode 100644
index 00000000000..bcf205aa1d2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/traits/default.nix
@@ -0,0 +1,39 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+, pytest
+, numpy
+, isPy33
+}:
+
+buildPythonPackage rec {
+ pname = "traits";
+ version = "5.1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0a17qmpw0z9h7ybh5yxrghvkcf2q90vgxzbnv1n4i0fxhi7mjy3s";
+ };
+
+ # Use pytest because its easier to discover tests
+ buildInputs = [ pytest ];
+ propagatedBuildInputs = [ numpy ];
+
+ checkPhase = ''
+ py.test $out/${python.sitePackages}
+ '';
+
+ # Test suite is broken for 3.x on latest release
+ # https://github.com/enthought/traits/issues/187
+ # https://github.com/enthought/traits/pull/188
+ # Furthermore, some tests fail due to being in a chroot
+ doCheck = isPy33;
+
+ meta = with stdenv.lib; {
+ description = "Explicitly typed attributes for Python";
+ homepage = https://pypi.python.org/pypi/traits;
+ license = "BSD";
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/transaction/default.nix b/nixpkgs/pkgs/development/python-modules/transaction/default.nix
new file mode 100644
index 00000000000..20f12485435
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/transaction/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, fetchPypi
+, buildPythonPackage
+, zope_interface
+, mock
+}:
+
+
+buildPythonPackage rec {
+ pname = "transaction";
+ version = "2.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "17wz1y524ca07vr03yddy8dv0gbscs06dbdywmllxv5rc725jq3j";
+ };
+
+ propagatedBuildInputs = [ zope_interface mock ];
+
+ meta = with stdenv.lib; {
+ description = "Transaction management";
+ homepage = https://pypi.python.org/pypi/transaction;
+ license = licenses.zpl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/transitions/default.nix b/nixpkgs/pkgs/development/python-modules/transitions/default.nix
new file mode 100644
index 00000000000..059289ec421
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/transitions/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, six, nose, mock, dill, pycodestyle }:
+
+buildPythonPackage rec {
+ pname = "transitions";
+ version = "0.6.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "afe0f498cf1f3f3b0fc13562011b8895a172df8f891dbb5118923d46e78a96d7";
+ };
+
+ postPatch = ''
+ substituteInPlace setup.py --replace "dill<0.2.7" dill
+ '';
+
+ propagatedBuildInputs = [ six ];
+
+ checkInputs = [ nose mock dill pycodestyle ];
+
+ checkPhase = ''
+ nosetests
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/pytransitions/transitions;
+ description = "A lightweight, object-oriented finite state machine implementation in Python";
+ license = licenses.mit;
+ maintainers = with maintainers; [ dotlambda ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/translationstring/default.nix b/nixpkgs/pkgs/development/python-modules/translationstring/default.nix
new file mode 100644
index 00000000000..91ac8f06256
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/translationstring/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "translationstring";
+ version = "1.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "4ee44cfa58c52ade8910ea0ebc3d2d84bdcad9fa0422405b1801ec9b9a65b72d";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = http://pylonsproject.org/;
+ description = "Utility library for i18n relied on by various Repoze and Pyramid packages";
+ license = licenses.bsd0;
+ maintainers = with maintainers; [ domenkozar ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/transmissionrpc/default.nix b/nixpkgs/pkgs/development/python-modules/transmissionrpc/default.nix
new file mode 100644
index 00000000000..932045b6502
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/transmissionrpc/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "transmissionrpc";
+ version = "0.11";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ec43b460f9fde2faedbfa6d663ef495b3fd69df855a135eebe8f8a741c0dde60";
+ };
+
+ propagatedBuildInputs = [ six ];
+
+ meta = with stdenv.lib; {
+ description = "Python implementation of the Transmission bittorent client RPC protocol";
+ homepage = https://pypi.python.org/pypi/transmissionrpc/;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/treq/default.nix b/nixpkgs/pkgs/development/python-modules/treq/default.nix
new file mode 100644
index 00000000000..f49c7a0d243
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/treq/default.nix
@@ -0,0 +1,56 @@
+{ stdenv, fetchPypi, buildPythonPackage, service-identity, requests, six
+, mock, twisted, incremental, pep8, httpbin
+}:
+
+buildPythonPackage rec {
+ pname = "treq";
+ version = "18.6.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "91e09ff6b524cc90aa5e934b909c8d0d1a9d36ebd618b6c38e37b17013e69f48";
+ };
+
+ propagatedBuildInputs = [
+ requests
+ six
+ incremental
+ service-identity
+ twisted
+ # twisted [tls] requirements (we should find a way to list "extras")
+ twisted.extras.tls
+ ];
+
+ checkInputs = [
+ pep8
+ mock
+ httpbin
+ ];
+
+ postPatch = ''
+ rm -fv src/treq/test/test_treq_integration.py
+ '';
+
+ # XXX tox tries to install coverage despite it is installed
+ #postBuild = ''
+ # # build documentation and install in $out
+ # tox -e docs
+ # mkdir -pv $out/docs
+ # cp -rv docs/* $out/docs/
+ #'';
+
+ checkPhase = ''
+ pep8 --ignore=E902 treq
+ trial treq
+ '';
+
+ # Failing tests https://github.com/twisted/treq/issues/208
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/twisted/treq;
+ description = "A requests-like API built on top of twisted.web's Agent";
+ license = licenses.mit;
+ maintainers = with maintainers; [ nand0p ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/trezor/default.nix b/nixpkgs/pkgs/development/python-modules/trezor/default.nix
new file mode 100644
index 00000000000..9b7dc424ddc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/trezor/default.nix
@@ -0,0 +1,46 @@
+{ lib, fetchPypi, buildPythonPackage, isPy3k, python, pytest
+, typing-extensions
+, protobuf
+, hidapi
+, ecdsa
+, mnemonic
+, requests
+, pyblake2
+, click
+, construct
+, libusb1
+, rlp
+, shamir-mnemonic
+}:
+
+buildPythonPackage rec {
+ pname = "trezor";
+ version = "0.11.4";
+
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "aeb3f56a4c389495617f27bf218471b7969f636d25ddc491dfefeb8a1b3cd499";
+ };
+
+ propagatedBuildInputs = [ typing-extensions protobuf hidapi ecdsa mnemonic requests pyblake2 click construct libusb1 rlp shamir-mnemonic ];
+
+ checkInputs = [
+ pytest
+ ];
+
+ # disable test_tx_api.py as it requires being online
+ checkPhase = ''
+ runHook preCheck
+ ${python.interpreter} -m pytest --pyargs trezorlib.tests.unit_tests --ignore trezorlib/tests/unit_tests/test_tx_api.py
+ runHook postCheck
+ '';
+
+ meta = with lib; {
+ description = "Python library for communicating with TREZOR Bitcoin Hardware Wallet";
+ homepage = "https://github.com/trezor/trezor-firmware/tree/master/python";
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ np prusnak mmahut maintainers."1000101" ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/trezor_agent/default.nix b/nixpkgs/pkgs/development/python-modules/trezor_agent/default.nix
new file mode 100644
index 00000000000..17ecd369136
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/trezor_agent/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, trezor
+, libagent
+, ecdsa
+, ed25519
+, mnemonic
+, keepkey
+, semver
+, wheel
+, pinentry
+}:
+
+buildPythonPackage rec{
+ pname = "trezor_agent";
+ version = "0.10.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "e82bf000c1178b1a7612f2a90487eb34c6234d2edb15dc8e310ad875d8298690";
+ };
+
+ propagatedBuildInputs = [ trezor libagent ecdsa ed25519 mnemonic keepkey semver wheel pinentry ];
+
+ meta = with stdenv.lib; {
+ description = "Using Trezor as hardware SSH agent";
+ homepage = "https://github.com/romanz/trezor-agent";
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ np mmahut ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/trio/default.nix b/nixpkgs/pkgs/development/python-modules/trio/default.nix
new file mode 100644
index 00000000000..bc9837dc23c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/trio/default.nix
@@ -0,0 +1,50 @@
+{ lib, buildPythonPackage, fetchPypi, pythonOlder
+, attrs
+, sortedcontainers
+, async_generator
+, idna
+, outcome
+, contextvars
+, pytest
+, pyopenssl
+, trustme
+, sniffio
+, stdenv
+, jedi
+, pylint
+}:
+
+buildPythonPackage rec {
+ pname = "trio";
+ version = "0.11.0";
+ disabled = pythonOlder "3.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "3796774aedbf5be581c68f98c79b565654876de6e9a01c6a95e3ec6cd4e4b4c3";
+ };
+
+ checkInputs = [ pytest pyopenssl trustme jedi pylint ];
+ # It appears that the build sandbox doesn't include /etc/services, and these tests try to use it.
+ checkPhase = ''
+ HOME="$(mktemp -d)" py.test -k 'not test_getnameinfo and not test_SocketType_resolve and not test_getprotobyname and not test_waitpid'
+ '';
+ propagatedBuildInputs = [
+ attrs
+ sortedcontainers
+ async_generator
+ idna
+ outcome
+ sniffio
+ ] ++ lib.optionals (pythonOlder "3.7") [ contextvars ];
+
+ # tests are failing on Darwin
+ doCheck = !stdenv.isDarwin;
+
+ meta = {
+ description = "An async/await-native I/O library for humans and snake people";
+ homepage = https://github.com/python-trio/trio;
+ license = with lib.licenses; [ mit asl20 ];
+ maintainers = with lib.maintainers; [ catern ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/trollius/default.nix b/nixpkgs/pkgs/development/python-modules/trollius/default.nix
new file mode 100644
index 00000000000..21a3c5d6d08
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/trollius/default.nix
@@ -0,0 +1,52 @@
+{ lib, stdenv, buildPythonPackage, fetchPypi, isPy3k, mock, unittest2, six, futures }:
+
+buildPythonPackage rec {
+ pname = "trollius";
+ version = "2.2.post1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "06s44k6pcq35vl5j4i2pgkpb848djal818qypcvx44gyn4azjrqn";
+ };
+
+ checkInputs = [ mock ] ++ lib.optional (!isPy3k) unittest2;
+
+ propagatedBuildInputs = [ six ] ++ lib.optional (!isPy3k) futures;
+
+ patches = [
+ ./tests.patch
+ ];
+
+ disabled = isPy3k;
+
+ postPatch = ''
+ # Overrides PYTHONPATH causing dependencies not to be found
+ sed -i -e "s|test_env_var_debug|skip_test_env_var_debug|g" tests/test_tasks.py
+ '' + lib.optionalString stdenv.isDarwin ''
+ # Some of the tests fail on darwin with `error: AF_UNIX path too long'
+ # because of the *long* path names for sockets
+ sed -i -e "s|test_create_ssl_unix_connection|skip_test_create_ssl_unix_connection|g" tests/test_events.py
+ sed -i -e "s|test_create_unix_connection|skip_test_create_unix_connection|g" tests/test_events.py
+ sed -i -e "s|test_create_unix_server_existing_path_nonsock|skip_test_create_unix_server_existing_path_nonsock|g" tests/test_unix_events.py
+ sed -i -e "s|test_create_unix_server_existing_path_sock|skip_test_create_unix_server_existing_path_sock|g" tests/test_unix_events.py
+ sed -i -e "s|test_create_unix_server_ssl_verified|skip_test_create_unix_server_ssl_verified|g" tests/test_events.py
+ sed -i -e "s|test_create_unix_server_ssl_verify_failed|skip_test_create_unix_server_ssl_verify_failed|g" tests/test_events.py
+ sed -i -e "s|test_create_unix_server_ssl|skip_test_create_unix_server_ssl|g" tests/test_events.py
+ sed -i -e "s|test_create_unix_server|skip_test_create_unix_server|g" tests/test_events.py
+ sed -i -e "s|test_open_unix_connection_error|skip_test_open_unix_connection_error|g" tests/test_streams.py
+ sed -i -e "s|test_open_unix_connection_no_loop_ssl|skip_test_open_unix_connection_no_loop_ssl|g" tests/test_streams.py
+ sed -i -e "s|test_open_unix_connection|skip_test_open_unix_connection|g" tests/test_streams.py
+ sed -i -e "s|test_pause_reading|skip_test_pause_reading|g" tests/test_subprocess.py
+ sed -i -e "s|test_read_pty_output|skip_test_read_pty_output|g" tests/test_events.py
+ sed -i -e "s|test_start_unix_server|skip_test_start_unix_server|g" tests/test_streams.py
+ sed -i -e "s|test_unix_sock_client_ops|skip_test_unix_sock_client_ops|g" tests/test_events.py
+ sed -i -e "s|test_write_pty|skip_test_write_pty|g" tests/test_events.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Port of the asyncio project to Python 2.7";
+ homepage = https://github.com/vstinner/trollius;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/trollius/tests.patch b/nixpkgs/pkgs/development/python-modules/trollius/tests.patch
new file mode 100644
index 00000000000..4923bded949
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/trollius/tests.patch
@@ -0,0 +1,13 @@
+diff --git i/tests/test_asyncio.py w/tests/test_asyncio.py
+index 39d9e1a..05b7e6f 100644
+--- i/tests/test_asyncio.py
++++ w/tests/test_asyncio.py
+@@ -69,7 +69,7 @@ class AsyncioTests(test_utils.TestCase):
+ def step_future():
+ future = asyncio.Future()
+ self.loop.call_soon(future.set_result, "asyncio.Future")
+- return (yield from future)
++ return (yield From(future))
+
+ # test in release mode
+ trollius.coroutines._DEBUG = False
diff --git a/nixpkgs/pkgs/development/python-modules/trueskill/default.nix b/nixpkgs/pkgs/development/python-modules/trueskill/default.nix
new file mode 100644
index 00000000000..2106e4d2e76
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/trueskill/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, six }:
+
+buildPythonPackage rec {
+ pname = "trueskill";
+ version = "0.4.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1fv7g1szyjykja9mzax2w4js7jm2z7wwzgnr5dqrsdi84j6v8qlx";
+ };
+
+ propagatedBuildInputs = [
+ six
+ ];
+
+ # Can't build distribute, see https://github.com/NixOS/nixpkgs/pull/49340
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "The video game rating system";
+ homepage = https://trueskill.org;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [
+ eadwu
+ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/trustme/default.nix b/nixpkgs/pkgs/development/python-modules/trustme/default.nix
new file mode 100644
index 00000000000..601e49759fd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/trustme/default.nix
@@ -0,0 +1,48 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, cryptography
+, futures
+, pytest
+, pyopenssl
+, service-identity
+, idna
+}:
+
+buildPythonPackage rec {
+ pname = "trustme";
+ version = "0.5.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "103f8n0c60593r0z8hh1zvk1bagxwnhrv3203xpiiddwqxalr04b";
+ };
+
+ checkInputs = [
+ pytest
+ pyopenssl
+ service-identity
+ ];
+
+ propagatedBuildInputs = [
+ cryptography
+ idna
+ ] ++ lib.optionals (!isPy3k) [
+ futures
+ ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ # Some of the tests use localhost networking.
+ __darwinAllowLocalNetworking = true;
+
+ meta = {
+ description = "High quality TLS certs while you wait, for the discerning tester";
+ homepage = https://github.com/python-trio/trustme;
+ license = with lib.licenses; [ mit asl20 ];
+ maintainers = with lib.maintainers; [ catern ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ttystatus/default.nix b/nixpkgs/pkgs/development/python-modules/ttystatus/default.nix
new file mode 100644
index 00000000000..bce0ad8d7c0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ttystatus/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, 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 stdenv.lib; {
+ homepage = http://liw.fi/ttystatus/;
+ description = "Progress and status updates on terminals for Python";
+ license = licenses.gpl3;
+ maintainers = [];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tunigo/default.nix b/nixpkgs/pkgs/development/python-modules/tunigo/default.nix
new file mode 100644
index 00000000000..767bb21f0fd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tunigo/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildPythonPackage, fetchFromGitHub, requests, mock, responses, pytest }:
+
+buildPythonPackage rec {
+ pname = "tunigo";
+ version = "1.0.0";
+
+ propagatedBuildInputs = [ requests ];
+
+ src = fetchFromGitHub {
+ owner = "trygveaa";
+ repo = "python-tunigo";
+ rev = "v${version}";
+ sha256 = "07q9girrjjffzkn8xj4l3ynf9m4psi809zf6f81f54jdb330p2fs";
+ };
+
+ checkInputs = [ mock responses pytest ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with lib; {
+ description = "Python API for the browse feature of Spotify";
+ homepage = https://github.com/trygveaa/python-tunigo;
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tvdb_api/default.nix b/nixpkgs/pkgs/development/python-modules/tvdb_api/default.nix
new file mode 100644
index 00000000000..6c298dce7c7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tvdb_api/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, requests-cache
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "tvdb_api";
+ version = "2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b1de28a5100121d91b1f6a8ec7e86f2c4bdf48fb22fab3c6fe21e7fb7346bf8f";
+ };
+
+ propagatedBuildInputs = [ requests-cache ];
+
+ checkInputs = [ pytest ];
+
+ # requires network access
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Simple to use TVDB (thetvdb.com) API in Python";
+ homepage = "https://github.com/dbr/tvdb_api";
+ license = licenses.unlicense;
+ maintainers = with maintainers; [ peterhoeg ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tvnamer/default.nix b/nixpkgs/pkgs/development/python-modules/tvnamer/default.nix
new file mode 100644
index 00000000000..b0df4008992
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tvnamer/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, tvdb_api
+}:
+
+buildPythonPackage rec {
+ pname = "tvnamer";
+ version = "2.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "75e38454757c77060ad3782bd071682d6d316de86f9aec1c2042d236f93aec7b";
+ };
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ tvdb_api ];
+
+ # a ton of tests fail with: IOError: tvnamer/main.py could not be found in . or ..
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Automatic TV episode file renamer, uses data from thetvdb.com via tvdb_api.";
+ homepage = "https://github.com/dbr/tvnamer";
+ license = licenses.unlicense;
+ maintainers = with maintainers; [ peterhoeg ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tweepy/default.nix b/nixpkgs/pkgs/development/python-modules/tweepy/default.nix
new file mode 100644
index 00000000000..88174a94ef4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tweepy/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPythonPackage, fetchPypi, requests, six, requests_oauthlib }:
+
+buildPythonPackage rec {
+ pname = "tweepy";
+ version = "3.8.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0sri92mzhkifn16klkk2mhc2vcrvdmfp2wvkpfss518sln5q5gca";
+ };
+
+ doCheck = false;
+ propagatedBuildInputs = [ requests six requests_oauthlib ];
+
+ meta = with lib; {
+ homepage = https://github.com/tweepy/tweepy;
+ description = "Twitter library for python";
+ license = licenses.mit;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/twiggy/default.nix b/nixpkgs/pkgs/development/python-modules/twiggy/default.nix
new file mode 100644
index 00000000000..9a87c684f1b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/twiggy/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "Twiggy";
+ version = "0.4.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "44d8aa51110efaab0712b5ec2b015149ad4f28e28f729004aac45d0ad8e19be0";
+ };
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = http://twiggy.wearpants.org;
+ # Taken from http://i.wearpants.org/blog/meet-twiggy/
+ description = "Twiggy is the first totally new design for a logger since log4j";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ pierron ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/twilio/default.nix b/nixpkgs/pkgs/development/python-modules/twilio/default.nix
new file mode 100644
index 00000000000..b2bb8a740a8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/twilio/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub
+, pyjwt, pysocks, pytz, requests, six, nose, mock }:
+
+buildPythonPackage rec {
+ pname = "twilio";
+ version = "6.29.1";
+ # tests not included in PyPi, so fetch from github instead
+ src = fetchFromGitHub {
+ owner = "twilio";
+ repo = "twilio-python";
+ rev = version;
+ sha256 = "1g2wdy62w25sjibggr25b3833x0fhc7w6ypy8g1fgix217rja7pz";
+ };
+
+ buildInputs = [ nose mock ];
+
+ propagatedBuildInputs = [ pyjwt pysocks pytz six requests ];
+
+ meta = with stdenv.lib; {
+ description = "Twilio API client and TwiML generator";
+ homepage = https://github.com/twilio/twilio-python/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ flokli ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/twill/default.nix b/nixpkgs/pkgs/development/python-modules/twill/default.nix
new file mode 100644
index 00000000000..097e691f7c1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/twill/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k, nose }:
+buildPythonPackage rec {
+ pname = "twill";
+ version = "1.8.0";
+
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d63e8b09aa4f6645571c70cd3ba47a911abbae4d7baa4b38fc7eb72f6cfda188";
+ };
+
+ checkInputs = [ nose ];
+
+ doCheck = false; # pypi package comes without tests, other homepage does not provide all verisons
+
+ meta = with lib; {
+ homepage = http://twill.idyll.org/;
+ description = "A simple scripting language for Web browsing";
+ license = licenses.mit;
+ maintainers = with maintainers; [ mic92 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/twine/default.nix b/nixpkgs/pkgs/development/python-modules/twine/default.nix
new file mode 100644
index 00000000000..a49e994019e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/twine/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pkginfo
+, requests
+, requests_toolbelt
+, tqdm
+, pyblake2
+, readme_renderer
+}:
+
+buildPythonPackage rec {
+ pname = "twine";
+ version = "1.13.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d6c29c933ecfc74e9b1d9fa13aa1f87c5d5770e119f5a4ce032092f0ff5b14dc";
+ };
+
+ propagatedBuildInputs = [ pkginfo requests requests_toolbelt tqdm pyblake2 readme_renderer ];
+
+ # Requires network
+ doCheck = false;
+
+ meta = {
+ description = "Collection of utilities for interacting with PyPI";
+ homepage = https://github.com/pypa/twine;
+ license = lib.licenses.asl20;
+ maintainers = with lib.maintainers; [ fridh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/twisted/default.nix b/nixpkgs/pkgs/development/python-modules/twisted/default.nix
new file mode 100644
index 00000000000..249ddb4be86
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/twisted/default.nix
@@ -0,0 +1,60 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+, zope_interface
+, incremental
+, automat
+, constantly
+, hyperlink
+, pyhamcrest
+, attrs
+, pyopenssl
+, service-identity
+, setuptools
+, idna
+}:
+buildPythonPackage rec {
+ pname = "Twisted";
+ version = "18.9.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "tar.bz2";
+ sha256 = "294be2c6bf84ae776df2fc98e7af7d6537e1c5e60a46d33c3ce2a197677da395";
+ };
+
+ propagatedBuildInputs = [ zope_interface incremental automat constantly hyperlink pyhamcrest attrs setuptools ];
+
+ passthru.extras.tls = [ pyopenssl service-identity idna ];
+
+ # Patch t.p._inotify to point to libc. Without this,
+ # twisted.python.runtime.platform.supportsINotify() == False
+ patchPhase = stdenv.lib.optionalString stdenv.isLinux ''
+ substituteInPlace src/twisted/python/_inotify.py --replace \
+ "ctypes.util.find_library('c')" "'${stdenv.glibc.out}/lib/libc.so.6'"
+ '';
+
+ # Generate Twisted's plug-in cache. Twisted users must do it as well. See
+ # http://twistedmatrix.com/documents/current/core/howto/plugin.html#auto3
+ # and http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=477103 for
+ # details.
+ postInstall = "$out/bin/twistd --help > /dev/null";
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover -s twisted/test
+ '';
+ # Tests require network
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://twistedmatrix.com/;
+ description = "Twisted, an event-driven networking engine written in Python";
+ longDescription = ''
+ Twisted is an event-driven networking engine written in Python
+ and licensed under the MIT license.
+ '';
+ license = licenses.mit;
+ maintainers = [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/twitter-common-collections/default.nix b/nixpkgs/pkgs/development/python-modules/twitter-common-collections/default.nix
new file mode 100644
index 00000000000..d562eac5cc7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/twitter-common-collections/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, twitter-common-lang
+}:
+
+buildPythonPackage rec {
+ pname = "twitter.common.collections";
+ version = "0.3.11";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ede4caff74928156f7ff38dac9b0811893de41966c39cd5b2fdea53418349ca8";
+ };
+
+ propagatedBuildInputs = [ twitter-common-lang ];
+
+ meta = with stdenv.lib; {
+ description = "Twitter's common collections";
+ homepage = "https://twitter.github.io/commons/";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ copumpkin ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/twitter-common-confluence/default.nix b/nixpkgs/pkgs/development/python-modules/twitter-common-confluence/default.nix
new file mode 100644
index 00000000000..1253b8077e7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/twitter-common-confluence/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, twitter-common-log
+}:
+
+buildPythonPackage rec {
+ pname = "twitter.common.confluence";
+ version = "0.3.11";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "323dde2c519f85020569d7a343432f3aac16bce6ebe5e34774dbde557296697c";
+ };
+
+ propagatedBuildInputs = [ twitter-common-log ];
+
+ meta = with stdenv.lib; {
+ description = "Twitter's API to the confluence wiki";
+ homepage = "https://twitter.github.io/commons/";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ copumpkin ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/twitter-common-dirutil/default.nix b/nixpkgs/pkgs/development/python-modules/twitter-common-dirutil/default.nix
new file mode 100644
index 00000000000..df2f614c5a0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/twitter-common-dirutil/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, twitter-common-lang
+}:
+
+buildPythonPackage rec {
+ pname = "twitter.common.dirutil";
+ version = "0.3.11";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "49aeecad2434ac23c16abbfc1fccffd3790c056a9eb01468ec26c83e65a10119";
+ };
+
+ propagatedBuildInputs = [ twitter-common-lang ];
+
+ meta = with stdenv.lib; {
+ description = "Utilities for manipulating and finding files and directories";
+ homepage = "https://twitter.github.io/commons/";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ copumpkin ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/twitter-common-lang/default.nix b/nixpkgs/pkgs/development/python-modules/twitter-common-lang/default.nix
new file mode 100644
index 00000000000..59f6d74ad67
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/twitter-common-lang/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "twitter.common.lang";
+ version = "0.3.11";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6e967ca2b5bb96ea749d21052f45b18e37deb5cc160eb12c64a8f1cb9dba7a22";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Twitter's 2.x / 3.x compatibility swiss-army knife";
+ homepage = "https://twitter.github.io/commons/";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ copumpkin ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/twitter-common-log/default.nix b/nixpkgs/pkgs/development/python-modules/twitter-common-log/default.nix
new file mode 100644
index 00000000000..1c3d1808f5d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/twitter-common-log/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, twitter-common-options
+, twitter-common-dirutil
+}:
+
+buildPythonPackage rec {
+ pname = "twitter.common.log";
+ version = "0.3.11";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "7160a864eed30044705e05b816077dd193aec0c66f50ef1c077b7f8490e0d06a";
+ };
+
+ propagatedBuildInputs = [ twitter-common-options twitter-common-dirutil ];
+
+ meta = with stdenv.lib; {
+ description = "Twitter's common logging library";
+ homepage = "https://twitter.github.io/commons/";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ copumpkin ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/twitter-common-options/default.nix b/nixpkgs/pkgs/development/python-modules/twitter-common-options/default.nix
new file mode 100644
index 00000000000..12e55a46ab8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/twitter-common-options/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "twitter.common.options";
+ version = "0.3.11";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a495bcdffc410039bc4166f1a30c2caa3c92769d7a161a4a39d3651836dd27e1";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Twitter's optparse wrapper";
+ homepage = "https://twitter.github.io/commons/";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ copumpkin ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/twitter/default.nix b/nixpkgs/pkgs/development/python-modules/twitter/default.nix
new file mode 100644
index 00000000000..2e8481198a4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/twitter/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "twitter";
+ version = "1.18.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "acdc85e5beea752967bb64c63bde8b915c49a31a01db1b2fecccf9f2c1d5c44d";
+ };
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Twitter API library";
+ license = licenses.mit;
+ maintainers = with maintainers; [ thoughtpolice ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/txaio/default.nix b/nixpkgs/pkgs/development/python-modules/txaio/default.nix
new file mode 100644
index 00000000000..7fb1b9e5b5c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/txaio/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytest, mock, six, twisted,isPy37 }:
+
+buildPythonPackage rec {
+ pname = "txaio";
+ version = "18.8.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "67e360ac73b12c52058219bb5f8b3ed4105d2636707a36a7cdafb56fe06db7fe";
+ };
+
+ checkInputs = [ pytest mock ];
+
+ propagatedBuildInputs = [ six twisted ];
+
+ checkPhase = ''
+ py.test -k "not test_sdist"
+ '';
+
+ # Needs some fixing
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Utilities to support code that runs unmodified on Twisted and asyncio.";
+ homepage = "https://github.com/crossbario/txaio";
+ license = licenses.mit;
+ maintainers = with maintainers; [ nand0p ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/txamqp/default.nix b/nixpkgs/pkgs/development/python-modules/txamqp/default.nix
new file mode 100644
index 00000000000..d59a0bb8b8a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/txamqp/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, twisted
+}:
+
+buildPythonPackage rec {
+ pname = "txamqp";
+ version = "0.3";
+
+ src = fetchurl {
+ url = "https://launchpad.net/txamqp/trunk/${version}/+download/python-txamqp_${version}.orig.tar.gz";
+ sha256 = "1r2ha0r7g14i4b5figv2spizjrmgfpspdbl1m031lw9px2hhm463";
+ };
+
+ buildInputs = [ twisted ];
+
+ meta = with stdenv.lib; {
+ homepage = https://launchpad.net/txamqp;
+ description = "Library for communicating with AMQP peers and brokers using Twisted";
+ license = licenses.asl20;
+ maintainers = [];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/txgithub/default.nix b/nixpkgs/pkgs/development/python-modules/txgithub/default.nix
new file mode 100644
index 00000000000..5340b202e68
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/txgithub/default.nix
@@ -0,0 +1,39 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pyopenssl
+, twisted
+, service-identity
+}:
+
+buildPythonPackage rec {
+ pname = "txgithub";
+ version = "15.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "16gbizy8vkxasxylwzj4p66yw8979nvzxdj6csidgmng7gi2k8nx";
+ };
+
+ propagatedBuildInputs = [ pyopenssl twisted service-identity ];
+
+ # fix python3 issues
+ patchPhase = ''
+ sed -i 's/except usage.UsageError, errortext/except usage.UsageError as errortext/' txgithub/scripts/create_token.py
+ sed -i 's/except usage.UsageError, errortext/except usage.UsageError as errortext/' txgithub/scripts/gist.py
+ sed -i 's/print response\[\x27html_url\x27\]/print(response\[\x27html_url\x27\])/' txgithub/scripts/gist.py
+ sed -i '41d' txgithub/scripts/gist.py
+ sed -i '41d' txgithub/scripts/gist.py
+ '';
+
+ # No tests distributed
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "GitHub API client implemented using Twisted.";
+ homepage = "https://github.com/tomprince/txgithub";
+ license = licenses.mit;
+ maintainers = with maintainers; [ nand0p ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/txrequests/default.nix b/nixpkgs/pkgs/development/python-modules/txrequests/default.nix
new file mode 100644
index 00000000000..ee7d09d5165
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/txrequests/default.nix
@@ -0,0 +1,35 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, twisted
+, requests
+, cryptography
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "txrequests";
+ version = "0.9.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b452a1cafa4d005678f6fa47922a330feb4907d5b4732d1841ca98e89f1362e1";
+ };
+
+ propagatedBuildInputs = [ twisted requests cryptography ];
+
+ # Require network access
+ doCheck = false;
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Asynchronous Python HTTP for Humans.";
+ homepage = "https://github.com/tardyp/txrequests";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ nand0p ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/txtorcon/default.nix b/nixpkgs/pkgs/development/python-modules/txtorcon/default.nix
new file mode 100644
index 00000000000..91e83250d8b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/txtorcon/default.nix
@@ -0,0 +1,33 @@
+{lib, buildPythonPackage, fetchPypi, isPy3k, incremental, ipaddress, twisted
+, automat, zope_interface, idna, pyopenssl, service-identity, pytest, mock, lsof
+, GeoIP}:
+
+buildPythonPackage rec {
+ pname = "txtorcon";
+ version = "19.0.0";
+
+ checkInputs = [ pytest mock lsof GeoIP ];
+ propagatedBuildInputs = [
+ incremental twisted automat zope_interface
+ # extra dependencies required by twisted[tls]
+ idna pyopenssl service-identity
+ ] ++ lib.optionals (!isPy3k) [ ipaddress ];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0fxzhsc62bhmr730vj9pzallmw56gz6iykvl28a5agrycm0bfc9p";
+ };
+
+ # Skip a failing test until fixed upstream:
+ # https://github.com/meejah/txtorcon/issues/250
+ checkPhase = ''
+ pytest --ignore=test/test_util.py .
+ '';
+
+ meta = {
+ description = "Twisted-based Tor controller client, with state-tracking and configuration abstractions";
+ homepage = https://github.com/meejah/txtorcon;
+ maintainers = with lib.maintainers; [ jluttine ];
+ license = lib.licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/typed-ast/default.nix b/nixpkgs/pkgs/development/python-modules/typed-ast/default.nix
new file mode 100644
index 00000000000..0514be0fb4d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/typed-ast/default.nix
@@ -0,0 +1,20 @@
+{ buildPythonPackage, fetchFromGitHub, lib, pythonOlder }:
+buildPythonPackage rec {
+ pname = "typed-ast";
+ version = "1.4.0";
+ src = fetchFromGitHub{
+ owner = "python";
+ repo = "typed_ast";
+ rev = version;
+ sha256 = "0l0hz809f7i356kmqkvfsaswiidb98j9hs9rrjnfawzqcbffzgyb";
+ };
+ # Only works with Python 3.3 and newer;
+ disabled = pythonOlder "3.3";
+ # No tests in archive
+ doCheck = false;
+ meta = {
+ homepage = https://pypi.python.org/pypi/typed-ast;
+ description = "a fork of Python 2 and 3 ast modules with type comment support";
+ license = lib.licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/typeguard/default.nix b/nixpkgs/pkgs/development/python-modules/typeguard/default.nix
new file mode 100644
index 00000000000..7fb6f8fef43
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/typeguard/default.nix
@@ -0,0 +1,41 @@
+{ buildPythonPackage
+, fetchPypi
+, pythonOlder
+, stdenv
+, setuptools_scm
+, pytest
+, glibcLocales
+}:
+
+buildPythonPackage rec {
+ pname = "typeguard";
+ version = "2.2.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b8ddc6e2e60bd64b7003f9a685a09ba387b74adf2f6bea7534a76d61892f573e";
+ };
+
+ buildInputs = [ setuptools_scm ];
+ nativeBuildInputs = [ glibcLocales ];
+
+ LC_ALL="en_US.utf-8";
+
+ postPatch = ''
+ substituteInPlace setup.cfg --replace " --cov" ""
+ '';
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ py.test .
+ '';
+
+ disabled = pythonOlder "3.3";
+
+ meta = with stdenv.lib; {
+ description = "This library provides run-time type checking for functions defined with argument type annotations";
+ homepage = https://github.com/agronholm/typeguard;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/typesentry/default.nix b/nixpkgs/pkgs/development/python-modules/typesentry/default.nix
new file mode 100644
index 00000000000..ef3b1c78c39
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/typesentry/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, colorama
+, pytest
+, pytestcov
+}:
+
+buildPythonPackage {
+ pname = "typesentry";
+ version = "0.2.7";
+
+ # Only wheel distribution is available on PyPi.
+ src = fetchFromGitHub {
+ owner = "h2oai";
+ repo = "typesentry";
+ rev = "0ca8ed0e62d15ffe430545e7648c9a9b2547b49c";
+ sha256 = "0z615f9dxaab3bay3v27j7q99qm6l6q8xv872yvsp87sxj7apfki";
+ };
+
+ propagatedBuildInputs = [ colorama ];
+ checkInputs = [ pytest pytestcov ];
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with lib; {
+ description = "Python 2.7 & 3.5+ runtime type-checker";
+ homepage = "https://github.com/h2oai/typesentry";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ abbradar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/typing-extensions/default.nix b/nixpkgs/pkgs/development/python-modules/typing-extensions/default.nix
new file mode 100644
index 00000000000..ef5fed68912
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/typing-extensions/default.nix
@@ -0,0 +1,31 @@
+{ lib, buildPythonPackage, fetchPypi, pythonOlder, isPy3k, python, typing }:
+let
+ testDir = if isPy3k then "src_py3" else "src_py2";
+
+in buildPythonPackage rec {
+ pname = "typing_extensions";
+ version = "3.7.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "15bx773a5zkk4hkwjl8nb5f8y5741vyyqb9q3jac6kxm1frk5mif";
+ };
+
+ 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";
+
+ checkPhase = ''
+ cd ${testDir}
+ ${python.interpreter} -m unittest discover
+ '';
+
+ meta = with lib; {
+ description = "Backported and Experimental Type Hints for Python 3.5+";
+ homepage = https://github.com/python/typing;
+ license = licenses.psfl;
+ maintainers = with maintainers; [ pmiddend ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/typing/default.nix b/nixpkgs/pkgs/development/python-modules/typing/default.nix
new file mode 100644
index 00000000000..51e634d2439
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/typing/default.nix
@@ -0,0 +1,30 @@
+{ lib, buildPythonPackage, fetchPypi, pythonOlder, isPy3k, isPyPy, python }:
+
+let
+ testDir = if isPy3k then "src" else "python2";
+
+in buildPythonPackage rec {
+ pname = "typing";
+ version = "3.7.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1kj4kvkh89psajxlyb72rm5fr7w70yb32zkj2h174arsz325wxjk";
+ };
+
+ # 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/nixpkgs/pkgs/development/python-modules/typogrify/default.nix b/nixpkgs/pkgs/development/python-modules/typogrify/default.nix
new file mode 100644
index 00000000000..f5724877bf2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/typogrify/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPyPy
+, django
+, smartypants
+, jinja2
+}:
+
+buildPythonPackage rec {
+ pname = "typogrify";
+ version = "2.0.7";
+ disabled = isPyPy;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8be4668cda434163ce229d87ca273a11922cb1614cb359970b7dc96eed13cb38";
+ };
+
+ propagatedBuildInputs = [ django smartypants jinja2 ];
+
+ # Wants to set up Django
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Filters to enhance web typography, including support for Django & Jinja templates";
+ homepage = "https://github.com/mintchaos/typogrify";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tzlocal/default.nix b/nixpkgs/pkgs/development/python-modules/tzlocal/default.nix
new file mode 100644
index 00000000000..8320500fc14
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tzlocal/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, pytz }:
+
+buildPythonPackage rec {
+ pname = "tzlocal";
+ version = "1.5.1";
+
+ propagatedBuildInputs = [ pytz ];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "4ebeb848845ac898da6519b9b31879cf13b6626f7184c496037b818e238f2c4e";
+ };
+
+ # test fail (timezone test fail)
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Tzinfo object for the local timezone";
+ homepage = https://github.com/regebro/tzlocal;
+ license = licenses.cddl;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/u-msgpack-python/default.nix b/nixpkgs/pkgs/development/python-modules/u-msgpack-python/default.nix
new file mode 100644
index 00000000000..144f9299c6e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/u-msgpack-python/default.nix
@@ -0,0 +1,31 @@
+{ buildPythonPackage
+, lib
+, fetchPypi
+, glibcLocales
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "u-msgpack-python";
+ version = "2.5.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6c02a0654a5e11f8fad532ed634109ed49cdc929f7b972848773e4e0ce52f30c";
+ };
+
+ LC_ALL="en_US.UTF-8";
+
+ buildInputs = [ glibcLocales ];
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover
+ '';
+
+ meta = {
+ description = "A portable, lightweight MessagePack serializer and deserializer written in pure Python";
+ homepage = https://github.com/vsergeev/u-msgpack-python;
+ license = lib.licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ua-parser/default.nix b/nixpkgs/pkgs/development/python-modules/ua-parser/default.nix
new file mode 100644
index 00000000000..cd004c59d4a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ua-parser/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, fetchPypi, pyyaml }:
+
+buildPythonPackage rec {
+ pname = "ua-parser";
+ version = "0.8.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "97bbcfc9321a3151d96bb5d62e54270247b0e3be0590a6f2ff12329851718dcb";
+ };
+
+ buildInputs = [ pyyaml ];
+
+ doCheck = false; # requires files from uap-core
+
+ meta = with stdenv.lib; {
+ description = "A python implementation of the UA Parser";
+ homepage = https://github.com/ua-parser/uap-python;
+ license = licenses.asl20;
+ platforms = platforms.unix;
+ maintainers = with maintainers; [ dotlambda ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/uamqp/default.nix b/nixpkgs/pkgs/development/python-modules/uamqp/default.nix
new file mode 100644
index 00000000000..fc6c2b77794
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/uamqp/default.nix
@@ -0,0 +1,46 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k
+, certifi
+, CFNetwork
+, cmake
+, enum34
+, openssl
+, Security
+, six
+, stdenv
+}:
+
+buildPythonPackage rec {
+ pname = "uamqp";
+ version = "1.2.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0wmyw2l2pha5s6khih96lkfa90zyfy2mqsg8cx6vplmrmpx2s52i";
+ };
+
+ buildInputs = [
+ openssl
+ certifi
+ six
+ ] ++ lib.optionals (!isPy3k) [
+ enum34
+ ] ++ lib.optionals stdenv.isDarwin [
+ CFNetwork Security
+ ];
+
+ dontUseCmakeConfigure = true;
+
+ nativeBuildInputs = [
+ cmake
+ ];
+
+ # has no tests
+ doCheck = false;
+
+ meta = with lib; {
+ description = "An AMQP 1.0 client library for Python";
+ homepage = https://github.com/Azure/azure-uamqp-python;
+ license = licenses.mit;
+ maintainers = with maintainers; [ mwilsoninsight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/uarray/default.nix b/nixpkgs/pkgs/development/python-modules/uarray/default.nix
new file mode 100644
index 00000000000..fad2dee2d16
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/uarray/default.nix
@@ -0,0 +1,44 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, matchpy
+, numpy
+, astunparse
+, typing-extensions
+, black
+, pytest
+, pytestcov
+, numba
+, nbval
+, python
+, isPy37
+}:
+
+buildPythonPackage rec {
+ pname = "uarray";
+ version = "0.4";
+ format = "flit";
+ # will have support soon see
+ # https://github.com/Quansight-Labs/uarray/pull/64
+ disabled = isPy37;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "4ec88f477d803a914d58fdf83aeedfb1986305355775cf55525348c62cce9aa4";
+ };
+
+ checkInputs = [ pytest nbval pytestcov numba ];
+ propagatedBuildInputs = [ matchpy numpy astunparse typing-extensions black ];
+
+ checkPhase = ''
+ ${python.interpreter} extract_readme_tests.py
+ pytest
+ '';
+
+ meta = with lib; {
+ description = "Universal array library";
+ homepage = https://github.com/Quansight-Labs/uarray;
+ license = licenses.bsd0;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ujson/default.nix b/nixpkgs/pkgs/development/python-modules/ujson/default.nix
new file mode 100644
index 00000000000..a9d68978c3b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ujson/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPyPy
+}:
+
+buildPythonPackage rec {
+ pname = "ujson";
+ version = "1.35";
+ disabled = isPyPy;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "11jz5wi7mbgqcsz52iqhpyykiaasila4lq8cmc2d54bfa3jp6q7n";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = https://pypi.python.org/pypi/ujson;
+ description = "Ultra fast JSON encoder and decoder for Python";
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ukpostcodeparser/default.nix b/nixpkgs/pkgs/development/python-modules/ukpostcodeparser/default.nix
new file mode 100644
index 00000000000..42588347c85
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ukpostcodeparser/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "UkPostcodeParser";
+ version = "1.1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "930264efa293db80af0103a4fe9c161b06365598d24bb6fe5403f3f57c70530e";
+ };
+
+ doCheck = false;
+
+ meta = with lib; {
+ description = "UK Postcode parser";
+ homepage = https://github.com/hamstah/ukpostcodeparser;
+ license = licenses.publicDomain;
+ maintainers = with maintainers; [ siddharthist ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/umalqurra/default.nix b/nixpkgs/pkgs/development/python-modules/umalqurra/default.nix
new file mode 100644
index 00000000000..a41921a9d8c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/umalqurra/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "umalqurra";
+ version = "0.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "719f6a36f908ada1c29dae0d934dd0f1e1f6e3305784edbec23ad719397de678";
+ };
+
+ # No tests included
+ doCheck = false;
+
+ # See for license
+ # https://github.com/tytkal/python-hijiri-ummalqura/issues/4
+ meta = with stdenv.lib; {
+ description = "Date Api that support Hijri Umalqurra calendar";
+ homepage = https://github.com/tytkal/python-hijiri-ummalqura;
+ license = with licenses; [ publicDomain ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/umap-learn/default.nix b/nixpkgs/pkgs/development/python-modules/umap-learn/default.nix
new file mode 100644
index 00000000000..1fbdbd3782a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/umap-learn/default.nix
@@ -0,0 +1,49 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, nose
+, numpy
+, scikitlearn
+, scipy
+, numba
+}:
+
+buildPythonPackage rec {
+ pname = "umap-learn";
+ version = "0.3.9";
+
+ src = fetchFromGitHub {
+ owner = "lmcinnes";
+ repo = "umap";
+ rev = version;
+ sha256 = "1cdc7hs3vwzxvzs34l9a06q8rvks29wj6swyj8zvwr32knxch8a9";
+ };
+
+ checkInputs = [
+ nose
+ ];
+
+ propagatedBuildInputs = [
+ numpy
+ scikitlearn
+ scipy
+ numba
+ ];
+
+ postConfigure = ''
+ substituteInPlace umap/tests/test_umap.py \
+ --replace "def test_umap_transform_on_iris()" "@SkipTest
+def test_umap_transform_on_iris()"
+ '';
+
+ checkPhase = ''
+ nosetests -s umap
+ '';
+
+ meta = with lib; {
+ description = "Uniform Manifold Approximation and Projection";
+ homepage = http://github.com/lmcinnes/umap;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/umemcache/default.nix b/nixpkgs/pkgs/development/python-modules/umemcache/default.nix
new file mode 100644
index 00000000000..95c0d628697
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/umemcache/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, 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 stdenv.lib; {
+ description = "Ultra fast memcache client written in highly optimized C++ with Python bindings";
+ homepage = https://github.com/esnme/ultramemcache;
+ license = licenses.bsdOriginal;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/uncertainties/default.nix b/nixpkgs/pkgs/development/python-modules/uncertainties/default.nix
new file mode 100644
index 00000000000..f2c02c8a6c6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/uncertainties/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchPypi, buildPythonPackage, nose, numpy }:
+
+buildPythonPackage rec {
+ pname = "uncertainties";
+ version = "3.1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "07kahmr0vfmncf8y4x6ldjrghnd4gsf0fwykgjj5ijvqi9xc21xs";
+ };
+
+ buildInputs = [ nose numpy ];
+
+ # No tests included
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://pythonhosted.org/uncertainties/;
+ description = "Transparent calculations with uncertainties on the quantities involved (aka error propagation)";
+ maintainers = with maintainers; [ rnhmjoj ];
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/uncompyle6/default.nix b/nixpkgs/pkgs/development/python-modules/uncompyle6/default.nix
new file mode 100644
index 00000000000..f300ed72751
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/uncompyle6/default.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, spark_parser
+, xdis
+, nose
+, pytest
+, hypothesis
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "uncompyle6";
+ version = "3.3.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "9c492a560ff1c8713f0947cfc3ab755c368e26421d13087cd5b6c01b1529ea5b";
+ };
+
+ checkInputs = [ nose pytest hypothesis six ];
+ propagatedBuildInputs = [ spark_parser xdis ];
+
+ # six import errors (yet it is supplied...)
+ checkPhase = ''
+ runHook preCheck
+ pytest ./pytest --ignore=pytest/test_function_call.py
+ runHook postCheck
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Python cross-version byte-code deparser";
+ homepage = https://github.com/rocky/python-uncompyle6/;
+ license = licenses.gpl3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/unicodecsv/default.nix b/nixpkgs/pkgs/development/python-modules/unicodecsv/default.nix
new file mode 100644
index 00000000000..d0f54a7c6b2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/unicodecsv/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ version = "0.14.1";
+ pname = "unicodecsv";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1z7pdwkr6lpsa7xbyvaly7pq3akflbnz8gq62829lr28gl1hi301";
+ };
+
+ # ImportError: No module named runtests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Drop-in replacement for Python2's stdlib csv module, with unicode support";
+ homepage = https://github.com/jdunck/python-unicodecsv;
+ maintainers = with maintainers; [ koral ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/unicorn/default.nix b/nixpkgs/pkgs/development/python-modules/unicorn/default.nix
new file mode 100644
index 00000000000..725c73960f5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/unicorn/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPackages, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "unicorn";
+ version = "1.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0a5b4vh734b3wfkgapzzf8x18rimpmzvwwkly56da84n27wfw9bg";
+ };
+
+ # needs python2 at build time
+ PYTHON=buildPackages.python2.interpreter;
+
+ setupPyBuildFlags = [ "--plat-name" "linux" ];
+
+ meta = with stdenv.lib; {
+ description = "Unicorn CPU emulator engine";
+ homepage = "http://www.unicorn-engine.org/";
+ license = [ licenses.gpl2 ];
+ maintainers = [ maintainers.bennofs ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/unidecode/default.nix b/nixpkgs/pkgs/development/python-modules/unidecode/default.nix
new file mode 100644
index 00000000000..13f0053f143
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/unidecode/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi, glibcLocales }:
+
+buildPythonPackage rec {
+ pname = "Unidecode";
+ version = "1.0.23";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8b85354be8fd0c0e10adbf0675f6dc2310e56fda43fa8fe049123b6c475e52fb";
+ };
+
+ LC_ALL="en_US.UTF-8";
+
+ buildInputs = [ glibcLocales ];
+
+ meta = with stdenv.lib; {
+ homepage = https://pypi.python.org/pypi/Unidecode/;
+ description = "ASCII transliterations of Unicode text";
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ domenkozar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/unidiff/default.nix b/nixpkgs/pkgs/development/python-modules/unidiff/default.nix
new file mode 100644
index 00000000000..81e9019f489
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/unidiff/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPythonPackage, fetchFromGitHub }:
+
+buildPythonPackage rec {
+ pname = "unidiff";
+ version = "0.5.5";
+
+ # PyPI tarball doesn't ship tests
+ src = fetchFromGitHub {
+ owner = "matiasb";
+ repo = "python-unidiff";
+ rev = "v${version}";
+ sha256 = "1nvi7s1nn5p7j6aql1nkn2kiadnfby98yla5m3jq8xwsx0aplwdm";
+ };
+
+ meta = with lib; {
+ description = "Unified diff python parsing/metadata extraction library";
+ homepage = https://github.com/matiasb/python-unidiff;
+ license = licenses.mit;
+ maintainers = [ maintainers.marsam ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/unifi/default.nix b/nixpkgs/pkgs/development/python-modules/unifi/default.nix
new file mode 100644
index 00000000000..d7a8e6eaf04
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/unifi/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage
+, fetchPypi, urllib3 }:
+
+buildPythonPackage rec {
+ pname = "unifi";
+ version = "1.2.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0prgx01hzs49prrazgxrinm7ivqzy57ch06qm2h7s1p957sazds8";
+ };
+
+ propagatedBuildInputs = [ urllib3 ];
+
+ # upstream has no tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "An API towards the Ubiquity Networks UniFi controller";
+ homepage = https://pypi.python.org/pypi/unifi/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ peterhoeg ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/units/default.nix b/nixpkgs/pkgs/development/python-modules/units/default.nix
new file mode 100644
index 00000000000..02a3fc940ae
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/units/default.nix
@@ -0,0 +1,21 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "units";
+ version = "0.07";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "43eb3e073e1b11289df7b1c3f184b5b917ccad178b717b03933298716f200e14";
+ };
+
+ meta = with lib; {
+ description = "Python support for quantities with units";
+ homepage = https://bitbucket.org/adonohue/units/;
+ license = licenses.psfl;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/unittest-data-provider/default.nix b/nixpkgs/pkgs/development/python-modules/unittest-data-provider/default.nix
new file mode 100644
index 00000000000..ec34a451156
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/unittest-data-provider/default.nix
@@ -0,0 +1,21 @@
+{ buildPythonPackage
+, lib
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ version = "1.0.1";
+ pname = "unittest-data-provider";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1gn2ka4vqpayx4cpbp8712agqjh3wdpk9smdxnp709ccc2v7zg46";
+ };
+
+ meta = with lib; {
+ description = "PHPUnit-like @dataprovider decorator for unittest";
+ homepage = https://github.com/yourlabs/unittest-data-provider;
+ license = licenses.mit;
+ maintainers = with maintainers; [ jonringer ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/unittest-xml-reporting/default.nix b/nixpkgs/pkgs/development/python-modules/unittest-xml-reporting/default.nix
new file mode 100644
index 00000000000..624ff585c36
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/unittest-xml-reporting/default.nix
@@ -0,0 +1,22 @@
+{lib, fetchPypi, buildPythonPackage, six}:
+
+buildPythonPackage rec {
+ pname = "unittest-xml-reporting";
+ version = "2.5.1";
+
+ propagatedBuildInputs = [six];
+
+ # The tarball from Pypi doesn't actually contain the unit tests
+ doCheck = false;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0v6xcs8nx82yw037h296zk0vz5ka4idm4xdpxkcm4h4fnpj8428l";
+ };
+ meta = with lib; {
+ homepage = https://github.com/xmlrunner/unittest-xml-reporting/tree/master/;
+ description = "A unittest runner that can save test results to XML files";
+ license = lib.licenses.bsd2;
+ maintainers = with lib.maintainers; [ rprospero ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/unittest2/default.nix b/nixpkgs/pkgs/development/python-modules/unittest2/default.nix
new file mode 100644
index 00000000000..85ca7157e12
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/unittest2/default.nix
@@ -0,0 +1,38 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+, traceback2
+}:
+
+buildPythonPackage rec {
+ version = "1.1.0";
+ pname = "unittest2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0y855kmx7a8rnf81d3lh5lyxai1908xjp0laf4glwa4c8472m212";
+ };
+
+ propagatedBuildInputs = [ six traceback2 ];
+
+ # # 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
+ 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
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A backport of the new features added to the unittest testing framework";
+ homepage = https://pypi.python.org/pypi/unittest2;
+ license = licenses.bsd0;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/unpaddedbase64/default.nix b/nixpkgs/pkgs/development/python-modules/unpaddedbase64/default.nix
new file mode 100644
index 00000000000..b69f894cb5c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/unpaddedbase64/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchgit
+}:
+
+buildPythonPackage rec {
+ pname = "unpaddedbase64";
+ version = "1.1.0";
+
+ src = fetchgit {
+ url = "https://github.com/matrix-org/python-unpaddedbase64.git";
+ rev = "refs/tags/v${version}";
+ sha256 = "0if3fjfxga0bwdq47v77fs9hrcqpmwdxry2i2a7pdqsp95258nxd";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/matrix-org/python-unpaddedbase64;
+ description = "Unpadded Base64";
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/upass/default.nix b/nixpkgs/pkgs/development/python-modules/upass/default.nix
new file mode 100644
index 00000000000..baf536fdbad
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/upass/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, pyperclip
+, urwid
+}:
+
+buildPythonPackage rec {
+ version = "0.1.4";
+ pname = "upass";
+
+ src = fetchurl {
+ url = "https://github.com/Kwpolska/upass/archive/v${version}.tar.gz";
+ sha256 = "0f2lyi7xhvb60pvzx82dpc13ksdj5k92ww09czclkdz8k0dxa7hb";
+ };
+
+ propagatedBuildInputs = [ pyperclip urwid ];
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Console UI for pass";
+ homepage = https://github.com/Kwpolska/upass;
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/update-copyright/default.nix b/nixpkgs/pkgs/development/python-modules/update-copyright/default.nix
new file mode 100644
index 00000000000..9ff1137fb56
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/update-copyright/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k }:
+
+buildPythonPackage rec {
+ pname = "update-copyright";
+ version = "0.6.2";
+
+ disabled = !isPy3k;
+
+ # Has no tests
+ doCheck = false;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "17ybdgbdc62yqhda4kfy1vcs1yzp78d91qfhj5zbvz1afvmvdk7z";
+ };
+
+ meta = with lib; {
+ description = "An automatic copyright update tool";
+ homepage = http://blog.tremily.us/posts/update-copyright;
+ license = licenses.gpl3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/update-dotdee/default.nix b/nixpkgs/pkgs/development/python-modules/update-dotdee/default.nix
new file mode 100644
index 00000000000..b537ca8c264
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/update-dotdee/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildPythonPackage, fetchFromGitHub, executor, naturalsort }:
+
+buildPythonPackage rec {
+ pname = "update-dotdee";
+ version = "5.0";
+
+ src = fetchFromGitHub {
+ owner = "xolox";
+ repo = "python-update-dotdee";
+ rev = version;
+ sha256 = "1h3m593nwzx6vwa24k0wizb7la49yhqxwn73ipclxgxxi4dfdj01";
+ };
+
+ propagatedBuildInputs = [ executor naturalsort ];
+
+ meta = with lib; {
+ description = "Generic modularized configuration file manager";
+ homepage = https://github.com/xolox/python-update-dotdee;
+ license = licenses.mit;
+ maintainers = with maintainers; [ eyjhb ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/update_checker/default.nix b/nixpkgs/pkgs/development/python-modules/update_checker/default.nix
new file mode 100644
index 00000000000..ad401d80190
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/update_checker/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi, requests}:
+
+buildPythonPackage rec {
+ pname = "update_checker";
+ version = "0.16";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1f38l40d32dm0avcidf3dmikma8z0la84yngj88v4xygzi399qvh";
+ };
+
+ propagatedBuildInputs = [ requests ];
+
+ # requires network
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A python module that will check for package updates";
+ homepage = https://github.com/bboe/update_checker;
+ license = licenses.bsd2;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/uproot-methods/default.nix b/nixpkgs/pkgs/development/python-modules/uproot-methods/default.nix
new file mode 100644
index 00000000000..54dfc5c112c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/uproot-methods/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, numpy
+, awkward
+}:
+
+buildPythonPackage rec {
+ version = "0.7.0";
+ pname = "uproot-methods";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0awxd4p8yr27k4iayc0phw99bxgw04dnd3lb372hj9wjvldm0hzr";
+ };
+
+ propagatedBuildInputs = [ numpy awkward ];
+
+ # No tests on PyPi
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/scikit-hep/uproot-methods;
+ description = "Pythonic mix-ins for ROOT classes";
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/uproot/default.nix b/nixpkgs/pkgs/development/python-modules/uproot/default.nix
new file mode 100644
index 00000000000..f85c28b7f57
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/uproot/default.nix
@@ -0,0 +1,54 @@
+{ lib, fetchPypi, buildPythonPackage, isPy27
+, awkward
+, backports_lzma
+, cachetools
+, lz4
+, pytestrunner
+, pytest
+, pkgconfig
+, mock
+, numpy
+, requests
+, uproot-methods
+, xxhash
+}:
+
+buildPythonPackage rec {
+ pname = "uproot";
+ version = "3.8.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "06s0lym5md59pj8w89acnwk0i0hh92az187h4gz22mb849h308pw";
+ };
+
+ nativeBuildInputs = [ pytestrunner ];
+
+ checkInputs = [
+ lz4
+ mock
+ pkgconfig
+ pytest
+ requests
+ xxhash
+ ] ++ lib.optional isPy27 backports_lzma;
+
+ propagatedBuildInputs = [
+ numpy
+ cachetools
+ uproot-methods
+ awkward
+ ];
+
+ # skip tests which do network calls
+ checkPhase = ''
+ pytest tests -k 'not hist_in_tree and not branch_auto_interpretation'
+ '';
+
+ meta = with lib; {
+ homepage = https://github.com/scikit-hep/uproot;
+ description = "ROOT I/O in pure Python and Numpy";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ ktf ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/uptime/default.nix b/nixpkgs/pkgs/development/python-modules/uptime/default.nix
new file mode 100644
index 00000000000..035acbcec2b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/uptime/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "uptime";
+ version = "3.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0wr9jkixprlywz0plyn5p42a5fd31aiwvjrxdvj7r02vfxa04c3w";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/Cairnarvon/uptime;
+ description = "Cross-platform way to retrieve system uptime and boot time";
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ rob ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/uranium/default.nix b/nixpkgs/pkgs/development/python-modules/uranium/default.nix
new file mode 100644
index 00000000000..aec0f731554
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/uranium/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, python, cmake
+, pyqt5, numpy, scipy, shapely, libarcus, doxygen, gettext, pythonOlder }:
+
+buildPythonPackage rec {
+ version = "4.2.0";
+ pname = "uranium";
+ format = "other";
+
+ src = fetchFromGitHub {
+ owner = "Ultimaker";
+ repo = "Uranium";
+ rev = version;
+ sha256 = "1dc3s6zya7bbpvzh4acbs65aj899siwd8jr9snnsrdyl9qh8hhq9";
+ };
+
+ disabled = pythonOlder "3.5.0";
+
+ buildInputs = [ python gettext ];
+ propagatedBuildInputs = [ pyqt5 numpy scipy shapely libarcus ];
+ nativeBuildInputs = [ cmake doxygen ];
+
+ postPatch = ''
+ sed -i 's,/python''${PYTHON_VERSION_MAJOR}/dist-packages,/python''${PYTHON_VERSION_MAJOR}.''${PYTHON_VERSION_MINOR}/site-packages,g' CMakeLists.txt
+ sed -i \
+ -e "s,Resources.addSearchPath(os.path.join(os.path.abspath(os.path.dirname(__file__)).*,Resources.addSearchPath(\"$out/share/uranium/resources\")," \
+ -e "s,self._plugin_registry.addPluginLocation(os.path.join(os.path.abspath(os.path.dirname(__file__)).*,self._plugin_registry.addPluginLocation(\"$out/lib/uranium/plugins\")," \
+ UM/Application.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A Python framework for building Desktop applications";
+ homepage = https://github.com/Ultimaker/Uranium;
+ license = licenses.lgpl3Plus;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ abbradar gebner ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/uritemplate/default.nix b/nixpkgs/pkgs/development/python-modules/uritemplate/default.nix
new file mode 100644
index 00000000000..c469fd8dd1c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/uritemplate/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildPythonPackage, fetchPypi, simplejson, pytest, glibcLocales }:
+
+buildPythonPackage rec {
+ pname = "uritemplate";
+ version = "3.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c02643cebe23fc8adb5e6becffe201185bf06c40bda5c0b4028a93f1527d011d";
+ };
+
+ propagatedBuildInputs = [ simplejson ];
+
+ checkInputs = [ pytest glibcLocales ];
+
+ checkPhase = ''
+ LC_ALL=en_US.UTF-8 py.test
+ '';
+
+ meta = with lib; {
+ 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/nixpkgs/pkgs/development/python-modules/uritools/default.nix b/nixpkgs/pkgs/development/python-modules/uritools/default.nix
new file mode 100644
index 00000000000..cf3d36c3e5d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/uritools/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi, ipaddress }:
+
+buildPythonPackage rec {
+ pname = "uritools";
+ version = "2.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "80e8e23cafad54fd85811b5d9ba0fc595d933f5727c61c3937945eec09f99e2b";
+ };
+
+ propagatedBuildInputs = [ ipaddress ];
+
+ meta = with stdenv.lib; {
+ description = "RFC 3986 compliant, Unicode-aware, scheme-agnostic replacement for urlparse";
+ license = licenses.mit;
+ maintainers = [ maintainers.rvolosatovs ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/urlgrabber/default.nix b/nixpkgs/pkgs/development/python-modules/urlgrabber/default.nix
new file mode 100644
index 00000000000..31e6e6a066a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/urlgrabber/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi, pycurl, six }:
+
+buildPythonPackage rec {
+ pname = "urlgrabber";
+ version = "4.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0fazs574fgixd525cn2dh027f4qf0c0gbwcfyfkhc6fkblfa1ibr";
+ };
+
+ propagatedBuildInputs = [ pycurl six ];
+
+ meta = with stdenv.lib; {
+ homepage = http://urlgrabber.baseurl.org;
+ license = licenses.lgpl2Plus;
+ description = "Python module for downloading files";
+ maintainers = with maintainers; [ qknight ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/urllib3/default.nix b/nixpkgs/pkgs/development/python-modules/urllib3/default.nix
new file mode 100644
index 00000000000..d951e436480
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/urllib3/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, pytest, mock, tornado, pyopenssl, cryptography
+, idna, certifi, ipaddress, pysocks }:
+
+buildPythonPackage rec {
+ pname = "urllib3";
+ version = "1.24.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2393a695cd12afedd0dcb26fe5d50d0cf248e5a66f75dbd89a3d4eb333a61af4";
+ };
+
+ NOSE_EXCLUDE = stdenv.lib.concatStringsSep "," [
+ "test_headers" "test_headerdict" "test_can_validate_ip_san" "test_delayed_body_read_timeout"
+ "test_timeout_errors_cause_retries" "test_select_multiple_interrupts_with_event"
+ ];
+
+ checkPhase = ''
+ nosetests -v --cover-min-percentage 1
+ '';
+
+ doCheck = false;
+
+ checkInputs = [ pytest mock tornado ];
+ propagatedBuildInputs = [ pyopenssl cryptography idna certifi ipaddress pysocks ];
+
+ meta = with stdenv.lib; {
+ description = "Powerful, sanity-friendly HTTP client for Python";
+ homepage = https://github.com/shazow/urllib3;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/urwid/default.nix b/nixpkgs/pkgs/development/python-modules/urwid/default.nix
new file mode 100644
index 00000000000..885595ef6d4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/urwid/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "urwid";
+ version = "2.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1g6cpicybvbananpjikmjk8npmjk4xvak1wjzji62wc600wkwkb4";
+ };
+
+ meta = with stdenv.lib; {
+ description = "A full-featured console (xterm et al.) user interface library";
+ homepage = http://excess.org/urwid;
+ repositories.git = git://github.com/wardi/urwid.git;
+ license = licenses.lgpl21;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/urwidtrees/default.nix b/nixpkgs/pkgs/development/python-modules/urwidtrees/default.nix
new file mode 100644
index 00000000000..b69bb62a875
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/urwidtrees/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, urwid
+}:
+
+buildPythonPackage rec {
+ pname = "urwidtrees";
+ version = "1.0.2";
+
+ src = fetchFromGitHub {
+ owner = "pazz";
+ repo = "urwidtrees";
+ rev = version;
+ sha256 = "1n1kpidvkdnsqyb82vlvk78gmly96kh8351lqxn2pzgwwns6fml2";
+ };
+
+ propagatedBuildInputs = [ urwid ];
+
+ meta = with stdenv.lib; {
+ description = "Tree widgets for urwid";
+ homepage = https://github.com/pazz/urwidtrees;
+ license = licenses.gpl3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/us/default.nix b/nixpkgs/pkgs/development/python-modules/us/default.nix
new file mode 100644
index 00000000000..53b5bc9ad16
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/us/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, jellyfish
+}:
+
+buildPythonPackage rec {
+ pname = "us";
+ version = "1.0.0";
+
+ propagatedBuildInputs = [ jellyfish ];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1niglalkp7pinibzbxjdz9mxx9qmwkrh8884dag3kr72cfkrpp09";
+ };
+
+ # Upstream requires jellyfish==0.5.6 but we have 0.6.1
+ postPatch = ''
+ substituteInPlace setup.py --replace "jellyfish==" "jellyfish>="
+ '';
+
+ doCheck = false; # pypi version doesn't include tests
+
+ meta = {
+ description = "A package for easily working with US and state metadata";
+ longDescription = ''
+ all US states and territories, postal abbreviations, Associated Press style
+ abbreviations, FIPS codes, capitals, years of statehood, time zones, phonetic
+ state name lookup, is contiguous or continental, URLs to shapefiles for state,
+ census, congressional districts, counties, and census tracts
+ '';
+ homepage = https://github.com/unitedstates/python-us/;
+ license = lib.licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/usbtmc/default.nix b/nixpkgs/pkgs/development/python-modules/usbtmc/default.nix
new file mode 100644
index 00000000000..8b397d3c42c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/usbtmc/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, buildPythonPackage, pyusb }:
+
+buildPythonPackage rec {
+ pname = "usbtmc";
+ version = "0.8";
+
+ src = fetchurl {
+ url = "https://github.com/python-ivi/python-usbtmc/archive/v${version}.tar.gz";
+ sha256 = "14f4j77ljr45crnjwlp1dqbxwa45s20y2fpq5rg59r60w15al4yw";
+ };
+
+ propagatedBuildInputs = [ pyusb ];
+
+ meta = with stdenv.lib; {
+ description = "Python implementation of the USBTMC instrument control protocol";
+ homepage = http://alexforencich.com/wiki/en/python-usbtmc/start;
+ license = licenses.mit;
+ maintainers = with maintainers; [ bjornfor ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/user-agents/default.nix b/nixpkgs/pkgs/development/python-modules/user-agents/default.nix
new file mode 100644
index 00000000000..a5dc414b260
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/user-agents/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, ua-parser }:
+
+buildPythonPackage rec {
+ pname = "user-agents";
+ version = "2.0";
+
+ # PyPI is missing devices.json
+ src = fetchFromGitHub {
+ owner = "selwin";
+ repo = "python-user-agents";
+ rev = "v${version}";
+ sha256 = "0ix2yajqdnfj433j50dls90mkmqz8m4fiywxg097zwkkc95wm8s4";
+ };
+
+ propagatedBuildInputs = [ ua-parser ];
+
+ meta = with stdenv.lib; {
+ description = "A Python library to identify devices by parsing user agent strings";
+ homepage = https://github.com/selwin/python-user-agents;
+ license = licenses.mit;
+ platforms = platforms.unix;
+ maintainers = with maintainers; [ dotlambda ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/uuid/default.nix b/nixpkgs/pkgs/development/python-modules/uuid/default.nix
new file mode 100644
index 00000000000..5e31f6ccad0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/uuid/default.nix
@@ -0,0 +1,16 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "uuid";
+ version = "1.30";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0gqrjsm85nnkxkmd1vk8350wqj2cigjflnvcydk084n5980cr1qz";
+ };
+
+ meta = with lib; {
+ description = "UUID object and generation functions (Python 2.3 or higher)";
+ homepage = http://zesty.ca/python/;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/uvicorn/default.nix b/nixpkgs/pkgs/development/python-modules/uvicorn/default.nix
new file mode 100644
index 00000000000..9f7efef1e84
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/uvicorn/default.nix
@@ -0,0 +1,52 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, click
+, h11
+, httptools
+, uvloop
+, websockets
+, wsproto
+, pytest
+, requests
+, isPy27
+}:
+
+buildPythonPackage rec {
+ pname = "uvicorn";
+ version = "0.9.0";
+ disabled = isPy27;
+
+ src = fetchFromGitHub {
+ owner = "encode";
+ repo = pname;
+ rev = version;
+ sha256 = "0z4h04mbkzqgpk698bac6f50jxkf02ils6khzl7zbw7yvi6gkkc8";
+ };
+
+ propagatedBuildInputs = [
+ click
+ h11
+ httptools
+ uvloop
+ websockets
+ wsproto
+ ];
+
+ postPatch = ''
+ substituteInPlace setup.py \
+ --replace "h11==0.8.*" "h11"
+ '';
+
+ checkInputs = [ pytest requests ];
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with lib; {
+ homepage = https://www.uvicorn.org/;
+ description = "The lightning-fast ASGI server";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ wd15 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/uvloop/darwin_sandbox.patch b/nixpkgs/pkgs/development/python-modules/uvloop/darwin_sandbox.patch
new file mode 100644
index 00000000000..bd4e5e48b14
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/uvloop/darwin_sandbox.patch
@@ -0,0 +1,28 @@
+diff --git a/tests/test_pipes.py b/tests/test_pipes.py
+index d883abf..2e74d7a 100644
+--- a/tests/test_pipes.py
++++ b/tests/test_pipes.py
+@@ -2,6 +2,7 @@ import asyncio
+ import io
+ import os
+ import socket
++import unittest
+
+ from uvloop import _testbase as tb
+
+@@ -96,6 +97,7 @@ class _BasePipeTest:
+ # extra info is available
+ self.assertIsNotNone(proto.transport.get_extra_info('pipe'))
+
++ @unittest.skip("darwin sandbox")
+ def test_read_pty_output(self):
+ proto = MyReadPipeProto(loop=self.loop)
+
+@@ -198,6 +200,7 @@ class _BasePipeTest:
+ self.loop.run_until_complete(proto.done)
+ self.assertEqual('CLOSED', proto.state)
+
++ @unittest.skip("darwin sandbox")
+ def test_write_pty(self):
+ master, slave = os.openpty()
+ os.set_blocking(master, False)
diff --git a/nixpkgs/pkgs/development/python-modules/uvloop/default.nix b/nixpkgs/pkgs/development/python-modules/uvloop/default.nix
new file mode 100644
index 00000000000..171f6d6ed32
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/uvloop/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, stdenv
+, buildPythonPackage
+, fetchPypi
+, pyopenssl
+, libuv
+, psutil
+, isPy27
+, CoreServices
+, ApplicationServices
+}:
+
+buildPythonPackage rec {
+ pname = "uvloop";
+ version = "0.13.0";
+ disabled = isPy27;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0blcnrd5vky2k1m1p1skx4516dr1jx76yyb0c6fi82si6mqd0b4l";
+ };
+
+ patches = lib.optional stdenv.isDarwin ./darwin_sandbox.patch;
+
+ buildInputs = [
+ libuv
+ ] ++ lib.optionals stdenv.isDarwin [ CoreServices ApplicationServices ];
+
+ postPatch = ''
+ # Removing code linting tests, which we don't care about
+ rm tests/test_sourcecode.py
+ '';
+
+ checkInputs = [ pyopenssl psutil ];
+
+ # Some of the tests use localhost networking.
+ __darwinAllowLocalNetworking = true;
+
+ meta = with lib; {
+ description = "Fast implementation of asyncio event loop on top of libuv";
+ homepage = http://github.com/MagicStack/uvloop;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/validate-email/default.nix b/nixpkgs/pkgs/development/python-modules/validate-email/default.nix
new file mode 100644
index 00000000000..ea2c5a8db74
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/validate-email/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "validate-email";
+ version = "1.3";
+
+ src = fetchPypi {
+ inherit version;
+ pname = "validate_email";
+ sha256 = "1bxffaf5yz2cph8ki55vdvdypbwkvn2xr1firlcy62vqbzf1jivq";
+ };
+
+ # No tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/syrusakbary/validate_email";
+ description = "Verify if an email address is valid and really exists";
+ license = licenses.lgpl3Plus;
+ maintainers = [ maintainers.mmahut ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/validators/default.nix b/nixpkgs/pkgs/development/python-modules/validators/default.nix
new file mode 100644
index 00000000000..bbcca388c93
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/validators/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, six
+, decorator
+, pytest
+, isort
+, flake8
+}:
+
+buildPythonPackage rec {
+ pname = "validators";
+ version = "0.13.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ea9bf8bf22aa692c205e12830d90b3b93950e5122d22bed9eb2f2fece0bba298";
+ };
+
+ propagatedBuildInputs = [
+ six
+ decorator
+ ];
+
+ checkInputs = [
+ pytest
+ flake8
+ isort
+ ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with lib; {
+ description = "Python Data Validation for Humans™";
+ homepage = https://github.com/kvesteri/validators;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/validictory/default.nix b/nixpkgs/pkgs/development/python-modules/validictory/default.nix
new file mode 100644
index 00000000000..c27d13ab8f1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/validictory/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "validictory";
+ version = "1.1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1fim11vj990rmn59qd67knccjx1p4an7gavbgprpabsrb13bi1rs";
+ };
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Validate dicts against a schema";
+ homepage = https://github.com/sunlightlabs/validictory;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/vcrpy/default.nix b/nixpkgs/pkgs/development/python-modules/vcrpy/default.nix
new file mode 100644
index 00000000000..13f7753831b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/vcrpy/default.nix
@@ -0,0 +1,48 @@
+{ buildPythonPackage
+, lib
+, six
+, fetchPypi
+, pyyaml
+, mock
+, contextlib2
+, wrapt
+, pytest
+, pytest-httpbin
+, yarl
+, pythonOlder
+, pythonAtLeast
+}:
+
+buildPythonPackage rec {
+ pname = "vcrpy";
+ version = "2.0.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0kws7l3hci1dvjv01nxw3805q9v2mwldw58bgl8s90wqism69gjp";
+ };
+
+ 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/nixpkgs/pkgs/development/python-modules/vcversioner/default.nix b/nixpkgs/pkgs/development/python-modules/vcversioner/default.nix
new file mode 100644
index 00000000000..ffe184e263a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/vcversioner/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "vcversioner";
+ version = "2.16.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "16z10sm78jd7ca3jbkgc3q5i8a8q7y1h21q1li21yy3rlhbhrrns";
+ };
+
+ meta = with stdenv.lib; {
+ description = "take version numbers from version control";
+ homepage = https://github.com/habnabit/vcversioner;
+ license = licenses.isc;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/vdf/default.nix b/nixpkgs/pkgs/development/python-modules/vdf/default.nix
new file mode 100644
index 00000000000..2ce3e24f4cd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/vdf/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub
+, pytest, pytestcov, mock }:
+
+buildPythonPackage rec {
+ pname = "vdf";
+ version = "3.2";
+
+ src = fetchFromGitHub {
+ owner = "ValvePython";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "08rb982hcwc9pr9gl0zfk9266h84fwbz097qjfkss3srwghr1247";
+ };
+
+ checkInputs = [ pytest pytestcov mock ];
+ checkPhase = "make test";
+
+ meta = with stdenv.lib; {
+ description = "Library for working with Valve's VDF text format";
+ homepage = https://github.com/ValvePython/vdf;
+ license = licenses.mit;
+ maintainers = with maintainers; [ metadark ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/vega/default.nix b/nixpkgs/pkgs/development/python-modules/vega/default.nix
new file mode 100644
index 00000000000..f6a9f3153f1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/vega/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, buildPythonPackage , fetchPypi
+, pytest, jupyter_core, pandas }:
+
+buildPythonPackage rec {
+ pname = "vega";
+ version = "2.3.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0f39kfinn297gjhms9jys3ixdlsn0dz3gndgacyimp77jhzir4v1";
+ };
+
+ buildInputs = [ pytest ];
+ propagatedBuildInputs = [ jupyter_core pandas ];
+
+ meta = with stdenv.lib; {
+ description = "An IPython/Jupyter widget for Vega and Vega-Lite";
+ longDescription = ''
+ To use this you have to enter a nix-shell with vega. Then run:
+
+ jupyter nbextension install --user --py vega
+ jupyter nbextension enable --user vega
+ '';
+ homepage = https://github.com/vega/ipyvega;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ teh ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/vega_datasets/default.nix b/nixpkgs/pkgs/development/python-modules/vega_datasets/default.nix
new file mode 100644
index 00000000000..2d3dda551fb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/vega_datasets/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildPythonPackage, fetchPypi, pandas, pytest }:
+
+buildPythonPackage rec {
+ pname = "vega_datasets";
+ version = "0.7.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "20d490b417f84607eb5079400f608f2e9c135b7092bee10f6857f6d23136e459";
+ };
+
+ propagatedBuildInputs = [ pandas ];
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ py.test vega_datasets --doctest-modules -k 'not column_names'
+ '';
+
+ meta = with lib; {
+ description = "A Python package for offline access to vega datasets";
+ homepage = https://github.com/altair-viz/vega_datasets;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/venusian/default.nix b/nixpkgs/pkgs/development/python-modules/venusian/default.nix
new file mode 100644
index 00000000000..f420d88e816
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/venusian/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "venusian";
+ version = "1.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "64ec8285b80b110d0ae5db4280e90e31848a59db98db1aba4d7d46f48ce91e3e";
+ };
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A library for deferring decorator actions";
+ homepage = http://pylonsproject.org/;
+ license = licenses.bsd0;
+ maintainers = with maintainers; [ domenkozar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/verboselogs/default.nix b/nixpkgs/pkgs/development/python-modules/verboselogs/default.nix
new file mode 100644
index 00000000000..f4c78858913
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/verboselogs/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildPythonPackage, fetchFromGitHub, pytest, mock }:
+
+buildPythonPackage rec {
+ pname = "verboselogs";
+ version = "1.7";
+
+ src = fetchFromGitHub {
+ owner = "xolox";
+ repo = "python-verboselogs";
+ rev = version;
+ sha256 = "10jzm8pkl49as4y2zyiidmfqqj5zmqg3p73jvx4lfxi0gmp1vhl5";
+ };
+
+ # do not run pylint plugin test, as astroid is a old unsupported version
+ checkPhase = ''
+ PATH=$PATH:$out/bin pytest . -k "not test_pylint_plugin"
+ '';
+ checkInputs = [ pytest mock ];
+
+ meta = with lib; {
+ description = "Verbose logging for Python's logging module";
+ homepage = https://github.com/xolox/python-verboselogs;
+ license = licenses.mit;
+ maintainers = with maintainers; [ eyjhb ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/versioneer/default.nix b/nixpkgs/pkgs/development/python-modules/versioneer/default.nix
new file mode 100644
index 00000000000..a3328671417
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/versioneer/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+
+buildPythonPackage rec {
+
+ pname = "versioneer";
+ version = "0.18";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0dgkzg1r7mjg91xp81sv9z4mabyxl39pkd11jlc1200md20zglga";
+ };
+
+ # Couldn't get tests to work because, for instance, they used virtualenv and
+ # pip.
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Version-string management for VCS-controlled trees";
+ homepage = https://github.com/warner/python-versioneer;
+ license = licenses.publicDomain;
+ maintainers = with maintainers; [ jluttine ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/versiontools/default.nix b/nixpkgs/pkgs/development/python-modules/versiontools/default.nix
new file mode 100644
index 00000000000..e92dbae8138
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/versiontools/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "versiontools";
+ version = "1.9.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1xhl6kl7f4srgnw6zw4lr8j2z5vmrbaa83nzn2c9r2m1hwl36sd9";
+ };
+
+ doCheck = (!isPy3k);
+
+ meta = with stdenv.lib; {
+ homepage = https://launchpad.net/versiontools;
+ description = "Smart replacement for plain tuple used in __version__";
+ license = licenses.lgpl2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/veryprettytable/default.nix b/nixpkgs/pkgs/development/python-modules/veryprettytable/default.nix
new file mode 100644
index 00000000000..8d71e6331f5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/veryprettytable/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, termcolor
+, colorama
+}:
+
+buildPythonPackage rec {
+ pname = "veryprettytable";
+ version = "0.8.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1k1rifz8x6qcicmx2is9vgxcj0qb2f5pvzrp7zhmvbmci3yack3f";
+ };
+
+ propagatedBuildInputs = [ termcolor colorama ];
+
+ meta = with stdenv.lib; {
+ description = "A simple Python library for easily displaying tabular data in a visually appealing ASCII table format";
+ homepage = https://github.com/smeggingsmegger/VeryPrettyTable;
+ license = licenses.free;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/vidstab/default.nix b/nixpkgs/pkgs/development/python-modules/vidstab/default.nix
new file mode 100644
index 00000000000..7003b9e1b04
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/vidstab/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, numpy
+, pandas
+, imutils
+, progress
+, matplotlib
+, pytest
+}:
+
+buildPythonPackage rec {
+ version = "1.5.6";
+ pname = "vidstab";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6b488aed337855ac8b3730f7c6964c2ad41111a8f61ab0b457197696feefa593";
+ };
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ numpy pandas imutils progress matplotlib ];
+
+ # tests not packaged with pypi
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/AdamSpannbauer/python_video_stab;
+ description = "Video Stabilization using OpenCV";
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/vine/default.nix b/nixpkgs/pkgs/development/python-modules/vine/default.nix
new file mode 100644
index 00000000000..c3ee5237935
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/vine/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, case, pytest, pythonOlder }:
+
+buildPythonPackage rec {
+ pname = "vine";
+ version = "1.3.0";
+
+ disable = pythonOlder "2.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "133ee6d7a9016f177ddeaf191c1f58421a1dcc6ee9a42c58b34bed40e1d2cd87";
+ };
+
+ buildInputs = [ case pytest ];
+
+ meta = with stdenv.lib; {
+ description = "Python promises";
+ homepage = https://github.com/celery/vine;
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/virtkey/default.nix b/nixpkgs/pkgs/development/python-modules/virtkey/default.nix
new file mode 100644
index 00000000000..cf62704e8be
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/virtkey/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildPythonPackage, fetchurl, pkgconfig, gtk2, libX11, libXtst, libXi, libxkbfile, xorgproto }:
+
+let
+ majorVersion = "0.63";
+ minorVersion = "0";
+in buildPythonPackage rec {
+ pname = "virtkey";
+ version = "${majorVersion}.${minorVersion}";
+
+ src = fetchurl {
+ url = "https://launchpad.net/virtkey/${majorVersion}/${version}/+download/virtkey-${version}.tar.gz";
+ sha256 = "0hd99hrxn6bh3rxcrdnad5cqjsphrn1s6fzx91q07d44k6cg6qcr";
+ };
+
+ nativeBuildInputs = [ pkgconfig ];
+
+ buildInputs = [ gtk2 libX11 libXtst libXi libxkbfile xorgproto ];
+
+ meta = with lib; {
+ description = "Extension to emulate keypresses and to get the layout information from the X server";
+ homepage = https://launchpad.net/virtkey;
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ abbradar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/virtual-display/default.nix b/nixpkgs/pkgs/development/python-modules/virtual-display/default.nix
new file mode 100644
index 00000000000..130c94bc170
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/virtual-display/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildPythonPackage, fetchPypi, EasyProcess }:
+
+buildPythonPackage rec {
+ pname = "PyVirtualDisplay";
+ version = "0.2.4";
+
+ propagatedBuildInputs = [ EasyProcess ];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0nybvd7sajig6vya2v3fd20dls6f3nnf12x8anrfxnjs41chgx87";
+ };
+
+ # requires X server
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Python wrapper for Xvfb, Xephyr and Xvnc";
+ homepage = "https://github.com/ponty/pyvirtualdisplay";
+ license = licenses.bsdOriginal;
+ maintainers = with maintainers; [ layus ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/virtualenv-clone/default.nix b/nixpkgs/pkgs/development/python-modules/virtualenv-clone/default.nix
new file mode 100644
index 00000000000..b1ce764c4ac
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/virtualenv-clone/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, virtualenv
+}:
+
+buildPythonPackage rec {
+ pname = "virtualenv-clone";
+ version = "0.5.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c88ae171a11b087ea2513f260cdac9232461d8e9369bcd1dc143fc399d220557";
+ };
+
+ buildInputs = [ pytest ];
+ propagatedBuildInputs = [ virtualenv ];
+
+ # needs tox to run the tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/edwardgeorge/virtualenv-clone;
+ description = "Script to clone virtualenvs";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/virtualenv/default.nix b/nixpkgs/pkgs/development/python-modules/virtualenv/default.nix
new file mode 100644
index 00000000000..bad23341df7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/virtualenv/default.nix
@@ -0,0 +1,30 @@
+{ buildPythonPackage
+, fetchPypi
+, lib
+, recursivePthLoader
+}:
+
+buildPythonPackage rec {
+ pname = "virtualenv";
+ version = "16.4.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "984d7e607b0a5d1329425dd8845bd971b957424b5ba664729fab51ab8c11bc39";
+ };
+
+ # Doubt this is needed - FRidh 2017-07-07
+ pythonPath = [ recursivePthLoader ];
+
+ patches = [ ./virtualenv-change-prefix.patch ];
+
+ # Tarball doesn't contain tests
+ doCheck = false;
+
+ meta = {
+ description = "A tool to create isolated Python environments";
+ homepage = http://www.virtualenv.org;
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ goibhniu ];
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/virtualenv/virtualenv-change-prefix.patch b/nixpkgs/pkgs/development/python-modules/virtualenv/virtualenv-change-prefix.patch
new file mode 100644
index 00000000000..4378e00bb1f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/virtualenv/virtualenv-change-prefix.patch
@@ -0,0 +1,62 @@
+Without this patch `virtualenv --python=python2.7 .` fails with an
+error because it notices that the python readline.so is not in the
+same path as python2.7. I assume this is to avoid copying the wrong
+file on systems where it is possible to find incompatible libraries by
+accident. Adding "/nix/store" to the prefix fixes this problem.
+
+A sitecustomize.py is created in the virtualenv which makes libraries
+from the python specified by the --python argument available to the
+virtualenv. For example, this makes readline and sqlite3 available
+when a wrapped python is specified. If no --python argument is passed,
+it will only add the path to the python used when building
+`virtualenv`, which is the unwrapped python, so sqlite3 won't be
+available.
+
+
+diff --git a/virtualenv.py b/virtualenv.py
+index bcf3225..3530997 100755
+--- a/virtualenv.py
++++ b/virtualenv.py
+@@ -1163,20 +1163,7 @@ def path_locations(home_dir, dry_run=False):
+
+
+ def change_prefix(filename, dst_prefix):
+- prefixes = [sys.prefix]
+-
+- if IS_DARWIN:
+- prefixes.extend(
+- (
+- os.path.join("/Library/Python", sys.version[:3], "site-packages"),
+- os.path.join(sys.prefix, "Extras", "lib", "python"),
+- os.path.join("~", "Library", "Python", sys.version[:3], "site-packages"),
+- # Python 2.6 no-frameworks
+- os.path.join("~", ".local", "lib", "python", sys.version[:3], "site-packages"),
+- # System Python 2.7 on OSX Mountain Lion
+- os.path.join("~", "Library", "Python", sys.version[:3], "lib", "python", "site-packages"),
+- )
+- )
++ prefixes = ["/nix/store", sys.prefix]
+
+ if hasattr(sys, "real_prefix"):
+ prefixes.append(sys.real_prefix)
+@@ -1199,6 +1186,8 @@ def change_prefix(filename, dst_prefix):
+ if src_prefix != os.sep: # sys.prefix == "/"
+ assert relative_path[0] == os.sep
+ relative_path = relative_path[1:]
++ if src_prefix == "/nix/store":
++ relative_path = "/".join(relative_path.split("/")[1:])
+ return join(dst_prefix, relative_path)
+ assert False, "Filename {} does not start with any of these prefixes: {}".format(filename, prefixes)
+
+@@ -1375,6 +1364,11 @@ def install_python(home_dir, lib_dir, inc_dir, bin_dir, site_packages, clear, sy
+ site_filename_dst = change_prefix(site_filename, home_dir)
+ site_dir = os.path.dirname(site_filename_dst)
+ writefile(site_filename_dst, SITE_PY)
++ wrapper_path = join(prefix, "lib", PY_VERSION, "site-packages")
++ writefile(
++ join(site_dir, 'sitecustomize.py',),
++ "import sys; sys.path.append('%s')" % wrapper_path
++ )
+ writefile(join(site_dir, "orig-prefix.txt"), prefix)
+ site_packages_filename = join(site_dir, "no-global-site-packages.txt")
+ if not site_packages:
diff --git a/nixpkgs/pkgs/development/python-modules/virtualenvwrapper/default.nix b/nixpkgs/pkgs/development/python-modules/virtualenvwrapper/default.nix
new file mode 100644
index 00000000000..19ec56a1ece
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/virtualenvwrapper/default.nix
@@ -0,0 +1,75 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pbr
+, pip
+, pkgs
+, stevedore
+, virtualenv
+, virtualenv-clone
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "virtualenvwrapper";
+ version = "4.8.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "51a1a934e7ed0ff221bdd91bf9d3b604d875afbb3aa2367133503fee168f5bfa";
+ };
+
+ # pip depend on $HOME setting
+ preConfigure = "export HOME=$TMPDIR";
+
+ buildInputs = [ pbr pip pkgs.which ];
+ propagatedBuildInputs = [ stevedore virtualenv virtualenv-clone ];
+
+ postPatch = ''
+ for file in "virtualenvwrapper.sh" "virtualenvwrapper_lazy.sh"; do
+ substituteInPlace "$file" --replace "which" "${pkgs.which}/bin/which"
+
+ # We can't set PYTHONPATH in a normal way (like exporting in a wrapper
+ # script) because the user has to evaluate the script and we don't want
+ # modify the global PYTHONPATH which would affect the user's
+ # environment.
+ # Furthermore it isn't possible to just use VIRTUALENVWRAPPER_PYTHON
+ # for this workaround, because this variable is well quoted inside the
+ # shell script.
+ # (the trailing " -" is required to only replace things like these one:
+ # "$VIRTUALENVWRAPPER_PYTHON" -c "import os,[...] and not in
+ # if-statements or anything like that.
+ # ...and yes, this "patch" is hacky :)
+ substituteInPlace "$file" --replace '"$VIRTUALENVWRAPPER_PYTHON" -' 'env PYTHONPATH="$VIRTUALENVWRAPPER_PYTHONPATH" "$VIRTUALENVWRAPPER_PYTHON" -'
+ done
+ '';
+
+ postInstall = ''
+ # This might look like a dirty hack but we can't use the makeWrapper function because
+ # the wrapped file were then called via "exec". The virtualenvwrapper shell scripts
+ # aren't normal executables. Instead, the user has to evaluate them.
+
+ for file in "virtualenvwrapper.sh" "virtualenvwrapper_lazy.sh"; do
+ local wrapper="$out/bin/$file"
+ local wrapped="$out/bin/.$file-wrapped"
+ mv "$wrapper" "$wrapped"
+
+ # WARNING: Don't indent the lines below because that would break EOF
+ cat > "$wrapper" << EOF
+export PATH="${python}/bin:\$PATH"
+export VIRTUALENVWRAPPER_PYTHONPATH="$PYTHONPATH:$(toPythonPath $out)"
+source "$wrapped"
+EOF
+
+ chmod -x "$wrapped"
+ chmod +x "$wrapper"
+ done
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Enhancements to virtualenv";
+ homepage = "https://pypi.python.org/pypi/virtualenvwrapper";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/visitor/default.nix b/nixpkgs/pkgs/development/python-modules/visitor/default.nix
new file mode 100644
index 00000000000..78dc29bbeb0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/visitor/default.nix
@@ -0,0 +1,18 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "visitor";
+ version = "0.1.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "02j87v93c50gz68gbgclmbqjcwcr7g7zgvk7c6y4x1mnn81pjwrc";
+ };
+
+ meta = with lib; {
+ homepage = https://github.com/mbr/visitor;
+ description = "A tiny pythonic visitor implementation";
+ license = licenses.mit;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/vmprof/default.nix b/nixpkgs/pkgs/development/python-modules/vmprof/default.nix
new file mode 100644
index 00000000000..25cd5b9a90d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/vmprof/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, requests
+, six
+}:
+
+buildPythonPackage rec {
+ version = "0.4.13";
+ pname = "vmprof";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b6121f3d989fe48c2fb7242acded5f1e2e86d25d05d73c41257f236fd9badb2c";
+ };
+
+ propagatedBuildInputs = [ requests six];
+
+ # No tests included
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A vmprof client";
+ license = licenses.mit;
+ homepage = https://vmprof.readthedocs.org/;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/vobject/default.nix b/nixpkgs/pkgs/development/python-modules/vobject/default.nix
new file mode 100644
index 00000000000..95cf6efaa46
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/vobject/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildPythonPackage, fetchPypi, isPyPy, python, dateutil }:
+
+buildPythonPackage rec {
+ version = "0.9.6.1";
+ pname = "vobject";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "96512aec74b90abb71f6b53898dd7fe47300cc940104c4f79148f0671f790101";
+ };
+
+ disabled = isPyPy;
+
+ propagatedBuildInputs = [ dateutil ];
+
+ checkPhase = "${python.interpreter} tests.py";
+
+ meta = with lib; {
+ description = "Module for reading vCard and vCalendar files";
+ homepage = http://eventable.github.io/vobject/;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/voluptuous-serialize/default.nix b/nixpkgs/pkgs/development/python-modules/voluptuous-serialize/default.nix
new file mode 100644
index 00000000000..4c550e073c3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/voluptuous-serialize/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, buildPythonPackage, isPy3k, fetchPypi, voluptuous, pytest }:
+
+buildPythonPackage rec {
+ pname = "voluptuous-serialize";
+ version = "2.2.0";
+
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0ggiisrq7cbk307d09fdwfdcjb667jv90lx6gfwhxfpxgq66cccb";
+ };
+
+ propagatedBuildInputs = [
+ voluptuous
+ ];
+
+ checkInputs = [
+ pytest
+ ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ # no tests in PyPI tarball
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/balloob/voluptuous-serialize;
+ license = licenses.asl20;
+ description = "Convert Voluptuous schemas to dictionaries so they can be serialized";
+ maintainers = with maintainers; [ etu ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/voluptuous/default.nix b/nixpkgs/pkgs/development/python-modules/voluptuous/default.nix
new file mode 100644
index 00000000000..70512edf400
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/voluptuous/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi, nose }:
+
+buildPythonPackage rec {
+ pname = "voluptuous";
+ version = "0.11.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0mplkcpb5d8wjf8vk195fys4y6a3wbibiyf708imw33lphfk9g1a";
+ };
+
+ checkInputs = [ nose ];
+
+ meta = with stdenv.lib; {
+ description = "Voluptuous is a Python data validation library";
+ homepage = http://alecthomas.github.io/voluptuous/;
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/vowpalwabbit/default.nix b/nixpkgs/pkgs/development/python-modules/vowpalwabbit/default.nix
new file mode 100644
index 00000000000..a91de2d7eee
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/vowpalwabbit/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, lib, buildPythonPackage, fetchPypi, python, zlib, clang
+, ncurses, pytest, docutils, pygments, numpy, scipy, scikitlearn }:
+
+buildPythonPackage rec {
+ pname = "vowpalwabbit";
+ version = "8.5.0";
+
+ src = fetchPypi{
+ inherit pname version;
+ sha256 = "0b517371fc64f1c728a0af42a31fa93def27306e9b4d25d6e5fd01bcff1b7304";
+ };
+
+ # Should be fixed in next Python release after 8.5.0:
+ # https://github.com/JohnLangford/vowpal_wabbit/pull/1533
+ patches = [
+ ./vowpal-wabbit-find-boost.diff
+ ];
+
+ # vw tries to write some explicit things to home
+ # python installed: The directory '/homeless-shelter/.cache/pip/http'
+ preInstall = ''
+ export HOME=$PWD
+ '';
+
+ nativeBuildInputs = [ clang ];
+ buildInputs = [ python.pkgs.boost zlib.dev ncurses pytest docutils pygments ];
+ propagatedBuildInputs = [ numpy scipy scikitlearn ];
+
+ # Python ctypes.find_library uses DYLD_LIBRARY_PATH.
+ preConfigure = lib.optionalString stdenv.isDarwin ''
+ export DYLD_LIBRARY_PATH="${python.pkgs.boost}/lib"
+ '';
+
+ checkPhase = ''
+ # check-manifest requires a git clone, not a tarball
+ # check-manifest --ignore "Makefile,PACKAGE.rst,*.cc,tox.ini,tests*,examples*,src*"
+ ${python.interpreter} setup.py check -mrs
+ '';
+
+ meta = with lib; {
+ description = "Vowpal Wabbit is a fast machine learning library for online learning, and this is the python wrapper for the project.";
+ homepage = https://github.com/JohnLangford/vowpal_wabbit;
+ license = licenses.bsd3;
+ broken = stdenv.isAarch64;
+ maintainers = with maintainers; [ teh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/vowpalwabbit/vowpal-wabbit-find-boost.diff b/nixpkgs/pkgs/development/python-modules/vowpalwabbit/vowpal-wabbit-find-boost.diff
new file mode 100644
index 00000000000..645956594bf
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/vowpalwabbit/vowpal-wabbit-find-boost.diff
@@ -0,0 +1,34 @@
+--- vowpalwabbit-8.5.0.orig/setup.py 2018-09-03 20:32:39.000000000 +0200
++++ vowpalwabbit-8.5.0/setup.py 2018-09-03 20:34:09.000000000 +0200
+@@ -23,18 +23,11 @@
+
+ def find_boost():
+ """Find correct boost-python library information """
+- if system == 'Linux':
++ if system == 'Linux' or system == 'Darwin':
+ # use version suffix if present
+- boost_lib = 'boost_python-py{v[0]}{v[1]}'.format(v=sys.version_info)
+- if sys.version_info.major == 3:
+- for candidate in ['-py36', '-py35', '-py34', '3']:
+- boost_lib = 'boost_python{}'.format(candidate)
+- if find_library(boost_lib):
+- exit
++ boost_lib = 'boost_python{v[0]}{v[1]}'.format(v=sys.version_info)
+ if not find_library(boost_lib):
+ boost_lib = "boost_python"
+- elif system == 'Darwin':
+- boost_lib = 'boost_python-mt' if sys.version_info[0] == 2 else 'boost_python3-mt'
+ elif system == 'Cygwin':
+ boost_lib = 'boost_python-mt' if sys.version_info[0] == 2 else 'boost_python3-mt'
+ else:
+--- vowpalwabbit-8.5.0.orig/src/Makefile 2018-09-03 20:32:40.000000000 +0200
++++ vowpalwabbit-8.5.0/src/Makefile 2018-09-03 21:42:30.000000000 +0200
+@@ -37,7 +37,7 @@
+ NPROCS:=$(shell grep -c ^processor /proc/cpuinfo)
+ endif
+ ifeq ($(UNAME), Darwin)
+- LIBS = -lboost_program_options-mt -lboost_serialization-mt -l pthread -l z
++ LIBS = -lboost_program_options -lboost_serialization -l pthread -l z
+ # On Macs, the location isn't always clear
+ # brew uses /usr/local
+ # but /opt/local seems to be preferred by some users
diff --git a/nixpkgs/pkgs/development/python-modules/vsts/default.nix b/nixpkgs/pkgs/development/python-modules/vsts/default.nix
new file mode 100644
index 00000000000..0f49ffd05c6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/vsts/default.nix
@@ -0,0 +1,30 @@
+{ buildPythonPackage
+, lib
+, python
+, fetchPypi
+, msrest
+}:
+
+buildPythonPackage rec {
+ version = "0.1.25";
+ pname = "vsts";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "15sgwqa72ynpahj101r2kc15s3dnsafg5gqx0sz3hnqz29h925ys";
+ };
+
+ propagatedBuildInputs = [ msrest ];
+
+ # Tests are highly impure
+ checkPhase = ''
+ ${python.interpreter} -c 'import vsts.version; print(vsts.version.VERSION)'
+ '';
+
+ meta = with lib; {
+ description = "Python APIs for interacting with and managing Azure DevOps";
+ homepage = https://github.com/microsoft/azure-devops-python-api;
+ license = licenses.mit;
+ maintainers = with maintainers; [ jonringer ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/vultr/default.nix b/nixpkgs/pkgs/development/python-modules/vultr/default.nix
new file mode 100644
index 00000000000..236e4121cf8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/vultr/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, requests
+}:
+
+buildPythonPackage rec {
+ version = "0.1.2";
+ pname = "vultr";
+
+ src = fetchFromGitHub {
+ owner = "spry-group";
+ repo = "python-vultr";
+ rev = version;
+ sha256 = "1qjvvr2v9gfnwskdl0ayazpcmiyw9zlgnijnhgq9mcri5gq9jw5h";
+ };
+
+ propagatedBuildInputs = [ requests ];
+
+ # Tests disabled. They fail because they try to access the network
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Vultr.com API Client";
+ homepage = "https://github.com/spry-group/python-vultr";
+ license = licenses.mit;
+ maintainers = with maintainers; [ lihop ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/vxi11/default.nix b/nixpkgs/pkgs/development/python-modules/vxi11/default.nix
new file mode 100644
index 00000000000..7bae1e9860b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/vxi11/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, nose }:
+
+buildPythonPackage rec {
+ pname = "python-vxi11";
+ version = "0.9";
+
+ # no tests in PyPI tarball
+ src = fetchFromGitHub {
+ owner = "python-ivi";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "1xv7chp7rm0vrvbz6q57fpwhlgjz461h08q9zgmkcl2l0w96hmsn";
+ };
+
+ checkInputs = [ nose ];
+ checkPhase = ''
+ nosetests
+ '';
+
+ meta = with stdenv.lib; {
+ description = "VXI-11 driver for controlling instruments over Ethernet";
+ homepage = https://github.com/python-ivi/python-vxi11;
+ license = licenses.mit;
+ maintainers = with maintainers; [ bgamari ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/w3lib/default.nix b/nixpkgs/pkgs/development/python-modules/w3lib/default.nix
new file mode 100644
index 00000000000..c0d2d744f09
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/w3lib/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "w3lib";
+ version = "1.21.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "05a3fxi4f43n0dc87lizsy2h84dxvqjy0q6rhkyabdbhypz5864b";
+ };
+
+ buildInputs = [ six pytest ];
+
+ meta = with stdenv.lib; {
+ description = "A library of web-related functions";
+ homepage = "https://github.com/scrapy/w3lib";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ drewkett ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/waitress-django/default.nix b/nixpkgs/pkgs/development/python-modules/waitress-django/default.nix
new file mode 100644
index 00000000000..6b3ca778ead
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/waitress-django/default.nix
@@ -0,0 +1,11 @@
+{ buildPythonPackage, django_1_8, waitress }:
+
+buildPythonPackage {
+ pname = "waitress-django";
+ version = "0.0.0";
+
+ src = ./.;
+ pythonPath = [ django_1_8 waitress ];
+ doCheck = false;
+ meta.description = "A waitress WSGI server serving django";
+}
diff --git a/nixpkgs/pkgs/development/python-modules/waitress-django/setup.py b/nixpkgs/pkgs/development/python-modules/waitress-django/setup.py
new file mode 100644
index 00000000000..07f7b326fda
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/waitress-django/setup.py
@@ -0,0 +1,12 @@
+#!/usr/bin/env python
+
+from distutils.core import setup
+
+setup( name = "waitress-django"
+ , version = "0.0.0"
+ , description = "A waitress WSGI server serving django"
+ , author = "Bas van Dijk"
+ , author_email = "v.dijk.bas@gmail.com"
+ , package_dir = {"" : "src"}
+ , scripts = ["src/waitress-serve-django"]
+ )
diff --git a/nixpkgs/pkgs/development/python-modules/waitress-django/src/waitress-serve-django b/nixpkgs/pkgs/development/python-modules/waitress-django/src/waitress-serve-django
new file mode 100755
index 00000000000..b710086c22b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/waitress-django/src/waitress-serve-django
@@ -0,0 +1,14 @@
+#!/usr/bin/env python
+import sys
+from waitress import serve
+from waitress.adjustments import Adjustments
+import django
+from django.core.handlers.wsgi import WSGIHandler
+from django.contrib.staticfiles.handlers import StaticFilesHandler
+
+if __name__ == "__main__":
+ kw, args = Adjustments.parse_args(sys.argv[1:])
+ django.setup()
+ # These arguments are specific to the runner, not waitress itself.
+ del kw['call'], kw['help']
+ serve(StaticFilesHandler(WSGIHandler()), **kw)
diff --git a/nixpkgs/pkgs/development/python-modules/waitress/default.nix b/nixpkgs/pkgs/development/python-modules/waitress/default.nix
new file mode 100644
index 00000000000..fb39ae9fc7a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/waitress/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "waitress";
+ version = "1.2.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c369e238bd81ef7d61f04825f06f107c42094de60d13d8de8e71952c7c683dfe";
+ };
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/Pylons/waitress;
+ description = "Waitress WSGI server";
+ license = licenses.zpl20;
+ maintainers = with maintainers; [ domenkozar ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/wakeonlan/default.nix b/nixpkgs/pkgs/development/python-modules/wakeonlan/default.nix
new file mode 100644
index 00000000000..b5c9e14da35
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/wakeonlan/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchPypi, buildPythonPackage, setuptools_scm, pytest, mock }:
+
+buildPythonPackage rec {
+ pname = "wakeonlan";
+ version = "1.1.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5e6013a17004809e676c150689abd94bcc0f12a37ad3fbce1f6270968f95ffa9";
+ };
+
+ postPatch = ''
+ substituteInPlace setup.py \
+ --replace "setuptools-scm ~= 1.15.7" "setuptools-scm"
+ '';
+
+ checkInputs = [ pytest mock ];
+
+ nativeBuildInputs = [ setuptools_scm ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A small python module for wake on lan";
+ homepage = https://github.com/remcohaszing/pywakeonlan;
+ license = licenses.wtfpl;
+ maintainers = with maintainers; [ peterhoeg ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/warlock/default.nix b/nixpkgs/pkgs/development/python-modules/warlock/default.nix
new file mode 100644
index 00000000000..bc298b2794d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/warlock/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+, jsonpatch
+, jsonschema
+, jsonpointer
+}:
+
+buildPythonPackage rec {
+ pname = "warlock";
+ version = "1.3.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a093c4d04b42b7907f69086e476a766b7639dca50d95edc83aef6aeab9db2090";
+ };
+
+ propagatedBuildInputs = [ six jsonpatch jsonschema jsonpointer ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/bcwaldon/warlock;
+ description = "Python object model built on JSON schema and JSON patch";
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/warrant/default.nix b/nixpkgs/pkgs/development/python-modules/warrant/default.nix
new file mode 100644
index 00000000000..7cf69fdb614
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/warrant/default.nix
@@ -0,0 +1,44 @@
+{ lib, buildPythonPackage, fetchFromGitHub, fetchpatch
+, mock
+, boto3, envs, python-jose, requests }:
+
+buildPythonPackage {
+ pname = "warrant";
+ version = "0.6.1";
+
+ # move to fetchPyPi when https://github.com/capless/warrant/issues/97 is fixed
+ src = fetchFromGitHub {
+ owner = "capless";
+ repo = "warrant";
+ rev = "ff2e4793d8479e770f2461ef7cbc0c15ee784395";
+ sha256 = "0gw3crg64p1zx3k5js0wh0x5bldgs7viy4g8hld9xbka8q0374hi";
+ };
+
+ patches = [
+ (fetchpatch {
+ name = "fix-pip10-compat.patch";
+ url = " https://github.com/capless/warrant/commit/ae17d17d9888b9218a8facf6f6ad0bf4adae9a12.patch";
+ sha256 = "1lvqi2qfa3kxdz05ab2lc7xnd3piyvvnz9kla2jl4pchi876z17c";
+ })
+ ];
+
+ # this needs to go when 0.6.2 or later is released
+ postPatch = ''
+ substituteInPlace requirements.txt \
+ --replace "python-jose-cryptodome>=1.3.2" "python-jose>=2.0.0"
+ '';
+
+ checkInputs = [ mock ];
+
+ propagatedBuildInputs = [ boto3 envs python-jose requests ];
+
+ # all the checks are failing
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Python library for using AWS Cognito with support for SRP";
+ homepage = https://github.com/capless/warrant;
+ license = lib.licenses.asl20;
+ maintainers = with lib.maintainers; [ peterhoeg ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/wasabi/default.nix b/nixpkgs/pkgs/development/python-modules/wasabi/default.nix
new file mode 100644
index 00000000000..01a9a4034d5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/wasabi/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "wasabi";
+ version = "0.2.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0xxjc9bvvcaz1qq1jyhcxyl2v39jz8d8dz4zhpfbc7dz53kq6b7r";
+ };
+
+ checkInputs = [
+ pytest
+ ];
+
+ checkPhase = ''
+ pytest wasabi/tests
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A lightweight console printing and formatting toolkit";
+ homepage = https://github.com/ines/wasabi;
+ license = licenses.mit;
+ maintainers = with maintainers; [ danieldk ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/watchdog/default.nix b/nixpkgs/pkgs/development/python-modules/watchdog/default.nix
new file mode 100644
index 00000000000..361baea4916
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/watchdog/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, argh
+, pathtools
+, pyyaml
+, pkgs
+}:
+
+buildPythonPackage rec {
+ pname = "watchdog";
+ version = "0.9.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "965f658d0732de3188211932aeb0bb457587f04f63ab4c1e33eab878e9de961d";
+ };
+
+ buildInputs = stdenv.lib.optionals stdenv.isDarwin
+ [ pkgs.darwin.apple_sdk.frameworks.CoreServices ];
+ propagatedBuildInputs = [ argh pathtools pyyaml ];
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Python API and shell utilities to monitor file system events";
+ homepage = https://github.com/gorakhargosh/watchdog;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ goibhniu ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/wcwidth/default.nix b/nixpkgs/pkgs/development/python-modules/wcwidth/default.nix
new file mode 100644
index 00000000000..39ce62ca47c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/wcwidth/default.nix
@@ -0,0 +1,32 @@
+{ lib, fetchPypi, buildPythonPackage, pytest }:
+
+buildPythonPackage rec {
+ pname = "wcwidth";
+ version = "0.1.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0pn6dflzm609m4r3i8ik5ni9ijjbb5fa3vg1n7hn6vkd49r77wrx";
+ };
+
+ checkInputs = [ pytest ];
+
+ # To prevent infinite recursion with pytest
+ doCheck = false;
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with lib; {
+ description = "Measures number of Terminal column cells of wide-character codes";
+ longDescription = ''
+ This API is mainly for Terminal Emulator implementors -- any Python
+ program that attempts to determine the printable width of a string on
+ a Terminal. It is implemented in python (no C library calls) and has
+ no 3rd-party dependencies.
+ '';
+ homepage = https://github.com/jquast/wcwidth;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/weasyprint/default.nix b/nixpkgs/pkgs/development/python-modules/weasyprint/default.nix
new file mode 100644
index 00000000000..7dc09d58aad
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/weasyprint/default.nix
@@ -0,0 +1,67 @@
+{ buildPythonPackage,
+ fetchPypi,
+ cairosvg,
+ pyphen,
+ cffi,
+ cssselect,
+ lxml,
+ html5lib,
+ tinycss,
+ pygobject2,
+ glib,
+ pango,
+ fontconfig,
+ stdenv,
+ pytest,
+ pytestrunner,
+ pytest-isort,
+ pytest-flake8,
+ pytestcov,
+ isPy3k,
+ substituteAll
+}:
+
+buildPythonPackage rec {
+ pname = "weasyprint";
+ version = "47";
+ disabled = !isPy3k;
+
+ # ignore failing pytest
+ checkPhase = "pytest -k 'not test_font_stretch'";
+
+ # ignore failing flake8-test
+ prePatch = ''
+ substituteInPlace setup.cfg \
+ --replace '[tool:pytest]' '[tool:pytest]\nflake8-ignore = E501'
+ '';
+
+ checkInputs = [ pytest pytestrunner pytest-isort pytest-flake8 pytestcov ];
+
+ FONTCONFIG_FILE = "${fontconfig.out}/etc/fonts/fonts.conf";
+
+ propagatedBuildInputs = [ cairosvg pyphen cffi cssselect lxml html5lib tinycss pygobject2 ];
+
+ 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}";
+ })
+ ];
+
+ src = fetchPypi {
+ inherit version;
+ pname = "WeasyPrint";
+ sha256 = "0hd1zwrkfnj7g0jaaf6jvarlj6l5imar6ar78zxdgv17a3s3k3dg";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = https://weasyprint.org/;
+ description = "Converts web documents to PDF";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ elohmeier ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/weasyprint/library-paths.patch b/nixpkgs/pkgs/development/python-modules/weasyprint/library-paths.patch
new file mode 100644
index 00000000000..eabbdbdcd6e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/weasyprint/library-paths.patch
@@ -0,0 +1,38 @@
+diff --git a/weasyprint/fonts.py b/weasyprint/fonts.py
+index 377716c1..2016e01c 100644
+--- a/weasyprint/fonts.py
++++ b/weasyprint/fonts.py
+@@ -48,11 +48,8 @@ else:
+ # with OSError: dlopen() failed to load a library: cairo / cairo-2
+ # So let's hope we find the same file as cairo already did ;)
+ # Same applies to pangocairo requiring pangoft2
+- fontconfig = dlopen(ffi, 'fontconfig', 'libfontconfig',
+- 'libfontconfig-1.dll',
+- 'libfontconfig.so.1', 'libfontconfig-1.dylib')
+- pangoft2 = dlopen(ffi, 'pangoft2-1.0', 'libpangoft2-1.0-0',
+- 'libpangoft2-1.0.so', 'libpangoft2-1.0.dylib')
++ fontconfig = dlopen(ffi, '@fontconfig@')
++ pangoft2 = dlopen(ffi, '@pangoft2@')
+
+ ffi.cdef('''
+ // FontConfig
+diff --git a/weasyprint/text.py b/weasyprint/text.py
+index 035074e9..08e40395 100644
+--- a/weasyprint/text.py
++++ b/weasyprint/text.py
+@@ -243,12 +243,9 @@ def dlopen(ffi, *names):
+ return ffi.dlopen(names[0]) # pragma: no cover
+
+
+-gobject = dlopen(ffi, 'gobject-2.0', 'libgobject-2.0-0', 'libgobject-2.0.so',
+- 'libgobject-2.0.dylib')
+-pango = dlopen(ffi, 'pango-1.0', 'libpango-1.0-0', 'libpango-1.0.so',
+- 'libpango-1.0.dylib')
+-pangocairo = dlopen(ffi, 'pangocairo-1.0', 'libpangocairo-1.0-0',
+- 'libpangocairo-1.0.so', 'libpangocairo-1.0.dylib')
++gobject = dlopen(ffi, '@gobject@')
++pango = dlopen(ffi, '@pango@')
++pangocairo = dlopen(ffi, '@pangocairo@')
+
+ gobject.g_type_init()
+
diff --git a/nixpkgs/pkgs/development/python-modules/web/default.nix b/nixpkgs/pkgs/development/python-modules/web/default.nix
new file mode 100644
index 00000000000..fb777ad4129
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/web/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ version = "0.39";
+ pname = "web.py";
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "7e7224493a51f6fbf02f3ce7f2011bcd9e5ebdfce0ee25e5921fdf665ba07542";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Makes web apps";
+ longDescription = ''
+ Think about the ideal way to write a web app.
+ Write the code to make it happen.
+ '';
+ homepage = "http://webpy.org/";
+ license = licenses.publicDomain;
+ maintainers = with maintainers; [ layus ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/webapp2/default.nix b/nixpkgs/pkgs/development/python-modules/webapp2/default.nix
new file mode 100644
index 00000000000..584440eab6a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/webapp2/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, webob
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "webapp2";
+ version = "2.5.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "997db622a266bd64eb7fcc9cfe823efb69277544aa92064030c16acbfb2733a5";
+ };
+
+ # # error in tests when running with python 3+
+ doCheck = false;
+
+ propagatedBuildInputs = [ webob six ];
+
+ meta = with stdenv.lib; {
+ description = "Taking Google App Engine's webapp to the next level";
+ homepage = http://webapp-improved.appspot.com;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/webassets/default.nix b/nixpkgs/pkgs/development/python-modules/webassets/default.nix
new file mode 100644
index 00000000000..a8a4e474f53
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/webassets/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildPythonPackage, fetchPypi, pyyaml, nose, jinja2, mock, pytest }:
+
+buildPythonPackage rec {
+ pname = "webassets";
+ version = "0.12.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1nrqkpb7z46h2b77xafxihqv3322cwqv6293ngaky4j3ff4cing7";
+ };
+
+ propagatedBuildInputs = [ pyyaml ];
+ checkInputs = [ nose jinja2 mock pytest ];
+
+ # Needs Babel CLI tool
+ doCheck = false;
+ checkPhase = "py.test";
+
+ meta = with lib; {
+ description = "Media asset management for Python, with glue code for various web frameworks";
+ homepage = https://github.com/miracle2k/webassets/;
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ abbradar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/webcolors/default.nix b/nixpkgs/pkgs/development/python-modules/webcolors/default.nix
new file mode 100644
index 00000000000..d530eda39d9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/webcolors/default.nix
@@ -0,0 +1,25 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "webcolors";
+ version = "1.8.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "030562f624467a9901f0b455fef05486a88cfb5daa1e356bd4aacea043850b59";
+ };
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest discover -s tests
+ '';
+
+ meta = {
+ description = "Library for working with color names/values defined by the HTML and CSS specifications";
+ homepage = https://bitbucket.org/ubernostrum/webcolors/overview/;
+ license = lib.licenses.bsd3;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/webencodings/default.nix b/nixpkgs/pkgs/development/python-modules/webencodings/default.nix
new file mode 100644
index 00000000000..c4ab0dd59ca
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/webencodings/default.nix
@@ -0,0 +1,27 @@
+{ buildPythonPackage
+, lib
+, fetchPypi
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "webencodings";
+ version = "0.5.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923";
+ };
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ py.test webencodings/tests.py
+ '';
+
+ meta = {
+ description = "Character encoding aliases for legacy web content";
+ homepage = https://github.com/SimonSapin/python-webencodings;
+ license = lib.licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/webhelpers/default.nix b/nixpkgs/pkgs/development/python-modules/webhelpers/default.nix
new file mode 100644
index 00000000000..37f9735f47c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/webhelpers/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, routes
+, markupsafe
+, webob
+, nose
+}:
+
+buildPythonPackage rec {
+ pname = "WebHelpers";
+ version = "1.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ea86f284e929366b77424ba9a89341f43ae8dee3cbeb8702f73bcf86058aa583";
+ };
+
+ buildInputs = [ routes markupsafe webob nose ];
+
+ # TODO: failing tests https://bitbucket.org/bbangert/webhelpers/pull-request/1/fix-error-on-webob-123/diff
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://webhelpers.readthedocs.org/en/latest/;
+ description = "Web Helpers";
+ license = licenses.free;
+ maintainers = with maintainers; [ domenkozar ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/webob/default.nix b/nixpkgs/pkgs/development/python-modules/webob/default.nix
new file mode 100644
index 00000000000..bd2e0574a47
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/webob/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "WebOb";
+ version = "1.8.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "05aaab7975e0ee8af2026325d656e5ce14a71f1883c52276181821d6d5bf7086";
+ };
+
+ propagatedBuildInputs = [ nose pytest ];
+
+ meta = with stdenv.lib; {
+ description = "WSGI request and response object";
+ homepage = http://pythonpaste.org/webob/;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/weboob/default.nix b/nixpkgs/pkgs/development/python-modules/weboob/default.nix
new file mode 100644
index 00000000000..d78cb7f3de9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/weboob/default.nix
@@ -0,0 +1,53 @@
+{ buildPythonPackage, fetchurl, stdenv, isPy27
+, nose, pillow, prettytable, pyyaml, dateutil, gdata
+, requests, mechanize, feedparser, lxml, gnupg, pyqt5
+, libyaml, simplejson, cssselect, futures, pdfminer
+, termcolor, google_api_python_client, html2text
+, unidecode
+}:
+
+buildPythonPackage rec {
+ pname = "weboob";
+ version = "1.3";
+ disabled = ! isPy27;
+
+ src = fetchurl {
+ url = "https://symlink.me/attachments/download/356/${pname}-${version}.tar.gz";
+ sha256 = "0m5yh49lplvb57dfilczh65ky35fshp3g7ni31pwfxwqi1f7i4f9";
+ };
+
+ 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
+ '';
+
+ setupPyBuildFlags = ["--qt" "--xdg"];
+
+ checkInputs = [ nose ];
+
+ nativeBuildInputs = [ pyqt5 ];
+
+ propagatedBuildInputs = [ pillow prettytable pyyaml dateutil
+ gdata requests mechanize feedparser lxml gnupg pyqt5 libyaml
+ simplejson cssselect futures pdfminer termcolor
+ google_api_python_client html2text unidecode ];
+
+ checkPhase = ''
+ nosetests
+ '';
+
+ meta = {
+ homepage = http://weboob.org;
+ description = "Collection of applications and APIs to interact with websites without requiring the user to open a browser";
+ license = stdenv.lib.licenses.agpl3;
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/webrtcvad/default.nix b/nixpkgs/pkgs/development/python-modules/webrtcvad/default.nix
new file mode 100644
index 00000000000..7bd0f20bfa1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/webrtcvad/default.nix
@@ -0,0 +1,24 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "webrtcvad";
+ version = "2.0.10";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f1bed2fb25b63fb7b1a55d64090c993c9c9167b28485ae0bcdd81cf6ede96aea";
+ };
+
+ # required WAV files for testing are not included in the tarball
+ doCheck = false;
+
+ meta = {
+ description = "Interface to the Google WebRTC Voice Activity Detector (VAD)";
+ homepage = https://github.com/wiseman/py-webrtcvad;
+ license = with lib.licenses; [ mit ];
+ maintainers = with lib.maintainers; [ prusnak ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/websocket_client/default.nix b/nixpkgs/pkgs/development/python-modules/websocket_client/default.nix
new file mode 100644
index 00000000000..ad830a0890a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/websocket_client/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildPythonPackage, fetchPypi, isPy27
+, six
+, backports_ssl_match_hostname
+}:
+
+buildPythonPackage rec {
+ version = "0.56.0";
+ pname = "websocket_client";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0fpxjyr74klnyis3yf6m54askl0h5dchxcwbfjsq92xng0455m8z";
+ };
+
+ propagatedBuildInputs = [
+ six
+ ] ++ lib.optional isPy27 backports_ssl_match_hostname;
+
+ meta = with lib; {
+ description = "Websocket client for python";
+ homepage = "https://github.com/websocket-client/websocket-client";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/websockets/default.nix b/nixpkgs/pkgs/development/python-modules/websockets/default.nix
new file mode 100644
index 00000000000..589a8089fca
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/websockets/default.nix
@@ -0,0 +1,26 @@
+{ lib
+, fetchFromGitHub
+, buildPythonPackage
+, pythonOlder
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "websockets";
+ version = "8.0.2";
+
+ src = fetchFromGitHub {
+ owner = "aaugustin";
+ repo = pname;
+ rev = version;
+ sha256 = "02fgb8gib4z5fqv30brz3mhxmblw9bw0978fhpjdrkj7wvqrz5h8";
+ };
+
+ disabled = pythonOlder "3.3";
+
+ meta = with lib; {
+ description = "WebSocket implementation in Python 3";
+ homepage = "https://github.com/aaugustin/websockets";
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/websockify/default.nix b/nixpkgs/pkgs/development/python-modules/websockify/default.nix
new file mode 100644
index 00000000000..a9758580a44
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/websockify/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, numpy
+}:
+
+buildPythonPackage rec {
+ version = "0.8.0";
+ pname = "websockify";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "547d3d98c5081f2dc2872a2e4a3aef33e0ee5141d5f6209204aab2f4a41548d2";
+ };
+
+ propagatedBuildInputs = [ numpy ];
+
+ meta = with stdenv.lib; {
+ description = "WebSockets support for any application/server";
+ homepage = https://github.com/kanaka/websockify;
+ license = licenses.lgpl3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/webtest/default.nix b/nixpkgs/pkgs/development/python-modules/webtest/default.nix
new file mode 100644
index 00000000000..f3d60253ae4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/webtest/default.nix
@@ -0,0 +1,42 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, webob
+, six
+, beautifulsoup4
+, waitress
+, mock
+, pyquery
+, wsgiproxy2
+, PasteDeploy
+}:
+
+buildPythonPackage rec {
+ version = "2.0.32";
+ pname = "webtest";
+
+ src = fetchPypi {
+ pname = "WebTest";
+ inherit version;
+ sha256 = "4221020d502ff414c5fba83c1213985b83219cb1cc611fe58aa4feaf96b5e062";
+ };
+
+ preConfigure = ''
+ substituteInPlace setup.py --replace "nose<1.3.0" "nose"
+ '';
+
+ propagatedBuildInputs = [ webob six beautifulsoup4 waitress ];
+
+ checkInputs = [ nose mock PasteDeploy wsgiproxy2 pyquery ];
+
+ # Some of the tests use localhost networking.
+ __darwinAllowLocalNetworking = true;
+
+ meta = with stdenv.lib; {
+ description = "Helper to test WSGI applications";
+ homepage = https://webtest.readthedocs.org/en/latest/;
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/werkzeug/default.nix b/nixpkgs/pkgs/development/python-modules/werkzeug/default.nix
new file mode 100644
index 00000000000..b3d397b97b4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/werkzeug/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, itsdangerous, hypothesis
+, pytest, requests }:
+
+buildPythonPackage rec {
+ pname = "Werkzeug";
+ version = "0.15.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a13b74dd3c45f758d4ebdb224be8f1ab8ef58b3c0ffc1783a8c7d9f4f50227e6";
+ };
+
+ propagatedBuildInputs = [ itsdangerous ];
+ checkInputs = [ pytest requests hypothesis ];
+
+ checkPhase = ''
+ pytest ${stdenv.lib.optionalString stdenv.isDarwin "-k 'not test_get_machine_id'"}
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "https://palletsprojects.com/p/werkzeug/";
+ description = "A WSGI utility library for Python";
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/wget/default.nix b/nixpkgs/pkgs/development/python-modules/wget/default.nix
new file mode 100644
index 00000000000..502c7f64b86
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/wget/default.nix
@@ -0,0 +1,22 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "wget";
+ version = "3.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "35e630eca2aa50ce998b9b1a127bb26b30dfee573702782aa982f875e3f16061";
+ extension = "zip";
+ };
+
+ meta = {
+ description = "Pure python download utility";
+ homepage = http://bitbucket.org/techtonik/python-wget/;
+ license = with lib.licenses; [ unlicense ];
+ maintainers = with lib.maintainers; [ prusnak ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/wheel/default.nix b/nixpkgs/pkgs/development/python-modules/wheel/default.nix
new file mode 100644
index 00000000000..0ba5b19597e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/wheel/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, setuptools
+, pip
+, buildPythonPackage
+, fetchPypi
+, pytest
+, pytestcov
+, coverage
+, jsonschema
+, bootstrapped-pip
+}:
+
+buildPythonPackage rec {
+ pname = "wheel";
+ version = "0.33.6";
+ format = "other";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "10c9da68765315ed98850f8e048347c3eb06dd81822dc2ab1d4fde9dc9702646";
+ };
+
+ checkInputs = [ pytest pytestcov coverage ];
+ nativeBuildInputs = [ bootstrapped-pip setuptools ];
+
+ catchConflicts = false;
+ # No tests in archive
+ doCheck = false;
+
+ # We add this flag to ignore the copy installed by bootstrapped-pip
+ pipInstallFlags = [ "--ignore-installed" ];
+
+ meta = {
+ description = "A built-package format for Python";
+ license = with lib.licenses; [ mit ];
+ homepage = https://bitbucket.org/pypa/wheel/;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/whichcraft/default.nix b/nixpkgs/pkgs/development/python-modules/whichcraft/default.nix
new file mode 100644
index 00000000000..102496582a0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/whichcraft/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildPythonPackage, fetchPypi, pytest, glibcLocales }:
+
+buildPythonPackage rec {
+ pname = "whichcraft";
+ version = "0.6.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1614vs0iwm9abina70vgvxaabi8xbz83yxgqfqi1syrzrhaalk6m";
+ };
+
+ LC_ALL="en_US.utf-8";
+ buildInputs = [ glibcLocales ];
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ py.test
+ '';
+
+ meta = with lib; {
+ homepage = https://github.com/pydanny/whichcraft;
+ description = "Cross-platform cross-python shutil.which functionality";
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/whisper/default.nix b/nixpkgs/pkgs/development/python-modules/whisper/default.nix
new file mode 100644
index 00000000000..407bb88fa2a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/whisper/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi, mock, six }:
+
+buildPythonPackage rec {
+ pname = "whisper";
+ version = "1.1.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "14013e7563102d808aae0cb5b3b2326979236d4bcd54c343ea636761629920cd";
+ };
+
+ propagatedBuildInputs = [ six ];
+ checkInputs = [ mock ];
+
+ meta = with stdenv.lib; {
+ homepage = http://graphite.wikidot.com/;
+ description = "Fixed size round-robin style database";
+ maintainers = with maintainers; [ offline basvandijk ];
+ license = licenses.asl20;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/whitenoise/default.nix b/nixpkgs/pkgs/development/python-modules/whitenoise/default.nix
new file mode 100644
index 00000000000..b7812b42e66
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/whitenoise/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchPypi, buildPythonPackage }:
+
+buildPythonPackage rec {
+ pname = "whitenoise";
+ version = "4.1.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "42133ddd5229eeb6a0c9899496bdbe56c292394bf8666da77deeb27454c0456a";
+ };
+
+ # No tests
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Radically simplified static file serving for WSGI applications";
+ homepage = http://whitenoise.evans.io/;
+ license = licenses.mit;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/whoosh/default.nix b/nixpkgs/pkgs/development/python-modules/whoosh/default.nix
new file mode 100644
index 00000000000..a7b34cf9b36
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/whoosh/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytest }:
+
+buildPythonPackage rec {
+ pname = "Whoosh";
+ version = "2.7.4";
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "10qsqdjpbc85fykc1vgcs8xwbgn4l2l52c8d83xf1q59pwyn79bw";
+ };
+
+ checkInputs = [ pytest ];
+
+ # Wrong encoding
+ postPatch = ''
+ rm tests/test_reading.py
+ substituteInPlace setup.cfg --replace "[pytest]" "[tool:pytest]"
+ '';
+ checkPhase = ''
+ # FIXME: test_minimize_dfa fails on python 3.6
+ py.test -k "not test_timelimit and not test_minimize_dfa"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Fast, pure-Python full text indexing, search, and spell
+checking library.";
+ homepage = https://bitbucket.org/mchaput/whoosh;
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ nand0p ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/widgetsnbextension/default.nix b/nixpkgs/pkgs/development/python-modules/widgetsnbextension/default.nix
new file mode 100644
index 00000000000..b2329f4f963
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/widgetsnbextension/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, notebook
+, ipywidgets
+}:
+
+buildPythonPackage rec {
+ pname = "widgetsnbextension";
+ version = "3.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "8c9b4d73e388f2484296be18432d3cc0b8d59de243079a0db16a56c5571e1f86";
+ };
+
+ propagatedBuildInputs = [ notebook ];
+
+ # No tests in archive
+ doCheck = false;
+
+ meta = {
+ description = "IPython HTML widgets for Jupyter";
+ homepage = http://ipython.org/;
+ license = ipywidgets.meta.license; # Build from same repo
+ maintainers = with lib.maintainers; [ fridh ];
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/willow/default.nix b/nixpkgs/pkgs/development/python-modules/willow/default.nix
new file mode 100644
index 00000000000..fb9182ab179
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/willow/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, six
+, pillow
+}:
+
+buildPythonPackage rec {
+ pname = "willow";
+ version = "1.1";
+ disabled = pythonOlder "2.7";
+
+ src = fetchPypi {
+ pname = "Willow";
+ inherit version;
+ sha256 = "818ee11803c90a0a6d49c94b0453d6266be1ef83ae00de72731c45fae4d3e78c";
+ };
+
+ propagatedBuildInputs = [ six pillow ];
+
+ # Test data is not included
+ # https://github.com/torchbox/Willow/issues/34
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A Python image library that sits on top of Pillow, Wand and OpenCV";
+ homepage = https://github.com/torchbox/Willow/;
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ desiderius ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/word2vec/default.nix b/nixpkgs/pkgs/development/python-modules/word2vec/default.nix
new file mode 100644
index 00000000000..d61567f9224
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/word2vec/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, cython
+, numpy
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "word2vec";
+ version = "0.10.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "40f6f30a5f113ffbfc24c5ad5de23bfac897f4c1210fb93685b7fca5c4dee7db";
+ };
+
+ propagatedBuildInputs = [ cython numpy ];
+
+ checkPhase = ''
+ cd word2vec/tests;
+ ${python.interpreter} test_word2vec.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Tool for computing continuous distributed representations of words";
+ homepage = "https://github.com/danielfrg/word2vec";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ NikolaMandic ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/wordfreq/default.nix b/nixpkgs/pkgs/development/python-modules/wordfreq/default.nix
new file mode 100644
index 00000000000..97530989a38
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/wordfreq/default.nix
@@ -0,0 +1,49 @@
+{ lib
+, buildPythonPackage
+, regex
+, langcodes
+, ftfy
+, msgpack
+, mecab-python3
+, jieba
+, pytest
+, pythonOlder
+, fetchFromGitHub
+}:
+
+buildPythonPackage {
+ pname = "wordfreq";
+ version = "2.2.0";
+
+ src = fetchFromGitHub {
+ owner = "LuminosoInsight";
+ repo = "wordfreq";
+ # upstream don't tag by version
+ rev = "bc12599010c8181a725ec97d0b3990758a48da36";
+ sha256 = "195794vkzq5wsq3mg1dgfhlnz2f7vi1xajlifq6wkg4lzwyq262m";
+ };
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ # These languages require additional dictionaries
+ pytest tests -k 'not test_japanese and not test_korean and not test_languages and not test_french_and_related'
+ '';
+
+ propagatedBuildInputs = [ regex langcodes ftfy msgpack mecab-python3 jieba ];
+
+ # patch to relax version requirements for regex
+ # dependency to prevent break in upgrade
+ postPatch = ''
+ substituteInPlace setup.py --replace "regex ==" "regex >="
+ '';
+
+ disabled = pythonOlder "3";
+
+ meta = with lib; {
+ description = "A library for looking up the frequencies of words in many languages, based on many sources of data";
+ homepage = https://github.com/LuminosoInsight/wordfreq/;
+ license = licenses.mit;
+ maintainers = with maintainers; [ ixxie ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/worldengine/default.nix b/nixpkgs/pkgs/development/python-modules/worldengine/default.nix
new file mode 100644
index 00000000000..103e2fc8def
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/worldengine/default.nix
@@ -0,0 +1,63 @@
+{ stdenv
+, buildPythonPackage
+, pythonOlder
+, fetchFromGitHub
+, nose
+, noise
+, numpy
+, pyplatec
+, protobuf
+, purepng
+, h5py
+, gdal
+}:
+
+buildPythonPackage rec {
+ pname = "worldengine";
+ version = "0.19.0";
+
+ src = fetchFromGitHub {
+ owner = "Mindwerks";
+ repo = "worldengine";
+ rev = "v${version}";
+ sha256 = "1xrckb0dn2841gvp32n18gib14bpi77hmjw3r9jiyhg402iip7ry";
+ };
+
+ src-data = fetchFromGitHub {
+ owner = "Mindwerks";
+ repo = "worldengine-data";
+ rev = "029051e";
+ sha256 = "06xbf8gj3ljgr11v1n8jbs2q8pdf9wz53xdgkhpm8hdnjahgdxdm";
+ };
+
+ postUnpack = ''
+ ln -s ${src-data} worldengine-data
+ '';
+
+ propagatedBuildInputs = [ noise numpy pyplatec protobuf purepng h5py gdal ];
+
+ prePatch = ''
+ substituteInPlace setup.py \
+ --replace pypng>=0.0.18 purepng \
+ --replace 'numpy>=1.9.2, <= 1.10.0.post2' 'numpy' \
+ --replace 'argparse==1.2.1' "" \
+ --replace 'protobuf==3.0.0a3' 'protobuf' \
+ --replace 'noise==1.2.2' 'noise' \
+ --replace 'PyPlatec==1.4.0' 'PyPlatec' \
+ '';
+
+ # with python<3.5, unittest fails to discover tests because of their filenames
+ # so nose is used instead.
+ checkInputs = stdenv.lib.optional (pythonOlder "3.5") [ nose ];
+ postCheck = stdenv.lib.optionalString (pythonOlder "3.5") ''
+ nosetests tests
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = http://world-engine.org;
+ description = "World generator using simulation of plates, rain shadow, erosion, etc";
+ license = licenses.mit;
+ maintainers = with maintainers; [ rardiol ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/wptserve/default.nix b/nixpkgs/pkgs/development/python-modules/wptserve/default.nix
new file mode 100644
index 00000000000..12172c376c9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/wptserve/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, six, h2
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "wptserve";
+ version = "2.0";
+
+ disabled = isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "9d0c6adc279748abea81ac12b7a2cac97ebbdd87826dc11f6dbd85b781e9442a";
+ };
+
+ postPatch = ''
+ substituteInPlace setup.py --replace "h2==" "h2>="
+ '';
+
+ propagatedBuildInputs = [ six h2 ];
+
+ meta = {
+ description = "A webserver intended for web browser testing";
+ homepage = https://wptserve.readthedocs.org/;
+ license = lib.licenses.bsd3;
+ maintainers = with lib.maintainers; [ raskin ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/wrapt/default.nix b/nixpkgs/pkgs/development/python-modules/wrapt/default.nix
new file mode 100644
index 00000000000..9247a7c7757
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/wrapt/default.nix
@@ -0,0 +1,23 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "wrapt";
+ version = "1.11.1";
+
+ # No tests in archive
+ doCheck = false;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "4aea003270831cceb8a90ff27c4031da6ead7ec1886023b80ce0dfe0adf61533";
+ };
+
+ meta = {
+ description = "Module for decorators, wrappers and monkey patching";
+ license = lib.licenses.bsd2;
+ homepage = https://github.com/GrahamDumpleton/wrapt;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/wrf-python/default.nix b/nixpkgs/pkgs/development/python-modules/wrf-python/default.nix
new file mode 100644
index 00000000000..8d1443837cd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/wrf-python/default.nix
@@ -0,0 +1,42 @@
+{lib, fetchFromGitHub, pythonOlder, buildPythonPackage, gfortran, mock, xarray, wrapt, numpy, netcdf4}:
+
+buildPythonPackage rec {
+ pname = "wrf-python";
+ version = "1.3.1.1";
+
+ src = fetchFromGitHub {
+ owner = "NCAR";
+ repo = "wrf-python";
+ rev = version;
+ sha256 = "12mm7x1r5md6x28vmwyh6k655pgsv6knj8ycmjbxxk8bk7qsj74h";
+ };
+
+ propagatedBuildInputs = [
+ wrapt
+ numpy
+ xarray
+ ];
+
+ nativeBuildInputs = [
+ gfortran
+ ];
+
+ checkInputs = [
+ netcdf4
+ ] ++ lib.optional (pythonOlder "3.3") mock;
+
+ doCheck = true;
+ checkPhase = ''
+ runHook preCheck
+ cd ./test/ci_tests
+ python utests.py
+ runHook postCheck
+ '';
+
+ meta = {
+ description = "WRF postprocessing library for Python";
+ homepage = http://wrf-python.rtfd.org;
+ license = lib.licenses.asl20;
+ maintainers = with lib.maintainers; [ mhaselsteiner ];
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/ws4py/default.nix b/nixpkgs/pkgs/development/python-modules/ws4py/default.nix
new file mode 100644
index 00000000000..141b499453e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ws4py/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, buildPythonPackage, fetchPypi, pytest, mock, git
+, cherrypy, gevent, tornado }:
+
+buildPythonPackage rec {
+ pname = "ws4py";
+ version = "0.5.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "29d073d7f2e006373e6a848b1d00951a1107eb81f3742952be905429dc5a5483";
+ };
+
+ checkInputs = [ pytest mock git ];
+ propagatedBuildInputs = [ cherrypy gevent tornado ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://ws4py.readthedocs.org;
+ description = "A WebSocket package for Python";
+ maintainers = [];
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/wsgiproxy/default.nix b/nixpkgs/pkgs/development/python-modules/wsgiproxy/default.nix
new file mode 100644
index 00000000000..8ae8b4aefa5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/wsgiproxy/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, 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 stdenv.lib; {
+ description = "WSGIProxy gives tools to proxy arbitrary(ish) WSGI requests to other";
+ homepage = "http://pythonpaste.org/wsgiproxy/";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/wsgiproxy2/default.nix b/nixpkgs/pkgs/development/python-modules/wsgiproxy2/default.nix
new file mode 100644
index 00000000000..4877e5f66f2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/wsgiproxy2/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+, webob
+}:
+
+buildPythonPackage rec {
+ pname = "WSGIProxy2";
+ version = "0.4.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "13kf9bdxrc95y9vriaz0viry3ah11nz4rlrykcfvb8nlqpx3dcm4";
+ };
+
+ propagatedBuildInputs = [ six webob ];
+
+ # circular dep on webtest
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = http://pythonpaste.org/wsgiproxy/;
+ description = "HTTP proxying tools for WSGI apps";
+ license = licenses.mit;
+ maintainers = with maintainers; [ domenkozar ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/wsproto/0.14.nix b/nixpkgs/pkgs/development/python-modules/wsproto/0.14.nix
new file mode 100644
index 00000000000..36aaf0ec8ce
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/wsproto/0.14.nix
@@ -0,0 +1,25 @@
+{ 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/nixpkgs/pkgs/development/python-modules/wsproto/default.nix b/nixpkgs/pkgs/development/python-modules/wsproto/default.nix
new file mode 100644
index 00000000000..dfbf9ceabdc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/wsproto/default.nix
@@ -0,0 +1,30 @@
+{ lib, buildPythonPackage, fetchPypi, pythonOlder, isPy36
+, dataclasses
+, h11
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "wsproto";
+ version = "0.15.0";
+ disabled = pythonOlder "3.6"; # python versions <3.6
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "17gsxlli4w8am1wwwl3k90hpdfa213ax40ycbbvb7hjx1v1rhiv1";
+ };
+
+ propagatedBuildInputs = [ h11 ] ++ lib.optional isPy36 dataclasses;
+
+ 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/nixpkgs/pkgs/development/python-modules/wtforms/default.nix b/nixpkgs/pkgs/development/python-modules/wtforms/default.nix
new file mode 100644
index 00000000000..40f0b655451
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/wtforms/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, Babel
+}:
+
+buildPythonPackage rec {
+ version = "2.1";
+ pname = "wtforms";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "0vyl26y9cg409cfyj8rhqxazsdnd0jipgjw06civhrd53yyi1pzz";
+ };
+
+ # Django tests are broken "django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet."
+ # This is fixed in master I believe but not yet in 2.1;
+ doCheck = false;
+
+ propagatedBuildInputs = [ Babel ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/wtforms/wtforms;
+ description = "A flexible forms validation and rendering library for Python";
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/wurlitzer/default.nix b/nixpkgs/pkgs/development/python-modules/wurlitzer/default.nix
new file mode 100644
index 00000000000..d1797acb7d2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/wurlitzer/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, mock
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "wurlitzer";
+ version = "1.0.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0nab45pfgqdxhhyshf717xfzniss2h3bx19zdaq9gqr6v8lw6wpr";
+ };
+
+ checkInputs = [ mock pytest ];
+
+ checkPhase = ''
+ py.test test.py
+ '';
+
+ meta = {
+ description = "Capture C-level output in context managers";
+ homepage = https://github.com/minrk/wurlitzer;
+ license = lib.licenses.mit;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/wxPython/3.0.nix b/nixpkgs/pkgs/development/python-modules/wxPython/3.0.nix
new file mode 100644
index 00000000000..98461dfb404
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/wxPython/3.0.nix
@@ -0,0 +1,76 @@
+{ fetchurl
+, lib
+, stdenv
+, darwin
+, openglSupport ? true
+, libX11
+, wxGTK
+, wxmac
+, pkgconfig
+, 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 = [ pkgconfig ]
+ ++ (lib.optionals (!stdenv.isDarwin) [ wxGTK libX11 ])
+ ++ (lib.optionals stdenv.isDarwin [ wxmac darwin.apple_sdk.frameworks.Cocoa ]);
+
+ buildInputs = [ ]
+ ++ (lib.optionals (!stdenv.isDarwin) [ (wxGTK.gtk) ])
+ ++ (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/nixpkgs/pkgs/development/python-modules/wxPython/4.0.nix b/nixpkgs/pkgs/development/python-modules/wxPython/4.0.nix
new file mode 100644
index 00000000000..9f6e9866cef
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/wxPython/4.0.nix
@@ -0,0 +1,83 @@
+{ lib
+, stdenv
+, openglSupport ? true
+, libX11
+, pyopengl
+, buildPythonPackage
+, fetchPypi
+, pkgconfig
+, libjpeg
+, libtiff
+, SDL
+, gst-plugins-base
+, libnotify
+, freeglut
+, xorg
+, which
+, cairo
+, requests
+, pango
+, pathlib2
+, python
+, doxygen
+, ncurses
+, libpng
+, gstreamer
+, wxGTK
+}:
+
+buildPythonPackage rec {
+ pname = "wxPython";
+ version = "4.0.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "35cc8ae9dd5246e2c9861bb796026bbcb9fb083e4d49650f776622171ecdab37";
+ };
+
+ doCheck = false;
+
+ nativeBuildInputs = [ pkgconfig which doxygen wxGTK ];
+
+ buildInputs = [ libjpeg libtiff SDL
+ gst-plugins-base libnotify freeglut xorg.libSM ncurses
+ requests libpng gstreamer libX11
+ pathlib2
+ (wxGTK.gtk)
+ ]
+ ++ lib.optional openglSupport pyopengl;
+
+ hardeningDisable = [ "format" ];
+
+ DOXYGEN = "${doxygen}/bin/doxygen";
+
+ preConfigure = lib.optionalString (!stdenv.isDarwin) ''
+ substituteInPlace wx/lib/wxcairo/wx_pycairo.py \
+ --replace 'cairoLib = None' 'cairoLib = ctypes.CDLL("${cairo}/lib/libcairo.so")'
+ substituteInPlace wx/lib/wxcairo/wx_pycairo.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 = ''
+ ${python.interpreter} build.py -v --use_syswx dox etg --nodoc sip build_py
+ '';
+
+ installPhase = ''
+ ${python.interpreter} setup.py install --skip-build --prefix=$out
+ wrapPythonPrograms
+ '';
+
+ passthru = { inherit wxGTK openglSupport; };
+
+
+ meta = {
+ description = "Cross platform GUI toolkit for Python, Phoenix version";
+ homepage = http://wxpython.org/;
+ license = lib.licenses.wxWindows;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/x11_hash/default.nix b/nixpkgs/pkgs/development/python-modules/x11_hash/default.nix
new file mode 100644
index 00000000000..060d08869b8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/x11_hash/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec{
+ version = "1.4";
+ pname = "x11_hash";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "172skm9xbbrivy1p4xabxihx9lsnzi53hvzryfw64m799k2fmp22";
+ };
+
+ meta = with stdenv.lib; {
+ description = "Binding for X11 proof of work hashing";
+ homepage = https://github.com/mazaclub/x11_hash;
+ license = licenses.mit;
+ maintainers = with maintainers; [ np ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/x256/default.nix b/nixpkgs/pkgs/development/python-modules/x256/default.nix
new file mode 100644
index 00000000000..55a3ad7d0cc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/x256/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "x256";
+ version = "0.0.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "00g02b9a6jsl377xb5fmxvkjff3lalw21n430a4zalqyv76dnmgq";
+ };
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Find the nearest xterm 256 color index for an RGB";
+ homepage = https://github.com/magarcia/python-x256;
+ license = licenses.mit;
+ maintainers = with maintainers; [ Scriptkiddi ];
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/xapian/default.nix b/nixpkgs/pkgs/development/python-modules/xapian/default.nix
new file mode 100644
index 00000000000..c15f2682e63
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/xapian/default.nix
@@ -0,0 +1,43 @@
+{ lib, buildPythonPackage, fetchurl, python
+, sphinx
+, xapian
+}:
+
+let
+ pythonSuffix = lib.optionalString python.isPy3k "3";
+in
+buildPythonPackage rec {
+ pname = "xapian";
+ inherit (xapian) version;
+ format = "other";
+
+ src = fetchurl {
+ url = "https://oligarchy.co.uk/xapian/${version}/xapian-bindings-${version}.tar.xz";
+ sha256 = "0j9awiiw9zf97r60m848absq43k37gghpyw7acxqjazfzd71fxvm";
+ };
+
+ configureFlags = [
+ "--with-python${pythonSuffix}"
+ "PYTHON${pythonSuffix}_LIB=${placeholder "out"}/${python.sitePackages}"
+ ];
+
+ preConfigure = ''
+ export XAPIAN_CONFIG=${xapian}/bin/xapian-config
+ '';
+
+ buildInputs = [ sphinx xapian ];
+
+ doCheck = true;
+
+ checkPhase = ''
+ ${python.interpreter} python${pythonSuffix}/smoketest.py
+ ${python.interpreter} python${pythonSuffix}/pythontest.py
+ '';
+
+ meta = with lib; {
+ description = "Python Bindings for Xapian";
+ homepage = https://xapian.org/;
+ license = licenses.gpl2Plus;
+ maintainers = with maintainers; [ jonringer ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/xarray/default.nix b/nixpkgs/pkgs/development/python-modules/xarray/default.nix
new file mode 100644
index 00000000000..de4be062001
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/xarray/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+, numpy
+, pandas
+, python
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "xarray";
+ version = "0.12.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "9310e610af988acb57a2627b10025a250bcbe172e66d3750a6dd3b3c5357da56";
+ };
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [numpy pandas];
+
+ checkPhase = ''
+ pytest $out/${python.sitePackages}
+ '';
+
+ # There always seem to be broken tests...
+ doCheck = false;
+
+ disabled = !isPy3k;
+
+ meta = {
+ description = "N-D labeled arrays and datasets in Python";
+ homepage = https://github.com/pydata/xarray;
+ license = lib.licenses.asl20;
+ maintainers = with lib.maintainers; [ fridh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/xattr/default.nix b/nixpkgs/pkgs/development/python-modules/xattr/default.nix
new file mode 100644
index 00000000000..c8940b54c46
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/xattr/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+, cffi
+}:
+
+buildPythonPackage rec {
+ pname = "xattr";
+ version = "0.9.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "7cb1b28eeab4fe99cc4350e831434142fce658f7d03f173ff7722144e6a47458";
+ };
+
+ propagatedBuildInputs = [ cffi ];
+
+ # https://github.com/xattr/xattr/issues/43
+ doCheck = false;
+
+ postBuild = ''
+ ${python.interpreter} -m compileall -f xattr
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/xattr/xattr;
+ description = "Python wrapper for extended filesystem attributes";
+ license = licenses.mit;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/xcaplib/default.nix b/nixpkgs/pkgs/development/python-modules/xcaplib/default.nix
new file mode 100644
index 00000000000..7002c43cf2b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/xcaplib/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, 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 stdenv.lib; {
+ homepage = https://github.com/AGProjects/python-xcaplib;
+ description = "XCAP (RFC4825) client library";
+ license = licenses.gpl2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/xcffib/default.nix b/nixpkgs/pkgs/development/python-modules/xcffib/default.nix
new file mode 100644
index 00000000000..e8643a6b540
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/xcffib/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, xorg
+, cffi
+, six
+}:
+
+buildPythonPackage rec {
+ version = "0.8.1";
+ pname = "xcffib";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "03nf3xrqq25sj9phqc9ngvqxrrp14s4ifsx9hv41kp7zi3xamsfn";
+ };
+
+ patchPhase = ''
+ # Hardcode cairo library path
+ sed -e 's,ffi\.dlopen(,&"${xorg.libxcb.out}/lib/" + ,' -i xcffib/__init__.py
+ '';
+
+ propagatedBuildInputs = [ cffi six ];
+
+ meta = with stdenv.lib; {
+ description = "A drop in replacement for xpyb, an XCB python binding";
+ homepage = "https://github.com/tych0/xcffib";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ kamilchm ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/xdis/default.nix b/nixpkgs/pkgs/development/python-modules/xdis/default.nix
new file mode 100644
index 00000000000..5fc7f55d419
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/xdis/default.nix
@@ -0,0 +1,31 @@
+{ lib, buildPythonPackage, fetchFromGitHub
+, click
+, pytest
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "xdis";
+ version = "4.0.3";
+
+ src = fetchFromGitHub {
+ owner = "rocky";
+ repo = "python-xdis";
+ rev = version;
+ sha256 = "1h4j8hincf49zyd0rvn4bh0ypj8836y8vz3d496ycb9gjzkr6044";
+ };
+
+ checkInputs = [ pytest ];
+ propagatedBuildInputs = [ six click ];
+
+ checkPhase = ''
+ make check
+ '';
+
+ meta = with lib; {
+ description = "Python cross-version byte-code disassembler and marshal routines";
+ homepage = https://github.com/rocky/python-xdis/;
+ license = licenses.gpl2;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/xdot/default.nix b/nixpkgs/pkgs/development/python-modules/xdot/default.nix
new file mode 100644
index 00000000000..14f4b24747c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/xdot/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k
+, wrapGAppsHook, gobject-introspection, pygobject3, graphviz, gtk3 }:
+
+buildPythonPackage rec {
+ pname = "xdot";
+ version = "1.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0cr4rh7dz4dfzyxrk5pzhm0d15gkrgkfp3i5lw178xy81pc56p71";
+ };
+
+ disabled = !isPy3k;
+
+ nativeBuildInputs = [ wrapGAppsHook ];
+ propagatedBuildInputs = [ gobject-introspection pygobject3 graphviz gtk3 ];
+
+ meta = with lib; {
+ description = "xdot.py is an interactive viewer for graphs written in Graphviz's dot";
+ homepage = https://github.com/jrfonseca/xdot.py;
+ license = licenses.lgpl3Plus;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/xgboost/default.nix b/nixpkgs/pkgs/development/python-modules/xgboost/default.nix
new file mode 100644
index 00000000000..81a8d05f5bf
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/xgboost/default.nix
@@ -0,0 +1,37 @@
+{ buildPythonPackage
+, pytest
+, nose
+, scipy
+, scikitlearn
+, stdenv
+, xgboost
+, substituteAll
+, pandas
+, matplotlib
+, graphviz
+, datatable
+}:
+
+buildPythonPackage {
+ pname = "xgboost";
+ inherit (xgboost) version src meta;
+
+ patches = [
+ (substituteAll {
+ src = ./lib-path-for-python.patch;
+ libpath = "${xgboost}/lib";
+ extention = stdenv.hostPlatform.extensions.sharedLibrary;
+ })
+ ];
+
+ postPatch = "cd python-package";
+
+ propagatedBuildInputs = [ scipy ];
+ buildInputs = [ xgboost ];
+ checkInputs = [ nose pytest scikitlearn pandas matplotlib graphviz datatable ];
+
+ checkPhase = ''
+ ln -sf ../demo .
+ nosetests ../tests/python
+ '';
+}
diff --git a/nixpkgs/pkgs/development/python-modules/xgboost/lib-path-for-python.patch b/nixpkgs/pkgs/development/python-modules/xgboost/lib-path-for-python.patch
new file mode 100644
index 00000000000..c9252c12fed
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/xgboost/lib-path-for-python.patch
@@ -0,0 +1,38 @@
+diff --git a/python-package/xgboost/libpath.py b/python-package/xgboost/libpath.py
+index d87922c0..859a30fb 100644
+--- a/python-package/xgboost/libpath.py
++++ b/python-package/xgboost/libpath.py
+@@ -19,32 +19,4 @@ def find_lib_path():
+ lib_path: list(string)
+ List of all found library path to xgboost
+ """
+- curr_path = os.path.dirname(os.path.abspath(os.path.expanduser(__file__)))
+- # make pythonpack hack: copy this directory one level upper for setup.py
+- dll_path = [curr_path, os.path.join(curr_path, '../../lib/'),
+- os.path.join(curr_path, './lib/'),
+- os.path.join(sys.prefix, 'xgboost')]
+- if sys.platform == 'win32':
+- if platform.architecture()[0] == '64bit':
+- dll_path.append(os.path.join(curr_path, '../../windows/x64/Release/'))
+- # hack for pip installation when copy all parent source directory here
+- dll_path.append(os.path.join(curr_path, './windows/x64/Release/'))
+- else:
+- dll_path.append(os.path.join(curr_path, '../../windows/Release/'))
+- # hack for pip installation when copy all parent source directory here
+- dll_path.append(os.path.join(curr_path, './windows/Release/'))
+- dll_path = [os.path.join(p, 'xgboost.dll') for p in dll_path]
+- elif sys.platform.startswith('linux') or sys.platform.startswith('freebsd'):
+- dll_path = [os.path.join(p, 'libxgboost.so') for p in dll_path]
+- elif sys.platform == 'darwin':
+- dll_path = [os.path.join(p, 'libxgboost.dylib') for p in dll_path]
+-
+- lib_path = [p for p in dll_path if os.path.exists(p) and os.path.isfile(p)]
+-
+- # From github issues, most of installation errors come from machines w/o compilers
+- if not lib_path and not os.environ.get('XGBOOST_BUILD_DOC', False):
+- raise XGBoostLibraryNotFound(
+- 'Cannot find XGBoost Library in the candidate path, ' +
+- 'did you install compilers and run build.sh in root path?\n'
+- 'List of candidates:\n' + ('\n'.join(dll_path)))
+- return lib_path
++ return ["@libpath@/libxgboost@extention@"]
diff --git a/nixpkgs/pkgs/development/python-modules/xhtml2pdf/default.nix b/nixpkgs/pkgs/development/python-modules/xhtml2pdf/default.nix
new file mode 100644
index 00000000000..d5a66685646
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/xhtml2pdf/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pillow
+, html5lib
+, pypdf2
+, reportlab
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "xhtml2pdf";
+ version = "0.2.3";
+
+ propagatedBuildInputs = [pillow html5lib pypdf2 reportlab six];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "10kg8cmn7zgql2lb6cfmqj94sa0jkraksv3lc4kvpn58sxw7x8w6";
+ };
+
+ meta = with stdenv.lib; {
+ description = "A PDF generator using HTML and CSS";
+ homepage = https://github.com/xhtml2pdf/xhtml2pdf;
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/xkcdpass/default.nix b/nixpkgs/pkgs/development/python-modules/xkcdpass/default.nix
new file mode 100644
index 00000000000..9ea1445eff5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/xkcdpass/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "xkcdpass";
+ version = "1.17.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "95cf3fd41130606ba64ec7edb9efac7c5d61efe21abab51a2c21ccbbebc48bb6";
+ };
+
+ # No tests included
+ # https://github.com/redacted/XKCD-password-generator/issues/32
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://pypi.python.org/pypi/xkcdpass/;
+ description = "Generate secure multiword passwords/passphrases, inspired by XKCD";
+ license = licenses.bsd3;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/xlib/default.nix b/nixpkgs/pkgs/development/python-modules/xlib/default.nix
new file mode 100644
index 00000000000..1903c3aaca8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/xlib/default.nix
@@ -0,0 +1,41 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, six
+, setuptools_scm
+, xorg
+, python
+, mock
+, nose
+, utillinux
+}:
+
+buildPythonPackage rec {
+ pname = "xlib";
+ version = "0.25";
+
+ src = fetchFromGitHub {
+ owner = "python-xlib";
+ repo = "python-xlib";
+ rev = version;
+ sha256 = "1nncx7v9chmgh56afg6dklz3479s5zg3kq91mzh4mj512y0skyki";
+ };
+
+ checkPhase = ''
+ ${python.interpreter} runtests.py
+ '';
+
+ checkInputs = [ mock nose utillinux /* mcookie */ xorg.xauth xorg.xorgserver /* xvfb */ ];
+ nativeBuildInputs = [ setuptools_scm ];
+ buildInputs = [ xorg.libX11 ];
+ propagatedBuildInputs = [ six ];
+
+ doCheck = !stdenv.isDarwin;
+
+ meta = with stdenv.lib; {
+ description = "Fully functional X client library for Python programs";
+ homepage = http://python-xlib.sourceforge.net/;
+ license = licenses.gpl2Plus;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/xlrd/default.nix b/nixpkgs/pkgs/development/python-modules/xlrd/default.nix
new file mode 100644
index 00000000000..e37b2694576
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/xlrd/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "xlrd";
+ version = "1.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "546eb36cee8db40c3eaa46c351e67ffee6eeb5fa2650b71bc4c758a29a1b29b2";
+ };
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ py.test -k "not test_tilde_path_expansion"
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = http://www.python-excel.org/;
+ description = "Library for developers to extract data from Microsoft Excel (tm) spreadsheet files";
+ license = licenses.bsd0;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/xlsx2csv/default.nix b/nixpkgs/pkgs/development/python-modules/xlsx2csv/default.nix
new file mode 100644
index 00000000000..5faf56b7eba
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/xlsx2csv/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "xlsx2csv";
+ version = "0.7.6";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ff4121d42d318f31f71b248f37acfc21455a7d897a3c117b578744c89bc34f6c";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/bitprophet/alabaster;
+ description = "Convert xlsx to csv";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ jb55 ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/xlwt/default.nix b/nixpkgs/pkgs/development/python-modules/xlwt/default.nix
new file mode 100644
index 00000000000..5de0348e00e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/xlwt/default.nix
@@ -0,0 +1,26 @@
+{ buildPythonPackage
+, fetchPypi
+, nose
+, lib
+}:
+
+buildPythonPackage rec {
+ pname = "xlwt";
+ version = "1.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c59912717a9b28f1a3c2a98fd60741014b06b043936dcecbc113eaaada156c88";
+ };
+
+ checkInputs = [ nose ];
+ checkPhase = ''
+ nosetests -v
+ '';
+
+ meta = {
+ description = "Library to create spreadsheet files compatible with MS";
+ homepage = https://github.com/python-excel/xlwt;
+ license = with lib.licenses; [ bsdOriginal bsd3 lgpl21 ];
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/xml2rfc/default.nix b/nixpkgs/pkgs/development/python-modules/xml2rfc/default.nix
new file mode 100644
index 00000000000..f737cf344b8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/xml2rfc/default.nix
@@ -0,0 +1,40 @@
+{ lib, fetchPypi, buildPythonPackage, intervaltree, pyflakes, requests, lxml, google-i18n-address
+, pycountry, html5lib, six
+, stdenv
+}:
+
+buildPythonPackage rec {
+ pname = "xml2rfc";
+ version = "2.18.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "e192236798615f34479a9bb9f30df72ce0e5f319df75ecc0473d896713a17451";
+ };
+
+ propagatedBuildInputs = [
+ intervaltree
+ pyflakes
+ requests
+ lxml
+ google-i18n-address
+ pycountry
+ html5lib
+ six
+ ];
+
+ preCheck = ''
+ export HOME=$(mktemp -d)
+ '';
+
+ doCheck = !stdenv.isDarwin;
+
+ meta = with lib; {
+ description = "Tool generating IETF RFCs and drafts from XML sources";
+ homepage = https://tools.ietf.org/tools/xml2rfc/trac/;
+ # Well, parts might be considered unfree, if being strict; see:
+ # http://metadata.ftp-master.debian.org/changelogs/non-free/x/xml2rfc/xml2rfc_2.9.6-1_copyright
+ license = licenses.bsd3;
+ maintainers = [ maintainers.vcunat ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/xmlschema/default.nix b/nixpkgs/pkgs/development/python-modules/xmlschema/default.nix
new file mode 100644
index 00000000000..c021bde60cd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/xmlschema/default.nix
@@ -0,0 +1,39 @@
+{ lib, buildPythonPackage, fetchFromGitHub
+, elementpath
+, pytest
+}:
+
+buildPythonPackage rec {
+ version = "1.0.13";
+ pname = "xmlschema";
+
+ src = fetchFromGitHub {
+ owner = "sissaschool";
+ repo = "xmlschema";
+ rev = "v${version}";
+ sha256 = "182439gqhlxhr9rdi9ak33z4ffy1w9syhykkckkl6mq050c80qdr";
+ };
+
+ propagatedBuildInputs = [ elementpath ];
+
+ checkInputs = [ pytest ];
+
+ # Ignore broken fixtures, and tests for files which don't exist.
+ # For darwin, we need to explicity say we can't reach network
+ checkPhase = ''
+ substituteInPlace xmlschema/tests/__init__.py \
+ --replace "SKIP_REMOTE_TESTS = " "SKIP_REMOTE_TESTS = True #"
+ pytest . \
+ --ignore=xmlschema/tests/test_factory.py \
+ --ignore=xmlschema/tests/test_validators.py \
+ --ignore=xmlschema/tests/test_schemas.py \
+ -k 'not element_tree_import_script'
+ '';
+
+ meta = with lib; {
+ description = "XML Schema validator and data conversion library for Python";
+ homepage = "https://github.com/sissaschool/xmlschema";
+ license = licenses.mit;
+ maintainers = with maintainers; [ jonringer ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/xmltodict/default.nix b/nixpkgs/pkgs/development/python-modules/xmltodict/default.nix
new file mode 100644
index 00000000000..07250337f83
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/xmltodict/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, coverage
+, nose
+}:
+
+buildPythonPackage rec {
+ pname = "xmltodict";
+ version = "0.12.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "50d8c638ed7ecb88d90561beedbf720c9b4e851a9fa6c47ebd64e99d166d8a21";
+ };
+
+ checkInputs = [ coverage nose ];
+
+ checkPhase = ''
+ nosetests
+ '';
+
+ meta = {
+ description = "Makes working with XML feel like you are working with JSON";
+ homepage = https://github.com/martinblech/xmltodict;
+ license = lib.licenses.mit;
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/xmpppy/default.nix b/nixpkgs/pkgs/development/python-modules/xmpppy/default.nix
new file mode 100644
index 00000000000..ec725564f2b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/xmpppy/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, buildPythonPackage, fetchurl, isPy3k }:
+buildPythonPackage rec {
+ pname = "xmpp.py";
+ version = "0.5.0rc1";
+
+ patches = [ ./ssl.patch ];
+
+ src = fetchurl {
+ url = "mirror://sourceforge/xmpppy/xmpppy-${version}.tar.gz";
+ sha256 = "16hbh8kwc5n4qw2rz1mrs8q17rh1zq9cdl05b1nc404n7idh56si";
+ };
+
+ preInstall = ''
+ mkdir -p $out/bin $out/lib $out/share $(toPythonPath $out)
+ export PYTHONPATH=$PYTHONPATH:$(toPythonPath $out)
+ '';
+
+ disabled = isPy3k;
+
+ meta = with stdenv.lib; {
+ description = "XMPP python library";
+ homepage = http://xmpppy.sourceforge.net/;
+ license = licenses.gpl3;
+ maintainers = [ maintainers.mic92 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/xmpppy/ssl.patch b/nixpkgs/pkgs/development/python-modules/xmpppy/ssl.patch
new file mode 100644
index 00000000000..915602dc23e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/xmpppy/ssl.patch
@@ -0,0 +1,25 @@
+diff -wbBur xmpppy-0.5.0rc1/xmpp/transports.py xmpppy-0.5.0rc1.q/xmpp/transports.py
+--- xmpppy-0.5.0rc1/xmpp/transports.py 2009-04-07 12:34:09.000000000 +0400
++++ xmpppy-0.5.0rc1.q/xmpp/transports.py 2015-05-08 13:06:03.049252065 +0300
+@@ -27,7 +27,7 @@
+ Also exception 'error' is defined to allow capture of this module specific exceptions.
+ """
+
+-import socket,select,base64,dispatcher,sys
++import socket,ssl,select,base64,dispatcher,sys
+ from simplexml import ustr
+ from client import PlugIn
+ from protocol import *
+@@ -312,9 +312,9 @@
+ """ Immidiatedly switch socket to TLS mode. Used internally."""
+ """ Here we should switch pending_data to hint mode."""
+ tcpsock=self._owner.Connection
+- tcpsock._sslObj = socket.ssl(tcpsock._sock, None, None)
+- tcpsock._sslIssuer = tcpsock._sslObj.issuer()
+- tcpsock._sslServer = tcpsock._sslObj.server()
++ tcpsock._sslObj = ssl.wrap_socket(tcpsock._sock, None, None)
++ tcpsock._sslIssuer = tcpsock._sslObj.getpeercert().get('issuer')
++ tcpsock._sslServer = tcpsock._sslObj.getpeercert().get('server')
+ tcpsock._recv = tcpsock._sslObj.read
+ tcpsock._send = tcpsock._sslObj.write
+
diff --git a/nixpkgs/pkgs/development/python-modules/xnd/default.nix b/nixpkgs/pkgs/development/python-modules/xnd/default.nix
new file mode 100644
index 00000000000..558e414debf
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/xnd/default.nix
@@ -0,0 +1,29 @@
+{ buildPythonPackage
+, ndtypes
+, libndtypes
+, libxnd
+, isPy27
+}:
+
+buildPythonPackage {
+ pname = "xnd";
+ disabled = isPy27;
+ inherit (libxnd) version src meta;
+
+ propagatedBuildInputs = [ ndtypes ];
+
+ postPatch = ''
+ substituteInPlace setup.py \
+ --replace 'include_dirs = ["libxnd", "ndtypes/python/ndtypes"] + INCLUDES' \
+ 'include_dirs = ["${libndtypes}/include", "${ndtypes}/include", "${libxnd}/include"]' \
+ --replace 'library_dirs = ["libxnd", "ndtypes/libndtypes"] + LIBS' \
+ 'library_dirs = ["${libndtypes}/lib", "${libxnd}/lib"]' \
+ --replace 'runtime_library_dirs = ["$ORIGIN"]' \
+ 'runtime_library_dirs = ["${libndtypes}/lib", "${libxnd}/lib"]' \
+ '';
+
+ postInstall = ''
+ mkdir $out/include
+ cp python/xnd/*.h $out/include
+ '';
+}
diff --git a/nixpkgs/pkgs/development/python-modules/xstatic-bootbox/default.nix b/nixpkgs/pkgs/development/python-modules/xstatic-bootbox/default.nix
new file mode 100644
index 00000000000..1f60a0fbe6c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/xstatic-bootbox/default.nix
@@ -0,0 +1,25 @@
+{ buildPythonPackage
+, lib
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "XStatic-Bootbox";
+ version = "4.4.0.1";
+
+ src = fetchPypi {
+ inherit version pname;
+ sha256 = "1g00q38g1k576lxjlwglv4w3fj4z0z8lxlwpc66wyhjglj4r4bwd";
+ };
+
+ # no tests implemented
+ doCheck = false;
+
+ meta = with lib;{
+ homepage = http://bootboxjs.com;
+ description = "Bootboxjs packaged static files for python";
+ license = licenses.mit;
+ maintainers = with maintainers; [ makefu ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/xstatic-bootstrap/default.nix b/nixpkgs/pkgs/development/python-modules/xstatic-bootstrap/default.nix
new file mode 100644
index 00000000000..a474bf84d0f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/xstatic-bootstrap/default.nix
@@ -0,0 +1,25 @@
+{ buildPythonPackage
+, lib
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "XStatic-Bootstrap";
+ version = "3.3.7.1";
+
+ src = fetchPypi {
+ inherit version pname;
+ sha256 = "0c949e78e8cd77983fd803a68a98df0124e0c3a872fddb9ac8e6e5b4a487f131";
+ };
+
+ # no tests implemented
+ doCheck = false;
+
+ meta = with lib;{
+ homepage = http://getbootstrap.com;
+ description = "Bootstrap packaged static files for python";
+ license = licenses.mit;
+ maintainers = with maintainers; [ makefu ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/xstatic-jquery-file-upload/default.nix b/nixpkgs/pkgs/development/python-modules/xstatic-jquery-file-upload/default.nix
new file mode 100644
index 00000000000..e4352e3b984
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/xstatic-jquery-file-upload/default.nix
@@ -0,0 +1,28 @@
+{ buildPythonPackage
+, lib
+, fetchPypi
+, xstatic-jquery
+}:
+
+buildPythonPackage rec {
+ pname = "XStatic-jQuery-File-Upload";
+ version = "9.23.0.1";
+
+ src = fetchPypi {
+ inherit version pname;
+ sha256 = "649a500870b5f5d9cc71d1c1dc4c4d2242f459b02d811a771336217e4e91bfda";
+ };
+
+ # no tests implemented
+ doCheck = false;
+
+ propagatedBuildInputs = [ xstatic-jquery ];
+
+ meta = with lib;{
+ homepage = http://plugins.jquery.com/project/jQuery-File-Upload;
+ description = "jquery-file-upload packaged static files for python";
+ license = licenses.mit;
+ maintainers = with maintainers; [ makefu ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/xstatic-jquery-ui/default.nix b/nixpkgs/pkgs/development/python-modules/xstatic-jquery-ui/default.nix
new file mode 100644
index 00000000000..3424c8fcf6f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/xstatic-jquery-ui/default.nix
@@ -0,0 +1,28 @@
+{ buildPythonPackage
+, lib
+, fetchPypi
+, xstatic-jquery
+}:
+
+buildPythonPackage rec {
+ pname = "XStatic-jquery-ui";
+ version = "1.12.1.1";
+
+ src = fetchPypi {
+ inherit version pname;
+ sha256 = "d6ba48bb474420a8bcb2be02eef6ae96281ec24eff6befa54f04ebc9e4cc8910";
+ };
+
+ # no tests implemented
+ doCheck = false;
+
+ propagatedBuildInputs = [ xstatic-jquery ];
+
+ meta = with lib;{
+ homepage = http://jqueryui.com/;
+ description = "jquery-ui packaged static files for python";
+ license = licenses.mit;
+ maintainers = with maintainers; [ makefu ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/xstatic-jquery/default.nix b/nixpkgs/pkgs/development/python-modules/xstatic-jquery/default.nix
new file mode 100644
index 00000000000..8e3f084ca7f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/xstatic-jquery/default.nix
@@ -0,0 +1,25 @@
+{ buildPythonPackage
+, lib
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "XStatic-jQuery";
+ version = "3.3.1.1";
+
+ src = fetchPypi {
+ inherit version pname;
+ sha256 = "0xlgs4rlabzfcp8p2zspwpsljycb0djyrk7qy4qh76i7zkfhwn8j";
+ };
+
+ # no tests implemented
+ doCheck = false;
+
+ meta = with lib;{
+ homepage = https://jquery.org;
+ description = "jquery packaged static files for python";
+ license = licenses.mit;
+ maintainers = with maintainers; [ makefu ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/xstatic-pygments/default.nix b/nixpkgs/pkgs/development/python-modules/xstatic-pygments/default.nix
new file mode 100644
index 00000000000..956d331e7b8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/xstatic-pygments/default.nix
@@ -0,0 +1,25 @@
+{ buildPythonPackage
+, lib
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "XStatic-Pygments";
+ version = "2.2.0.1";
+
+ src = fetchPypi {
+ inherit version pname;
+ sha256 = "1rm073ag1hgwlazl52mng62wvnayz7ckr5ki341shvp9db1x2n51";
+ };
+
+ # no tests implemented
+ doCheck = false;
+
+ meta = with lib;{
+ homepage = http://pygments.org;
+ description = "pygments packaged static files for python";
+ license = licenses.mit;
+ maintainers = with maintainers; [ makefu ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/xstatic/default.nix b/nixpkgs/pkgs/development/python-modules/xstatic/default.nix
new file mode 100644
index 00000000000..bbfcce54d89
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/xstatic/default.nix
@@ -0,0 +1,25 @@
+{ buildPythonPackage
+, lib
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "XStatic";
+ version = "1.0.2";
+
+ src = fetchPypi {
+ inherit version pname;
+ sha256 = "80b78dfe37bce6dee4343d64c65375a80bcf399b46dd47c0c7d56161568a23a8";
+ };
+
+ # no tests implemented
+ doCheck = false;
+
+ meta = with lib;{
+ homepage = https://bitbucket.org/thomaswaldmann/xstatic;
+ description = "Base packaged static files for python";
+ license = licenses.mit;
+ maintainers = with maintainers; [ makefu ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/xvfbwrapper/default.nix b/nixpkgs/pkgs/development/python-modules/xvfbwrapper/default.nix
new file mode 100644
index 00000000000..c7708d0f20b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/xvfbwrapper/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, xorgserver
+, mock
+}:
+
+buildPythonPackage rec {
+ pname = "xvfbwrapper";
+ version = "0.2.9";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "097wxhvp01ikqpg1z3v8rqhss6f1vwr399zpz9a05d2135bsxx5w";
+ };
+ propagatedBuildInputs = [ xorgserver ];
+
+ # See: https://github.com/cgoldberg/xvfbwrapper/issues/30
+ doCheck = false;
+
+ checkInputs = [ mock ];
+
+ meta = with stdenv.lib; {
+ description = "Run headless display inside X virtual framebuffer (Xvfb)";
+ homepage = https://github.com/cgoldberg/xvfbwrapper;
+ license = licenses.mit;
+ maintainers = with maintainers; [ ashgillman ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/xxhash/default.nix b/nixpkgs/pkgs/development/python-modules/xxhash/default.nix
new file mode 100644
index 00000000000..da9ec8dc2d9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/xxhash/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ version = "1.3.0";
+ pname = "xxhash";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1rhrqrlq4n3vgqd1fv1dcc5ga5dzy9qbd40p8rsqqhh5klxg48gy";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/ifduyue/python-xxhash;
+ description = "Python Binding for xxHash https://pypi.org/project/xxhash/";
+ license = licenses.bsd2;
+ maintainers = [ maintainers.teh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/yahooweather/default.nix b/nixpkgs/pkgs/development/python-modules/yahooweather/default.nix
new file mode 100644
index 00000000000..38c060aa8e8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/yahooweather/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k }:
+
+buildPythonPackage rec {
+ pname = "yahooweather";
+ version = "0.10";
+
+ disabled = !isPy3k;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0bsxmngkpzvqm50i2cnxjzhpbdhb8s10ly8h5q08696cjihqdkpa";
+ };
+
+ # Tests require network access
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Provide an interface to the Yahoo! Weather RSS feed";
+ homepage = https://github.com/pvizeli/yahooweather;
+ license = licenses.bsd2;
+ maintainers = with maintainers; [ peterhoeg ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/yamllint/default.nix b/nixpkgs/pkgs/development/python-modules/yamllint/default.nix
new file mode 100644
index 00000000000..5c738c11f84
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/yamllint/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, nose, pyyaml, pathspec }:
+
+buildPythonPackage rec {
+ pname = "yamllint";
+ version = "1.17.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "04xarlbh59f9ah53jxrcpqpzladyfxaw6cb2g8clw9aid0qzi9kh";
+ };
+
+ checkInputs = [ nose ];
+
+ propagatedBuildInputs = [ pyyaml pathspec ];
+
+ # Two test failures
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A linter for YAML files";
+ homepage = https://github.com/adrienverge/yamllint;
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ mikefaille ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/yanc/default.nix b/nixpkgs/pkgs/development/python-modules/yanc/default.nix
new file mode 100644
index 00000000000..690b110fc93
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/yanc/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, buildPythonPackage, pythonOlder, fetchPypi, nose }:
+
+buildPythonPackage rec {
+ pname = "yanc";
+ version = "0.3.3";
+
+ # Tests fail on Python>=3.5. See: https://github.com/0compute/yanc/issues/10
+ disabled = !(pythonOlder "3.5");
+
+ checkInputs = [ nose ];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0z35bkk9phs40lf5061k1plhjdl5fskm0dmdikrsqi1bjihnxp8w";
+ };
+
+ checkPhase = ''
+ nosetests .
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Yet another nose colorer";
+ homepage = https://github.com/0compute/yanc;
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ jluttine ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/yapf/default.nix b/nixpkgs/pkgs/development/python-modules/yapf/default.nix
new file mode 100644
index 00000000000..abff04f2372
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/yapf/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "yapf";
+ version = "0.28.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "06x409cgr5im9cppzypj1kqy1fsry906vn5slv7i9hd7fshvd53g";
+ };
+
+ meta = with stdenv.lib; {
+ description = "A formatter for Python code.";
+ homepage = "https://github.com/google/yapf";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ siddharthist ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/yappi/default.nix b/nixpkgs/pkgs/development/python-modules/yappi/default.nix
new file mode 100644
index 00000000000..c98bc1f303e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/yappi/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildPythonPackage, fetchPypi, nose }:
+
+buildPythonPackage rec {
+ pname = "yappi";
+ version = "1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1gs48c5sy771lsjhca3m4j8ljc6yhk5qnim3n5idnlaxa4ql30bz";
+ };
+
+ patches = [ ./tests.patch ];
+
+ checkInputs = [ nose ];
+
+ meta = with lib; {
+ homepage = https://github.com/sumerc/yappi;
+ description = "Python profiler that supports multithreading and measuring CPU time";
+ license = licenses.mit;
+ maintainers = with maintainers; [ orivej ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/yappi/tests.patch b/nixpkgs/pkgs/development/python-modules/yappi/tests.patch
new file mode 100644
index 00000000000..bff4b28295b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/yappi/tests.patch
@@ -0,0 +1,12 @@
+--- a/tests/test_functionality.py
++++ b/tests/test_functionality.py
+@@ -74,2 +74,3 @@ class BasicUsage(utils.YappiUnitTestCase):
+
++ @_unittest.skip('wall-clock-time-sensitive')
+ def test_get_clock(self):
+--- a/tests/test_hooks.py
++++ b/tests/test_hooks.py
+@@ -124,2 +124,3 @@ class ContextIdCallbackTest(utils.YappiUnitTestCase):
+
++ @unittest.skip('wall-clock-time-sensitive')
+ def test_pause_resume(self):
diff --git a/nixpkgs/pkgs/development/python-modules/yapsy/default.nix b/nixpkgs/pkgs/development/python-modules/yapsy/default.nix
new file mode 100644
index 00000000000..dfdd3dd3c05
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/yapsy/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "Yapsy";
+ version = "1.12.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "12rznbnswfw0w7qfbvmmffr9r317gl1rqg36nijwzsklkjgks4fq";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = http://yapsy.sourceforge.net/;
+ description = "Yet another plugin system";
+ license = licenses.bsd0;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/yarg/default.nix b/nixpkgs/pkgs/development/python-modules/yarg/default.nix
new file mode 100644
index 00000000000..f49ed20b2b9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/yarg/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildPythonPackage, fetchFromGitHub, requests, nose, mock }:
+
+buildPythonPackage rec {
+ pname = "yarg";
+ version = "0.1.9";
+
+ src = fetchFromGitHub {
+ owner = "kura";
+ repo = pname;
+ rev = version;
+ sha256 = "1isq02s404fp9whkm8w2kvb2ik1sz0r258iby0q532zw81lga0d0";
+ };
+
+ propagatedBuildInputs = [ requests ];
+
+ checkInputs = [ nose mock ];
+ checkPhase = ''
+ nosetests
+ '';
+
+ meta = with lib; {
+ description = "An easy to use PyPI client";
+ homepage = https://yarg.readthedocs.io;
+ license = licenses.mit;
+ maintainers = with maintainers; [ psyanticy ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/yarl/default.nix b/nixpkgs/pkgs/development/python-modules/yarl/default.nix
new file mode 100644
index 00000000000..d07690503f3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/yarl/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, fetchPypi
+, buildPythonPackage
+, multidict
+, pytestrunner
+, pytest
+, idna
+}:
+
+buildPythonPackage rec {
+ pname = "yarl";
+ version = "1.3.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "024ecdc12bc02b321bc66b41327f930d1c2c543fa9a561b39861da9388ba7aa9";
+ };
+
+ checkInputs = [ pytest pytestrunner ];
+ propagatedBuildInputs = [ multidict idna ];
+
+ meta = with stdenv.lib; {
+ description = "Yet another URL library";
+ homepage = https://github.com/aio-libs/yarl/;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ dotlambda ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/yattag/default.nix b/nixpkgs/pkgs/development/python-modules/yattag/default.nix
new file mode 100644
index 00000000000..30518a19399
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/yattag/default.nix
@@ -0,0 +1,17 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "yattag";
+ version = "1.12.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1g0zhf09vs8cq0l5lx10dnqpimvg5mzh9k0z12n6nnfsw11cila7";
+ };
+
+ meta = with lib; {
+ description = "Generate HTML or XML in a pythonic way. Pure python alternative to web template engines. Can fill HTML forms with default values and error messages.";
+ license = [ licenses.lgpl21 ];
+ homepage = http://www.yattag.org/;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/yenc/default.nix b/nixpkgs/pkgs/development/python-modules/yenc/default.nix
new file mode 100644
index 00000000000..3c51d00ec14
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/yenc/default.nix
@@ -0,0 +1,29 @@
+{ 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 ];
+ };
+} \ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/yolk/default.nix b/nixpkgs/pkgs/development/python-modules/yolk/default.nix
new file mode 100644
index 00000000000..fe7f0cf466e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/yolk/default.nix
@@ -0,0 +1,23 @@
+{ lib, fetchurl, buildPythonApplication, pythonPackages }:
+
+with lib;
+
+buildPythonApplication rec {
+ pname = "yolk";
+ version = "0.4.3";
+
+ src = fetchurl {
+ url = "mirror://pypi/y/yolk/yolk-${version}.tar.gz";
+ sha256 = "1f6xwx210jnl5nq0m3agh2p1cxmaizawaf3fwq43q4yw050fn1qw";
+ };
+
+ buildInputs = with pythonPackages; [ nose ];
+
+ meta = {
+ description = "Command-line tool for querying PyPI and Python packages installed on your system";
+ homepage = https://github.com/cakebread/yolk;
+ maintainers = with maintainers; [];
+ license = licenses.bsd3;
+ };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/yowsup/argparse-dependency.patch b/nixpkgs/pkgs/development/python-modules/yowsup/argparse-dependency.patch
new file mode 100644
index 00000000000..e2b9f0c9a74
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/yowsup/argparse-dependency.patch
@@ -0,0 +1,13 @@
+diff --git a/setup.py b/setup.py
+index 991e89c..7a96ccf 100755
+--- a/setup.py
++++ b/setup.py
+@@ -5,7 +5,7 @@ import yowsup
+ import platform
+ import sys
+
+-deps = ['python-dateutil', 'argparse', 'python-axolotl>=0.1.39', 'six==1.10']
++deps = ['python-dateutil', 'python-axolotl>=0.1.39', 'six']
+
+ if sys.version_info < (2,7):
+ deps += ['importlib', "protobuf==3.4.0"]
diff --git a/nixpkgs/pkgs/development/python-modules/yowsup/default.nix b/nixpkgs/pkgs/development/python-modules/yowsup/default.nix
new file mode 100644
index 00000000000..5fa4af18c08
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/yowsup/default.nix
@@ -0,0 +1,35 @@
+{ buildPythonPackage, stdenv, fetchFromGitHub, six, python-axolotl, pytest
+, isPy3k
+}:
+
+buildPythonPackage rec {
+ pname = "yowsup";
+ version = "2.5.7";
+
+ # The Python 2.x support of this package is incompatible with `six==1.11`:
+ # https://github.com/tgalal/yowsup/issues/2416#issuecomment-365113486
+ disabled = !isPy3k;
+
+ src = fetchFromGitHub {
+ owner = "tgalal";
+ repo = "yowsup";
+ rev = "v${version}";
+ sha256 = "1p0hdj5x38v2cxjnhdnqcnp5g7la57mbi365m0z83wa01x2n73w6";
+ };
+
+ checkInputs = [ pytest ];
+ checkPhase = ''
+ HOME=$(mktemp -d) py.test yowsup
+ '';
+
+ patches = [ ./argparse-dependency.patch ];
+
+ propagatedBuildInputs = [ six python-axolotl ];
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/tgalal/yowsup";
+ description = "The python WhatsApp library";
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ ma27 ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/yt/default.nix b/nixpkgs/pkgs/development/python-modules/yt/default.nix
new file mode 100644
index 00000000000..845fba749d6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/yt/default.nix
@@ -0,0 +1,52 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, matplotlib
+, setuptools
+, sympy
+, numpy
+, ipython
+, hdf5
+, nose
+, cython
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "yt";
+ version = "3.5.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c8ef8eceb934dc189d63dc336109fad3002140a9a32b19f38d1812d5d5a30d71";
+ };
+
+ buildInputs = [
+ cython
+ ];
+
+ propagatedBuildInputs = [
+ matplotlib
+ setuptools
+ sympy
+ numpy
+ ipython
+ hdf5
+ ];
+
+ checkInputs = [
+ nose
+ ];
+
+ checkPhase = ''
+ cd $out/${python.sitePackages}
+ HOME=$(mktemp -d) nosetests yt
+ '';
+
+ meta = with lib; {
+ description = "An analysis and visualization toolkit for volumetric data";
+ homepage = https://github.com/yt-project/yt;
+ license = licenses.bsd3;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/yubico-client/default.nix b/nixpkgs/pkgs/development/python-modules/yubico-client/default.nix
new file mode 100644
index 00000000000..ddd992a5144
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/yubico-client/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildPythonPackage, fetchPypi
+, requests }:
+
+buildPythonPackage rec {
+ pname = "yubico-client";
+ version = "1.10.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0skkmrpvpb1pwyqjf3lh9vq46xagvwdx9kagpdbba2v5dgrk34d1";
+ };
+
+ propagatedBuildInputs = [ requests ];
+
+ # pypi package missing test_utils and github releases is behind
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Verifying Yubico OTPs based on the validation protocol version 2.0";
+ homepage = https://github.com/Kami/python-yubico-client/;
+ maintainers= with maintainers; [ peterromfeldhk ];
+ license = licenses.bsd3;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zake/default.nix b/nixpkgs/pkgs/development/python-modules/zake/default.nix
new file mode 100644
index 00000000000..56fdbe45553
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zake/default.nix
@@ -0,0 +1,35 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, kazoo
+, six
+, testtools
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "zake";
+ version = "0.2.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1rp4xxy7qp0s0wnq3ig4ji8xsl31g901qkdp339ndxn466cqal2s";
+ };
+
+ propagatedBuildInputs = [ kazoo six ];
+ buildInputs = [ testtools ];
+ checkPhase = ''
+ # Skip test - fails with our new kazoo version
+ substituteInPlace zake/tests/test_client.py \
+ --replace "test_child_watch_no_create" "_test_child_watch_no_create"
+
+ ${python.interpreter} -m unittest discover zake/tests
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/yahoo/Zake";
+ description = "A python package that works to provide a nice set of testing utilities for the kazoo library";
+ license = licenses.asl20;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zarr/default.nix b/nixpkgs/pkgs/development/python-modules/zarr/default.nix
new file mode 100644
index 00000000000..5570688e98b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zarr/default.nix
@@ -0,0 +1,46 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, setuptools_scm
+, asciitree
+, numpy
+, fasteners
+, numcodecs
+, pytest
+}:
+
+buildPythonPackage rec {
+ pname = "zarr";
+ version = "2.3.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c62d0158fb287151c978904935a177b3d2d318dea3057cfbeac8541915dfa105";
+ };
+
+ nativeBuildInputs = [
+ setuptools_scm
+ ];
+
+ propagatedBuildInputs = [
+ asciitree
+ numpy
+ fasteners
+ numcodecs
+ ];
+
+ checkInputs = [
+ pytest
+ ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with lib; {
+ description = "An implementation of chunked, compressed, N-dimensional arrays for Python";
+ homepage = https://github.com/zarr-developers/zarr;
+ license = licenses.mit;
+ maintainers = [ maintainers.costrouc ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zbaemon/default.nix b/nixpkgs/pkgs/development/python-modules/zbaemon/default.nix
new file mode 100644
index 00000000000..c15e46e5d0d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zbaemon/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, zconfig
+}:
+
+buildPythonPackage rec {
+ pname = "zdaemon";
+ version = "4.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f249fc6885646d165d7d6b228a7b71f5170fc7117de9e0688271f8fb97840f72";
+ };
+
+ propagatedBuildInputs = [ zconfig ];
+
+ # too many deps..
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A daemon process control library and tools for Unix-based systems";
+ homepage = https://pypi.python.org/pypi/zdaemon;
+ license = licenses.zpl20;
+ maintainers = with maintainers; [ goibhniu ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zbase32/default.nix b/nixpkgs/pkgs/development/python-modules/zbase32/default.nix
new file mode 100644
index 00000000000..a5002e80f49
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zbase32/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, 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 stdenv.lib; {
+ description = "zbase32, a base32 encoder/decoder";
+ homepage = https://pypi.python.org/pypi/zbase32;
+ license = licenses.bsd0;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zc_lockfile/default.nix b/nixpkgs/pkgs/development/python-modules/zc_lockfile/default.nix
new file mode 100644
index 00000000000..110b7000e73
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zc_lockfile/default.nix
@@ -0,0 +1,26 @@
+{ buildPythonPackage
+, fetchPypi
+, mock
+, zope_testing
+, stdenv
+}:
+
+buildPythonPackage rec {
+ pname = "zc.lockfile";
+ version = "1.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0lrj2zdr06sff7i151710jbbnnhx4phdc0qpns8jkarpd62f7a4m";
+ };
+
+ buildInputs = [ mock ];
+ propagatedBuildInputs = [ zope_testing ];
+
+ meta = with stdenv.lib; {
+ description = "Inter-process locks";
+ homepage = https://www.python.org/pypi/zc.lockfile;
+ license = licenses.zpl20;
+ maintainers = with maintainers; [ goibhniu ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zconfig/default.nix b/nixpkgs/pkgs/development/python-modules/zconfig/default.nix
new file mode 100644
index 00000000000..f68164284da
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zconfig/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, fetchPypi
+, buildPythonPackage
+, zope_testrunner
+, manuel
+, docutils
+}:
+
+buildPythonPackage rec {
+ pname = "ZConfig";
+ version = "3.5.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0s7aycxna07a04b4rswbkj4y5qh3gxy2mcsqb9dmy0iimj9f9550";
+ };
+
+ patches = stdenv.lib.optional stdenv.hostPlatform.isMusl ./remove-setlocale-test.patch;
+
+ buildInputs = [ manuel docutils ];
+ propagatedBuildInputs = [ zope_testrunner ];
+
+ meta = with stdenv.lib; {
+ description = "Structured Configuration Library";
+ homepage = https://pypi.python.org/pypi/ZConfig;
+ license = licenses.zpl20;
+ maintainers = [ maintainers.goibhniu ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zconfig/remove-setlocale-test.patch b/nixpkgs/pkgs/development/python-modules/zconfig/remove-setlocale-test.patch
new file mode 100644
index 00000000000..6b3d3266b21
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zconfig/remove-setlocale-test.patch
@@ -0,0 +1,24 @@
+From 43fd87037be1c98b6afa20f179f2e2d8ef5491ba Mon Sep 17 00:00:00 2001
+From: Will Dietz <w@wdtz.org>
+Date: Fri, 20 Jul 2018 10:07:22 -0500
+Subject: [PATCH] remove test that fails w/musl (setlocale() always succeeds)
+
+---
+ ZConfig/tests/test_datatypes.py | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/ZConfig/tests/test_datatypes.py b/ZConfig/tests/test_datatypes.py
+index 7c8d80c..addecd2 100644
+--- a/ZConfig/tests/test_datatypes.py
++++ b/ZConfig/tests/test_datatypes.py
+@@ -229,7 +229,6 @@ class DatatypeTestCase(unittest.TestCase):
+ convert = self.types.get("locale")
+ # Python supports "C" even when the _locale module is not available
+ self.assertEqual(convert("C"), "C")
+- self.assertRaises(ValueError, convert, "locale-does-not-exist")
+
+ def test_datatype_port(self):
+ convert = self.types.get("port-number")
+--
+2.18.0
+
diff --git a/nixpkgs/pkgs/development/python-modules/zdaemon/default.nix b/nixpkgs/pkgs/development/python-modules/zdaemon/default.nix
new file mode 100644
index 00000000000..c15e46e5d0d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zdaemon/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, zconfig
+}:
+
+buildPythonPackage rec {
+ pname = "zdaemon";
+ version = "4.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f249fc6885646d165d7d6b228a7b71f5170fc7117de9e0688271f8fb97840f72";
+ };
+
+ propagatedBuildInputs = [ zconfig ];
+
+ # too many deps..
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A daemon process control library and tools for Unix-based systems";
+ homepage = https://pypi.python.org/pypi/zdaemon;
+ license = licenses.zpl20;
+ maintainers = with maintainers; [ goibhniu ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zeep/default.nix b/nixpkgs/pkgs/development/python-modules/zeep/default.nix
new file mode 100644
index 00000000000..72a6e1ba229
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zeep/default.nix
@@ -0,0 +1,85 @@
+{ fetchPypi
+, lib
+, fetchpatch
+, buildPythonPackage
+, isPy3k
+, appdirs
+, attrs
+, cached-property
+, defusedxml
+, isodate
+, lxml
+, requests
+, requests_toolbelt
+, six
+, pytz
+, tornado
+, aiohttp
+# test dependencies
+, freezegun
+, mock
+, pretend
+, pytest
+, pytestcov
+, requests-mock
+, aioresponses
+}:
+
+buildPythonPackage rec {
+ pname = "zeep";
+ version = "3.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0e98669cfeb60756231ae185498f9ae21b30b2681786b8de58ed34c3b93e41dd";
+ };
+
+ patches = [
+ ( fetchpatch {
+ url = "https://github.com/mvantellingen/python-zeep/pull/1006/commits/ba7edd6bf2b31023b31e8f17c161e1d6d5af3d29.patch";
+ sha256 = "1j0jd5hmh457im9sbawaqf6pnfy36fhr9wqdim8wk5da9ixr0ajs";
+ })
+ ];
+
+ propagatedBuildInputs = [
+ appdirs
+ attrs
+ cached-property
+ defusedxml
+ isodate
+ lxml
+ requests
+ requests_toolbelt
+ six
+ pytz
+
+ # optional requirements
+ tornado
+ ] ++ lib.optional isPy3k aiohttp;
+
+ checkInputs = [
+ freezegun
+ mock
+ pretend
+ pytestcov
+ pytest
+ requests-mock
+ ] ++ lib.optional isPy3k aioresponses;
+
+ checkPhase = ''
+ runHook preCheck
+ # fix compatibility with pytest 4
+ substituteInPlace tests/conftest.py \
+ --replace 'request.node.get_marker("requests")' 'request.node.get_closest_marker("requests")'
+ # ignored tests requires xmlsec python module
+ HOME=$(mktemp -d) pytest tests --ignore tests/test_wsse_signature.py
+ runHook postCheck
+ '';
+
+ meta = with lib; {
+ homepage = http://docs.python-zeep.org;
+ license = licenses.mit;
+ description = "A modern/fast Python SOAP client based on lxml / requests";
+ maintainers = with maintainers; [ rvl ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zerobin/default.nix b/nixpkgs/pkgs/development/python-modules/zerobin/default.nix
new file mode 100644
index 00000000000..ce993d3d41a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zerobin/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, cherrypy
+, bottle
+, lockfile
+, clize
+}:
+
+buildPythonPackage {
+ pname = "zerobin";
+ version = "20160108";
+
+ src = fetchFromGitHub {
+ owner = "sametmax";
+ repo = "0bin";
+ rev = "7da1615";
+ sha256 = "1pzcwy454kn5216pvwjqzz311s6jbh7viw9s6kw4xps6f5h44bid";
+ };
+
+ propagatedBuildInputs = [ cherrypy bottle lockfile clize ];
+
+ # zerobin doesn't have any tests, but includes a copy of cherrypy which
+ # can wrongly fail the check phase.
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "A client side encrypted pastebin";
+ homepage = https://0bin.net/;
+ license = licenses.wtfpl;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zeroc-ice/default.nix b/nixpkgs/pkgs/development/python-modules/zeroc-ice/default.nix
new file mode 100644
index 00000000000..978f8749d3b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zeroc-ice/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi, openssl, bzip2 }:
+
+buildPythonPackage rec {
+ pname = "zeroc-ice";
+ version = "3.7.2";
+
+ src = fetchPypi {
+ inherit version pname;
+ sha256 = "1bs7h3k9nd1gls2azgp8gz9407cslxbi2x1gspab8p87a61pjim8";
+ };
+
+ buildInputs = [ openssl bzip2 ];
+
+ meta = with stdenv.lib; {
+ homepage = https://zeroc.com/;
+ license = licenses.gpl2;
+ description = "Comprehensive RPC framework with support for Python, C++, .NET, Java, JavaScript and more.";
+ maintainers = with maintainers; [ abbradar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zeroconf/default.nix b/nixpkgs/pkgs/development/python-modules/zeroconf/default.nix
new file mode 100644
index 00000000000..dbf84aa182b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zeroconf/default.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, ifaddr
+, typing
+, isPy27
+, pythonOlder
+, python
+}:
+
+buildPythonPackage rec {
+ pname = "zeroconf";
+ version = "0.23.0";
+ disabled = isPy27;
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1xgfs38wv52a73p9gmyz0vxj6c49516isjn9bhp8p3y4cywk7hz0";
+ };
+
+ propagatedBuildInputs = [ ifaddr ]
+ ++ stdenv.lib.optionals (pythonOlder "3.5") [ typing ];
+
+ # tests not included with pypi release
+ doCheck = false;
+
+ checkPhase = ''
+ ${python.interpreter} test_zeroconf.py
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A pure python implementation of multicast DNS service discovery";
+ homepage = https://github.com/jstasiak/python-zeroconf;
+ license = licenses.lgpl21;
+ maintainers = with maintainers; [ abbradar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zerorpc/default.nix b/nixpkgs/pkgs/development/python-modules/zerorpc/default.nix
new file mode 100644
index 00000000000..2ad01586189
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zerorpc/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildPythonPackage, fetchPypi, future, gevent, msgpack-python, pyzmq }:
+
+buildPythonPackage rec {
+ pname = "zerorpc";
+ version = "0.6.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "14d0nmprs0nm17d8kg2f7qalsi8x7c4damsccqgncylj7mpnk9hh";
+ };
+
+ propagatedBuildInputs = [ future gevent msgpack-python pyzmq ];
+
+ doCheck = false; # pypi version doesn't include tests
+
+ meta = with lib; {
+ description = "An easy to use, intuitive, and cross-language RPC";
+ homepage = "https://www.zerorpc.io";
+ license = licenses.mit;
+ maintainers = with maintainers; [ xeji ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zetup/default.nix b/nixpkgs/pkgs/development/python-modules/zetup/default.nix
new file mode 100644
index 00000000000..dcebf7d4ecf
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zetup/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, setuptools_scm, pathpy, nbconvert
+, pytest }:
+
+buildPythonPackage rec {
+ pname = "zetup";
+ version = "0.2.52";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "9ce97276acf0425499251c5eb700f6a3820adc52859df1e03c6d0f0b88a452cd";
+ };
+
+ # Python 3.7 compatibility
+ # See https://github.com/zimmermanncode/zetup/pull/1
+ postPatch = ''
+ substituteInPlace zetup/zetup_config.py \
+ --replace "'3.6']" "'3.6', '3.7']"
+ '';
+
+ checkPhase = ''
+ py.test test -k "not TestObject" --deselect=test/test_zetup_config.py::test_classifiers
+ '';
+
+ checkInputs = [ pytest pathpy nbconvert ];
+ propagatedBuildInputs = [ setuptools_scm ];
+
+ meta = with stdenv.lib; {
+ description = ''
+ Zimmermann's Extensible Tools for Unified Project setups
+ '';
+ homepage = https://github.com/zimmermanncode/zetup;
+ license = licenses.gpl3Plus;
+ platforms = platforms.unix;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zfec/default.nix b/nixpkgs/pkgs/development/python-modules/zfec/default.nix
new file mode 100644
index 00000000000..9193c2ddc08
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zfec/default.nix
@@ -0,0 +1,39 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, setuptoolsDarcs
+, pyutil
+}:
+
+buildPythonPackage rec {
+ pname = "zfec";
+ version = "1.5.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "b41bd4b0af9c6b3a78bd6734e1e4511475944164375e6241b53df518a366922b";
+ };
+
+ buildInputs = [ setuptoolsDarcs ];
+ propagatedBuildInputs = [ pyutil ];
+
+ # argparse is in the stdlib but zfec doesn't know that.
+ postPatch = ''
+ sed -i -e '/argparse/d' setup.py
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = http://allmydata.org/trac/zfec;
+ description = "Zfec, a fast erasure codec which can be used with the command-line, C, Python, or Haskell";
+ longDescription = ''
+ Fast, portable, programmable erasure coding a.k.a. "forward
+ error correction": the generation of redundant blocks of
+ information such that if some blocks are lost then the
+ original data can be recovered from the remaining blocks. The
+ zfec package includes command-line tools, C API, Python API,
+ and Haskell API.
+ '';
+ license = licenses.gpl2Plus;
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zict/default.nix b/nixpkgs/pkgs/development/python-modules/zict/default.nix
new file mode 100644
index 00000000000..42f0218c846
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zict/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, pytest, heapdict }:
+
+buildPythonPackage rec {
+ pname = "zict";
+ version = "1.0.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "04532600mnsvzv43l2jvjrn7sflg0wkjqzy7nj7m3vvxm5gd4kg3";
+ };
+
+ buildInputs = [ pytest ];
+ propagatedBuildInputs = [ heapdict ];
+
+ meta = with stdenv.lib; {
+ description = "Mutable mapping tools.";
+ homepage = https://github.com/dask/zict;
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ teh ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zipfile36/default.nix b/nixpkgs/pkgs/development/python-modules/zipfile36/default.nix
new file mode 100644
index 00000000000..2148dcc4b80
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zipfile36/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, python
+, isPy3k
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+ pname = "zipfile36";
+ version = "0.1.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a78a8dddf4fa114f7fe73df76ffcce7538e23433b7a6a96c1c904023f122aead";
+ };
+
+ checkPhase = ''
+ ${python.interpreter} -m unittest test_zipfile.py
+ '';
+
+ # Only works with Python 3.x.
+ # Not supposed to be used with 3.6 and up.
+ disabled = !(isPy3k && (pythonOlder "3.6"));
+
+ meta = {
+ description = "Read and write ZIP files - backport of the zipfile module from Python 3.6";
+ homepage = https://gitlab.com/takluyver/zipfile36;
+ license = lib.licenses.psfl;
+ maintainers = lib.maintainers.fridh;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zipp/default.nix b/nixpkgs/pkgs/development/python-modules/zipp/default.nix
new file mode 100644
index 00000000000..29153b068fc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zipp/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, setuptools_scm
+, pytest
+, pytest-flake8
+}:
+
+buildPythonPackage rec {
+ pname = "zipp";
+ version = "0.5.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "ca943a7e809cc12257001ccfb99e3563da9af99d52f261725e96dfe0f9275bc3";
+ };
+
+ nativeBuildInputs = [ setuptools_scm ];
+
+ 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/nixpkgs/pkgs/development/python-modules/zipstream/default.nix b/nixpkgs/pkgs/development/python-modules/zipstream/default.nix
new file mode 100644
index 00000000000..4d5fabe7fca
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zipstream/default.nix
@@ -0,0 +1,20 @@
+{ lib, buildPythonPackage, fetchPypi, nose }:
+
+buildPythonPackage rec {
+ pname = "zipstream";
+ version = "1.1.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "01im5anqdyggmwkigqcjg0qw2a5bnn84h33mfaqjjd69a28lpwif";
+ };
+
+ checkInputs = [ nose ];
+
+ meta = {
+ description = "A zip archive generator";
+ homepage = https://github.com/allanlei/python-zipstream;
+ license = lib.licenses.gpl3Plus;
+ maintainers = with lib.maintainers; [ primeos ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zm-py/default.nix b/nixpkgs/pkgs/development/python-modules/zm-py/default.nix
new file mode 100644
index 00000000000..72c32ef8277
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zm-py/default.nix
@@ -0,0 +1,29 @@
+{ lib, fetchPypi, buildPythonPackage, isPy3k
+, pytest, requests }:
+
+buildPythonPackage rec {
+ pname = "zm-py";
+ version = "0.3.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "7cac73bd4f5e729fd8b3cff6f456652c3fd76b1a11f5d539bc7e14ffc7a87e9a";
+ };
+
+ disabled = !isPy3k;
+
+ propagatedBuildInputs = [ requests ];
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ PYTHONPATH="./zoneminder:$PYTHONPATH" pytest
+ '';
+
+ meta = with lib; {
+ description = "A loose python wrapper around the ZoneMinder REST API";
+ homepage = https://github.com/rohankapoorcom/zm-py;
+ license = licenses.asl20;
+ maintainers = with maintainers; [ peterhoeg ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zodb/default.nix b/nixpkgs/pkgs/development/python-modules/zodb/default.nix
new file mode 100644
index 00000000000..c7935208536
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zodb/default.nix
@@ -0,0 +1,57 @@
+{ stdenv
+, fetchPypi
+, buildPythonPackage
+, python
+, zope_testrunner
+, transaction
+, six
+, zope_interface
+, zodbpickle
+, zconfig
+, persistent
+, zc_lockfile
+, BTrees
+, manuel
+}:
+
+buildPythonPackage rec {
+ pname = "ZODB";
+ version = "5.5.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "20155942fa326e89ad8544225bafd74237af332ce9d7c7105a22318fe8269666";
+ };
+
+ # remove broken test
+ postPatch = ''
+ rm -vf src/ZODB/tests/testdocumentation.py
+ '';
+
+ propagatedBuildInputs = [
+ transaction
+ six
+ zope_interface
+ zodbpickle
+ zconfig
+ persistent
+ zc_lockfile
+ BTrees
+ ];
+
+ checkInputs = [
+ manuel
+ zope_testrunner
+ ];
+
+ checkPhase = ''
+ ${python.interpreter} -m zope.testrunner --test-path=src []
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Zope Object Database: object database and persistence";
+ homepage = https://pypi.python.org/pypi/ZODB;
+ license = licenses.zpl21;
+ maintainers = with maintainers; [ goibhniu ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zodbpickle/default.nix b/nixpkgs/pkgs/development/python-modules/zodbpickle/default.nix
new file mode 100644
index 00000000000..1e577fc487c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zodbpickle/default.nix
@@ -0,0 +1,22 @@
+{ buildPythonPackage
+, isPyPy
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "zodbpickle";
+ version = "1.0.4";
+ disabled = isPyPy; # https://github.com/zopefoundation/zodbpickle/issues/10
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0n4hng2zil1j8sbz0b83pxx8ndlh34h2mnmli3bqjmnrbry5zlr5";
+ };
+
+ # fails..
+ doCheck = false;
+
+ meta = {
+ homepage = https://pypi.python.org/pypi/zodbpickle;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zope-deferredimport/default.nix b/nixpkgs/pkgs/development/python-modules/zope-deferredimport/default.nix
new file mode 100644
index 00000000000..f447d29f280
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zope-deferredimport/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, zope_proxy
+, zope_testrunner
+}:
+
+buildPythonPackage rec {
+ pname = "zope-deferredimport";
+ version = "4.3";
+
+ src = fetchPypi {
+ pname = "zope.deferredimport";
+ inherit version;
+ sha256 = "2ddef5a7ecfff132a2dd796253366ecf9748a446e30f1a0b3a636aec9d9c05c5";
+ };
+
+ propagatedBuildInputs = [ zope_proxy ];
+
+ checkInputs = [ zope_testrunner ];
+
+ checkPhase = ''
+ zope-testrunner --test-path=src []
+ '';
+
+ meta = with lib; {
+ description = "Allows you to perform imports names that will only be resolved when used in the code";
+ homepage = https://github.com/zopefoundation/zope.deferredimport;
+ license = licenses.zpl21;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zope-hookable/default.nix b/nixpkgs/pkgs/development/python-modules/zope-hookable/default.nix
new file mode 100644
index 00000000000..0b7bc80bf3a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zope-hookable/default.nix
@@ -0,0 +1,24 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, zope_testing
+}:
+
+buildPythonPackage rec {
+ pname = "zope-hookable";
+ version = "4.2.0";
+
+ src = fetchPypi {
+ pname = "zope.hookable";
+ inherit version;
+ sha256 = "c1df3929a3666fc5a0c80d60a0c1e6f6ef97c7f6ed2f1b7cf49f3e6f3d4dde15";
+ };
+
+ checkInputs = [ zope_testing ];
+
+ meta = with lib; {
+ description = "Supports the efficient creation of “hookable” objects";
+ homepage = https://github.com/zopefoundation/zope.hookable;
+ license = licenses.zpl21;
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zope_broken/default.nix b/nixpkgs/pkgs/development/python-modules/zope_broken/default.nix
new file mode 100644
index 00000000000..df3a2053ebf
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zope_broken/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, zope_interface
+}:
+
+buildPythonPackage rec {
+ pname = "zope.broken";
+ version = "3.6.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ extension = "zip";
+ sha256 = "b9b8776002da4f7b6b12dfcce77eb642ae62b39586dbf60e1d9bdc992c9f2999";
+ };
+
+ buildInputs = [ zope_interface ];
+
+ meta = with stdenv.lib; {
+ homepage = http://pypi.python.org/pypi/zope.broken;
+ description = "Zope Broken Object Interfaces";
+ license = licenses.zpl20;
+ maintainers = with maintainers; [ goibhniu ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zope_component/default.nix b/nixpkgs/pkgs/development/python-modules/zope_component/default.nix
new file mode 100644
index 00000000000..bbe635b712f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zope_component/default.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, zope-deferredimport
+, zope_deprecation
+, zope_event
+, zope-hookable
+, zope_interface
+, zope_configuration
+, zope_i18nmessageid
+}:
+
+buildPythonPackage rec {
+ pname = "zope.component";
+ version = "4.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6edfd626c3b593b72895a8cfcf79bff41f4619194ce996a85bce31ac02b94e55";
+ };
+
+ propagatedBuildInputs = [
+ zope-deferredimport zope_deprecation zope_event zope-hookable zope_interface
+ zope_configuration zope_i18nmessageid
+ ];
+
+ # ignore tests because of a circular dependency on zope_security
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/zopefoundation/zope.component;
+ description = "Zope Component Architecture";
+ license = licenses.zpl20;
+ maintainers = with maintainers; [ goibhniu ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zope_configuration/default.nix b/nixpkgs/pkgs/development/python-modules/zope_configuration/default.nix
new file mode 100644
index 00000000000..e0ec7bd6ca8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zope_configuration/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, zope_i18nmessageid
+, zope_schema
+, zope_testrunner
+, manuel
+}:
+
+buildPythonPackage rec {
+ pname = "zope.configuration";
+ version = "4.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6e16747f9fd6b9d8f09d78edf2a6f539cad0fa4ad49d8deb9cf63447cc4168e1";
+ };
+
+ checkInputs = [ zope_testrunner manuel ];
+
+ propagatedBuildInputs = [ zope_i18nmessageid zope_schema ];
+
+ # Need to investigate how to run the tests with zope-testrunner
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Zope Configuration Markup Language (ZCML)";
+ homepage = https://github.com/zopefoundation/zope.configuration;
+ license = licenses.zpl20;
+ maintainers = with maintainers; [ goibhniu ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zope_contenttype/default.nix b/nixpkgs/pkgs/development/python-modules/zope_contenttype/default.nix
new file mode 100644
index 00000000000..9dac64907be
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zope_contenttype/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "zope.contenttype";
+ version = "4.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "08c0408f515668e6f0c4fd492b66fbe87a074c1aa21cfc6be8c6292482d8b2f4";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/zopefoundation/zope.contenttype;
+ description = "A utility module for content-type (MIME type) handling";
+ license = licenses.zpl20;
+ maintainers = with maintainers; [ goibhniu ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zope_copy/default.nix b/nixpkgs/pkgs/development/python-modules/zope_copy/default.nix
new file mode 100644
index 00000000000..4d6e740278e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zope_copy/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, zope_interface
+, zope_location
+, zope_schema
+}:
+
+
+buildPythonPackage rec {
+ pname = "zope.copy";
+ version = "4.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "47bb9d09ff06c600b446f220f47a742396598ac4828d738d3d85e6490629a71a";
+ };
+
+ propagatedBuildInputs = [ zope_interface ];
+
+ checkInputs = [ zope_location zope_schema ];
+
+ checkPhase = ''
+ python -m unittest discover -s src/zope/copy
+ '';
+
+ meta = {
+ maintainers = with lib.maintainers; [ domenkozar ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zope_deprecation/default.nix b/nixpkgs/pkgs/development/python-modules/zope_deprecation/default.nix
new file mode 100644
index 00000000000..b56e1969711
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zope_deprecation/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, zope_testing
+}:
+
+buildPythonPackage rec {
+ pname = "zope.deprecation";
+ version = "4.4.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0d453338f04bacf91bbfba545d8bcdf529aa829e67b705eac8c1a7fdce66e2df";
+ };
+
+ buildInputs = [ zope_testing ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/zopefoundation/zope.deprecation;
+ description = "Zope Deprecation Infrastructure";
+ license = licenses.zpl20;
+ maintainers = with maintainers; [ domenkozar ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zope_dottedname/default.nix b/nixpkgs/pkgs/development/python-modules/zope_dottedname/default.nix
new file mode 100644
index 00000000000..d2a21fd03b0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zope_dottedname/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "zope.dottedname";
+ version = "4.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0cec09844d309550359ac1941abfcd9141e213f67f3c19bb8f90360c40787576";
+ };
+
+ meta = with stdenv.lib; {
+ homepage = http://pypi.python.org/pypi/zope.dottedname;
+ description = "Resolver for Python dotted names";
+ license = licenses.zpl20;
+ maintainers = with maintainers; [ goibhniu ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zope_event/default.nix b/nixpkgs/pkgs/development/python-modules/zope_event/default.nix
new file mode 100644
index 00000000000..3dea7adcb00
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zope_event/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+ pname = "zope.event";
+ version = "4.4";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "69c27debad9bdacd9ce9b735dad382142281ac770c4a432b533d6d65c4614bcf";
+ };
+
+ meta = with stdenv.lib; {
+ description = "An event publishing system";
+ homepage = https://pypi.python.org/pypi/zope.event;
+ license = licenses.zpl20;
+ maintainers = with maintainers; [ goibhniu ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zope_exceptions/default.nix b/nixpkgs/pkgs/development/python-modules/zope_exceptions/default.nix
new file mode 100644
index 00000000000..dbbba691edb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zope_exceptions/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, zope_interface
+}:
+
+buildPythonPackage rec {
+ pname = "zope.exceptions";
+ version = "4.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "5fa59c3c1044bb9448aeec8328db0bfceaae2a2174e88528d3fe04adf8d47211";
+ };
+
+ propagatedBuildInputs = [ zope_interface ];
+
+ # circular deps
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Exception interfaces and implementations";
+ homepage = https://pypi.python.org/pypi/zope.exceptions;
+ license = licenses.zpl20;
+ maintainers = with maintainers; [ goibhniu ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zope_filerepresentation/default.nix b/nixpkgs/pkgs/development/python-modules/zope_filerepresentation/default.nix
new file mode 100644
index 00000000000..36d664efd1a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zope_filerepresentation/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, zope_schema
+}:
+
+buildPythonPackage rec {
+ pname = "zope.filerepresentation";
+ version = "4.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "c9bff2b2492b2fe716ee54538441a98d6145d1de87dd921eaa44ac834fbb63b6";
+ };
+
+ propagatedBuildInputs = [ zope_schema ];
+
+ meta = with stdenv.lib; {
+ homepage = http://zopefilerepresentation.readthedocs.io/;
+ description = "File-system Representation Interfaces";
+ license = licenses.zpl20;
+ maintainers = with maintainers; [ goibhniu ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zope_i18n/default.nix b/nixpkgs/pkgs/development/python-modules/zope_i18n/default.nix
new file mode 100644
index 00000000000..aad822bca59
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zope_i18n/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytz
+, zope_component
+}:
+
+buildPythonPackage rec {
+ pname = "zope.i18n";
+ version = "4.6.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "229de41f751dae36b1ef9fa284bc548ef40169234bf0d2199e41581e16304621";
+ };
+
+ propagatedBuildInputs = [ pytz zope_component ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/zopefoundation/zope.i18n;
+ description = "Zope Internationalization Support";
+ license = licenses.zpl20;
+ maintainers = with maintainers; [ goibhniu ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zope_i18nmessageid/default.nix b/nixpkgs/pkgs/development/python-modules/zope_i18nmessageid/default.nix
new file mode 100644
index 00000000000..cddcad00774
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zope_i18nmessageid/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+}:
+
+buildPythonPackage rec {
+ pname = "zope.i18nmessageid";
+ version = "4.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "e511edff8e75d3a6f84d8256e1e468c85a4aa9d89c2ea264a919334fae7081e3";
+ };
+
+ propagatedBuildInputs = [ six ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/zopefoundation/zope.i18nmessageid;
+ description = "Message Identifiers for internationalization";
+ license = licenses.zpl20;
+ maintainers = with maintainers; [ goibhniu ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zope_interface/default.nix b/nixpkgs/pkgs/development/python-modules/zope_interface/default.nix
new file mode 100644
index 00000000000..a5855697ad6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zope_interface/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, zope_event
+}:
+
+buildPythonPackage rec {
+ pname = "zope.interface";
+ version = "4.6.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1b3d0dcabc7c90b470e59e38a9acaa361be43b3a6ea644c0063951964717f0e5";
+ };
+
+ propagatedBuildInputs = [ zope_event ];
+
+ meta = with stdenv.lib; {
+ description = "Zope.Interface";
+ homepage = http://zope.org/Products/ZopeInterface;
+ license = licenses.zpl20;
+ maintainers = [ maintainers.goibhniu ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zope_lifecycleevent/default.nix b/nixpkgs/pkgs/development/python-modules/zope_lifecycleevent/default.nix
new file mode 100644
index 00000000000..738b30c489f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zope_lifecycleevent/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, zope_event
+, zope_component
+}:
+
+buildPythonPackage rec {
+ pname = "zope.lifecycleevent";
+ version = "4.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "7ec39087cc1524e55557e7d9dc6295eb1b95b09b125e293c0e2dd068574f0aee";
+ };
+
+ propagatedBuildInputs = [ zope_event zope_component ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/zopefoundation/zope.lifecycleevent;
+ description = "Object life-cycle events";
+ license = licenses.zpl20;
+ maintainers = with maintainers; [ goibhniu ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zope_location/default.nix b/nixpkgs/pkgs/development/python-modules/zope_location/default.nix
new file mode 100644
index 00000000000..7c0df16f775
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zope_location/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, zope_proxy
+}:
+
+buildPythonPackage rec {
+ pname = "zope.location";
+ version = "4.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "a720f9e3c8a51d5007ed6fcd47e1834df02671d85dbfd1062a0d808de8bf80ac";
+ };
+
+ propagatedBuildInputs = [ zope_proxy ];
+
+ # ignore circular dependency on zope_schema
+ preBuild = ''
+ sed -i '/zope.schema/d' setup.py
+ '';
+
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/zopefoundation/zope.location/;
+ description = "Zope Location";
+ license = licenses.zpl20;
+ maintainers = with maintainers; [ goibhniu ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zope_proxy/default.nix b/nixpkgs/pkgs/development/python-modules/zope_proxy/default.nix
new file mode 100644
index 00000000000..08932c1cba1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zope_proxy/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, zope_interface
+}:
+
+buildPythonPackage rec {
+ pname = "zope.proxy";
+ version = "4.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "563c2454b2d0f23bca54d2e0e4d781149b7b06cb5df67e253ca3620f37202dd2";
+ };
+
+ propagatedBuildInputs = [ zope_interface ];
+
+ # circular deps
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/zopefoundation/zope.proxy;
+ description = "Generic Transparent Proxies";
+ license = licenses.zpl20;
+ maintainers = with maintainers; [ goibhniu ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zope_schema/default.nix b/nixpkgs/pkgs/development/python-modules/zope_schema/default.nix
new file mode 100644
index 00000000000..df5322acc87
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zope_schema/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, zope_location
+, zope_event
+, zope_interface
+, zope_testing
+}:
+
+buildPythonPackage rec {
+ pname = "zope.schema";
+ version = "4.9.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "2d971da8707cab47b1916534b9929dcd9d7f23aed790e6b4cbe3103d5b18069d";
+ };
+
+ propagatedBuildInputs = [ zope_location zope_event zope_interface zope_testing ];
+
+ # ImportError: No module named 'zope.event'
+ # even though zope_event has been included.
+ # Package seems to work fine.
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/zopefoundation/zope.schema;
+ description = "zope.interface extension for defining data schemas";
+ license = licenses.zpl20;
+ maintainers = with maintainers; [ goibhniu ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zope_size/default.nix b/nixpkgs/pkgs/development/python-modules/zope_size/default.nix
new file mode 100644
index 00000000000..8651e2d6822
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zope_size/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, zope_i18nmessageid
+, zope_interface
+}:
+
+buildPythonPackage rec {
+ pname = "zope.size";
+ version = "4.3";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "6f3eb687c9181e3b7400c5cd4d4209a2f676475b7b85c99ee11de2404b3493ec";
+ };
+
+ propagatedBuildInputs = [ zope_i18nmessageid zope_interface ];
+
+ meta = with stdenv.lib; {
+ homepage = https://github.com/zopefoundation/zope.size;
+ description = "Interfaces and simple adapter that give the size of an object";
+ license = licenses.zpl20;
+ maintainers = with maintainers; [ goibhniu ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zope_testing/default.nix b/nixpkgs/pkgs/development/python-modules/zope_testing/default.nix
new file mode 100644
index 00000000000..037c5d87f9a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zope_testing/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPyPy
+, zope_interface
+, zope_exceptions
+, zope_location
+}:
+
+buildPythonPackage rec {
+ pname = "zope.testing";
+ version = "4.7";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "d66be8d1de37e8536ca58a1d9f4d89a68c9cc75cc0e788a175c8a20ae26003ea";
+ };
+
+ doCheck = !isPyPy;
+
+ propagatedBuildInputs = [ zope_interface zope_exceptions zope_location ];
+
+ meta = with stdenv.lib; {
+ description = "Zope testing helpers";
+ homepage = http://pypi.python.org/pypi/zope.testing;
+ license = licenses.zpl20;
+ maintainers = with maintainers; [ goibhniu ];
+ };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zope_testrunner/default.nix b/nixpkgs/pkgs/development/python-modules/zope_testrunner/default.nix
new file mode 100644
index 00000000000..fd2cf470e6f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zope_testrunner/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, zope_interface
+, zope_exceptions
+, zope_testing
+, six
+}:
+
+
+buildPythonPackage rec {
+ pname = "zope.testrunner";
+ version = "4.9.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "f2aa89531db6b7546e46be9d6113ac835a075f4dcb26e32c7276f4f30d4b14a5";
+ };
+
+ propagatedBuildInputs = [ zope_interface zope_exceptions zope_testing six ];
+
+ doCheck = !stdenv.isDarwin;
+
+ meta = with stdenv.lib; {
+ description = "A flexible test runner with layer support";
+ homepage = https://pypi.python.org/pypi/zope.testrunner;
+ license = licenses.zpl20;
+ maintainers = [ maintainers.goibhniu ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zstd/default.nix b/nixpkgs/pkgs/development/python-modules/zstd/default.nix
new file mode 100644
index 00000000000..9c9c932cabf
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zstd/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, pkgconfig, fetchPypi, buildPythonPackage
+, zstd, pytest }:
+
+buildPythonPackage rec {
+ pname = "zstd";
+ version = "1.4.1.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "0laxg0pag1bzmqmg4x81jb32412pn98p9zg2b0li035m779nka95";
+ };
+
+ postPatch = ''
+ substituteInPlace setup.py \
+ --replace "/usr/bin/pkg-config" "${pkgconfig}/bin/pkg-config"
+ '';
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [ zstd ];
+
+ setupPyBuildFlags = [
+ "--external"
+ "--include-dirs=${zstd}/include"
+ "--libraries=zstd"
+ "--library-dirs=${zstd}/lib"
+ ];
+
+ # Running tests via setup.py triggers an attempt to recompile with the vendored zstd
+ ZSTD_EXTERNAL = 1;
+ VERSION = zstd.version;
+ PKG_VERSION = version;
+
+ checkInputs = [ pytest ];
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Simple python bindings to Yann Collet ZSTD compression library";
+ homepage = https://github.com/sergey-dryabzhinsky/python-zstd;
+ license = licenses.bsd2;
+ maintainers = with maintainers; [
+ eadwu
+ ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zxcvbn/default.nix b/nixpkgs/pkgs/development/python-modules/zxcvbn/default.nix
new file mode 100644
index 00000000000..67f48f34731
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zxcvbn/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildPythonPackage, fetchFromGitHub, pytest }:
+
+buildPythonPackage {
+ pname = "zxcvbn";
+ version = "4.4.28";
+
+ # no tests included in PyPI tarball
+ src = fetchFromGitHub {
+ owner = "dwolfhub";
+ repo = "zxcvbn-python";
+ rev = "45afdf0d3dd8477bc7e457629bb4bc9680794cd7"; # not tagged in repository
+ sha256 = "0w0sx9ssjks8da973cdv5xi87yjsf038jqxmzj2y26xvpyjsg2v2";
+ };
+
+ checkInputs = [ pytest ];
+
+ checkPhase = ''
+ pytest
+ '';
+
+ meta = with lib; {
+ description = "Python implementation of Dropbox's realistic password strength estimator";
+ homepage = "https://github.com/dwolfhub/zxcvbn-python";
+ license = licenses.mit;
+ maintainers = [ maintainers.marsam ];
+ };
+}