~ruther/guix-local

87270cddf011c4e6071bd99b59c70855654cd1ee — Sharlatan Hellseher 4 months ago 146fbb1
gnu: packages/python-xyz: Sort python-t[abefhil]* variables.

* gnu/packages/python-xyz.scm::(python-tables, python-tablib,
python-tabulate, python-takethetime, python-taskgroup,
python-tasklogger, python-tatsu, python-tblib, python-telethon,
python-tempdir, python-tempora, python-tenacity, python-term-background,
python-term-image, python-termcolor, python-termcolor-1,
python-terminaltables, python-termstyle, python-text-unidecode,
python-textdistance, python-textparser, python-texttable,
python-textual, python-tftpy, python-three-merge, python-throttler,
python-tifffile, python-tifffile-for-dask-image, python-tiktoken,
python-timeout-decorator, python-titlecase, python-tlsh): Sort variables
alphabetically.

Change-Id: I8d1195dfcbb587244ec5fbc7b0a794eeef408fd5
1 files changed, 980 insertions(+), 977 deletions(-)

M gnu/packages/python-xyz.scm
M gnu/packages/python-xyz.scm => gnu/packages/python-xyz.scm +980 -977
@@ 1838,110 1838,6 @@ regularly spaced grids.  The actual streamline tracing is done at a low level
in Rust, with a nice Python API provided on top.")
    (license license:gpl3+)))

(define-public python-takethetime
  (package
    (name "python-takethetime")
    (version "0.3.1")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "TakeTheTime" version))
       (sha256
        (base32 "1y9gzqb9l1f2smx8783ccjzjvby5mphshgrfks7s75mml59h9qyv"))))
    (build-system pyproject-build-system)
    (arguments
     (list #:tests? #f)) ; tests are time dependent and not provided in PyPI
    (native-inputs
     (list python-setuptools
           python-wheel))
    (home-page "https://github.com/ErikBjare/TakeTheTime")
    (synopsis "Timing chunks of code")
    (description
     "This package implements a functionality for time taking using context
managers.")
    (license license:expat)))

(define-public python-tatsu
  (package
    (name "python-tatsu")
    (version "5.13.2")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
              (url "https://github.com/neogeny/TatSu")
              (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "0ppgi5r55iirzhnf988b32yvh8ly8lzxbg59y0zgqfaxbma50650"))))
    (build-system pyproject-build-system)
    (native-inputs
     (list python-pytest
           python-setuptools))
    (home-page "https://tatsu.readthedocs.io/en/stable/")
    (synopsis "PEG/Packrat Parser generator for Python")
    (description
     "TatSu (竜) takes a grammar in a variation of Extended Backus-Naur
Form (EBNF) as input, and outputs a memoizing Parsing Expression Grammar (PEG)
or Packrat parser in Python.")
    (license license:bsd-2)))

(define-public python-term-image
  (package
    (name "python-term-image")
    (version "0.7.2")
    (source
     (origin
       ;; We need the full repo to run the tests.
       (method git-fetch)
       (uri (git-reference
              (url "https://github.com/AnonymouX47/term-image")
              (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "1lsd5m0k5m99arkca2rzrrlln10c8ax6xfawqwjnspcbf8l3h3dq"))))
    (build-system pyproject-build-system)
    (arguments
     (list #:test-flags
           #~(list "tests"
                   ;; These tests require network access.
                   "-k" (string-append "not test_from_url"
                                       " and not test_source"
                                       " and not test_close"))
           #:phases
           #~(modify-phases %standard-phases
               (add-after 'unpack 'adjust-dependencies
                 (lambda _
                   (substitute* "setup.py"
                     (("pillow>=9.1,<11") "pillow>=9.1,<12")))))))
    (propagated-inputs (list python-pillow python-requests))
    (native-inputs
     (list python-pytest
           python-setuptools
           python-urwid))
    (home-page "https://github.com/AnonymouX47/term-image")
    (synopsis "Display images in the terminal")
    (description "term-image is a library and program to display images on
compatible terminals.

Features:
@enumerate
@item Multiple image formats (basically all formats supported by
@code{PIL.Image.open()})
@item Multiple image source types: PIL image instance, local file, URL
@item Multiple image render styles (with automatic support detection)
@item Support for multiple terminal graphics protocols, including Kitty
@item Transparency support (with multiple options)
@item Animated image support (including transparent ones)
@item Integration into various TUI / terminal-based output libraries
@item Terminal size awareness
@item Automatic and manual image sizing
@item Horizontal and vertical alignment
@item Automatic and manual font ratio adjustment (to preserve image aspect
ratio)
@end enumerate")
    (license license:expat)))

(define-public python-trubar
  (package
    (name "python-trubar")


@@ 3564,31 3460,6 @@ library.")
of it like a generator that is \"reusable\" and has a length.")
    (license license:bsd-3)))

(define-public python-tenacity
  (package
    (name "python-tenacity")
    (version "9.0.0")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "tenacity" version))
       (sha256
        (base32 "0fyp421r038naskvyhj90hkq0az96477njad4rhs6annjz53fzw0"))))
    (build-system pyproject-build-system)
    (native-inputs
     (list python-pytest
           python-setuptools
           python-setuptools-scm
           python-tornado-6
           python-typeguard
           python-wheel))
    (home-page "https://github.com/jd/tenacity")
    (synopsis "Retrying library for python")
    (description
     "Tenacity is a general-purpose python library to simplify the task of
adding retry behavior to just about anything.")
    (license license:asl2.0)))

(define-public python-pytelegrambotapi
  (package
    (name "python-pytelegrambotapi")


@@ 5412,26 5283,6 @@ to allow the user to choose from a list of options, and terminal interaction
helpers.")
    (license license:expat)))

(define-public python-textparser
  (package
    (name "python-textparser")
    (version "0.24.0")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "textparser" version))
       (sha256
        (base32 "0dc3aqbzh0x13i6cmr73q777wv8nxyk3p0kdnynh5l59bbkhixsn"))))
    (build-system pyproject-build-system)
    (arguments
     (list #:test-backend #~'unittest))
    (native-inputs (list python-setuptools))
    (home-page "https://github.com/eerimoq/textparser")
    (synopsis "Fast text parser for Python")
    (description "This library provides a text parser written in the Python
language.  It aims to be fast.")
    (license license:expat)))

;; XXX: The project might be abandoned and this package has no users in Guix,
;; consider to remove if it keeps failing.
;; See: <https://github.com/ethanfurman/aenum/issues/45>,


@@ 7930,30 7781,6 @@ Capabilities include:
@end itemize")
    (license license:expat)))

(define-public python-text-unidecode
  (package
    (name "python-text-unidecode")
    (version "1.3")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "text-unidecode" version))
       (sha256
        (base32 "14xb99fdv52j21dsljgsbmbaqv10ps4b453p229r29sdn4xn1mms"))))
    (build-system pyproject-build-system)
    (native-inputs
     (list python-pytest
           python-setuptools))
    (home-page "https://github.com/kmike/text-unidecode/")
    (synopsis "Decode Unicode data")
    (description
     "@code{text-unidecode} is a basic Python port of the @code{Text::Unidecode}
Perl library.  It can create ASCII representations of Unicode data.  In general
users should prefer the @code{python-unidecode} package which offers better
memory usage and transliteration quality.")
    ;; The user can choose either license.
    (license (list license:clarified-artistic license:gpl2+))))

(define-public python-pyjwt
  (package
    (name "python-pyjwt")


@@ 12752,96 12579,6 @@ ImageJ ROIs, an undocumented and ImageJ application specific format to store
regions of interest, geometric shapes, paths, text, etc for image overlays.")
    (license license:bsd-3)))

(define-public python-tifffile
  (package
    (name "python-tifffile")
    (version "2025.10.4")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "tifffile" version))
       (sha256
        (base32 "0f1ybmr2jz19gjg92p9vz3qib49m0x4ipxvrvjyfa6r1mcb7qhrf"))))
    (build-system pyproject-build-system)
    ;; Tests require lfdfiles, which depends on tifffile
    (arguments (list #:tests? #f))
    (propagated-inputs
     (list python-numpy))
    (native-inputs
     (list python-setuptools))
    (home-page "https://www.lfd.uci.edu/~gohlke/")
    (synopsis "Read and write TIFF(r) files")
    (description
     "This package lets you read image and metadata from many bio-scientific
formats such as plain TIFF, BigTIFF, OME-TIFF, STK, LSM, SGI,NIH, ImageJ,
MicroManager, MD GEL, and FluoView files.  It also lets you write numpy arrays
to TIFF, BigTIFF, and ImageJ hyperstack compatible files.")
    (license license:bsd-3)))

(define-public python-tifffile-for-dask-image
  ;; It's for python-dask-image@2024.5.3, remove when no longer required.
  (hidden-package
   (package
     (inherit python-tifffile)
     (name "python-tifffile")
     (version "2023.12.9")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "tifffile" version))
        (sha256
         (base32 "1f6d8qdlq0zlksfdhp1mhj9icpwhw4cz47r4i80m6r0a328xmlcx")))))))

