a
    Cøgí  ã                   @   s2  U d dl Z d dlmZ d dlmZmZmZmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dl m!Z! d dl"m#Z# d dl$m%Z%m&Z& d dl'm(Z( d dl)m*Z*m+Z+m,Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2m3Z3 d dl4m5Z5 dgZ6edƒZ7e8e9e9f Z:G dd„ dee7 ƒZ;e;eƒe;e0ƒe;e3ƒe;e2ƒe;e5ƒe;eƒe;eƒe;eƒe;e(ƒe;e*ƒe;e+ƒe;e,ƒe;eƒe;eƒe;eƒe;eƒe;e!ƒe;e.ƒe;eƒe;eƒe;e%dƒe;e#dƒe;edƒe;e&ƒgZ<e=e;e  e>d< d#eee?  e@dd!œd"d„ZAdS )$é    N)ÚIterable)ÚAnyÚGenericÚOptionalÚTypeVar)ÚVERSION)Ú
ModelAdmin)ÚBaseModelAdmin)ÚSuccessMessageMixin)ÚSitemap)ÚFeed)ÚFileProxyMixin)Ú	Paginator)ÚExpressionWrapper)ÚField)Ú
ForeignKey)ÚReverseManyToOneDescriptor)ÚLookup)ÚBaseManager)ÚQuerySetÚRawQuerySet)ÚBaseFormSet)ÚBaseModelFormÚBaseModelFormSetÚModelChoiceField)ÚBaseConnectionHandler)ÚSingleObjectMixin)ÚDeletionMixinÚ	FormMixin)ÚMultipleObjectMixinÚmonkeypatchÚ_Tc                   @   s:   e Zd ZdZd	ee ee ddœdd„Ze	dœdd„Z
dS )
Ú	MPGenerica`  Create a data class to hold metadata about the generic classes needing monkeypatching.

    The `version` param is optional, and a value of `None` means that the monkeypatch is
    version-independent.

    This is slightly overkill for our purposes, but useful for future-proofing against any
    possible issues we may run into with this method.
    N)ÚclsÚversionÚreturnc                 C   s   || _ || _dS )z'Set the data fields, basic constructor.N)r$   r#   )Úselfr#   r$   © r'   úU/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/django_stubs_ext/patch.pyÚ__init__+   s    zMPGeneric.__init__)r%   c                 C   s   d  | j| jpd¡S )z)Better representation in tests and debug.z<MPGeneric: {}, versions={}>Úall)Úformatr#   r$   )r&   r'   r'   r(   Ú__repr__0   s    zMPGeneric.__repr__)N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Útyper!   r   Ú_VersionSpecr)   Ústrr,   r'   r'   r'   r(   r"   !   s   	r"   )é   é   )é   r5   Ú_need_genericT)Úextra_classesÚinclude_builtinsr%   c                 C   s`   t dd„ tƒ}|D ]}tdd„ ƒ|j_q| rD| D ]}tdd„ ƒ|_q0|r\dd„ t_dd„ t_dS )z<Monkey patch django as necessary to work properly with mypy.c                 S   s   | j d u ptd d… | j kS )Né   )r$   r   )Úspecr'   r'   r(   Ú<lambda>[   ó    zmonkeypatch.<locals>.<lambda>c                 _   s   | S ©Nr'   ©r#   ÚargsÚkwargsr'   r'   r(   r<   _   r=   c                 _   s   | S r>   r'   r?   r'   r'   r(   r<   b   r=   c                 S   s   d S r>   r'   )Ú_r'   r'   r(   r<   f   r=   c                   S   s   d S r>   r'   r'   r'   r'   r(   r<   g   r=   N)Úfilterr7   Úclassmethodr#   Ú__class_getitem__ÚbuiltinsZreveal_typeZreveal_locals)r8   r9   Zsuited_for_this_versionÚelr#   r'   r'   r(   r    V   s    þ
)NT)BrF   Úcollections.abcr   Útypingr   r   r   r   Zdjangor   Zdjango.contrib.adminr   Zdjango.contrib.admin.optionsr	   Zdjango.contrib.messages.viewsr
   Zdjango.contrib.sitemapsr   Z django.contrib.syndication.viewsr   Zdjango.core.files.utilsr   Zdjango.core.paginatorr   Zdjango.db.models.expressionsr   Zdjango.db.models.fieldsr   Zdjango.db.models.fields.relatedr   Z+django.db.models.fields.related_descriptorsr   Zdjango.db.models.lookupsr   Zdjango.db.models.managerr   Zdjango.db.models.queryr   r   Zdjango.forms.formsetsr   Zdjango.forms.modelsr   r   r   Zdjango.utils.connectionr   Zdjango.views.generic.detailr   Zdjango.views.generic.editr   r   Zdjango.views.generic.listr   Ú__all__r!   ÚtupleÚintr2   r"   r7   ÚlistÚ__annotations__r1   Úboolr    r'   r'   r'   r(   Ú<module>   sj   
æ