diff options
Diffstat (limited to 'gnu/packages/python-xyz.scm')
| -rw-r--r-- | gnu/packages/python-xyz.scm | 4740 |
1 files changed, 2355 insertions, 2385 deletions
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index b5aa148e14..fdfa56ed22 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org> -;;; Copyright © 2013-2024 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013-2025 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2014, 2015, 2016, 2019, 2023 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014, 2017, 2021, 2022, 2024 Eric Bavier <bavier@posteo.net> @@ -1472,6 +1472,29 @@ cache directory, to avoid modifying the host's environment, and further activated using a set of environment variables.") (license (list license:expat license:asl2.0)))) +(define-public python-pypydispatcher + (package + (name "python-pypydispatcher") + (version "2.1.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "PyPyDispatcher" version)) + (sha256 + (base32 "1wihj7xgq5fk91li0id6a311lyrnmq7ch8rbr9dm7lprrzgwbgmn")))) + (build-system pyproject-build-system) + (native-inputs + (list python-pytest + python-setuptools + python-setuptools-scm)) + (home-page "https://github.com/scrapy/pypydispatcher") + (synopsis "Multi-producer-multi-consumer signal dispatching mechanism") + (description + "This package implements a functionality of pulti-producer-multi-consumer +signal dispatching mechanism. It's a fork of +http://pydispatcher.sourceforge.net/ with PyPy support.") + (license license:bsd-3))) + (define-public python-pyte (package (name "python-pyte") @@ -1815,150 +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.1") - (source - (origin - (method git-fetch) ; no tests in PyPI releasefor tests - (uri (git-reference - (url "https://github.com/neogeny/TatSu") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0pdq9d45vbp7j600ig4k21mv2wipvmz05dji91x7kifhzfl5i6w9")))) - (build-system pyproject-build-system) - (native-inputs - (list python-pytest - python-setuptools - python-wheel)) - (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") - (version "0.3.4") - (source - (origin - (method url-fetch) - (uri (pypi-uri "trubar" version)) - (sha256 - (base32 "149l5wid1b41gmfzsrhapcigcbcsflviz8p1pfa937443fxw1dkd")))) - (build-system pyproject-build-system) - (arguments - (list - #:test-flags - #~(list "-k" (string-join - ;; AttributeError: module 'libcst' has no attribute - ;; 'FlattenSentinel'. Did you mean: 'MaybeSentinel'? - (list "not test_import_from_future" - "test_inport_after_docstring" - ;; AssertionError: Items in the second set but not - ;; the first - "test_walk_files") - " and not ")))) - (native-inputs - (list python-pytest - python-setuptools - python-wheel)) - (propagated-inputs - (list python-libcst - python-pyyaml)) - (home-page "https://github.com/janezd/trubar") - (synopsis "Utility for translation of Python sources") - (description - "This package provides a tool for translation and localization of Python -programs via modification of source files. Trubar supports f-strings and does -not require any changes to the original source code, such as marking strings -for translation.") - (license license:expat))) - (define-public python-jaconv (package (name "python-jaconv") @@ -2184,7 +2063,7 @@ easy logging and rotating to a console or a file.") (build-system pyproject-build-system) (native-inputs (list python-brotli - python-cython-3 + python-cython python-pytest python-setuptools python-wheel)) @@ -2618,6 +2497,39 @@ decorators, including variants of the Python standard library's (sha256 (base32 "1m20wqipm50zvcgs3z2xksb96qwx1xc1jbhvaxcnglkmj6m1qrhs")))))) +(define-public python-colorclass + (package + (name "python-colorclass") + (version "2.2.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/matthewdeanmartin/colorclass") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1ylj167lfh8yzms30qrkiznv6737hdxra5lk8mhijcjm3hi1cl9l")))) + (build-system pyproject-build-system) + (arguments + (list + #:test-flags + #~(list "-k" "not test_piped") ; Unclear why this test fails. + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'use-poetry-core + (lambda _ + ;; Patch to use the core poetry API. + (substitute* "pyproject.toml" + (("poetry.masonry.api") "poetry.core.masonry.api"))))))) + (native-inputs (list python-poetry-core python-pytest)) + (home-page "https://github.com/matthewdeanmartin/colorclass") + (synopsis "Colorful console applications with Python") + (description + "This package provides an ANSI color text library for Python. It +provides automatic coloring for dark or light terminals.") + (license license:expat))) + (define-public python-colorcet (package (name "python-colorcet") @@ -3375,73 +3287,6 @@ commits.") generator MkDocs.") (license license:expat))) -(define-public python-skranger - (package - (name "python-skranger") - (version "0.8.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/crflynn/skranger") - (commit version) - (recursive? #true))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0njy4xbc98l295k92nyk93njv1348vd1il5pdyrnk8nnzc2anzf0")))) - (build-system pyproject-build-system) - (arguments - (list - #:modules '((guix build pyproject-build-system) - (guix build utils) - (ice-9 match)) - #:test-flags - ;; "from sklearn.datasets import load_boston" fails because it has been - ;; removed from scikit-learn since version 1.2. - '(list "--ignore=tests/conftest.py" - "--ignore=tests/test_tools.py" - "--ignore=tests/tree/test_regressor.py" - "--ignore=tests/ensemble/test_regressor.py" - ;; All tests fail with error: AttributeError: 'super' object has - ;; no attribute '__sklearn_tags__' - "--ignore=tests/tree/test_classifier.py" - "--ignore=tests/ensemble/test_classifier.py") - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'fix-tests - (lambda _ - (substitute* "tests/conftest.py" - (("from sklearn.datasets import load_boston") "") - (("^_boston_X.*") "_boston_X, _boston_Y = (True, True)\n")))) - (add-before 'check 'build-extensions - (lambda _ - ;; Cython extensions have to be built before running the tests. - (invoke "python" "buildpre.py") - (invoke "python" "build.py" "build_ext" "--inplace") - (let ((site (string-append #$output "/lib/python" - #$(version-major+minor - (package-version python)) - "/site-packages/skranger")) - (lib (match (find-files "build" "\\.so") - ((the-lib) the-lib) - (_ (error "could not find .so"))))) - (mkdir-p site) - (install-file lib site))))))) - (propagated-inputs (list python-scikit-learn)) - (native-inputs - (list python-cython - python-matplotlib - python-pandas - python-poetry-core - python-setuptools - python-wheel - python-pytest)) - (home-page "https://github.com/crflynn/skranger") - (synopsis "Python bindings for C++ ranger random forests") - (description "This package provides scikit-learn compatible Python -bindings to the C++ random forest implementation, ranger, using Cython.") - (license license:gpl3+))) - (define-public python-nanobind (package (name "python-nanobind") @@ -3576,31 +3421,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") @@ -4690,8 +4510,8 @@ which is a fork of @url{http://hdfeos.org/software/pyhdf.php,pyhdf}.") ;; Version 0.9.x was called python-hdf4 in PyPI because at that time upstream ;; didn't have access to the pyhdf package in PyPI. For version 0.10.0 and ;; onward, please install pyhdf instead of python-hdf4. -(define-public python-hdf4 - (deprecated-package "python-hdf4" python-pyhdf)) +(define-deprecated-package python-hdf4 + python-pyhdf) (define-public python-h5netcdf (package @@ -5069,7 +4889,7 @@ of the netcdf4 package before.") (setenv "NO_CDL" "1") (invoke "python" "run_all.py")))))))) (native-inputs - (list python-cython-3 + (list python-cython python-setuptools python-wheel)) (propagated-inputs @@ -5424,24 +5244,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.23.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "textparser" version)) - (sha256 - (base32 - "0w5lyhrsvzs5a9q1l3sjgxgljrvd3ybf796w93kc39wayzvd02gh")))) - (build-system python-build-system) - (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>, @@ -7746,6 +7548,35 @@ you traverse a schema like paths and access a schema on demand with separate dereferencing accessor layer.") (license license:asl2.0))) +(define-public python-jsonschema-objects + (package + (name "python-jsonschema-objects") + (version "0.5.7") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/cwacek/python-jsonschema-objects/") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0p3m0fbj25brhfma4bl47xjq6x4ay14yx284qwrki96dwd6v46xd")))) + (build-system pyproject-build-system) + (native-inputs + (list python-pytest + python-pytest-mock + python-setuptools)) + (propagated-inputs + (list python-inflection + python-jsonschema + python-markdown)) + (home-page "http://python-jsonschema-objects.readthedocs.org/") + (synopsis "Automatic Python binding generation from JSON schemas") + (description + "This package provides an automatic class-based binding to JSON +Schemas for use in python.") + (license license:expat))) + (define-public python-jsonschema-specifications (package (name "python-jsonschema-specifications") @@ -7911,34 +7742,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 python-build-system) - (arguments - '(#:phases (modify-phases %standard-phases - (replace 'check - (lambda _ - (invoke "pytest" "-vv")))))) - (native-inputs - (list python-pytest)) - (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") @@ -8077,7 +7880,7 @@ environments and back.") (base32 "0gmwggzm0j0iprx074g5hah91y2f68sfhhldq0f8crddj7ndk16m")))) (build-system pyproject-build-system) (native-inputs - (list python-cython-3 + (list python-cython python-pytest python-setuptools python-wheel)) @@ -9794,8 +9597,8 @@ which can produce feeds in RSS 2.0, RSS 0.91, and Atom formats.") "This package provides a JSON RPC 2.0 server library for Python.") (license license:expat))) -(define-public python-jsonrpc-server - (deprecated-package "python-jsonrpc-server" python-lsp-jsonrpc)) +(define-deprecated-package python-jsonrpc-server + python-lsp-jsonrpc) (define-public python-pydantic (package @@ -10134,8 +9937,8 @@ This tool is used in text editing environments to provide a complete and integrated feature-set for programming Python effectively.") (license license:expat))) -(define-public python-language-server - (deprecated-package "python-language-server" python-lsp-server)) +(define-deprecated-package python-language-server + python-lsp-server) (define-public python-black (package @@ -10423,7 +10226,8 @@ writing C extensions for Python as easy as Python itself.") ;; time of the test suite. (setenv "CFLAGS" "-O0")))))))) -(define-public python-cython-3 python-cython) +;; It may be removed after 2026-01-24. +(define-deprecated/public-alias python-cython-3 python-cython) ;; NOTE: when upgrading numpy please make sure that python-numba, ;; python-pandas and python-scipy still build, as these three packages are @@ -11443,7 +11247,7 @@ convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc. (("build_inplace=False") "build_inplace=True"))))))) (native-inputs (list python-covdefaults - python-cython-3 + python-cython python-expandvars python-pytest python-pytest-cov @@ -12485,27 +12289,23 @@ a general image processing tool.") (define-public python-pillow-heif (package (name "python-pillow-heif") - (version "0.22.0") + (version "1.1.1") (source (origin (method url-fetch) (uri (pypi-uri "pillow_heif" version)) (sha256 - (base32 "16mkap63d14f69105b3bm8pi64fvpdznncgn48vhgls0jf977m31")))) + (base32 "1pkbkg88jg6f24xvbg95aq8dm8fa8ffz7zy4rq262m98i658q3pn")))) (build-system pyproject-build-system) (inputs (list libheif)) (propagated-inputs (list python-pillow)) (native-inputs (list opencv ; for opencv-python - python-coverage python-defusedxml python-numpy python-packaging - python-pre-commit - python-pylint python-pympler python-pytest - python-setuptools - python-wheel)) + python-setuptools)) (home-page "https://github.com/bigcat88/pillow_heif") (synopsis "Python interface for libheif library") (description "This package provides Python bindings for the libheif library @@ -12740,96 +12540,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") @@ -12965,50 +12675,52 @@ that requires its specific capabilities.") (define-public python-ffmpeg-python ;; The latest release (0.2.0) is old and its test suite crashs on Python 3.10. - (let ((commit "df129c7ba30aaa9ffffb81a48f53aa7253b0b4e6") (revision "0")) - (package - (name "python-ffmpeg-python") - (version (git-version "0.2.0" revision commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/kkroening/ffmpeg-python.git") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1zj4ac37n4igfj21zy405mdlvbpv6jyb12wfpszf8zkhhj2qby4c")))) - (build-system python-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'hardcode-ffmpeg - (lambda* (#:key inputs #:allow-other-keys) - (define ffmpeg (search-input-file inputs "bin/ffmpeg")) + (package + (name "python-ffmpeg-python") + (properties '((commit . "df129c7ba30aaa9ffffb81a48f53aa7253b0b4e6") + (revision . "0"))) + (version (git-version "0.2.0" + (assoc-ref properties 'revision) + (assoc-ref properties 'commit))) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/kkroening/ffmpeg-python.git") + (commit (assoc-ref properties 'commit)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1zj4ac37n4igfj21zy405mdlvbpv6jyb12wfpszf8zkhhj2qby4c")))) + (build-system pyproject-build-system) + (arguments + (list + #:test-flags + #~(list "-k" "not test_pipe and not test__probe") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'hardcode-ffmpeg + (lambda* (#:key inputs #:allow-other-keys) + (let ((ffmpeg (search-input-file inputs "bin/ffmpeg"))) (substitute* "ffmpeg/_run.py" (("cmd='ffmpeg'") (string-append "cmd='" ffmpeg "'"))) (substitute* "ffmpeg/tests/test_ffmpeg.py" (("out_file.compile\\(\\) == \\['ffmpeg'") - (string-append "out_file.compile() == ['" ffmpeg "'"))))) - ;; Some tests fail with ffmpeg 5+ - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "pytest" "-vv" - "-k" "not test_pipe and not test__probe"))))))) - (inputs (list ffmpeg)) - (propagated-inputs (list python-future)) - (native-inputs (list python-future python-numpy python-pytest - python-pytest-mock python-pytest-runner)) - (home-page "https://github.com/kkroening/ffmpeg-python") - (synopsis "Python bindings for FFmpeg with complex filtering support") - (description - "ffmpeg-python allows you to write FFmpeg filtergraphs in familiar + (format #f "out_file.compile() == [~s" ffmpeg))))))))) + (inputs (list ffmpeg)) + (propagated-inputs (list python-future)) + (native-inputs (list python-future + python-numpy + python-pytest + python-pytest-mock + python-setuptools)) + (home-page "https://github.com/kkroening/ffmpeg-python") + (synopsis "Python bindings for FFmpeg with complex filtering support") + (description + "ffmpeg-python allows you to write FFmpeg filtergraphs in familiar Python terms, taking care of running ffmpeg with the correct command-line arguments. It handles arbitrarily large (directed-acyclic) signal graphs.") - (license license:asl2.0)))) + (license license:asl2.0))) (define-public python-imageio-ffmpeg (package @@ -13253,7 +12965,7 @@ a front-end for C compilers or analysis tools.") (list meson ninja pkg-config - python-cython-3 + python-cython python-meson-python python-numpy python-pytest)) @@ -13358,23 +13070,23 @@ all of your favorite programs.") (define-public python-pywinrm (package (name "python-pywinrm") - (version "0.4.1") + (version "0.5.0") (source (origin - (method url-fetch) - (uri (pypi-uri "pywinrm" version)) + (method git-fetch) + (uri (git-reference + (url "https://github.com/diyan/pywinrm/") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 - (base32 - "10gabhhg3rgacd5ahmi2r128z99fzbrbx6mz1nnq0dxmhmn5rpjf")))) - (build-system python-build-system) + (base32 "0jp7rps6zg5b6n98lfkwbhv72982sxxnqc4v4i6hjlq1ycjmmb8r")))) + (build-system pyproject-build-system) (propagated-inputs - (list python-six python-requests_ntlm python-xmltodict - python-kerberos)) + (list python-requests python-requests-ntlm python-xmltodict)) (native-inputs - (list python-mock python-pytest)) + (list python-mock python-pytest python-setuptools)) (home-page "https://github.com/diyan/pywinrm/") - (synopsis - "Python library for Windows Remote Management (WinRM)") + (synopsis "Python library for Windows Remote Management (WinRM)") (description "pywinrm is a Python client for the Windows Remote Management (WinRM) service. It allows you to invoke commands on target Windows machines from @@ -13533,16 +13245,19 @@ etc. The core of this module is a decorator factory.") (uri (pypi-uri "drmaa" version)) (sha256 (base32 "0xzqriqyvk5b8hszbavsyxd29wm3sxirm8zvvdm73rs2iq7w4hkx")))) - (build-system python-build-system) + (build-system pyproject-build-system) ;; The test suite requires libdrmaa which is provided by the cluster ;; environment. At runtime the environment variable DRMAA_LIBRARY_PATH ;; should be set to the path of the libdrmaa library. (arguments - '(#:tests? #f - #:phases (modify-phases %standard-phases - ;; Loading the library fails because DRMAA_LIBRARY_PATH - ;; is not configured. - (delete 'sanity-check)))) + (list + #:tests? #f + #:phases + #~(modify-phases %standard-phases + ;; Loading the library fails because DRMAA_LIBRARY_PATH + ;; is not configured. + (delete 'sanity-check)))) + (native-inputs (list python-setuptools)) (home-page "https://pypi.org/project/drmaa/") (synopsis "Python bindings for the DRMAA library") (description @@ -13570,11 +13285,11 @@ Python language binding specification.") (substitute* '("grako/util.py" "grako/walkers.py") (("collections\\.Mapping") "collections.abc.Mapping")))))) - (build-system python-build-system) - (arguments '(#:tests? #f)) ; Test file 'grako.ebnf' is missing from archive. - (native-inputs - (list unzip python-pytest python-pytest-runner)) - (home-page "https://bitbucket.org/neogeny/grako") + (build-system pyproject-build-system) + ;; XXX: Test file 'grako.ebnf' is missing from archive. + (arguments (list #:tests? #f)) + (native-inputs (list unzip python-pytest python-setuptools)) + (home-page "https://pypi.org/project/grako") (synopsis "EBNF parser generator") (description "Grako takes a grammar in a variation of EBNF as input, and outputs a @@ -13639,7 +13354,7 @@ you to actually draw things with your favorite toolkit.") (define-public python-gridmap (package (name "python-gridmap") - (version "0.14.0") + (version "0.15.0") (source (origin (method git-fetch) @@ -13648,15 +13363,20 @@ you to actually draw things with your favorite toolkit.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0v0sgpg6pz8h61f9aqjf5xk0ipr512bbz8dxzjjylksj135qr19l")))) - (build-system python-build-system) + (base32 "0w1sxvhv5ldbzkx70q7036yvny0zsylc4zj7nzmp3nhjdl8whlrm")))) + (build-system pyproject-build-system) (arguments - '(#:tests? #f ;FIXME: Requires python-cherrypy. - #:phases (modify-phases %standard-phases - ;; Importing the web server module requires cherrypy, too. - (delete 'sanity-check)))) + (list #:tests? #f ;XXX: freezes or timeout + #:test-backend #~'nose)) + (native-inputs + (list ;; python-pynose + python-setuptools)) (propagated-inputs - (list python-psutil python-drmaa python-pyzmq)) + (list python-cherrypy + python-cloudpickle + python-psutil + python-drmaa + python-pyzmq)) (home-page "https://github.com/pygridtools/gridmap") (synopsis "Create jobs on a cluster directly from Python") (description @@ -14580,63 +14300,6 @@ cluster down and deletes the throwaway profile.") connect strings, then issue SQL commands within IPython or IPython Notebook.") (license license:expat))) -(define-public python-traitlets - (package - (name "python-traitlets") - (version "5.14.1") - (source - (origin - (method url-fetch) - (uri (pypi-uri "traitlets" version)) - (sha256 - (base32 - "0zjj8ha4z5lbhhmvcl3q8wp5qmwqq0lwxma3d8qvh10s6xdi11c5")))) - (build-system pyproject-build-system) - (arguments - (list - #:test-flags - '(list "-k" "not mypy_list_typing and not mypy_dict_typing"))) - (native-inputs - (list python-argcomplete - python-hatchling - python-mypy - python-pytest - python-pytest-mock - python-pytest-mypy-testing)) - (home-page "https://ipython.org") - (synopsis "Configuration system for Python applications") - (description - "Traitlets is a framework that lets Python classes have attributes with -type checking, dynamically calculated default values, and ‘on change’ -callbacks. The package also includes a mechanism to use traitlets for -configuration, loading values from files or from command line arguments. This -is a distinct layer on top of traitlets, so you can use traitlets in your code -without using the configuration machinery.") - (license license:bsd-3))) - -(define-public python-treelib - (package - (name "python-treelib") - (version "1.8.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/caesar0301/treelib") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0jd3rdaq8v7ykb626cm1gxa03higqnn2pmnv46fc0lc55xbrkxlf")) - (patches - (search-patches "python-treelib-remove-python2-compat.patch")))) - (build-system pyproject-build-system) - (native-inputs (list python-poetry-core python-pytest)) - (home-page "https://github.com/caesar0301/treelib") - (synopsis "Implementation of a tree structure in Python") - (description - "This package provides a Python implementation of a tree structure.") - (license license:asl2.0))) - (define-public python-optree (package (name "python-optree") @@ -15221,44 +14884,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") @@ -15609,33 +15234,6 @@ language, in Python.") GA4GH Task Execution API.") (license license:expat))) -(define-public python-toposort - (package - (name "python-toposort") - (version "1.10") - (source - (origin - (method url-fetch) - (uri (pypi-uri "toposort" version)) - (sha256 - (base32 - "1gd66z5dy6j7qs5qkj1pg0vb15rwd571yq02fkm9d9nhaff4gfxz")))) - (build-system pyproject-build-system) - (arguments - (list - #:phases - '(modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (invoke "python3" "-m" "test.test_toposort")))))) - (native-inputs (list python-setuptools python-wheel)) - (home-page "https://gitlab.com/ericvsmith/toposort") - (synopsis "Topological sort algorithm") - (description - "This package provides an implementation of a topological sort -algorithm.") - (license license:asl2.0))) - (define-public python-altgraph (package (name "python-altgraph") @@ -15656,61 +15254,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") @@ -16351,8 +15894,8 @@ file (e.g. @file{PKG-INFO}).") (license license:expat))) ;; pep621 was renamed to pyproject-metadata. -(define-public python-pep621 - (deprecated-package "python-pep621" python-pyproject-metadata)) +(define-deprecated-package python-pep621 + python-pyproject-metadata) (define-public python-meson-python (package @@ -17067,8 +16610,9 @@ stdin/stdout/stderr.") (uri (pypi-uri "stopit" version)) (sha256 (base32 "0vcrcvky249q4rbgmwf18mwmnypfk8jpn4h6knyjf86r7xc9rwzp")))) - (build-system python-build-system) - (arguments '(#:tests? #f)) ;there are none + (build-system pyproject-build-system) + (arguments (list #:tests? #f)) ;there are none + (native-inputs (list python-setuptools)) (home-page "https://pypi.python.org/pypi/stopit") (synopsis "Timeout control decorator and context managers") (description @@ -17076,27 +16620,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") @@ -17358,22 +16881,44 @@ from an XML-based format.") (define-public python-ly (package (name "python-ly") - (version "0.9.5") + (version "0.9.9") (source (origin - (method url-fetch) - (uri (pypi-uri name version)) + (method git-fetch) + (uri (git-reference + (url "https://github.com/frescobaldi/python-ly") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 - (base32 - "0x98dv7p8mg26p4816yy8hz4f34zf6hpnnfmr56msgh9jnsm2qfl")))) - (build-system python-build-system) + (base32 "1q9jdvc4mrv3xkp7jm4g4kisq1k1d05b5d3wfvhpd85a9yqjrhq8")))) + (build-system pyproject-build-system) (arguments - ;; FIXME: Some tests need network access. - '(#:tests? #f)) + (list + #:phases + (let ((namespace-url "http://www.w3.org/2001/03/xml.xsd") + (xlink-url "http://www.w3.org/XML/2008/06/xlink.xsd")) + #~(modify-phases %standard-phases + (add-after 'unpack 'inject-data + (lambda _ + (substitute* "tests/musicxml.xsd" + (((string-join (string-split #$namespace-url #\.) "\\.")) + #$(origin + (method url-fetch) + (uri namespace-url) + (sha256 (base32 "\ +1j6h0sp0pcqi5dv9m6sxwr8brrb59fyx091ld1x6wlh28js4vn8f")))) + (((string-join (string-split #$xlink-url #\.) "\\.")) + #$(origin + (method url-fetch) + (uri xlink-url) + (sha256 (base32 "\ +0jpjha5iiq4rf4hx3qfnmyya9cf17ysxz0rbhsffn5nwgxnghgf8"))))))))))) + (native-inputs (list python-hatchling python-lxml python-pytest)) (synopsis "Tool and library for manipulating LilyPond files") - (description "This package provides a Python library to parse, manipulate -or create documents in LilyPond format. A command line program ly is also -provided that can be used to do various manipulations with LilyPond files.") + (description + "This package provides a Python library to parse, manipulate or create +documents in LilyPond format. A command line program ly is also provided that +can be used to do various manipulations with LilyPond files.") (home-page "https://pypi.org/project/python-ly/") (license license:gpl2+))) @@ -17420,13 +16965,18 @@ refactoring library.") (package (name "python-gorilla") (version "0.3.0") - (source (origin - (method url-fetch) - (uri (pypi-uri "gorilla" version)) - (sha256 - (base32 - "0b40blcp6fih4nvqbilra4qw1dfccv1ahjmr41ac4d9rjadqkcpy")))) - (build-system python-build-system) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/christophercrouzet/gorilla") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0hm5ynswhz6i763s6cjlh8lv5ai0f3x17mjvlihqs8idlk4vbrn0")))) + (build-system pyproject-build-system) + (arguments (list #:test-backend #~'unittest)) + (native-inputs (list python-setuptools)) (home-page "https://github.com/christophercrouzet/gorilla") (synopsis "Convenient monkey patching with Python") (description @@ -17439,22 +16989,33 @@ third-party code.") (define-public python-llfuse (package (name "python-llfuse") - (version "1.4.4") - (source (origin - (method url-fetch) - (uri (pypi-uri "llfuse" version)) - (sha256 - (base32 - "1jb4c9avvb0v3830xlbj1r9kj05i98vv6nq05105ppg57y7lq14j")))) - (build-system python-build-system) - (inputs - (list fuse-2 attr)) + (version "1.5.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/python-llfuse/python-llfuse") + (commit (string-append "release-" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "16wsrg1py4gvcxfgsfkll73lfq62psc0hcqvs73az7s4b1pvyy62")))) + (build-system pyproject-build-system) + (arguments + (list + #:test-flags + #~(list "-k" "not test_listdir") ; requires /usr/bin access. + #:phases + #~(modify-phases %standard-phases + (add-before 'build 'build-cython + (lambda _ + (invoke "python" "setup.py" "build_cython")))))) + (inputs (list fuse-2 attr)) (native-inputs - (list pkg-config python-pytest)) + (list pkg-config python-cython python-pytest python-setuptools)) (synopsis "Python bindings for FUSE") (description "Python-LLFUSE is a set of Python bindings for the low level FUSE API.") - (home-page "https://bitbucket.org/nikratio/python-llfuse/") + (home-page "https://github.com/python-llfuse/python-llfuse") (license license:lgpl2.0+))) (define-public python-msgpack @@ -17678,110 +17239,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) - (propagated-inputs (list python-deprecated)) - (native-inputs (list python-coverage python-coveralls python-nose2 - python-numpy python-setuptools python-wheel)) - (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") @@ -18009,19 +17466,19 @@ provides a collection of cache libraries in the same API interface.") (version "1.2.0") (source (origin - (method url-fetch) - (uri (pypi-uri "pylru" version)) + (method git-fetch) + (uri (git-reference + (url "https://github.com/jlhutch/pylru") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 - (base32 "15yj46307sw703vjfkgnr04dqvaicmfcj0hc6yrciildp55r6bs9")))) - (build-system python-build-system) + (base32 "0sqai530d7fpjzny476f3zqq9mv05xqbyw500jmbhrpj9yy1l9xp")))) + (build-system pyproject-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key inputs outputs tests? #:allow-other-keys) - (when tests? - (add-installed-pythonpath inputs outputs) - (invoke "python" "test.py"))))))) + (list + #:test-backend #~'custom + #:test-flags #~(list "test.py"))) + (native-inputs (list python-pytest python-setuptools)) (home-page "https://github.com/jlhutch/pylru") (synopsis "Least recently used (LRU) cache implementation") (description @@ -18262,74 +17719,64 @@ is binding LibSass.") (version "1.0.1") (source (origin - (method url-fetch) - (uri (pypi-uri "idna-ssl" version)) + (method git-fetch) + (uri (git-reference + (url "https://github.com/aio-libs/idna-ssl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 - (base32 - "0ydrc8hpg9mdr5hqq1lqfsfbn6sjq69slwpfrnlrm3k0phqg14qj")))) - (build-system python-build-system) - (arguments - `(#:tests? #f)) ;circular dependency with python-aiohttp + (base32 "1fj4zkcnx3mk7kbnf4d6pjgv331n17wzpphpwdnmr498ghbsph9k")))) + (build-system pyproject-build-system) + (arguments (list #:tests? #f)) ;circular dependency with python-aiohttp + (native-inputs (list python-setuptools)) (propagated-inputs (list python-idna)) (home-page "https://github.com/aio-libs/idna-ssl") - (synopsis "Patch @code{ssl.match_hostname} for Unicode(idna) domains support") - (description "Patch @code{ssl.match_hostname} for Unicode(idna) -domains support.") + (synopsis "Support Unicode(idna) domains for Python's @code{ssl} module") + (description + "This package provides Unicode(idna) domains support for Python's +@code{ssl} module. It patches @code{ssl.match_hostname} for that purpose.") (license license:expat))) -;;; Variant used to break a cycle with python-pip-run-bootstrap. -(define-public python-path-bootstrap - (hidden-package - (package - (name "python-path-bootstrap") - (version "17.1.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "path" version)) - (sha256 - (base32 "1scqbwgcbisx8mb28hw789a7np953851wg6z0bbzdm519znha7nl")))) - (build-system pyproject-build-system) - (arguments - (list #:tests? #f)) - (native-inputs (list python-setuptools python-setuptools-scm python-wheel)) - (home-page "https://github.com/jaraco/path") - (synopsis "Object-oriented file system path manipulation library") - (description "@code{path} (formerly @code{path.py}) implements path -objects as first-class entities, allowing common operations on files to be -invoked on those path objects directly.") - (license license:expat)))) - (define-public python-path - (package/inherit python-path-bootstrap + (package (name "python-path") + (version "17.1.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "path" version)) + (sha256 + (base32 "1scqbwgcbisx8mb28hw789a7np953851wg6z0bbzdm519znha7nl")))) + (build-system pyproject-build-system) (arguments - (substitute-keyword-arguments - (package-arguments python-path-bootstrap) - ((#:tests? _ #f) - (not (%current-target-system))) - ((#:test-flags flags #~'()) - #~(append (list "-k" - (string-append - ;; Do not test the myproject.toml build as it tries - ;; to pull dependencies from the Internet. - "not project " - ;; This tests assumes a root user exists. - "and not test_get_owner")) - #$flags)))) + (list + #:tests? (not (%current-target-system)) + #:test-flags + #~(list "-k" + (string-append + ;; Do not test the myproject.toml build as it tries + ;; to pull dependencies from the Internet. + "not project " + ;; This tests assumes a root user exists. + "and not test_get_owner")))) (native-inputs - (modify-inputs (package-native-inputs python-path-bootstrap) - (append python-appdirs - python-more-itertools - python-packaging - python-pygments - python-pytest))) - (properties (alist-delete 'hidden? - (package-properties - python-path-bootstrap))))) + (list python-appdirs + python-more-itertools + python-packaging + python-pygments + python-pytest + python-setuptools + python-setuptools-scm)) + (home-page "https://github.com/jaraco/path") + (synopsis "Object-oriented file system path manipulation library") + (description "@code{path} (formerly @code{path.py}) implements path +objects as first-class entities, allowing common operations on files to be +invoked on those path objects directly.") + (license license:expat))) -(define-public python-pathpy - (deprecated-package "python-pathpy" python-path)) +;; It may be removed after 2026-01-24. +(define-deprecated/public-alias python-path-bootstrap python-path) +(define-deprecated/public-alias python-pathpy python-path) (define-public python-pretend (package @@ -18357,207 +17804,64 @@ or doubles. Basically, a stub is an object that returns pre-canned responses, rather than doing any computation.") (license license:bsd-3))) -;;; Variant used to break a dependency cycle with -;;; python-pytest-perf-bootstrap. -(define-public python-pip-run-bootstrap - (hidden-package - (package - (name "python-pip-run-bootstrap") - (version "8.8.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/jaraco/pip-run") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0ycrjj3jgqcr9c2k7y8vprq65iblg0q0hvwz8zwi13gmb0ffds0c")))) - (build-system python-build-system) - (arguments - (list - #:tests? #f - #:phases - #~(modify-phases %standard-phases - (add-before 'build 'pretend-version - ;; The version string is usually derived via setuptools-scm, but - ;; without the git metadata available this fails. - (lambda _ - (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version)))))) - (native-inputs (list python-setuptools-scm)) - (propagated-inputs (list python-autocommand python-path-bootstrap - python-packaging)) - (home-page "https://github.com/jaraco/pip-run") - (synopsis "Dynamic dependency loader for Python") - (description "The @command{pip-run} command provides on-demand temporary -package installation for a single interpreter run. It replaces this series of -commands: -@example -$ virtualenv --python pythonX.X --system-site-packages /tmp/env -$ /tmp/env/bin/pip install pkg1 pkg2 -r reqs.txt -$ /tmp/env/bin/python ... -$ rm -rf /tmp/env -@end example") - (license license:expat)))) - (define-public python-pip-run - (package/inherit python-pip-run-bootstrap - (name "python-pip-run") - (arguments - (substitute-keyword-arguments (package-arguments python-pip-run-bootstrap) - ((#:tests? _ #f) - (not (%current-target-system))) - ((#:phases phases #~%standard-phases) - #~(modify-phases #$phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "pytest" "-k" - (string-append - ;; Do not test the myproject.toml build as it tries - ;; to pull dependencies from the internet. - "not project " - ;; These tests attempt to install dependencies from - ;; the network and fail. - "and not test_pkg_imported " - "and not test_pkg_loaded_from_alternate_index "))))))))) - (propagated-inputs - (modify-inputs (package-propagated-inputs python-pip-run-bootstrap) - (replace "python-path-bootstrap" python-path))) - (native-inputs - (modify-inputs (package-native-inputs python-pip-run-bootstrap) - (append python-nbformat - python-pygments - python-pytest))) - (properties (alist-delete 'hidden? (package-properties - python-pip-run-bootstrap))))) - -(define-public python-tlsh (package - (name "python-tlsh") - (version "4.11.2") - (home-page "https://github.com/trendmicro/tlsh") + (name "python-pip-run") + (version "8.8.0") (source (origin (method git-fetch) - (uri (git-reference (url home-page) (commit version))) + (uri (git-reference + (url "https://github.com/jaraco/pip-run") + (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1gb5j73nw3nmx030rf8pm75rns5syxhv44zxr6i74kjicyly1i9w")))) - (build-system python-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)) - (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")))) + (base32 "0ycrjj3jgqcr9c2k7y8vprq65iblg0q0hvwz8zwi13gmb0ffds0c")))) (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 url-fetch) - (uri (pypi-uri "terminaltables" version)) - (sha256 - (base32 - "109vhldk6nv1z3hzp4dyqf6rjvlhl0y2k5k7qcm9fcrq5swhxszk")))) - (build-system python-build-system) - (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 + #:tests? (not (%current-target-system)) + #:test-flags + #~(list "-k" (string-append + ;; Do not test the myproject.toml build as it tries + ;; to pull dependencies from the internet. + "not project " + ;; These tests attempt to install dependencies from + ;; the network and fail. + "and not test_pkg_imported " + "and not test_pkg_loaded_from_alternate_index " + "and not test_pkg_loaded_from_url ")) #:phases - '(modify-phases %standard-phases - (add-after 'unpack 'fix-build - (lambda _ (delete-file "setup.py")))))) - (build-system pyproject-build-system) + #~(modify-phases %standard-phases + (add-before 'build 'pretend-version + (lambda _ + (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version)))))) (native-inputs - (list python-pytest + (list python-nbformat + python-pygments + 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+))) + python-setuptools-scm)) + (propagated-inputs + (list python-autocommand + python-packaging + python-path + python-pip)) + (home-page "https://github.com/jaraco/pip-run") + (synopsis "Dynamic dependency loader for Python") + (description "The @command{pip-run} command provides on-demand temporary +package installation for a single interpreter run. It replaces this series of +commands: +@example +$ virtualenv --python pythonX.X --system-site-packages /tmp/env +$ /tmp/env/bin/pip install pkg1 pkg2 -r reqs.txt +$ /tmp/env/bin/python ... +$ rm -rf /tmp/env +@end example") + (license license:expat))) + +;; It may be removed after 2026-01-24. +(define-deprecated/public-alias python-pip-run-bootstrap python-pip-run) (define-public python-libarchive-c (package @@ -18598,26 +17902,26 @@ Python's @code{ctypes} foreign function interface (FFI).") (define-public python-file (package/inherit file (name "python-file") - (build-system python-build-system) + (build-system pyproject-build-system) (arguments - '(#:tests? #f ;no tests - #:configure-flags '("--single-version-externally-managed" "--root=/") - #:phases (modify-phases %standard-phases - (add-before 'build 'change-directory - (lambda _ - (chdir "python") - #t)) - (add-before 'build 'set-library-file-name - (lambda* (#:key inputs #:allow-other-keys) - (let ((file (assoc-ref inputs "file"))) - (substitute* "magic.py" - (("find_library\\('magic'\\)") - (string-append "'" file "/lib/libmagic.so'"))) - #t)))))) - (inputs `(("file" ,file))) - (native-inputs (if (%current-target-system) - `(("self" ,this-package)) - '())) + (list + #:tests? #f ;no tests + #:phases + #~(modify-phases %standard-phases + (add-before 'build 'change-directory + (lambda _ + (chdir "python"))) + (add-before 'build 'set-library-file-name + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "magic.py" + (("find_library\\('magic'\\)") + (format #f "~s" (search-input-file inputs + "lib/libmagic.so"))))))))) + (inputs (list file)) + (native-inputs (cons* python-setuptools + (if (%current-target-system) + (list this-package) + '()))) (synopsis "Python bindings to the libmagic file type guesser") (description "This package provides Python bindings to the libmagic file type guesser. @@ -18823,9 +18127,9 @@ Python.") (copy-file "lib/debian/_version.py.in" "lib/debian/_version.py") (substitute* "lib/debian/_version.py" (("__CHANGELOG_VERSION__") #$version)))))) - (build-system python-build-system) + (build-system pyproject-build-system) (native-inputs - (list python-pytest)) + (list python-pytest python-setuptools)) (propagated-inputs (list python-six python-chardet)) (synopsis "Debian package related modules") @@ -19057,19 +18361,24 @@ functions to find and load entry points.") (define-public python-epc (package (name "python-epc") - (version "0.0.5") + (properties '((commit . "f3673ae5c35f20a0f71546ab34c28e3dde3595c1") + (revision . "0"))) + (version (git-version "0.0.5" + (assoc-ref properties 'revision) + (assoc-ref properties 'commit))) (source (origin - (method url-fetch) - (uri (pypi-uri "epc" version)) + (method git-fetch) + (uri (git-reference + (url "https://github.com/tkf/python-epc") + (commit (assoc-ref properties 'commit)))) + (file-name (git-file-name name version)) (sha256 - (base32 - "09bx1ln1bwa00917dndlgs4k589h8qx2x080xch5m58p92kjwkd1")))) - (build-system python-build-system) - (propagated-inputs - (list python-sexpdata)) - (native-inputs - (list python-nose)) + (base32 "0q27bj49yan2qg6i8m5czs5b5jv26ff42yz7j4r5652s7j3f42mm")))) + (build-system pyproject-build-system) + (arguments (list #:test-backend #~'nose)) + (propagated-inputs (list python-sexpdata)) + (native-inputs (list python-pynose python-setuptools)) (home-page "https://github.com/tkf/python-epc") (synopsis "Remote procedure call (RPC) stack for Emacs Lisp and Python") (description @@ -19083,17 +18392,17 @@ from elisp.") (version "1.5") (source (origin - (method url-fetch) - (uri (pypi-uri "forex-python" version)) + (method git-fetch) + (uri (git-reference + (url "https://github.com/MicroPyramid/forex-python") + (commit version))) + (file-name (git-file-name name version)) (sha256 - (base32 "1ma8cl1i2dh8aa99pifnlilyy4d1gd1s07fj0yd17wcbpsh532cj")))) - (build-system python-build-system) - (arguments - ;; Tests are not included in the PyPI tarball. Also, the tests in the - ;; repository require online data. - `(#:tests? #f)) - (propagated-inputs - (list python-requests python-simplejson)) + (base32 "0pl5sfd0wkv1a2y324l518h6sing7wkadrbr5xcf6hjykn2mbi5h")))) + (build-system pyproject-build-system) + (arguments (list #:tests? #f)) ; Tests require online data. + (native-inputs (list python-setuptools)) + (propagated-inputs (list python-requests python-simplejson)) (home-page "https://github.com/MicroPyramid/forex-python") (synopsis "Foreign exchange rates and currency conversion") (description @@ -19119,11 +18428,15 @@ Features: (version "0.9.12") (source (origin - (method url-fetch) - (uri (pypi-uri "simpleeval" version)) + (method git-fetch) + (uri (git-reference + (url "https://github.com/danthedeckie/simpleeval") + (commit version))) + (file-name (git-file-name name version)) (sha256 - (base32 "0diysdzvx865yy2rjfah75ha2qfxaxz7r108kp7j2kkd903ya2ry")))) - (build-system python-build-system) + (base32 "0khgl729q5133fgc00d550f4r77707rkkn7r56az4v8bvx0q8xp4")))) + (build-system pyproject-build-system) + (native-inputs (list python-pytest python-setuptools)) (home-page "https://github.com/danthedeckie/simpleeval") (synopsis "Simple, safe single expression evaluator library") (description @@ -19382,39 +18695,32 @@ Jupyter kernels such as IJulia and IRKernel.") (define-public python-jsbeautifier (package (name "python-jsbeautifier") - (version "1.10.2") + (version "1.15.3") (home-page "https://github.com/beautify-web/js-beautify") - (source (origin - (method git-fetch) - (uri (git-reference - (url home-page) - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0wawb070ki1axb3jc9xvsrgpji52vcfif3zmjzc3z4g98m5xw4kg")))) - (build-system python-build-system) + (source + (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1zl1g6w5zn2hxk5qq83j52cxa1ig75ryjwsjxv9wiwkar4qq88zg")))) + (build-system pyproject-build-system) (arguments - `(#:phases (modify-phases %standard-phases - (add-after 'unpack 'chdir - (lambda _ - ;; The upstream Git repository contains all the code, - ;; but this package only builds the python code. - (chdir "python") - #t)) - (add-after 'unpack 'patch-python-six-requirements - (lambda _ - (substitute* "python/setup.py" - (("six>=1.12.0") - "six>=1.11.0")) - #t))))) - (propagated-inputs - (list python-editorconfig python-six)) - (native-inputs - (list python-pytest)) + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "python") + (rename-file "setup-js.py" "setup.py")))))) + (propagated-inputs (list python-editorconfig python-six)) + (native-inputs (list python-pytest python-setuptools)) (synopsis "JavaScript unobfuscator and beautifier") - (description "Beautify, unpack or deobfuscate JavaScript, leveraging -popular online obfuscators.") + (description + "This packages provides tooling to beautify, unpack or deobfuscate +JavaScript, leveraging popular online obfuscators.") (license license:expat))) (define-public python-chardet @@ -19623,38 +18929,45 @@ tutorial.") @code{PythonAnywhere} services.") (license license:expat))) -(define-public python-pythondialog +(define-public python-dialog (package - (name "python-pythondialog") - (version "3.4.0") - (source (origin - (method url-fetch) - (uri (pypi-uri "pythondialog" version)) - (sha256 - (base32 - "1728ghsran47jczn9bhlnkvk5bvqmmbihabgif5h705b84r1272c")))) - (build-system python-build-system) + (name "python-dialog") + (version "3.5.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pythondialog" version)) + (sha256 + (base32 "08v3flvbhpc0p20drniiaalc3ijghlxk9ka5vz5mqqm6y254m8xj")) + (modules '((guix build utils))) + (snippet #~(delete-file-recursively "doc")))) + (build-system pyproject-build-system) (arguments - `(#:phases (modify-phases %standard-phases - (add-after 'unpack 'patch-path - (lambda* (#:key inputs #:allow-other-keys) - (let* ((dialog (assoc-ref inputs "dialog"))) - (substitute* "dialog.py" - (("os.getenv\\(\"PATH\", \":/bin:/usr/bin\"\\)") (string-append - "os.getenv(\"PATH\") + \":" - dialog - "/bin\""))) - #t)))) - #:tests? #f)) - (propagated-inputs (list dialog)) + (list + ;; XXX: There are no tests, but some examples. However, they need to + ;; be run on a terminal. + #:tests? #f + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-path + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "dialog.py" + (("_path_to_executable\\(dialog\\)") + (format #f "os.path.realpath(~s)" + (search-input-file inputs "bin/dialog"))))))))) + (native-inputs (list python-setuptools)) + (inputs (list dialog)) (home-page "https://pythondialog.sourceforge.net/") (synopsis "Python interface to the UNIX dialog utility") (description - "A Python wrapper for the dialog utility. Its purpose is to -provide an easy to use, pythonic and comprehensive Python interface to dialog. -This allows one to make simple text-mode user interfaces on Unix-like systems") + "A Python wrapper for the dialog utility. Its purpose is to provide an +easy to use, pythonic and comprehensive Python interface to dialog. This +allows one to make simple text-mode user interfaces on Unix-like systems") (license license:lgpl2.1))) +(define-public python-pythondialog + (deprecated-package "python-pythondialog" python-dialog)) + (define-public python-confection (package (name "python-confection") @@ -19851,29 +19164,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") @@ -20596,28 +19886,6 @@ text.") @code{boto} library.") (license license:asl2.0))) -(define-public python-rsa - (package - (name "python-rsa") - (version "3.4.2") - (source - (origin - (method url-fetch) - (uri (pypi-uri "rsa" version)) - (sha256 - (base32 - "1dcxvszbikgzh99ybdc7jq0zb9wspy2ds8z9mjsqiyv3q884xpr5")))) - (build-system python-build-system) - (propagated-inputs - (list python-pyasn1)) - (synopsis "Pure-Python RSA implementation") - (description "Python-RSA is a pure-Python RSA implementation. It supports -encryption and decryption, signing and verifying signatures, and key -generation according to PKCS#1 version 1.5. It can be used as a Python -library as well as on the command line.") - (home-page "https://stuvel.eu/rsa") - (license license:asl2.0))) - (define-public python-plumbum (package (name "python-plumbum") @@ -20745,7 +20013,7 @@ document.") (invoke "nose2" "-v" "symengine.tests")) (format #t "test suite not run~%"))))))) (native-inputs (list cmake-minimal - python-cython-3 + python-cython python-nose2 python-setuptools python-wheel)) @@ -20760,40 +20028,53 @@ manipulation library.") (define-public python-asteval (package (name "python-asteval") - (version "0.9.23") + (version "1.0.6") (source (origin (method url-fetch) (uri (pypi-uri "asteval" version)) (sha256 - (base32 - "0f54sd4w1a72ij1bcxs2x7dk9xf8bzclawijf1z18bqx9f96l2gm")))) - (build-system python-build-system) + (base32 "17x1qk07cixj1nn59pp5dzjc9jna92v6kljdss81l5rf9cqfga0s")))) + (build-system pyproject-build-system) (native-inputs - (list python-pytest)) + (list python-pytest + python-pytest-cov + python-setuptools + python-setuptools-scm)) (home-page "https://github.com/newville/asteval") (synopsis "Minimalistic evaluator of Python expressions") (description "This package provides a minimalistic evaluator of Python expression -using the @code{ast} module") +using the @code{ast} module.") (license license:expat))) (define-public python-lmfit (package (name "python-lmfit") - (version "1.0.2") + (version "1.3.4") (source (origin (method url-fetch) (uri (pypi-uri "lmfit" version)) (sha256 (base32 - "0iab33jjb60f8kn0k0cqb0vjp1mdskks2n3kpn97zkw5cvjhq2b7")))) - (build-system python-build-system) + "15z4zcyc4crfdw22qnbaq8wrf552jgl83gd3nk2zc5zp8f6c48iw")))) + (build-system pyproject-build-system) + (arguments + (list + #:test-flags + ;; Costly tests that may fail with multiprocessing.context.TimeoutError. + #~(list "--ignore=tests/test_jacobian_pickling.py") + #:phases + #~(modify-phases %standard-phases + ;; XXX: Unclear why, but the phase seems broken. + ;; asteval>=1.0 is not understood correctly. + (delete 'sanity-check)))) (propagated-inputs - (list python-asteval python-numpy python-scipy python-uncertainties)) + (list python-asteval python-dill python-numpy python-scipy + python-uncertainties)) (native-inputs - (list python-pytest)) + (list python-pytest python-pytest-cov python-setuptools)) (home-page "https://lmfit.github.io/lmfit-py/") (synopsis "Least-Squares minimization with bounds and constraints") (description @@ -20999,19 +20280,32 @@ Amazon Web Services (AWS) API.") (define-public python-pyfiglet (package (name "python-pyfiglet") - (version "0.8.post1") + (version "1.0.4") (source (origin - (method url-fetch) - (uri (pypi-uri "pyfiglet" version)) + (method git-fetch) + (uri (git-reference + (url "https://github.com/pwaller/pyfiglet") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 - (base32 - "0f9n2076ga2ccsg174k2d7n0z4d44ml96yzc72s6g4nhalbk5hn6")))) - (build-system python-build-system) + (base32 "1r1fyphz99jar2xfk761cl740zxk4b0gygajgjfx6i1kf0dxdv40")))) + (build-system pyproject-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'fallback-on-default-build + (lambda _ + ;; This pyproject has little value and fails because of the + ;; :__legacy__ suffix. Removing it to rely on defaults. + (delete-file "pyproject.toml")))))) + (native-inputs (list python-pytest python-setuptools)) (home-page "https://github.com/pwaller/pyfiglet") (synopsis "Draw ASCII art big letters in Python") - (description "This module lets you draw large letter from ordinary characters -in pure Python.") + (description + "This module lets you draw large letter from ordinary characters in pure + Python.") (license license:expat))) (define-public python-mako @@ -21331,83 +20625,72 @@ Eventlet, or gevent. Tasks can execute asynchronously (in the background) or synchronously (wait until ready).") (license license:bsd-3))) -(define-public python-translitcodec - (package - (name "python-translitcodec") - (version "0.4.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "translitcodec" version)) - (sha256 - (base32 - "10x6pvblkzky1zhjs8nmx64nb9jdzxad4bxhq4iwv0j4z2aqjnki")))) - (build-system python-build-system) - (arguments - `(#:tests? #f)) ; no tests provided - (home-page - "https://github.com/claudep/translitcodec") - (synopsis - "Unicode to 8-bit charset transliteration codec") - (description - "This package contains codecs for transliterating ISO 10646 texts into -best-effort representations using smaller coded character sets (ASCII, -ISO 8859, etc.).") - (license license:expat))) - (define-public python-anyqt (package (name "python-anyqt") - (version "0.2.0") + (version "0.2.1") (source (origin - (method url-fetch) - (uri (pypi-uri "AnyQt" version)) + (method git-fetch) + (uri (git-reference + (url "https://github.com/ales-erjavec/anyqt") + (commit version))) + (file-name (git-file-name name version)) (sha256 - (base32 "0fvnhdk0nzhlm1xydisvdq1w7lwaakdkbwb1rkyz4vd232wji4jb")))) - (build-system python-build-system) + (base32 "0dci4sx53icd3jxv5gm22yr5g4dcyqbyvkkwliqpmbkxxjxj0dc8")))) + (build-system pyproject-build-system) (arguments - `(#:tests? #f ;there are no tests - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'delete-files - ;; Delete files related to other operating systems. - (lambda _ - (delete-file "AnyQt/QtMacExtras.py") - (delete-file "AnyQt/QtWinExtras.py")))))) + (list + ;; XXX: Qt tests require Qt modules, see test/test_import.py. + ;; TODO Add/configure the right Qt inputs. + #:test-flags + #~(list "--ignore-glob=tests/test_q*.py") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'delete-files + ;; Delete files related to other operating systems. + (lambda _ + (delete-file "AnyQt/QtMacExtras.py") + (delete-file "AnyQt/QtWinExtras.py")))))) + (native-inputs + (list python-pyqt-6 + python-pytest + python-pytest-qt + python-setuptools)) (home-page "https://github.com/ales-erjavec/anyqt") - (synopsis "PyQt4/PyQt5 compatibility layer") - (description "AnyQt is a PyQt4/PyQt5 compatibility layer.") + (synopsis "PyQt compatibility layer") + (description + "This package provides a PyQt/PySide compatibility layer. More precisely, +it provides compatibility for the following modules: PyQt4, PyQt5, PyQt6, +PySide, PySide2.") (license license:gpl3))) (define-public python-qasync (package (name "python-qasync") - (version "0.27.1") + (version "0.28.0") (source (origin - ;; There are no tests in the PyPI tarball. (method git-fetch) (uri (git-reference - (url "https://github.com/CabbageDevelopment/qasync/") - (commit (string-append "v" version)))) + (url "https://github.com/CabbageDevelopment/qasync/") + (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0j6ksfnq9qfjdfppbkdz7jh6w0gnslwnckhafmlgim29b25g0z51")))) + (base32 "13i5riq7ig4csxlx61fzb8xl12ny0dkwj4h8f8r95xz5rii7a0kr")))) (build-system pyproject-build-system) (arguments - (list #:test-flags - ;; XXX: Added with python@3.11, not fixed upstream. - #~(list "-k" "not test_regression_bug13") - #:phases - #~(modify-phases %standard-phases - (add-before 'check 'set-qpa - (lambda _ - (setenv "QT_QPA_PLATFORM" "offscreen")))))) + (list + #:build-backend "poetry.core.masonry.api" ;XXX: python-uv-build is required + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'set-qpa + (lambda _ + (setenv "QT_QPA_PLATFORM" "offscreen")))))) (native-inputs (list python-poetry-core python-pytest)) (propagated-inputs - (list python-pyqt)) + (list python-pyqt-6)) (home-page "https://github.com/CabbageDevelopment/qasync") (synopsis "Implementation of the PEP 3156 Event-Loop with Qt") (description @@ -21417,40 +20700,44 @@ by providing an implementation of the PEP 3156 event-loop.") (define-public python-editor (package - (name "python-editor") - (version "1.0.4") - (source - (origin - (method url-fetch) - (uri (pypi-uri "python-editor" version)) - (sha256 - (base32 - "0yrjh8w72ivqxi4i7xsg5b1vz15x8fg51xra7c3bgfyxqnyadzai")))) - (build-system python-build-system) - (arguments - '(#:tests? #f)) ;XXX: needs a TTY and an editor - (home-page "https://github.com/fmoo/python-editor") - (synopsis "Programmatically open an editor, capture the result") - (description - "python-editor is a library that provides the editor module for -programmatically interfacing with your system's $EDITOR.") - (license license:asl2.0))) + (name "python-editor") + (version "1.0.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/fmoo/python-editor") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0hm5gcz5117dsq39bqfxpwazk4khqd272ran0n12x0x84mnqvfxa")))) + (build-system pyproject-build-system) + (arguments (list #:tests? #f)) ;XXX: needs a TTY and an editor + (native-inputs (list python-setuptools)) + (home-page "https://github.com/fmoo/python-editor") + (synopsis "Programmatically open an editor, capture the result") + (description + "This package provides the editor module for programmatically interfacing +with your system's $EDITOR.") + (license license:asl2.0))) (define-public python-multiprocessing-logging (package (name "python-multiprocessing-logging") - (version "0.3.1") + (version "0.3.4") (home-page "https://github.com/jruere/multiprocessing-logging") - (source (origin - (method git-fetch) - (uri (git-reference - (url home-page) - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1625wy3djlr3b2fpd3vi822f8gw6b75mnls5a4318dbi9za5pf0y")))) - (build-system python-build-system) + (source + (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0ib1plsyi4g68n0crc2cqhk54fccsmcijzh66g89fd3lgababgxd")))) + (build-system pyproject-build-system) + (arguments (list #:test-backend #~'unittest)) + (native-inputs (list python-setuptools)) (synopsis "Manage logs from multiple processes") (description "This Python module implements a multiprocessing-aware @code{Handler} @@ -21462,33 +20749,27 @@ main process so that they are handled correctly.") (package (name "python-munkres") (version "1.1.4") - (source (origin - (method url-fetch) - (uri (pypi-uri "munkres" version)) - (sha256 - (base32 - "00yvj8bxmhhhhd74v7j0x673is7vizmxwgb3dd5xmnkr74ybyi7w")))) + (source + (origin + (method url-fetch) + (uri (pypi-uri "munkres" version)) + (sha256 + (base32 "00yvj8bxmhhhhd74v7j0x673is7vizmxwgb3dd5xmnkr74ybyi7w")))) + (build-system pyproject-build-system) (arguments (list - #:phases - '(modify-phases %standard-phases - (add-after 'unpack 'disable-test - (lambda _ - ;; See https://github.com/bmc/munkres/issues/40 - (substitute* "test/test_munkres.py" - (("^def test_profit_float" m) - (string-append "\ -import platform -@pytest.mark.skipif(platform.architecture()[0] == \"32bit\", - reason=\"Fails on 32 bit architectures\") -" m)))))))) - (build-system python-build-system) - (native-inputs (list python-pytest)) + ;; See https://github.com/bmc/munkres/issues/40 + #:test-flags + (if (member (%current-system) %32bit-supported-systems) + #~(list "-k" "not test_profit_float") + #~(list)))) + (native-inputs (list python-pytest python-setuptools)) (home-page "https://software.clapper.org/munkres/") (synopsis "Implementation of the Munkres algorithm") - (description "The Munkres module provides an implementation of the Munkres -algorithm (also called the Hungarian algorithm or the Kuhn-Munkres algorithm), -useful for solving the Assignment Problem.") + (description + "The Munkres module provides an implementation of the Munkres algorithm +(also called the Hungarian algorithm or the Kuhn-Munkres algorithm), useful +for solving the Assignment Problem.") (license license:bsd-3))) (define-public python-codespell @@ -21604,37 +20885,39 @@ can also be used to get the exact location, font or color of the text.") (define-public python-rarfile (package (name "python-rarfile") - (version "4.0") - (source (origin - (method url-fetch) - (uri (pypi-uri "rarfile" version)) - (sha256 - (base32 - "1882wv9szcm29mnyhjmspyflyr2l7z73srn14w4dlnww49lqfm37")))) - (build-system python-build-system) + (version "4.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/markokr/rarfile") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1lm4vz4w0hrnzln7w10ijhdiwxy7gz45m44zw4fz7rdnn7c06b36")))) + (build-system pyproject-build-system) (arguments - `(#:tests? #f ;; The bsdtar utility is very limited and most tests fail. - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "rarfile.py" - ;; Disable unrar and unar, which are unavailable on Guix. - (("(unrar|unar)=True" all tool) (string-append tool "=False")) - ;; Hardcode path to bsdtar - (("\"bsdtar\"") - (string-append "\"" (assoc-ref inputs "libarchive") "/bin/bsdtar\""))) - #t)) - (replace 'check - (lambda* (#:key inputs tests? #:allow-other-keys) - (when tests? - (invoke "pytest" "-vv"))))))) - (native-inputs (list python-pytest)) + (list + #:tests? #f ;The bsdtar utility is very limited and most tests fail. + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "rarfile.py" + ;; Disable unrar and unar, which are unavailable on Guix. + (("(unrar|unar)=True" all tool) + (string-append tool "=False")) + ;; Hardcode path to bsdtar + (("\"bsdtar\"") + (format #f "~s" + (search-input-file inputs "bin/bsdtar"))))))))) + (native-inputs (list python-pytest python-setuptools)) (inputs (list libarchive)) (home-page "https://github.com/markokr/rarfile") (synopsis "RAR archive reader for Python") - (description "This is Python module for RAR archive reading. The interface -is made as zipfile like as possible.") + (description + "This is Python module for RAR archive reading. The interface is made as +zipfile like as possible.") (license license:isc))) (define-public python-slugid @@ -21650,21 +20933,14 @@ is made as zipfile like as possible.") (file-name (git-file-name name version)) (sha256 (base32 "1h64p2jlqv6lsmw8h2j203kx3bhv72cwzpk5gdhsaamw30cp3h1i")))) - (build-system python-build-system) - (native-inputs (list python-nose)) - (arguments - (list #:phases - #~(modify-phases %standard-phases - (replace 'check - (lambda* (#:key inputs tests? #:allow-other-keys) - (when tests? - ;; The project uses tox to run the tests via nose. - (invoke "nosetests" "-v" "test.py"))))))) + (build-system pyproject-build-system) + (arguments (list #:test-backend #~'nose)) + (native-inputs (list python-pynose python-setuptools)) (home-page "http://taskcluster.github.io/slugid.py") (synopsis "Module for Base64 encoded UUID v4 slugs") - (description "This package provides a module for generating v4 -UUIDs and encoding them into 22 character URL-safe base64 slug -representation.") + (description + "This package provides a module for generating v4 UUIDs and encoding them +into 22 character URL-safe base64 slug representation.") (license license:mpl2.0))) (define-public python-rich @@ -21740,58 +21016,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") @@ -21803,49 +21027,40 @@ for Python inspired by modern web development.") (uri (git-reference (url home-page) (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 - "1x11kfn4g244fia9a7y4ly8dqv5zsxfg3l5azc54dl6gkp2bk7vx")) - (modules '((guix build utils))) - ;; Adjust expected output for file@5.45. - (snippet #~(substitute* "test/libmagic_test.py" - (("PDF document, version 1\\.2, 2 pages") - "PDF document, version 1.2, 2 page(s)"))))) - (build-system python-build-system) + (base32 "1x11kfn4g244fia9a7y4ly8dqv5zsxfg3l5azc54dl6gkp2bk7vx")))) + (build-system pyproject-build-system) (arguments - '(#:phases (modify-phases %standard-phases - ;; Replace a specific method call with a hard-coded - ;; path to the necessary libmagic.so file in the - ;; store. If we don't do this, then the method call - ;; will fail to find the libmagic.so file, which in - ;; turn will cause any application using - ;; python-magic to fail. - (add-before 'build 'hard-code-path-to-libmagic - (lambda* (#:key inputs #:allow-other-keys) - (let ((magic (search-input-file inputs "/lib/libmagic.so"))) - (substitute* "magic/loader.py" - (("find_library\\('magic'\\)") - (string-append "'" magic "'")))))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - ;; The test suite mandates this variable. - (setenv "LC_ALL" "C.UTF-8") - (if tests? - (with-directory-excursion "test" - (invoke "python" "./libmagic_test.py")) - (format #t "test suite not run~%"))))))) - (native-inputs - (list which)) + (list + #:test-backend #~'custom + #:test-flags #~(list "test/libmagic_test.py") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'fix-tests + (lambda _ + ;; Adjust expected output for file@5.45. + (substitute* "test/libmagic_test.py" + (("PDF document, version 1\\.2, 2 pages") + "PDF document, version 1.2, 2 page(s)")))) + ;; Replace a specific method call with a hard-coded path to the + ;; necessary libmagic.so file in the store. + (add-before 'build 'hard-code-path-to-libmagic + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "magic/loader.py" + (("find_library\\('magic'\\)") + (format #f "~s" + (search-input-file inputs "lib/libmagic.so"))))))))) + (native-inputs (list which python-setuptools)) (inputs ;; python-magic needs to be able to find libmagic.so. (list file)) (synopsis "File type identification using libmagic") (description - "This module uses ctypes to access the libmagic file type -identification library. It makes use of the local magic database and -supports both textual and MIME-type output. Note that this module and -the python-file module both provide a \"magic.py\" file; these two -modules, which are different and were developed separately, both serve -the same purpose: to provide Python bindings for libmagic.") + "This module uses ctypes to access the libmagic file type identification +library. It makes use of the local magic database and supports both textual +and MIME-type output. Note that this module and the python-file module both +provide a \"magic.py\" file; these two modules, which are different and were +developed separately, both serve the same purpose: to provide Python bindings +for libmagic.") (license license:expat))) (define-public s3cmd @@ -21947,6 +21162,7 @@ check if a package meets certain version requirements, query CFLAGS and LDFLAGS and parse the output to build extensions with setup.py.") (license license:expat))) +;; This package is unmaintained since 2014, but still used in `khmer'. (define-public python-bz2file (package (name "python-bz2file") @@ -21956,11 +21172,10 @@ LDFLAGS and parse the output to build extensions with setup.py.") (method url-fetch) (uri (pypi-uri "bz2file" version)) (sha256 - (base32 - "126s53fkpx04f33a829yqqk8fj4png3qwg4m66cvlmhmwc8zihb4")))) - (build-system python-build-system) - (arguments - `(#:tests? #f)) ; Tests use deprecated python modules. + (base32 "126s53fkpx04f33a829yqqk8fj4png3qwg4m66cvlmhmwc8zihb4")))) + (build-system pyproject-build-system) + (arguments (list #:tests? #f)) ; Tests use deprecated python modules. + (native-inputs (list python-setuptools)) (home-page "https://github.com/nvawda/bz2file") (synopsis "Read and write bzip2-compressed files") (description @@ -22024,7 +21239,7 @@ codebase to support both Python 2 and Python 3 with minimal overhead.") (build-system pyproject-build-system) (native-inputs (list meson-python pkg-config - python-cython-3 + python-cython python-pytest python-sphinx)) (home-page "https://github.com/sagemath/cysignals") @@ -22067,105 +21282,37 @@ in strings and comments.") (define-public python-py3status (package (name "python-py3status") - (version "3.50") - (source - (origin - (method url-fetch) - (uri (pypi-uri "py3status" version)) - (sha256 - (base32 "0j2dx9lzpic15r8p0r0s3jmcskxpacahxl640b4864ldn5rlnh9d")))) - (build-system python-build-system) - (inputs - (list file)) - (arguments - '(#:phases - (modify-phases %standard-phases - ;; 'file' is used for detection of configuration file encoding - ;; let's make link the dependency to particular input - (add-before 'build 'patch-file-path - (lambda* (#:key inputs #:allow-other-keys) - (let ((file-path (assoc-ref inputs "file"))) - (substitute* "py3status/parse_config.py" - (("\\[\"file\", \"-b\"") - (string-append "['" file-path "/bin/file', '-b'"))) - #t)))) - #:tests? #f)) ; TODO: Requires many libraries not in Guix. - (home-page "https://github.com/ultrabug/py3status") - (synopsis "Extensible i3status wrapper written in Python") - (description "py3status is an i3status wrapper which extends i3status -functionality in 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") + (version "3.62") (source (origin - (method url-fetch) - (uri (pypi-uri "tblib" version)) + (method git-fetch) + (uri (git-reference + (url "https://github.com/ultrabug/py3status") + (commit version))) + (file-name (git-file-name name version)) (sha256 - (base32 "0lnnbicpxx774s29nkbic4rrqvy4rhxd8skx5pp6zxh7kwn4qh06")))) + (base32 "13ggwr35w5isylrg1n7akhycm18r03bxin95hdpcmqg7fvqyfppz")))) (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") + (add-before 'build 'hardcode-file-path + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "py3status/parse_config.py" + (("\\[\"file\", \"-b\"") + (format #f "[~s, \"-b\"" + (search-input-file inputs "bin/file"))))))))) + (native-inputs (list python-hatchling python-pytest)) + (inputs (list file)) + (home-page "https://github.com/ultrabug/py3status") + (synopsis "Extensible i3status wrapper written in Python") (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") + "py3status is an i3status wrapper which extends i3status functionality in +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-tftpy - (package - (name "python-tftpy") - (version "0.8.2") - (source - (origin - (method git-fetch) ;no tests in PyPI archive - (uri (git-reference - (url "https://github.com/msoulier/tftpy") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1gl04ps8h8r7av3h0zbm8gwmkqs9rkk5vf7n8mv2bzrkwvy9hacc")))) - (build-system python-build-system) - (arguments - `(#:phases (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? inputs outputs #:allow-other-keys) - (when tests? - ;; The default DEBUG logging level is way too verbose. - (substitute* "t/test.py" - (("logging\\.DEBUG") - "logging.INFO")) - (invoke "python" "-m" "unittest" "t/test.py"))))))) - (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") @@ -22380,147 +21527,57 @@ graphviz.") (define-public python-fastimport (package (name "python-fastimport") - (version "0.9.9") + (version "0.9.16") (source - (origin - (method url-fetch) - (uri (pypi-uri "fastimport" version)) - (sha256 - (base32 "06gk14qgm9dxx3pzjn0ckdbywc8ial2bjfzddqwlr4bn1nnqkbll")))) - (build-system python-build-system) + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jelmer/python-fastimport") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1pbnp9ffjs09ngva9qcizpscxl9s47rmd4dhxl62f5iwl6c46798")))) + (build-system pyproject-build-system) + (arguments (list #:test-backend #~'unittest)) + (native-inputs (list python-setuptools)) (home-page "https://github.com/jelmer/python-fastimport") (synopsis "VCS fastimport parser and generator in Python") - (description "This package provides a parser for and generator of the Git + (description + "This package provides a parser for and generator of the Git @url{https://www.kernel.org/pub/software/scm/git/docs/git-fast-import.html,fastimport} format.") (license license:gpl2+))) -(define-public python-twisted +(define-public python-pika (package - (name "python-twisted") - (version "24.11.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/twisted/twisted") - (commit (string-append "twisted-" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0k4rd5bpx40j1k0mgbhzqa35dyni0kk7pxjr8x3pm1iaka1718rh")))) + (name "python-pika") + (version "1.3.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pika/pika") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0bmp79lds26y2976xrpf53r3acqzpf3wpkprhlh3asqpfv5pwipb")))) (build-system pyproject-build-system) (arguments (list - ;; tests: skips=638, successes=9759 - #:test-backend #~'custom #:test-flags - #~(list "-m" "twisted.trial" - "--temp-directory=/tmp/_trial_temp" - (string-append "-j" (number->string (min 8 (parallel-job-count)))) - "twisted") + ;; XXX: These test most likely require a running RabbitMQ server. + #~(list "--ignore=tests/acceptance/blocking_adapter_test.py") #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'disable-broken-tests - (lambda _ - (for-each delete-file - (list - ;; No idea why they fail - "src/twisted/test/test_log.py" - ;; Network tests - "src/twisted/conch/test/test_cftp.py" - "src/twisted/internet/test/test_endpoints.py" - "src/twisted/protocols/test/test_tls.py" - "src/twisted/test/test_sslverify.py" - "src/twisted/web/test/test_agent.py" - "src/twisted/web/test/test_tap.py" - ;; These need a git executable - "src/twisted/python/test/test_release.py" - ;; These leave behind a socket file, which breaks the - ;; build with "...has an unsupported type" - "src/twisted/internet/test/test_unix.py" - "src/twisted/test/test_unix.py" - ;; These complain about missing test modules. - "src/twisted/test/test_failure.py" - "src/twisted/web/test/test_http2.py" - "src/twisted/conch/test/test_forwarding.py"))))))) - (propagated-inputs - (list python-attrs - python-automat - python-bcrypt - python-constantly - python-hyperlink - python-incremental - python-typing-extensions - python-zope-interface - ;; [conch] - python-appdirs - python-bcrypt - python-cryptography - ;; [http2] - python-h2 - python-priority - ;; [tls] - python-idna - python-pyopenssl - python-service-identity - ;; [serial] - python-pyserial)) - (native-inputs - (list glibc-utf8-locales ;for OpenTestLogTests.test_utf8 - python-hatch-fancy-pypi-readme - python-hatchling - python-httpx - python-hypothesis - python-incremental - python-pyhamcrest - python-pytest)) - (home-page "https://twistedmatrix.com/") - (synopsis "Asynchronous networking framework written in Python") - (description - "Twisted is an extensible framework for Python programming, with special -focus on event-based network programming and multiprotocol integration.") - (license license:expat))) - -(define-public python-pika - (package - (name "python-pika") - (version "1.2.1") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/pika/pika") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0sqj3bg6jwign8vwvn337fbwy69sm684ns1vh5kbfnskq4him9i2")))) - (build-system python-build-system) - (arguments - '(#:phases (modify-phases %standard-phases - (add-after 'unpack 'disable-live-tests - (lambda _ - ;; Disable tests that require RabbitMQ, which is not - ;; yet available in Guix. - (substitute* "nose2.cfg" - (("tests=tests/unit,tests/acceptance") - "start-dir=tests/unit")) - (with-directory-excursion "tests" - (for-each delete-file - '("unit/base_connection_tests.py" - "unit/threaded_test_wrapper_test.py"))))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (setenv "PYTHONPATH" (getcwd)) - (invoke "nose2" "-v"))))))) - (native-inputs - (list python-mock - python-nose2 - ;; These are optional at runtime, and provided here for tests. - python-gevent - python-tornado - python-twisted)) + (add-before 'check 'configure-tests + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (setenv "PYTHONPATH" (getcwd)))))))) + (native-inputs (list python-pytest + python-gevent + python-tornado + python-twisted + python-setuptools)) (home-page "https://pika.readthedocs.org") (synopsis "Pure Python AMQP Client Library") (description @@ -22551,29 +21608,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://bitbucket.org/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") @@ -22765,31 +21799,6 @@ Wikipedia code samples at docstring and colored output.") (license license:expat))) -(define-public python-tomlkit - (package - (name "python-tomlkit") - (version "0.13.3") - (source - (origin - (method url-fetch) - (uri (pypi-uri "tomlkit" version)) - (sha256 - (base32 "18fjmmhiv5jkkg1dwidmxd0sjqnkf675igizxsa2ppspxr3z4323")))) - (build-system pyproject-build-system) - (native-inputs - (list python-poetry-core - python-pytest - python-pyyaml)) - (home-page "https://github.com/sdispater/tomlkit") - (synopsis "Style-preserving TOML library") - (description - "TOML Kit is a 1.0.0rc1-compliant TOML library. It includes a parser that -preserves all comments, indentations, whitespace and internal element ordering, -and makes them accessible and editable via an intuitive API. It can also -create new TOML documents from scratch using the provided helpers. Part of the -implementation has been adapted, improved, and fixed from Molten.") - (license license:expat))) - (define-public python-shellingham (package (name "python-shellingham") @@ -23585,24 +22594,26 @@ characters, mouse support, and auto suggestions.") (define-public python-proselint (package (name "python-proselint") - (version "0.13.0") + (version "0.14.0") (source (origin (method url-fetch) (uri (pypi-uri "proselint" version)) (sha256 - (base32 - "0n1ahnq2mkgvh94g05xhc3l1fs3hh0ycskqlqivhhfdaq8ybdlkx")))) - (build-system python-build-system) + (base32 "11hfd207bhsvb0iznlnbr0w7jxihvn3ismpjbmz7c57a5ckn8jb2")))) + (build-system pyproject-build-system) (arguments - `(#:tests? #f - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'set-home-directory - (lambda _ - (setenv "HOME" "/tmp")))))) + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'set-home-directory + (lambda _ + (setenv "HOME" "/tmp")))))) + (native-inputs + (list python-poetry-core + python-pytest)) (propagated-inputs - (list python-click python-future python-six)) + (list python-click)) (home-page "http://proselint.com/") (synopsis "Linter for prose") (description "@code{python-proselint} is a linter for English prose, that @@ -24149,8 +23160,8 @@ pytest-fixtures-style dependency injection.") extracting firmware images") (license license:expat))) -(define-public python-binwalk - (deprecated-package "python-binwalk" binwalk)) +(define-deprecated-package python-binwalk + binwalk) (define-public python-bson (package @@ -24726,7 +23737,7 @@ from the header, as well as section details and data available.") (build-system pyproject-build-system) (propagated-inputs (list python-numpy)) (native-inputs - (list python-cython-3 + (list python-cython python-pytest python-setuptools python-setuptools-scm @@ -24761,29 +23772,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 python-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ - (invoke "python" "test3.py")))))) - (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") @@ -26968,37 +25956,6 @@ version of @code{SocksiPy} with bug fixes and extra features.") @code{ffmpeg} to open various audio formats.") (license license:expat))) ; MIT license -(define-public python-tqdm - (package - (name "python-tqdm") - (version "4.67.1") - (source - (origin - (method url-fetch) - (uri (pypi-uri "tqdm" version)) - (sha256 - (base32 "1wi7cql2fc76b5z9v1sr96ix2gxcb974z8qfydjkmh885k2zkbpq")))) - (build-system pyproject-build-system) - (arguments - (list #:test-flags - '(list "-o" "asyncio_mode=auto" - "-k" "not perf and not test_rlock_creation"))) - (native-inputs - (list python-pytest - python-pytest-asyncio - python-pytest-timeout - python-setuptools - python-setuptools-scm - python-toml - python-wheel)) - (home-page "https://github.com/tqdm/tqdm") - (synopsis "Fast, extensible progress meter") - (description - "Make loops show a progress bar on the console by just wrapping any -iterable with @code{|tqdm(iterable)|}. Offers many options to define -design and layout.") - (license (list license:mpl2.0 license:expat)))) - (define-public python-pkginfo (package (name "python-pkginfo") @@ -27028,63 +25985,6 @@ distribution, and the *.egg-info stored in a \"development checkout\" (e.g, created by running @code{python setup.py develop}).") (license license:expat))) -(define-public python-twine - (package - (name "python-twine") - (version "6.1.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "twine" version)) - (sha256 - (base32 "1gcd990456sk0g05ln6x6mwn9z1jybnm3wlkxq3ivyggf9i4ycmy")))) - (build-system pyproject-build-system) - (native-inputs - (list python-pretend - python-pytest - python-pytest-socket - python-setuptools - python-setuptools-scm)) - (propagated-inputs - (list python-id - python-keyring - python-packaging - python-readme-renderer - python-requests - python-requests-toolbelt - python-rfc3986 - python-rich - python-urllib3)) - (home-page "https://github.com/pypa/twine") - (synopsis "Collection of utilities for interacting with PyPI") - (description - "@code{twine} currently supports registering projects and uploading -distributions. It authenticates the user over HTTPS, allows them to pre-sign -their files and supports any packaging format (including wheels).") - (license license:asl2.0))) - -(define-public python-tracerite - (package - (name "python-tracerite") - (version "1.1.3") - (source (origin - (method url-fetch) - (uri (pypi-uri "tracerite" version)) - (sha256 - (base32 - "07mkg0sl0h335kj6yjvxki2c19gxhb7rkks1zgzh7aj0y83c17qi")))) - (build-system pyproject-build-system) - (arguments - (list #:tests? #f)) ;no tests in PyPI or Git - (native-inputs (list python-setuptools python-setuptools-scm)) - (propagated-inputs (list python-html5tagger)) - (home-page "https://github.com/sanic-org/tracerite") - (synopsis "Human-readable HTML tracebacks") - (description - "@code{tracerite} converts Python tracebacks into useful error messages -in human-readable HTML format.") - (license license:unlicense))) - ;; XXX: This project was archived by the owner on Oct 4, 2023. It is now ;; read-only. Consider to remvoe when nothing depends on it. (define-public python-ratelimiter @@ -27144,7 +26044,7 @@ executed more than a given number of times during a given period.") (substitute* "pyproject.toml" ((".*addopts.*") ""))))))) (native-inputs - (list python-cython-3 + (list python-cython python-pytest python-pytest-asyncio python-pytest-timeout @@ -27357,59 +26257,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") @@ -27771,64 +26618,6 @@ a notation for identifying weeks; yyyyWww (where the W is a literal). Week instances stringify to this form.") (license license:bsd-3))) -(define-public python-tokenize-rt - (package - (name "python-tokenize-rt") - (version "6.2.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/asottile/tokenize-rt") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "1maa9sifma0a6v7kl7mmyqzj0jdclzlp4wjr0vkdx95raihxx4fv")))) - (build-system pyproject-build-system) - (native-inputs (list python-pytest python-setuptools)) - (home-page "https://github.com/asottile/tokenize-rt") - (synopsis "Wrapper around the stdlib tokenize which roundtrips") - (description - "This Python library is a wrapper around @code{tokenize} from the Python -standard library. It provides two additional tokens @code{ESCAPED_NL} and -@code{UNIMPORTANT_WS}, and a @code{Token} data type. Use @code{src_to_tokens} -and @code{tokens_to_src} to roundtrip.") - (license license:expat))) - -(define-public python-towncrier - (package - (name "python-towncrier") - (version "23.6.0") - (source (origin - (method url-fetch) - (uri (pypi-uri "towncrier" version)) - (sha256 - (base32 - "1hbhzxcn30qlnab1rnk2bf09jfy5bpxzfdp6zfn8sz3jnidbsagw")))) - (build-system pyproject-build-system) - (arguments - (list #:test-flags - ;; TODO: Why is this failing? - #~'("-k" "not test_version"))) - (propagated-inputs - (list python-click - python-click-default-group - python-incremental - python-jinja2 - python-tomli)) - (native-inputs - (list git-minimal/pinned ;tests create git repositories - python-hatchling - python-packaging - python-pytest - python-twisted)) - (home-page "https://towncrier.readthedocs.io/en/stable/") - (synopsis "Manage release notes") - (description - "@code{towncrier} is a utility to produce useful, summarized news -files (also known as changelogs) for a project.") - (license license:expat))) - (define-public python-future-fstrings (package (name "python-future-fstrings") @@ -28835,49 +27624,19 @@ a file (or some information about a file), return a set of standardized tags identifying what the file is.") (license license:expat))) -(define-public python-tldextract +(define-public tldr (package - (name "python-tldextract") - (version "3.3.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "tldextract" version)) - (sha256 - (base32 "1wac4yvcpgqjvls770mfx165amvy7gr00nnd2w24bqqwyamj9kdd")))) - (build-system pyproject-build-system) - (native-inputs (list nss-certs-for-test - python-pytest - python-pytest-mock - python-responses - python-setuptools - python-setuptools-scm - python-wheel)) - (propagated-inputs (list python-filelock python-idna python-requests - python-requests-file)) - (home-page "https://github.com/john-kurkowski/tldextract") - (synopsis - "Separate the TLD from the registered domain and subdomains of a URL") - (description - "TLDExtract accurately separates the TLD from the registered domain and -subdomains of a URL, using the Public Suffix List. By default, this includes -the public ICANN TLDs and their exceptions. It can optionally support the -Public Suffix List's private domains as well.") - (license license:bsd-3))) - -(define-public python-tldr - (package - (name "python-tldr") - (version "3.3.0") + (name "tldr") + (version "3.4.3") (source (origin - (method git-fetch) ; there's no test in PyPI + (method git-fetch) (uri (git-reference - (url "https://github.com/tldr-pages/tldr-python-client") - (commit version))) + (url "https://github.com/tldr-pages/tldr-python-client") + (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "15mab6a7ph2rviy5f2ypid6qdbb583fvaf5zhd6q0nrggxx0kkcm")))) + (base32 "06rhpywaypqwakw8v187cdf52yl5c7fm19f1q7nbbsydbs0ndmb1")))) (build-system pyproject-build-system) (arguments (list @@ -28889,12 +27648,10 @@ Public Suffix List's private domains as well.") (lambda _ (invoke "make" "-C" "docs")))))) (native-inputs - (list python-pytest - python-pytest-runner - python-setuptools - python-sphinx-argparse - python-wheel)) - (propagated-inputs + (list python-hatchling + python-pytest + python-sphinx-argparse)) + (inputs (list python-colorama python-termcolor python-shtab)) @@ -28903,7 +27660,10 @@ Public Suffix List's private domains as well.") (description "This package provides the @code{tldr} command allowing users to view @code{tldr} pages from a shell. The @code{tldr} pages are a community effort to simplify the man pages with practical examples.") - (license license:expat))) ; MIT license + (license license:expat))) + +(define-public python-tldr + (deprecated-package "python-tldr" tldr)) (define-public python-nodeenv (package @@ -29378,63 +28138,6 @@ library's @code{threading} module.") instead of pickle.") (license license:psfl))) -(define-public python-toolrack - (package - (name "python-toolrack") - (version "4.0.3") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/albertodonato/toolrack") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1aglfj7j25fiwx9jh1rl34mlhfpdhn8yrkn30vhkz9yw7zrx42h0")))) - (build-system pyproject-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'patch-/bin/sh - (lambda _ - (substitute* "tests/aio/process_test.py" - (("/bin/sh") - (which "sh")))))))) - (native-inputs (list python-pytest - python-pytest-asyncio - python-pytest-mock - python-setuptools)) - (home-page "https://github.com/albertodonato/toolrack") - (synopsis "Collection of Python utility functions and classes") - (description "This package provides a collection of miscellaneous utility -functions and classes.") - (license license:lgpl3+))) - -(define-public python-toolz - (package - (name "python-toolz") - (version "1.0.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "toolz" version)) - (sha256 - (base32 - "00ks0jhl1jwm9576c5sh10pnla8ni21yvg4kcxasr627l3cy71ic")))) - (build-system pyproject-build-system) - (native-inputs - (list python-pytest - python-setuptools - python-wheel)) - (home-page "https://github.com/pytoolz/toolz/") - (synopsis "List processing tools and functional utilities") - (description - "This package provides a set of utility functions for iterators, -functions, and dictionaries.") - (license license:bsd-3))) - (define-public python-cytoolz (package (name "python-cytoolz") @@ -29947,186 +28650,6 @@ project.") ;; Either license applies. (license (list license:expat license:asl2.0)))) -(define-public python-trio - (package - (name "python-trio") - (version "0.28.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "trio" version)) - (sha256 - (base32 "019wqwlbj185skknbjd7paxqqx6vl5gpqk2fwmc5d2lyzsb7hm2f")))) - (build-system pyproject-build-system) - (arguments - (list - #:test-flags - `(list "-k" - (string-append - ;; This tests times out. - "not test_ki_protection_works" - " and not test_KI_interrupts" - ;; This fails with: signal only works in main thread of the main interpreter - " and not test_catch_signals_race_condition_on_exit" - ;; Assertion errors. - " and not test_named_thread_os" - " and not test_has_pthread_setname_np" - " and not test_guest_mode_ki" - " and not test_run_in_trio_thread_ki" - " and not test_simple_cancel_scope_usage_doesnt_create\ -_cyclic_garbage" - " and not test_nursery_cancel_doesnt_create_cyclic_garbage" - " and not test_cancel_scope_exit_doesnt_create_cyclic_garbage" - " and not test_locals_destroyed_promptly_on_cancel" - " and not test_ipython_exc_handler" - " and not test_for_leaking_fds" - ;; Signals don’t work in the build sandbox. - " and not test_open_signal_receiver" - ;; These try to raise KeyboardInterrupt which does not work - ;; in the build environment. - " and not test_ki_self" - " and not test_ki_wakes_us_up" - ;; Failure in name resolution. - " and not test_getnameinfo" - " and not test_SocketType_resolve" - ;; OSError: protocol not found. - " and not test_getprotobyname" - ;; EOFError: Ran out of input. - " and not test_static_tool_sees_all_symbols") - ,@(if (package? (this-package-native-input "python-trustme")) - '() - `("--ignore=src/trio/_tests/test_dtls.py" - "--ignore=src/trio/_tests/test_highlevel_ssl_helpers.py" - "--ignore=src/trio/_tests/test_ssl.py")) - ;; It rerquires black and ruff to generate a final report. - "--ignore=src/trio/_tests/tools/test_gen_exports.py" - "src/trio/_tests") - #:phases - '(modify-phases %standard-phases - (add-after 'unpack 'ignore-deprecations - (lambda _ - (substitute* "pyproject.toml" - ((" \"error\",") " \"ignore\",")))) - (add-before 'check 'set-env - (lambda _ - ;; Tests require a writable home. - (setenv "HOME" "/tmp") - ;; #$output is first in path which causes "import file mismatch" - (setenv "PYTHONPATH" (string-append (getcwd) "/src:$PYTHONPATH"))))))) - (native-inputs - (append - (if (supported-package? python-pyopenssl) - (list python-pyopenssl) - '()) - (list python-pytest - python-setuptools) - (if (supported-package? python-trustme) - (list python-trustme) - '()) - (list python-wheel))) - (propagated-inputs - (list python-attrs - python-cffi - python-exceptiongroup - python-idna - python-outcome - python-sniffio - python-sortedcontainers)) - (home-page "https://github.com/python-trio/trio") - (synopsis "Friendly Python library for async concurrency and I/O") - (description - "Trio strives to be a production-quality, async/await-native I/O library -for Python. Like all async libraries, its main purpose is to help you write -programs that do multiple things at the same time with parallelized I/O.") - ;; Either license applies. - (license (list license:expat license:asl2.0)))) - -(define-public python-trio-typing - (package - (name "python-trio-typing") - (version "0.10.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "trio-typing" version)) - (sha256 - (base32 "1hvsj3w500i33ykfgh3sfkjnxhxf05incx131smshlkd562fcph6")))) - (build-system pyproject-build-system) - (native-inputs (list python-pytest python-setuptools python-wheel)) - (propagated-inputs - (list python-async-generator - python-importlib-metadata - python-mypy-extensions - python-packaging - python-trio - python-typing-extensions)) - (home-page "https://github.com/python-trio/trio-typing") - (synopsis "Static type checking support for Trio and related projects") - (description - "This package provides: - -@itemize -@item PEP 561 typing stubs packages for the Trio project packages: - -@itemize -@item trio (@code{trio-stubs}) -@item outcome (@code{outcome-stubs}) -@item async_generator (@code{async_generator-stubs}) -@end itemize - -@item A package @code{trio_typing} containing types that Trio programs often -want to refer to (@code{AsyncGenerator[Y, S]} and @code{TaskStatus[T])} and -a mypy plugin that smooths over some limitations in the basic type hints. -@end itemize") - ;; Either license applies. - (license (list license:expat license:asl2.0)))) - -(define-public python-trio-websocket - (package - (name "python-trio-websocket") - (version "0.11.1") - (source - (origin - (method git-fetch) ;no tests in pypi archive - (uri (git-reference - (url "https://github.com/HyperionGray/trio-websocket") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 "1sw85r8gikd86zc8jaqv0vmgcf2k62v6zjzxiv8xr6zm8ridplkm")))) - (build-system pyproject-build-system) - (arguments - (list - #:test-flags - '(list "-k" - ;; FIXME: These raise nursery exceptions. Perhaps pytest-trio is - ;; too old? - (string-append "not test_handshake_exception_before_accept" - " and not test_reject_handshake" - " and not test_reject_handshake_invalid_info_status" - " and not test_client_open_timeout" - " and not test_client_close_timeout" - " and not test_client_connect_networking_error" - " and not test_finalization_dropped_exception")))) - (native-inputs - (list python-pytest - python-pytest-trio - python-setuptools - python-trustme - python-wheel)) - (propagated-inputs (list python-async-generator python-trio python-wsproto)) - (home-page "https://github.com/HyperionGray/trio-websocket") - (synopsis "WebSocket library for Trio") - (description "This library implements both server and client aspects of -the @url{https://tools.ietf.org/html/rfc6455, the WebSocket protocol}, -striving for safety, correctness, and ergonomics. It is based on the -@url{https://wsproto.readthedocs.io/en/latest/, wsproto project}, which is a -@url{https://sans-io.readthedocs.io/, Sans-IO} state machine that implements -the majority of the WebSocket protocol, including framing, codecs, and events. -This library handles I/O using @url{https://trio.readthedocs.io/en/latest/, -the Trio framework}.") - (license license:expat))) - (define-public python-humanize (package (name "python-humanize") @@ -30148,26 +28671,6 @@ and dates in \"human readable\" forms. For example, it would display \"12345591313\" as \"12.3 billion\".") (license license:expat))) -(define-public python-toolshed - (package - (name "python-toolshed") - (version "0.4.6") - (source - (origin - (method url-fetch) - (uri (pypi-uri "toolshed" version)) - (sha256 - (base32 - "14zvz51gzf9i1i3d1sj363ba4rksl6lcf4lz1arl8hpqgcbir8r3")))) - (build-system python-build-system) - (native-inputs - (list python-nose)) - (home-page "https://github.com/brentp/toolshed/") - (synopsis "Collection of modules and functions for working with data") - (description "This is a collection of well-tested, simple modules and -functions that aim to reduce boilerplate when working with data.") - (license license:bsd-2))) - (define-public python-annoy (package (name "python-annoy") @@ -31433,37 +29936,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 - #:phases - #~(modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? test-flags #:allow-other-keys) - (when tests? - (apply invoke "python" "-m" "unittest" test-flags))))))) - (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") @@ -33005,33 +31477,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") @@ -34582,18 +33027,39 @@ were local.") (define-public python-nampa (package (name "python-nampa") - (version "0.1.1") + ;; PyPI version is 0.1.1 from 2017. Tag 1.0 on git is from 2020 and still + ;; has 0.1.1 as version. Latest commit is from 2024. + (properties '((commit . "cb6a63aae64324f57bdc296064bc6aa2b99ff99a") + (revision . "0"))) + (version (git-version "1.0.0" + (assoc-ref properties 'revision) + (assoc-ref properties 'commit))) (source (origin - (method url-fetch) - (uri (pypi-uri "nampa" version)) + (method git-fetch) + (uri (git-reference + (url "https://github.com/thebabush/nampa") + (commit (assoc-ref properties 'commit)))) + (file-name (git-file-name name version)) (sha256 - (base32 "0k6cq2gflpkm40qhgqbbcjmq5lq589c15bmk567qyh3d08062hvd")))) + (base32 "0a3fx0wpch4il1fwv1nan6nsd7bv84b0bs2xxxjacisw3spizlg0")))) (build-system pyproject-build-system) (arguments - (list #:tests? #f)) ;no tests in PyPI archvie, no 0.1.1 tag in Git + (list + #:test-flags + #~(list "-k test_random_values") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-tests + (lambda _ + ;; Unclear why this top-level __init__.py is here. It seems to + ;; setup a plugin for binaryninja, which Guix does not package. + (delete-file "__init__.py") + ;; Yields tests, which is not allowed anymore. + (substitute* "tests/test_crc.py" + (("yield") "#yield"))))))) (propagated-inputs (list python-future)) - (native-inputs (list python-setuptools)) + (native-inputs (list python-pytest python-setuptools)) (home-page "https://github.com/thebabush/nampa") (synopsis "Python implementation of IDA Pro's FLIRT technology") (description @@ -35260,67 +33726,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.8.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "tablib" version)) - (sha256 - (base32 "0ayv93q7kpii6z3n57i6b78mpr1ibwd70nvd981a05d7cpfbrn4l")))) - (build-system pyproject-build-system) - (native-inputs - (list python-pandas - python-pytest - python-pytest-cov - python-setuptools - python-setuptools-scm - python-wheel)) - (propagated-inputs - (list python-markuppy - python-odfpy - python-openpyxl - python-pyyaml - python-tabulate - 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") @@ -35907,8 +34312,8 @@ all the niceties of modern GUI-based debuggers in a more lightweight and keyboard-friendly package.") (license license:expat))) -(define-public pudb - (deprecated-package "pudb" python-pudb)) +(define-deprecated-package pudb + python-pudb) (define-public python-iwlib (package @@ -38114,6 +36519,1571 @@ 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-tokenize-rt + (package + (name "python-tokenize-rt") + (version "6.2.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/asottile/tokenize-rt") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1maa9sifma0a6v7kl7mmyqzj0jdclzlp4wjr0vkdx95raihxx4fv")))) + (build-system pyproject-build-system) + (native-inputs (list python-pytest python-setuptools)) + (home-page "https://github.com/asottile/tokenize-rt") + (synopsis "Wrapper around the stdlib tokenize which roundtrips") + (description + "This Python library is a wrapper around @code{tokenize} from the Python +standard library. It provides two additional tokens @code{ESCAPED_NL} and +@code{UNIMPORTANT_WS}, and a @code{Token} data type. Use @code{src_to_tokens} +and @code{tokens_to_src} to roundtrip.") + (license license:expat))) + +(define-public python-tomlkit + (package + (name "python-tomlkit") + (version "0.13.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "tomlkit" version)) + (sha256 + (base32 "18fjmmhiv5jkkg1dwidmxd0sjqnkf675igizxsa2ppspxr3z4323")))) + (build-system pyproject-build-system) + (native-inputs + (list python-poetry-core + python-pytest + python-pyyaml)) + (home-page "https://github.com/sdispater/tomlkit") + (synopsis "Style-preserving TOML library") + (description + "TOML Kit is a 1.0.0rc1-compliant TOML library. It includes a parser that +preserves all comments, indentations, whitespace and internal element ordering, +and makes them accessible and editable via an intuitive API. It can also +create new TOML documents from scratch using the provided helpers. Part of the +implementation has been adapted, improved, and fixed from Molten.") + (license license:expat))) + +(define-public python-toolrack + (package + (name "python-toolrack") + (version "4.0.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/albertodonato/toolrack") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1aglfj7j25fiwx9jh1rl34mlhfpdhn8yrkn30vhkz9yw7zrx42h0")))) + (build-system pyproject-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-/bin/sh + (lambda _ + (substitute* "tests/aio/process_test.py" + (("/bin/sh") + (which "sh")))))))) + (native-inputs + (list python-pytest + python-pytest-asyncio + python-pytest-mock + python-setuptools)) + (home-page "https://github.com/albertodonato/toolrack") + (synopsis "Collection of Python utility functions and classes") + (description "This package provides a collection of miscellaneous utility +functions and classes.") + (license license:lgpl3+))) + +(define-public python-toolshed + (package + (name "python-toolshed") + (version "0.4.6") + (source + (origin + (method url-fetch) + (uri (pypi-uri "toolshed" version)) + (sha256 + (base32 "14zvz51gzf9i1i3d1sj363ba4rksl6lcf4lz1arl8hpqgcbir8r3")))) + (build-system pyproject-build-system) + (arguments + (list #:tests? #f)) ;tests are not included in PyPI archive + (native-inputs + (list python-setuptools)) + (home-page "https://github.com/brentp/toolshed/") + (synopsis "Collection of modules and functions for working with data") + (description "This is a collection of well-tested, simple modules and +functions that aim to reduce boilerplate when working with data.") + (license license:bsd-2))) + +(define-public python-toolz + (package + (name "python-toolz") + (version "1.0.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "toolz" version)) + (sha256 + (base32 "00ks0jhl1jwm9576c5sh10pnla8ni21yvg4kcxasr627l3cy71ic")))) + (build-system pyproject-build-system) + (native-inputs + (list python-pytest + python-setuptools + python-wheel)) + (home-page "https://github.com/pytoolz/toolz/") + (synopsis "List processing tools and functional utilities") + (description + "This package provides a set of utility functions for iterators, +functions, and dictionaries.") + (license license:bsd-3))) + +(define-public python-toposort + (package + (name "python-toposort") + (version "1.10") + (source + (origin + (method url-fetch) + (uri (pypi-uri "toposort" version)) + (sha256 + (base32 "1gd66z5dy6j7qs5qkj1pg0vb15rwd571yq02fkm9d9nhaff4gfxz")))) + (build-system pyproject-build-system) + (arguments + (list #:test-backend #~'custom + #:test-flags #~(list "-m" "test.test_toposort"))) + (native-inputs (list python-setuptools)) + (home-page "https://gitlab.com/ericvsmith/toposort") + (synopsis "Topological sort algorithm") + (description + "This package provides an implementation of a topological sort +algorithm.") + (license license:asl2.0))) + +(define-public python-towncrier + (package + (name "python-towncrier") + (version "25.8.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "towncrier" version)) + (sha256 + (base32 "1c8fjjwlx29jgllxvyzby4cn51iraxba0cmfnfmmgb9iz0lnvwgf")))) + (build-system pyproject-build-system) + (native-inputs + (list git-minimal/pinned ;tests create git repositories + python-hatchling + python-pytest + python-twisted)) + (propagated-inputs + (list python-click + python-jinja2)) + (home-page "https://towncrier.readthedocs.io/en/stable/") + (synopsis "Manage release notes") + (description + "@code{towncrier} is a utility to produce useful, summarized news files + (also known as changelogs) for a project.") + (license license:expat))) + +(define-public python-tqdm + (package + (name "python-tqdm") + (version "4.67.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "tqdm" version)) + (sha256 + (base32 "1wi7cql2fc76b5z9v1sr96ix2gxcb974z8qfydjkmh885k2zkbpq")))) + (build-system pyproject-build-system) + (arguments + (list #:test-flags + '(list "-o" "asyncio_mode=auto" + "-k" "not perf and not test_rlock_creation"))) + (native-inputs + (list python-pytest + python-pytest-asyncio + python-pytest-timeout + python-setuptools + python-setuptools-scm + python-toml + python-wheel)) + (home-page "https://github.com/tqdm/tqdm") + (synopsis "Fast, extensible progress meter") + (description + "Make loops show a progress bar on the console by just wrapping any +iterable with @code{|tqdm(iterable)|}. Offers many options to define +design and layout.") + (license (list license:mpl2.0 license:expat)))) + +(define-public python-traitlets + (package + (name "python-traitlets") + (version "5.14.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "traitlets" version)) + (sha256 + (base32 "0zjj8ha4z5lbhhmvcl3q8wp5qmwqq0lwxma3d8qvh10s6xdi11c5")))) + (build-system pyproject-build-system) + (arguments + (list + #:test-flags + '(list "-k" "not mypy_list_typing and not mypy_dict_typing"))) + (native-inputs + (list python-argcomplete + python-hatchling + python-mypy + python-pytest + python-pytest-mock + python-pytest-mypy-testing)) + (home-page "https://ipython.org") + (synopsis "Configuration system for Python applications") + (description + "Traitlets is a framework that lets Python classes have attributes with +type checking, dynamically calculated default values, and ‘on change’ +callbacks. The package also includes a mechanism to use traitlets for +configuration, loading values from files or from command line arguments. This +is a distinct layer on top of traitlets, so you can use traitlets in your code +without using the configuration machinery.") + (license license:bsd-3))) + +(define-public python-translitcodec + (package + (name "python-translitcodec") + (version "0.7.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/claudep/translitcodec") + (commit (string-append "version-" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1cj11sa5hy8ga7p0dgwi4g4gv0qx6c1yi2csgnvxiir16ywslhpw")))) + (build-system pyproject-build-system) + (native-inputs (list python-pytest python-setuptools)) + (home-page "https://github.com/claudep/translitcodec") + (synopsis "Unicode to 8-bit charset transliteration codec") + (description + "This package contains codecs for transliterating ISO 10646 texts into +best-effort representations using smaller coded character sets (ASCII, +ISO 8859, etc.).") + (license license:expat))) + +(define-public python-treelib + (package + (name "python-treelib") + (version "1.8.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/caesar0301/treelib") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0jd3rdaq8v7ykb626cm1gxa03higqnn2pmnv46fc0lc55xbrkxlf")) + (patches + (search-patches "python-treelib-remove-python2-compat.patch")))) + (build-system pyproject-build-system) + (native-inputs (list python-poetry-core python-pytest)) + (home-page "https://github.com/caesar0301/treelib") + (synopsis "Implementation of a tree structure in Python") + (description + "This package provides a Python implementation of a tree structure.") + (license license:asl2.0))) + +(define-public python-trio + (package + (name "python-trio") + (version "0.28.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "trio" version)) + (sha256 + (base32 "019wqwlbj185skknbjd7paxqqx6vl5gpqk2fwmc5d2lyzsb7hm2f")))) + (build-system pyproject-build-system) + (arguments + (list + #:test-flags + `(list "-k" + (string-append + ;; This tests times out. + "not test_ki_protection_works" + " and not test_KI_interrupts" + ;; This fails with: signal only works in main thread of the main interpreter + " and not test_catch_signals_race_condition_on_exit" + ;; Assertion errors. + " and not test_named_thread_os" + " and not test_has_pthread_setname_np" + " and not test_guest_mode_ki" + " and not test_run_in_trio_thread_ki" + " and not test_simple_cancel_scope_usage_doesnt_create\ +_cyclic_garbage" + " and not test_nursery_cancel_doesnt_create_cyclic_garbage" + " and not test_cancel_scope_exit_doesnt_create_cyclic_garbage" + " and not test_locals_destroyed_promptly_on_cancel" + " and not test_ipython_exc_handler" + " and not test_for_leaking_fds" + ;; Signals don’t work in the build sandbox. + " and not test_open_signal_receiver" + ;; These try to raise KeyboardInterrupt which does not work + ;; in the build environment. + " and not test_ki_self" + " and not test_ki_wakes_us_up" + ;; Failure in name resolution. + " and not test_getnameinfo" + " and not test_SocketType_resolve" + ;; OSError: protocol not found. + " and not test_getprotobyname" + ;; EOFError: Ran out of input. + " and not test_static_tool_sees_all_symbols") + ,@(if (package? (this-package-native-input "python-trustme")) + '() + `("--ignore=src/trio/_tests/test_dtls.py" + "--ignore=src/trio/_tests/test_highlevel_ssl_helpers.py" + "--ignore=src/trio/_tests/test_ssl.py")) + ;; It rerquires black and ruff to generate a final report. + "--ignore=src/trio/_tests/tools/test_gen_exports.py" + "src/trio/_tests") + #:phases + '(modify-phases %standard-phases + (add-after 'unpack 'ignore-deprecations + (lambda _ + (substitute* "pyproject.toml" + ((" \"error\",") " \"ignore\",")))) + (add-before 'check 'set-env + (lambda _ + ;; Tests require a writable home. + (setenv "HOME" "/tmp") + ;; #$output is first in path which causes "import file mismatch" + (setenv "PYTHONPATH" (string-append (getcwd) "/src:$PYTHONPATH"))))))) + (native-inputs + (append + (if (supported-package? python-pyopenssl) + (list python-pyopenssl) + '()) + (list python-pytest + python-setuptools) + (if (supported-package? python-trustme) + (list python-trustme) + '()) + (list python-wheel))) + (propagated-inputs + (list python-attrs + python-cffi + python-exceptiongroup + python-idna + python-outcome + python-sniffio + python-sortedcontainers)) + (home-page "https://github.com/python-trio/trio") + (synopsis "Friendly Python library for async concurrency and I/O") + (description + "Trio strives to be a production-quality, async/await-native I/O library +for Python. Like all async libraries, its main purpose is to help you write +programs that do multiple things at the same time with parallelized I/O.") + ;; Either license applies. + (license (list license:expat license:asl2.0)))) + +(define-public python-trio-typing + (package + (name "python-trio-typing") + (version "0.10.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "trio-typing" version)) + (sha256 + (base32 "1hvsj3w500i33ykfgh3sfkjnxhxf05incx131smshlkd562fcph6")))) + (build-system pyproject-build-system) + (native-inputs (list python-pytest python-setuptools python-wheel)) + (propagated-inputs + (list python-async-generator + python-importlib-metadata + python-mypy-extensions + python-packaging + python-trio + python-typing-extensions)) + (home-page "https://github.com/python-trio/trio-typing") + (synopsis "Static type checking support for Trio and related projects") + (description + "This package provides: + +@itemize +@item PEP 561 typing stubs packages for the Trio project packages: + +@itemize +@item trio (@code{trio-stubs}) +@item outcome (@code{outcome-stubs}) +@item async_generator (@code{async_generator-stubs}) +@end itemize + +@item A package @code{trio_typing} containing types that Trio programs often +want to refer to (@code{AsyncGenerator[Y, S]} and @code{TaskStatus[T])} and +a mypy plugin that smooths over some limitations in the basic type hints. +@end itemize") + ;; Either license applies. + (license (list license:expat license:asl2.0)))) + +(define-public python-trubar + (package + (name "python-trubar") + (version "0.3.4") + (source + (origin + (method url-fetch) + (uri (pypi-uri "trubar" version)) + (sha256 + (base32 "149l5wid1b41gmfzsrhapcigcbcsflviz8p1pfa937443fxw1dkd")))) + (build-system pyproject-build-system) + (arguments + (list + #:test-flags + #~(list "-k" (string-join + ;; AttributeError: module 'libcst' has no attribute + ;; 'FlattenSentinel'. Did you mean: 'MaybeSentinel'? + (list "not test_import_from_future" + "test_inport_after_docstring" + ;; AssertionError: Items in the second set but not + ;; the first + "test_walk_files") + " and not ")))) + (native-inputs + (list python-pytest + python-setuptools + python-wheel)) + (propagated-inputs + (list python-libcst + python-pyyaml)) + (home-page "https://github.com/janezd/trubar") + (synopsis "Utility for translation of Python sources") + (description + "This package provides a tool for translation and localization of Python +programs via modification of source files. Trubar supports f-strings and does +not require any changes to the original source code, such as marking strings +for translation.") + (license license:expat))) + +(define-public python-twine + (package + (name "python-twine") + (version "6.2.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "twine" version)) + (sha256 + (base32 "1kvm9cdvbnh232wafww1w5scaic9kkrwhlff1mvmk68cswphvvg5")))) + (build-system pyproject-build-system) + (arguments + (list + ;; tests: 228 passed, 1 deselected + #:test-flags + ;; Assertion is not equal for one tests. + #~(list "--deselect=tests/test_check.py::test_fails_rst_syntax_error"))) + (native-inputs + (list python-pretend + python-pytest + python-pytest-socket + python-setuptools + python-setuptools-scm)) + (propagated-inputs + (list python-id + python-keyring + python-packaging + python-readme-renderer + python-requests + python-requests-toolbelt + python-rfc3986 + python-rich + python-urllib3)) + (home-page "https://github.com/pypa/twine") + (synopsis "Collection of utilities for interacting with PyPI") + (description + "@code{twine} currently supports registering projects and uploading +distributions. It authenticates the user over HTTPS, allows them to pre-sign +their files and supports any packaging format (including wheels).") + (license license:asl2.0))) + +(define-public python-twisted + (package + (name "python-twisted") + (version "24.11.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/twisted/twisted") + (commit (string-append "twisted-" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0k4rd5bpx40j1k0mgbhzqa35dyni0kk7pxjr8x3pm1iaka1718rh")))) + (build-system pyproject-build-system) + (arguments + (list + ;; tests: skips=638, successes=9759 + #:test-backend #~'custom + #:test-flags + #~(list "-m" "twisted.trial" + "--temp-directory=/tmp/_trial_temp" + (string-append "-j" (number->string (min 8 (parallel-job-count)))) + "twisted") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'disable-broken-tests + (lambda _ + (for-each delete-file + (list + ;; No idea why they fail + "src/twisted/test/test_log.py" + ;; Network tests + "src/twisted/conch/test/test_cftp.py" + "src/twisted/internet/test/test_endpoints.py" + "src/twisted/protocols/test/test_tls.py" + "src/twisted/test/test_sslverify.py" + "src/twisted/web/test/test_agent.py" + "src/twisted/web/test/test_tap.py" + ;; These need a git executable + "src/twisted/python/test/test_release.py" + ;; These leave behind a socket file, which breaks the + ;; build with "...has an unsupported type" + "src/twisted/internet/test/test_unix.py" + "src/twisted/test/test_unix.py" + ;; These complain about missing test modules. + "src/twisted/test/test_failure.py" + "src/twisted/web/test/test_http2.py" + "src/twisted/conch/test/test_forwarding.py"))))))) + (propagated-inputs + (list python-attrs + python-automat + python-bcrypt + python-constantly + python-hyperlink + python-incremental + python-typing-extensions + python-zope-interface + ;; [conch] + python-appdirs + python-bcrypt + python-cryptography + ;; [http2] + python-h2 + python-priority + ;; [tls] + python-idna + python-pyopenssl + python-service-identity + ;; [serial] + python-pyserial)) + (native-inputs + (list glibc-utf8-locales ;for OpenTestLogTests.test_utf8 + python-hatch-fancy-pypi-readme + python-hatchling + python-httpx + python-hypothesis + python-incremental + python-pyhamcrest + python-pytest)) + (home-page "https://twistedmatrix.com/") + (synopsis "Asynchronous networking framework written in Python") + (description + "Twisted is an extensible framework for Python programming, with special +focus on event-based network programming and multiprotocol integration.") + (license license:expat))) + (define-public python-typeapi (package (name "python-typeapi") |