(define-public python-tiktoken
  (package
    (name "python-tiktoken")
    (version "0.9.0")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "tiktoken" version))
       (sha256
        (base32 "0p9cg6n8mzdi4lbbwxrrp26chy5hr14bqmzr3w74kq1qm6k5qanh"))))
    (build-system cargo-build-system)
    (arguments
     (list
      #:install-source? #false
      #:imported-modules
      (append %pyproject-build-system-modules
              %cargo-build-system-modules)
      #:modules
      '((guix build cargo-build-system)
        ((guix build pyproject-build-system) #:prefix py:)
        (guix build utils))
      #:phases
      #~(modify-phases %standard-phases
          (replace 'build
            (assoc-ref py:%standard-phases 'build))
          (add-after 'install 'wrap
            (lambda _
              ;; Collection of python- and pyproject-build-system phases
              ;; between 'install and 'check.
              (assoc-ref py:%standard-phases 'add-install-to-pythonpath)
              (assoc-ref py:%standard-phases 'add-install-to-path)
              (assoc-ref py:%standard-phases 'wrap)
              (assoc-ref py:%standard-phases 'create-entrypoints)
              (assoc-ref py:%standard-phases 'compile-bytecode)))
          (replace 'install
            (assoc-ref py:%standard-phases 'install)))))
    (propagated-inputs (list python-regex python-requests))
    (inputs (cargo-inputs 'python-tiktoken))
    (native-inputs
     (list python-setuptools
           python-setuptools-rust
           python-wheel
           python-wrapper))
    (home-page "https://github.com/openai/tiktoken/")
    (synopsis "Fast BPE tokeniser for use with OpenAI's models")
    (description
     "Tiktoken is a fast @dfn{byte pair encoding} (BPE) tokeniser for use with
@code{OpenAI's} models.")
    (license license:expat)))

(define-public python-lfdfiles
  (package
    (name "python-lfdfiles")


@@ 15243,44 14980,6 @@ computing.")
code.")
    (license license:bsd-3)))

(define-public python-textdistance
  (package
    (name "python-textdistance")
    (version "4.6.3")
    (source
     (origin
       ;; There are no tests in the PyPI tarball.
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/life4/textdistance")
             (commit version)))
       (file-name (git-file-name name version))
       (sha256
        (base32 "1qaplikab46p38jqr93bxd26vvxcnvib15fjxmmp4cbsiy5196sg"))))
    (build-system pyproject-build-system)
    (arguments
     (list
      #:test-flags
      #~(list "--numprocesses" (number->string (min 4 (parallel-job-count))))))
    (native-inputs
     (list python-numpy
           python-pytest
           python-pytest-xdist
           python-setuptools
           python-wheel))
    (propagated-inputs
     (list python-jellyfish
           python-distance
           python-levenshtein
           python-pylev
           python-pyxdameraulevenshtein
           python-rapidfuzz))
    (home-page "https://github.com/life4/textdistance")
    (synopsis "Compute distance between the two texts")
    (description "@code{textdistance} is a pure Python library for comparing
distance between two or more sequences by many algorithms.")
    (license license:expat)))

(define-public python-pydbus
  (package
    (name "python-pydbus")


@@ 15674,61 15373,6 @@ traversals, topological sort, shortest paths, and more with graphviz
output.")
    (license license:expat)))

(define-public python-three-merge
  (package
    (name "python-three-merge")
    (version "0.1.1")
    (source
     (origin
       ;; There are no tests in the PyPI tarball.
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/spyder-ide/three-merge")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "1fw28swh6jq4myr09j7gv68l241b8vwg470ak5xv0x4xwh2a1m86"))))
    (build-system pyproject-build-system)
    (propagated-inputs
     (list python-diff-match-patch))
    (native-inputs
     (list python-pytest python-setuptools python-wheel))
    (home-page "https://github.com/spyder-ide/three-merge")
    (synopsis "Library for merging two strings with respect to a base one")
    (description
     "This package provides a Python library to perform a 3-way merge between
strings, based on @code{diff-match-patch}.  This library performs merges at a
character level, as opposed to most VCS systems, which opt for a line-based
approach.")
    (license license:expat)))

(define-public python-throttler
  (package
    (name "python-throttler")
    (version "1.2.2")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/uburuntu/throttler")
             (commit (string-append "v" version))))
       (sha256
        (base32 "1gn21x0zkm7rr7qijlz7nvw7z0mm1j2r0r2lslg7wln1z36gjkbw"))))
    (build-system pyproject-build-system)
    (native-inputs (list python-aiohttp
                         python-codecov
                         python-flake8
                         python-pytest
                         python-pytest-asyncio
                         python-pytest-cov
                         python-setuptools
                         python-wheel))
    (home-page "https://github.com/uburuntu/throttler")
    (synopsis "Throttling with asyncio support")
    (description
     "This is a Python package for easy throttling with asyncio support.")
    (license license:expat)))

(define-public python-pyqrcode
  (package
    (name "python-pyqrcode")


@@ 17095,27 16739,6 @@ stdin/stdout/stderr.")
blocks or callables with two context managers and two decorators.")
    (license license:expat)))

(define-public python-timeout-decorator
  ;; TODO: Remove when python-requests-caches releses a fresh version dropping
  ;; it, see, <https://github.com/requests-cache/requests-cache/pull/1111>.
  (package
    (name "python-timeout-decorator")
    (version "0.5.0")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "timeout-decorator" version))
       (sha256
        (base32 "1mxk2qyydhzncm93z08kvj5ssxq3fr2n7pkrrji28nqwvdc2ybva"))))
    (build-system pyproject-build-system)
    (arguments (list #:tests? #f))
    (native-inputs (list python-setuptools python-wheel))
    (home-page "https://github.com/pnpnpn/timeout-decorator")
    (synopsis "Timeout decorator")
    (description "This package provides a decorator that raises an error
when an operation takes longer than expected.")
    (license license:expat)))

(define-public python-straight-plugin
  (package
    (name "python-straight-plugin")


@@ 17735,113 17358,6 @@ programming.  It provides standard programming abstractions such as as
tasks, sockets, files, locks, and queues.")
    (license license:bsd-3)))

(define-public python-tables
  (package
    (name "python-tables")
    (version "3.10.2")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "tables" version))
       (sha256
        (base32
         "0469jrkmp0qv8cmlqkizm3b8imyc97mk9pfn66ldpyl6f4m82i15"))
       (snippet '(begin
                   (use-modules (guix build utils))
                   ;; TODO: Unbundle.
                   ;; (delete-file-recursively "hdf5-blosc")
                   (delete-file-recursively "c-blosc")))))
    (build-system pyproject-build-system)
    (arguments
     (list
      #:phases
      #~(modify-phases %standard-phases
          (add-after 'unpack 'disable-tuning
            (lambda _
              (substitute* "setup.py"
                (("cpu_flags = .*")
                 "cpu_flags = ['sse2']\n"))))
          (add-after 'unpack 'fix-reference-to-blosc2
            (lambda* (#:key inputs #:allow-other-keys)
              (substitute* "tables/__init__.py"
                (("( +)os.path.join\\(current_dir, blosc2_lib_hardcoded\\),"
                  m indent)
                 (string-append indent
                                "\""
                                (search-input-file inputs "/lib/libblosc2.so")
                                "\",\n" m)))))
          (add-before 'build 'pre-build
            (lambda _
              (invoke "make" "distclean")       ;Regenerate C code with Cython
              (setenv "BLOSC2_DIR" #$(this-package-input "cblosc2"))
              (setenv "BLOSC_DIR" #$(this-package-input "c-blosc"))
              (setenv "BZIP2_DIR" #$(this-package-input "bzip2"))
              (setenv "HDF5_DIR" #$(this-package-input "hdf5"))
              (setenv "LZO_DIR" #$(this-package-input "lzo"))))
          (add-before 'check 'pre-check
            (lambda _
              (setenv "HOME" "/tmp")))
          (replace 'check
            (lambda* (#:key tests? #:allow-other-keys)
              (when tests?
                (with-directory-excursion "/tmp"
                  ;; Performing only a light (yet comprehensive) subset of the
                  ;; test suite.  If you want a more complete test, try
                  ;; passing the --heavy flag to this script (or set the
                  ;; 'heavy' parameter in case you are using tables.test()
                  ;; call).  The whole suite will take more than 4 hours to
                  ;; complete on a relatively modern CPU and around 512 MB of
                  ;; main memory.
                  (invoke "python" "-m" "tables.tests.test_all"))))))))
    (native-inputs
     (list pkg-config
           python-cython
           python-pytest
           python-setuptools
           python-sphinx))
    (inputs
     (list bzip2
           c-blosc
           c-blosc2
           hdf5
           lzo))
    (propagated-inputs
     (list python-blosc2
           python-numexpr
           python-numpy
           python-packaging
           python-py-cpuinfo
           python-typing-extensions))
    (home-page "https://www.pytables.org/")
    (synopsis "Hierarchical datasets for Python")
    (description "PyTables is a package for managing hierarchical datasets and
designed to efficiently cope with extremely large amounts of data.")
    (license license:bsd-3)))

(define-public python-tasklogger
  (package
    (name "python-tasklogger")
    (version "1.2.0")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "tasklogger" version))
       (sha256
        (base32 "1901mibcp6aiyjy8afnybrxnb0dkbdxlbvjqbr3gginlw7dr18xh"))))
    (build-system pyproject-build-system)
    (native-inputs
     (list python-pytest
           python-numpy
           python-setuptools))
    (propagated-inputs
     (list python-deprecated))
    (home-page "https://github.com/scottgigante/tasklogger")
    (synopsis "Extension to the core Python logging library")
    (description "This package provides an extension to the core Python
logging library for logging the beginning and completion of tasks and
subtasks.")
    (license license:gpl2)))

(define-public python-sniffio
  (package
    (name "python-sniffio")


@@ 18466,142 17982,6 @@ $ rm -rf /tmp/env
;; It may be removed after 2026-01-24.
(define-deprecated/public-alias python-pip-run-bootstrap python-pip-run)

(define-public python-tlsh
  (package
    (name "python-tlsh")
    (version "4.11.2")
    (home-page "https://github.com/trendmicro/tlsh")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference (url home-page) (commit version)))
       (file-name (git-file-name name version))
       (sha256
        (base32 "1gb5j73nw3nmx030rf8pm75rns5syxhv44zxr6i74kjicyly1i9w"))))
    (build-system pyproject-build-system)
    (arguments
     (list #:phases
           #~(modify-phases %standard-phases
               (add-before 'build 'configure
                 (lambda _
                   (invoke "cmake" ".")))      ;to generate tlsh_version.h
               (add-after 'configure 'chdir
                 (lambda _
                   (chdir "py_ext")))
               (replace 'check
                 (lambda* (#:key tests? #:allow-other-keys)
                   (when tests?
                     (with-directory-excursion "../Testing"
                       (invoke "./python_test.sh"))))))))
    (native-inputs (list cmake-minimal python-setuptools))
    (synopsis "Fuzzy matching library for Python")
    (description
     "Trend Micro Locality Sensitive Hash (TLSH) is a fuzzy matching library.
Given a byte stream with a minimum length of 256 bytes, TLSH generates a hash
value which can be used for similarity comparisons.  Similar objects have
similar hash values, which allows for the detection of similar objects by
comparing their hash values.  The byte stream should have a sufficient amount
of complexity; for example, a byte stream of identical bytes will not generate
a hash value.")
    (license license:asl2.0)))

(define-public python-termcolor
  (package
    (name "python-termcolor")
    (version "2.5.0")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "termcolor" version))
       (sha256
        (base32 "0vwaxyr2vk8gi7s1slq74nb0ssbb0wcn208ziqp48j3dv8kqv3cr"))))
    (build-system pyproject-build-system)
    (native-inputs
     (list python-hatch-vcs
           python-hatchling
           python-pytest
           python-pytest-cov))
    (home-page "https://pypi.org/project/termcolor/")
    (synopsis "ANSII Color formatting for terminal output")
    (description
     "This package provides ANSII Color formatting for output in terminals.")
    (license license:expat)))

(define-public python-termcolor-1
  (package
    (inherit python-termcolor)
    (version "1.1.0")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "termcolor" version))
       (sha256
        (base32
         "0fv1vq14rpqwgazxg4981904lfyp84mnammw7y046491cv76jv8x"))))
    ;; There are no tests
    (arguments (list #:tests? #false))
    (native-inputs
     (list python-setuptools
           python-wheel))))

(define-public python-terminaltables
  (package
    (name "python-terminaltables")
    (version "3.1.0")
    (source
      (origin
        (method git-fetch)
        (uri (git-reference
               (url "https://github.com/Robpol86/terminaltables")
               (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256 (base32 "1jlm7n6kxypbr8mvwpd7hf9hbfk0a002ad03wqgxlri4aw8pk39a"))))
    (build-system pyproject-build-system)
    ;; XXX: A lot of test fail with flaky behavior.
    (arguments (list #:tests? #f))
    (native-inputs
     (list python-colorclass
           python-colorama
           python-pytest
           python-setuptools
           python-termcolor))
    (home-page "https://github.com/Robpol86/terminaltables")
    (synopsis
     "Generate simple tables in terminals from a nested list of strings")
    (description
     "This package makes it easy to draw tables in terminal/console
applications from a list of lists of strings.  It supports multi-line rows.")
    (license license:expat)))

(define-public python-term-background
  (package
    (name "python-term-background")
    (version "1.0.2")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "term_background" version))
       (sha256
        (base32 "0p674silrwc3jncncmdnj1lr6pl2q5qbx0xi3mzjq9sgcs5vmp4n"))))
    (arguments
     (list
      #:phases
      '(modify-phases %standard-phases
         (add-after 'unpack 'fix-build
           (lambda _ (delete-file "setup.py"))))))
    (build-system pyproject-build-system)
    (native-inputs
     (list python-pytest
           python-setuptools
           python-setuptools-scm
           python-wrapper
           python-wheel))
    (home-page "http://github.com/rocky/shell-term-background")
    (synopsis "Determine if shell has a light or dark background")
    (description "This package determines if shell has a light or dark
background.")
    (license license:gpl2+)))

(define-public python-libarchive-c
  (package
    (name "python-libarchive-c")


@@ 19903,29 19283,6 @@ and dataclasses.")
@code{ArgumentParser} object.")
    (license license:asl2.0)))

(define-public python-texttable
  (package
    (name "python-texttable")
    (version "1.6.4")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
              (url "https://github.com/foutaise/texttable/")
              (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "1lcn76wx6fsj8d79gs985irkqz5qbwq1v9ji9jxsra6dbb643v5j"))))
    (build-system pyproject-build-system)
    (arguments (list #:test-flags #~(list "tests.py")))
    (native-inputs (list python-pytest python-setuptools))
    (home-page "https://github.com/foutaise/texttable/")
    (synopsis "Create simple ASCII tables in Python")
    (description
     "This package provides a Python module for creating simple ASCII
tables.")
    (license license:expat)))

(define-public python-atomicwrites
  (package
    (name "python-atomicwrites")


@@ 21801,58 21158,6 @@ attractive help output from click, formatted with rich, with minimal
customization required.")
    (license license:expat)))

(define-public python-textual
  (package
    (name "python-textual")
    (version "3.5.0")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url "https://github.com/Textualize/textual")
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256
               (base32
                "1sldkhy8phk9c7pln70dyb6aya7qpxb5niym9s91z144dv6ykgws"))))
    (build-system pyproject-build-system)
    (arguments
     (list #:test-flags
           ;; Snapshot tests require python-pytest-textual-snapshot which
           ;; in turn depends on python-textual.
           '(list "--ignore=tests/snapshot_tests/test_snapshots.py"
             "-k" (string-append
                   ;; Broken for unknown reason.
                   "not test_textual_env_var"
                   ;; Tests that require python-treesitter-languages.
                   " and not test_widget_construct"
                   " and not test_setting_builtin_language_via_constructor"
                   " and not test_setting_builtin_language_via_attribute"
                   " and not test_setting_language_to_none"
                   " and not test_setting_unknown_language"
                   " and not test_register_language"
                   " and not test_update_highlight_query"
                   " and not test_default_theme"
                   " and not test_setting_builtin_themes"
                   " and not test_setting_unknown_theme_raises_exception"
                   " and not test_registering_and_setting_theme"))))
    (propagated-inputs
     (list python-markdown-it-py
           python-platformdirs
           python-rich
           python-tree-sitter
           ;; python-tree-sitter-languages ; optional, not packed yet
           python-typing-extensions))
    (native-inputs
     (list python-poetry-core
           python-pytest
           python-pytest-asyncio
           python-pytest-xdist))
    (home-page "https://github.com/Textualize/textual")
    (synopsis "Build text user interfaces in Python")
    (description "Textual is a @acronym{TUI, Text User Interface} framework
for Python inspired by modern web development.")
    (license license:expat)))

(define-public python-magic
  (package
    (name "python-magic")


@@ 22150,79 21455,6 @@ a modular way, allowing you to extend your panel with your own code,
responding to click events and updating clock every second.")
    (license license:bsd-3)))

(define-public python-tblib
  (package
    (name "python-tblib")
    (version "3.1.0")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "tblib" version))
       (sha256
        (base32 "0lnnbicpxx774s29nkbic4rrqvy4rhxd8skx5pp6zxh7kwn4qh06"))))
    (build-system pyproject-build-system)
    (arguments
     (list
      ;; Don't run benchmark tests.
      #:test-flags #~(list "--ignore=tests/test_perf.py")
      #:phases
      #~(modify-phases %standard-phases
          (add-after 'unpack 'fix-pytest-config
            (lambda _
              (substitute* "pytest.ini"
                (("--benchmark-disable") "")))))))
    (native-inputs
     (list python-pytest
           python-setuptools))
    (home-page "https://github.com/ionelmc/python-tblib")
    (synopsis "Traceback serialization library")
    (description
     "Traceback serialization allows you to:

@enumerate
@item Pickle tracebacks and raise exceptions with pickled tracebacks in
different processes.  This allows better error handling when running code over
multiple processes (imagine multiprocessing, billiard, futures, celery etc).

@item Parse traceback strings and raise with the parsed tracebacks.
@end enumerate\n")
    (license license:bsd-3)))

(define-public python-tftpy
  (package
    (name "python-tftpy")
    (version "0.8.6")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/msoulier/tftpy")
             (commit version)))
       (file-name (git-file-name name version))
       (sha256
        (base32 "11cs52skmisg7rlmcxghmpcxfszcwmph6cvmfdn2p0ks6ckfy9q2"))))
    (build-system pyproject-build-system)
    (arguments
     (list
      #:test-backend #~'unittest
      #:test-flags #~(list "tests/test.py")
      #:phases
      #~(modify-phases %standard-phases
          (add-before 'check 'configure-tests
            (lambda* (#:key tests? #:allow-other-keys)
              (when tests?
                ;; The default DEBUG logging level is way too verbose.
                (substitute* "tests/test.py"
                  (("logging\\.DEBUG")
                   "logging.INFO"))))))))
    (native-inputs (list python-setuptools))
    (home-page "https://tftpy.sourceforge.net/")
    (synopsis "Python trivial file transfer protocol (TFTP) library")
    (description
     "TFTPy is a trivial file transfer protocol (TFTP) Python library.  It can
be used to act both as a TFTP client or TFTP server.")
    (license license:expat)))

