https://docs.python.org/3/library/os.html#os.fspath

*__fspath__

On Wed, Sep 16, 2020, 5:53 PM Wes Turner <wes.tur...@gmail.com> wrote:

>
>
> On Wed, Sep 16, 2020, 5:18 PM Christopher Barker <python...@gmail.com>
> wrote:
>
>> On Tue, Sep 15, 2020 at 5:26 PM Wes Turner <wes.tur...@gmail.com> wrote:
>>
>>> On Tue, Sep 15, 2020 at 9:09 AM Wes Turner <wes.tur...@gmail.com> wrote:
>>>
>>>> json.load and json.dump already default to UTF8 and already have
>>>>> parameters for json loading and dumping.
>>>>>
>>>>
>> so it turns out that loads(), which optionally takes a bytes or
>> bytesarray object tries to determine whether the encoding is UTF-6, UTF-!6
>> or utf-32 (the ones allowed by the standard) (thanks Guido for the
>> pointer). And load() calls loads(), so it should work with binary mode
>> files as well.
>>
>> Currently, dump() simply uses the fp passed in, and it doesn't support
>> binary files, so it'll use the encoding the user set (or the default, if
>> not set, which is an issue here) dumps() returns a string, so no encoding
>> there.
>>
>
> So I was not correct: dump does not default to UTF-8 (and does not accept
> an encoding= parameter)
>
>
>> I think dumpf() should use UTF-8, and that's it. If anyone really wants
>> something else, they can get it by providing an open text file object.
>>
>
>
> Why would we impose UTF-8 when the spec says UTF-8, UTF-16, or UTF-32?
>
> How could this be improved? (I'm on my phone, so)
>
> def dumpf(obj, path, *args, **kwargs):
>     with open(getattr(path, '__path__', path), 'w',
> encoding=kwargs.get('encoding', 'utf8')) as _file:
>         return dump(_file, *args, **kwargs)
>
> def loadf(obj, path, *args, **kwargs):
>     with open(getattr(path, '__path__', path),
> encoding=kwargs.get('encoding', 'utf8')) as _file:
>         return load(_file, *args, **kwargs)
>
>
>
>> loads(), on the other hand, is a bit tricky -- it could allow only UTF-8,
>> but it seems it would be more consistent (and easy to do) to open the file
>> in binary mode and use the existing code to determine the encoding.
>>
>> -CHB
>>
>> >> The Python JSON implementation should support the full JSON spec
>> (including UTF-8, UTF-16, and UTF-32) and should default to UTF-8.
>>
>> 'turns out it does already, and no one is suggesting changing that.
>>
>> Anyway -- if anyone wants to push for overloading .load()/dump(), rather
>>>> than making two new loadf() and dumpf() functions, then speak now -- that
>>>> will take more discussion, and maybe a PEP.
>>>>
>>>
>>> I don't see why one or the other would need a PEP so long as the new
>>> functionality is backward-compatible?
>>>
>>
>> iIm just putting my finger in the wind. no need for a PEP if it's simeel
>> and non-controversial, but if even the few folks on this thread don't agree
>> on the API we want, then it's maybe too controversial -- so either more
>> discussion, to come to consensus, or a PEP.
>>
>> Or not -- we can see what the core devs say if/when someone does a bpo /
>> PR.
>>
>> -CHB
>>
>>
>>
>>
>>
>>>
>>>
>>>> -CHB
>>>>
>>>>
>>>>
>>>> --
>>>> Christopher Barker, PhD
>>>>
>>>> Python Language Consulting
>>>>   - Teaching
>>>>   - Scientific Software Development
>>>>   - Desktop GUI and Web Development
>>>>   - wxPython, numpy, scipy, Cython
>>>>
>>>
>>
>> --
>> Christopher Barker, PhD
>>
>> Python Language Consulting
>>   - Teaching
>>   - Scientific Software Development
>>   - Desktop GUI and Web Development
>>   - wxPython, numpy, scipy, Cython
>>
>
_______________________________________________
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/AAF7PYP2ABCT26CXQCNGNX5FVTZA7FPO/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to