On Tue, Apr 7, 2020 at 11:17 AM Wes Turner <wes.tur...@gmail.com> wrote:

> Would you generate a schema from the type annotations so that other
> languages can use the data?
>

I haven't done this yet, but it would be pretty cool.

> So, IMHO type annotations are not insufficient and thus redundant and not
elegant.

you mean are not sufficient / or are insufficient?

But what is meant by "type annotations"? I'm using them via dataclasses --
really as a shorthand for assigning a type to every field -- the
annotations are just a shorthand that auto-generates a schema, essentially.

@dataclass
class MyClass:
    x: A_Type = A_default

So now I know that this class has a field names x that is the type int. So
I use that type for validation, and serialization / deserialization.

But if you mean "type annotations" in the sense of the types provided out
of the box in the typing module and used by MyPy (so I've heard, never did
it myself) -- no, they are not sufficient -- I need types that support my
serialization / deserialization system, and my validation system. And I
suppose we could have a standardized __json__ and __from_json__ protocol
that I could use, but it seems a special case to me.

Note: I don't need to do anything special for types with standard json
representation, but that's only the basics -- I end up using custom types
for anything nested.

-CHB





>
> On Tue, Apr 7, 2020, 11:45 AM Tin Tvrtković <tinches...@gmail.com> wrote:
>
>> As the author of one of these third-party libraries, I feel like I can
>> contribute to this discussion. It can indeed be done very elegantly with
>> type annotations, and it should for sure be left to the ecosystem.
>>
>> The only things we need from core Python are good tools for dealing with
>> run-time type information. For example, singledispatch doesn't really work
>> with types (i.e. Optionals, Unions, Sequences as opposed to actual
>> classes), but all of that can be worked around.
>>
>> In my experience, runtime type information is extremely useful exactly in
>> cases of deserialization, and for big projects starts being useful much
>> before the type information starts being useful in a static analysis
>> context.
>>
>>
>>> From: Greg Ewing <greg.ew...@canterbury.ac.nz>
>>> Subject: [Python-ideas] Re: Improvement: __json__
>>> To: python-ideas@python.org
>>> Message-ID: <e70016ba-5419-e252-d7bd-9705dbebf...@canterbury.ac.nz>
>>> Content-Type: text/plain; charset=utf-8; format=flowed
>>>
>>> On 7/04/20 4:57 am, Wes Turner wrote:
>>> > Python object > JSON  > object requires type information to be
>>> serialized.
>>>
>>> Not necessarily -- Java's json library uses reflection on compile
>>> time type information to deserialise json into an object hierarchy.
>>> You tell it the class corresponding to the top level and it figures
>>> out the rest.
>>>
>>> Something similar could be done in Python using type annotations.
>>>
>>> --
>>> Greg
>>>
>>> _______________________________________________
>> 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/ISSUQVYI5OYYXKELUNCD5YCEDZ75LCEB/
>> 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/LQKGBUGU4R5V2HYBKJHKBNFVR5VK7WCA/
> Code of Conduct: http://python.org/psf/codeofconduct/
>


-- 
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/PMF2GR6FTO2ZXY3DUP4MSSM4EZJ7WTIF/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to