Rocksolid Light

News from da outaworlds

mail  files  register  groups  login

Message-ID:  

BOFH excuse #253: We've run out of licenses


comp / comp.lang.python / Re: Serializing pydantic enums

SubjectAuthor
o Re: Serializing pydantic enumsMats Wichmann

1
Subject: Re: Serializing pydantic enums
From: Mats Wichmann
Newsgroups: comp.lang.python
Date: Wed, 29 May 2024 23:02 UTC
References: 1 2 3 4
Path: eternal-september.org!news.eternal-september.org!feeder3.eternal-september.org!fu-berlin.de!uni-berlin.de!not-for-mail
From: mats@wichmann.us (Mats Wichmann)
Newsgroups: comp.lang.python
Subject: Re: Serializing pydantic enums
Date: Wed, 29 May 2024 17:02:08 -0600
Lines: 28
Message-ID: <mailman.72.1717023734.2909.python-list@python.org>
References: <CACwCsY5xAJrFMvXQquLvrMrtgZk28-2UPnoQEwgH=8CtFxvRdg@mail.gmail.com>
<CAJQBtg=f3t9-TVeyrJVd2Y27uymSuMw1mJ9OWVUXN7BK8MLcUg@mail.gmail.com>
<CACwCsY7Ze-2n2Gusu=6QKftCfbzQGaaSXJz5vwLErEi6q6xmAA@mail.gmail.com>
<c7b051e7-09b4-4e99-a039-97c66c52ffb1@wichmann.us>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: quoted-printable
X-Trace: news.uni-berlin.de A0va5USxgfelChJeSe7w1wfSKRus8C+DXZJ9ksGv4MqQ==
Cancel-Lock: sha1:Auv1fmhNUqAERMxbNAwscLCIXtU= sha256:uvdlzQMXMiLujInbf0afUplaZpwD954K9NcdjPYZCEY=
Return-Path: <mats@wichmann.us>
X-Original-To: python-list@python.org
Delivered-To: python-list@mail.python.org
Authentication-Results: mail.python.org; dkim=pass
reason="1024-bit key; unprotected key"
header.d=pobox.com header.i=@pobox.com header.b=pcZNQGkn;
dkim-adsp=none (unprotected policy); dkim-atps=neutral
X-Spam-Status: OK 0.054
X-Spam-Evidence: '*H*': 0.89; '*S*': 0.00; 'argument': 0.04;
'obviously': 0.09; 'recurring': 0.09; 'situation,': 0.09; '2024':
0.16; 'aliases': 0.16; 'elsewhere,': 0.16; 'help:': 0.16;
'passing.': 0.16; 'recall': 0.16; 'received:64.147': 0.16;
'url:latest': 0.16; 'wrote:': 0.16; 'python': 0.16; "aren't":
0.19; 'implement': 0.19; 'tue,': 0.19; 'to:addr:python-list':
0.20; 'maybe': 0.22; 'help.': 0.25; "isn't": 0.27; 'this?': 0.29;
'header:User-Agent:1': 0.30; 'seem': 0.31; 'takes': 0.31;
'official': 0.32; 'guess': 0.32; 'objects': 0.32; 'python-list':
0.32; 'but': 0.32; 'particular': 0.33; 'header:In-Reply-To:1':
0.34; 'couple': 0.37; 'special': 0.37; 'class': 0.37;
'received:192.168': 0.37; 'this,': 0.39; 'provide': 0.60;
'method': 0.61; "there's": 0.61; 'url-ip:104.26/16': 0.64;
'extend': 0.64; 'received:64': 0.67; 'right': 0.68; 'too.': 0.70;
'easy': 0.74; 'field': 0.78; 'out.': 0.80; 'left': 0.83;
'handled': 0.84; 'noted': 0.84; 'url-ip:104.26.8/24': 0.93; 'url-
ip:104.26.9/24': 0.93
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=pobox.com; h=message-id
:date:mime-version:subject:to:references:from:in-reply-to
:content-type:content-transfer-encoding; s=sasl; bh=N1So2BqLS3JN
Z30bC95zMCCwZmVzuHzK+c8EIc/Eg34=; b=pcZNQGkn+/72BjYFIrini7vsNw9S
/kMWrZKnsZqk6w53GLvtPzvvBnuV5E/dHuLlzJtNKu6d0NtgmUdrXIZQIrNz9w6L
chFc78jiIsnMG9GfkAtgMtwXkNPMqPfHennWGgN7A5UCXed7iBLfpJa5547SiZUD
b9PC7smpNClGwso=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=wichmann.us;
h=message-id:date:mime-version:subject:to:references:from:in-reply-to:content-type:content-transfer-encoding;
s=2018-07.pbsmtp; bh=RjNfCJeaVtM5Z0YM3n2eTZiJ4LLYHY5cYp7mXOW6n4w=;
b=jREzK5sqthNMkgd20nsatXDpbNLRSXIaMKOwNtAnUPWNn0O2PPV+l+rusobdrNIVt1CjQrckQVELlyoSlSm25D0GFXwK+0/1uQYlJmiyM0HxcDrl3z/W2PcOLk/NyEdbrCBAVNCa4fDF5iMv0k6PJ69nHXvOVXfyA7CClEklSdE=
User-Agent: Mozilla Thunderbird
Content-Language: en-US
Autocrypt: addr=mats@wichmann.us; keydata=
xsDiBD9xp6oRBAC1vd3YI8Gcr1CxpV1gldNQu0uQsNaICDk+Ai3+R163s/P83JOYG+SBEA3P
v7iZx70qpQ3RzP7KrjF1Nm6j0em9ccUX2fPQUCAxXw5Hiq7CSMiwQQZRI6shcnyMh9XTKViT
WK5MrKDyvjDEn7epjKzKwPS5SG039l6XaOKU0A4uGwCgsNqUQqC0gMMcbKlJV8ql58iKmbMD
/ii8FPQrXmyS/FnsPs7UddV5qMHKm7NUH5oiKuMVyakInRyq9iIxuu3D4Ec6mWRKcGsjmIkW
HXCSz0aefs6dsqNqpU54cYioJ3wP5LzHK7oclgJPryVt5Qezbdutf8SQf8gVkaNIlkxwGUzi
bKTZ6CHzwlz9nNgeel0XPUcZzFxGA/4paeCg2rMSVuAhUQbsLYHu4XzTs9P16zaXkrtxc4m5
b+BF5xsLgTpyO5l859XudS2Gp+7/Y37dAU4QlyGGOboWmF1y9U5DnzBwG8ghsnym+ga58MJh
LdRdQQ6xQolCpEXOuzm40f2r5uMxF3KOJ7WpIPuGAkeCPru9BmlATH+zOs0gTWF0cyBXaWNo
bWFubiA8bWF0c0B3aWNobWFubi51cz7CYQQTEQIAIQIbAwYLCQgHAwIDFQIDAxYCAQIeAQIX
gAUCT0VyZwIZAQAKCRDAMaCQc9hUxiZBAJ9cWziGp7hVfsu5T+cQptc3rLNndQCgrZh8u5LW
BfJ5e/Y+3PwZ8UEm+ELOwE0EP5is8BAEAMtwzcA8TYf5UTjDMgwcSNoErTc9ag+IX05QFgL8
aF8sfJRv5atcitqQy0gSIsOzI+L/AFdPN/+QQI3dL1tCq14t32KPDtigDhzm6jVPXX5z+V9u
xnD8XTp+ZvNcWoHXjViM8aXeLLEiCpiVCho307h3XShvqoKINWRQWeAsKKDDAAMFA/48zaey
wiiEyvI0meJ1KkNHxdLP0yLODr1WV6j9xkPkLWOaIDw7dlwEOlF1N1YtZ2wa0p1wsttdIbIx
ffgwXmcH4zrdxUIMz3U0BqYzk5H+5cYFXECXTFVOmweS+JECYMj80PjRoKCO1eVO1N30zksB
36NnhZWPRWIhjK3ZarIYH8JGBBgRAgAGBQI/mKzwAAoJEMAxoJBz2FTG6VEAoKDYHfDp5Q3q
PuPvPahCE9HsXMgAAJ9INTqcLSJrOfyJ8q95nBO1T26H2Q==
In-Reply-To: <CACwCsY7Ze-2n2Gusu=6QKftCfbzQGaaSXJz5vwLErEi6q6xmAA@mail.gmail.com>
X-Pobox-Relay-ID: 7AC4E68E-1E0F-11EF-862A-B84BEB2EC81B-81526775!pb-smtp1.pobox.com
X-BeenThere: python-list@python.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: General discussion list for the Python programming language
<python-list.python.org>
List-Unsubscribe: <https://mail.python.org/mailman/options/python-list>,
<mailto:python-list-request@python.org?subject=unsubscribe>
List-Archive: <https://mail.python.org/pipermail/python-list/>
List-Post: <mailto:python-list@python.org>
List-Help: <mailto:python-list-request@python.org?subject=help>
List-Subscribe: <https://mail.python.org/mailman/listinfo/python-list>,
<mailto:python-list-request@python.org?subject=subscribe>
X-Mailman-Original-Message-ID: <c7b051e7-09b4-4e99-a039-97c66c52ffb1@wichmann.us>
X-Mailman-Original-References: <CACwCsY5xAJrFMvXQquLvrMrtgZk28-2UPnoQEwgH=8CtFxvRdg@mail.gmail.com>
<CAJQBtg=f3t9-TVeyrJVd2Y27uymSuMw1mJ9OWVUXN7BK8MLcUg@mail.gmail.com>
<CACwCsY7Ze-2n2Gusu=6QKftCfbzQGaaSXJz5vwLErEi6q6xmAA@mail.gmail.com>
View all headers

On 5/29/24 13:27, Larry Martell via Python-list wrote:
> On Tue, May 28, 2024 at 11:46 AM Left Right via Python-list
> <python-list@python.org> wrote:
>>
>> Most Python objects aren't serializable into JSON. Pydantic isn't
>> special in this sense.
>>
>> What can you do about this? -- Well, if this is a one-of situation,
>> then, maybe just do it by hand?
>>
>> If this is a recurring problem: json.dumps() takes a cls argument that
>> will be used to do the serialization. Extend json.JSONEncoder and
>> implement the encode() method for the encoder class you are passing. I
>> believe that the official docs have some information about this too.
>
> Yeah, I know I can do this, but I seem to recall reading that pydantic
> handled serialization. Guess not.

Pydantic devotes some of its documentation to serialization.

https://docs.pydantic.dev/latest/concepts/serialization/

As noted elsewhere, some Python objects are easy to serialize, some you
need to provide some help. Consider pickling: if you write a class that
isn't obviously pickleable, the getstate dunder method can be defined to
help out. For Pydantic, there's a couple of ways... aliases in
particular seem designed to help: there's a serialization_alias argument
to the Field function.

1

rocksolid light 0.9.8
clearnet tor