diff options
Diffstat (limited to 'gnu/packages/python-web.scm')
-rw-r--r-- | gnu/packages/python-web.scm | 302 |
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))) |