summaryrefslogtreecommitdiff
path: root/gnu/packages/databases.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/databases.scm')
-rw-r--r--gnu/packages/databases.scm661
1 files changed, 649 insertions, 12 deletions
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 7fcef3f662..4f34141ccd 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -1,27 +1,35 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2012, 2014, 2015 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2013, 2017 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2014, 2016 David Thompson <davet@gnu.org>
;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2015, 2016 Sou Bunnbu <iyzsong@gmail.com>
;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
+;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
+;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
+;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
;;; Copyright © 2016, 2017 Roel Janssen <roel@gnu.org>
;;; Copyright © 2016 David Craven <david@craven.ch>
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
-;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
+;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
+;;; Copyright © 2017 Jelle Licht <jlicht@fsfe.org>
+;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2017 Pierre Langlois <pierre.langlois@gmx.com>
-;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2017 Kristofer Buffington <kristoferbuffington@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -56,6 +64,7 @@
#:use-module (gnu packages gettext)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnupg)
+ #:use-module (gnu packages guile)
#:use-module (gnu packages time)
#:use-module (gnu packages jemalloc)
#:use-module (gnu packages language)
@@ -66,6 +75,7 @@
#:use-module (gnu packages parallel)
#:use-module (gnu packages pcre)
#:use-module (gnu packages perl)
+ #:use-module (gnu packages perl-check)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages popt)
#:use-module (gnu packages python)
@@ -73,6 +83,7 @@
#:use-module (gnu packages readline)
#:use-module (gnu packages ruby)
#:use-module (gnu packages serialization)
+ #:use-module (gnu packages statistics)
#:use-module (gnu packages tcl)
#:use-module (gnu packages tls)
#:use-module (gnu packages valgrind)
@@ -80,11 +91,13 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
+ #:use-module (guix git-download)
#:use-module (guix build-system gnu)
#:use-module (guix build-system perl)
#:use-module (guix build-system python)
#:use-module (guix build-system ruby)
#:use-module (guix build-system cmake)
+ #:use-module (guix build-system r)
#:use-module (guix utils)
#:use-module (srfi srfi-26)
#:use-module (ice-9 match))
@@ -607,14 +620,14 @@ as a drop-in replacement of MySQL.")
(define-public postgresql
(package
(name "postgresql")
- (version "10.0")
+ (version "10.1")
(source (origin
(method url-fetch)
(uri (string-append "https://ftp.postgresql.org/pub/source/v"
version "/postgresql-" version ".tar.bz2"))
(sha256
(base32
- "1lbzwpmdxmk5bh0ix0rn72qbd52dq5cb55nzajscb0bvwa95abvi"))))
+ "04z7lm4h94625vbncwv98svycqr942n3q47ailqaczkszqjlxjrw"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags '("--with-uuid=e2fs")
@@ -652,14 +665,14 @@ pictures, sounds, or video.")
(package
(inherit postgresql)
(name "postgresql")
- (version "9.6.5")
+ (version "9.6.6")
(source (origin
(method url-fetch)
(uri (string-append "https://ftp.postgresql.org/pub/source/v"
version "/postgresql-" version ".tar.bz2"))
(sha256
(base32
- "0k3ls2x182jz6djjiqj9kycddabdl2gk1y1ajq1vipnxwfki5nh6"))))))
+ "0m417h30s18rwa7yzkqqcdb22ifpcda2fpg2cyx8bxvjp3ydz71r"))))))
(define-public qdbm
(package
@@ -1370,14 +1383,14 @@ similar to BerkeleyDB, LevelDB, etc.")
(define-public redis
(package
(name "redis")
- (version "4.0.1")
+ (version "4.0.2")
(source (origin
(method url-fetch)
(uri (string-append "http://download.redis.io/releases/redis-"
version".tar.gz"))
(sha256
(base32
- "14bm8lkhylc93r4dgl7kkzzpw2xq7gr6w6h80n3jazqnx5mcsj90"))))
+ "04s8cgvwjj1979s3hg8zkwc9pyn3jkjpz5zidp87kfcipifr385i"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; tests related to master/slave and replication fail
@@ -1492,6 +1505,55 @@ trees (LSM), for sustained throughput under random insert workloads.")
;; configure.ac: WiredTiger requires a 64-bit build.
(supported-systems '("x86_64-linux" "mips64el-linux" "aarch64-linux"))))
+(define-public guile-wiredtiger
+ (package
+ (name "guile-wiredtiger")
+ (version "20171113.6cbc51da")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://framagit.org/a-guile-mind/guile-wiredtiger.git")
+ (commit "6cbc51dab95d28fe31ae025fbdd88f3ecbf2111b")))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32
+ "0x3qwpgch5pg0k21kc792h4y6b36a8xd1zkfq8ar2l2mqmpzkzyd"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:tests? #f
+ #:configure-flags
+ (list (string-append "--with-libwiredtiger-prefix="
+ (assoc-ref %build-inputs "wiredtiger")))
+ #:make-flags '("GUILE_AUTO_COMPILE=0")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'bootstrap
+ (lambda _
+ (zero? (system* "sh" "bootstrap"))))
+ (add-before 'bootstrap 'remove-bundled-dependencies
+ (lambda _
+ ;; TODO: Remove microkanren.scm when we have a separate package
+ ;; for it.
+ (delete-file "htmlprag.scm")
+ (substitute* "Makefile.am"
+ (("htmlprag\\.scm") ""))
+ #t)))))
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("pkg-config" ,pkg-config)))
+ (inputs
+ `(("wiredtiger" ,wiredtiger)
+ ("guile" ,guile-2.2)))
+ (propagated-inputs
+ `(("guile-lib" ,guile-lib))) ;for (htmlprag)
+ (synopsis "Wired Tiger bindings for GNU Guile")
+ (description
+ "This package provides Guile bindings to the WiredTiger ``NoSQL''
+database.")
+ (home-page "https://framagit.org/a-guile-mind/guile-wiredtiger")
+ (license license:gpl3+)))
+
(define-public perl-db-file
(package
(name "perl-db-file")
@@ -1866,3 +1928,578 @@ and web services platform functionality.")
;; configure: error: ... can only be build on 64bit platforms
(supported-systems '("x86_64-linux" "mips64el-linux" "aarch64-linux"))
(license license:gpl2)))
+
+(define-public r-rmysql
+ (package
+ (name "r-rmysql")
+ (version "0.10.13")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "RMySQL" version))
+ (sha256
+ (base32
+ "1j0vr2l4s02cg2hzgr3pla96pjj4h85sxw28lidy58rg5awnsf82"))))
+ (properties `((upstream-name . "RMySQL")))
+ (build-system r-build-system)
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (inputs
+ `(("mariadb" ,mariadb)
+ ("zlib" ,zlib)))
+ (propagated-inputs
+ `(("r-dbi" ,r-dbi)))
+ (home-page "https://github.com/r-dbi/RMySQL")
+ (synopsis "Database interface and MySQL driver for R")
+ (description
+ "This package provides a DBI interface to MySQL / MariaDB. The RMySQL
+package contains an old implementation based on legacy code from S-PLUS which
+is being phased out. A modern MySQL client based on Rcpp is available from
+the RMariaDB package.")
+ (license license:gpl2)))
+
+(define-public python-ccm
+ (package
+ (name "python-ccm")
+ (version "2.1.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "ccm" version))
+ (sha256
+ (base32
+ "177dfxsmk3k4cih6fh6v8d91bh4nqx7ns6pc07w7m7i3cvdx3c8n"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-pyyaml" ,python-pyyaml)
+ ;; Not listed in setup.py, but used in ccmlib/node.py for full
+ ;; functionality
+ ("python-psutil" ,python-psutil)
+ ("python-six" ,python-six)))
+ (home-page "https://github.com/pcmanus/ccm")
+ (synopsis "Cassandra Cluster Manager for Apache Cassandra clusters on
+localhost")
+ (description "Cassandra Cluster Manager is a development tool for testing
+local Cassandra clusters. It creates, launches and removes Cassandra clusters
+on localhost.")
+ (license license:asl2.0)))
+
+(define-public python2-ccm
+ (package-with-python2 python-ccm))
+
+(define-public python2-pysqlite
+ (package
+ (name "python2-pysqlite")
+ (version "2.8.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pysqlite" version))
+ (sha256
+ (base32
+ "1424gwq9sil2ffmnizk60q36vydkv8rxs6m7xs987kz8cdc37lqp"))))
+ (build-system python-build-system)
+ (inputs
+ `(("sqlite" ,sqlite)))
+ (arguments
+ `(#:python ,python-2 ; incompatible with Python 3
+ #:tests? #f)) ; no test target
+ (home-page "https://github.com/ghaering/pysqlite")
+ (synopsis "SQLite bindings for Python")
+ (description
+ "Pysqlite provides SQLite bindings for Python that comply to the
+Database API 2.0T.")
+ (license license:zlib)))
+
+(define-public python-sqlalchemy
+ (package
+ (name "python-sqlalchemy")
+ (version "1.0.12")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://pypi.python.org/packages/source/S/"
+ "SQLAlchemy/SQLAlchemy-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1l8qclhd0s90w3pvwhi5mjxdwr5j7gw7cjka2fx6f2vqmq7f4yb6"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-cython" ,python-cython) ;for c extensions
+ ("python-pytest" ,python-pytest)
+ ("python-mock" ,python-mock))) ;for tests
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _ (zero? (system* "py.test")))))))
+ (home-page "http://www.sqlalchemy.org")
+ (synopsis "Database abstraction library")
+ (description
+ "SQLAlchemy is the Python SQL toolkit and Object Relational Mapper that
+gives application developers the full power and flexibility of SQL. It
+provides a full suite of well known enterprise-level persistence patterns,
+designed for efficient and high-performing database access, adapted into a
+simple and Pythonic domain language.")
+ (license license:x11)))
+
+(define-public python2-sqlalchemy
+ (package-with-python2 python-sqlalchemy))
+
+(define-public python-sqlalchemy-utils
+ (package
+ (name "python-sqlalchemy-utils")
+ (version "0.32.13")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "SQLAlchemy-Utils" version))
+ (sha256
+ (base32
+ "0vsib7gidjamzsz6w4s5pdhxzxsrkghjnm4sqwk94igjrl3i5ixj"))))
+ (build-system python-build-system)
+ (arguments
+ '(#:tests? #f)) ; FIXME: Many tests require a running database server.
+ ;; #:phases
+ ;; (modify-phases %standard-phases
+ ;; (replace 'check
+ ;; (lambda _
+ ;; (zero? (system* "py.test" "sqlalchemy_utils" "tests")))))
+ (propagated-inputs
+ `(("python-six" ,python-six)
+ ("python-sqlalchemy" ,python-sqlalchemy)))
+ (native-inputs
+ `(("python-dateutil" ,python-dateutil)
+ ("python-flexmock" ,python-flexmock)
+ ("python-psycopg2" ,python-psycopg2)
+ ("python-pytest" ,python-pytest)
+ ("python-pytz" ,python-pytz)))
+ (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.
+
+You might also want to install the following optional dependencies:
+@enumerate
+@item @code{python-passlib}
+@item @code{python-babel}
+@item @code{python-cryptography}
+@item @code{python-pytz}
+@item @code{python-psycopg2}
+@item @code{python-furl}
+@item @code{python-flask-babel}
+@end enumerate
+")
+ (license license:bsd-3)))
+
+(define-public python2-sqlalchemy-utils
+ (package-with-python2 python-sqlalchemy-utils))
+
+(define-public python-alembic
+ (package
+ (name "python-alembic")
+ (version "0.9.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "alembic" version))
+ (sha256
+ (base32
+ "01gx2syqbaxh4hr9pf7pxhlb6p36qaf99140dy19lsx1paxb9p4b"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-mock" ,python-mock)
+ ("python-pytest-cov" ,python-pytest-cov)))
+ (propagated-inputs
+ `(("python-dateutil" ,python-dateutil)
+ ("python-sqlalchemy" ,python-sqlalchemy)
+ ("python-mako" ,python-mako)
+ ("python-editor" ,python-editor)))
+ (home-page "http://bitbucket.org/zzzeek/alembic")
+ (synopsis
+ "Database migration tool for SQLAlchemy")
+ (description
+ "Alembic is a lightweight database migration tool for usage with the
+SQLAlchemy Database Toolkit for Python.")
+ (license license:expat)))
+
+(define-public python2-alembic
+ (package-with-python2 python-alembic))
+
+(define-public python-pickleshare
+ (package
+ (name "python-pickleshare")
+ (version "0.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://pypi.python.org/packages/source/p/"
+ "pickleshare/pickleshare-" version ".tar.gz"))
+ (sha256
+ (base32 "11ljr90j3p6qswdrbl7p4cjb2i93f6vn0vx9anzpshsx0d2mggn0"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-pathpy" ,python-pathpy)))
+ (home-page "https://github.com/vivainio/pickleshare")
+ (synopsis "Tiny key value database with concurrency support")
+ (description
+ "PickleShare is a small ‘shelve’-like datastore with concurrency support.
+Like shelve, a PickleShareDB object acts like a normal dictionary. Unlike
+shelve, many processes can access the database simultaneously. Changing a
+value in database is immediately visible to other processes accessing the same
+database. Concurrency is possible because the values are stored in separate
+files. Hence the “database” is a directory where all files are governed by
+PickleShare.")
+ (license license:expat)))
+
+(define-public python2-pickleshare
+ (package-with-python2 python-pickleshare))
+
+(define-public python-apsw
+ (package
+ (name "python-apsw")
+ (version "3.20.1-r1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/rogerbinns/apsw/archive/"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "00ai7m2pqi26qaflhz314d8k5i3syw7xzr145fhfl0crhyh6adz2"))))
+ (build-system python-build-system)
+ (inputs
+ `(("sqlite" ,sqlite)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'build
+ (lambda _
+ (zero?
+ (system* "python" "setup.py" "build" "--enable-all-extensions"))))
+ (add-after 'build 'build-test-helper
+ (lambda _
+ (zero?
+ (system
+ (string-append "gcc -fPIC -shared -o ./testextension.sqlext "
+ "-I. -Isqlite3 src/testextension.c") ))))
+ (delete 'check)
+ (add-after 'install 'check
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (add-installed-pythonpath inputs outputs)
+ (zero? (system* "python" "setup.py" "test")))))))
+ (home-page "https://github.com/rogerbinns/apsw/")
+ (synopsis "Another Python SQLite Wrapper")
+ (description "APSW is a Python wrapper for the SQLite
+embedded relational database engine. In contrast to other wrappers such as
+pysqlite it focuses on being a minimal layer over SQLite attempting just to
+translate the complete SQLite API into Python.")
+ (license license:zlib)))
+
+(define-public python2-apsw
+ (package-with-python2 python-apsw))
+
+(define-public python2-neo4j-driver
+ (package
+ (name "python2-neo4j-driver")
+ ;; NOTE: When upgrading to 1.5.0, please add a python3 variant.
+ (version "1.4.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "neo4j-driver" version))
+ (sha256
+ (base32
+ "011r1vh182p8mm83d8dz9rfnc3l7rf7fd00cyrbyfzi71jmc4g98"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:python ,python-2))
+ (home-page "https://neo4j.com/developer/python/")
+ (synopsis "Neo4j driver code written in Python")
+ (description "This package provides the Neo4j Python driver that connects
+to the database using Neo4j's binary protocol. It aims to be minimal, while
+being idiomatic to Python.")
+ (license license:asl2.0)))
+
+(define-public python2-py2neo
+ (package
+ (name "python2-py2neo")
+ (version "3.1.2")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "py2neo" version))
+ (sha256
+ (base32
+ "1f1q95vqcvlc3nsc33p841swnjdcjazddlq2dzi3qfnjqjrajxw1"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:python ,python-2))
+ (home-page "http://py2neo.org")
+ (synopsis "Library and toolkit for working with Neo4j in Python")
+ (description "This package provides a client library and toolkit for
+working with Neo4j from within Python applications and from the command
+line. The core library has no external dependencies and has been carefully
+designed to be easy and intuitive to use.")
+ (license license:asl2.0)))
+
+(define-public python-psycopg2
+ (package
+ (name "python-psycopg2")
+ (version "2.7.3.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "psycopg2" version))
+ (sha256
+ (base32
+ "0rda1j02ds6s28752fhmpwg761sh6jsxi1gpczqkrd28cki1cywv"))))
+ (build-system python-build-system)
+ (arguments
+ ;; Tests would require a postgresql database "psycopg2_test"
+ ;; and a running postgresql database management service.
+ `(#:tests? #f)) ; TODO re-enable after providing a test-db.
+ (inputs
+ `(("postgresql" ,postgresql))) ; libpq
+ (home-page "http://initd.org/psycopg/")
+ (synopsis "Python PostgreSQL adapter")
+ (description
+ "psycopg2 is a thread-safe PostgreSQL adapter that implements DB-API 2.0. ")
+ (license license:lgpl3+)))
+
+(define-public python2-psycopg2
+ (package-with-python2 python-psycopg2))
+
+(define-public python-sadisplay
+ (package
+ (name "python-sadisplay")
+ (version "0.4.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "sadisplay" version))
+ (sha256
+ (base32
+ "0zqad2fl7q26p090qmqgmxbm6iwgf9zij1w8da1g3wdgjj72ql05"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-sqlalchemy" ,python-sqlalchemy)))
+ (native-inputs
+ `(("python-nose" ,python-nose)))
+ (home-page "https://bitbucket.org/estin/sadisplay")
+ (synopsis "SQLAlchemy schema displayer")
+ (description "This package provides a program to build Entity
+Relationship diagrams from a SQLAlchemy model (or directly from the
+database).")
+ (license license:bsd-3)))
+
+(define-public python2-sadisplay
+ (package-with-python2 python-sadisplay))
+
+(define-public python-mysqlclient
+ (package
+ (name "python-mysqlclient")
+ (version "1.3.10")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "mysqlclient" version))
+ (sha256
+ (base32
+ "0qkj570x4rbsblji6frvsvp2v1ap32dqzj1lq62zp9515ffsyaj5"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("mariadb" ,mariadb)
+ ("nose" ,python-nose)
+ ("mock" ,python-mock)
+ ("py.test" ,python-pytest)))
+ (inputs
+ `(("mysql" ,mysql)
+ ("libz" ,zlib)
+ ("openssl" ,openssl)))
+ (home-page "https://github.com/PyMySQL/mysqlclient-python")
+ (synopsis "MySQLdb is an interface to the popular MySQL database server for Python")
+ (description "MySQLdb is an interface to the popular MySQL database server
+for Python. The design goals are:
+@enumerate
+@item Compliance with Python database API version 2.0 [PEP-0249],
+@item Thread-safety,
+@item Thread-friendliness (threads will not block each other).
+@end enumerate")
+ (license license:gpl2)))
+
+(define-public python2-mysqlclient
+ (package-with-python2 python-mysqlclient))
+
+(define-public python-hiredis
+ (package
+ (name "python-hiredis")
+ (version "0.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "hiredis" version))
+ (sha256
+ (base32
+ "1dfm2k9l9zar9nw9fwmm74zrgraxdxs04vx9li56fjcf289qx5fa"))))
+ (build-system python-build-system)
+ (arguments
+ ;; no tests
+ `(#:tests? #f))
+ (home-page "https://github.com/redis/hiredis-py")
+ (synopsis "Python extension that wraps protocol parsing code in hiredis")
+ (description "Python-hiredis is a python extension that wraps protocol
+parsing code in hiredis. It primarily speeds up parsing of multi bulk replies.")
+ (license license:bsd-3)))
+
+(define-public python2-hiredis
+ (package-with-python2 python-hiredis))
+
+(define-public python-fakeredis
+ (package
+ (name "python-fakeredis")
+ (version "0.8.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "fakeredis" version))
+ (sha256
+ (base32
+ "0zncahj3byyasyfx9i7k991ph0n0lq8v3a21pqri5qxn9564bk9r"))))
+ (build-system python-build-system)
+ (arguments
+ ;; no tests
+ `(#:tests? #f))
+ (home-page "https://github.com/jamesls/fakeredis")
+ (synopsis "Fake implementation of redis API for testing purposes")
+ (description "Fakeredis is a pure python implementation of the redis-py
+python client that simulates talking to a redis server. This was created for a
+single purpose: to write unittests. Setting up redis is not hard, but many time
+ you want to write unittests that do not talk to an external server (such as
+redis). This module now allows tests to simply use this module as a reasonable
+substitute for redis.")
+ (license license:bsd-3)))
+
+(define-public python2-fakeredis
+ (package-with-python2 python-fakeredis))
+
+(define-public python-redis
+ (package
+ (name "python-redis")
+ (version "2.10.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "redis" version))
+ (sha256
+ (base32 "0csmrkxb29x7xs9b51zplwkkq2hwnbh9jns1g85dykn5rxmaxysx"))))
+ (build-system python-build-system)
+ ;; Tests require a running Redis server
+ (arguments '(#:tests? #f))
+ ;; As long as we are not running test, we do not need this input :-)
+ ;;(native-inputs
+ ;; `(("python-pytest" ,python-pytest)))
+ (home-page "https://github.com/andymccurdy/redis-py")
+ (synopsis "Redis Python client")
+ (description
+ "This package provides a Python interface to the Redis key-value store.")
+ (license license:expat)))
+
+(define-public python2-redis
+ (package-with-python2 python-redis))
+
+(define-public python-rq
+ (package
+ (name "python-rq")
+ (version "0.7.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "rq" version))
+ (sha256
+ (base32 "0gaq5pnh0zy46r8jvygi0ifbvz3pq6i7xla78ijcgjw0x77qzsdh"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-click" ,python-click)
+ ("python-redis" ,python-redis)))
+ (home-page "http://python-rq.org/")
+ (synopsis "Simple job queues for Python")
+ (description
+ "RQ (Redis Queue) is a simple Python library for queueing jobs and
+processing them in the background with workers. It is backed by Redis and it
+is designed to have a low barrier to entry.")
+ (license license:bsd-2)))
+
+(define-public python2-rq
+ (package-with-python2 python-rq))
+
+(define-public python-trollius-redis
+ (package
+ (name "python-trollius-redis")
+ (version "0.1.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "trollius_redis" version))
+ (sha256
+ (base32
+ "0k3vypszmgmaipgw9xscvgm79h2zd6p6ci8gdp5sxl6g5kbqr9fy"))))
+ (build-system python-build-system)
+ ;; TODO: Tests require packaging 'hiredis'.
+ (arguments '(#:tests? #f))
+ (home-page "https://github.com/benjolitz/trollius-redis")
+ (synopsis "Port of asyncio-redis to trollius")
+ (description "@code{trollius-redis} is a Redis client for Python
+ trollius. It is an asynchronious IO (PEP 3156) implementation of the
+ Redis protocol.")
+ (license license:bsd-2)))
+
+(define-public python2-trollius-redis
+ (package-with-python2 python-trollius-redis))
+
+(define-public python-sqlparse
+ (package
+ (name "python-sqlparse")
+ (version "0.2.4")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "sqlparse" version))
+ (sha256
+ (base32
+ "1v3xh0bkfhb262dbndgzhivpnhdwavdzz8jjhx9vx0xbrx2880nf"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _ (zero? (system* "py.test")))))))
+ (native-inputs
+ `(("python-pytest" ,python-pytest)))
+ (home-page "https://github.com/andialbrecht/sqlparse")
+ (synopsis "Non-validating SQL parser")
+ (description "Sqlparse is a non-validating SQL parser for Python. It
+provides support for parsing, splitting and formatting SQL statements.")
+ (license license:bsd-3)))
+
+(define-public python2-sqlparse
+ (package-with-python2 python-sqlparse))
+
+(define-public python-sql
+ (package
+ (name "python-sql")
+ (version "0.9")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "python-sql" version))
+ (sha256
+ (base32
+ "0p6kaqj02vz0habmdx37zjk6hjxdfm8aw737zs059vvpr70ird87"))))
+ (build-system python-build-system)
+ (home-page "https://python-sql.tryton.org/")
+ (synopsis "Library to write SQL queries in a pythonic way")
+ (description "@code{python-sql} is a library to write SQL queries, that
+transforms idiomatic python function calls to well-formed SQL queries.")
+ (license license:bsd-3)))
+
+(define-public python2-sql
+ (package-with-python2 python-sql))