;;; Copyright © 2020 Collin J. Doering ;;; ;;; This file is part of the GNU Guix channel rekahsoft-guix ;;; ;;; The rekahsoft-guix channel for GNU Guix is free software; you can ;;; redistribute it and/or modify it under the terms of the GNU General Public ;;; License as published by the Free Software Foundation; either version 3 of ;;; the License, or (at your option) any later version. ;;; ;;; The rekahsoft-guix channel for GNU Guix is distributed in the hope that it ;;; will be useful, but WITHOUT ANY WARRANTY; without even the implied ;;; warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License along ;;; with the rekahsoft-guix channel for GNU Guix. If not, see ;;; . (define-module (rekahsoft-gnu packages python-xyz) #:use-module ((guix licenses) #:prefix license:) #:use-module (gnu packages) #:use-module (gnu packages check) #:use-module (gnu packages cmake) #:use-module (gnu packages commencement) #:use-module (gnu packages glib) #:use-module (gnu packages groff) #:use-module (gnu packages libffi) #:use-module (gnu packages maths) #:use-module (gnu packages python) #:use-module (gnu packages python-build) #:use-module (gnu packages python-crypto) #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) #:use-module (gnu packages serialization) #:use-module (gnu packages sphinx) #:use-module (gnu packages time) #:use-module (gnu packages tls) #:use-module (gnu packages xml) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix gexp) #:use-module (guix git-download) #:use-module (guix build-system python) #:use-module (guix build-system pyproject) #:use-module (srfi srfi-1)) ;; TODO: Candidate for upstream (define-public python-virtualenv-clone (package (name "python-virtualenv-clone") (version "0.5.7") (source (origin (method url-fetch) (uri (pypi-uri "virtualenv-clone" version)) (sha256 (base32 "06jhhf8hndcgyk9k3bjbk3vz1xpajfxj9667agqzhlk1qcsyk3j1")))) (build-system python-build-system) ;; (native-inputs ;; `(("python-pytest" ,python-pytest) ;; ("python-tox" ,python-tox) ;; ("python-virtualenv" ,python-virtualenv))) (arguments ;; FIXME: Tests currently fail `(#:tests? #f)) (home-page "https://github.com/edwardgeorge/virtualenv-clone") (synopsis "Script to clone virtualenvs.") (description "Script to clone virtualenvs.") (license license:expat))) ;; TODO: Candidate for upstream (define-public python-arpeggio (package (name "python-arpeggio") (version "1.9.2") (source (origin (method url-fetch) (uri (pypi-uri "Arpeggio" version)) (sha256 (base32 "0aq2pmhfyq7vhbhyq8jgxiphncy1s79rmrsggz4p52m4cdhy134l")))) (build-system python-build-system) (native-inputs `(("python-pytest" ,python-pytest) ("python-pytest-runner" ,python-pytest-runner))) (arguments ;; FIXME: Tests currently fail `(#:tests? #f)) (home-page "https://github.com/textX/Arpeggio") (synopsis "Packrat parser interpreter") (description "Packrat parser interpreter") (license license:expat))) ;; TODO: Candidate for upstream (define-public python-parver (package (name "python-parver") (version "0.3.0") (source (origin (method url-fetch) (uri (pypi-uri "parver" version)) (sha256 (base32 "0a6jp17c1ag6b9yp5xgy9wvznk3g0v2f8gpwkcwxpyc9ygk98zdm")))) (build-system python-build-system) (native-inputs `(("python-six" ,python-six) ("python-attrs" ,python-attrs) ("python-arpeggio" ,python-arpeggio) ("python-pytest" ,python-pytest) ("python-hypothesis" ,python-hypothesis) ("python-pretend" ,python-pretend))) (home-page "https://github.com/RazerM/parver") (synopsis "Parse and manipulate version numbers") (description "Parse and manipulate version numbers.") (license license:expat))) (define-public python-bs4 (package (name "python-bs4") (version "0.0.1") (source (origin (method url-fetch) (uri (pypi-uri "bs4" version)) (sha256 (base32 "0fnxhql23ql6q5n64xjknx3sc3fm4vgpbw0z99p0qp6cswgymv1n")))) (build-system python-build-system) (propagated-inputs (list python-beautifulsoup4)) (home-page "https://pypi.python.org/pypi/beautifulsoup4") (synopsis "Dummy package for Beautiful Soup") (description "Dummy package for Beautiful Soup") (license #f))) (define-public python-towncrier (package (name "python-towncrier") (version "21.3.0") (source (origin (method url-fetch) (uri (pypi-uri "towncrier" version)) (sha256 (base32 "1znxavwsiy6czirjn0qi1p5yarnm7gg692nb0309hb6p4k4hpvbf")))) (build-system python-build-system) (propagated-inputs (list python-click python-click-default-group python-incremental python-jinja2 python-toml)) (native-inputs (list python-packaging)) (home-page "https://github.com/hawkowl/towncrier") (synopsis "Building newsfiles for your project.") (description "Building newsfiles for your project.") (license license:expat))) ;; TODO: Candidate for upstream (define-public python-pipenv (package (name "python-pipenv") (version "2022.1.8") (source (origin (method url-fetch) (uri (pypi-uri "pipenv" version)) (sha256 (base32 "1l4zabd1q5aggjhp4v906l8z8g6q37bcgyxqq8man8lv4ccp2kgq")))) (build-system python-build-system) (propagated-inputs (list python-certifi python-pip python-setuptools python-virtualenv python-virtualenv-clone)) (native-inputs (list python-black python-bs4 python-flake8 python-flaky python-invoke python-mock python-parver python-pytest python-pytest-timeout python-pytest-xdist python-sphinx python-towncrier python-twine)) (arguments ;; FIXME: Tests fail with: "TypeError: don't know how to make test from: 2022.1.8" '(#:tests? #f)) (home-page "https://github.com/pypa/pipenv") (synopsis "Python Development Workflow for Humans.") (description "Python Development Workflow for Humans.") (license license:expat))) ;; TODO: Candidate for upstream; upstream has version 4.0.2; (define-public python-ujson (package (name "python-ujson") (version "2.0.3") (source (origin (method url-fetch) (uri (pypi-uri "ujson" version)) (sha256 (base32 "18z9gb9ggy1r464b9q1gqs078mqgrkj6dys5a47529rqk3yfybdx")) (modules '((guix build utils))) (snippet '(begin (delete-file-recursively "deps") #t)))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases (add-after 'unpack 'link-to-system-double-conversion (lambda* (#:key inputs #:allow-other-keys) (let ((d-c (assoc-ref inputs "double-conversion"))) (substitute* "setup.py" (("./deps/double-conversion/double-conversion\"") (string-append d-c "/include/double-conversion\"")) (("-lstdc++" stdc) (string-append "-L" d-c "/lib\"," " \"-ldouble-conversion\"," " \"" stdc))) #t))) (replace 'check (lambda* (#:key inputs outputs #:allow-other-keys) (add-installed-pythonpath inputs outputs) (invoke "pytest")))))) (native-inputs `(("double-conversion" ,double-conversion) ("python-setuptools-scm" ,python-setuptools-scm) ("python-pytest" ,python-pytest))) (home-page "https://github.com/ultrajson/ultrajson") (synopsis "Ultra fast JSON encoder and decoder for Python") (description "UltraJSON is an ultra fast JSON encoder and decoder written in pure C with bindings for Python 3.") (license license:bsd-3))) ;; python-prompt-toolkit-2 was removed upstream from guix's channel; added here as awscliv2 depends on it ;; awscliv2 depends on 'prompt-toolkit<3.0.29,>=3.0.24', however upstream 3.0.29 is packaged (define-public python-prompt-toolkit-3.0.28 (package/inherit python-prompt-toolkit (name "python-prompt-toolkit") (version "3.0.28") (source (origin (method url-fetch) (uri (pypi-uri "prompt_toolkit" version)) (sha256 (base32 "0l0nnm9fvs8lklk2qq8mylb9jrlxvlqzpmqr4n7rdhl63rmx274z")))))) ;; awscliv2 is a little bit of a packaging mess. They vendor multiple modified ;; forks of software also maintained by the same company. Namely: ;; ;; - botocore@2.0.0dev155 and some of its dependencies: ;; - python-six@1.10.0 ;; - Fragments (exceptions only) were extracted from: ;; - requests ;; - urllib3 ;; - s3transfer@0.5.1 ;; ;; botocore@2.0.0dev155 is incompatable with the same upstream version. For example: ;; https://github.com/aws/aws-cli/blob/2.15.4/awscli/botocore/httpchecksum.py ;; does not exist upstream (see: https://github.com/boto/botocore/tree/7083e5c204e139dc41f646e0ad85286b5e7c0c23/botocore) (define-public awscliv2 (package (name "awscliv2") (version "2.15.6") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/aws/aws-cli") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 "02lq4zxnksx1ab8lyzbyl1lay884xbrxp77rbhn5mrfib9mqmvs0")))) (native-inputs (list python-distro-1.5 python-docutils-0.15 python-awscrt-0.19.18 python-flit-core python-prompt-toolkit-3.0.28 python-ruamel.yaml python-cryptography python-botocore-2.0.0dev155)) (inputs (list groff python-colorama-for-awscli python-docutils-0.15 python-pyyaml python-rsa)) (build-system pyproject-build-system) (arguments `(#:build-backend "backends.pep517" #:phases (modify-phases %standard-phases (add-after 'unpack 'use-cryptography-v41 (lambda _ (substitute* '("pyproject.toml") (("cryptography>=3.3.2,<40.0.2") "cryptography>=3.3.2")))) (add-after 'unpack 'fix-reference-to-groff (lambda* (#:key inputs #:allow-other-keys) (substitute* "awscli/help.py" (("if not self._exists_on_path\\('groff'\\):") "") (("raise ExecutableNotFoundError\\('groff'\\)") "") (("cmdline = \\['groff'") (string-append "cmdline = ['" (search-input-file inputs "bin/groff") "'"))))) (add-after 'install 'install-completions (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (bash-completion (string-append out "/share/bash-completion/completions")) (zsh-site-functions (string-append out "/share/zsh/site-functions"))) (mkdir-p bash-completion) (call-with-output-file (string-append bash-completion "/aws") (lambda (port) (format port (string-join (list "complete" "-C" (string-append out "/bin/aws_completer") "aws"))))) (mkdir-p zsh-site-functions) (rename-file (string-append out "/bin/aws_zsh_completer.sh") (string-append zsh-site-functions "/_aws")) #t)))) ;; FIXME: Tests currently fail #:tests? #f)) (home-page "https://aws.amazon.com/cli/") (synopsis "Command line client for AWS v2") (description "AWS CLI provides a unified command line interface to the Amazon Web Services (AWS) API.") (license license:asl2.0))) (define-public python-jmespath-0.10 (package (inherit python-jmespath) (version "0.10.0") (source (origin (method url-fetch) (uri (pypi-uri "jmespath" version)) (sha256 (base32 "1yflbqggg1z9ndw9ps771hy36d07j9l2wwbj66lljqb6p1khapdq")))))) (define-public python-distro-1.5 (package (inherit python-distro) (version "1.5.0") (source (origin (method url-fetch) (uri (pypi-uri "distro" version)) (sha256 (base32 "14nz51cqlnxmgfqqilxyvjwwa5xfivdvlm0d0b1qzgcgwdm7an0f")))))) (define-public python-awscrt (package (name "python-awscrt") (version "0.12.4") (source (origin (method url-fetch) (uri (pypi-uri "awscrt" version)) (sha256 (base32 "1cmfkcv2zzirxsb989vx1hvna9nv24pghcvypl0zaxsjphv97mka")))) (build-system python-build-system) (arguments '(#:tests? #f)) (native-inputs `(,cmake ,gcc-toolchain-10)) ; (propagated-inputs `(("python-boto3" ,python-boto3))) (home-page "https://github.com/awslabs/aws-crt-python") (synopsis "Common runtime for AWS Python projects") (description "Common runtime for AWS Python projects") (license license:asl2.0))) (define-public python-awscrt-0.19.18 (package (name "python-awscrt") (version "0.19.18") (source (origin (method url-fetch) (uri (pypi-uri "awscrt" version)) (sha256 (base32 "17f8j3n9zsywad48pnq1mz6r9i9y7jdcaliy7zm85q5yivynw2rm")))) (build-system pyproject-build-system) (arguments '(#:tests? #f)) (native-inputs `(,cmake)) ; (propagated-inputs `(("python-boto3" ,python-boto3))) (home-page "https://github.com/awslabs/aws-crt-python") (synopsis "Common runtime for AWS Python projects") (description "Common runtime for AWS Python projects") (license license:asl2.0))) (define-public python-botocore-2.0.0dev155 (let ((commit "7083e5c204e139dc41f646e0ad85286b5e7c0c23") (revision "2")) (package (inherit python-botocore) (name "python-botocore") (version "2.0.0dev155") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/boto/botocore") (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 "0lr98h80fgs6kplv52y92pcf1ba4041zq26wdfsfjkg84py9q83a")))) (propagated-inputs `(("python-awscrt" ,python-awscrt) ("python-jmespath" ,python-jmespath-0.10) ("python-urllib3" ,python-urllib3) ("python-dateutil" ,python-dateutil) ,@(package-propagated-inputs python-awscrt)))))) (define-public python-htmlark (package (name "python-htmlark") (version "1.0.0") (source (origin (method url-fetch) (uri (pypi-uri "HTMLArk" version)) (sha256 (base32 "0qg2vwnlqhdhxxkji3l6ls4ycsrjmhvjizsa7hw08373f69mj68v")))) (build-system python-build-system) (propagated-inputs `(("python-beautifulsoup4" ,python-beautifulsoup4) ("python-lxml" ,python-lxml) ("python-html5lib" ,python-html5lib) ("python-requests" ,python-requests))) (home-page "https://github.com/BitLooter/htmlark") (synopsis "Pack a webpage including support files into a single HTML file") (description "Pack a webpage including support files into a single HTML file.") (license license:expat))) (define-public python-ofxhome (package (name "python-ofxhome") (version "0.3.3") (source (origin (method url-fetch) (uri (pypi-uri "ofxhome" version)) (sha256 (base32 "1rpyfqr2q9pnin47rjd4qapl8ngk1m9jx36iqckhdhr8s8gla445")))) (build-system python-build-system) (arguments `( ;TODO: tests currently fail due to missing test file: ;; FileNotFoundError: [Errno 2] No such file or directory: '/tmp/guix-build-python-ofxhome-0.3.3.drv-0/ofxhome-0.3.3/ofxhome/tests/testfiles/jpmorgan.xml' #:tests? #f)) (home-page "https://github.com/captin411/ofxhome") (synopsis "ofxhome.com financial institution lookup REST client") (description "ofxhome.com financial institution lookup REST client") (license license:expat))) ;; Can be removed (only used by python-ofxclient, but is not actually needed ;; once upstream changes (https://issues.guix.gnu.org/54768) are merged (define-public python-argparse (package (name "python-argparse") (version "1.4.0") (source (origin (method url-fetch) (uri (pypi-uri "argparse" version)) (sha256 (base32 "1r6nznp64j68ih1k537wms7h57nvppq0szmwsaf99n71bfjqkc32")))) (build-system python-build-system) (home-page "https://github.com/ThomasWaldmann/argparse/") (synopsis "Python command-line parsing library") (description "Python command-line parsing library") (license license:psfl))) ;; Sent upstream: https://issues.guix.gnu.org/54768 (define-public python-ofxclient (package (name "python-ofxclient") (version "2.0.3") (source (origin (method url-fetch) (uri (pypi-uri "ofxclient" version)) (sha256 (base32 "0jdhqsbl34yn3n0x6mwsnl58c25v5lp6vr910c2hk7l74l5y7538")))) (build-system python-build-system) (propagated-inputs `(("python-beautifulsoup4" ,python-beautifulsoup4) ("python-keyring" ,python-keyring) ("python-lxml" ,python-lxml) ("python-ofxhome" ,python-ofxhome) ("python-ofxparse" ,python-ofxparse) ("python-argparse" ,python-argparse))) (home-page "https://github.com/captin411/ofxclient") (synopsis "OFX client for dowloading transactions from banks") (description "OFX client for dowloading transactions from banks") (license license:expat))) ;; Sent upstream: https://issues.guix.gnu.org/54768 (define-public ledger-autosync (package (name "ledger-autosync") (version "1.0.3") (source (origin (method url-fetch) (uri (pypi-uri "ledger-autosync" version)) (sha256 (base32 "0i4942qbsphq72zx7kd3rgw25rpq4fg4vl43akkl189wzcrgwv6j")))) (build-system python-build-system) (inputs (list python-ofxclient python-ofxparse)) (home-page "https://gitlab.com/egh/ledger-autosync") (synopsis "Automatically sync your bank's data with ledger") (description "Automatically sync your bank's data with ledger") (license license:gpl3))) (define-public python-pyyaml-5 (package (inherit python-pyyaml) (version "5.4.1") (source (origin (method url-fetch) (uri (pypi-uri "PyYAML" version)) (sha256 (base32 "0pm440pmpvgv5rbbnm8hk4qga5a292kvlm1bh3x2nwr8pb5p8xv0"))))))