(define-public python-greenlet
  (package
    (name "python-greenlet")


@@ 22604,29 21836,6 @@ network support library.")
It uses LR parsing and does extensive error checking.")
    (license license:bsd-3)))

(define-public python-tabulate
  (package
    (name "python-tabulate")
    (version "0.9.0")
    (source (origin
             (method url-fetch)
             (uri (pypi-uri "tabulate" version))
             (sha256
              (base32
               "0g4b0qnbw55igbpxfxzciqvb6w8ncw4gmcgyq0lyavcnylmv3580"))))
    (build-system pyproject-build-system)
    (native-inputs
     (list python-pytest
           python-setuptools-scm
           python-setuptools
           python-wheel))
    (home-page "https://github.com/astanin/python-tabulate")
    (synopsis "Pretty-print tabular data")
    (description
     "Tabulate is a library and command-line utility to pretty-print tabular
data in Python.")
    (license license:expat)))

(define-public python-kazoo
  (package
    (name "python-kazoo")


@@ 24816,27 24025,6 @@ Werman's implementation of the Earth Mover's Distance.")
JPEG2000 and GIF files in pure Python.")
    (license license:expat)))

(define-public python-termstyle
  (package
    (name "python-termstyle")
    (version "0.1.11")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "termstyle" version))
       (sha256
        (base32 "17wzkkcqy5zc0g68xlad3kcv66iw14d2pwqc0h9420gak0vbhx7g"))))
    (build-system pyproject-build-system)
    (arguments
     (list #:test-backend #~'custom
           #:test-flags #~(list "test3.py")))
    (native-inputs
     (list python-setuptools))
    (home-page "https://github.com/gfxmonk/termstyle")
    (synopsis "Console text coloring for Python")
    (description "This package provides console text coloring for Python.")
    (license license:bsd-3)))

