Message ID | ba39565d9cf44c4a98d701028b85dffa2cc0501c.1686517777.git.sharlatanus@gmail.com |
---|---|
State | New |
Headers | show |
Series | [bug#64010] gnu: Add python-msgspec. | expand |
Em dom, 2023-06-11 às 22:10 +0100, Sharlatan Hellseher escreveu: > * gnu/packages/serialization.scm (python-msgspec): New variable. > --- > gnu/packages/serialization.scm | 64 > ++++++++++++++++++++++++++++++++++ > 1 file changed, 64 insertions(+) > > diff --git a/gnu/packages/serialization.scm > b/gnu/packages/serialization.scm > index 39954d6764..e2d45f28b1 100644 > --- a/gnu/packages/serialization.scm > +++ b/gnu/packages/serialization.scm > @@ -13,6 +13,7 @@ > ;;; Copyright © 2020 Martin Becze <mjbecze@riseup.net> > ;;; Copyright © 2020 Alexandros Theodotou <alex@zrythm.org> > ;;; Copyright © 2023 Alexey Abramov <levenson@mmer.org> > +;;; Copyright © 2023 Sharlatan Hellseher <sharlatanus@gmail.com> > ;;; > ;;; This file is part of GNU Guix. > ;;; > @@ -41,6 +42,7 @@ (define-module (gnu packages serialization) > #:use-module (guix build-system copy) > #:use-module (guix build-system gnu) > #:use-module (guix build-system meson) > + #:use-module (guix build-system pyproject) > #:use-module (guix build-system python) > #:use-module (gnu packages) > #:use-module (gnu packages autotools) > @@ -58,6 +60,8 @@ (define-module (gnu packages serialization) > #:use-module (gnu packages lua) > #:use-module (gnu packages pkg-config) > #:use-module (gnu packages python) > + #:use-module (gnu packages python-build) > + #:use-module (gnu packages python-check) > #:use-module (gnu packages python-science) > #:use-module (gnu packages python-xyz) > #:use-module (gnu packages perl)) > @@ -613,6 +617,66 @@ (define-public capnproto > RPC system. Think JSON, except binary. Or think Protocol Buffers, > except faster.") > (license license:expat))) > > +(define-public python-msgspec > + (package > + (name "python-msgspec") > + (version "0.15.1") > + (source (origin > + ;; There are no tests in the PyPI tarball. > + (method git-fetch) > + (uri (git-reference > + (url "https://github.com/jcrist/msgspec") > + (commit version))) > + (file-name (git-file-name name version)) > + (sha256 > + (base32 > + > "1l3f893ba3cmsvz0rkk2y4krzya0qwhsbllhs1f3gd6xp0dq6pf4")))) > + (build-system pyproject-build-system) > + (arguments > + (list > + ;; Disable only one failing test. > + ;; > + ;; AssertionError: msgspec/structs.pyi:7: error: Positional- > only parameters > + ;; are only supported in Python 3.8 and greater > + #:test-flags #~(list "-k" "not test_mypy") > + #:phases > + #~(modify-phases %standard-phases > + (add-after 'unpack 'versioneer > + (lambda _ > + (invoke "versioneer" "install") > + (substitute* "setup.py" > + (("version=versioneer.get_version\\(),") > + (format #f "version=~s," #$version)))))))) > + ;; XXX: It might support more architectures but GitHub Actions > listed only > + ;; two right now. Try to build for the rest supported by Guix. > + ;; See: > + ;; > https://github.com/jcrist/msgspec/blob/main/.github/workflows/ci.yml#L83 > + (supported-systems (list "x86_64-linux" "aarch64-linux")) > + (native-inputs (list python-attrs > + python-gcovr > + python-msgpack > + python-mypy > + python-pytest > + python-setuptools-scm > + python-versioneer)) > + (propagated-inputs (list python-pyyaml python-tomli python- > tomli-w)) > + (home-page "https://jcristharif.com/msgspec/") > + (synopsis > + "Fast serialization/validation library for JSON, MessagePack, > YAML, and TOML") > + (description > + "This package provides a fast serialization and validation > library, with builtin > +support for JSON, MessagePack, YAML, and TOML. It includes the > following features: > +@itemize > +@item high performance encoders/decoders for common protocols. > +@item support for a wide variety of Python types. Additional types > may be > +supported through extensions. > +@item zero-cost schema validation using familiar Python type > annotations. In > +benchmarks msgspec decodes and validates JSON about 2x faster than > @code{orjson} > +can decode it alone. > +@item a speedy Struct type for representing structured data. > +@end itemize") > + (license license:bsd-3))) > + > (define-public python-ruamel.yaml > (package > (name "python-ruamel.yaml") > > base-commit: 299f64adea72a4b360da54b0bffd06ee57a5517b Hi, LGTM. Can you update to version 0.16.0 which was released 5 days ago? Vinicius
Hi, A gentle ping on this issue. It let me pack Gallia - the security and preparation framework for cars and other embedded devices. Thanks.
Em sáb, 2023-06-24 às 13:37 +0100, Sharlatan Hellseher escreveu: > Hi, > > A gentle ping on this issue. > > It let me pack Gallia - the security and preparation framework for > cars and other embedded devices. > > Thanks. Hi, I pushed python-msgspec with changes to synopsis and description, but then noticed that it contains an autogenerated C header (atof_consts.h) which is generated by the script in /scripts. We probably should run that script after the unpack phase but that should be done on a new commit now. Vinicius
diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm index 39954d6764..e2d45f28b1 100644 --- a/gnu/packages/serialization.scm +++ b/gnu/packages/serialization.scm @@ -13,6 +13,7 @@ ;;; Copyright © 2020 Martin Becze <mjbecze@riseup.net> ;;; Copyright © 2020 Alexandros Theodotou <alex@zrythm.org> ;;; Copyright © 2023 Alexey Abramov <levenson@mmer.org> +;;; Copyright © 2023 Sharlatan Hellseher <sharlatanus@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -41,6 +42,7 @@ (define-module (gnu packages serialization) #:use-module (guix build-system copy) #:use-module (guix build-system gnu) #:use-module (guix build-system meson) + #:use-module (guix build-system pyproject) #:use-module (guix build-system python) #:use-module (gnu packages) #:use-module (gnu packages autotools) @@ -58,6 +60,8 @@ (define-module (gnu packages serialization) #:use-module (gnu packages lua) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) + #:use-module (gnu packages python-build) + #:use-module (gnu packages python-check) #:use-module (gnu packages python-science) #:use-module (gnu packages python-xyz) #:use-module (gnu packages perl)) @@ -613,6 +617,66 @@ (define-public capnproto RPC system. Think JSON, except binary. Or think Protocol Buffers, except faster.") (license license:expat))) +(define-public python-msgspec + (package + (name "python-msgspec") + (version "0.15.1") + (source (origin + ;; There are no tests in the PyPI tarball. + (method git-fetch) + (uri (git-reference + (url "https://github.com/jcrist/msgspec") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1l3f893ba3cmsvz0rkk2y4krzya0qwhsbllhs1f3gd6xp0dq6pf4")))) + (build-system pyproject-build-system) + (arguments + (list + ;; Disable only one failing test. + ;; + ;; AssertionError: msgspec/structs.pyi:7: error: Positional-only parameters + ;; are only supported in Python 3.8 and greater + #:test-flags #~(list "-k" "not test_mypy") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'versioneer + (lambda _ + (invoke "versioneer" "install") + (substitute* "setup.py" + (("version=versioneer.get_version\\(),") + (format #f "version=~s," #$version)))))))) + ;; XXX: It might support more architectures but GitHub Actions listed only + ;; two right now. Try to build for the rest supported by Guix. + ;; See: + ;; https://github.com/jcrist/msgspec/blob/main/.github/workflows/ci.yml#L83 + (supported-systems (list "x86_64-linux" "aarch64-linux")) + (native-inputs (list python-attrs + python-gcovr + python-msgpack + python-mypy + python-pytest + python-setuptools-scm + python-versioneer)) + (propagated-inputs (list python-pyyaml python-tomli python-tomli-w)) + (home-page "https://jcristharif.com/msgspec/") + (synopsis + "Fast serialization/validation library for JSON, MessagePack, YAML, and TOML") + (description + "This package provides a fast serialization and validation library, with builtin +support for JSON, MessagePack, YAML, and TOML. It includes the following features: +@itemize +@item high performance encoders/decoders for common protocols. +@item support for a wide variety of Python types. Additional types may be +supported through extensions. +@item zero-cost schema validation using familiar Python type annotations. In +benchmarks msgspec decodes and validates JSON about 2x faster than @code{orjson} +can decode it alone. +@item a speedy Struct type for representing structured data. +@end itemize") + (license license:bsd-3))) + (define-public python-ruamel.yaml (package (name "python-ruamel.yaml")