Yes, that is a design flaw in the stdlib. There ought to be an opt-in
switch for accepting/producing those special values, not the current
opt-out for strictness... And the misnamed parameter is 'allow_nan' whereas
it also configures 'Infinity'.

On Sun, Sep 13, 2020, 3:16 PM Matthias Bussonnier <
bussonniermatth...@gmail.com> wrote:

> Oh, well, but stdlib json already emit (and parse) invalid json by
> default...
>
> $ ipython
> Python 3.8.3 (default, May 19 2020, 13:54:14)
> Type 'copyright', 'credits' or 'license' for more information
> IPython 7.15.0 -- An enhanced Interactive Python. Type '?' for help.
>
> In [1]: import json
>
> In [2]: json.dumps({'a':float('nan')})
> Out[2]: '{"a": NaN}'
>
> In [3]: json.loads(json.dumps({'a':float('nan')}))
> Out[3]: {'a': nan}
>
> NaN is not allowed in json spec, so this is wrong, though you can
> still do it... Maybe it's one of those cases where practicality beats
> purity.
> --
> M
>
> On Sun, 13 Sep 2020 at 12:31, Brendan Barnwell <brenb...@brenbarn.net>
> wrote:
> >
> > On 2020-09-13 11:57, Christopher Barker wrote:
> > > On Sun, Sep 13, 2020 at 7:58 AM Stephen J. Turnbull
> > > <turnbull.stephen...@u.tsukuba.ac.jp
> > > <mailto:turnbull.stephen...@u.tsukuba.ac.jp>> wrote:
> > >
> > >       > encoding=None: this is the important one -- json is always
> UTF-8
> > >     yes?
> > >
> > >     Standard JSON is always UTF-8.  Nevertheless, I'm quite sure that
> > >     there's a ton of Japanese in Shift JIS, including some produced by
> > >     default in Python on Windows.  I'll bet the same is true of GBK for
> > >     Chinese, and maybe even ISO-8859-1 in Europe.
> > >
> > >
> > > So what should the json lib do with these? It could have an encoding
> > > parameter with utf-8 as default. Or it could require that the user open
> > > the file themselves if it's not UTF-8.
> > >
> > > BTW: I noticed that json.loads() takes:
> > >
> > > Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance
> > > containing a JSON document) to a Python object.
> > >
> > > A str is an str (already Unicode, yes?) -- but for bytes, it must be
> > > assuming some encoding, presumably UTF-8, but it doesn't seem to have a
> > > way to specify one -- so this is already a missing feature.
> >
> >         It's not a missing feature, because the JSON spec requires
> UTF-8.  If
> > it's not UTF-8, it's invalid JSON.  If a user wants to handle a file
> > that looks sort of like JSON but technically isn't because it's not
> > UTF-8, it's on the user to first convert the file to UTF-8 before
> > bringing JSON into the picture.
> >
> > --
> > Brendan Barnwell
> > "Do not follow where the path may lead.  Go, instead, where there is no
> > path, and leave a trail."
> >     --author unknown
> > _______________________________________________
> > Python-ideas mailing list -- python-ideas@python.org
> > To unsubscribe send an email to python-ideas-le...@python.org
> > https://mail.python.org/mailman3/lists/python-ideas.python.org/
> > Message archived at
> https://mail.python.org/archives/list/python-ideas@python.org/message/6LLNXBX7Y2QZHDB45NFIV5IOPSUSBDQ2/
> > Code of Conduct: http://python.org/psf/codeofconduct/
> _______________________________________________
> Python-ideas mailing list -- python-ideas@python.org
> To unsubscribe send an email to python-ideas-le...@python.org
> https://mail.python.org/mailman3/lists/python-ideas.python.org/
> Message archived at
> https://mail.python.org/archives/list/python-ideas@python.org/message/R36SESX76C3KUED4Q5VFBD5SCZKKXZED/
> Code of Conduct: http://python.org/psf/codeofconduct/
>
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/RYKDIIXVWIFJBRT3WKCLDZR6FHFAQDLL/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to