(define-public python-argcomplete
  (package
    (name "python-argcomplete")


@@ 27394,59 26582,6 @@ definitions to simplify the use of C bindings.")
Angus Johnson's polygon clipping Clipper library (ver. 6.4.2).")
    (license license:expat)))

(define-public python-tempdir
  (package
    (name "python-tempdir")
    (version "0.7.1")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "tempdir" version))
       (sha256
        (base32 "13msyyxqbicr111a294x7fsqbkl6a31fyrqflx3q7k547gnq15k8"))))
    (build-system pyproject-build-system)
    (arguments (list #:tests? #f)) ; No tests.
    (native-inputs (list python-setuptools))
    (home-page "https://pypi.org/project/tempdir/")
    (synopsis "Python library for managing temporary directories")
    (description
     "This library manages temporary directories that are automatically
deleted with all their contents when they are no longer needed.  It is
particularly convenient for use in tests.")
    (license license:expat)))

(define-public python-tempora
  (package
    (name "python-tempora")
    (version "5.8.1")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "tempora" version))
       (sha256
        (base32 "1k9d6qmlp0i4v3d0dcqcsndvmng3lfdh4y0p8gwy9i8cg7ndkddb"))))
    (build-system pyproject-build-system)
    (arguments
     (list
      ;; Do not test the myproject.toml build as it tries to pull dependencies
      ;; from the Internet.
      #:test-flags #~(list "-k" "not project"
                           "tests")))
    (native-inputs
     (list python-freezegun
           python-pytest
           python-setuptools
           python-setuptools-scm
           python-tzdata))
    (propagated-inputs (list python-dateutil python-jaraco-functools))
    (home-page "https://github.com/jaraco/tempora")
    (synopsis "Python date and time objects and routines")
    (description "The @code{tempora} Python library contains miscellaneous
date and time related utilities and constants, routines for measuring,
profiling, and getting datetime-aware @acronym{UTC, Coordinated Universal
Time} values as well as an event scheduler.")
    (license license:expat)))

(define-public python-semver
  (package
    (name "python-semver")


@@ 31389,31 30524,6 @@ dedicated platform.  The tool proposes a unified interface for any format and
an upload option to send your work back to the platform.")
    (license license:gpl3+)))

(define-public python-titlecase
  (package
    (name "python-titlecase")
    (version "2.4.1")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "titlecase" version))
       (sha256
        (base32 "1x9myq3rlbw6wh946ncch8px7wyabhzacy2fjji13nmvrivs50vx"))))
    (build-system pyproject-build-system)
    (arguments
     (list
      #:test-backend #~'unittest))
    (native-inputs
     (list python-setuptools))
    (home-page "https://github.com/ppannuto/python-titlecase")
    (synopsis "Capitalize strings similar to book titles")
    (description
     "Python-Titlecase is a Python port of John Gruber's titlecase.pl.
It capitalizes (predominantly English) strings in a way that is similar to
book titles, using the New York Times Manual of Style to leave certain words
lowercase.")
    (license license:expat)))

(define-public python-pypng
  (package
    (name "python-pypng")


@@ 32955,33 32065,6 @@ a Python library to convert RELAX NG schemata in Compact syntax (rnc) to
equivalent schemata in the XML-based default RELAX NG syntax.")
    (license license:expat)))

(define-public python-telethon
  (package
    (name "python-telethon")
    (version "1.41.1")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
              (url "https://github.com/LonamiWebs/Telethon")
              (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "0rbzqbxsihqm2w1zrvaaafvzwyqqyjx49wfffxrnsr9m32giwzsp"))))
    (build-system pyproject-build-system)
    (native-inputs
     (list python-pytest
           python-pytest-asyncio-0.26
           python-pytest-trio
           python-setuptools))
    (propagated-inputs
     (list python-rsa python-pyaes))
    (home-page "https://docs.telethon.dev")
    (synopsis "Full-featured Telegram client library for Python 3")
    (description "This library is designed to make it easy to write Python
programs that can interact with Telegram.")
    (license license:expat)))

