+
+(define-public python-jinxed
+ (package
+ (name "python-jinxed")
+ (version "1.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "jinxed" version))
+ (sha256
+ (base32
+ "1n7vl03rhjd0xhjgbjlh8x9f8yfbhamcwkgvs4jg7g5qj8f0wk89"))))
+ (build-system python-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'set-environment-variables
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((ncurses (assoc-ref inputs "ncurses")))
+ (setenv "TERM" "LINUX")
+ (setenv "TERMINFO" (string-append ncurses "/share/terminfo"))
+ #t))))
+ #:tests? #f)) ; _curses.error: setupterm: could not find terminal
+ (native-inputs
+ `(("ncurses" ,ncurses)))
+ (home-page "https://github.com/Rockhopper-Technologies/jinxed")
+ (synopsis "Jinxed Terminal Library")
+ (description
+ "Jinxed is an implementation of a subset of the Python curses library.")
+ (license license:mpl2.0)))
+
+(define-public python-blessed
+ (package
+ (name "python-blessed")
+ (version "1.17.8")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "blessed" version))
+ (sha256
+ (base32
+ "1wdj342sk22hfrg0n91x2qnqsbzbiyq9y009v3pxnvfzn9bx0wbn"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Don't get hung up on Windows test failures.
+ (delete-file "blessed/win_terminal.py") #t))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-jinxed" ,python-jinxed)
+ ("python-six" ,python-six)
+ ("python-wcwidth" ,python-wcwidth)))
+ (native-inputs
+ `(("python-mock" ,python-mock)
+ ("python-pytest" ,python-pytest)))
+ (home-page "https://github.com/jquast/blessed")
+ (synopsis "Wrapper around terminal capabilities")
+ (description
+ "Blessed is a thin, practical wrapper around terminal styling, screen
+positioning, and keyboard input.")
+ (license license:expat)))
+
+(define-public python-readme-renderer
+ (package
+ (name "python-readme-renderer")
+ (version "26.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "readme_renderer" version))
+ (sha256
+ (base32
+ "13fnrv7z3y0yfafzcjbl55cqxncvbxadr72ql4l29pgyvrqxpsfb"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-bleach" ,python-bleach)
+ ("python-docutils" ,python-docutils)
+ ("python-pygments" ,python-pygments)
+ ("python-six" ,python-six)))
+ (native-inputs
+ `(("python-mock" ,python-mock)
+ ("python-pytest" ,python-pytest)))
+ (home-page "https://github.com/pypa/readme_renderer")
+ (synopsis "Render README files in Warehouse")
+ (description
+ "Readme Renderer is a library that will safely render arbitrary README
+files into HTML. It is designed to be used in Warehouse to render the
+@code{long_description} for packages. It can handle Markdown, reStructuredText,
+and plain text.")
+ (license license:asl2.0)))
+
+(define-public python-lazr-delegates
+ (package
+ (name "python-lazr-delegates")
+ (version "2.0.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "lazr.delegates" version))
+ (sha256
+ (base32
+ "1rdnl85j9ayp8n85l0ciip621j9dcziz5qnmv2m7krgwgcn31vfx"))))
+ (build-system python-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (invoke "python" "setup.py" "nosetests"))))))
+ (native-inputs
+ `(("python-nose" ,python-nose)))
+ (propagated-inputs
+ `(("python-zope-interface" ,python-zope-interface)))
+ (home-page "https://launchpad.net/lazr.delegates")
+ (synopsis "Easily write objects that delegate behavior")
+ (description
+ "The @code{lazr.delegates} package makes it easy to write objects that
+delegate behavior to another object. The new object adds some property or
+behavior on to the other object, while still providing the underlying interface,
+and delegating behavior.")
+ (license license:lgpl3)))
+
+(define-public python-lazr-config
+ (package
+ (name "python-lazr-config")
+ (version "2.2.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "lazr.config" version))
+ (sha256
+ (base32
+ "11xpddgyhyj7sf27wbmrq5lnqk21wnprx3ajycgwlxjamh6sgffd"))))
+ (build-system python-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (invoke "python" "-s" "-m" "nose" "-P" "lazr"))))))
+ (native-inputs
+ `(("python-nose" ,python-nose)))
+ (propagated-inputs
+ `(("python-lazr-delegates" ,python-lazr-delegates)
+ ("python-zope-interface" ,python-zope-interface)))
+ (home-page "https://launchpad.net/lazr.config")
+ (synopsis "Create configuration schemas and process and validate configurations")
+ (description
+ "The LAZR config system is typically used to manage process configuration.
+Process configuration is for saying how things change when we run systems on
+different machines, or under different circumstances. This system uses ini-like
+file format of section, keys, and values. The config file supports inheritance
+to minimize duplication of information across files. The format supports schema
+validation.")
+ (license license:lgpl3)))
+
+(define-public python-flufl-bounce
+ (package
+ (name "python-flufl-bounce")
+ (version "3.0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "flufl.bounce" version))
+ (sha256
+ (base32
+ "01lg1b0jpf8605mzaz9miq3nray6s7a7gc8n4wzg5nsxl8fglcp4"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-atpublic" ,python-atpublic)
+ ("python-zope-interface" ,python-zope-interface)))
+ (native-inputs
+ `(("python-nose2" ,python-nose2)))
+ (home-page "https://fluflbounce.readthedocs.io/en/latest/")
+ (synopsis "Email bounce detectors")
+ (description "The @code{flufl.bounce} library provides a set of heuristics
+and an API for detecting the original bouncing email addresses from a bounce
+message. Many formats found in the wild are supported, as are VERP and
+RFC 3464.")
+ (license (list license:asl2.0
+ license:lgpl3)))) ; only for setup_headers.py
+
+(define-public python-flufl-i18n
+ (package
+ (name "python-flufl-i18n")
+ (version "3.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "flufl.i18n" version))
+ (sha256
+ (base32
+ "1flwpn1xhgc957zj3zxw92dhdjh0lsy0hdvzq32dzqpsajfsvq1r"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-atpublic" ,python-atpublic)))
+ (home-page "https://flufli18n.readthedocs.io")
+ (synopsis "API for Python internationalization")
+ (description
+ "This package provides a high level, convenient API for managing
+internationalization translation contexts in Python application. There is a
+simple API for single-context applications, such as command line scripts which
+only need to translate into one language during the entire course of thei
+execution. There is a more flexible, but still convenient API for multi-context
+applications, such as servers, which may need to switch language contexts for
+different tasks.")
+ (license license:asl2.0)))
+
+(define-public python-flufl-lock
+ (package
+ (name "python-flufl-lock")
+ (version "4.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "flufl.lock" version))
+ (sha256
+ (base32
+ "055941zyma3wfx25jhm8wcsghpv3jc3iwi1gdrdjhzcnfhn62lxq"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-atpublic" ,python-atpublic)
+ ("python-psutil" ,python-psutil)))
+ (home-page "https://flufllock.readthedocs.io")
+ (synopsis "NFS-safe file locking with timeouts for POSIX systems")
+ (description
+ "The @dfn{flufl.lock} package provides NFS-safe file locking with
+timeouts for POSIX systems. It is similar to the @code{O_EXCL} option of the
+@code{open} system call but uses a lockfile. Lock objects support lock-breaking
+and have a maximum lifetime built-in.")
+ (license (list license:asl2.0
+ license:lgpl3)))) ; only for setup_helpers.py
+
+(define-public python-flufl-testing
+ (package
+ (name "python-flufl-testing")
+ (version "0.8")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "flufl.testing" version))
+ (sha256
+ (base32
+ "1nkm95mhcfhl4x5jgs6y97ikszaxsfh07nyawsih6cxxm6l62641"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-nose2" ,python-nose2)))
+ (home-page "https://gitlab.com/warsaw/flufl.testing")
+ (synopsis "Collection of test tool plugins")
+ (description
+ "This package contains a small collection of test tool plugins for
+@code{nose2} and @code{flake8}.")
+ (license license:asl2.0)))
+
+(define-public python-devtools
+ (package
+ (name "python-devtools")
+ (version "0.6")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/samuelcolvin/python-devtools")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "15zczdcm90wl54c68f1qjb05nkd5bjsc9xjl3lk4frs7k7wkmrvp"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-pytest" ,python-pytest)
+ ("python-pytest-mock" ,python-pytest-mock)))
+ (propagated-inputs
+ `(("python-pygments" ,python-pygments)))
+ (arguments
+ `(#:phases (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (invoke "pytest")
+ #t)))))
+ (home-page "https://github.com/samuelcolvin/python-devtools")
+ (synopsis "Debug command and development tools")
+ (description
+ "This package provides a debug print command and other development tools.
+It adds a simple and readable way to print stuff during development.")
+ (license license:expat)))
+
+(define-public python-dateparser
+ (package
+ (name "python-dateparser")
+ (version "0.7.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "dateparser" version))
+ (sha256
+ (base32
+ "1ypbyqxlk7n6zibk90js3ybz37xmin3kk0i35g8c51bwqpcfyxg8"))))
+ (build-system python-build-system)
+ (inputs
+ `(("tzdata" ,tzdata)))
+ (propagated-inputs
+ `(("python-dateutil" ,python-dateutil)
+ ("python-pytz" ,python-pytz)
+ ("python-regex" ,python-regex)
+ ("python-ruamel.yaml" ,python-ruamel.yaml)
+ ("python-tzlocal" ,python-tzlocal)))
+ (native-inputs
+ `(("python-mock" ,python-mock)
+ ("python-parameterized" ,python-parameterized)))
+ (arguments
+ `(;; TODO: Of 23320 tests, 6 fail and 53 error.
+ #:tests? #f
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'set-check-environment
+ (lambda* (#:key inputs #:allow-other-keys)
+ (setenv "TZ" "UTC")
+ (setenv "TZDIR"
+ (string-append (assoc-ref inputs "tzdata")
+ "/share/zoneinfo"))
+ #t)))))
+ (home-page "https://github.com/scrapinghub/dateparser")
+ (synopsis
+ "Date parsing library designed to parse dates from HTML pages")
+ (description
+ "@code{python-dateparser} provides modules to easily parse localized
+dates in almost any string formats commonly found on web pages.")
+ (license license:bsd-3)))
+
+(define-public python-dparse
+ (package
+ (name "python-dparse")
+ (version "0.5.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "dparse" version))
+ (sha256
+ (base32
+ "0rzkg3nymsbwdjc0ms2bsajkda02jipwyp3xk97qj71f21lz3dd1"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-pytest" ,python-pytest)))
+ (propagated-inputs
+ `(("python-packaging" ,python-packaging)
+ ("python-pyyaml" ,python-pyyaml)
+ ("python-toml" ,python-toml)))
+ (home-page "https://github.com/pyupio/dparse")
+ (synopsis "Parser for Python dependency files")
+ (description "This package provides a parser for Python dependency files.")
+ (license license:expat)))
+
+(define-public python-safety
+ (package
+ (name "python-safety")
+ (version "1.9.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "safety" version))
+ (sha256
+ (base32
+ "1j801xsxfzavjbzhhc934awvnk1b7jc0qsw3jp3ys0241mlj1gr3"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'disable-tests
+ (lambda _
+ (substitute* "tests/test_safety.py"
+ ;; requires network
+ (("def test_check_live") "def _test_check_live"))
+ #t)))))
+ (propagated-inputs
+ `(("python-click" ,python-click)
+ ("python-dparse" ,python-dparse)
+ ("python-packaging" ,python-packaging)
+ ("python-requests" ,python-requests)))
+ (home-page "https://github.com/pyupio/safety")
+ (synopsis "Check installed dependencies for known vulnerabilities")
+ (description "Safety checks installed dependencies for known vulnerabilities.
+By default it uses the open Python vulnerability database Safety DB.")
+ (license license:expat)))
+
+(define-public python-pypandoc
+ (package
+ (name "python-pypandoc")
+ (version "1.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pypandoc" version))
+ (sha256
+ (base32
+ "1zvn9764cf7kkjkmr9gw6wc8adpk06qxr1rhxwa9pg0zmdvrk90l"))))
+ (build-system python-build-system)
+ (inputs
+ `(("pandoc" ,pandoc)
+ ("pandoc-citeproc" ,pandoc-citeproc)))
+ (propagated-inputs
+ `(("wheel" ,python-wheel)))
+ (native-inputs
+ `(("texlive" ,(texlive-union (list texlive-amsfonts
+ texlive-fonts-ec
+ texlive-latex-hyperref
+ texlive-latex-oberdiek
+ texlive-lm
+ texlive-xcolor)))))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'disable-tests
+ (lambda _
+ ;; Disable test requiring network access
+ (substitute* "tests.py"
+ (("test_basic_conversion_from_http_url")
+ "skip_test_basic_conversion_from_http_url"))
+ ;; Needed by texlive-union to generate fonts
+ (setenv "HOME" "/tmp")
+ #t)))))
+ (home-page "https://github.com/bebraw/pypandoc")
+ (synopsis "Python wrapper for pandoc")
+ (description "pypandoc is a thin Python wrapper around pandoc
+and pandoc-citeproc.")
+ (license license:expat)))