aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2016-09-04 23:28:34 +0100
committerChristopher Baines <mail@cbaines.net>2016-09-04 23:28:34 +0100
commit4d22bc5da177188a4dcae2a116c9efa2603b38b4 (patch)
tree863b401e4b94ab78b610412b8130b43a4780b32c
downloadguix-python-integration-project-4d22bc5da177188a4dcae2a116c9efa2603b38b4.tar
guix-python-integration-project-4d22bc5da177188a4dcae2a116c9efa2603b38b4.tar.gz
Initial commit
-rw-r--r--README58
-rw-r--r--gpip/package-fixes.scm500
-rw-r--r--gpip/python2-7.scm47
-rw-r--r--gpip/sdists.scm3042
-rw-r--r--gpip/update.scm83
-rw-r--r--guix-env.scm343
-rwxr-xr-xpre-inst-env12
-rwxr-xr-xpure-pre-inst-env3
8 files changed, 4088 insertions, 0 deletions
diff --git a/README b/README
new file mode 100644
index 0000000..e850dd6
--- /dev/null
+++ b/README
@@ -0,0 +1,58 @@
+The Guix Python Integration Project
+====================================
+
+The goal of this project is to make it easy and enjoyable to use large amounts
+of public free software written in Python, together with GNU Guix.
+
+At the moment, only ~100 releases have been imported, but the aim is to
+automatically sync from [pypi.org][1].
+
+If this can be done, it could provide a number of benefits. Firstly, the
+generated packages can be used, and this should be easier and safer than using
+other tools like [pip][2] because Guix makes it possible to manage the entire
+dependency tree, and the use of contained build environments restricts access
+to the users machine at build time.
+
+Other benefits could include quality assurance, for example, surfacing the
+presence of similar files found in different packages, and integration testing
+between different package by attempting to build all packages with the latest
+versions of their dependencies.
+
+[1]: https://pypi.org/
+[2]: https://pypi.python.org/pypi/pip
+
+Getting started
+---------------
+
+The easiest thing to do is to try using some of the software already packaged.
+This is only a prototype, but you can see it working with the sentry package.
+
+For example, running the following commands should show the help output for the
+sentry command in the sentry package (real time error tracking software). Note
+that they may take a few minutes to run, even if you have all the packages
+built (this is probably due to bugs and poor implementation).
+
+ ./pure-pre-inst-env guix environment --pure --ad-hoc -e "(begin (use-modules (gpip python2-7)) sentry-8.5.1)" -- sentry
+
+ ./pure-pre-inst-env guix environment --pure --ad-hoc -e '(begin (use-modules ((gnu packages python) #:select (python-2.7)) (pypi requirement) (pypi package) (pypi sdist-store) (gpip sdists) (gpip package-fixes)) (requirement->package (package-configuration python-2.7 get-fixed-package) (add-sdists (make-sdist-store) sdists) (requirement (name "sentry") (specifiers "==8.5.1"))))'
+
+The first command uses the (gpip python2-7) module, which is designed to be
+included in the GUIX_PACKAGE_PATH. The 2nd command does what the (gpip
+python2-7) module does, but just for the specific package (and thus it should
+be a bit quicker).
+
+To see what is going on internally, you can look at the graph for the sentry
+package.
+
+ ./pure-pre-inst-env guix graph -e "(begin (use-modules (gpip python2-7)) sentry-8.5.1)" | dot -Tpdf -o sentry.pdf
+
+ ./pure-pre-inst-env guix graph -e '(begin (use-modules ((gnu packages python) #:select (python-2.7)) (pypi requirement) (pypi package) (pypi sdist-store) (gpip sdists) (gpip package-fixes)) (requirement->package (package-configuration python-2.7 get-fixed-package) (add-sdists (make-sdist-store) sdists) (requirement (name "sentry") (specifiers "==8.5.1"))))' | dot -Tpdf -o sentry.pdf
+
+The available packages come from the contents of the (gpip sdists) module,
+which contains sdist records. At the moment, records are added to this though
+the update function in the (gpip update) module, and the calls it makes to the
+get-store-with function.
+
+To run this, you can do:
+
+ ./pure-pre-inst-env guile -c '(begin (use-modules (gpip update)) (update))'
diff --git a/gpip/package-fixes.scm b/gpip/package-fixes.scm
new file mode 100644
index 0000000..e5efccb
--- /dev/null
+++ b/gpip/package-fixes.scm
@@ -0,0 +1,500 @@
+(define-module (gpip package-fixes)
+ #:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-9)
+ #:use-module (guix utils)
+ #:use-module (guix packages)
+ #:use-module (guix build utils)
+ #:use-module (gnu packages tls)
+ #:use-module (gnu packages xml)
+ #:use-module (gnu packages image)
+ #:use-module (gnu packages libffi)
+ #:use-module (gnu packages databases)
+ #:use-module (gnu packages fontutils)
+ #:use-module (gnu packages ghostscript)
+ #:use-module (gnu packages compression)
+ #:use-module (pypi sdist)
+ #:use-module (pypi package)
+ #:use-module (pypi requirement)
+ #:export (get-fixed-package))
+
+(define-record-type <fix>
+ (fix requirement operation)
+ fix?
+ (requirement fix-requirement)
+ (operation fix-operation))
+
+(define disable-tests
+ (lambda (pkg)
+ (package
+ (inherit pkg)
+ (arguments
+ (ensure-keyword-arguments
+ (package-arguments pkg)
+ '(#:tests? #f))))))
+
+(define (add-inputs inputs)
+ (lambda (pkg)
+ (package
+ (inherit pkg)
+ (inputs
+ (append
+ (package-inputs pkg)
+ inputs)))))
+
+(define pbr-snippet
+ '(replace
+ 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (command "install")
+ (params `("--root" "/" "--prefix" ,out
+ "--single-version-externally-managed")))
+ (simple-format #t "running \"python setup.py\" with command ~s and parameters ~s~%"
+ command params)
+ (apply system* "python" "setup.py" command params)))))
+
+(define fixes (list
+ (fix
+ (requirement
+ (name "pbr"))
+ disable-tests) ; Tests try to use virtualenv
+
+ (fix
+ (requirement
+ (name "cssutils"))
+ disable-tests) ; The tests try to download from the network
+
+ (fix
+ (requirement
+ (name "nose"))
+ disable-tests)
+
+ (fix
+ (requirement
+ (name "testscenarios"))
+ disable-tests)
+
+ (fix
+ (requirement
+ (name "py"))
+ disable-tests)
+
+ (fix
+ (requirement
+ (name "scripttest"))
+ disable-tests)
+
+ (fix
+ (requirement
+ (name "fixtures")
+ (specifiers ">=3.0.0"))
+ (lambda (pkg)
+ (package
+ (inherit pkg)
+ (arguments
+ (ensure-keyword-arguments
+ (package-arguments pkg)
+ `(#:phases
+ (modify-phases %standard-phases
+ ,pbr-snippet)))))))
+
+ (fix
+ (requirement
+ (name "testtools")
+ (specifiers ">=2.2.0"))
+ (lambda (pkg)
+ (package
+ (inherit pkg)
+ (arguments
+ (ensure-keyword-arguments
+ (package-arguments pkg)
+ `(#:tests? #f
+ #:phases
+ (modify-phases %standard-phases
+ ,pbr-snippet)))))))
+
+ (fix
+ (requirement
+ (name "linecache2")
+ (specifiers ">=2.2.0"))
+ (lambda (pkg)
+ (package
+ (inherit pkg)
+ (arguments
+ (ensure-keyword-arguments
+ (package-arguments pkg)
+ `(#:phases
+ (modify-phases %standard-phases
+ ,pbr-snippet)))))))
+
+ (fix
+ (requirement
+ (name "traceback2")
+ (specifiers ">=2.2.0"))
+ (lambda (pkg)
+ (package
+ (inherit pkg)
+ (arguments
+ (ensure-keyword-arguments
+ (package-arguments pkg)
+ `(#:phases
+ (modify-phases %standard-phases
+ ,pbr-snippet)))))))
+
+ (fix
+ (requirement
+ (name "pip"))
+ disable-tests)
+
+ (fix
+ (requirement
+ (name "virtualenv"))
+ disable-tests)
+
+ (fix
+ (requirement
+ (name "coverage"))
+ disable-tests)
+
+ (fix
+ (requirement
+ (name "cssselect"))
+ disable-tests)
+
+ (fix
+ (requirement
+ (name "six"))
+ disable-tests)
+
+ (fix
+ (requirement
+ (name "django-celery"))
+ disable-tests)
+
+ (fix
+ (requirement
+ (name "bottle"))
+ disable-tests)
+
+ (fix
+ (requirement
+ (name "raven"))
+ disable-tests)
+
+ (fix
+ (requirement
+ (name "urllib3"))
+ disable-tests)
+
+ (fix
+ (requirement
+ (name "web.py"))
+ disable-tests)
+
+ (fix
+ (requirement
+ (name "backports.ssl_match_hostname"))
+ disable-tests)
+
+ (fix
+ (requirement
+ (name "tornado"))
+ disable-tests)
+
+ (fix
+ (requirement
+ (name "Flask-Login"))
+ disable-tests)
+
+ (fix
+ (requirement
+ (name "requests"))
+ disable-tests)
+
+ (fix
+ (requirement
+ (name "Paste"))
+ disable-tests)
+
+ (fix
+ (requirement
+ (name "python-u2flib-server"))
+ disable-tests)
+
+ (fix
+ (requirement
+ (name "django-sudo"))
+ disable-tests)
+
+ (fix
+ (requirement
+ (name "celery"))
+ disable-tests)
+
+ (fix
+ (requirement
+ (name "oauth2"))
+ disable-tests) ; The tests try to download from the network
+
+ (fix
+ (requirement
+ (name "django-paging"))
+ disable-tests) ; The tests fail for an unknown reason
+
+ (fix
+ (requirement
+ (name "django-nose"))
+ disable-tests) ; The tests fail for an unknown reason
+
+ (fix
+ (requirement
+ (name "django-recaptcha"))
+ disable-tests) ; The tests fail for an unknown reason
+
+ (fix
+ (requirement
+ (name "django-bitfield"))
+ disable-tests) ; The tests fail for an unknown reason
+
+ (fix
+ (requirement
+ (name "djangorestframework"))
+ disable-tests) ; The tests fail for an unknown reason
+
+ (fix
+ (requirement
+ (name "paste"))
+ disable-tests)
+
+ (fix
+ (requirement
+ (name "redis"))
+ disable-tests)
+
+ (fix
+ (requirement
+ (name "hiredis"))
+ disable-tests) ; Missing tests
+
+ (fix
+ (requirement
+ (name "python-openid"))
+ disable-tests) ; Missing tests
+
+ (fix
+ (requirement
+ (name "hashlib"))
+ disable-tests) ; Missing tests
+
+ (fix
+ (requirement
+ (name "hashlib"))
+ (add-inputs
+ `(("openssl" ,openssl))))
+
+ (fix
+ (requirement
+ (name "ipaddr"))
+ disable-tests) ; Missing tests
+
+ (fix
+ (requirement
+ (name "statsd"))
+ disable-tests)
+
+ (fix
+ (requirement
+ (name "psycopg2"))
+ disable-tests) ; Needs running postgres
+
+ (fix
+ (requirement
+ (name "cryptography"))
+ (add-inputs
+ `(("openssl" ,openssl))))
+
+ (fix
+ (requirement
+ (name "psycopg2"))
+ (add-inputs
+ `(("postgresql" ,postgresql))))
+
+ (fix
+ (requirement
+ (name "cffi"))
+ (add-inputs
+ `(("libffi" ,libffi))))
+
+ (fix
+ (requirement
+ (name "email-reply-parser"))
+ disable-tests) ; The tests hang for an unknown reason
+
+ (fix
+ (requirement
+ (name "BeautifulSoup"))
+ (lambda (pkg)
+ (package
+ (inherit pkg)
+ (arguments
+ (ensure-keyword-arguments
+ (package-arguments pkg)
+ '(#:tests? #f))))))
+
+ (fix
+ (requirement
+ (name "lxml"))
+ (add-inputs
+ `(("libxml2" ,libxml2)
+ ("libxslt" ,libxslt))))
+ (fix
+ (requirement
+ (name "Pillow"))
+ (add-inputs
+ `(("freetype" ,freetype)
+ ("lcms" ,lcms)
+ ("zlib" ,zlib)
+ ("libjpeg" ,libjpeg)
+ ("openjpeg" ,openjpeg)
+ ("libtiff" ,libtiff)
+ ("libwebp" ,libwebp))))
+
+ (fix
+ (requirement
+ (name "Django"))
+ (lambda (pkg)
+ (package
+ (inherit pkg)
+ (arguments
+ (ensure-keyword-arguments
+ (package-arguments pkg)
+ '(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (with-directory-excursion "tests"
+ (system* "python" "./runtests.py" "--settings=test_sqlite")))))))))))
+
+ (fix
+ (requirement
+ (name "uwsgi"))
+ (lambda (pkg)
+ (package
+ (inherit pkg)
+ (arguments
+ (ensure-keyword-arguments
+ (package-arguments pkg)
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'set-path-for-check
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (mkdir-p (string-append out "/bin"))
+ (setenv "UWSGI_BIN_NAME" (string-append out "/bin/uwsgi"))))))))))))
+
+ (fix
+ (requirement
+ (name "unittest2"))
+ (lambda (pkg)
+ (package
+ (inherit pkg)
+ (arguments
+ (ensure-keyword-arguments
+ (package-arguments pkg)
+ '(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _ (system* "python" "-m" "unittest2"))))))))))
+
+ (fix
+ (requirement
+ (name "setuptools"))
+ (lambda (pkg)
+ (package
+ (inherit pkg)
+ (arguments
+ (ensure-keyword-arguments
+ (package-arguments pkg)
+ `(#:phases
+ (alist-cons-before
+ 'check 'set-PYTHON_EGG_CACHE
+ (lambda* _ (setenv "PYTHON_EGG_CACHE" "/tmp"))
+ %standard-phases)))))))
+
+ (fix
+ (requirement
+ (name "extras"))
+ (lambda (pkg)
+ (package
+ (inherit pkg)
+ (arguments
+ (ensure-keyword-arguments
+ (package-arguments pkg)
+ '(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _ (system* "make" "test"))))))))))
+
+ (fix
+ (requirement
+ (name "hmac"))
+ (lambda (pkg)
+ (package
+ (inherit pkg)
+ (source
+ (origin
+ (inherit (package-source pkg))
+ (modules '((guix build utils)))
+ (snippet
+ '(substitute* "setup.py"
+ (("'hashlib',") ""))))))))
+
+ (fix
+ (requirement
+ (name "pytest"))
+ (lambda (pkg)
+ (package
+ (inherit pkg)
+ (source
+ (origin
+ (inherit (package-source pkg))
+ (modules '((guix build utils)))
+ (snippet
+ ;; One of the tests involves the /usr directory, so it fails.
+ '(substitute* "testing/test_argcomplete.py"
+ (("def test_remove_dir_prefix\\(self\\):")
+ "@pytest.mark.xfail\n def test_remove_dir_prefix(self):"))))))))))
+
+(define indexed-fixes
+ (let ((ht (make-hash-table)))
+ (for-each
+ (lambda (fx)
+ (let* ((key (requirement-name (fix-requirement fx)))
+ (fixes (hash-ref ht key)))
+ (hash-set!
+ ht
+ key
+ (if fixes
+ (cons fx fixes)
+ (list fx)))))
+ fixes)
+ ht))
+
+(define (get-fixed-package sd pkg)
+ (let* ((key (pkg-info-name (sdist-info sd)))
+ (fixes
+ (filter
+ (lambda (fix)
+ (version-meets-requirement
+ (fix-requirement fix)
+ (pkg-info-version (sdist-info sd))))
+ (or
+ (hash-ref indexed-fixes key)
+ '()))))
+ (fold
+ (lambda (f pkg)
+ (f pkg))
+ pkg
+ (map
+ fix-operation
+ fixes))))
diff --git a/gpip/python2-7.scm b/gpip/python2-7.scm
new file mode 100644
index 0000000..179c28c
--- /dev/null
+++ b/gpip/python2-7.scm
@@ -0,0 +1,47 @@
+(define-module (gpip python2-7)
+ #:use-module ((gnu packages python)
+ #:select (python-2.7))
+ #:use-module (guix build-system python)
+ #:use-module (pypi sdist-store)
+ #:use-module (pypi package)
+ #:use-module (pypi requirement)
+ #:use-module (pypi sdist)
+ #:use-module (gpip sdists)
+ #:use-module (gpip package-fixes))
+
+(let
+ ((store
+ (add-sdists (make-sdist-store) sdists)))
+ (for-each
+ (lambda (sd)
+ (catch
+ #t
+ (lambda ()
+ (let ((sym (string->symbol
+ (string-append
+ (pkg-info-name (sdist-info sd))
+ "-"
+ (pkg-info-version (sdist-info sd)))))
+ (pkg
+ (requirement->package
+ (package-configuration
+ python-2.7
+ get-fixed-package)
+ store
+ (requirement
+ (name (pkg-info-name (sdist-info sd)))
+ (specifiers
+ (string-append "==" (pkg-info-version (sdist-info sd))))))))
+ (module-define! (resolve-interface '(gpip python2-7)) sym pkg)))
+ (lambda args
+ (display "Error creating package " (current-error-port))
+ (display
+ (string-append
+ (pkg-info-name (sdist-info sd))
+ "-"
+ (pkg-info-version (sdist-info sd)))
+ (current-error-port))
+ (display "\n" (current-error-port))
+ (display args (current-error-port))
+ (display "\n" (current-error-port)))))
+ sdists))
diff --git a/gpip/sdists.scm b/gpip/sdists.scm
new file mode 100644
index 0000000..01d39bd
--- /dev/null
+++ b/gpip/sdists.scm
@@ -0,0 +1,3042 @@
+(define-module
+ (gpip sdists)
+ #:use-module
+ (srfi srfi-1)
+ #:use-module
+ (srfi srfi-13)
+ #:use-module
+ (guix packages)
+ #:use-module
+ (guix download)
+ #:use-module
+ (guix build utils)
+ #:use-module
+ (pypi sdist)
+ #:use-module
+ (pypi requirement))
+(define-public sdists
+ (list (sdist (info (pkg-info
+ (name "amqp")
+ (version "1.4.9")
+ (home-page "http://github.com/celery/py-amqp")
+ (synopsis #f)
+ (description "")
+ (license "LGPL")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require
+ (list (requirement (name "mock"))
+ (requirement
+ (name "coverage")
+ (specifiers ">=3.0"))
+ (requirement (name "nose-cover3"))
+ (requirement (name "nose"))
+ (requirement
+ (name "unittest2")
+ (specifiers ">=0.4.0"))))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/cc/a4/f265c6f9a7eb1dd45d36d9ab775520e07ff575b11ad21156f9866da047b2/amqp-1.4.9.tar.gz")
+ (sha256
+ (base32
+ "06n6q0kxhjnbfz3vn8x9yz09lwmn1xi9d6wxp31h5jbks0b4vsid")))))
+ (sdist (info (pkg-info
+ (name "anyjson")
+ (version "0.3.3")
+ (home-page "http://bitbucket.org/runeh/anyjson/")
+ (synopsis #f)
+ (description "")
+ (license "BSD")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require
+ (list (requirement (name "nose"))))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/c3/4d/d4089e1a3dd25b46bebdb55a992b0797cff657b4477bc32ce28038fdecbc/anyjson-0.3.3.tar.gz")
+ (sha256
+ (base32
+ "1fjph4alvcscsl5d4b6qpv1yh31jy05jxi1l0xff7lws7j32v09p")))))
+ (sdist (info (pkg-info
+ (name "argparse")
+ (version "1.4.0")
+ (home-page
+ "https://github.com/ThomasWaldmann/argparse/")
+ (synopsis #f)
+ (description "")
+ (license "Python Software Foundation License")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/18/dd/e617cfc3f6210ae183374cd9f6a26b20514bbb5a792af97949c5aacddf0f/argparse-1.4.0.tar.gz")
+ (sha256
+ (base32
+ "1r6nznp64j68ih1k537wms7h57nvppq0szmwsaf99n71bfjqkc32")))))
+ (sdist (info (pkg-info
+ (name "BeautifulSoup")
+ (version "3.2.1")
+ (home-page
+ "http://www.crummy.com/software/BeautifulSoup/")
+ (synopsis #f)
+ (description "")
+ (license "BSD")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/1e/ee/295988deca1a5a7accd783d0dfe14524867e31abb05b6c0eeceee49c759d/BeautifulSoup-3.2.1.tar.gz")
+ (sha256
+ (base32
+ "1nqwzqllayjpv6xi8f2lri0h15xbrm8jmif8g6si3q0i250b933a")))))
+ (sdist (info (pkg-info
+ (name "billiard")
+ (version "3.3.0.23")
+ (home-page "http://github.com/celery/billiard")
+ (synopsis #f)
+ (description "")
+ (license "BSD")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require
+ (list (requirement (name "mock"))
+ (requirement
+ (name "nose")
+ (specifiers ">=1.3.4"))
+ (requirement
+ (name "unittest2")
+ (specifiers ">=0.4.0"))))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/64/a6/d7b6fb7bd0a4680a41f1d4b27061c7b768c673070ba8ac116f865de4e7ca/billiard-3.3.0.23.tar.gz")
+ (sha256
+ (base32
+ "02wxsc6bhqvzh8j6w758kvgqbnj14l796mvmrcms8fgfamd2lak9")))))
+ (sdist (info (pkg-info
+ (name "celery")
+ (version "3.1.18")
+ (home-page "http://celeryproject.org")
+ (synopsis #f)
+ (description "")
+ (license "BSD")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires
+ (list (requirement (name "pytz") (specifiers ">dev"))
+ (requirement
+ (name "billiard")
+ (specifiers "<3.4,>=3.3.0.20"))
+ (requirement
+ (name "kombu")
+ (specifiers "<3.1,>=3.0.25"))))
+ (extras-require
+ (list (extra "msgpack"
+ (list (requirement
+ (name "msgpack-python")
+ (specifiers ">=0.3.0"))))
+ (extra "eventlet"
+ (list (requirement (name "eventlet"))))
+ (extra "librabbitmq"
+ (list (requirement
+ (name "librabbitmq")
+ (specifiers ">=1.6.1"))))
+ (extra "mongodb"
+ (list (requirement
+ (name "pymongo")
+ (specifiers ">=2.6.2"))))
+ (extra "memcache"
+ (list (requirement (name "pylibmc"))))
+ (extra "zookeeper"
+ (list (requirement
+ (name "kazoo")
+ (specifiers ">=1.3.1"))))
+ (extra "redis"
+ (list (requirement
+ (name "redis")
+ (specifiers ">=2.8.0"))))
+ (extra "beanstalk"
+ (list (requirement (name "beanstalkc"))))
+ (extra "auth"
+ (list (requirement (name "pyOpenSSL"))))
+ (extra "pyro"
+ (list (requirement (name "pyro4"))))
+ (extra "couchbase"
+ (list (requirement (name "couchbase"))))
+ (extra "slmq"
+ (list (requirement
+ (name "softlayer_messaging")
+ (specifiers ">=1.0.3"))))
+ (extra "gevent"
+ (list (requirement (name "gevent"))))
+ (extra "yaml"
+ (list (requirement
+ (name "PyYAML")
+ (specifiers ">=3.10"))))
+ (extra "threads"
+ (list (requirement (name "threadpool"))))
+ (extra "zeromq"
+ (list (requirement
+ (name "pyzmq")
+ (specifiers ">=13.1.0"))))
+ (extra "sqlalchemy"
+ (list (requirement (name "sqlalchemy"))))
+ (extra "couchdb"
+ (list (requirement (name "couchdb"))))
+ (extra "sqs"
+ (list (requirement
+ (name "boto")
+ (specifiers ">=2.13.3"))))
+ (extra "cassandra"
+ (list (requirement (name "pycassa"))))))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/2f/b9/8a5d74bb351c5082465aaddf8772cfe6d4e954da68f3ac0f79bfd48f22df/celery-3.1.18.tar.gz")
+ (sha256
+ (base32
+ "1bry1qzb4gw0ni40w1pyzxl2d0rqbf688sdi13a5gz66f10gj909")))))
+ (sdist (info (pkg-info
+ (name "cffi")
+ (version "1.7.0")
+ (home-page "http://cffi.readthedocs.org")
+ (synopsis #f)
+ (description "")
+ (license "MIT")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require
+ (list (requirement (name "py"))
+ (requirement (name "pytest"))))
+ (install-requires
+ (list (requirement (name "pycparser"))))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/83/3c/00b553fd05ae32f27b3637f705c413c4ce71290aa9b4c4764df694e906d9/cffi-1.7.0.tar.gz")
+ (sha256
+ (base32
+ "1pv0pf38h375r581zyckb1d2phcgkszsx2n6354g6qc3zmmdvmbf")))))
+ (sdist (info (pkg-info
+ (name "cffi")
+ (version "1.5.0")
+ (home-page "http://cffi.readthedocs.org")
+ (synopsis #f)
+ (description "")
+ (license "MIT")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require
+ (list (requirement (name "py"))
+ (requirement (name "pytest"))))
+ (install-requires
+ (list (requirement (name "pycparser"))))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/5a/e5/0656020ab4467f479b1d56d8b82fd1e407a752d8a0850925860458cb1ff6/cffi-1.5.0.tar.gz")
+ (sha256
+ (base32
+ "1rx70i35hlkd3rl9pl2pmwqnbmlvlbn94lbq4448cm667xn6zxs4")))))
+ (sdist (info (pkg-info
+ (name "click")
+ (version "6.6")
+ (home-page "http://github.com/mitsuhiko/click")
+ (synopsis #f)
+ (description "")
+ (license "UNKNOWN")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/7a/00/c14926d8232b36b08218067bcd5853caefb4737cda3f0a47437151344792/click-6.6.tar.gz")
+ (sha256
+ (base32
+ "1sggipyz52crrybwbr9xvwxd4aqigvplf53k9w3ygxmzivd1jsnc")))))
+ (sdist (info (pkg-info
+ (name "contextlib2")
+ (version "0.5.4")
+ (home-page "http://contextlib2.readthedocs.org")
+ (synopsis #f)
+ (description "")
+ (license "PSF License")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/cc/19/0bee3b2ea499f7fb2480b6b3f4ae7951e111d6b73785ba53c6afeba55672/contextlib2-0.5.4.tar.gz")
+ (sha256
+ (base32
+ "126f95bcs405b434f4gqx0xd2p0gwrzpbzqnya3imxb9wp6jc1ki")))))
+ (sdist (info (pkg-info
+ (name "coverage")
+ (version "4.2")
+ (home-page "https://coverage.readthedocs.io")
+ (synopsis #f)
+ (description "")
+ (license "Apache 2.0")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/53/fe/9e0fbdbca15c2c1253379c3a694f4315a420555e7874445b06edeaeacaea/coverage-4.2.tar.gz")
+ (sha256
+ (base32
+ "0mn61b2qrc78vx24ypi4w1rm0qwb0jvx5qicfkn34iph7rnpf4p3")))))
+ (sdist (info (pkg-info
+ (name "coverage")
+ (version "4.0.3")
+ (home-page "https://coverage.readthedocs.org")
+ (synopsis #f)
+ (description "")
+ (license "Apache 2.0")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/76/b4/3777a6bae434240b1fcbbda6cb30085bd897b3519acfffea498ee9f41038/coverage-4.0.3.tar.gz")
+ (sha256
+ (base32
+ "0qjlja8ny4gcfp8abqfwdrvr8qw9kr69lkja0b4cqqbsdmdjgcc5")))))
+ (sdist (info (pkg-info
+ (name "cryptography")
+ (version "1.4")
+ (home-page
+ "https://github.com/pyca/cryptography")
+ (synopsis #f)
+ (description "")
+ (license "BSD or Apache License, Version 2.0")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require
+ (list (requirement
+ (name "pytest")
+ (specifiers "<3.0.0"))
+ (requirement
+ (name "cryptography_vectors")
+ (specifiers "==1.4"))
+ (requirement
+ (name "hypothesis")
+ (specifiers ">=1.11.4"))
+ (requirement (name "pyasn1_modules"))
+ (requirement (name "iso8601"))
+ (requirement (name "pretend"))))
+ (install-requires
+ (list (requirement (name "idna") (specifiers ">=2.0"))
+ (requirement
+ (name "pyasn1")
+ (specifiers ">=0.1.8"))
+ (requirement (name "six") (specifiers ">=1.4.1"))
+ (requirement
+ (name "setuptools")
+ (specifiers ">=11.3"))
+ (requirement (name "enum34"))
+ (requirement (name "ipaddress"))
+ (requirement
+ (name "cffi")
+ (specifiers ">=1.4.1"))))
+ (extras-require
+ (list (extra "test"
+ (list (requirement (name "pytest"))
+ (requirement (name "pretend"))
+ (requirement (name "iso8601"))
+ (requirement (name "pyasn1_modules"))
+ (requirement
+ (name "hypothesis")
+ (specifiers ">=1.11.4"))))
+ (extra "docstest"
+ (list (requirement (name "doc8"))
+ (requirement (name "pyenchant"))
+ (requirement (name "readme_renderer"))
+ (requirement (name "sphinx"))
+ (requirement (name "sphinx_rtd_theme"))
+ (requirement
+ (name "sphinxcontrib-spelling"))))
+ (extra "pep8test"
+ (list (requirement (name "flake8"))
+ (requirement (name "flake8-import-order"))
+ (requirement (name "pep8-naming"))))))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/a9/5b/a383b3a778609fe8177bd51307b5ebeee369b353550675353f46cb99c6f0/cryptography-1.4.tar.gz")
+ (sha256
+ (base32
+ "0a6i4914ychryj7kqqmf970incynj5lzx57n3cbv5i4hxm09a55v")))))
+ (sdist (info (pkg-info
+ (name "cryptography-vectors")
+ (version "1.4")
+ (home-page
+ "https://github.com/pyca/cryptography")
+ (synopsis #f)
+ (description "")
+ (license "BSD or Apache License, Version 2.0")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require
+ (list (requirement
+ (name "pytest")
+ (specifiers "<3.0.0"))))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/ee/ff/306fd09c104a8094dd1b0e8b858b75ad5b9598f03cf16e81dbc9d249d5a4/cryptography_vectors-1.4.tar.gz")
+ (sha256
+ (base32
+ "1sk6yhphk2k2vzshi0djxi0jsxd9a02259bs8gynfgf5y1g82a07")))))
+ (sdist (info (pkg-info
+ (name "cssselect")
+ (version "0.9.2")
+ (home-page "https://pythonhosted.org/cssselect/")
+ (synopsis #f)
+ (description "")
+ (license "BSD")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/11/21/47b5d2696a945da177d2344b6e330b7b0d1c52404063cb387d2261517ccb/cssselect-0.9.2.tar.gz")
+ (sha256
+ (base32
+ "1xg6gbva1yswghiycmgincv6ab4bn7hpm720ndbj40h8xycmnfvi")))))
+ (sdist (info (pkg-info
+ (name "cssutils")
+ (version "0.9.10")
+ (home-page "http://cthedot.de/cssutils/\r")
+ (synopsis #f)
+ (description "")
+ (license
+ "LGPL 2.1 or later, see also http://cthedot.de/cssutils/\r")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/92/4f/02b84160055ac51c4c7bb654aca3a0724c4e90b2e124088d7e24b39ea0b1/cssutils-0.9.10.zip")
+ (sha256
+ (base32
+ "19i3dixvkxgff4rlhysslcn8y042na213g75zlqr5v4avzyl589f")))))
+ (sdist (info (pkg-info
+ (name "Django")
+ (version "1.10")
+ (home-page "http://www.djangoproject.com/")
+ (synopsis #f)
+ (description "")
+ (license "BSD")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require
+ (list (extra "argon2"
+ (list (requirement
+ (name "argon2-cffi")
+ (specifiers ">=16.1.0"))))
+ (extra "bcrypt"
+ (list (requirement (name "bcrypt"))))))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/18/5c/3cd8989b2226c55a1faf66f1a110e76cba6e6ca5d9dd15fb469fb636f378/Django-1.10.tar.gz")
+ (sha256
+ (base32
+ "01bh5yra6zyxcpqacahbwfbn0y4ivw07j2jsw3crvmjzivb6if26")))))
+ (sdist (info (pkg-info
+ (name "Django")
+ (version "1.9.9")
+ (home-page "http://www.djangoproject.com/")
+ (synopsis #f)
+ (description "")
+ (license "BSD")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require
+ (list (extra "bcrypt"
+ (list (requirement (name "bcrypt"))))))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/21/c0/3c13bd233cb65932ec8f7d25ebc2942c40fa5c424f33314ac35839d50631/Django-1.9.9.tar.gz")
+ (sha256
+ (base32
+ "136ypwacj4av6xqmbfp6lhlr0171ws2knv74h0r59ssaaffznh73")))))
+ (sdist (info (pkg-info
+ (name "Django")
+ (version "1.8.14")
+ (home-page "http://www.djangoproject.com/")
+ (synopsis #f)
+ (description "")
+ (license "BSD")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require
+ (list (extra "bcrypt"
+ (list (requirement (name "bcrypt"))))))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/4f/a5/0fb863c3b83f8a15b50731d02d835cb15fef93193c7cbbaacbb2b6adf1e0/Django-1.8.14.tar.gz")
+ (sha256
+ (base32
+ "0ka6slangri68qaf91gl10l9m14f6waj4ncz543rbcpvj25w90jj")))))
+ (sdist (info (pkg-info
+ (name "Django")
+ (version "1.6.11")
+ (home-page "http://www.djangoproject.com/")
+ (synopsis #f)
+ (description "")
+ (license "BSD")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/69/1a/a47b2efd22bf642d19d3dde71f82b29c5608bb96e140a38208bf813f9c3b/Django-1.6.11.tar.gz")
+ (sha256
+ (base32
+ "0misvia78c14y07zs5xsb9lv54q0v217jpaindrmhhw4wiryal3y")))))
+ (sdist (info (pkg-info
+ (name "Django")
+ (version "1.5.12")
+ (home-page "http://www.djangoproject.com/")
+ (synopsis #f)
+ (description "")
+ (license "BSD")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/7b/a8/e4ffd9cc175c0b6b41cc33463449e6515eff28a27f7102818e24d9fd2517/Django-1.5.12.tar.gz")
+ (sha256
+ (base32
+ "1vbcvn6ncg7hq5i1w95h746vkq9lmp120vx63h3p56z5nsz7gpmk")))))
+ (sdist (info (pkg-info
+ (name "django-bitfield")
+ (version "1.7.1")
+ (home-page
+ "https://github.com/disqus/django-bitfield")
+ (synopsis #f)
+ (description "")
+ (license "UNKNOWN")))
+ (build-requires
+ (list (requirement (name "setuptools"))
+ (requirement (name "nose") (specifiers ">=1.0"))))
+ (tests-require (list))
+ (install-requires
+ (list (requirement
+ (name "Django")
+ (specifiers ">=1.2"))
+ (requirement (name "six"))))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/06/63/66a907a990fbf2d0c30ec8635c1ca8a8dcef265ffaa0fc9e8633337d2a79/django-bitfield-1.7.1.tar.gz")
+ (sha256
+ (base32
+ "12vc1adawm7anrdb2k5qj774b1hgvsr0scbwx6vpi8z8vgp2fcac")))))
+ (sdist (info (pkg-info
+ (name "django-crispy-forms")
+ (version "1.4.0")
+ (home-page
+ "http://github.com/maraujop/django-crispy-forms")
+ (synopsis #f)
+ (description "")
+ (license "MIT")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require
+ (list (extra "tests"
+ (list (requirement
+ (name "Django")
+ (specifiers "<1.6,>=1.3"))))))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/cc/aa/8b8d7f440acb2b2094a3240b691bf065c02df26d88525a8be06cc43fafab/django-crispy-forms-1.4.0.tar.gz")
+ (sha256
+ (base32
+ "040m50ypf7c97rx8zkglwci6acmb5zn7gri5yraw53gzplg57jfh")))))
+ (sdist (info (pkg-info
+ (name "django-debug-toolbar")
+ (version "1.3.2")
+ (home-page
+ "https://github.com/django-debug-toolbar/django-debug-toolbar")
+ (synopsis #f)
+ (description "")
+ (license "BSD")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires
+ (list (requirement
+ (name "django")
+ (specifiers ">=1.4.2"))
+ (requirement (name "sqlparse"))))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/c3/d7/2a2afd4b17e1fe316febd9804d6ccc916e9519f0ea6f3bd579c6c48f3b8f/django-debug-toolbar-1.3.2.tar.gz")
+ (sha256
+ (base32
+ "00yifna0gjb271km7qw9vaxqfpkmh65jgxv093hl51hmiav564vc")))))
+ (sdist (info (pkg-info
+ (name "django-jsonfield")
+ (version "0.9.13")
+ (home-page
+ "http://bitbucket.org/schinckel/django-jsonfield/")
+ (synopsis #f)
+ (description "")
+ (license "UNKNOWN")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require
+ (list (requirement (name "django") (specifiers "<1.6"))))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/a4/93/0d881e8f32043c65454a0980e8472fc831e2e75ae05607ef4d406cbe123f/django-jsonfield-0.9.13.tar.gz")
+ (sha256
+ (base32
+ "0hwfg8ccqg2p86j57mql8iid3x38s5ppzpabbz6cb39zaka3vbhj")))))
+ (sdist (info (pkg-info
+ (name "django-paging")
+ (version "0.2.5")
+ (home-page
+ "http://github.com/dcramer/django-paging")
+ (synopsis #f)
+ (description "")
+ (license "UNKNOWN")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires
+ (list (requirement
+ (name "django-templatetag-sugar")
+ (specifiers ">=0.1"))))
+ (extras-require
+ (list (extra "test"
+ (list (requirement (name "unittest2"))
+ (requirement (name "django"))))))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/73/b6/0165172d65329600c135999733e205fb42678f27062808ea3e9ec015629e/django-paging-0.2.5.tar.gz")
+ (sha256
+ (base32
+ "1fzjzr1yb2w1mqndcfd6qlsxyf196lw9w4278wgvsri7cfwk2pdk")))))
+ (sdist (info (pkg-info
+ (name "django-picklefield")
+ (version "0.3.2")
+ (home-page
+ "http://github.com/gintas/django-picklefield")
+ (synopsis #f)
+ (description "")
+ (license "UNKNOWN")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/9c/22/602e6d010248786d72b70c7ca16b0d19ec513897a39861a957a092a77b08/django-picklefield-0.3.2.tar.gz")
+ (sha256
+ (base32
+ "1qlsbp3798ii68ny9zlz2ppkna00jf7i4hmjal3p8433gi18md7s")))))
+ (sdist (info (pkg-info
+ (name "django-recaptcha")
+ (version "1.0.5")
+ (home-page
+ "http://github.com/praekelt/django-recaptcha")
+ (synopsis #f)
+ (description "")
+ (license "BSD")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires
+ (list (requirement (name "django"))))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/81/26/e4e3a922f07a66ec78ab179691aa8f470a17c72f958678840546c0d3800a/django-recaptcha-1.0.5.tar.gz")
+ (sha256
+ (base32
+ "0cpcy50ddxs6b3q5mcvqhhmvdw3bj243xw75if7kfxxxyyh0ydyw")))))
+ (sdist (info (pkg-info
+ (name "django-social-auth")
+ (version "0.7.28")
+ (home-page
+ "https://github.com/omab/django-social-auth")
+ (synopsis #f)
+ (description "")
+ (license "BSD")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires
+ (list (requirement
+ (name "Django")
+ (specifiers ">=1.2.5"))
+ (requirement
+ (name "oauth2")
+ (specifiers ">=1.5.167"))
+ (requirement
+ (name "python-openid")
+ (specifiers ">=2.2"))))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/27/b5/699cff8eb7748a3bd0d5926ac5823e2d816c94157880af0752c2295e72df/django-social-auth-0.7.28.tar.gz")
+ (sha256
+ (base32
+ "0wpnlpcawqv22a9lk697dvljvlr1ap9drr9irql42l4hvq91n550")))))
+ (sdist (info (pkg-info
+ (name "django-sudo")
+ (version "2.0.1")
+ (home-page
+ "https://github.com/mattrobenolt/django-sudo")
+ (synopsis #f)
+ (description "")
+ (license "BSD")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require
+ (list (extra "tests"
+ (list (requirement (name "pytest"))
+ (requirement (name "pytest-cov"))
+ (requirement (name "pytest-django"))
+ (requirement (name "flake8"))))))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/14/d4/7b30cd7f465fe6987f69a059adb3d9fb7047f8fb02f16dbed67c8f6c57e4/django-sudo-2.0.1.tar.gz")
+ (sha256
+ (base32
+ "19q36pcgyc1bhinhq74klkq0mimrwdh4h5jwld7033l1lllr5vqb")))))
+ (sdist (info (pkg-info
+ (name "django-templatetag-sugar")
+ (version "1.0")
+ (home-page
+ "http://github.com/alex/django-templatetag-sugar/")
+ (synopsis #f)
+ (description "")
+ (license "BSD")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/95/45/0f2b31e4e86a9df1151c4c3a5f8ff1fb9bd882785d7c90ef1629fce37636/django-templatetag-sugar-1.0.tar.gz")
+ (sha256
+ (base32
+ "0plss9p32g8nb0sa3v679pvhiqxz3071k1dk53rlq5vckxa31xp9")))))
+ (sdist (info (pkg-info
+ (name "djangorestframework")
+ (version "2.3.14")
+ (home-page
+ "http://www.django-rest-framework.org")
+ (synopsis #f)
+ (description "")
+ (license "BSD")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/c5/02/621fc6fb5c00a7408be2af3a9aa966b327905a16bc5891c66fc1da74f6d1/djangorestframework-2.3.14.tar.gz")
+ (sha256
+ (base32
+ "08xvjryjkkj7vrzvfbhhq3bk13klsci5klfgxiv0fisjyl85qrim")))))
+ (sdist (info (pkg-info
+ (name "email-reply-parser")
+ (version "0.2.0")
+ (home-page
+ "https://github.com/zapier/email-reply-parser")
+ (synopsis #f)
+ (description "")
+ (license "MIT")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/96/1b/a6c9acd8e78e758a7a2f4a30dbcfbf38063a58363b1086d3e5fcdd54fc51/email_reply_parser-0.2.0.tar.gz")
+ (sha256
+ (base32
+ "0rlhsvs1ii93fq2774dn45gwfqgwx1f4fv4k27v1zr0h1zj9il1z")))))
+ (sdist (info (pkg-info
+ (name "enum34")
+ (version "1.1.6")
+ (home-page
+ "https://bitbucket.org/stoneleaf/enum34")
+ (synopsis #f)
+ (description "")
+ (license "BSD License")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/bf/3e/31d502c25302814a7c2f1d3959d2a3b3f78e509002ba91aea64993936876/enum34-1.1.6.tar.gz")
+ (sha256
+ (base32
+ "1cgm5ng2gcfrkrm3hc22brl6chdmv67b9zvva9sfs7gn7dwc9n4a")))))
+ (sdist (info (pkg-info
+ (name "exam")
+ (version "0.10.6")
+ (home-page "https://github.com/fluxx/exam")
+ (synopsis #f)
+ (description "")
+ (license "MIT")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require
+ (list (requirement (name "nose"))))
+ (install-requires
+ (list (requirement (name "mock"))))
+ (extras-require
+ (list (extra "test" (list (requirement (name "nose"))))
+ (extra "docs"
+ (list (requirement (name "sphinx"))
+ (requirement (name "nose"))))
+ (extra "lint"
+ (list (requirement (name "pep8"))
+ (requirement (name "pyflakes"))))
+ (extra "all"
+ (list (requirement (name "mock"))
+ (requirement (name "nose"))))))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/c7/bd/c15ce029540bb1b551af83c0df502ba47e019ce7132a65db046ad16b8eda/exam-0.10.6.tar.gz")
+ (sha256
+ (base32
+ "128pw5rny5ilk5g80cvx52rpnb187ga5nn5h44kjjyqwpiza0b8c")))))
+ (sdist (info (pkg-info
+ (name "extras")
+ (version "1.0.0")
+ (home-page
+ "https://github.com/testing-cabal/extras")
+ (synopsis #f)
+ (description "")
+ (license "UNKNOWN")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/be/18/0b7283f0ebf6ad4bb6b9937538495eadf05ef097b102946b9445c4242636/extras-1.0.0.tar.gz")
+ (sha256
+ (base32
+ "0khvm08rcwm62wc47j8niyl6h13f8w51c8669ifivjdr23g3cbhk")))))
+ (sdist (info (pkg-info
+ (name "fixtures")
+ (version "3.0.0")
+ (home-page
+ "https://launchpad.net/python-fixtures")
+ (synopsis #f)
+ (description "")
+ (license "UNKNOWN")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require
+ (list (requirement (name "mock"))))
+ (install-requires
+ (list (requirement (name "pbr") (specifiers ">=0.11"))
+ (requirement (name "six"))
+ (requirement
+ (name "testtools")
+ (specifiers ">=0.9.22"))))
+ (extras-require
+ (list (extra "test" (list (requirement (name "mock"))))
+ (extra "docs"
+ (list (requirement (name "docutils"))))))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/84/be/94ecbc3f2487bd14aa8b44852f498086219b7cc0c8250ee65a03e2c63119/fixtures-3.0.0.tar.gz")
+ (sha256
+ (base32
+ "1vxj29bzz3rd4pcy51d05wng9q9dh4jq6wx92yklsm7i6h1ddw7w")))))
+ (sdist (info (pkg-info
+ (name "funcsigs")
+ (version "1.0.2")
+ (home-page "http://funcsigs.readthedocs.org")
+ (synopsis #f)
+ (description "")
+ (license "ASL")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require
+ (list (requirement (name "unittest2"))))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/94/4a/db842e7a0545de1cdb0439bb80e6e42dfe82aaeaadd4072f2263a4fbed23/funcsigs-1.0.2.tar.gz")
+ (sha256
+ (base32
+ "0l4g5818ffyfmfs1a924811azhjj8ax9xd1cffr1mzd3ycn0zfx7")))))
+ (sdist (info (pkg-info
+ (name "hiredis")
+ (version "0.1.6")
+ (home-page "https://github.com/redis/hiredis-py")
+ (synopsis #f)
+ (description "")
+ (license "BSD")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/27/d2/5e4d2ac0b3161f00ce7251f51c7cb86dfc51a6fe309e550cabddd6926f65/hiredis-0.1.6.tar.gz")
+ (sha256
+ (base32
+ "0dba7fm5s8wf1mnsx6r0ffr786g50jgmh7llw4pign1i08m2dpxn")))))
+ (sdist (info (pkg-info
+ (name "honcho")
+ (version "0.7.1")
+ (home-page
+ "https://github.com/nickstenning/honcho")
+ (synopsis #f)
+ (description "")
+ (license "MIT")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require
+ (list (extra "export"
+ (list (requirement
+ (name "jinja2")
+ (specifiers "<2.8,>=2.7"))))))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/7b/8b/20a8a99276c196af029d2d7f4982a684e0ed688da6b1c463e68bc4684945/honcho-0.7.1.tar.gz")
+ (sha256
+ (base32
+ "01wlkqq33180s3hiii73slsg9i0j69d97g49pnl9vvb0z2r5wd7r")))))
+ (sdist (info (pkg-info
+ (name "httplib2")
+ (version "0.9.2")
+ (home-page
+ "https://github.com/jcgregorio/httplib2")
+ (synopsis #f)
+ (description "")
+ (license "MIT")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/ff/a9/5751cdf17a70ea89f6dde23ceb1705bfb638fd8cee00f845308bf8d26397/httplib2-0.9.2.tar.gz")
+ (sha256
+ (base32
+ "126rsryvw9vhbf3qmsfw9lf4l4xm2srmgs439lgma4cpag4s3ay3")))))
+ (sdist (info (pkg-info
+ (name "hypothesis")
+ (version "3.4.2")
+ (home-page
+ "https://github.com/HypothesisWorks/hypothesis-python")
+ (synopsis #f)
+ (description "")
+ (license "MPL v2")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires
+ (list (requirement (name "enum34"))
+ (requirement (name "enum34"))))
+ (extras-require
+ (list (extra "fakefactory"
+ (list (requirement
+ (name "fake-factory")
+ (specifiers "<=0.5.3,>=0.5.2"))))
+ (extra "all"
+ (list (requirement
+ (name "django")
+ (specifiers ">=1.7"))
+ (requirement
+ (name "fake-factory")
+ (specifiers "<=0.5.3,>=0.5.2"))
+ (requirement
+ (name "numpy")
+ (specifiers ">=1.9.0"))
+ (requirement
+ (name "pytest")
+ (specifiers ">=2.7.0"))
+ (requirement (name "pytz"))
+ (requirement (name "pytz"))))
+ (extra "django"
+ (list (requirement (name "pytz"))
+ (requirement
+ (name "django")
+ (specifiers ">=1.7"))
+ (requirement
+ (name "fake-factory")
+ (specifiers "<=0.5.3,>=0.5.2"))))
+ (extra "pytest"
+ (list (requirement
+ (name "pytest")
+ (specifiers ">=2.7.0"))))
+ (extra "datetime"
+ (list (requirement (name "pytz"))))
+ (extra "numpy"
+ (list (requirement
+ (name "numpy")
+ (specifiers ">=1.9.0"))))))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/74/72/7e800301f17db045e36c73577b4c3bd968eb3ecee77cefd04111f7ce9239/hypothesis-3.4.2.tar.gz")
+ (sha256
+ (base32
+ "124n802hr1mxk3cqhmbpfba2r0kqq7g2ld7izwq9qbfmf1kbk9l7")))))
+ (sdist (info (pkg-info
+ (name "idna")
+ (version "2.1")
+ (home-page "https://github.com/kjd/idna")
+ (synopsis #f)
+ (description "")
+ (license "BSD-like")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/fb/84/8c27516fbaa8147acd2e431086b473c453c428e24e8fb99a1d89ce381851/idna-2.1.tar.gz")
+ (sha256
+ (base32
+ "0xn60hnmwrxijnq2hnfixmy50cacv1jv2fqngxwx0g5zms0z4dpd")))))
+ (sdist (info (pkg-info
+ (name "ipaddr")
+ (version "2.1.11")
+ (home-page "http://code.google.com/p/ipaddr-py/")
+ (synopsis #f)
+ (description "")
+ (license "Apache License, Version 2.0")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/08/80/7539938aca4901864b7767a23eb6861fac18ef5219b60257fc938dae3568/ipaddr-2.1.11.tar.gz")
+ (sha256
+ (base32
+ "1dwq3ngsapjc93fw61rp17fvzggmab5x1drjzvd4y4q0i255nm8v")))))
+ (sdist (info (pkg-info
+ (name "ipaddress")
+ (version "1.0.16")
+ (home-page "https://github.com/phihag/ipaddress")
+ (synopsis #f)
+ (description "")
+ (license "Python Software Foundation License")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/cd/c5/bd44885274379121507870d4abfe7ba908326cf7bfd50a48d9d6ae091c0d/ipaddress-1.0.16.tar.gz")
+ (sha256
+ (base32
+ "1c3imabdrw8nfksgjjflzg7h4ynjckqacb188rf541m74arq4cas")))))
+ (sdist (info (pkg-info
+ (name "iso8601")
+ (version "0.1.11")
+ (home-page
+ "https://bitbucket.org/micktwomey/pyiso8601")
+ (synopsis #f)
+ (description "")
+ (license "MIT")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require
+ (list (requirement (name "pytest"))))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/c0/75/c9209ee4d1b5975eb8c2cba4428bde6b61bd55664a98290dd015cdb18e98/iso8601-0.1.11.tar.gz")
+ (sha256
+ (base32
+ "0c7gh3lsdjds262h0v1sqc66l7hqgfwbakn96qrhdbl0i3vm5yz8")))))
+ (sdist (info (pkg-info
+ (name "Jinja2")
+ (version "2.8")
+ (home-page "http://jinja.pocoo.org/")
+ (synopsis #f)
+ (description "")
+ (license "BSD")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires
+ (list (requirement (name "MarkupSafe"))))
+ (extras-require
+ (list (extra "i18n"
+ (list (requirement
+ (name "Babel")
+ (specifiers ">=0.8"))))))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/f2/2f/0b98b06a345a761bec91a079ccae392d282690c2d8272e708f4d10829e22/Jinja2-2.8.tar.gz")
+ (sha256
+ (base32
+ "1x0v41lp5m1pjix3l46zx02b7lqp2hflgpnxwkywxynvi3zz47xw")))))
+ (sdist (info (pkg-info
+ (name "kombu")
+ (version "3.0.35")
+ (home-page "http://kombu.readthedocs.org")
+ (synopsis #f)
+ (description "")
+ (license "UNKNOWN")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require
+ (list (requirement (name "unittest2"))
+ (requirement (name "mock"))
+ (requirement (name "redis"))))
+ (install-requires
+ (list (requirement
+ (name "anyjson")
+ (specifiers ">=0.3.3"))
+ (requirement
+ (name "amqp")
+ (specifiers "<2.0,>=1.4.9"))))
+ (extras-require
+ (list (extra "qpid"
+ (list (requirement
+ (name "qpid-python")
+ (specifiers ">=0.26"))
+ (requirement
+ (name "qpid-tools")
+ (specifiers ">=0.26"))))
+ (extra "msgpack"
+ (list (requirement
+ (name "msgpack-python")
+ (specifiers ">=0.4.7"))))
+ (extra "yaml"
+ (list (requirement
+ (name "PyYAML")
+ (specifiers ">=3.10"))))
+ (extra "librabbitmq"
+ (list (requirement
+ (name "librabbitmq")
+ (specifiers ">=1.6.1"))))
+ (extra "mongodb"
+ (list (requirement
+ (name "pymongo")
+ (specifiers ">=2.6.2"))))
+ (extra "couchdb"
+ (list (requirement (name "couchdb"))))
+ (extra "redis"
+ (list (requirement
+ (name "redis")
+ (specifiers ">=2.10.3"))))
+ (extra "beanstalk"
+ (list (requirement (name "beanstalkc"))))
+ (extra "pyro"
+ (list (requirement (name "pyro4"))))
+ (extra "sqs"
+ (list (requirement
+ (name "boto")
+ (specifiers ">=2.13.3"))))
+ (extra "slmq"
+ (list (requirement
+ (name "softlayer_messaging")
+ (specifiers ">=1.0.3"))))
+ (extra "zookeeper"
+ (list (requirement
+ (name "kazoo")
+ (specifiers ">=1.3.1"))))
+ (extra "sqlalchemy"
+ (list (requirement (name "sqlalchemy"))))
+ (extra "zeromq"
+ (list (requirement
+ (name "pyzmq")
+ (specifiers ">=13.1.0"))))))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/5f/4f/3859b52f6d465d0d4a767516c924ee4f0e1387498ac8d0c30d9942da3762/kombu-3.0.35.tar.gz")
+ (sha256
+ (base32
+ "09xpxpjz9nk8d14dj361dqdwyjwda3jlf1a7v6jif9wn2xm37ar2")))))
+ (sdist (info (pkg-info
+ (name "kombu")
+ (version "3.0.30")
+ (home-page "http://kombu.readthedocs.org")
+ (synopsis #f)
+ (description "")
+ (license "UNKNOWN")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require
+ (list (requirement (name "mock"))
+ (requirement
+ (name "unittest2")
+ (specifiers ">=0.5.0"))
+ (requirement (name "nose"))))
+ (install-requires
+ (list (requirement
+ (name "anyjson")
+ (specifiers ">=0.3.3"))
+ (requirement
+ (name "amqp")
+ (specifiers "<2.0,>=1.4.7"))))
+ (extras-require
+ (list (extra "qpid"
+ (list (requirement
+ (name "qpid-python")
+ (specifiers ">=0.26"))
+ (requirement
+ (name "qpid-tools")
+ (specifiers ">=0.26"))))
+ (extra "sqlalchemy"
+ (list (requirement (name "sqlalchemy"))))
+ (extra "yaml"
+ (list (requirement
+ (name "PyYAML")
+ (specifiers ">=3.10"))))
+ (extra "librabbitmq"
+ (list (requirement
+ (name "librabbitmq")
+ (specifiers ">=1.6.1"))))
+ (extra "mongodb"
+ (list (requirement
+ (name "pymongo")
+ (specifiers ">=2.6.2"))))
+ (extra "zookeeper"
+ (list (requirement
+ (name "kazoo")
+ (specifiers ">=1.3.1"))))
+ (extra "redis"
+ (list (requirement
+ (name "redis")
+ (specifiers ">=2.10.3"))))
+ (extra "beanstalk"
+ (list (requirement (name "beanstalkc"))))
+ (extra "pyro"
+ (list (requirement (name "pyro4"))))
+ (extra "sqs"
+ (list (requirement
+ (name "boto")
+ (specifiers ">=2.13.3"))))
+ (extra "slmq"
+ (list (requirement
+ (name "softlayer_messaging")
+ (specifiers ">=1.0.3"))))
+ (extra "msgpack"
+ (list (requirement
+ (name "msgpack-python")
+ (specifiers ">=0.3.0"))))
+ (extra "zeromq"
+ (list (requirement
+ (name "pyzmq")
+ (specifiers ">=13.1.0"))))
+ (extra "couchdb"
+ (list (requirement (name "couchdb"))))))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/e4/31/7d77a4b5fa7299208dfca6ccd8aea2d8361486f520408b0f533d4433ce6b/kombu-3.0.30.tar.gz")
+ (sha256
+ (base32
+ "0npq81ajiqmp8gjm7mq05n18y98xqpv7n4bbqb3p74d4irvgw0mr")))))
+ (sdist (info (pkg-info
+ (name "linecache2")
+ (version "1.0.0")
+ (home-page
+ "https://github.com/testing-cabal/linecache2")
+ (synopsis #f)
+ (description "")
+ (license "UNKNOWN")))
+ (build-requires
+ (list (requirement (name "setuptools"))
+ (requirement (name "pbr"))))
+ (tests-require
+ (list (requirement (name "unittest2"))
+ (requirement (name "fixtures"))))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/44/b0/963c352372c242f9e40db02bbc6a39ae51bde15dddee8523fe4aca94a97e/linecache2-1.0.0.tar.gz")
+ (sha256
+ (base32
+ "0z79g3ds5wk2lvnqw0y2jpakjf32h95bd9zmnvp7dnqhf57gy9jb")))))
+ (sdist (info (pkg-info
+ (name "lxml")
+ (version "3.6.4")
+ (home-page "http://lxml.de/")
+ (synopsis #f)
+ (description "")
+ (license "UNKNOWN")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require
+ (list (extra "source"
+ (list (requirement
+ (name "Cython")
+ (specifiers ">=0.20"))))
+ (extra "cssselect"
+ (list (requirement
+ (name "cssselect")
+ (specifiers ">=0.7"))))
+ (extra "html5"
+ (list (requirement (name "html5lib"))))
+ (extra "htmlsoup"
+ (list (requirement (name "BeautifulSoup4"))))))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/4f/3f/cf6daac551fc36cddafa1a71ed48ea5fd642e5feabd3a0d83b8c3dfd0cb4/lxml-3.6.4.tar.gz")
+ (sha256
+ (base32
+ "0wk1vp79013ng8xgpq4mqpvpnlm4zv6b9cwrl36yc8aq1ghd7mb1")))))
+ (sdist (info (pkg-info
+ (name "lxml")
+ (version "3.5.0")
+ (home-page "http://lxml.de/")
+ (synopsis #f)
+ (description "")
+ (license "UNKNOWN")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require
+ (list (extra "source"
+ (list (requirement
+ (name "Cython")
+ (specifiers ">=0.20"))))
+ (extra "cssselect"
+ (list (requirement
+ (name "cssselect")
+ (specifiers ">=0.7"))))
+ (extra "html5"
+ (list (requirement (name "html5lib"))))
+ (extra "htmlsoup"
+ (list (requirement (name "BeautifulSoup4"))))))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/8b/be/ed850baac891aca25c832fb8d7b9c0e7a5077a30e336d95ffc7d649aaa06/lxml-3.5.0.tar.gz")
+ (sha256
+ (base32
+ "0y7m2s8ci6q642zl85y5axkj8z827l0vhjl532acb75hlkir77rl")))))
+ (sdist (info (pkg-info
+ (name "MarkupSafe")
+ (version "0.23")
+ (home-page
+ "http://github.com/mitsuhiko/markupsafe")
+ (synopsis #f)
+ (description "")
+ (license "BSD")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/c0/41/bae1254e0396c0cc8cf1751cb7d9afc90a602353695af5952530482c963f/MarkupSafe-0.23.tar.gz")
+ (sha256
+ (base32
+ "1hvip33wva3fnmvfp9x5klqri7hpl1hkgqmjbss18nmrb7zimv54")))))
+ (sdist (info (pkg-info
+ (name "mock")
+ (version "1.3.0")
+ (home-page
+ "https://github.com/testing-cabal/mock")
+ (synopsis #f)
+ (description "")
+ (license "UNKNOWN")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require
+ (list (requirement
+ (name "unittest2")
+ (specifiers ">=1.1.0"))))
+ (install-requires
+ (list (requirement (name "pbr") (specifiers ">=0.11"))
+ (requirement (name "six") (specifiers ">=1.7"))
+ (requirement (name "funcsigs"))))
+ (extras-require
+ (list (extra "test"
+ (list (requirement
+ (name "unittest2")
+ (specifiers ">=1.1.0"))))
+ (extra "docs"
+ (list (requirement (name "sphinx"))))))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/98/05/dd44a19f1dd9f274baae2018b843d31fbeff99399114b16ac965b4f99269/mock-1.3.0.tar.gz")
+ (sha256
+ (base32
+ "1xm0xkaz8d8d26kdk09f2n9vn543ssd03vmpkqlmgq3crjz7s90y")))))
+ (sdist (info (pkg-info
+ (name "mock")
+ (version "1.0.1")
+ (home-page
+ "http://www.voidspace.org.uk/python/mock/")
+ (synopsis #f)
+ (description "")
+ (license "UNKNOWN")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require
+ (list (requirement (name "unittest2"))))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/a2/52/7edcd94f0afb721a2d559a5b9aae8af4f8f2c79bc63fdbe8a8a6c9b23bbe/mock-1.0.1.tar.gz")
+ (sha256
+ (base32
+ "0kzlsbki6q0awf89rc287f3aj8x431lrajf160a70z0ikhnxsfdq")))))
+ (sdist (info (pkg-info
+ (name "msgpack-python")
+ (version "0.4.8")
+ (home-page "http://msgpack.org/")
+ (synopsis #f)
+ (description "")
+ (license "UNKNOWN")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/21/27/8a1d82041c7a2a51fcc73675875a5f9ea06c2663e02fcfeb708be1d081a0/msgpack-python-0.4.8.tar.gz")
+ (sha256
+ (base32
+ "11pqk5braa6wndpnr1dhg64js82vjgxnm0lzy73rwl831zgijaqs")))))
+ (sdist (info (pkg-info
+ (name "ndg-httpsclient")
+ (version "0.4.2")
+ (home-page
+ "https://github.com/cedadev/ndg_httpsclient/")
+ (synopsis #f)
+ (description "")
+ (license
+ "BSD - See ndg/httpsclient/LICENCE file for details")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires
+ (list (requirement (name "PyOpenSSL"))))
+ (extras-require
+ (list (extra "subjectaltname_support"
+ (list (requirement (name "pyasn1"))))))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/a2/a7/ad1c1c48e35dc7545dab1a9c5513f49d5fa3b5015627200d2be27576c2a0/ndg_httpsclient-0.4.2.tar.gz")
+ (sha256
+ (base32
+ "1b5qirv46v4dpnmfqviwq42mdwfcby4dxmz0i41wad2337pqf2aq")))))
+ (sdist (info (pkg-info
+ (name "nose")
+ (version "1.3.7")
+ (home-page "http://readthedocs.org/docs/nose/")
+ (synopsis #f)
+ (description "")
+ (license "GNU LGPL")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/58/a5/0dc93c3ec33f4e281849523a5a913fa1eea9a3068acfa754d44d88107a44/nose-1.3.7.tar.gz")
+ (sha256
+ (base32
+ "164a43k7k2wsqqk1s6vavcdamvss4mz0vd6pwzv2h9n8rgwzxgzi")))))
+ (sdist (info (pkg-info
+ (name "nose-cover3")
+ (version "0.1.0")
+ (home-page "http://github.com/ask/nosecover3")
+ (synopsis #f)
+ (description "")
+ (license "GNU LGPL")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/f0/17/8c55242e86830a006bbaa0463f4a1da44f332ef7cd5a402f459c8dbaaf84/nose-cover3-0.1.0.tar.gz")
+ (sha256
+ (base32
+ "1la4hhc1yszjpcchvkqk5xmzlb2g1b3fgxj9wwc58qc549whlcc1")))))
+ (sdist (info (pkg-info
+ (name "oauth2")
+ (version "1.9.0.post1")
+ (home-page
+ "http://github.com/joestump/python-oauth2")
+ (synopsis #f)
+ (description "")
+ (license "MIT License")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires
+ (list (requirement (name "httplib2"))))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/64/19/8b9066e94088e8d06d649e10319349bfca961e87768a525aba4a2627c986/oauth2-1.9.0.post1.tar.gz")
+ (sha256
+ (base32
+ "1gsrkdkdymbfz9nik61043bnv7vibi5ih6ysqry7q430gigah1n0")))))
+ (sdist (info (pkg-info
+ (name "pbr")
+ (version "1.10.0")
+ (home-page "https://launchpad.net/pbr")
+ (synopsis #f)
+ (description "")
+ (license "UNKNOWN")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/c3/2c/63275fab26a0fd8cadafca71a3623e4d0f0ee8ed7124a5bb128853d178a7/pbr-1.10.0.tar.gz")
+ (sha256
+ (base32
+ "177kd9kbv1hvf2ban7l3x9ymzbi1md4hkaymwbgnz7ihf312hr0q")))))
+ (sdist (info (pkg-info
+ (name "pbr")
+ (version "0.11.1")
+ (home-page "https://launchpad.net/pbr")
+ (synopsis #f)
+ (description "")
+ (license "UNKNOWN")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires
+ (list (requirement (name "pip"))))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/8d/35/9c224b1f62566ec810851b0ff32eaf6ee6ce9acf82ff972e61d66abe9a4f/pbr-0.11.1.tar.gz")
+ (sha256
+ (base32
+ "02931hsf6bmy6bj536yyd14j4cwgf9lbkam4wc261ji95j9b46kh")))))
+ (sdist (info (pkg-info
+ (name "petname")
+ (version "1.7")
+ (home-page "https://launchpad.net/petname")
+ (synopsis #f)
+ (description "")
+ (license "Apache2")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/02/b8/cbc923522011590e41e8f455d23ac909e201a0f11aa97d665a0980bf12f5/petname-1.7.tar.gz")
+ (sha256
+ (base32
+ "0lzapn7plyj5r0q5yvmngjzx6sa5wbhjz15qbil1fk5ahchasanq")))))
+ (sdist (info (pkg-info
+ (name "Pillow")
+ (version "3.2.0")
+ (home-page "http://python-pillow.org")
+ (synopsis #f)
+ (description "")
+ (license "Standard PIL License")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require
+ (list (requirement (name "nose"))))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/e2/af/0a3981fffc5cd43078eb8b1057702e0dd2d5771e5aaa36cbd140e32f8473/Pillow-3.2.0.tar.gz")
+ (sha256
+ (base32
+ "0jkqjnqj3bz3cwrvbw6q1zy6dn0c328r6v20k7m0lj0c45bs1c34")))))
+ (sdist (info (pkg-info
+ (name "pip")
+ (version "8.1.2")
+ (home-page "https://pip.pypa.io/")
+ (synopsis #f)
+ (description "")
+ (license "MIT")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require
+ (list (extra "testing"
+ (list (requirement (name "pytest"))
+ (requirement
+ (name "virtualenv")
+ (specifiers ">=1.10"))
+ (requirement
+ (name "scripttest")
+ (specifiers ">=1.3"))
+ (requirement (name "mock"))
+ (requirement (name "pretend"))))))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/e7/a8/7556133689add8d1a54c0b14aeff0acb03c64707ce100ecd53934da1aa13/pip-8.1.2.tar.gz")
+ (sha256
+ (base32
+ "0cmpsy9lr9diskkypswm9s8glgr7w3crzh1im4zqlqv7z8zv092d")))))
+ (sdist (info (pkg-info
+ (name "pretend")
+ (version "1.0.8")
+ (home-page "https://github.com/alex/pretend")
+ (synopsis #f)
+ (description "")
+ (license "BSD")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/49/4c/ce9218b1e7c1e3dcea38b3ff287c240d38e985ba622297f1f5cf6a136bc3/pretend-1.0.8.tar.gz")
+ (sha256
+ (base32
+ "0r5r7ygz9m6d2bklflbl84cqhjkc2q12xgis8268ygjh30g2q3wk")))))
+ (sdist (info (pkg-info
+ (name "progressbar")
+ (version "2.3")
+ (home-page
+ "http://code.google.com/p/python-progressbar")
+ (synopsis #f)
+ (description "")
+ (license "LICENSE.txt")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/0f/e1/f30b72ecabba259c7c38dd0eb944a173effced3fd7de2c9c2902bd6f649a/progressbar-2.3.tar.gz")
+ (sha256
+ (base32
+ "0m0j93yfvbd8pw8cz2vdb9hyk9d0zkkd509k69jrw545jxr8mlxj")))))
+ (sdist (info (pkg-info
+ (name "psycopg2")
+ (version "2.6.2")
+ (home-page "http://initd.org/psycopg/")
+ (synopsis #f)
+ (description "")
+ (license "LGPL with exceptions or ZPL")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/7b/a8/dc2d50a6f37c157459cd18bab381c8e6134b9381b50fbe969997b2ae7dbc/psycopg2-2.6.2.tar.gz")
+ (sha256
+ (base32
+ "0p60z2gwfcal30y2w8gprflchp1kcg9qblc5rn782p4wxl90wjbh")))))
+ (sdist (info (pkg-info
+ (name "py")
+ (version "1.4.31")
+ (home-page "http://pylib.readthedocs.org/")
+ (synopsis #f)
+ (description "")
+ (license "MIT license")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/f4/9a/8dfda23f36600dd701c6722316ba8a3ab4b990261f83e7d3ffc6dfedf7ef/py-1.4.31.tar.gz")
+ (sha256
+ (base32
+ "0561gz2w3i825gyl42mcq14y3dcgkapfiv5zv9a2bz15qxiijl56")))))
+ (sdist (info (pkg-info
+ (name "pyasn1")
+ (version "0.1.9")
+ (home-page
+ "http://sourceforge.net/projects/pyasn1/")
+ (synopsis #f)
+ (description "")
+ (license "BSD")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/f7/83/377e3dd2e95f9020dbd0dfd3c47aaa7deebe3c68d3857a4e51917146ae8b/pyasn1-0.1.9.tar.gz")
+ (sha256
+ (base32
+ "0zraxni14bqi20kr4bi6nwsh32aibz0fq0xaczfisw0zdpcsqg45")))))
+ (sdist (info (pkg-info
+ (name "pyasn1-modules")
+ (version "0.0.8")
+ (home-page
+ "http://sourceforge.net/projects/pyasn1/")
+ (synopsis #f)
+ (description "")
+ (license "BSD")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires
+ (list (requirement
+ (name "pyasn1")
+ (specifiers ">=0.1.8"))))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/60/32/7703bccdba05998e4ff04db5038a6695a93bedc45dcf491724b85b5db76a/pyasn1-modules-0.0.8.tar.gz")
+ (sha256
+ (base32
+ "0drqgw81xd3fxdlg89kgd79zzrabvfncvkbybi2wr6w2y4s1jmhh")))))
+ (sdist (info (pkg-info
+ (name "pycparser")
+ (version "2.14")
+ (home-page "https://github.com/eliben/pycparser")
+ (synopsis #f)
+ (description "")
+ (license "BSD")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/6d/31/666614af3db0acf377876d48688c5d334b6e493b96d21aa7d332169bee50/pycparser-2.14.tar.gz")
+ (sha256
+ (base32
+ "0wvzyb6rxsfj3xcnpa4ynbh9qc7rrbk2277d5wqpphmx9akv8nbr")))))
+ (sdist (info (pkg-info
+ (name "pyOpenSSL")
+ (version "16.0.0")
+ (home-page "https://pyopenssl.readthedocs.org/")
+ (synopsis #f)
+ (description "")
+ (license "Apache License, Version 2.0")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires
+ (list (requirement
+ (name "cryptography")
+ (specifiers ">=1.3"))
+ (requirement (name "six") (specifiers ">=1.5.2"))))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/77/f2/bccec75ca4280a9fa762a90a1b8b152a22eac5d9c726d7da1fcbfe0a20e6/pyOpenSSL-16.0.0.tar.gz")
+ (sha256
+ (base32
+ "0zfijaxlq4vgi6jz0d4i5xq9ygqnyps6br7lmigjhqnh8gp10g9n")))))
+ (sdist (info (pkg-info
+ (name "pytest")
+ (version "3.0.0")
+ (home-page "http://pytest.org")
+ (synopsis #f)
+ (description "")
+ (license "MIT license")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require
+ (list (requirement (name "hypothesis"))))
+ (install-requires
+ (list (requirement (name "py") (specifiers ">=1.4.29"))))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/3a/13/d7adc921371b07999426d9ed8b95eb67c7bab25e88839c6f4f642bf0fb4e/pytest-3.0.0.tar.gz")
+ (sha256
+ (base32
+ "14kia3y1baacv4wxbihmwvyiy9hkdb6i69mph6r00m00qjxraxx3")))))
+ (sdist (info (pkg-info
+ (name "pytest")
+ (version "2.9.2")
+ (home-page "http://pytest.org")
+ (synopsis #f)
+ (description "")
+ (license "MIT license")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require
+ (list (requirement (name "hypothesis"))))
+ (install-requires
+ (list (requirement (name "py") (specifiers ">=1.4.29"))))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/f0/ee/6e2522c968339dca7d9abfd5e71312abeeb5ee902e09b4daf44f07b2f907/pytest-2.9.2.tar.gz")
+ (sha256
+ (base32
+ "1n6igbc1b138wx1q5gca4pqw1j6nsyicfxds5n0b5989kaxqmh8j")))))
+ (sdist (info (pkg-info
+ (name "pytest")
+ (version "2.6.4")
+ (home-page "http://pytest.org")
+ (synopsis #f)
+ (description "")
+ (license "MIT license")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires
+ (list (requirement (name "py") (specifiers ">=1.4.25"))))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/0c/a4/1e57b84d6b327fe43d7308192f3a15ce76c31c5a8eb4b76f409ceb898ef2/pytest-2.6.4.tar.gz")
+ (sha256
+ (base32
+ "0czgz2d72582xyc2y2bm23jfl2ika40dkm40p75zdkl4h6wq622m")))))
+ (sdist (info (pkg-info
+ (name "pytest-django")
+ (version "2.9.1")
+ (home-page
+ "http://pytest-django.readthedocs.org/")
+ (synopsis #f)
+ (description "")
+ (license "BSD-3-Clause")))
+ (build-requires
+ (list (requirement (name "setuptools"))
+ (requirement
+ (name "setuptools_scm")
+ (specifiers "==1.8.0"))))
+ (tests-require (list))
+ (install-requires
+ (list (requirement
+ (name "pytest")
+ (specifiers ">=2.5"))))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/50/6d/77a4644d15746ed2a243ed557af693cec7887e43b357919ba0b4fd029518/pytest-django-2.9.1.tar.gz")
+ (sha256
+ (base32
+ "1mmc7zsz3dlhs6sx4sppkj1vgshabi362r1a8b8wpj1qfximpqcb")))))
+ (sdist (info (pkg-info
+ (name "pytest-runner")
+ (version "2.9")
+ (home-page
+ "https://github.com/pytest-dev/pytest-runner")
+ (synopsis #f)
+ (description "")
+ (license "UNKNOWN")))
+ (build-requires
+ (list (requirement (name "setuptools"))
+ (requirement
+ (name "setuptools_scm")
+ (specifiers ">=1.9"))))
+ (tests-require
+ (list (requirement (name "pytest"))))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/11/d4/c335ddf94463e451109e3494e909765c3e5205787b772e3b25ee8601b86a/pytest-runner-2.9.tar.gz")
+ (sha256
+ (base32
+ "0cfiw5m3ds68spxnpz48dpqcd78vwzgh8fbdg5j1zx82kgjqsdsh")))))
+ (sdist (info (pkg-info
+ (name "python-dateutil")
+ (version "2.5.3")
+ (home-page "https://dateutil.readthedocs.org")
+ (synopsis #f)
+ (description "")
+ (license "Simplified BSD")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires
+ (list (requirement (name "six") (specifiers ">=1.5"))))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/3e/f5/aad82824b369332a676a90a8c0d1e608b17e740bbb6aeeebca726f17b902/python-dateutil-2.5.3.tar.gz")
+ (sha256
+ (base32
+ "1v9j9fmf8g911yg6k01xa2db6dx3wv73zkk7fncsj7vagjqgs20l")))))
+ (sdist (info (pkg-info
+ (name "python-memcached")
+ (version "1.58")
+ (home-page
+ "http://www.tummy.com/Community/software/python-memcached/")
+ (synopsis #f)
+ (description "")
+ (license "Python Software Foundation License")))
+ (build-requires
+ (list (requirement (name "setuptools"))
+ (requirement (name "six") (specifiers ">=1.4.0"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/f7/62/14b2448cfb04427366f24104c9da97cf8ea380d7258a3233f066a951a8d8/python-memcached-1.58.tar.gz")
+ (sha256
+ (base32
+ "1dhfajbzyx7hy139qjqmvfavc2hc1xl2i05x7ddlr7jbnnf84x97")))))
+ (sdist (info (pkg-info
+ (name "python-mimeparse")
+ (version "1.5.2")
+ (home-page
+ "https://github.com/dbtsai/python-mimeparse")
+ (synopsis #f)
+ (description "")
+ (license "UNKNOWN")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/9c/ea/148511af6f5a6889f4d3b90b00e817b4380658fd0def82a85ee83eddfa45/python-mimeparse-1.5.2.tar.gz")
+ (sha256
+ (base32
+ "09qq9fb0i8mrbci8h5a37wgw185758b56igqk2jnmk4qjnjk9wdy")))))
+ (sdist (info (pkg-info
+ (name "python-openid")
+ (version "2.2.5")
+ (home-page
+ "http://github.com/openid/python-openid")
+ (synopsis #f)
+ (description "")
+ (license "UNKNOWN")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/7b/8a/e94d18c666073280b8c0614b7e38cfaf0b129989e42f4ca713942b862f0a/python-openid-2.2.5.tar.gz")
+ (sha256
+ (base32
+ "1vvhxlghjan01snfdc4k7ykd80vkyjgizwgg9bncnin8rqz1ricj")))))
+ (sdist (info (pkg-info
+ (name "python-u2flib-server")
+ (version "4.0.1")
+ (home-page
+ "https://github.com/Yubico/python-u2flib-server")
+ (synopsis #f)
+ (description "")
+ (license "UNKNOWN")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires
+ (list (requirement
+ (name "cryptography")
+ (specifiers ">=1.2"))
+ (requirement (name "enum34"))))
+ (extras-require
+ (list (extra "yubiauth_server"
+ (list (requirement (name "yubiauth"))
+ (requirement (name "WebOb"))))
+ (extra "u2f_server"
+ (list (requirement (name "WebOb"))))))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/e7/d6/40a633fdd36669bca7753fad22a8b82351c62387fac9da3391b1702eae7d/python-u2flib-server-4.0.1.tar.gz")
+ (sha256
+ (base32
+ "02q0zwfkwmvb8cdymkvi7zbrwlkab92kqz8s4v70cys003z2a10n")))))
+ (sdist (info (pkg-info
+ (name "pytz")
+ (version "2016.6.1")
+ (home-page "http://pythonhosted.org/pytz")
+ (synopsis #f)
+ (description "")
+ (license "MIT")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/f7/c7/08e54702c74baf9d8f92d0bc331ecabf6d66a56f6d36370f0a672fc6a535/pytz-2016.6.1.tar.bz2")
+ (sha256
+ (base32
+ "0351yg3zhyyk6ia3pfx28nwj7clr8b4lqlqyb0vqb0ng4r0z9bxm")))))
+ (sdist (info (pkg-info
+ (name "PyYAML")
+ (version "3.11")
+ (home-page "http://pyyaml.org/wiki/PyYAML")
+ (synopsis #f)
+ (description "")
+ (license "MIT")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/75/5e/b84feba55e20f8da46ead76f14a3943c8cb722d40360702b2365b91dec00/PyYAML-3.11.tar.gz")
+ (sha256
+ (base32
+ "1s26125vfnskng58ym37xhwv8v0mm95b2cwbjfag8prfhy596v63")))))
+ (sdist (info (pkg-info
+ (name "qrcode")
+ (version "5.3")
+ (home-page
+ "https://github.com/lincolnloop/python-qrcode")
+ (synopsis #f)
+ (description "")
+ (license "BSD")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires
+ (list (requirement (name "six"))))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/87/16/99038537dc58c87b136779c0e06d46887ff5104eb8c64989aac1ec8cba81/qrcode-5.3.tar.gz")
+ (sha256
+ (base32
+ "0kljfrfq0c2rmxf8am57333ia41kd0snbm2rnqbdy816hgpcq5a1")))))
+ (sdist (info (pkg-info
+ (name "raven")
+ (version "5.24.3")
+ (home-page
+ "https://github.com/getsentry/raven-python")
+ (synopsis #f)
+ (description "")
+ (license "BSD")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires
+ (list (requirement (name "contextlib2"))))
+ (extras-require
+ (list (extra "flask"
+ (list (requirement
+ (name "Flask")
+ (specifiers ">=0.8"))
+ (requirement
+ (name "blinker")
+ (specifiers ">=1.1"))))
+ (extra "tests"
+ (list (requirement (name "six"))
+ (requirement (name "bottle"))
+ (requirement
+ (name "celery")
+ (specifiers ">=2.5"))
+ (requirement
+ (name "Django")
+ (specifiers ">=1.4"))
+ (requirement
+ (name "django-celery")
+ (specifiers ">=2.5"))
+ (requirement
+ (name "exam")
+ (specifiers ">=0.5.2"))
+ (requirement
+ (name "flake8")
+ (specifiers "<2.7,>=2.6"))
+ (requirement (name "logbook"))
+ (requirement (name "mock"))
+ (requirement (name "nose"))
+ (requirement (name "pycodestyle"))
+ (requirement (name "pytz"))
+ (requirement (name "pytest"))
+ (requirement
+ (name "pytest-django")
+ (specifiers "==2.9.1"))
+ (requirement
+ (name "pytest-timeout")
+ (specifiers "==0.4"))
+ (requirement (name "requests"))
+ (requirement (name "tornado"))
+ (requirement (name "webob"))
+ (requirement (name "webtest"))
+ (requirement (name "anyjson"))
+ (requirement
+ (name "Flask")
+ (specifiers ">=0.8"))
+ (requirement
+ (name "blinker")
+ (specifiers ">=1.1"))
+ (requirement
+ (name "Flask-Login")
+ (specifiers ">=0.2.0"))
+ (requirement (name "unittest2"))
+ (requirement (name "paste"))
+ (requirement (name "web.py"))))))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/4a/f5/c530f2e170dcff261e588b0f41381e0899d5b9a754f43ece66f20c1ab5a7/raven-5.24.3.tar.gz")
+ (sha256
+ (base32
+ "1xcs0pdkladvcxn0rcjm3xijsqkfizbqdfqa9j9myh3jrbhfzshf")))))
+ (sdist (info (pkg-info
+ (name "rb")
+ (version "1.5")
+ (home-page "http://github.com/getsentry/rb")
+ (synopsis #f)
+ (description "")
+ (license "UNKNOWN")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires
+ (list (requirement (name "redis") (specifiers ">=2.6"))))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/73/49/ba76cb5864122cf737cba396292f86cbf9450cd91acd2c9caabf418af4e1/rb-1.5.tar.gz")
+ (sha256
+ (base32
+ "0wpnp311dv3sgl8d0khidjbwdx0gq44wwbibga16a94dpfgrwgdw")))))
+ (sdist (info (pkg-info
+ (name "redis")
+ (version "2.10.5")
+ (home-page
+ "http://github.com/andymccurdy/redis-py")
+ (synopsis #f)
+ (description "")
+ (license "MIT")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/68/44/5efe9e98ad83ef5b742ce62a15bea609ed5a0d1caf35b79257ddb324031a/redis-2.10.5.tar.gz")
+ (sha256
+ (base32
+ "0csmrkxb29x7xs9b51zplwkkq2hwnbh9jns1g85dykn5rxmaxysx")))))
+ (sdist (info (pkg-info
+ (name "requests")
+ (version "2.9.2")
+ (home-page "http://python-requests.org")
+ (synopsis #f)
+ (description "")
+ (license "Apache 2.0")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require
+ (list (extra "security"
+ (list (requirement
+ (name "pyOpenSSL")
+ (specifiers ">=0.13"))
+ (requirement (name "ndg-httpsclient"))
+ (requirement (name "pyasn1"))))))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/64/20/2133a092a0e87d1c250fe48704974b73a1341b7e4f800edecf40462a825d/requests-2.9.2.tar.gz")
+ (sha256
+ (base32
+ "10j6ydml4b34w4139jrzld3fdr8ip4z0fxmc4ksf8dng10d99gnq")))))
+ (sdist (info (pkg-info
+ (name "requests")
+ (version "2.9.1")
+ (home-page "http://python-requests.org")
+ (synopsis #f)
+ (description "")
+ (license "Apache 2.0")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require
+ (list (extra "security"
+ (list (requirement
+ (name "pyOpenSSL")
+ (specifiers ">=0.13"))
+ (requirement (name "ndg-httpsclient"))
+ (requirement (name "pyasn1"))))))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/f9/6d/07c44fb1ebe04d069459a189e7dab9e4abfe9432adcd4477367c25332748/requests-2.9.1.tar.gz")
+ (sha256
+ (base32
+ "0zsqrzlybf25xscgi7ja4s48y2abf9wvjkn47wh984qgs1fq2xy5")))))
+ (sdist (info (pkg-info
+ (name "sentry")
+ (version "8.5.1")
+ (home-page "https://getsentry.com")
+ (synopsis #f)
+ (description "")
+ (license "BSD")))
+ (build-requires
+ (list (requirement (name "setuptools"))
+ (requirement (name "ndg-httpsclient"))))
+ (tests-require (list))
+ (install-requires
+ (list (requirement
+ (name "BeautifulSoup")
+ (specifiers "<3.3.0,>=3.2.1"))
+ (requirement
+ (name "celery")
+ (specifiers "<3.1.19,>=3.1.8"))
+ (requirement
+ (name "click")
+ (specifiers "<7.0,>=5.0"))
+ (requirement
+ (name "cssutils")
+ (specifiers "<0.10.0,>=0.9.9"))
+ (requirement
+ (name "Django")
+ (specifiers "<1.7,>=1.6.0"))
+ (requirement
+ (name "django-bitfield")
+ (specifiers "<1.8.0,>=1.7.0"))
+ (requirement
+ (name "django-crispy-forms")
+ (specifiers "<1.5.0,>=1.4.0"))
+ (requirement
+ (name "django-debug-toolbar")
+ (specifiers "<1.4.0,>=1.3.2"))
+ (requirement
+ (name "django-paging")
+ (specifiers "<0.3.0,>=0.2.5"))
+ (requirement
+ (name "django-jsonfield")
+ (specifiers "<0.9.14,>=0.9.13"))
+ (requirement
+ (name "django-picklefield")
+ (specifiers "<0.4.0,>=0.3.0"))
+ (requirement
+ (name "django-recaptcha")
+ (specifiers "<1.1.0,>=1.0.4"))
+ (requirement
+ (name "django-social-auth")
+ (specifiers "<0.8.0,>=0.7.28"))
+ (requirement
+ (name "django-sudo")
+ (specifiers "<2.1.0,>=2.0.1"))
+ (requirement
+ (name "django-templatetag-sugar")
+ (specifiers ">=0.1.0"))
+ (requirement
+ (name "djangorestframework")
+ (specifiers "<2.4.0,>=2.3.8"))
+ (requirement
+ (name "email-reply-parser")
+ (specifiers "<0.3.0,>=0.2.0"))
+ (requirement
+ (name "enum34")
+ (specifiers "<1.2.0,>=0.9.18"))
+ (requirement
+ (name "exam")
+ (specifiers ">=0.5.1"))
+ (requirement
+ (name "hiredis")
+ (specifiers "<0.2.0,>=0.1.0"))
+ (requirement
+ (name "honcho")
+ (specifiers "<0.8.0,>=0.7.0"))
+ (requirement
+ (name "ipaddr")
+ (specifiers "<2.2.0,>=2.1.11"))
+ (requirement
+ (name "kombu")
+ (specifiers "==3.0.30"))
+ (requirement
+ (name "lxml")
+ (specifiers ">=3.4.1"))
+ (requirement
+ (name "msgpack-python")
+ (specifiers "<0.5,>=0.4"))
+ (requirement
+ (name "mock")
+ (specifiers "<1.1,>=0.8.0"))
+ (requirement
+ (name "petname")
+ (specifiers "<1.8,>=1.7"))
+ (requirement
+ (name "Pillow")
+ (specifiers "<3.3.0,>=3.2.0"))
+ (requirement
+ (name "progressbar")
+ (specifiers "<2.4,>=2.2"))
+ (requirement
+ (name "psycopg2")
+ (specifiers "<2.7.0,>=2.6.0"))
+ (requirement
+ (name "pytest")
+ (specifiers "<2.7.0,>=2.6.4"))
+ (requirement
+ (name "pytest-django")
+ (specifiers "<2.10.0,>=2.9.1"))
+ (requirement
+ (name "python-dateutil")
+ (specifiers "<3.0.0,>=2.0.0"))
+ (requirement
+ (name "python-memcached")
+ (specifiers "<2.0.0,>=1.53"))
+ (requirement
+ (name "PyYAML")
+ (specifiers "<4.0,>=3.11"))
+ (requirement
+ (name "raven")
+ (specifiers ">=5.3.0"))
+ (requirement
+ (name "redis")
+ (specifiers "<2.11.0,>=2.10.3"))
+ (requirement
+ (name "requests")
+ (specifiers "<2.10.0,>=2.9.1")
+ (extras '("security")))
+ (requirement
+ (name "simplejson")
+ (specifiers "<3.9.0,>=3.2.0"))
+ (requirement
+ (name "six")
+ (specifiers "<2.0.0,>=1.6.0"))
+ (requirement
+ (name "setproctitle")
+ (specifiers "<1.2.0,>=1.1.7"))
+ (requirement
+ (name "statsd")
+ (specifiers "<3.2.0,>=3.1"))
+ (requirement
+ (name "South")
+ (specifiers "==1.0.1"))
+ (requirement
+ (name "toronado")
+ (specifiers "<0.1.0,>=0.0.4"))
+ (requirement
+ (name "ua-parser")
+ (specifiers "<0.8.0,>=0.6.1"))
+ (requirement
+ (name "urllib3")
+ (specifiers "<1.15,>=1.14"))
+ (requirement
+ (name "uwsgi")
+ (specifiers "<2.1.0,>2.0.0"))
+ (requirement
+ (name "rb")
+ (specifiers "<2.0.0,>=1.4.0"))
+ (requirement
+ (name "qrcode")
+ (specifiers "<6.0.0,>=5.2.2"))
+ (requirement
+ (name "python-u2flib-server")
+ (specifiers "<4.1.0,>=4.0.1"))))
+ (extras-require
+ (list (extra "tests"
+ (list (requirement (name "blist"))
+ (requirement (name "casscache"))
+ (requirement (name "cqlsh"))
+ (requirement (name "datadog"))
+ (requirement
+ (name "pytest-cov")
+ (specifiers "<1.9.0,>=1.8.0"))
+ (requirement
+ (name "pytest-timeout")
+ (specifiers "<0.6.0,>=0.5.0"))
+ (requirement
+ (name "pytest-xdist")
+ (specifiers "<1.12.0,>=1.11.0"))
+ (requirement (name "python-coveralls"))
+ (requirement (name "responses"))))
+ (extra "dsym"
+ (list (requirement
+ (name "symsynd")
+ (specifiers "<1.0.0,>=0.7.0"))))
+ (extra "dev"
+ (list (requirement (name "Babel"))
+ (requirement
+ (name "flake8")
+ (specifiers "<2.1,>=2.0"))
+ (requirement
+ (name "isort")
+ (specifiers "<4.3.0,>=4.2.2"))))
+ (extra "postgres"
+ (list (requirement
+ (name "BeautifulSoup")
+ (specifiers "<3.3.0,>=3.2.1"))
+ (requirement
+ (name "celery")
+ (specifiers "<3.1.19,>=3.1.8"))
+ (requirement
+ (name "click")
+ (specifiers "<7.0,>=5.0"))
+ (requirement
+ (name "cssutils")
+ (specifiers "<0.10.0,>=0.9.9"))
+ (requirement
+ (name "Django")
+ (specifiers "<1.7,>=1.6.0"))
+ (requirement
+ (name "django-bitfield")
+ (specifiers "<1.8.0,>=1.7.0"))
+ (requirement
+ (name "django-crispy-forms")
+ (specifiers "<1.5.0,>=1.4.0"))
+ (requirement
+ (name "django-debug-toolbar")
+ (specifiers "<1.4.0,>=1.3.2"))
+ (requirement
+ (name "django-paging")
+ (specifiers "<0.3.0,>=0.2.5"))
+ (requirement
+ (name "django-jsonfield")
+ (specifiers "<0.9.14,>=0.9.13"))
+ (requirement
+ (name "django-picklefield")
+ (specifiers "<0.4.0,>=0.3.0"))
+ (requirement
+ (name "django-recaptcha")
+ (specifiers "<1.1.0,>=1.0.4"))
+ (requirement
+ (name "django-social-auth")
+ (specifiers "<0.8.0,>=0.7.28"))
+ (requirement
+ (name "django-sudo")
+ (specifiers "<2.1.0,>=2.0.1"))
+ (requirement
+ (name "django-templatetag-sugar")
+ (specifiers ">=0.1.0"))
+ (requirement
+ (name "djangorestframework")
+ (specifiers "<2.4.0,>=2.3.8"))
+ (requirement
+ (name "email-reply-parser")
+ (specifiers "<0.3.0,>=0.2.0"))
+ (requirement
+ (name "enum34")
+ (specifiers "<1.2.0,>=0.9.18"))
+ (requirement
+ (name "exam")
+ (specifiers ">=0.5.1"))
+ (requirement
+ (name "hiredis")
+ (specifiers "<0.2.0,>=0.1.0"))
+ (requirement
+ (name "honcho")
+ (specifiers "<0.8.0,>=0.7.0"))
+ (requirement
+ (name "ipaddr")
+ (specifiers "<2.2.0,>=2.1.11"))
+ (requirement
+ (name "kombu")
+ (specifiers "==3.0.30"))
+ (requirement
+ (name "lxml")
+ (specifiers ">=3.4.1"))
+ (requirement
+ (name "msgpack-python")
+ (specifiers "<0.5,>=0.4"))
+ (requirement
+ (name "mock")
+ (specifiers "<1.1,>=0.8.0"))
+ (requirement
+ (name "petname")
+ (specifiers "<1.8,>=1.7"))
+ (requirement
+ (name "Pillow")
+ (specifiers "<3.3.0,>=3.2.0"))
+ (requirement
+ (name "progressbar")
+ (specifiers "<2.4,>=2.2"))
+ (requirement
+ (name "psycopg2")
+ (specifiers "<2.7.0,>=2.6.0"))
+ (requirement
+ (name "pytest")
+ (specifiers "<2.7.0,>=2.6.4"))
+ (requirement
+ (name "pytest-django")
+ (specifiers "<2.10.0,>=2.9.1"))
+ (requirement
+ (name "python-dateutil")
+ (specifiers "<3.0.0,>=2.0.0"))
+ (requirement
+ (name "python-memcached")
+ (specifiers "<2.0.0,>=1.53"))
+ (requirement
+ (name "PyYAML")
+ (specifiers "<4.0,>=3.11"))
+ (requirement
+ (name "raven")
+ (specifiers ">=5.3.0"))
+ (requirement
+ (name "redis")
+ (specifiers "<2.11.0,>=2.10.3"))
+ (requirement
+ (name "requests")
+ (specifiers "<2.10.0,>=2.9.1")
+ (extras '("security")))
+ (requirement
+ (name "simplejson")
+ (specifiers "<3.9.0,>=3.2.0"))
+ (requirement
+ (name "six")
+ (specifiers "<2.0.0,>=1.6.0"))
+ (requirement
+ (name "setproctitle")
+ (specifiers "<1.2.0,>=1.1.7"))
+ (requirement
+ (name "statsd")
+ (specifiers "<3.2.0,>=3.1.0"))
+ (requirement
+ (name "South")
+ (specifiers "==1.0.1"))
+ (requirement
+ (name "toronado")
+ (specifiers "<0.1.0,>=0.0.4"))
+ (requirement
+ (name "ua-parser")
+ (specifiers "<0.8.0,>=0.6.1"))
+ (requirement
+ (name "urllib3")
+ (specifiers "<1.15,>=1.14"))
+ (requirement
+ (name "uwsgi")
+ (specifiers "<2.1.0,>2.0.0"))
+ (requirement
+ (name "rb")
+ (specifiers "<2.0.0,>=1.4.0"))
+ (requirement
+ (name "qrcode")
+ (specifiers "<6.0.0,>=5.2.2"))
+ (requirement
+ (name "python-u2flib-server")
+ (specifiers "<4.1.0,>=4.0.1"))))))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/32/15/1b713578ddaf5aa42432d31fdbb45dacea0fb51830670f657318cbdea1ea/sentry-8.5.1.tar.gz")
+ (sha256
+ (base32
+ "1mfairg3yp8bwksygczr8gmn1p5gbc9i1nm7jp5lzsdz7vffr32a")))))
+ (sdist (info (pkg-info
+ (name "setproctitle")
+ (version "1.1.10")
+ (home-page
+ "https://github.com/dvarrazzo/py-setproctitle")
+ (synopsis #f)
+ (description "")
+ (license "BSD")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/5a/0d/dc0d2234aacba6cf1a729964383e3452c52096dc695581248b548786f2b3/setproctitle-1.1.10.tar.gz")
+ (sha256
+ (base32
+ "163kplw9dcrw0lffq1bvli5yws3rngpnvrxrzdw89pbphjjvg0v2")))))
+ (sdist (info (pkg-info
+ (name "setuptools")
+ (version "23.0.0")
+ (home-page "https://github.com/pypa/setuptools")
+ (synopsis #f)
+ (description "")
+ (license "UNKNOWN")))
+ (build-requires (list))
+ (tests-require
+ (list (requirement (name "mock"))
+ (requirement (name "pytest-runner"))
+ (requirement
+ (name "pytest")
+ (specifiers "<3.0.0"))))
+ (install-requires (list))
+ (extras-require
+ (list (extra "ssl" (list))
+ (extra "certs"
+ (list (requirement
+ (name "certifi")
+ (specifiers "==2016.2.28"))))))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/45/5e/79ca67a0d6f2f42bfdd9e467ef97398d6ad87ee2fa9c8cdf7caf3ddcab1e/setuptools-23.0.0.tar.gz")
+ (sha256
+ (base32
+ "0kkjsa9ma4z5ps6xwvkyprrfndwmfilfa1n75xj2sj7dzbjh76v9")))))
+ (sdist (info (pkg-info
+ (name "setuptools-scm")
+ (version "1.11.1")
+ (home-page
+ "https://github.com/pypa/setuptools_scm/")
+ (synopsis #f)
+ (description "")
+ (license "MIT")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/84/aa/c693b5d41da513fed3f0ee27f1bf02a303caa75bbdfa5c8cc233a1d778c4/setuptools_scm-1.11.1.tar.gz")
+ (sha256
+ (base32
+ "1gqr73i150yzj3mz32854vj93x07yr52kn8fdckwa41ll8wgficc")))))
+ (sdist (info (pkg-info
+ (name "setuptools-scm")
+ (version "1.8.0")
+ (home-page
+ "https://github.com/pypa/setuptools_scm/")
+ (synopsis #f)
+ (description "")
+ (license "MIT")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/76/ac/0d97955afce837b065b8f2699d67f2e93b5f48b76f9e89c20dfeebb42ef7/setuptools_scm-1.8.0.tar.bz2")
+ (sha256
+ (base32
+ "00p60v2yfqy1r58pjcx9wy6dvqd7wkpfs5z1dzwf7y75c1g3dgyx")))))
+ (sdist (info (pkg-info
+ (name "simplejson")
+ (version "3.8.1")
+ (home-page
+ "http://github.com/simplejson/simplejson")
+ (synopsis #f)
+ (description "")
+ (license "MIT License")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/70/b0/c8169f6c2b7927614bea25636485992248ae0b1d7bc83858a9185461f57b/simplejson-3.8.1.tar.gz")
+ (sha256
+ (base32
+ "14r4l4rcsyf87p2j4ycsbb017n4vzxfmv285rq2gny4w47rwi2j2")))))
+ (sdist (info (pkg-info
+ (name "six")
+ (version "1.10.0")
+ (home-page "http://pypi.python.org/pypi/six/")
+ (synopsis #f)
+ (description "")
+ (license "MIT")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/b3/b2/238e2590826bfdd113244a40d9d3eb26918bd798fc187e2360a8367068db/six-1.10.0.tar.gz")
+ (sha256
+ (base32
+ "0snmb8xffb3vsma0z67i0h0w2g2dy0p3gsgh9gi4i0kgc5l8spqh")))))
+ (sdist (info (pkg-info
+ (name "South")
+ (version "1.0.1")
+ (home-page "http://south.aeracode.org/")
+ (synopsis #f)
+ (description "")
+ (license "UNKNOWN")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/77/37/00969f4e3e830df7cbba93933371b30f22ada2978dd21b458ed17cb6b4c2/South-1.0.1.tar.gz")
+ (sha256
+ (base32
+ "1lssqyq4alzqwl00izm8qs6gq13w9n8cslzxn9735pq785iprs8w")))))
+ (sdist (info (pkg-info
+ (name "sqlparse")
+ (version "0.2.1")
+ (home-page
+ "https://github.com/andialbrecht/sqlparse")
+ (synopsis #f)
+ (description "")
+ (license "BSD")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/c3/c4/6159720e7a100cd419bac31a202898e291e5af29e4ada09ee58f7eeaa076/sqlparse-0.2.1.tar.gz")
+ (sha256
+ (base32
+ "1lbp8cnc3kpbmnjcwnkwy3h95rcbsfj7namp2yw1nzz6zyys560w")))))
+ (sdist (info (pkg-info
+ (name "statsd")
+ (version "3.1")
+ (home-page "https://github.com/jsocol/pystatsd")
+ (synopsis #f)
+ (description "")
+ (license "MIT")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/b7/10/a1afbd9523c79a44686fb654ab6547007ae57a2ad669caa76f7c291324c7/statsd-3.1.tar.gz")
+ (sha256
+ (base32
+ "1vi8xx8hrgyhgcw3d3yc7bh4vfc48swlm0xwfp1994xf6gmmzbpv")))))
+ (sdist (info (pkg-info
+ (name "testtools")
+ (version "2.2.0")
+ (home-page
+ "https://github.com/testing-cabal/testtools")
+ (synopsis #f)
+ (description "")
+ (license "UNKNOWN")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires
+ (list (requirement (name "pbr") (specifiers ">=0.11"))
+ (requirement
+ (name "extras")
+ (specifiers ">=1.0.0"))
+ (requirement
+ (name "fixtures")
+ (specifiers ">=1.3.0"))
+ (requirement (name "python-mimeparse"))
+ (requirement
+ (name "unittest2")
+ (specifiers ">=1.0.0"))
+ (requirement (name "traceback2"))
+ (requirement (name "six") (specifiers ">=1.4.0"))))
+ (extras-require
+ (list (extra "test"
+ (list (requirement (name "testscenarios"))
+ (requirement
+ (name "unittest2")
+ (specifiers ">=1.1.0"))))))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/0d/72/3212c1723d49f5b58fca736dabdd2e74f38435076d943f4a642117f04d65/testtools-2.2.0.tar.gz")
+ (sha256
+ (base32
+ "042qlqymy9m40w30fg3gj20wahmac9jphnsfwb8f8k3fg9h0dxl0")))))
+ (sdist (info (pkg-info
+ (name "toronado")
+ (version "0.0.10")
+ (home-page "UNKNOWN")
+ (synopsis #f)
+ (description "")
+ (license "Apache License 2.0")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require
+ (list (requirement (name "pytest"))
+ (requirement (name "exam"))))
+ (install-requires
+ (list (requirement (name "cssselect"))
+ (requirement (name "cssutils"))
+ (requirement (name "lxml"))))
+ (extras-require
+ (list (extra "tests"
+ (list (requirement (name "exam"))
+ (requirement (name "pytest"))))
+ (extra "dev"
+ (list (requirement (name "flake8"))))))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/47/c1/278ed8c7ed103d191eff0e6d0bd9201ffe900c9c11def8f4d39f8cd4937a/toronado-0.0.10.tar.gz")
+ (sha256
+ (base32
+ "1r68hqm0kqbllzs3m1ahd62p5y61zh8pxncxhp8kmlz676dawfir")))))
+ (sdist (info (pkg-info
+ (name "traceback2")
+ (version "1.4.0")
+ (home-page
+ "https://github.com/testing-cabal/traceback2")
+ (synopsis #f)
+ (description "")
+ (license "UNKNOWN")))
+ (build-requires
+ (list (requirement (name "setuptools"))
+ (requirement (name "pbr"))))
+ (tests-require
+ (list (requirement (name "unittest2"))
+ (requirement (name "testtools"))
+ (requirement (name "contextlib2"))))
+ (install-requires
+ (list (requirement (name "linecache2"))))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/eb/7f/e20ba11390bdfc55117c8c6070838ec914e6f0053a602390a598057884eb/traceback2-1.4.0.tar.gz")
+ (sha256
+ (base32
+ "0c1h3jas1jp1fdbn9z2mrgn3jj0hw1x3yhnkxp7jw34q15xcdb05")))))
+ (sdist (info (pkg-info
+ (name "ua-parser")
+ (version "0.7.1")
+ (home-page
+ "https://github.com/ua-parser/uap-python")
+ (synopsis #f)
+ (description "")
+ (license "LICENSE.txt")))
+ (build-requires
+ (list (requirement (name "setuptools"))
+ (requirement (name "pyyaml"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/9c/f4/872c229b0d6335bc56d552bceebc91dae2f5d3abf2e0e749db32b765471b/ua-parser-0.7.1.tar.gz")
+ (sha256
+ (base32
+ "16ys1882vjiqvla95r4jyv8qrv0ba1wfcj4kn69nr3dnrhbcpxz1")))))
+ (sdist (info (pkg-info
+ (name "unittest2")
+ (version "1.1.0")
+ (home-page
+ "http://pypi.python.org/pypi/unittest2")
+ (synopsis #f)
+ (description "")
+ (license "UNKNOWN")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires
+ (list (requirement (name "argparse"))
+ (requirement (name "six") (specifiers ">=1.4"))
+ (requirement (name "traceback2"))))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/7f/c4/2b0e2d185d9d60772c10350d9853646832609d2f299a8300ab730f199db4/unittest2-1.1.0.tar.gz")
+ (sha256
+ (base32
+ "0y855kmx7a8rnf81d3lh5lyxai1908xjp0laf4glwa4c8472m212")))))
+ (sdist (info (pkg-info
+ (name "urllib3")
+ (version "1.14")
+ (home-page "http://urllib3.readthedocs.org/")
+ (synopsis #f)
+ (description "")
+ (license "MIT")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require
+ (list (extra "secure"
+ (list (requirement
+ (name "pyOpenSSL")
+ (specifiers ">=0.13"))
+ (requirement (name "ndg-httpsclient"))
+ (requirement (name "pyasn1"))
+ (requirement (name "certifi"))))
+ (extra "socks"
+ (list (requirement
+ (name "PySocks")
+ (specifiers "<2.0,>=1.5.6"))))))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/6c/11/68602df8fb13daeb2b61e2dc3209c6d8a599af7943691dfa7d48f32ef69b/urllib3-1.14.tar.gz")
+ (sha256
+ (base32
+ "0dwdq39nn9vr2cd9y7abbln66f7x45dnckbyihrih2z59hxb2kyx")))))
+ (sdist (info (pkg-info
+ (name "uwsgi")
+ (version "2.0.13.1")
+ (home-page "")
+ (synopsis "")
+ (description "")
+ (license "")))
+ (build-requires
+ (list (requirement (name "setuptools"))))
+ (tests-require (list))
+ (install-requires (list))
+ (extras-require (list))
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/83/22/47b6ff871a5f01b9f660121cf61ba1eccbf7886b5cbe24caacccd0d00d07/uwsgi-2.0.13.1.tar.gz")
+ (sha256
+ (base32
+ "0zwdljaljzshrdcqsrr2l2ak2zcmsps4glac2lrg0xmb28phrjif")))))))
diff --git a/gpip/update.scm b/gpip/update.scm
new file mode 100644
index 0000000..42f701a
--- /dev/null
+++ b/gpip/update.scm
@@ -0,0 +1,83 @@
+(define-module (gpip update)
+ #:use-module (ice-9 vlist)
+ #:use-module (guix monads)
+ #:use-module ((gnu packages python)
+ #:select (python-2.7 python-wrapper))
+ #:use-module (pypi sdist)
+ #:use-module (pypi sdist-store)
+ #:use-module (pypi sdist-store import-master)
+ #:use-module (pypi api)
+ #:use-module (pypi logging)
+ #:use-module (pypi package)
+ #:use-module (gpip sdists)
+ #:use-module (gpip package-fixes)
+ #:export (update))
+
+(define (write-intermediate-result store)
+ ((write-store) store))
+
+(define %sdist-store-monad %state-monad)
+
+(define api-root "https://pypi.python.org/pypi/")
+
+(define* (get-store-with name version #:key (python python-wrapper))
+ (lambda (store)
+ (let
+ ((new-state
+ (create-sdist-and-missing-dependencies
+ api-root
+ store
+ get-fixed-package
+ python
+ name
+ version
+ write-intermediate-result)))
+ (values
+ new-state new-state))))
+
+(define (write-store)
+ (lambda (store)
+ (begin
+ (create-sdists-module
+ store
+ '(gpip sdists)
+ "../guix-python-intergration-project/gpip/sdists.scm")
+ store)))
+
+(define (update)
+ (setup-logging)
+ (let*
+ ((sdists
+ (catch #t
+ (lambda () (begin
+ (use-modules (gpip sdists))
+ sdists))
+ (lambda (key . parameters)
+ (begin
+ (error "error loading sdists")
+ (display "error loading sdists, using empty store\n")
+ (display key)(display " ")(display parameters)
+ '())))))
+ (with-monad %state-monad
+ (run-with-state
+ (mbegin %state-monad
+ (get-store-with "setuptools" "23.0.0")
+ (get-store-with "simplejson" "3.8.1")
+ (get-store-with "requests" "2.9.1")
+ (get-store-with "pbr" "0.11.1")
+ (get-store-with "Jinja2" "2.8")
+ (get-store-with "lxml" "3.5.0")
+ (get-store-with "cffi" "1.5.0")
+ (get-store-with "coverage" "4.0.3")
+ (get-store-with "mock" "1.3.0")
+ (get-store-with "statsd" "3.1")
+ (get-store-with "pillow" "3.2.0")
+ (get-store-with "cryptography" "1.4")
+ (get-store-with "setuptools" "23.0.0" #:python python-2.7)
+ (get-store-with "django-jsonfield" "0.9.13" #:python python-2.7)
+ (get-store-with "anyjson" "0.3.3" #:python python-2.7)
+ (get-store-with "kombu" "3.0.30" #:python python-2.7)
+ (get-store-with "sentry" "8.5.1" #:python python-2.7)
+ (write-store))
+ (add-sdists (make-sdist-store) sdists)))
+ (shutdown-logging)))
diff --git a/guix-env.scm b/guix-env.scm
new file mode 100644
index 0000000..df3529c
--- /dev/null
+++ b/guix-env.scm
@@ -0,0 +1,343 @@
+(use-modules ((guix licenses) #:select (bsd-3 gpl3+ psfl))
+ (guix packages)
+ (guix download)
+ (guix git-download)
+ (guix gexp)
+ (guix build-system cmake)
+ (guix build-system trivial)
+ (guix build-system python)
+ (guix build-system gnu)
+ (gnu packages python)
+ (gnu packages xml)
+ (gnu packages tls)
+ (gnu packages emacs)
+ (gnu packages package-management)
+ (gnu packages zip)
+ (gnu packages swig)
+ (gnu packages compression)
+ (gnu packages guile))
+
+(define libsolv
+ (package
+ (name "libsolv")
+ (version "0.6.22")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/openSUSE/libsolv/archive/"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (modules '((guix build utils)))
+ (sha256
+ (base32
+ "0zl7dlqmib05y5f2wkbz66n68bmqk2fxhvph1dfr071v7jnzc6gf"))
+ (snippet
+ '(substitute* '("bindings/python/CMakeLists.txt")
+ (("EXECUTE_PROCESS.*") "")
+ (("libsolv ") "libsolv python2.7 ")
+ ))))
+ (build-system cmake-build-system)
+ (inputs
+ `(("expat" ,expat)
+ ("zlib" ,zlib)
+ ("python" ,python-2.7)
+ ("swig" ,swig)))
+ (arguments
+ '(#:configure-flags
+ (list (string-append "-DPYTHON_INSTALL_DIR="
+ (assoc-ref %outputs "out") "/lib/python2.7/site-packages")
+ "-DENABLE_PYTHON=1"
+ (string-append ; uses lib64 by default
+ "-DLIB=lib")
+ (string-append "-DCMAKE_INSTALL_RPATH="
+ (assoc-ref %outputs "out") "/lib"))))
+ ;(assoc-ref %outputs "out") "/lib:"
+ ;(assoc-ref %outputs "out") "/lib64"))))
+ (home-page "https://github.com/openSUSE/libsolv")
+ (synopsis "libsolv")
+ (description "")
+ (license bsd-3)))
+
+(define pyguile
+ (package
+ (name "pyguile")
+ (version "0.3.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "http://git.cbaines.net/pyguile")
+ (commit "e37142e8aaa903920d4f13a5ef66a352618e65c6")))
+ (sha256
+ (base32
+ "037w1bf58yn4kfy5jydd1jzfi7dpg0m2w8p1sd2wnr6py03hybwq"))))
+ ;(source (origin
+ ; (method url-fetch)
+ ; (uri (string-append "https://github.com/cbaines/pyguile/archive/v"
+ ; version ".tar.gz"))
+ ; (file-name (string-append name "-" version ".tar.gz"))
+ ; (modules '((guix build utils)))
+ ; (sha256
+ ; (base32
+ ; "0ds5pnm4dc0vyfa5wlyw9dvzl6dyiizh4q8s153byyn8jkiimb5c"))))
+ (build-system cmake-build-system)
+ (inputs
+ `(("python" ,python-2.7)
+ ("guile" ,guile-2.0)))
+ (arguments
+ '(;#:tests? #f ; no tests
+ ;#:make-flags (list "CC=gcc"
+ ; (string-append "PREFIX=" %output))
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (delete 'check)
+ (replace 'build
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;(chdir "..")
+ (display "CWD ")(display (getcwd))(display "\n")
+ (let ((out (assoc-ref outputs "out")))
+ (zero?
+ (system* "make" "CC=gcc")))))
+ (replace
+ 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (guild (string-append (assoc-ref %build-inputs "guile")
+ "/bin/guild"))
+ (scm-dir
+ (string-append out "/share/guile/site/2.0/"))
+ (scm-path
+ (string-append scm-dir "pyguile.scm"))
+ (lib-dir
+ (string-append out "/lib/"))
+ (lib-path
+ (string-append lib-dir "libpyguile.so")))
+ (mkdir-p scm-dir)
+ (mkdir-p lib-dir)
+ (copy-file "pyguile.scm" scm-path)
+ (copy-file "libpyguile.so" lib-path)
+ (substitute* scm-path
+ (("libpyguile")
+ (string-append lib-dir "libpyguile")))
+ (setenv "GUILE_AUTO_COMPILE" "0")
+ (unless (zero?
+ (system* guild "compile" scm-path
+ "-o" (string-append scm-dir "pyguile.go")))
+ (error "failed to compile"))
+ #t))))))
+ (home-page "https://github.com/tddpirate/pyguile")
+ (synopsis "pyguile")
+ (description "")
+ (license bsd-3)))
+
+(define python-packaging
+ (package
+ (name "python-packaging")
+ (version "16.7")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://pypi.python.org/packages/28/ad/4e6601d14b11bb300719a8bb6247f6ef5861467a692523c978a4e9e3981a/packaging-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "07h18mrpqs0lv2x4fl43pqi0xj6hdrmrnm6v9q634yliagg6q91f"))))
+ (build-system python-build-system)
+ (inputs
+ `(("python-setuptools" ,python-setuptools)))
+ (propagated-inputs
+ `(("python-pyparsing" ,python-pyparsing)
+ ("python-six" ,python-six)))
+ (home-page "https://github.com/pypa/packaging")
+ (synopsis "Core utilities for Python packages")
+ (description
+ "Core utilities for Python packages")
+ (license #f)))
+
+(define python2-packaging
+ (package-with-python2 python-packaging))
+
+(define python-setuptools
+ (package
+ (name "python-setuptools")
+ (version "20.10.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://pypi.python.org/packages/d3/16/21cf5dc6974280197e42d57bf7d372380562ec69aef9bb796b5e2dbbed6e/setuptools-20.10.1.tar.gz")
+ (sha256
+ (base32
+ "1pdm34rjixkdyp5j2yp774ri1da7ncqy8s34h4qxdl4yy22whn9y"))))
+ (build-system python-build-system)
+ ;; FIXME: Tests require pytest, which itself relies on setuptools.
+ ;; One could bootstrap with an internal untested setuptools.
+ (arguments
+ `(#:tests? #f))
+ (home-page "https://pypi.python.org/pypi/setuptools")
+ (synopsis
+ "Library designed to facilitate packaging Python projects")
+ (description
+ "Setuptools is a fully-featured, stable library designed to facilitate
+packaging Python projects, where packaging includes:
+Python package and module definitions,
+distribution package metadata,
+test hooks,
+project installation,
+platform-specific details,
+Python 3 support.")
+ (license psfl)))
+
+(define python2-setuptools
+ (package-with-python2 python-setuptools))
+
+(define guix-pypi-utils
+ (package
+ (name "guix-pypi-utils")
+ (version "0.1")
+ ;(source (local-file "../guix-pypi-utils" #:recursive? #t))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "http://git.cbaines.net/guix-pypi-utils")
+ (commit "86de22b526313a68e5c8bb8a361d5904c30d8b51")))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32
+ "1n0f3cgxinxgfsf48vgvj6ggn5m8is7hrinx8bzmxiy4rlzaq5db"))))
+ (build-system trivial-build-system)
+ (arguments
+ `(#:modules
+ ((guix build utils)
+ (ice-9 match))
+ #:builder
+ (begin
+ (use-modules (guix build utils)
+ (ice-9 match))
+ (let* ((out (assoc-ref %outputs "out"))
+ (module-dir (string-append out "/share/guile/site/2.0"))
+ (source (assoc-ref %build-inputs "source"))
+ (guild (string-append (assoc-ref %build-inputs "guile")
+ "/bin/guild")))
+
+ (mkdir-p (string-append module-dir "/pypi"))
+ (copy-recursively (string-append source "/pypi")
+ (string-append module-dir "/pypi"))
+
+ (mkdir-p (string-append module-dir "/solver"))
+ (install-file
+ (string-append source "/solver/__init__.py")
+ (string-append module-dir "/solver"))
+
+ (display "pythonpath\n")
+ (display (getenv "PYTHONPATH"))
+ (substitute* (string-append module-dir "/pypi/dependency-solver.scm")
+ (("\\(define %solver-location \"\"\\)")
+ (string-append
+ "(define %solver-location \"" module-dir "\")")))
+
+ (setenv "GUILE_AUTO_COMPILE" "0")
+ ;(for-each (lambda (file)
+ ; (let ((scm-file
+ ; (string-append module-dir file))
+ ; (go-file (match (string-split file #\.)
+ ; ((base _)
+ ; (string-append module-dir "/"
+ ; base ".go")))))
+ ; ;; Install compiled module.
+ ; (unless (zero? (system* guild "compile"
+ ; "-L" source
+ ; "-o" go-file
+ ; scm-file))
+ ; (error (format #f "Failed to compile ~s to ~s!"
+ ; scm-file go-file)))))
+ ; (map
+ ; (lambda (file)
+ ; (substring
+ ; file
+ ; (string-length module-dir)))
+ ; (find-files (string-append
+ ; module-dir
+ ; "/pypi")
+ ; ".*\\.scm$")))
+ #t))))
+ (inputs
+ `(("unzip" ,unzip)
+ ("guile" ,guile-2.0)))
+ (propagated-inputs
+ `(("guix" ,guix-0.11.0)
+ ("guile-lib" ,guile-lib)
+ ("guile-json" ,guile-json)
+ ("pyguile" ,pyguile)
+ ("libsolv" ,libsolv)
+ ("python" ,python-2.7)
+ ("python2-setuptools" ,python2-setuptools)
+ ("python2-packaging" ,python2-packaging)))
+ (home-page "https://example.com")
+ (synopsis "guix-pypi-utils")
+ (description "")
+ (license gpl3+)))
+
+(define guix-python-integration-project
+ (package
+ (name "guix-python-integration-project")
+ (version "0.1")
+ (source (local-file "." #:recursive? #t))
+ (build-system trivial-build-system)
+ (arguments
+ `(#:modules
+ ((guix build utils)
+ (ice-9 match))
+ #:builder
+ (begin
+ (use-modules (guix build utils)
+ (ice-9 match))
+ (let* ((out (assoc-ref %outputs "out"))
+ (module-dir (string-append out "/share/guile/site/2.0"))
+ (source (assoc-ref %build-inputs "source"))
+ (scm-files
+ (find-files "." ".*\\.scm$"))
+ (guild (string-append (assoc-ref %build-inputs "guile")
+ "/bin/guild")))
+ ;; Make installation directories.
+ (mkdir-p (string-append module-dir "/guix-python-integration-project"))
+
+ (setenv "GUILE_AUTO_COMPILE" "0")
+ (for-each (lambda (file)
+ (let* ((dest-file (string-append module-dir "/"
+ file))
+ (go-file (match (string-split file #\.)
+ ((base _)
+ (string-append module-dir "/"
+ base ".go")))))
+ ;; Install source module.
+ (copy-file file dest-file)
+ ;; Install compiled module.
+ (unless (zero? (system* guild "compile"
+ "-L" source
+ "-o" go-file
+ file))
+ (error (format #f "Failed to compile ~s to ~s!"
+ file go-file)))))
+ (map
+ (lambda (file)
+ (display file)(display "\n")
+ (display
+ (substring
+ file
+ (string-length module-dir))) (display "\n")
+ (substring
+ file
+ (string-length module-dir)))
+ scm-files))
+ #t))))
+ (propagated-inputs
+ `(("guix" ,guix-0.11.0)
+ ("guile" ,guile-2.0)
+ ("guix-pypi-utils" ,guix-pypi-utils)))
+ (home-page "https://example.com")
+ (synopsis "guix-pypi-utils")
+ (description "")
+ (license gpl3+)))
+
+guix-python-integration-project
diff --git a/pre-inst-env b/pre-inst-env
new file mode 100755
index 0000000..7907f51
--- /dev/null
+++ b/pre-inst-env
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+GUILE_LOAD_PATH=".:$GUILE_LOAD_PATH"
+export GUILE_LOAD_PATH
+
+GUIX_PACKAGE_PATH="$GUILE_LOAD_PATH"
+export GUIX_PACKAGE_PATH
+
+GUILE_WARN_DEPRECATED="detailed"
+export GUILE_WARN_DEPRECATED
+
+exec "$@"
diff --git a/pure-pre-inst-env b/pure-pre-inst-env
new file mode 100755
index 0000000..9ab3e82
--- /dev/null
+++ b/pure-pre-inst-env
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+guix environment --pure -l guix-env.scm -- ./pre-inst-env "$@"