(define-public python-citeproc-py
  (package
    (name "python-citeproc-py")


@@ 35231,66 34314,6 @@ HTML/XML from a Python program in an intuitive, lightweight, customizable and
pythonic way.")
    (license license:expat)))

(define-public python-tablib
  (package
    (name "python-tablib")
    (version "3.9.0")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "tablib" version))
       (sha256
        (base32 "1qjzbpaln1grr5ngcm2apd5dxp0gcrwis5n60hg60d8gvf7bsshv"))))
    (build-system pyproject-build-system)
    (native-inputs
     (list python-pytest
           python-pytest-cov
           python-setuptools
           python-setuptools-scm))
    (inputs ;; [cli]
     (list python-tabulate))
    (propagated-inputs
     (list python-markuppy
           python-odfpy
           python-openpyxl
           python-pyyaml
           python-xlrd
           python-xlwt))
    (home-page "https://tablib.readthedocs.io")
    (synopsis "Format agnostic tabular data library")
    (description
     "@code{tablib} is a format-agnostic tabular dataset library,
written in Python.  Supported output formats are Excel (Sets + Books),
JSON (Sets + Books), YAML (Sets + Books), HTML (Sets), Jira (Sets),
TSV (Sets), ODS (Sets), CSV (Sets), and DBF (Sets).

@code{tablib} also supports Pandas DataFrames (Sets).  Anyhow, since pandas is
quite huge, this Guix package doesn't depend on pandas.  In case, just also
install @code{python-pandas}.")
    (license license:expat)))

(define-public python-taskgroup
  (package
    (name "python-taskgroup")
    (version "0.0.0a4")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "taskgroup" version))
       (sha256
        (base32 "170m7b59nxrhzs0nz6brj9brz4rzvw6k587ja0cnc9qy48nr027b"))))
    (build-system pyproject-build-system)
    (arguments
     (list #:tests? #f)) ; no tests in PyPI and Git checkout
    (native-inputs
     (list python-flit-core))
    (home-page "https://github.com/graingert/taskgroup")
    (synopsis "Backport of asyncio.TaskGroup, asyncio.Runner and asyncio.timeout")
    (description
     "This package provides a backport of @code{asyncio.TaskGroup},
@code{asyncio.Runner} and @code{asyncio.timeout}.")
    (license license:expat)))

(define-public python-csb43
  (package
    (name "python-csb43")


@@ 38084,6 37107,986 @@ instance in spelling correction, predictive typing, to help disabled people
write text fast, and for various text generation, statistics, and modeling tasks.")
    (license license:expat)))

(define-public python-tables
  (package
    (name "python-tables")
    (version "3.10.2")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "tables" version))
       (sha256
        (base32
         "0469jrkmp0qv8cmlqkizm3b8imyc97mk9pfn66ldpyl6f4m82i15"))
       (snippet '(begin
                   (use-modules (guix build utils))
                   ;; TODO: Unbundle.
                   ;; (delete-file-recursively "hdf5-blosc")
                   (delete-file-recursively "c-blosc")))))
    (build-system pyproject-build-system)
    (arguments
     (list
      #:phases
      #~(modify-phases %standard-phases
          (add-after 'unpack 'disable-tuning
            (lambda _
              (substitute* "setup.py"
                (("cpu_flags = .*")
                 "cpu_flags = ['sse2']\n"))))
          (add-after 'unpack 'fix-reference-to-blosc2
            (lambda* (#:key inputs #:allow-other-keys)
              (substitute* "tables/__init__.py"
                (("( +)os.path.join\\(current_dir, blosc2_lib_hardcoded\\),"
                  m indent)
                 (string-append indent
                                "\""
                                (search-input-file inputs "/lib/libblosc2.so")
                                "\",\n" m)))))
          (add-before 'build 'pre-build
            (lambda _
              (invoke "make" "distclean")       ;Regenerate C code with Cython
              (setenv "BLOSC2_DIR" #$(this-package-input "cblosc2"))
              (setenv "BLOSC_DIR" #$(this-package-input "c-blosc"))
              (setenv "BZIP2_DIR" #$(this-package-input "bzip2"))
              (setenv "HDF5_DIR" #$(this-package-input "hdf5"))
              (setenv "LZO_DIR" #$(this-package-input "lzo"))))
          (add-before 'check 'pre-check
            (lambda _
              (setenv "HOME" "/tmp")))
          (replace 'check
            (lambda* (#:key tests? #:allow-other-keys)
              (when tests?
                (with-directory-excursion "/tmp"
                  ;; Performing only a light (yet comprehensive) subset of the
                  ;; test suite.  If you want a more complete test, try
                  ;; passing the --heavy flag to this script (or set the
                  ;; 'heavy' parameter in case you are using tables.test()
                  ;; call).  The whole suite will take more than 4 hours to
                  ;; complete on a relatively modern CPU and around 512 MB of
                  ;; main memory.
                  (invoke "python" "-m" "tables.tests.test_all"))))))))
    (native-inputs
     (list pkg-config
           python-cython
           python-pytest
           python-setuptools
           python-sphinx))
    (inputs
     (list bzip2
           c-blosc
           c-blosc2
           hdf5
           lzo))
    (propagated-inputs
     (list python-blosc2
           python-numexpr
           python-numpy
           python-packaging
           python-py-cpuinfo
           python-typing-extensions))
    (home-page "https://www.pytables.org/")
    (synopsis "Hierarchical datasets for Python")
    (description "PyTables is a package for managing hierarchical datasets and
designed to efficiently cope with extremely large amounts of data.")
    (license license:bsd-3)))

(define-public python-tablib
  (package
    (name "python-tablib")
    (version "3.9.0")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "tablib" version))
       (sha256
        (base32 "1qjzbpaln1grr5ngcm2apd5dxp0gcrwis5n60hg60d8gvf7bsshv"))))
    (build-system pyproject-build-system)
    (native-inputs
     (list python-pytest
           python-pytest-cov
           python-setuptools
           python-setuptools-scm))
    (inputs ;; [cli]
     (list python-tabulate))
    (propagated-inputs
     (list python-markuppy
           python-odfpy
           python-openpyxl
           python-pyyaml
           python-xlrd
           python-xlwt))
    (home-page "https://tablib.readthedocs.io")
    (synopsis "Format agnostic tabular data library")
    (description
     "@code{tablib} is a format-agnostic tabular dataset library,
written in Python.  Supported output formats are Excel (Sets + Books),
JSON (Sets + Books), YAML (Sets + Books), HTML (Sets), Jira (Sets),
TSV (Sets), ODS (Sets), CSV (Sets), and DBF (Sets).

@code{tablib} also supports Pandas DataFrames (Sets).  Anyhow, since pandas is
quite huge, this Guix package doesn't depend on pandas.  In case, just also
install @code{python-pandas}.")
    (license license:expat)))

(define-public python-tabulate
  (package
    (name "python-tabulate")
    (version "0.9.0")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "tabulate" version))
       (sha256
        (base32 "0g4b0qnbw55igbpxfxzciqvb6w8ncw4gmcgyq0lyavcnylmv3580"))))
    (build-system pyproject-build-system)
    (native-inputs
     (list python-pytest
           python-setuptools-scm
           python-setuptools
           python-wheel))
    (home-page "https://github.com/astanin/python-tabulate")
    (synopsis "Pretty-print tabular data")
    (description
     "Tabulate is a library and command-line utility to pretty-print tabular
data in Python.")
    (license license:expat)))

(define-public python-takethetime
  (package
    (name "python-takethetime")
    (version "0.3.1")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "TakeTheTime" version))
       (sha256
        (base32 "1y9gzqb9l1f2smx8783ccjzjvby5mphshgrfks7s75mml59h9qyv"))))
    (build-system pyproject-build-system)
    (arguments
     (list #:tests? #f)) ; tests are time dependent and not provided in PyPI
    (native-inputs
     (list python-setuptools
           python-wheel))
    (home-page "https://github.com/ErikBjare/TakeTheTime")
    (synopsis "Timing chunks of code")
    (description
     "This package implements a functionality for time taking using context
managers.")
    (license license:expat)))

(define-public python-taskgroup
  (package
    (name "python-taskgroup")
    (version "0.0.0a4")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "taskgroup" version))
       (sha256
        (base32 "170m7b59nxrhzs0nz6brj9brz4rzvw6k587ja0cnc9qy48nr027b"))))
    (build-system pyproject-build-system)
    (arguments
     (list #:tests? #f)) ; no tests in PyPI and Git checkout
    (native-inputs
     (list python-flit-core))
    (home-page "https://github.com/graingert/taskgroup")
    (synopsis "Backport of asyncio.TaskGroup, asyncio.Runner and asyncio.timeout")
    (description
     "This package provides a backport of @code{asyncio.TaskGroup},
@code{asyncio.Runner} and @code{asyncio.timeout}.")
    (license license:expat)))

(define-public python-tasklogger
  (package
    (name "python-tasklogger")
    (version "1.2.0")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "tasklogger" version))
       (sha256
        (base32 "1901mibcp6aiyjy8afnybrxnb0dkbdxlbvjqbr3gginlw7dr18xh"))))
    (build-system pyproject-build-system)
    (native-inputs
     (list python-pytest
           python-numpy
           python-setuptools))
    (propagated-inputs
     (list python-deprecated))
    (home-page "https://github.com/scottgigante/tasklogger")
    (synopsis "Extension to the core Python logging library")
    (description "This package provides an extension to the core Python
logging library for logging the beginning and completion of tasks and
subtasks.")
    (license license:gpl2)))

