diff options
Diffstat (limited to 'gnu/packages/python.scm')
-rw-r--r-- | gnu/packages/python.scm | 821 |
1 files changed, 786 insertions, 35 deletions
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index f6ea28d927..190f59400d 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -26,6 +26,9 @@ ;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is> ;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org> ;;; Copyright © 2016 David Craven <david@craven.ch> +;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2016 Stefan Reichoer <stefan@xsteve.at> +;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -51,6 +54,7 @@ #:use-module (gnu packages backup) #:use-module (gnu packages compression) #:use-module (gnu packages databases) + #:use-module (gnu packages django) #:use-module (gnu packages file) #:use-module (gnu packages fontutils) #:use-module (gnu packages gcc) @@ -69,6 +73,8 @@ #:use-module (gnu packages multiprecision) #:use-module (gnu packages networking) #:use-module (gnu packages ncurses) + #:use-module (gnu packages openstack) + #:use-module (gnu packages password-utils) #:use-module (gnu packages pcre) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) @@ -87,7 +93,6 @@ #:use-module (gnu packages zip) #:use-module (gnu packages tcl) #:use-module (gnu packages bdw-gc) - #:use-module (gnu packages pcre) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix git-download) @@ -1512,6 +1517,37 @@ matching them against a list of media-ranges.") (define-public python2-nose (package-with-python2 python-nose)) +(define-public python-nose2 + (package + (name "python-nose2") + (version "0.6.5") + (source + (origin + (method url-fetch) + (uri (pypi-uri "nose2" version)) + (sha256 + (base32 + "1x4zjq1zlyrh8b9ba0cmafd3w94pxhid408kibyjd3s6h1lap6s7")))) + (build-system python-build-system) + (arguments `(#:tests? #f)) ; 'module' object has no attribute 'collector' + (native-inputs + `(("python-setuptools" ,python-setuptools))) + (inputs + `(("python-cov-core" ,python-cov-core) + ("python-pytest-cov" ,python-pytest-cov) + ("python-six" ,python-six))) + (home-page "https://github.com/nose-devs/nose2") + (synopsis "Next generation of nicer testing for Python") + (description + "Nose2 is the next generation of nicer testing for Python, based on the +plugins branch of unittest2. Nose2 aims to improve on nose by providing a +better plugin api, being easier for users to configure, and simplifying internal +interfaces and processes.") + (license license:bsd-2))) + +(define-public python2-nose2 + (package-with-python2 python-nose2)) + (define-public python-unittest2 (package (name "python-unittest2") @@ -1690,6 +1726,45 @@ supports coverage of subprocesses.") (define-public python2-pytest-runner (package-with-python2 python-pytest-runner)) +(define-public python-pytest-mock + (package + (name "python-pytest-mock") + (version "1.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pytest-mock" version ".zip")) + (sha256 + (base32 + "03zxar5drzm7ksqyrwypjaza3cri6wqvpr6iam92djvg6znp32gp")))) + (build-system python-build-system) + (native-inputs + `(("unzip" ,unzip))) + (inputs + `(("python-py" ,python-py) + ("python-pytest" ,python-pytest))) + (home-page "https://github.com/pytest-dev/pytest-mock/") + (synopsis "Thin-wrapper around the mock package for easier use with py.test") + (description + "This plugin installs a @code{mocker} fixture which is a thin-wrapper +around the patching API provided by the @code{mock} package, but with the +benefit of not having to worry about undoing patches at the end of a test. +The mocker fixture has the same API as @code{mock.patch}, supporting the +same arguments.") + (properties `((python2-variant . ,(delay python2-pytest-mock)))) + (license license:expat))) + +(define-public python2-pytest-mock + (let ((base (package-with-python2 + (strip-python2-variant python-pytest-mock)))) + (package (inherit base) + (native-inputs + `(("python2-setuptools" ,python2-setuptools) + ,@(package-native-inputs base))) + (inputs + `(("python2-mock" ,python2-mock) + ,@(package-inputs base)))))) + (define-public python-pytest-xdist (package (name "python-pytest-xdist") @@ -2070,6 +2145,35 @@ executed.") (define-public python2-coverage (package-with-python2 python-coverage)) +(define-public python-cov-core + (package + (name "python-cov-core") + (version "1.15.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "cov-core" version)) + (sha256 + (base32 + "0k3np9ymh06yv1ib96sb6wfsxjkqhmik8qfsn119vnhga9ywc52a")))) + (build-system python-build-system) + (native-inputs + `(("python-coverage" ,python-coverage))) + (home-page "https://github.com/schlamar/cov-core") + (synopsis "plugin core for use by pytest-cov, nose-cov and nose2-cov") + (description + "This is a library package for use by pytest-cov, nose-cov and nose2-cov. +It is useful for developing coverage plugins for these testing frameworks.") + (license license:expat) + (properties `((python2-variant . ,(delay python2-cov-core)))))) + +(define-public python2-cov-core + (let ((cov-core (package-with-python2 (strip-python2-variant python-cov-core)))) + (package (inherit cov-core) + (native-inputs + `(("python2-setuptools" ,python2-setuptools) + ,@(package-native-inputs cov-core)))))) + (define-public python-discover (package (name "python-discover") @@ -2203,14 +2307,22 @@ is used by the Requests library to verify HTTPS requests.") (source (origin (method url-fetch) - (uri (string-append - "https://pypi.python.org/packages/" - "7a/00/c14926d8232b36b08218067bcd5853caefb4737cda3f0a47437151344792/" - "click-" version ".tar.gz")) + (uri (pypi-uri "click" version)) (sha256 (base32 "1sggipyz52crrybwbr9xvwxd4aqigvplf53k9w3ygxmzivd1jsnc")))) (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-paths + (lambda* (#:key inputs #:allow-other-keys) + (let ((glibc (assoc-ref inputs ,(if (%current-target-system) + "cross-libc" "libc")))) + (substitute* "click/_unicodefun.py" + (("'locale'") + (string-append "'" glibc "/bin/locale'")))) + #t))))) (native-inputs `(("python-setuptools" ,python-setuptools))) (home-page "http://click.pocoo.org") @@ -2508,20 +2620,25 @@ object.") (define-public python-virtualenv (package (name "python-virtualenv") - (version "13.1.2") + (version "15.0.3") (source (origin (method url-fetch) (uri (pypi-uri "virtualenv" version)) (sha256 (base32 - "1p732accxwqfjbdna39k8w8lp9gyw91vr4kzkhm8mgfxikqqxg5a")))) + "07cbajzk8l05k5zhlw0b9wbf2is65bl9v6zrn2a0iyn57w6pd73d")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases - (replace 'check - (lambda _ (zero? (system* "py.test"))))))) + (replace 'check + (lambda _ + ;; Disable failing test. See upstream bug report + ;; https://github.com/pypa/virtualenv/issues/957 + (substitute* "tests/test_virtualenv.py" + (("skipif.*") "skipif(True, reason=\"Guix\")\n")) + (zero? (system* "py.test"))))))) (inputs `(("python-setuptools" ,python-setuptools) ("python-mock" ,python-mock) @@ -3662,6 +3779,37 @@ simple and Pythonic domain language.") (define-public python2-sqlalchemy (package-with-python2 python-sqlalchemy)) +(define-public python-sqlalchemy-utils + (package + (name "python-sqlalchemy-utils") + (version "0.32.9") + (source + (origin + (method url-fetch) + (uri (pypi-uri "SQLAlchemy-Utils" version)) + (sha256 + (base32 + "1zbmmh7n8m01ikizn2mj1mfwch26nsr1awv9mvskqry7av0mpy98")))) + (build-system python-build-system) + (inputs + `(("python-six" ,python-six) + ("python-sqlalchemy" ,python-sqlalchemy))) + (home-page "https://github.com/kvesteri/sqlalchemy-utils") + (synopsis "Various utility functions for SQLAlchemy") + (description + "SQLAlchemy-utils provides various utility functions and custom data types +for SQLAlchemy. SQLAlchemy is an SQL database abstraction library for Python.") + (properties `((python2-variant . ,(delay python2-sqlalchemy-utils)))) + (license license:bsd-3))) + +(define-public python2-sqlalchemy-utils + (let ((base (package-with-python2 + (strip-python2-variant python-sqlalchemy-utils)))) + (package (inherit base) + (native-inputs + `(("python2-setuptools" ,python2-setuptools) + ,@(package-native-inputs base)))))) + (define-public python-alembic (package (name "python-alembic") @@ -3762,14 +3910,14 @@ services for your Python modules and applications.") (define-public python-pillow (package (name "python-pillow") - (version "3.1.1") + (version "3.3.1") (source (origin (method url-fetch) (uri (pypi-uri "Pillow" version)) (sha256 (base32 - "1zwzakr5v0skdh0azp5cd6fwzbll5305dsk33k5jk570vv6lqvs8")))) + "1w9x3dfrg8b5lqhpjl0fczfyf9842wbqwgxbjjq4vfpxv5jwm49l")))) (build-system python-build-system) (native-inputs `(("python-setuptools" ,python-setuptools) @@ -4868,6 +5016,35 @@ as possible in order to be comprehensible and easily extensible.") (define-public python2-sympy (package-with-python2 python-sympy)) +(define-public python-q + (package + (name "python-q") + (version "2.6") + (source + (origin + (method url-fetch) + (uri (pypi-uri "q" version)) + (sha256 + (base32 + "1mgfazh8fkizh6walra2zv885f3lcgr3nb02v1frfm4p8ddcy3yy")))) + (build-system python-build-system) + (home-page "https://github.com/zestyping/q") + (synopsis "Quick-and-dirty debugging output for tired programmers") + (description + "q is a Python module for \"print\" style of debugging Python code. It +provides convenient short API for print out of values, tracebacks, and +falling into the Python interpreter.") + (license license:asl2.0) + (properties `((python2-variant . ,(delay python2-q)))))) + +(define-public python2-q + (let ((base (package-with-python2 (strip-python2-variant python-q)))) + (package + (inherit base) + (native-inputs + `(("python2-setuptools" ,python2-setuptools) + ,@(package-native-inputs base)))))) + (define-public python-testlib (package (name "python-testlib") @@ -6155,6 +6332,30 @@ a hash value.") (name "python2-tlsh") (inputs `(("python" ,python-2))))) +(define-public python-termcolor + (package + (name "python-termcolor") + (version "1.1.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "python-termcolor" version)) + (sha256 + (base32 + "0fv1vq14rpqwgazxg4981904lfyp84mnammw7y046491cv76jv8x")))) + (build-system python-build-system) + (arguments + ;; There are no tests. + `(#:tests? #f)) + (home-page "http://pypi.python.org/pypi/termcolor") + (synopsis "ANSII Color formatting for terminal output") + (description + "This package provides ANSII Color formatting for output in terminals.") + (license license:expat))) + +(define-public python2-termcolor + (package-with-python2 python-termcolor)) + (define-public python-libarchive-c (package (name "python-libarchive-c") @@ -6950,7 +7151,7 @@ WebSocket usage in Python programs.") (build-system python-build-system) (synopsis "Atomic file writes in Python") (description "Library for atomic file writes using platform dependent tools -for atomic filesystem operations.") +for atomic file system operations.") (home-page "https://github.com/untitaker/python-atomicwrites") (license license:expat) (properties `((python2-variant . ,(delay python2-atomicwrites)))))) @@ -7448,6 +7649,40 @@ asynchronously executing callables. This package backports the concurrent.futures package from Python 3.2") (license license:bsd-3))) +(define-public python-promise + (package + (name "python-promise") + (version "0.4.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "promise" version)) + (sha256 + (base32 + "1k19ms8l3d5jzjh557rgkxb5sg4mqgfc315rn4hx1z3n8qq6lr3h")))) + (build-system python-build-system) + ;; Tests wants python-futures, which is a python2 only program, and + ;; can't be found by python-promise at test time. + (arguments `(#:tests? #f)) + (home-page "https://github.com/syrusakbary/promise") + (synopsis "Promises/A+ implementation for Python") + (description + "Promises/A+ implementation for Python") + (properties `((python2-variant . ,(delay python2-promise)))) + (license license:expat))) + +(define-public python2-promise + (let ((promise (package-with-python2 + (strip-python2-variant python-promise)))) + (package (inherit promise) + (arguments (substitute-keyword-arguments (package-arguments promise) + ((#:tests? _) #t))) + (native-inputs + `(("python2-futures" ,python2-futures) + ("python2-pytest" ,python2-pytest) + ("python2-setuptools" ,python2-setuptools) + ,@(package-native-inputs promise)))))) + (define-public python-urllib3 (package (name "python-urllib3") @@ -8578,8 +8813,8 @@ library.") (replace 'check (lambda _ (zero? (system* "python" "./test_pathlib.py"))))))) (home-page "https://pathlib.readthedocs.org/") - (synopsis "Object-oriented filesystem paths") - (description "Pathlib offers a set of classes to handle filesystem paths. + (synopsis "Object-oriented file system paths") + (description "Pathlib offers a set of classes to handle file system paths. It offers the following advantages over using string objects: @enumerate @@ -9022,14 +9257,14 @@ to occurences in strings and comments.") (define-public python-py3status (package (name "python-py3status") - (version "2.9") + (version "3.1") (source (origin (method url-fetch) (uri (pypi-uri "py3status" version)) (sha256 (base32 - "09y7h8rjay5kzwk5akq7f5f9wqnvjkxhivck04hdc8ny1nw3vqzp")))) + "0i283z1pivmir61z8kbiycigc94l61v33ygzkhczf1ifq7cppyds")))) (build-system python-build-system) (native-inputs `(("python-setuptools" ,python-setuptools))) @@ -9206,6 +9441,31 @@ focus on event-based network programming and multiprotocol integration.") (define-public python2-twisted (package-with-python2 python-twisted)) +(define-public python-pika + (package + (name "python-pika") + (version "0.10.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pika" version)) + (sha256 + (base32 + "0nb4h08di432lv7dy2v9kpwgk0w92f24sqc2hw2s9vwr5b8v8xvj")))) + (build-system python-build-system) + (native-inputs + `(("python-twisted" ,python-twisted))) + (home-page "https://pika.readthedocs.org") + (synopsis "Pure Python AMQP Client Library") + (description + "Pika is a pure-Python implementation of the AMQP (Advanced Message Queuing +Protocol) 0-9-1 protocol that tries to stay fairly independent of the underlying +network support library.") + (license license:bsd-3))) + +(define-public python2-pika + (package-with-python2 python-pika)) + (define-public python-ply (package (name "python-ply") @@ -9622,24 +9882,14 @@ parsing UK postcodes.") (define-public python-fake-factory (package (name "python-fake-factory") - (version "0.5.7") + (version "0.7.2") (source (origin (method url-fetch) (uri (pypi-uri "fake-factory" version)) (sha256 (base32 - "1chmarnrdzn4r017n8qlic0m0bbnhw04s3hkwribjvm3mqpb6pa0")))) + "0vs0dkmg0dlaxf8w6q2i3k0i03gmp56ablldv7ci9x3nbadkn71g")))) (build-system python-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (add-before 'check 'disable-failing-test - ;; XXX: faker/tests/ne_np/__init__.py, line 40, in test_names - ;; first_name, last_name = name.split() - ;; ValueError: too many values to unpack (expected 2) - (lambda _ - (delete-file "faker/tests/ne_np/__init__.py") - #t))))) (native-inputs `(("python-setuptools" ,python-setuptools) ;; For testing @@ -9649,7 +9899,7 @@ parsing UK postcodes.") (propagated-inputs `(("python-dateutil" ,python-dateutil-2) ("python-six" ,python-six))) - (home-page "http://github.com/joke2k/faker") + (home-page "https://github.com/joke2k/faker") (synopsis "Python package that generates fake data") (description "Faker is a Python package that generates fake data such as names, @@ -9757,17 +10007,14 @@ implementation for Python.") (define-public python-prompt-toolkit (package (name "python-prompt-toolkit") - (version "1.0.3") + (version "1.0.7") (source (origin (method url-fetch) - (uri (string-append - "https://pypi.python.org/packages/" - "8d/de/412f23919929c01e6b55183e124623f705e4b91796d3d2dce2cb53d595ad/" - "prompt_toolkit-" version ".tar.gz")) + (uri (pypi-uri "prompt_toolkit" version ".tar.gz")) (sha256 (base32 - "18lbmmkyjf509klc3217lq0x863pfzix779zx5kp9lms1iph4pl0")))) + "1vyjd0b7wciv55i19l44zy0adx8q7ss79lhy2r9d1rwz2y4822zg")))) (build-system python-build-system) (inputs `(("python-wcwidth" ,python-wcwidth) ("python-pygments" ,python-pygments))) @@ -9852,6 +10099,49 @@ etc.") (inherit base) (name "ptpython2")))) +(define-public python-requests-oauthlib + (package + (name "python-requests-oauthlib") + (version "0.6.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "requests-oauthlib" version)) + (sha256 + (base32 + "0ykff67sjcl227c23g0rxzfx34rr5bf21kwv0z3zmgk0lfmch7hn")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; removes tests that require network access + (add-before 'check 'pre-check + (lambda _ + (delete-file "tests/test_core.py") + #t))))) + (native-inputs + `(("python-requests-mock" ,python-requests-mock) + ("python-mock" ,python-mock))) + (inputs + `(("python-oauthlib" ,python-oauthlib) + ("python-requests" ,python-requests))) + (home-page + "https://github.com/requests/requests-oauthlib") + (synopsis + "OAuthlib authentication support for Requests") + (description + "Requests-OAuthlib uses the Python Requests and OAuthlib libraries to +provide an easy-to-use Python interface for building OAuth1 and OAuth2 clients.") + (license license:isc) + (properties `((python2-variant . ,(delay python2-requests-oauthlib)))))) + +(define-public python2-requests-oauthlib + (let ((base (package-with-python2 (strip-python2-variant python-requests-oauthlib)))) + (package + (inherit base) + (native-inputs `(("python2-setuptools" ,python2-setuptools) + ,@(package-native-inputs base)))))) + (define-public python-stem (package (name "python-stem") @@ -10092,6 +10382,36 @@ interface for programs.") `(("python2-setuptools" ,python2-setuptools) ,@(package-native-inputs base)))))) +(define-public python-consul + (package + (name "python-consul") + (version "0.6.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "python-consul" version)) + (sha256 + (base32 + "0rfyxcy4cr3x848vhx876ifalxd5ghq6l5x813m49h4vq2d4jiq8")))) + (build-system python-build-system) + (native-inputs + `(("python-pytest" ,python-pytest) + ("python-requests" ,python-requests) + ("python-six" ,python-six))) + (home-page "https://github.com/cablehead/python-consul") + (synopsis "Python client for Consul") + (description + "Python client for @url{http://www.consul.io/,Consul}, a tool for service +discovery, monitoring and configuration.") + (license license:expat))) + +(define-public python2-consul + (let ((consul (package-with-python2 python-consul))) + (package (inherit consul) + (native-inputs + `(("python2-setuptools" ,python2-setuptools) + ,@(package-native-inputs consul)))))) + (define-public python-schematics (package (name "python-schematics") @@ -10249,3 +10569,434 @@ time by mocking the datetime module.") (native-inputs `(("python2-setuptools" ,python2-setuptools) ,@(package-native-inputs base)))))) + +(define-public python-odfpy + (package + (name "python-odfpy") + (version "1.3.3") + (source (origin + (method url-fetch) + (uri (pypi-uri "odfpy" version)) + (sha256 + (base32 + "1a6ms0w9zfhhkqhvrnynwwbxrivw6hgjc0s5k7j06npc7rq0blxw")))) + (arguments + `(#:modules ((srfi srfi-1) + (guix build python-build-system) + (guix build utils)) + #:phases + (modify-phases %standard-phases + (replace 'check + ;; The test runner invokes python2 and python3 for test*.py. + ;; To avoid having both in inputs, we replicate it here. + (lambda _ + (every (lambda (test-file) + (zero? (system* "python" test-file))) + (find-files "tests" "^test.*\\.py$"))))))) + (build-system python-build-system) + (home-page "https://github.com/eea/odfpy") + (synopsis "Python API and tools to manipulate OpenDocument files") + (description "Collection of libraries and utility programs written in +Python to manipulate OpenDocument 1.2 files.") + (license + ;; The software is mainly dual GPL2+ and ASL2.0, but includes a + ;; number of files with other licenses. + (list license:gpl2+ license:asl2.0 license:lgpl2.1+ license:cc-by-sa3.0)))) + +(define-public python2-odfpy + (package-with-python2 python-odfpy)) + +(define-public python-cachecontrol + (package + (name "python-cachecontrol") + (version "0.11.6") + (source + (origin + (method url-fetch) + ;; Pypi does not have tests. + (uri (string-append + "https://github.com/ionrock/cachecontrol/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0yj60d0f69a2l8p7y86k4zhzzm6rnxpq74sfl240pry9l0lfw2vw")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + ;; Drop test that requires internet access. + (delete-file "tests/test_regressions.py") + (setenv "PYTHONPATH" + (string-append (getcwd) "/build/lib:" + (getenv "PYTHONPATH"))) + (zero? (system* "py.test" "-vv"))))))) + (native-inputs + `(("python-pytest" ,python-pytest) + ("python-redis" ,python-redis) + ("python-webtest" ,python-webtest) + ("python-mock" ,python-mock))) + (propagated-inputs + `(("python-requests" ,python-requests) + ("python-lockfile" ,python-lockfile))) + (home-page "https://github.com/ionrock/cachecontrol") + (synopsis "The httplib2 caching algorithms for use with requests") + (description "CacheControl is a port of the caching algorithms in +@code{httplib2} for use with @code{requests} session objects.") + (license license:asl2.0) + (properties `((python2-variant . ,(delay python2-cachecontrol)))))) + +(define-public python2-cachecontrol + (let ((base (package-with-python2 (strip-python2-variant python-cachecontrol)))) + (package (inherit base) + (native-inputs + `(("python2-setuptools" ,python2-setuptools) + ,@(package-native-inputs base)))))) + +(define-public python-lit + (package + (name "python-lit") + (version "0.5.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "lit" version)) + (sha256 + (base32 + "135m2b9cwih85g66rjggavck328z7lj37srgpq3jxszbg0g2b91y")))) + (build-system python-build-system) + (home-page "http://llvm.org/") + (synopsis "LLVM Software Testing Tool") + (description "@code{lit} is a portable tool for executing LLVM and Clang +style test suites, summarizing their results, and providing indication of +failures.") + (license license:ncsa) + (properties `((python2-variant . ,(delay python2-lit)))))) + +(define-public python2-lit + (let ((base (package-with-python2 (strip-python2-variant python-lit)))) + (package + (inherit base) + (native-inputs + `(("python2-setuptools" ,python2-setuptools) + ,@(package-native-inputs base)))))) + +(define-public python-pytest-pep8 + (package + (name "python-pytest-pep8") + (version "1.0.6") + (source (origin + (method url-fetch) + (uri (pypi-uri "pytest-pep8" version)) + (sha256 + (base32 + "06032agzhw1i9d9qlhfblnl3dw5hcyxhagn7b120zhrszbjzfbh3")))) + (build-system python-build-system) + (arguments + `(#:tests? #f ; Fails with recent pytest and pep8. See upstream issues #8 and #12. + ;; Prevent creation of the egg. This works around + ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20765 . + #:configure-flags '("--single-version-externally-managed" "--root=/"))) + (native-inputs + `(("python-pytest" ,python-pytest))) + (propagated-inputs + `(("python-pep8" ,python-pep8))) + (home-page "https://bitbucket.org/pytest-dev/pytest-pep8") + (synopsis "Py.test plugin to check PEP8 requirements") + (description "Pytest plugin for checking PEP8 compliance.") + (license license:expat) + (properties `((python2-variant . ,(delay python2-pytest-pep8)))))) + +(define-public python2-pytest-pep8 + (let ((base (package-with-python2 (strip-python2-variant python-pytest-pep8)))) + (package (inherit base) + (native-inputs + `(("python2-setuptools" ,python2-setuptools) + ,@(package-native-inputs base)))))) + +(define-public python-pytest-flakes + (package + (name "python-pytest-flakes") + (version "1.0.1") + (source (origin + (method url-fetch) + (uri (pypi-uri "pytest-flakes" version)) + (sha256 + (base32 + "0flag3n33kbhyjrhzmq990rvg4yb8hhhl0i48q9hw0ll89jp28lw")))) + (build-system python-build-system) + (arguments + `(;; Prevent creation of the egg. This works around + ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20765 . + #:configure-flags '("--single-version-externally-managed" "--root=/") + #:phases + (modify-phases %standard-phases + (delete 'check) + (add-after 'install 'check + (lambda _ ; It's easier to run tests after install. + (zero? (system* "py.test" "-vv"))))))) + (native-inputs + `(("python-coverage" ,python-coverage) + ("python-pytest" ,python-pytest) + ("python-pytest-cache" ,python-pytest-cache) + ("python-pytest-pep8" ,python-pytest-pep8))) + (propagated-inputs + `(("python-pyflakes" ,python-pyflakes))) + (home-page "https://github.com/fschulze/pytest-flakes") + (synopsis "Py.test plugin to check source code with pyflakes") + (description "Pytest plugin for checking Python source code with pyflakes.") + (license license:expat) + (properties `((python2-variant . ,(delay python2-pytest-flakes)))))) + +(define-public python2-pytest-flakes + (let ((base (package-with-python2 (strip-python2-variant python-pytest-flakes)))) + (package (inherit base) + (native-inputs + `(("python2-setuptools" ,python2-setuptools) + ,@(package-native-inputs base)))))) + +(define-public python-natsort + (package + (name "python-natsort") + (version "5.0.1") + (source (origin + (method url-fetch) + (uri (pypi-uri "natsort" version)) + (sha256 + (base32 + "1abld5p4a6n5zjnyw5mi2pv37gqalcybv2brjr2y6l9l2p8v9mja")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'set-cachedir + ;; Tests require write access to $HOME by default + (lambda _ (setenv "PYTHON_EGG_CACHE" "/tmp") #t))))) + (native-inputs + `(("python-hypothesis" ,python-hypothesis) + ("python-pytest-cache" ,python-pytest-cache) + ("python-pytest-cov" ,python-pytest-cov) + ("python-pytest-flakes" ,python-pytest-flakes) + ("python-pytest-pep8" ,python-pytest-pep8))) + (propagated-inputs ; TODO: Add python-fastnumbers. + `(("python-pyicu" ,python-pyicu))) + (home-page "https://github.com/SethMMorton/natsort") + (synopsis "Natural sorting for python and shell") + (description + "Natsort lets you apply natural sorting on lists instead of +lexicographical. If you use the built-in @code{sorted} method in python +on a list such as @code{['a20', 'a9', 'a1', 'a4', 'a10']}, it would be +returned as @code{['a1', 'a10', 'a20', 'a4', 'a9']}. Natsort provides a +function @code{natsorted} that identifies numbers and sorts them separately +from strings. It can also sort version numbers, real numbers, mixed types +and more, and comes with a shell command @command{natsort} that exposes this +functionality in the command line.") + (license license:expat) + (properties `((python2-variant . ,(delay python2-natsort)))))) + +(define-public python2-natsort + (let ((base (package-with-python2 (strip-python2-variant python-natsort)))) + (package (inherit base) + (native-inputs + `(("python2-setuptools" ,python2-setuptools) + ("python2-pathlib" ,python2-pathlib) + ("python2-mock" ,python2-mock) + ("python2-enum34" ,python2-enum34) + ,@(package-native-inputs base)))))) + +(define-public python-glances + (package + (name "python-glances") + (version "2.7.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "Glances" version)) + (sha256 + (base32 + "11jbq40g8alsbirnd4kiagznqg270247i0m8qhi48ldf2i5xppxg")))) + (build-system python-build-system) + (inputs + `(("python-psutil" ,python-psutil))) + (home-page + "https://github.com/nicolargo/glances") + (synopsis + "A cross-platform curses-based monitoring tool") + (description + "Glances is a curses-based monitoring tool for a wide variety of platforms. +Glances uses the PsUtil library to get information from your system. It monitors +CPU, load, memory, network bandwidth, disk I/O, disk use, and more.") + (license license:lgpl3+) + (properties `((python2-variant . ,(delay python2-glances)))))) + +(define-public python2-glances + (let ((base (package-with-python2 (strip-python2-variant python-glances)))) + (package + (inherit base) + (native-inputs + `(("python2-setuptools" ,python2-setuptools) + ,@(package-native-inputs base)))))) + +(define-public python-graphql-core + (package + (name "python-graphql-core") + (version "0.5.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "graphql-core" version)) + (sha256 + (base32 + "0rsaarx2sj4xnw9966rhh4haiqaapm4lm2mfqm48ywd51j5vh1a0")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-hardcoded-version + (lambda _ (substitute* + "setup.py" + (("'gevent==1.1rc1'") "'gevent'")) + #t))))) + (native-inputs + `(("python-gevent" ,python-gevent) + ("python-mock" ,python-mock) + ("python-pytest-mock" ,python-pytest-mock))) + (inputs + `(("python-promise" ,python-promise) + ("python-six" ,python-six))) + (home-page "https://github.com/graphql-python/graphql-core") + (synopsis "GraphQL implementation for Python") + (description + "GraphQL implementation for Python. GraphQL is a data query language and +runtime designed and used to request and deliver data to mobile and web apps. +This library is a port of @url{https://github.com/graphql/graphql-js,graphql-js} +to Python.") + (properties `((python2-variant . ,(delay python2-graphql-core)))) + (license license:expat))) + +(define-public python2-graphql-core + (let ((base (package-with-python2 + (strip-python2-variant python-graphql-core)))) + (package (inherit base) + (native-inputs + `(("python2-setuptools" ,python2-setuptools) + ,@(package-native-inputs base)))))) + +(define-public python-graphql-relay + (package + (name "python-graphql-relay") + (version "0.4.4") + (source + (origin + (method url-fetch) + (uri (pypi-uri "graphql-relay" version)) + (sha256 + (base32 + "04wr9ayshxjjdcg2v21c7ffbz36kif1wjl3604fqd3qignb3fbxi")))) + (build-system python-build-system) + (native-inputs + `(("python-pytest" ,python-pytest))) + (inputs + `(("python-graphql-core" ,python-graphql-core) + ("python-promise" ,python-promise) + ("python-six" ,python-six))) + (home-page "https://github.com/graphql-python/graphql-relay-py") + (synopsis "Relay implementation for Python") + (description + "This is a library to allow the easy creation of Relay-compliant servers +using the GraphQL Python reference implementation of a GraphQL server. It +should be noted that the code is a exact port of the original +@url{https://github.com/graphql/graphql-relay-js,graphql-relay js implementation} +from Facebook.") + (properties `((python2-variant . ,(delay python2-graphql-relay)))) + (license license:expat))) + +(define-public python2-graphql-relay + (let ((base (package-with-python2 + (strip-python2-variant python-graphql-relay)))) + (package (inherit base) + (native-inputs + `(("python2-setuptools" ,python2-setuptools) + ,@(package-native-inputs base)))))) + +(define-public python-graphene + (package + (name "python-graphene") + (version "0.10.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "graphene" version)) + (sha256 + (base32 + "09zhac7igh9ixdz0ay6csy35b40l1jwbf2wrbxmgxwfhy51iy06q")))) + (build-system python-build-system) + (native-inputs + `(("python-django-filter" ,python-django-filter) + ("python-mock" ,python-mock) + ("python-psycopg2" ,python-psycopg2) + ("python-pytest-django" ,python-pytest-django) + ("python-sqlalchemy-utils" ,python-sqlalchemy-utils))) + (inputs + `(("python-graphql-core" ,python-graphql-core) + ("python-graphql-relay" ,python-graphql-relay) + ("python-iso8601" ,python-iso8601) + ("python-promise" ,python-promise) + ("python-six" ,python-six))) + (home-page "http://graphene-python.org/") + (synopsis "GraphQL Framework for Python") + (description + "Graphene is a Python library for building GraphQL schemas/types. +A GraphQL schema describes your data model, and provides a GraphQL server +with an associated set of resolve methods that know how to fetch data.") + (properties `((python2-variant . ,(delay python2-graphene)))) + (license license:expat))) + +(define-public python2-graphene + (let ((base (package-with-python2 + (strip-python2-variant python-graphene)))) + (package (inherit base) + (native-inputs + `(("python2-setuptools" ,python2-setuptools) + ("python2-sqlalchemy" ,python2-sqlalchemy) + ,@(package-native-inputs base)))))) + +(define-public python-nautilus + (package + (name "python-nautilus") + (version "0.4.9") + (source + (origin + (method url-fetch) + (uri (pypi-uri "nautilus" version)) + (sha256 + (base32 + "01hwzjc1zshk4vvxrcghm398fpy4jls66dyz06g07mrwqif8878p")))) + (build-system python-build-system) + (arguments `(#:tests? #f)) ; fails to import test modules + (native-inputs + `(("python-setuptools" ,python-setuptools))) + (inputs + `(("python-bcrypt" ,python-bcrypt) + ("python-click" ,python-click) + ("python-consul" ,python-consul) + ("python-graphql-core" ,python-graphql-core) + ("python-graphql-relay" ,python-graphql-relay) + ("python-graphene" ,python-graphene) + ("python-jinja2" ,python-jinja2) + ("python-nose2" ,python-nose2) + ("python-peewee" ,python-peewee) + ("python-pika" ,python-pika) + ("python-pycparser" ,python-pycparser) + ("python-requests" ,python-requests) + ("python-tornado" ,python-tornado) + ("python-wtforms" ,python-wtforms))) + (home-page "https://github.com/AlecAivazis/nautilus") + (synopsis "Library for creating microservice applications") + (description + "Nautilus is a framework for flux based microservices that looks to +provide extendible implementations of common aspects of a cloud so that you can +focus on building massively scalable web applications.") + (license license:expat))) |