From 57a6b951a71b0c44a8b1cc8054828955175edbd0 Mon Sep 17 00:00:00 2001 From: Daniel Ziltener Date: Wed, 13 Mar 2024 02:20:40 +0100 Subject: [PATCH] . --- zilti/packages/python.scm | 201 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 195 insertions(+), 6 deletions(-) diff --git a/zilti/packages/python.scm b/zilti/packages/python.scm index 719b825..5577218 100644 --- a/zilti/packages/python.scm +++ b/zilti/packages/python.scm @@ -53,6 +53,190 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (srfi srfi-1)) + +(define-public python-wheel + (package + (name "python-wheel") + (version "0.43.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "wheel" version)) + (sha256 + (base32 + "118x5y37152by7f8gvzwda441jd8b42w92ngs6i5sp7sd4ngjpj6")))) + (build-system pyproject-build-system) + (native-inputs + (list python-flit-core)) + (home-page "https://github.com/pypa/wheel") + (synopsis "Format for built Python packages") + (description + "A wheel is a ZIP-format archive with a specially formatted filename and +the @code{.whl} extension. It is designed to contain all the files for a PEP +376 compatible install in a way that is very close to the on-disk format. Many +packages will be properly installed with only the @code{Unpack} step and the +unpacked archive preserves enough information to @code{Spread} (copy data and +scripts to their final locations) at any later time. Wheel files can be +installed with a newer @code{pip} or with wheel's own command line utility.") + (license license:expat))) + +(define-public python-pypa-build-1 + (package + (name "python-pypa-build") + (version "1.1.1") + (source (origin + (method url-fetch) + (uri (pypi-uri "build" version)) + (sha256 + (base32 + "0c9a7nalcyryxp85nf8sj2bpvnd6sgdchb5s6kkw5ami8nxnbslf")))) + (build-system pyproject-build-system) + (arguments + `(#:tests? #f)) ;to tests in the PyPI release + (native-inputs + (list python-flit-core)) + (propagated-inputs + `(("python-pyproject-hooks" ,python-pyproject-hooks) + ("python-packaging" ,python-packaging-bootstrap))) + (home-page "https://pypa-build.readthedocs.io/en/latest/") + (synopsis "Simple Python PEP 517 package builder") + (description "The @command{build} command invokes the PEP 517 hooks to +build a distribution package. It is a simple build tool and does not perform +any dependency management. It aims to keep dependencies to a minimum, in +order to make bootstrapping easier.") + (license license:expat))) + +(define-public python-botocore + ;; Note: When updating botocore, also make sure that boto3 and awscli + ;; are compatible. + (package + (name "python-botocore") + (version "1.34.61") + (source + (origin + (method url-fetch) + (uri (pypi-uri "botocore" version)) + (sha256 + (base32 + "0d3h7phvlbri3dqjkn6q9jzgg6xywis8rm42r192afg6wkvlmpvj")))) + (build-system pyproject-build-system) + (arguments + ;; FIXME: Many tests are failing. + '(#:tests? #f)) + (propagated-inputs + (list python-dateutil python-jmespath python-urllib3)) + (home-page "https://github.com/boto/botocore") + (synopsis "Low-level interface to AWS") + (description "Botocore is a Python library that provides a low-level +interface to the Amazon Web Services (AWS) API.") + (license license:asl2.0))) + +(define-public python-boto3 + (package + (name "python-boto3") + (version "1.34.61") + (home-page "https://github.com/boto/boto3") + (source (origin + (method git-fetch) + (uri (git-reference (url home-page) (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1nbq2rly56gia2z2zh57qwpafsj2w3258gz4k6z494bws0fb99nb")))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'delete-network-tests + ;; Deleting integration tests because they are trying to connect to AWS. + (lambda _ + (delete-file-recursively "tests/integration"))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "pytest" "-v"))))))) + (build-system pyproject-build-system) + (native-inputs + (list python-nose python-mock python-pytest)) + (propagated-inputs + (list python-botocore python-jmespath python-s3transfer)) + (synopsis "AWS SDK for Python") + (description + "Boto3 is a Python library for writing programs that interact with +@acronym{AWS,Amazon Web Services}.") + (license license:asl2.0))) + +(define-public python-s3transfer + (package + (name "python-s3transfer") + (version "0.10.0") + (source (origin + (method url-fetch) + (uri (pypi-uri "s3transfer" version)) + (sha256 + (base32 + "0nsr664ci9bqysmiqrigv03kz5idjwxy4ibrwpjbpvnmfbvbpj6h")))) + (build-system pyproject-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (delete 'check)))) + (native-inputs + (list python-docutils python-mock python-nose)) + (propagated-inputs + (list python-botocore python-urllib3)) + (synopsis "Amazon S3 Transfer Manager") + (description "S3transfer is a Python library for managing Amazon S3 +transfers.") + (home-page "https://github.com/boto/s3transfer") + (license license:asl2.0))) + +(define-public awscli + (package + ;; Note: updating awscli typically requires updating botocore as well. + (name "awscli") + (version "1.32.61") + (source + (origin + (method url-fetch) + (uri (pypi-uri name version)) + (sha256 + (base32 + "1xms4yd07i8869jk7kmd0p80fj7qnf18kip3kmxwalnqygpwsqfw")))) + (build-system pyproject-build-system) + (arguments + ;; FIXME: The 'pypi' release does not contain tests. + '(#:tests? #f + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'use-recent-pyyaml + (lambda _ + (substitute* '("awscli.egg-info/requires.txt" + "setup.cfg" + "setup.py") + (("<5.5") "<=6")))) + (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") + "'")))))))) + (inputs + (list groff + python-colorama-for-awscli + python-botocore + python-s3transfer + python-docutils-0.15 + python-pyyaml + python-rsa)) + (home-page "https://aws.amazon.com/cli/") + (synopsis "Command line client for AWS") + (description "AWS CLI provides a unified command line interface to the +Amazon Web Services (AWS) API.") + (license license:asl2.0))) + (define-public python-ruamel-base (package (name "python-ruamel-base") @@ -157,7 +341,7 @@ Amazon Web Services (AWS) API.") (sha256 (base32 "0v9ndxih1i1s1ygp6c3p5krf7j2fxdy6fam36w7pijsk76wp0xdy")))) - (build-system gnu-build-system) + (build-system pyproject-build-system) (arguments ;; FIXME: The 'pypi' release does not contain tests. '(#:phases @@ -180,22 +364,27 @@ Amazon Web Services (AWS) API.") (string-append "cmdline = ['" (search-input-file inputs "bin/groff") "'")))))))) + (native-inputs + (list python-pypa-build)) (inputs (list groff - python-awscrt python-wrapper - python-colorama-for-awscli + python-awscrt python-botocore + python-colorama + python-cryptography + python-dateutil python-distro + python-docutils + python-jmespath python-flit-core python-importlib-resources python-executor python-s3transfer - python-docutils-0.15 python-prompt-toolkit + python-pyyaml python-ruamel-yaml - python-ruamel-yaml-clib - python-rsa)) + python-ruamel-yaml-clib)) (home-page "https://aws.amazon.com/cli/") (synopsis "Command line client for AWS") (description "AWS CLI provides a unified command line interface to the