(define-public python-tatsu
  (package
    (name "python-tatsu")
    (version "5.13.2")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
              (url "https://github.com/neogeny/TatSu")
              (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "0ppgi5r55iirzhnf988b32yvh8ly8lzxbg59y0zgqfaxbma50650"))))
    (build-system pyproject-build-system)
    (native-inputs
     (list python-pytest
           python-setuptools))
    (home-page "https://tatsu.readthedocs.io/en/stable/")
    (synopsis "PEG/Packrat Parser generator for Python")
    (description
     "TatSu (竜) takes a grammar in a variation of Extended Backus-Naur
Form (EBNF) as input, and outputs a memoizing Parsing Expression Grammar (PEG)
or Packrat parser in Python.")
    (license license:bsd-2)))

(define-public python-tblib
  (package
    (name "python-tblib")
    (version "3.1.0")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "tblib" version))
       (sha256
        (base32 "0lnnbicpxx774s29nkbic4rrqvy4rhxd8skx5pp6zxh7kwn4qh06"))))
    (build-system pyproject-build-system)
    (arguments
     (list
      ;; Don't run benchmark tests.
      #:test-flags #~(list "--ignore=tests/test_perf.py")
      #:phases
      #~(modify-phases %standard-phases
          (add-after 'unpack 'fix-pytest-config
            (lambda _
              (substitute* "pytest.ini"
                (("--benchmark-disable") "")))))))
    (native-inputs
     (list python-pytest
           python-setuptools))
    (home-page "https://github.com/ionelmc/python-tblib")
    (synopsis "Traceback serialization library")
    (description
     "Traceback serialization allows you to:

@enumerate
@item Pickle tracebacks and raise exceptions with pickled tracebacks in
different processes.  This allows better error handling when running code over
multiple processes (imagine multiprocessing, billiard, futures, celery etc).

@item Parse traceback strings and raise with the parsed tracebacks.
@end enumerate\n")
    (license license:bsd-3)))

(define-public python-telethon
  (package
    (name "python-telethon")
    (version "1.41.1")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
              (url "https://github.com/LonamiWebs/Telethon")
              (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "0rbzqbxsihqm2w1zrvaaafvzwyqqyjx49wfffxrnsr9m32giwzsp"))))
    (build-system pyproject-build-system)
    (native-inputs
     (list python-pytest
           python-pytest-asyncio-0.26
           python-pytest-trio
           python-setuptools))
    (propagated-inputs
     (list python-rsa python-pyaes))
    (home-page "https://docs.telethon.dev")
    (synopsis "Full-featured Telegram client library for Python 3")
    (description "This library is designed to make it easy to write Python
programs that can interact with Telegram.")
    (license license:expat)))

(define-public python-tempdir
  (package
    (name "python-tempdir")
    (version "0.7.1")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "tempdir" version))
       (sha256
        (base32 "13msyyxqbicr111a294x7fsqbkl6a31fyrqflx3q7k547gnq15k8"))))
    (build-system pyproject-build-system)
    (arguments (list #:tests? #f)) ; No tests.
    (native-inputs (list python-setuptools))
    (home-page "https://pypi.org/project/tempdir/")
    (synopsis "Python library for managing temporary directories")
    (description
     "This library manages temporary directories that are automatically
deleted with all their contents when they are no longer needed.  It is
particularly convenient for use in tests.")
    (license license:expat)))

(define-public python-tempora
  (package
    (name "python-tempora")
    (version "5.8.1")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "tempora" version))
       (sha256
        (base32 "1k9d6qmlp0i4v3d0dcqcsndvmng3lfdh4y0p8gwy9i8cg7ndkddb"))))
    (build-system pyproject-build-system)
    (arguments
     (list
      ;; Do not test the myproject.toml build as it tries to pull dependencies
      ;; from the Internet.
      #:test-flags #~(list "-k" "not project"
                           "tests")))
    (native-inputs
     (list python-freezegun
           python-pytest
           python-setuptools
           python-setuptools-scm
           python-tzdata))
    (propagated-inputs (list python-dateutil python-jaraco-functools))
    (home-page "https://github.com/jaraco/tempora")
    (synopsis "Python date and time objects and routines")
    (description
     "The @code{tempora} Python library contains miscellaneous date and time
related utilities and constants, routines for measuring, profiling, and
getting datetime-aware @acronym{UTC, Coordinated Universal Time} values as
well as an event scheduler.")
    (license license:expat)))

(define-public python-tenacity
  (package
    (name "python-tenacity")
    (version "9.0.0")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "tenacity" version))
       (sha256
        (base32 "0fyp421r038naskvyhj90hkq0az96477njad4rhs6annjz53fzw0"))))
    (build-system pyproject-build-system)
    (native-inputs
     (list python-pytest
           python-setuptools
           python-setuptools-scm
           python-tornado-6
           python-typeguard
           python-wheel))
    (home-page "https://github.com/jd/tenacity")
    (synopsis "Retrying library for python")
    (description
     "Tenacity is a general-purpose python library to simplify the task of
adding retry behavior to just about anything.")
    (license license:asl2.0)))

(define-public python-term-background
  (package
    (name "python-term-background")
    (version "1.0.2")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "term_background" version))
       (sha256
        (base32 "0p674silrwc3jncncmdnj1lr6pl2q5qbx0xi3mzjq9sgcs5vmp4n"))))
    (arguments
     (list
      #:phases
      '(modify-phases %standard-phases
         (add-after 'unpack 'fix-build
           (lambda _ (delete-file "setup.py"))))))
    (build-system pyproject-build-system)
    (native-inputs
     (list python-pytest
           python-setuptools
           python-setuptools-scm
           python-wrapper
           python-wheel))
    (home-page "http://github.com/rocky/shell-term-background")
    (synopsis "Determine if shell has a light or dark background")
    (description "This package determines if shell has a light or dark
background.")
    (license license:gpl2+)))

(define-public python-term-image
  (package
    (name "python-term-image")
    (version "0.7.2")
    (source
     (origin
       ;; We need the full repo to run the tests.
       (method git-fetch)
       (uri (git-reference
              (url "https://github.com/AnonymouX47/term-image")
              (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "1lsd5m0k5m99arkca2rzrrlln10c8ax6xfawqwjnspcbf8l3h3dq"))))
    (build-system pyproject-build-system)
    (arguments
     (list #:test-flags
           #~(list "tests"
                   ;; These tests require network access.
                   "-k" (string-append "not test_from_url"
                                       " and not test_source"
                                       " and not test_close"))
           #:phases
           #~(modify-phases %standard-phases
               (add-after 'unpack 'adjust-dependencies
                 (lambda _
                   (substitute* "setup.py"
                     (("pillow>=9.1,<11") "pillow>=9.1,<12")))))))
    (propagated-inputs (list python-pillow python-requests))
    (native-inputs
     (list python-pytest
           python-setuptools
           python-urwid))
    (home-page "https://github.com/AnonymouX47/term-image")
    (synopsis "Display images in the terminal")
    (description "term-image is a library and program to display images on
compatible terminals.

Features:
@enumerate
@item Multiple image formats (basically all formats supported by
@code{PIL.Image.open()})
@item Multiple image source types: PIL image instance, local file, URL
@item Multiple image render styles (with automatic support detection)
@item Support for multiple terminal graphics protocols, including Kitty
@item Transparency support (with multiple options)
@item Animated image support (including transparent ones)
@item Integration into various TUI / terminal-based output libraries
@item Terminal size awareness
@item Automatic and manual image sizing
@item Horizontal and vertical alignment
@item Automatic and manual font ratio adjustment (to preserve image aspect
ratio)
@end enumerate")
    (license license:expat)))

