summaryrefslogtreecommitdiff
path: root/gnu/packages/python-web.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/python-web.scm')
-rw-r--r--gnu/packages/python-web.scm587
1 files changed, 501 insertions, 86 deletions
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index 4136645d8d9..a30fbddfb0c 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -5,7 +5,7 @@
;;; Copyright © 2016, 2017 Danny Milosavljevic <dannym+a@scratchpost.org>
;;; Copyright © 2013, 2014, 2015, 2016, 2020 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2016, 2017, 2019-2022 Marius Bakke <marius@gnu.org>
-;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017, 2021 Roel Janssen <roel@gnu.org>
;;; Copyright © 2016, 2017, 2020 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
@@ -45,7 +45,7 @@
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2021 Pradana Aumars <paumars@courrier.dev>
;;; Copyright © 2021, 2022 Arun Isaac <arunisaac@systemreboot.net>
-;;; Copyright © 2021 jgart <jgart@dismail.de>
+;;; Copyright © 2021, 2022 jgart <jgart@dismail.de>
;;; Copyright © 2021 Alice Brenon <alice.brenon@ens-lyon.fr>
;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
;;; Copyright © 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
@@ -56,6 +56,8 @@
;;; Copyright © 2022 Nicolas Graves <ngraves@ngraves.fr>
;;; Copyright © 2022 Tomasz Jeneralczyk <tj@schwi.pl>
;;; Copyright © 2022 msimonin <matthieu.simonin@inria.fr>
+;;; Copyright © 2022 Michael Rohleder <mike@rohleder.de>
+;;; Copyright © 2022 Baptiste Strazzulla <bstrazzull@hotmail.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -77,10 +79,12 @@
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix build-system copy)
+ #:use-module (guix build-system pyproject)
#:use-module (guix build-system python)
#:use-module (guix gexp)
#:use-module (guix utils)
#:use-module (gnu packages)
+ #:use-module (gnu packages admin)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages check)
@@ -89,6 +93,7 @@
#:use-module (gnu packages databases)
#:use-module (gnu packages django)
#:use-module (gnu packages freedesktop)
+ #:use-module (gnu packages glib)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages graphviz)
#:use-module (gnu packages groff)
@@ -218,13 +223,13 @@ reusable library for parsing, manipulating, and generating URIs.")
(define-public python-praw
(package
(name "python-praw")
- (version "7.5.0")
+ (version "7.6.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "praw" version))
(sha256
- (base32 "1nqcwz8r8xp4rfpy2i11x2fjga8fmmf6zw94xjk1h1yxgn1gq6zr"))))
+ (base32 "17pvdlcasr08p5hb1x7shjh8yvn621lzm0bvnwd3b1r1qpzrbz07"))))
(build-system python-build-system)
(arguments
`(#:phases
@@ -432,14 +437,14 @@ Callback Hell.
(define-public python-aiohttp-socks
(package
(name "python-aiohttp-socks")
- (version "0.6.0")
+ (version "0.7.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "aiohttp_socks" version))
(sha256
(base32
- "04w010bvi719ifpc3sshav95k10hf9nq8czn9yglkj206yxcypdr"))))
+ "06il43dv6qm858af841vq9qadw6h7qsfs06nnwagmwqyi72cl592"))))
(build-system python-build-system)
(propagated-inputs
(list python-aiohttp python-attrs python-socks))
@@ -509,6 +514,35 @@ comes with a SOCKS proxy client.")
(base32
"1rswrspv27x33xa5bnhrkjqzhv0sknv5kd7pl1vidw9d2z4rx2l0"))))))
+(define-public python-aiostream
+ (package
+ (name "python-aiostream")
+ (version "0.4.5")
+ (source (origin
+ ;; Tests not included in pypi release.
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/vxgmichel/aiostream")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0l2ijb7yk0820wiyf6zrzx8fhzf8925an7r06mcaw3in1mr6rssq"))))
+ (build-system python-build-system)
+ (native-inputs
+ (list python-pytest
+ python-pytest-asyncio
+ python-pytest-cov
+ python-pytest-runner))
+ (home-page "https://github.com/vxgmichel/aiostream")
+ (synopsis "Generator-based operators for asynchronous iteration")
+ (description "@code{aiostream} provides a collection of stream operators that can
+be combined to create asynchronous pipelines of operations. It can be seen as an
+asynchronous version of @code{itertools}, although some aspects are slightly
+different. All the provided operators return a unified interface called a stream. A
+stream is an enhanced asynchronous iterable.")
+ (license license:gpl3)))
+
(define-public python-asgiref
(package
(name "python-asgiref")
@@ -563,13 +597,13 @@ WSGI. This package includes libraries for implementing ASGI servers.")
(define-public python-aws-sam-translator
(package
(name "python-aws-sam-translator")
- (version "1.40.0")
+ (version "1.51.0")
(source (origin
(method url-fetch)
(uri (pypi-uri "aws-sam-translator" version))
(sha256
(base32
- "1hq5ggbzcq4k3ks439hki493w4sasgaxns6j5x57xsj822acalmf"))))
+ "1ywzchc3nk13xh593j7b14qp3y0fdx7cfbdhnm34p39av66xffac"))))
(build-system python-build-system)
(arguments
`(;; XXX: Tests are not distributed with the PyPI archive, and would
@@ -710,7 +744,7 @@ decode and default on encode.
(define-public python-cfn-lint
(package
(name "python-cfn-lint")
- (version "0.54.3")
+ (version "0.65.0")
(home-page "https://github.com/aws-cloudformation/cfn-lint")
(source (origin
(method git-fetch)
@@ -720,11 +754,16 @@ decode and default on encode.
(file-name (git-file-name name version))
(sha256
(base32
- "106qf19n2k6sdjkb4006aidibd24qqiw901c1613xgjpnyw4dyl6"))))
+ "1rfacp39jssrbchrzb49vwrqyzhx5v7jfcgngqnb9r7qfs4bwi3w"))))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
+ (add-after 'unpack 'skip-network-test
+ (lambda _
+ ;; This test requires networking.
+ (substitute* "test/unit/module/formatters/test_formatters.py"
+ (("def test_sarif_formatter") "def _test_sarif_formatter"))))
(replace 'check
(lambda* (#:key inputs outputs tests? #:allow-other-keys)
(when tests?
@@ -744,11 +783,14 @@ decode and default on encode.
(list python-pydot python-mock))
(propagated-inputs
(list python-aws-sam-translator
+ python-importlib-resources
+ python-jschema-to-python
python-jsonpatch
python-jsonschema
python-junit-xml
python-networkx
python-pyyaml
+ python-sarif-om
python-six))
(synopsis "Validate CloudFormation templates")
(description
@@ -757,6 +799,45 @@ the CloudFormation spec and additional checks. Includes checking valid values
for resource properties and best practices.")
(license license:expat)))
+(define-public python-jschema-to-python
+ (package
+ (name "python-jschema-to-python")
+ (version "1.2.3")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "jschema_to_python" version))
+ (sha256
+ (base32
+ "14cvaiwm56g0v6p7zviikaa5i9ln3yqy910jmp60hirhbpz19zvn"))))
+ (build-system python-build-system)
+ (propagated-inputs (list python-attrs python-jsonpickle python-pbr))
+ (native-inputs (list python-pytest))
+ (home-page "https://github.com/microsoft/jschema-to-python")
+ (synopsis "Generate Python classes from a JSON schema")
+ (description "This package generates source code for Python classes from a
+@url{http://jschema.org,JSchema} JSON schema.")
+ (license license:expat)))
+
+(define-public python-sarif-om
+ (package
+ (name "python-sarif-om")
+ (version "1.0.4")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "sarif_om" version))
+ (sha256
+ (base32
+ "167gb8xjm0310km3w1s12bqldbv7zyklkr4j5900vq4361ml2pyd"))))
+ (build-system python-build-system)
+ (propagated-inputs (list python-attrs))
+ (native-inputs (list python-pbr))
+ (home-page "https://github.com/microsoft/sarif-python-om")
+ (synopsis "Python implementation of the SARIF 2.1.0 object model")
+ (description "This module contains classes for the object model defined
+by the @url{https://sarifweb.azurewebsites.net,Static Analysis Results
+Interchange Format (SARIF)} file format.")
+ (license license:expat)))
+
(define-public python-falcon
(package
(name "python-falcon")
@@ -902,14 +983,14 @@ other HTTP libraries.")
(define-public httpie
(package
(name "httpie")
- (version "3.1.0")
+ (version "3.2.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "httpie" version))
(sha256
(base32
- "1npyfvrq0l56bil8rnpj78mav378mxx4zcqzq1jjx4aap1020jif"))))
+ "1v736y2h7lcyrnxs9y5sf4xwzgll7pc2s6r3ny929mm8lcn07h69"))))
(build-system python-build-system)
(arguments
;; The tests attempt to access external web servers, so we cannot run them.
@@ -922,6 +1003,7 @@ other HTTP libraries.")
python-pysocks
python-charset-normalizer
python-defusedxml
+ python-rich
python-multidict))
(home-page "https://httpie.io")
(synopsis "cURL-like tool for humans")
@@ -934,6 +1016,48 @@ HTTP servers, RESTful APIs, and web services.")
(properties `((lint-hidden-cve . ("CVE-2019-10751"))))
(license license:bsd-3)))
+(define-public parfive
+ (package
+ (name "parfive")
+ (version "2.0.1")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "parfive" version))
+ (sha256
+ (base32
+ "19dcbb6g56l5s3ih0bhs3p4acgc0gf4zdzpj4w87m69li2nhmgpx"))))
+ (build-system python-build-system)
+ (arguments
+ (list #:phases #~(modify-phases %standard-phases
+ (add-before 'check 'disable-test-requiring-network
+ (lambda _
+ (substitute* "parfive/tests/test_downloader.py"
+ (("def test_ftp")
+ "def __off_test_ftp"))))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "python" "-m" "pytest" "-vvv" "parfive")))))))
+ (propagated-inputs (list python-aiofiles python-aioftp python-aiohttp
+ python-tqdm))
+ (native-inputs (list python-pytest
+ python-pytest-asyncio
+ python-pytest-cov
+ python-pytest-localserver
+ python-pytest-socket
+ python-setuptools-scm))
+ (home-page "https://parfive.readthedocs.io/")
+ (synopsis "HTTP and FTP parallel file downloader")
+ (description
+ "This package provides CLI tool and Python library @code{parallel} file
+downloader using asyncio. parfive can handle downloading multiple files in
+parallel as well as downloading each file in a number of chunks.
+
+asciicast demo of parfive parfive works by creating a downloader object,
+appending files to it and then running the download. parfive has a synchronous
+API, but uses asyncio to paralellise downloading the files.")
+ (license license:expat)))
+
(define-public python-html2text
(package
(name "python-html2text")
@@ -1467,13 +1591,13 @@ Amazon S3 compatible object storage server.")
(define-public python-pycurl
(package
(name "python-pycurl")
- (version "7.43.0.5")
+ (version "7.45.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pycurl" version))
(sha256
- (base32 "1cwlb76vddqp2mxqvjbhf367caddzy82rhangddjjhjqaj8x4zgc"))))
+ (base32 "1ji46b924caa4saxvjxs9h673yy0kif297nxpnjn84r7w05mjc2p"))))
(build-system python-build-system)
(arguments
;; The tests attempt to access external web servers, so we cannot run
@@ -1552,7 +1676,7 @@ is Python’s.")
(sha256
(base32
"1swm8h74nhg63nxk347blwq9f1qn6iiq3zisndcvm7axkq3pc2df"))))
- (build-system python-build-system)
+ (build-system pyproject-build-system)
(arguments
(list
#:phases
@@ -1560,21 +1684,8 @@ is Python’s.")
(add-after 'unpack 'remove-coverage-pytest-options
(lambda _
(substitute* "pyproject.toml"
- (("^--cov.*") ""))))
- ;; XXX: PEP 517 manual build copied from python-isort.
- (replace 'build
- (lambda _
- (invoke "python" "-m" "build" "--wheel" "--no-isolation" ".")))
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest"))))
- (replace 'install
- (lambda _
- (let ((whl (car (find-files "dist" "\\.whl$"))))
- (invoke "pip" "--no-cache-dir" "--no-input"
- "install" "--no-deps" "--prefix" #$output whl)))))))
- (native-inputs (list python-poetry-core python-pypa-build python-pytest))
+ (("^--cov.*") "")))))))
+ (native-inputs (list python-poetry-core python-pytest))
(propagated-inputs
(list python-isodate
python-jsonschema
@@ -1606,33 +1717,19 @@ JSON Schema Specification Draft 2020-12.
(sha256
(base32
"1q09sjh4hsc0c8yqbd97h5mp6rwh427y6zyn8kv8wljk6sa0fs4q"))))
- (build-system python-build-system)
+ (build-system pyproject-build-system)
(arguments
(list
+ ;; The example tests attempt to fetch resources from the Internet
+ ;; (see: https://github.com/p1c2u/openapi-spec-validator/issues/151).
+ #:test-flags #~'("-k" "not Example and not Exampe")
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'remove-coverage-pytest-options
(lambda _
(substitute* "pyproject.toml"
- (("^--cov.*") ""))))
- ;; XXX: PEP 517 manual build copied from python-isort.
- (replace 'build
- (lambda _
- (invoke "python" "-m" "build" "--wheel" "--no-isolation" ".")))
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest" "-vv"
- ;; The example tests attempt to fetch resources from
- ;; the Internet (see:
- ;; https://github.com/p1c2u/openapi-spec-validator/issues/151).
- "-k" "not Example and not Exampe"))))
- (replace 'install
- (lambda _
- (let ((whl (car (find-files "dist" "\\.whl$"))))
- (invoke "pip" "--no-cache-dir" "--no-input"
- "install" "--no-deps" "--prefix" #$output whl)))))))
- (native-inputs (list python-poetry-core python-pypa-build python-pytest))
+ (("^--cov.*") "")))))))
+ (native-inputs (list python-poetry-core python-pytest))
(propagated-inputs
(list python-jsonschema
python-openapi-schema-validator
@@ -1870,6 +1967,7 @@ Databricks REST APIs.")
"102hy2qisvjxp5s0v9lvwqi4f2dk0dhns40vjgn008yxc7k0h3cr"))))
(build-system python-build-system)
(arguments '(#:tests? #f)) ; No tests.
+ (propagated-inputs (list python-openid python-six))
(home-page "https://github.com/puiterwijk/python-openid-cla/")
(synopsis "Implementation of the OpenID CLA extension for python-openid")
(description "@code{openid-cla} is an implementation of the OpenID
@@ -1889,6 +1987,7 @@ contributor license agreement extension for python-openid.")
"05zrh78alav24rxkbqlpbad6d3x2nljk6z6j7kflxf3vdqa7w969"))))
(build-system python-build-system)
(arguments '(#:tests? #f)) ; No tests.
+ (propagated-inputs (list python-openid python-six))
(home-page "https://github.com/puiterwijk/python-openid-teams/")
(synopsis "Implementation of the OpenID teams extension for python-openid")
(description
@@ -2404,6 +2503,30 @@ internationalized messages within program source text.")
defining data schemas.")
(license license:zpl2.1)))
+(define-public python-zope-sqlalchemy
+ (package
+ (name "python-zope-sqlalchemy")
+ (version "1.6")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "zope.sqlalchemy" version))
+ (sha256
+ (base32
+ "1azm2awl2ra10xl6wps3yvy14jk2rpzvsyfsb9cncm97aydbwlww"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ (list python-sqlalchemy
+ python-transaction
+ python-zope-interface))
+ (native-inputs (list python-zope-testing))
+ (home-page "https://github.com/zopefoundation/zope.sqlalchemy")
+ (synopsis "Minimal SQLAlchemy transaction integration for Zope")
+ (description "The aim of this package is to unify the plethora of existing
+packages integrating SQLAlchemy with Zope's transaction management. As such,
+it only provides a data manager and makes no attempt to define a @i{zopeish}
+way to configure engines.")
+ (license license:zpl2.1)))
+
(define-public python-zope-configuration
(package
(name "python-zope-configuration")
@@ -2988,6 +3111,42 @@ with python-requests.")
adapter for use with the Requests library.")
(license license:asl2.0)))
+(define-public python-aioftp
+ (package
+ (name "python-aioftp")
+ (version "0.21.4")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "aioftp" version))
+ (sha256
+ (base32
+ "1f8vql2j2b3ykqyh5bxzsp8x5f2if2c1ya232ld3hz3cc7a2dfr8"))))
+ (build-system python-build-system)
+ (arguments
+ (list #:phases #~(modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "pytest" "-vvv")))))))
+ (native-inputs (list python-async-timeout python-pytest
+ python-pytest-asyncio python-pytest-cov
+ python-trustme))
+ (propagated-inputs (list python-siosocks))
+ (home-page "https://aioftp.readthedocs.io/")
+ (synopsis "FTP client/server for asyncio in Python")
+ (description
+ "FTP client and server for asyncio (Python 3) Library implementing FTP
+protocol, both client and server for Python asyncio module.
+
+ Supported commands as client: USER, PASS, ACCT, PWD, CWD, CDUP, MKD, RMD,
+ MLSD, MLST, RNFR, RNTO, DELE, STOR, APPE, RETR, TYPE, PASV, ABOR, QUIT,
+ REST, LIST (as fallback).
+
+ Supported commands as server: USER, PASS, QUIT, PWD, CWD, CDUP, MKD, RMD,
+ MLSD, LIST (non-standard), MLST, RNFR, RNTO, DELE, STOR, RETR,
+ TYPE (\"I\" and \"A\"), PASV, ABOR, APPE, REST.")
+ (license license:asl2.0)))
+
(define-public python-msal
(package
(name "python-msal")
@@ -3214,6 +3373,26 @@ supports url redirection and retries, and also gzip and deflate decoding.")
Amazon Web Services (AWS) API.")
(license license:asl2.0)))
+(define-public awscli-2
+ (package
+ (inherit awscli)
+ (name "awscli")
+ (version "2.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri (string-append name "v2") version))
+ (sha256
+ (base32
+ "0g1icsy2l4n540gnhliypy830dfp08hpfc3rk12dlxgc9v3ra4wl"))))
+ (arguments
+ ;; FIXME: The 'pypi' release does not contain tests.
+ '(#:tests? #f))
+ (inputs
+ (list python-importlib-resources
+ python-executor))))
+
+
(define-public python-wsgiproxy2
(package
(name "python-wsgiproxy2")
@@ -3392,22 +3571,31 @@ Python.")
(define-public python-responses
(package
(name "python-responses")
- (version "0.10.6")
+ (version "0.22.0")
(source (origin
(method url-fetch)
(uri (pypi-uri "responses" version))
(sha256
(base32
- "147pacwkkqy3qf3hr33fnl1xbzgw0zsm3qppvvy9qhq8h069qbah"))))
+ "0bhhffwl0zqin4xc89nc97ynzr7l3j4b8rjqk9w9flnj2cmcnsir"))))
(build-system python-build-system)
(arguments
- `(;; Test suite is not distributed:
- ;; https://github.com/getsentry/responses/issues/38
- #:tests? #f))
+ '(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "pytest" "-v")))))))
(native-inputs
- (list python-mock))
+ (list python-mock
+ python-pytest
+ python-pytest-asyncio
+ python-pytest-httpserver))
(propagated-inputs
- (list python-requests python-cookies python-six))
+ (list python-requests
+ python-cookies
+ python-six
+ python-types-toml))
(home-page "https://github.com/getsentry/responses")
(synopsis "Utility for mocking out the `requests` Python library")
(description "A utility library for mocking out the `requests` Python
@@ -3436,6 +3624,26 @@ library.")
@code{Requests} with @code{Gevent} to make asynchronous HTTP Requests easily")
(license license:bsd-2)))
+(define-public python-gwebsockets
+ (package
+ (name "python-gwebsockets")
+ (version "0.7")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "gwebsockets" version))
+ (sha256
+ (base32
+ "0kgq7wssz0mrhxdafkfc9prj0qjv9z0lyivyqvjvjnnypg54di7m"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ (list python-pygobject))
+ (home-page "https://github.com/sugarlabs/gwebsockets")
+ (synopsis "GLib based websockets server")
+ (description "This package provides a websocket server written in Python.
+It uses GIO for network communication and hence it easily integrates with the
+GLib mainloop.")
+ (license license:asl2.0)))
+
(define-public python-dpkt
(package
(name "python-dpkt")
@@ -3713,38 +3921,63 @@ SlimIt also provides a library that includes a JavaScript parser, lexer,
pretty printer and a tree visitor.")
(license license:expat)))
+(define-public python-flask-jwt
+ (package
+ (name "python-flask-jwt")
+ (version "0.3.2")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "Flask-JWT" version))
+ (sha256
+ (base32
+ "1bfh7cr0sf65rn4h1q67472y6ml9s8c4k0xxfhrwvwg0plpngh29"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:phases
+ '(modify-phases %standard-phases
+ (add-after 'unpack 'compatibility
+ (lambda _
+ (substitute* "setup.cfg"
+ (("\\[pytest\\]") "[tool:pytest]"))
+ (substitute* "requirements.txt"
+ (("PyJWT>=1.4.0,<1.5.0") "PyJWT>=2.0.0"))
+ (substitute* '("tests/test_jwt.py"
+ "flask_jwt/__init__.py")
+ (("access_token.decode\\('utf-8'\\)") "access_token")))))))
+ (propagated-inputs (list python-flask python-pyjwt))
+ (native-inputs (list python-pytest))
+ (home-page "https://github.com/mattupstate/flask-jwt")
+ (synopsis "JWT token authentication for Flask apps")
+ (description "This package implements JWT token authentication for Flask
+apps.")
+ (license license:expat)))
+
(define-public python-flask-restful
(package
(name "python-flask-restful")
- (version "0.3.8")
+ (version "0.3.9")
(source
(origin
(method url-fetch)
(uri (pypi-uri "Flask-RESTful" version))
- (patches (search-patches "python-flask-restful-werkzeug-compat.patch"))
(sha256
(base32
- "05b9lzx5yc3wgml2bcq50lq35h66m8zpj6dc9advcb5z3acsbaay"))))
- (build-system python-build-system)
+ "0gm5dz088v3d2k1dkcp9b3nnqpkk0fp2jly870hijj2xhc5nbv6c"))))
+ (build-system pyproject-build-system)
(arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'fix-imports
- (lambda _
- (substitute* "flask_restful/__init__.py"
- (("flask\\.helpers") "flask.scaffold")))))))
+ ;; This test fails because '/' is not 'http://localhost/'.
+ (list #:test-flags '(list "-k" "not test_redirect")))
(propagated-inputs
- (list python-aniso8601 python-flask python-pycrypto python-pytz))
+ (list python-aniso8601 python-flask python-pytz))
(native-inputs
- (list ;; Optional dependency of Flask. Tests need it.
- python-blinker python-mock ; For tests
- python-nose)) ;for tests
- (home-page
- "https://www.github.com/flask-restful/flask-restful/")
- (synopsis
- "Flask module for creating REST APIs")
+ (list python-blinker
+ python-mock
+ python-pytest))
+ (home-page "https://www.github.com/flask-restful/flask-restful/")
+ (synopsis "Flask module for creating REST APIs")
(description
- "This package contains a Flask module for creating REST APIs.")
+ "This package contains a Flask module for creating REST APIs.")
(license license:bsd-3)))
(define-public python-flask-basicauth
@@ -4095,6 +4328,7 @@ server.")
(method git-fetch)
(uri (git-reference (url home-page)
(commit (string-append "v" version))))
+ (file-name (git-file-name name version))
(sha256
(base32
"0zj7qpknvlhrh4fsp5sx4fwyx3sp41ynclka992zympm3xym9zyq"))))
@@ -4304,14 +4538,23 @@ addon modules.")
(define-public python-bottle
(package
(name "python-bottle")
- (version "0.12.21")
+ (version "0.12.23")
(source
(origin
(method url-fetch)
(uri (pypi-uri "bottle" version))
(sha256
- (base32 "0zl8sy4dhafyxqpavy7pjz0qzpakmhgh2qr6pwlw5f82rjv62z3q"))))
+ (base32 "0rs1w293gp5bhxip2cci8mfkhld6n5qcznvlna3nxclz76mf6gb8"))))
(build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (with-directory-excursion "test"
+ (invoke "pytest" "-vvv"))))))))
+ (native-inputs (list python-pytest))
(home-page "https://bottlepy.org/")
(synopsis "WSGI framework for small web-applications")
(description "@code{python-bottle} is a WSGI framework for small web-applications.")
@@ -4586,6 +4829,65 @@ Google search engine. Its module is called @code{googlesearch}.")
(description "Python client library for Google's discovery based APIs")
(license license:asl2.0)))
+(define-public whoogle-search
+ (package
+ (name "whoogle-search")
+ (version "0.8.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "whoogle-search" version))
+ (sha256
+ (base32
+ "0h8cl9bkd3vx17kbvcnmc8cy6pc29lxr0drxm84kj37ka788cj2g"))))
+ (build-system python-build-system)
+ (arguments
+ (list
+ ;; The tests need network access
+ #:tests? #f))
+ (propagated-inputs
+ (list python-attrs
+ python-beautifulsoup4
+ python-cachelib
+ python-certifi
+ python-cffi
+ python-brotli
+ python-chardet
+ python-click
+ python-cryptography
+ python-cssutils
+ python-defusedxml
+ python-flask
+ python-flask-session
+ python-idna
+ python-itsdangerous
+ python-jinja2
+ python-markupsafe
+ python-more-itertools
+ python-packaging
+ python-pluggy
+ python-py
+ python-pycodestyle
+ python-pycparser
+ python-pyopenssl
+ python-pyparsing
+ python-pysocks
+ python-dateutil
+ python-requests
+ python-soupsieve
+ python-stem
+ python-urllib3
+ python-waitress
+ python-wcwidth
+ python-werkzeug
+ python-dotenv))
+ (home-page "https://github.com/benbusby/whoogle-search")
+ (synopsis "Self-hosted, ad-free, privacy-respecting metasearch engine")
+ (description
+ "Get Google results, but without any ads, javascript, AMP links,
+cookies, or IP address tracking. Quick and simple to implement as a primary
+search engine replacement on both desktop and mobile.")
+ (license license:expat)))
+
(define-public python-hawkauthlib
(package
(name "python-hawkauthlib")
@@ -6561,14 +6863,14 @@ your code non-blocking and speedy.")
(define-public python-socks
(package
(name "python-socks")
- (version "1.2.4")
+ (version "2.0.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "python-socks" version))
(sha256
(base32
- "1n6xb18jy41ybgkmamakg6psp3qididd45qknxiggngaiibz43kx"))))
+ "12msk06c0glljcrx1byd78xgv05lxw81vknqwhn8ccs7an7cmag3"))))
(build-system python-build-system)
(arguments
`(#:tests? #f ; tests not included
@@ -6577,8 +6879,7 @@ your code non-blocking and speedy.")
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
- (invoke "pytest" "tests/" "-s"))
- #t)))))
+ (invoke "pytest" "tests/" "-s")))))))
(propagated-inputs
(list python-async-timeout python-curio python-trio))
(native-inputs
@@ -6603,7 +6904,7 @@ your code non-blocking and speedy.")
(base32 "1b64j45w35jzhjhnq44bnyad9ydh1iyyd7a6j2c8phxmllyyp2zq"))))
(build-system python-build-system)
(home-page "https://github.com/sethmlarson/socksio")
- (synopsis "Sans-I/O implementation of SOCKS4, SOCKS4A, and SOCKS5.")
+ (synopsis "Sans-I/O implementation of SOCKS4, SOCKS4A, and SOCKS5")
(description "The @code{socksio} Python module is a client-side sans-I/O
SOCKS proxy implementation. It supports SOCKS4, SOCKS4A, and SOCKS5.
@code{socksio} is a sans-I/O library similar to @code{h11} or @code{h2}; this
@@ -6612,6 +6913,43 @@ through the network, it only deals with the implementation details of the
SOCKS protocols. It can be paired with any I/O library.")
(license license:expat)))
+(define-public python-siosocks
+ (package
+ (name "python-siosocks")
+ (version "0.3.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "siosocks" version))
+ (sha256
+ (base32
+ "0qqxy8wl5mrmlkblzjq9nsg0cbm5jwgj409mhnhq6gd1ypvbndms"))))
+ (build-system python-build-system)
+ (arguments
+ (list #:phases #~(modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "pytest" "-vvv")))))))
+ (native-inputs (list python-pytest python-pytest-asyncio python-pytest-cov
+ python-pytest-trio))
+ (propagated-inputs (list python-trio))
+ (home-page "https://github.com/pohmelie/siosocks")
+ (synopsis "SOCKSv4 & SOCKSv5 TCP proxy protocol implementation in Python")
+ (description
+ "This package provides a Python module and framework for sans-io socks proxy
+client/server with couple io backends.
+
+Features:
+@itemize
+@item Only TCP connect (no BIND, no UDP)
+@item Both client and server
+@item SOCKS versions: 4, 4a, 5
+@item SOCKSv5 auth: no auth, username/password
+@item Couple io backends: @code{asyncio}, @code{trio}, @code{socketserver}
+@item One-shot socks server (@code{python -m siosocks})
+@end itemize")
+ (license license:expat)))
+
(define-public python-msrest
(package
(name "python-msrest")
@@ -6654,7 +6992,7 @@ SOCKS protocols. It can be paired with any I/O library.")
python-pytest-asyncio
python-pytest-trio))
(home-page "https://github.com/Azure/msrest-for-python")
- (synopsis "AutoRest swagger generator Python client runtime.")
+ (synopsis "AutoRest swagger generator Python client runtime")
(description "This package provides the runtime library @code{msrest} for
AutoRest-generated Python clients.")
(license license:expat)))
@@ -7402,13 +7740,13 @@ regular expressions.")
(define-public python-scrapy
(package
(name "python-scrapy")
- (version "2.6.1")
+ (version "2.7.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "Scrapy" version))
(sha256
- (base32 "09rqalbwcz9ix8h0992mzjs50sssxsmmh8w9abkrqchgknjmbzan"))))
+ (base32 "0kpi3hg2ycs6s8cg41r2zc1axd0rpnps8bnzg7wisjyjaf1l1yih"))))
(build-system python-build-system)
(arguments
`(#:phases
@@ -7658,6 +7996,27 @@ resources using Web Application Description Language (WADL) files as guides.")
@end itemize")
(license license:expat)))
+(define-public python-pysimplesoap
+ (package
+ (name "python-pysimplesoap")
+ (version "1.16.2")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "PySimpleSOAP" version))
+ (sha256
+ (base32
+ "1qb7dn8m1cjwzql7vqj9i1hsscb7nyhimmlp45jrpzxds38g9fxi"))))
+ (build-system python-build-system)
+ (arguments
+ (list #:tests? #f)) ;tests fail due to attempted web access
+ (home-page "https://github.com/pysimplesoap/pysimplesoap")
+ (synopsis "Simple and lightweight SOAP library for Python")
+ (description
+ "This package provides a simple and lightweight Python SOAP library for
+client and server webservices interfaces, aimed to be as small and easy as
+possible, supporting most common functionality.")
+ (license license:lgpl3+)))
+
(define-public python-http-client
(package
(name "python-http-client")
@@ -7823,3 +8182,59 @@ list, create, update, or delete resources (e.g. Order, Product, Collection).")
You can use it as a library in your python project or you can explore the
Grid5000 resources interactively using the embedded shell.")
(license license:gpl3+)))
+
+(define-public python-enoslib
+ (package
+ (name "python-enoslib")
+ (version "8.0.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gitlab.inria.fr/discovery/enoslib")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ "0vs6b0bnlv95mzv0rjbxqwrhzkgjkn91gqipgwdf7y4ffpz8nybg")))
+ (build-system python-build-system)
+ (native-inputs (list python-wheel python-pytest python-ddt
+ python-freezegun))
+ (propagated-inputs (list ansible
+ python-cryptography
+ python-grid5000
+ python-jsonschema
+ python-netaddr
+ python-packaging
+ python-requests
+ python-rich
+ python-sshtunnel
+ python-pytz))
+ (arguments
+ '(#:phases (modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ ;; Otherwise Ansible fails to create its config directory.
+ (setenv "HOME" "/tmp")
+ ;; Ignoring the tests requiring an extra dependency (iotlabcli)
+ (invoke "pytest" "enoslib/tests/unit"
+ "--ignore"
+ "enoslib/tests/unit/infra/test_utils.py"
+ "--ignore-glob"
+ "enoslib/tests/unit/infra/enos_iotlab/*"))))
+ ;; Disable the sanity check, which fails with the following error:
+ ;;
+ ;; ContextualVersionConflict(rich 12.4.1
+ ;; (/gnu/store/...-python-rich-12.4.1/lib/python3.9/site-packages),
+ ;; Requirement.parse('rich[jupyter]~=12.0.0'), {'enoslib'})
+ ;;
+ ;; The optional jupyter dependency of rich isn't critical for
+ ;; EnOSlib to work
+ (delete 'sanity-check))))
+
+ (home-page "https://discovery.gitlabpages.inria.fr/enoslib/index.html")
+ (synopsis "Deploy distributed testbeds on a variety of platforms")
+ (description
+ "EnOSlib is a library to build experimental frameworks on various
+scientific testbeds. It lets you deploy networks of machines on actual
+hardware on Grid'5000 or via OpenStack, to Vagrant, Chameleon, and more.")
+ (license license:gpl3+)))