Hi, I'm the original creator of https://github.com/typeddjango/django-stubs.

I guess it's my duty to start writing a DEP, so here is some preliminary 
thoughts/questions to gather early feedback: 

Main discussion points: 
1. There's two ways to make Django compatible with type hinting and PEP484: 
    - Separate repo with `.pyi` files and mypy plugin (how it's done 
currently with django-stubs). 

    Pros: 
        - no backwards-incompatible changes. Only required change from 
Django is adding the `__class_getitem__` method to `QuerySet` 
https://docs.python.org/3/reference/datamodel.html#object.__class_getitem__ 
to support generic parameters in 3.7+
        - could be released separately
        - no type hints code clutter
    Cons: 
        - (as of now) there's no way to use type hints to typecheck Django 
codebase itself. I think the official answer to that is to use retype tool 
https://github.com/ambv/retype 
(https://github.com/python/mypy/issues/5028#issuecomment-495942769), but so 
far I didn't have any positive experience with that

    - Inline type hints in the codebase. 
    
    Pros/Cons are exact reverse. 

2. Whether to use Django own machinery to extract info for the 
models/fields, or not. 

Current implementation of django-stubs utilises `Apps` registry of Django 
itself to extract some data for models/fields.
 So, basically it executes codes first, then performs static analysis of 
it. 

Pros: 
    - lots of models/fields introspection could be extracted from the 
`_meta` API => lower maintenance burden, more accurate types. In the 
pre-1.0.0 versions of the django-stubs it was all done statically, and it 
was very painful to implement. 

Cons: 
    - mypy daemon mode (dmypy) is broken. It could be fixed, but it 
requires some changes to mypy itself, and as `django.setup()` could not run 
incrementally, it's not clear whether dmypy would provide any real benefits 
over plain incremental mode. 
    - there could be some side effects in `django.setup()` invocation
    - cannot typecheck invalid code
    - slower to execute

Carlton, is it possible to move discussion to Github somehow?

On Wednesday, December 12, 2018 at 7:06:16 PM UTC+3, Carlton Gibson wrote:
>
> Hi all. 
>
>
> Where are we with this Type Hinting work? 
>
>
> I just closed https://code.djangoproject.com/ticket/30019 as needsinfo 
> pointing back to this thread. 
>
>
> As far as I can see: 
>
> * There's keenness for this. 
> * There's a number of people who are prepared to put in the effort. 
> * But we just need a strategy. 
>
> It looks then like a coordination problem. Do we just need to get said 
> people in a (virtual) room...? 
>
> Maybe one of you — anyone — opening a DEP to begin the conversation would 
> be enough.. 
> (That's just an idea.) 
>
> Looking here: 
> https://github.com/django/deps/blob/master/final/0001-dep-process.rst#dep-submission-workflow
> I'd guess "Forming the Team" is relevant. 
>
> Happy to help if I can. 
> (I recall Frank mentioned it no too long ago...) 
>
> Kind Regards,
>
> Carlton
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers  (Contributions to Django itself)" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-developers+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-developers/c659f5aa-0ce5-4e65-a983-e98f3f6dfb3d%40googlegroups.com.

Reply via email to