(define-public python-termcolor
  (package
    (name "python-termcolor")
    (version "2.5.0")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "termcolor" version))
       (sha256
        (base32 "0vwaxyr2vk8gi7s1slq74nb0ssbb0wcn208ziqp48j3dv8kqv3cr"))))
    (build-system pyproject-build-system)
    (native-inputs
     (list python-hatch-vcs
           python-hatchling
           python-pytest
           python-pytest-cov))
    (home-page "https://pypi.org/project/termcolor/")
    (synopsis "ANSII Color formatting for terminal output")
    (description
     "This package provides ANSII Color formatting for output in terminals.")
    (license license:expat)))

(define-public python-termcolor-1
  (package
    (inherit python-termcolor)
    (version "1.1.0")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "termcolor" version))
       (sha256
        (base32
         "0fv1vq14rpqwgazxg4981904lfyp84mnammw7y046491cv76jv8x"))))
    ;; There are no tests
    (arguments (list #:tests? #false))
    (native-inputs
     (list python-setuptools
           python-wheel))))

(define-public python-terminaltables
  (package
    (name "python-terminaltables")
    (version "3.1.0")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
              (url "https://github.com/Robpol86/terminaltables")
              (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256 (base32 "1jlm7n6kxypbr8mvwpd7hf9hbfk0a002ad03wqgxlri4aw8pk39a"))))
    (build-system pyproject-build-system)
    ;; XXX: A lot of test fail with flaky behavior.
    (arguments (list #:tests? #f))
    (native-inputs
     (list python-colorclass
           python-colorama
           python-pytest
           python-setuptools
           python-termcolor))
    (home-page "https://github.com/Robpol86/terminaltables")
    (synopsis
     "Generate simple tables in terminals from a nested list of strings")
    (description
     "This package makes it easy to draw tables in terminal/console
applications from a list of lists of strings.  It supports multi-line rows.")
    (license license:expat)))

(define-public python-termstyle
  (package
    (name "python-termstyle")
    (version "0.1.11")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "termstyle" version))
       (sha256
        (base32 "17wzkkcqy5zc0g68xlad3kcv66iw14d2pwqc0h9420gak0vbhx7g"))))
    (build-system pyproject-build-system)
    (arguments
     (list #:test-backend #~'custom
           #:test-flags #~(list "test3.py")))
    (native-inputs
     (list python-setuptools))
    (home-page "https://github.com/gfxmonk/termstyle")
    (synopsis "Console text coloring for Python")
    (description "This package provides console text coloring for Python.")
    (license license:bsd-3)))

(define-public python-text-unidecode
  (package
    (name "python-text-unidecode")
    (version "1.3")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "text-unidecode" version))
       (sha256
        (base32 "14xb99fdv52j21dsljgsbmbaqv10ps4b453p229r29sdn4xn1mms"))))
    (build-system pyproject-build-system)
    (native-inputs
     (list python-pytest
           python-setuptools))
    (home-page "https://github.com/kmike/text-unidecode/")
    (synopsis "Decode Unicode data")
    (description
     "@code{text-unidecode} is a basic Python port of the @code{Text::Unidecode}
Perl library.  It can create ASCII representations of Unicode data.  In general
users should prefer the @code{python-unidecode} package which offers better
memory usage and transliteration quality.")
    ;; The user can choose either license.
    (license (list license:clarified-artistic license:gpl2+))))

(define-public python-textdistance
  (package
    (name "python-textdistance")
    (version "4.6.3")
    (source
     (origin
       ;; There are no tests in the PyPI tarball.
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/life4/textdistance")
             (commit version)))
       (file-name (git-file-name name version))
       (sha256
        (base32 "1qaplikab46p38jqr93bxd26vvxcnvib15fjxmmp4cbsiy5196sg"))))
    (build-system pyproject-build-system)
    (arguments
     (list
      #:test-flags
      #~(list "--numprocesses" (number->string (min 4 (parallel-job-count))))))
    (native-inputs
     (list python-numpy
           python-pytest
           python-pytest-xdist
           python-setuptools
           python-wheel))
    (propagated-inputs
     (list python-jellyfish
           python-distance
           python-levenshtein
           python-pylev
           python-pyxdameraulevenshtein
           python-rapidfuzz))
    (home-page "https://github.com/life4/textdistance")
    (synopsis "Compute distance between the two texts")
    (description "@code{textdistance} is a pure Python library for comparing
distance between two or more sequences by many algorithms.")
    (license license:expat)))

(define-public python-textparser
  (package
    (name "python-textparser")
    (version "0.24.0")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "textparser" version))
       (sha256
        (base32 "0dc3aqbzh0x13i6cmr73q777wv8nxyk3p0kdnynh5l59bbkhixsn"))))
    (build-system pyproject-build-system)
    (arguments
     (list #:test-backend #~'unittest))
    (native-inputs (list python-setuptools))
    (home-page "https://github.com/eerimoq/textparser")
    (synopsis "Fast text parser for Python")
    (description "This library provides a text parser written in the Python
language.  It aims to be fast.")
    (license license:expat)))

(define-public python-texttable
  (package
    (name "python-texttable")
    (version "1.6.4")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
              (url "https://github.com/foutaise/texttable/")
              (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "1lcn76wx6fsj8d79gs985irkqz5qbwq1v9ji9jxsra6dbb643v5j"))))
    (build-system pyproject-build-system)
    (arguments (list #:test-flags #~(list "tests.py")))
    (native-inputs (list python-pytest python-setuptools))
    (home-page "https://github.com/foutaise/texttable/")
    (synopsis "Create simple ASCII tables in Python")
    (description
     "This package provides a Python module for creating simple ASCII
tables.")
    (license license:expat)))

(define-public python-textual
  (package
    (name "python-textual")
    (version "3.5.0")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
              (url "https://github.com/Textualize/textual")
              (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "1sldkhy8phk9c7pln70dyb6aya7qpxb5niym9s91z144dv6ykgws"))))
    (build-system pyproject-build-system)
    (arguments
     (list #:test-flags
           ;; Snapshot tests require python-pytest-textual-snapshot which
           ;; in turn depends on python-textual.
           '(list "--ignore=tests/snapshot_tests/test_snapshots.py"
             "-k" (string-append
                   ;; Broken for unknown reason.
                   "not test_textual_env_var"
                   ;; Tests that require python-treesitter-languages.
                   " and not test_widget_construct"
                   " and not test_setting_builtin_language_via_constructor"
                   " and not test_setting_builtin_language_via_attribute"
                   " and not test_setting_language_to_none"
                   " and not test_setting_unknown_language"
                   " and not test_register_language"
                   " and not test_update_highlight_query"
                   " and not test_default_theme"
                   " and not test_setting_builtin_themes"
                   " and not test_setting_unknown_theme_raises_exception"
                   " and not test_registering_and_setting_theme"))))
    (propagated-inputs
     (list python-markdown-it-py
           python-platformdirs
           python-rich
           python-tree-sitter
           ;; python-tree-sitter-languages ; optional, not packed yet
           python-typing-extensions))
    (native-inputs
     (list python-poetry-core
           python-pytest
           python-pytest-asyncio
           python-pytest-xdist))
    (home-page "https://github.com/Textualize/textual")
    (synopsis "Build text user interfaces in Python")
    (description "Textual is a @acronym{TUI, Text User Interface} framework
for Python inspired by modern web development.")
    (license license:expat)))

(define-public python-tftpy
  (package
    (name "python-tftpy")
    (version "0.8.6")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
              (url "https://github.com/msoulier/tftpy")
              (commit version)))
       (file-name (git-file-name name version))
       (sha256
        (base32 "11cs52skmisg7rlmcxghmpcxfszcwmph6cvmfdn2p0ks6ckfy9q2"))))
    (build-system pyproject-build-system)
    (arguments
     (list
      #:test-backend #~'unittest
      #:test-flags #~(list "tests/test.py")
      #:phases
      #~(modify-phases %standard-phases
          (add-before 'check 'configure-tests
            (lambda* (#:key tests? #:allow-other-keys)
              (when tests?
                ;; The default DEBUG logging level is way too verbose.
                (substitute* "tests/test.py"
                  (("logging\\.DEBUG")
                   "logging.INFO"))))))))
    (native-inputs (list python-setuptools))
    (home-page "https://tftpy.sourceforge.net/")
    (synopsis "Python trivial file transfer protocol (TFTP) library")
    (description
     "TFTPy is a trivial file transfer protocol (TFTP) Python library.  It can
be used to act both as a TFTP client or TFTP server.")
    (license license:expat)))

