aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/python-web.scm
diff options
context:
space:
mode:
authorMarius Bakke <marius@gnu.org>2020-05-26 22:34:46 +0200
committerMarius Bakke <marius@gnu.org>2020-05-26 22:34:46 +0200
commitaa13c5657d4f8b5dd52beda88a9a8ccc59ebca86 (patch)
tree856094a6541a72b70d471ed5265d6e940cb11e55 /gnu/packages/python-web.scm
parent8ab211dbdb7df000a64aceadfe7b53488819d245 (diff)
parentb4f04e0efff1fb6112b84dc6d36ea46215c336b2 (diff)
downloadguix-aa13c5657d4f8b5dd52beda88a9a8ccc59ebca86.tar
guix-aa13c5657d4f8b5dd52beda88a9a8ccc59ebca86.tar.gz
Merge branch 'master' into staging
Diffstat (limited to 'gnu/packages/python-web.scm')
-rw-r--r--gnu/packages/python-web.scm302
1 files changed, 290 insertions, 12 deletions
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index dec75e188c..8459ecd045 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
-;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017 Christopher Baines <mail@cbaines.net>
;;; Copyright © 2016, 2017 Danny Milosavljevic <dannym+a@scratchpost.org>
;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr>
@@ -222,32 +222,50 @@ comes with a SOCKS proxy client.")
(define-public python-falcon
(package
(name "python-falcon")
- (version "1.4.1")
+ (version "2.0.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "falcon" version))
(sha256
(base32
- "1i0vmqsk24z4biirqhpvas9h28wy7nmpy3jvnb6rz2imq04zd09r"))))
+ "1z6mqfv574x6jiawf67ib52g4kk20c2x7xk7wrn1573b8v7r79gf"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ (delete-file-recursively "falcon/vendor")
+ (substitute* "setup.py"
+ ((".*falcon\\.vendor\\.mimeparse.*") ""))
+ (substitute* '("falcon/media/handlers.py"
+ "falcon/request.py")
+ (("from falcon\\.vendor ") ""))
+ (substitute* "falcon.egg-info/SOURCES.txt"
+ (("falcon/vendor.*") ""))
+ #t))))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(replace 'check
- (lambda _
- (invoke "pytest"))))))
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ ;; Skip orjson, which requires rust to build.
+ (substitute* "tests/test_media_handlers.py"
+ (("== 'CPython") "!= 'CPython"))
+ (add-installed-pythonpath inputs outputs)
+ (invoke "pytest" "--ignore" "falcon"))))))
(propagated-inputs
- `(("python-mimeparse" ,python-mimeparse)
- ("python-six" ,python-six)))
+ `(("python-mimeparse" ,python-mimeparse)))
(native-inputs
`(("python-cython" ,python-cython) ;for faster binaries
+ ("python-mujson" ,python-mujson)
+ ("python-msgpack" ,python-msgpack)
("python-pytest" ,python-pytest)
+ ("python-pytest-runner" ,python-pytest-runner)
("python-pyyaml" ,python-pyyaml)
+ ("python-rapidjson" ,python-rapidjson)
("python-requests" ,python-requests)
("python-testtools" ,python-testtools)
- ("python-jsonschema" ,python-jsonschema)
- ("python-msgpack" ,python-msgpack)))
+ ("python-ujson" ,python-ujson)))
(home-page "https://falconframework.org")
(synopsis
"Web framework for building APIs and application backends")
@@ -267,10 +285,15 @@ classes
@item Compatible with both CPython and PyPy
@item Cython support for better performance when used with CPython
@end itemize")
+ (properties `((python2-variant . ,(delay python2-falcon))))
(license license:asl2.0)))
(define-public python2-falcon
- (package-with-python2 python-falcon))
+ (let ((falcon (package-with-python2 (strip-python2-variant python-falcon))))
+ (package
+ (inherit falcon)
+ (native-inputs
+ (alist-delete "python-rapidjson" (package-native-inputs falcon))))))
(define-public python-falcon-cors
(package
@@ -1012,14 +1035,14 @@ your Web app.")
(define-public python-webob
(package
(name "python-webob")
- (version "1.8.3")
+ (version "1.8.6")
(source
(origin
(method url-fetch)
(uri (pypi-uri "WebOb" version))
(sha256
(base32
- "1cpqskanmvwia8wqlpcr3ykyxysynjdnbl5namvpg8vw6jnkv1dh"))))
+ "026i3z99nr3px75isa9mbnky5i7rffiv4d124h5kxfjjsxz92fma"))))
(build-system python-build-system)
(native-inputs
`(("python-nose" ,python-nose)))
@@ -3746,3 +3769,258 @@ in Python with a focus on correctness and simplicity.
Built on top of @code{asyncio}, Python's standard asynchronous I/O framework,
it provides an elegant coroutine-based API.")
(license license:bsd-3)))
+
+(define-public python-selenium
+ (package
+ (name "python-selenium")
+ (version "3.141.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "selenium" version))
+ (sha256
+ (base32
+ "039hf9knvl4s3hp21bzwsp1g5ri9gxsh504dp48lc6nr1av35byy"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-urllib3" ,python-urllib3)))
+ (home-page
+ "https://github.com/SeleniumHQ/selenium/")
+ (synopsis "Python bindings for Selenium")
+ (description "Selenium enables web browser automation.
+Selenium specifically provides infrastructure for the W3C WebDriver specification
+— a platform and language-neutral coding interface compatible with all
+major web browsers.")
+ (license license:asl2.0)))
+
+(define-public python-rapidjson
+ (package
+ (name "python-rapidjson")
+ (version "0.9.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "python-rapidjson" version))
+ (sha256
+ (base32
+ "18cl2dhx3gds5vg52jxmh9wjlbiy8dx06c3n482rfpdi9dzbv05d"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin (delete-file-recursively "rapidjson") #t))))
+ (build-system python-build-system)
+ (arguments
+ `(#:configure-flags
+ (list (string-append "--rj-include-dir="
+ (assoc-ref %build-inputs "rapidjson")
+ "/include/rapidjson"))
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'build
+ (lambda* (#:key inputs #:allow-other-keys)
+ (invoke "python" "setup.py" "build"
+ (string-append "--rj-include-dir="
+ (assoc-ref %build-inputs "rapidjson")
+ "/include/rapidjson"))))
+ (replace 'check
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (add-installed-pythonpath inputs outputs)
+ ;; Some tests are broken.
+ (delete-file "tests/test_base_types.py")
+ (delete-file "tests/test_validator.py")
+ (invoke "python" "-m" "pytest" "tests"))))))
+ (native-inputs
+ `(("rapidjson" ,rapidjson)
+ ("python-pytest" ,python-pytest)
+ ("python-pytz" ,python-pytz)))
+ (home-page "https://github.com/python-rapidjson/python-rapidjson")
+ (synopsis "Python wrapper around rapidjson")
+ (description "This package provides a python wrapper around rapidjson.")
+ (license license:expat)))
+
+(define-public python-venusian
+ (package
+ (name "python-venusian")
+ (version "3.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "venusian" version))
+ (sha256
+ (base32 "0f7f67dkgxxcjfhpdd5frb9pszkf04lyzzpn5069q0xi89r2p17n"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-pytest" ,python-pytest)
+ ("python-runner" ,python-pytest-runner)
+ ("python-pytest-cov" ,python-pytest-cov)))
+ (arguments '(#:test-target "pytest"))
+ (home-page "https://docs.pylonsproject.org/projects/venusian")
+ (synopsis "Library for defering decorator actions")
+ (description
+ "Venusian is a library which allows framework authors to defer decorator
+actions. Instead of taking actions when a function (or class) decorator is
+executed at import time, you can defer the action usually taken by the
+decorator until a separate scan phase.")
+ (license license:repoze)))
+
+(define-public python-zope-deprecation
+ (package
+ (name "python-zope-deprecation")
+ (version "4.4.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "zope.deprecation" version))
+ (sha256
+ (base32
+ "1pz2cv7gv9y1r3m0bdv7ks1alagmrn5msm5spwdzkb2by0w36i8d"))))
+ (build-system python-build-system)
+ (native-inputs `())
+ (propagated-inputs `())
+ (home-page "https://zopedeprecation.readthedocs.io/")
+ (synopsis "Function for marking deprecations")
+ (description "The @code{zope.deprecation} module provides a function for
+marking modules, classes, functions, methods and properties as deprecated,
+displaying warnings when usaged in application code.")
+ (license license:zpl2.1)))
+
+(define-public python-translationstring
+ (package
+ (name "python-translationstring")
+ (version "1.3")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "translationstring" version))
+ (sha256
+ (base32
+ "0bdpcnd9pv0131dl08h4zbcwmgc45lyvq3pa224xwan5b3x4rr2f"))))
+ (build-system python-build-system)
+ (home-page "http://docs.pylonsproject.org/projects/translationstring")
+ (synopsis "Internationalization tooling for the Pylons project")
+ (description "This package provides a library used by various Pylons
+project packages for internationalization (i18n) duties related to
+translation.")
+ (license license:repoze)))
+
+(define-public python-plaster
+ (package
+ (name "python-plaster")
+ (version "1.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "plaster" version))
+ (sha256
+ (base32
+ "1hy8k0nv2mxq94y5aysk6hjk9ryb4bsd13g83m60hcyzxz3wflc3"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-pytest" ,python-pytest)))
+ (home-page "https://docs.pylonsproject.org/projects/plaster/en/latest/")
+ (synopsis "Configuration loader for multiple config file formats")
+ (description
+ "Plaster is a loader interface around multiple config file formats. It
+exists to define a common API for applications to use when they wish to load
+configuration. The library itself does not aim to handle anything except a
+basic API that applications may use to find and load configuration settings.
+Any specific constraints should be implemented in a pluggable loader which can
+be registered via an entrypoint.")
+ (license license:repoze)))
+
+(define-public python-plaster-pastedeploy
+ (package
+ (name "python-plaster-pastedeploy")
+ (version "0.7")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "plaster_pastedeploy" version))
+ (sha256
+ (base32
+ "1zg7gcsvc1kzay1ry5p699rg2qavfsxqwl17mqxzr0gzw6j9679r"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-pytest" ,python-pytest)))
+ (propagated-inputs
+ `(("python-plaster" ,python-plaster)
+ ("python-pastedeploy" ,python-pastedeploy)))
+ (home-page "https://github.com/Pylons/plaster_pastedeploy")
+ (synopsis "Plugin for python-plaster adding PasteDeploy syntax")
+ (description
+ "This plugin for @code{python-plaster} adds support for PasteDeploy
+syntax, it provides a plaster @code{Loader} object that can parse ini files
+according to the standard set by PasteDeploy ")
+ (license license:expat)))
+
+(define-public python-hupper
+ (package
+ (name "python-hupper")
+ (version "1.10.2")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "hupper" version))
+ (sha256
+ (base32
+ "0am0p6g5cz6xmcaf04xq8q6dzdd9qz0phj6gcmpsckf2mcyza61q"))))
+ (build-system python-build-system)
+ (arguments '(#:test-target "pytest"))
+ (native-inputs
+ `(("python-pytest" ,python-pytest)
+ ("python-pytest-runner" ,python-pytest-runner)
+ ("python-watchdog" ,python-watchdog)
+ ("python-mock" ,python-mock)
+ ("python-pytest-cov" ,python-pytest-cov)))
+ (propagated-inputs
+ `(("python-pytz" ,python-pytz)))
+ (home-page "https://readthedocs.org/projects/hupper")
+ (synopsis "Integrated process monitor tracking changes to imported Python files")
+ (description
+ "Hupper is an integrated process monitor that will track changes to any
+imported Python files in sys.modules as well as custom paths. When files are
+changed the process is restarted.")
+ (license license:expat)))
+
+(define-public python-pyramid
+ (package
+ (name "python-pyramid")
+ (version "1.10.4")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "pyramid" version))
+ (sha256
+ (base32
+ "0rkxs1ajycg2zh1c94xlmls56mx5m161sn8112skj0amza6cn36q"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-hupper" ,python-hupper)
+ ("python-plaster-pastedeploy" ,python-plaster-pastedeploy)
+ ("python-translationstring" ,python-translationstring)
+ ("python-venusian" ,python-venusian)
+ ("python-webob" ,python-webob)
+ ("python-zope-deprecation" ,python-zope-deprecation)
+ ("python-zope-interface" ,python-zope-interface)
+ ("python-webtest" ,python-webtest)
+ ("python-zope-component" ,python-zope-component)
+ ("python-plaster" ,python-plaster)))
+ (home-page "https://trypyramid.com/")
+ (synopsis "Python web-framework suitable for small and large sites")
+ (description
+ "Pyramid makes it easy to write web applications. From minimal
+request/response web apps to larger, grown applications.")
+ (license license:repoze)))
+
+(define-public python-random-user-agent
+ (package
+ (name "python-random-user-agent")
+ (version "1.0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "random_user_agent" version))
+ (sha256
+ (base32
+ "04nhzdh2ki7ybhjrmghxci6hcm6i03vvin2q2ynj87fbr1pa534g"))))
+ (build-system python-build-system)
+ (home-page "https://github.com/Luqman-Ud-Din/random_user_agent")
+ (synopsis "List of user agents")
+ (description
+ "This package provides a list of user agents, from a collection of more
+than 326,000 known user-agents. Users can pick a random one, or select one
+based on filters.")
+ (license license:expat)))