[PATCH] gnu: Add python-msgspec.

  • Done
  • quality assurance status badge
Details
2 participants
  • Vinicius Monego
  • Sharlatan Hellseher
Owner
unassigned
Submitted by
Sharlatan Hellseher
Severity
normal

Debbugs page

Sharlatan Hellseher wrote 2 years ago
(address . guix-patches@gnu.org)(name . Sharlatan Hellseher)(address . sharlatanus@gmail.com)
ba39565d9cf44c4a98d701028b85dffa2cc0501c.1686517777.git.sharlatanus@gmail.com
* gnu/packages/serialization.scm (python-msgspec): New variable.
---
gnu/packages/serialization.scm | 64 ++++++++++++++++++++++++++++++++++
1 file changed, 64 insertions(+)

Toggle diff (100 lines)
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
--
2.40.1
Vinicius Monego wrote 2 years ago
30874392ba80f2bd64f55f864baefc1dd056ec86.camel@posteo.net
Em dom, 2023-06-11 às 22:10 +0100, Sharlatan Hellseher escreveu:
Toggle quote (118 lines)
> * 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
Sharlatan Hellseher wrote 2 years ago
[PATCH v2] gnu: Add python-msgspec.
(address . 64010@debbugs.gnu.org)(name . Sharlatan Hellseher)(address . sharlatanus@gmail.com)
5f3b8f3c7b74f856587c73a43f2e25d9906410f5.1687082264.git.sharlatanus@gmail.com
* gnu/packages/serialization.scm (python-msgspec): New variable.
---
gnu/packages/serialization.scm | 64 ++++++++++++++++++++++++++++++++++
1 file changed, 64 insertions(+)

Toggle diff (100 lines)
diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index 39954d6764..43c9473e95 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.16.0")
+ (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
+ "09q567klcv7ly60w9lqip2ffyhrij100ky9igh3p3vqwbml33zb3"))))
+ (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
--
2.40.1
Sharlatan Hellseher wrote 2 years ago
(address . 64010@debbugs.gnu.org)(name . Vinicius Monego)(address . monego@posteo.net)
CAO+9K5qsqooEmnLZGbt5A0WH0AtqtiAjNq_0Ak47nv3pDfP3tw@mail.gmail.com
Hi,

A gentle ping on this issue.

It let me pack Gallia - the security and preparation framework for cars and
other embedded devices.

Thanks.
Attachment: file
Vinicius Monego wrote 2 years ago
2973f028853b0feadc276bc4900178854459cbd6.camel@posteo.net
Em sáb, 2023-06-24 às 13:37 +0100, Sharlatan Hellseher escreveu:
Toggle quote (9 lines)
> 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
Attachment: file
Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 64010@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 64010
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch
You may also tag this issue. See list of standard tags. For example, to set the confirmed and easy tags
mumi command -t +confirmed -t +easy
Or, remove the moreinfo tag and set the help tag
mumi command -t -moreinfo -t +help