(define-public python-three-merge
  (package
    (name "python-three-merge")
    (version "0.1.1")
    (source
     (origin
       ;; There are no tests in the PyPI tarball.
       (method git-fetch)
       (uri (git-reference
              (url "https://github.com/spyder-ide/three-merge")
              (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "1fw28swh6jq4myr09j7gv68l241b8vwg470ak5xv0x4xwh2a1m86"))))
    (build-system pyproject-build-system)
    (propagated-inputs
     (list python-diff-match-patch))
    (native-inputs
     (list python-pytest python-setuptools python-wheel))
    (home-page "https://github.com/spyder-ide/three-merge")
    (synopsis "Library for merging two strings with respect to a base one")
    (description
     "This package provides a Python library to perform a 3-way merge between
strings, based on @code{diff-match-patch}.  This library performs merges at a
character level, as opposed to most VCS systems, which opt for a line-based
approach.")
    (license license:expat)))

(define-public python-throttler
  (package
    (name "python-throttler")
    (version "1.2.2")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
              (url "https://github.com/uburuntu/throttler")
              (commit (string-append "v" version))))
       (sha256
        (base32 "1gn21x0zkm7rr7qijlz7nvw7z0mm1j2r0r2lslg7wln1z36gjkbw"))))
    (build-system pyproject-build-system)
    (native-inputs
     (list python-aiohttp
           python-codecov
           python-flake8
           python-pytest
           python-pytest-asyncio
           python-pytest-cov
           python-setuptools
           python-wheel))
    (home-page "https://github.com/uburuntu/throttler")
    (synopsis "Throttling with asyncio support")
    (description
     "This is a Python package for easy throttling with asyncio support.")
    (license license:expat)))

(define-public python-tifffile
  (package
    (name "python-tifffile")
    (version "2025.10.4")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "tifffile" version))
       (sha256
        (base32 "0f1ybmr2jz19gjg92p9vz3qib49m0x4ipxvrvjyfa6r1mcb7qhrf"))))
    (build-system pyproject-build-system)
    ;; Tests require lfdfiles, which depends on tifffile
    (arguments (list #:tests? #f))
    (propagated-inputs
     (list python-numpy))
    (native-inputs
     (list python-setuptools))
    (home-page "https://www.lfd.uci.edu/~gohlke/")
    (synopsis "Read and write TIFF(r) files")
    (description
     "This package lets you read image and metadata from many bio-scientific
formats such as plain TIFF, BigTIFF, OME-TIFF, STK, LSM, SGI,NIH, ImageJ,
MicroManager, MD GEL, and FluoView files.  It also lets you write numpy arrays
to TIFF, BigTIFF, and ImageJ hyperstack compatible files.")
    (license license:bsd-3)))

(define-public python-tifffile-for-dask-image
  ;; It's for python-dask-image@2024.5.3, remove when no longer required.
  (hidden-package
   (package
     (inherit python-tifffile)
     (name "python-tifffile")
     (version "2023.12.9")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "tifffile" version))
        (sha256
         (base32 "1f6d8qdlq0zlksfdhp1mhj9icpwhw4cz47r4i80m6r0a328xmlcx")))))))

(define-public python-tiktoken
  (package
    (name "python-tiktoken")
    (version "0.9.0")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "tiktoken" version))
       (sha256
        (base32 "0p9cg6n8mzdi4lbbwxrrp26chy5hr14bqmzr3w74kq1qm6k5qanh"))))
    (build-system cargo-build-system)
    (arguments
     (list
      #:install-source? #false
      #:imported-modules
      (append %pyproject-build-system-modules
              %cargo-build-system-modules)
      #:modules
      '((guix build cargo-build-system)
        ((guix build pyproject-build-system) #:prefix py:)
        (guix build utils))
      #:phases
      #~(modify-phases %standard-phases
          (replace 'build
            (assoc-ref py:%standard-phases 'build))
          (add-after 'install 'wrap
            (lambda _
              ;; Collection of python- and pyproject-build-system phases
              ;; between 'install and 'check.
              (assoc-ref py:%standard-phases 'add-install-to-pythonpath)
              (assoc-ref py:%standard-phases 'add-install-to-path)
              (assoc-ref py:%standard-phases 'wrap)
              (assoc-ref py:%standard-phases 'create-entrypoints)
              (assoc-ref py:%standard-phases 'compile-bytecode)))
          (replace 'install
            (assoc-ref py:%standard-phases 'install)))))
    (propagated-inputs (list python-regex python-requests))
    (inputs (cargo-inputs 'python-tiktoken))
    (native-inputs
     (list python-setuptools
           python-setuptools-rust
           python-wheel
           python-wrapper))
    (home-page "https://github.com/openai/tiktoken/")
    (synopsis "Fast BPE tokeniser for use with OpenAI's models")
    (description
     "Tiktoken is a fast @dfn{byte pair encoding} (BPE) tokeniser for use with
@code{OpenAI's} models.")
    (license license:expat)))

(define-public python-timeout-decorator
  ;; TODO: Remove when python-requests-caches releses a fresh version dropping
  ;; it, see, <https://github.com/requests-cache/requests-cache/pull/1111>.
  (package
    (name "python-timeout-decorator")
    (version "0.5.0")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "timeout-decorator" version))
       (sha256
        (base32 "1mxk2qyydhzncm93z08kvj5ssxq3fr2n7pkrrji28nqwvdc2ybva"))))
    (build-system pyproject-build-system)
    (arguments (list #:tests? #f))
    (native-inputs (list python-setuptools python-wheel))
    (home-page "https://github.com/pnpnpn/timeout-decorator")
    (synopsis "Timeout decorator")
    (description "This package provides a decorator that raises an error
when an operation takes longer than expected.")
    (license license:expat)))

(define-public python-titlecase
  (package
    (name "python-titlecase")
    (version "2.4.1")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "titlecase" version))
       (sha256
        (base32 "1x9myq3rlbw6wh946ncch8px7wyabhzacy2fjji13nmvrivs50vx"))))
    (build-system pyproject-build-system)
    (arguments
     (list
      #:test-backend #~'unittest))
    (native-inputs
     (list python-setuptools))
    (home-page "https://github.com/ppannuto/python-titlecase")
    (synopsis "Capitalize strings similar to book titles")
    (description
     "Python-Titlecase is a Python port of John Gruber's titlecase.pl.
It capitalizes (predominantly English) strings in a way that is similar to
book titles, using the New York Times Manual of Style to leave certain words
lowercase.")
    (license license:expat)))

(define-public python-tlsh
  (package
    (name "python-tlsh")
    (version "4.11.2")
    (home-page "https://github.com/trendmicro/tlsh")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference (url home-page) (commit version)))
       (file-name (git-file-name name version))
       (sha256
        (base32 "1gb5j73nw3nmx030rf8pm75rns5syxhv44zxr6i74kjicyly1i9w"))))
    (build-system pyproject-build-system)
    (arguments
     (list
      #:phases
      #~(modify-phases %standard-phases
          (add-before 'build 'configure
            (lambda _
              (invoke "cmake" ".")))      ;to generate tlsh_version.h
          (add-after 'configure 'chdir
            (lambda _
              (chdir "py_ext")))
          (replace 'check
            (lambda* (#:key tests? #:allow-other-keys)
              (when tests?
                (with-directory-excursion "../Testing"
                  (invoke "./python_test.sh"))))))))
    (native-inputs (list cmake-minimal python-setuptools))
    (synopsis "Fuzzy matching library for Python")
    (description
     "Trend Micro Locality Sensitive Hash (TLSH) is a fuzzy matching library.
Given a byte stream with a minimum length of 256 bytes, TLSH generates a hash
value which can be used for similarity comparisons.  Similar objects have
similar hash values, which allows for the detection of similar objects by
comparing their hash values.  The byte stream should have a sufficient amount
of complexity; for example, a byte stream of identical bytes will not generate
a hash value.")
    (license license:asl2.0)))

(define-public python-typeapi
  (package
    (name "python-typeapi")