Ë
    qûàg2<  ã                   óª   — d dl Z d dlZd dlZd dl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 g d¢Z G d	„ d
e«      Zd„ Zdd„Zd„ Zy)é    N)ÚDictÚListÚTupleÚUnion)ÚMODELS_MODULE_NAME)Úimport_string)ÚCollisionResolvingRunner)ÚSubclassesFinder)ÚRemovedInNextVersionWarning)z#from django.core.cache import cachez from django.conf import settingsz.from django.contrib.auth import get_user_modelz!from django.db import transactionzRfrom django.db.models import Avg, Case, Count, F, Max, Min, Prefetch, Q, Sum, Whenz!from django.utils import timezonezfrom django.urls import reversez7from django.db.models import Exists, OuterRef, Subqueryc                   ó   — e Zd Zy)ÚObjectImportErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    úa/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/django_extensions/management/shells.pyr   r   !   s   „ Ør   r   c                 óÌ   — t        t        | j                  d«      «      «      }	 	 ||j                  t        «      dz      S # t
        $ r |d   cY S w xY w# t        $ r | cY S w xY w)a   
    Retrieve application name from models.py module path

    >>> get_app_name('testapp.models.foo')
    'testapp'

    'testapp' instead of 'some.testapp' for compatibility:
    >>> get_app_name('some.testapp.models.foo')
    'testapp'
    >>> get_app_name('some.models.testapp.models.foo')
    'testapp'
    >>> get_app_name('testapp.foo')
    'testapp'
    >>> get_app_name('some.testapp.foo')
    'testapp'
    ú.é   )ÚlistÚreversedÚsplitÚindexr   Ú
ValueErrorÚ
IndexError)Úmod_nameÚrpartss     r   Úget_app_namer   %   sn   € ô" ”(˜8Ÿ>™>¨#Ó.Ó/Ó0€Fðð	Ø˜&Ÿ,™,Ô'9Ó:¸QÑ>Ñ?Ð?øÜò 	à˜!‘9Òð	ûô ò àŠðús)   ¦A ÁAÁA ÁAÁA ÁA#Á"A#c                 óÚ
  — i }| D �]†  }t        |t        «      r|j                  «       }	 t        |t        «      �rÒ|j                  d«      �rÀ	 t	        j
                  |«      }t        d„ j                  D «       «      s |st        |j                  d|z  «      «       Œš|st        |j                  d|z  «      «       |j                  D �]=  }t        |t        j                  «      rM|j                  D ]>  }|j                  xs |j                  }	t!        j"                  |j                  «      ||	<   Œ@ t        |t        j$                  «      sŒ†t!        j&                  |j(                  i i |j                  D �cg c]  }|j                  ‘Œ c}«      }
|j                  D ]e  }|j                  xs |j                  }		 |j                  dk(  r t+        |
«      D ]  }t-        |
|«      ||<   Œ nt-        |
|j                  «      ||	<   Œg �Œ@ �nt3        j4                  d	t6        d
¬«       t        |t        «      rCt'        |«      }
|
||j9                  d«      d   <   |st        |j                  d|z  «      «       �Œwt        |t:        t<        f«      �rÚt?        |«      d
k(  �rËt        |d   t        «      s$|s t        |j                  d|d   z  «      «       �ŒÔt        |d   t:        t<        f«      r�t        d„ |d   D «       «      rxt'        |d   i i |d   «      }
g }|d   D ]#  }	 t-        |
|«      ||<   |jA                  |«       Œ% |�sAt        |j                  d|d   ›ddjC                  |«      ›�«      «       �nt        |d   t        «      r±|d   dk(  rVt'        |d   i i |d   «      }
t+        |
«      D ]  }t-        |
|«      ||<   Œ |s½t        |j                  d|d   z  «      «       nœt-        t'        |d   i i |d   g«      |d   «      }
|
||d   <   |spt        |j                  d|d   ›d|d   ›�«      «       nI|sGt        |j                  d|d   ›d|d   ›d�«      «       n|st        |j                  d|z  «      «       �Œ‰ |S # t        $ r3}|s&t        |j                  d|›d|›�«      «       Y d}~�Œ½Y d}~�Œed}~ww xY wc c}w # t.        $ r$}t        t+        |
«      «       t1        |«      ‚d}~ww xY w# t.        $ r- |s't        |j                  d|›d|d   ›d|›d�«      «       Y �Œw xY w# t0        $ r# |st        |j                  d|z  «      «       Y �Œdw xY w)aœ  
    Import the items in import_directives and return a list of the imported items

    Each item in import_directives should be one of the following forms
        * a tuple like ('module.submodule', ('classname1', 'classname2')), which indicates a 'from module.submodule import classname1, classname2'
        * a tuple like ('module.submodule', 'classname1'), which indicates a 'from module.submodule import classname1'
        * a tuple like ('module.submodule', '*'), which indicates a 'from module.submodule import *'
        * a simple 'module.submodule' which indicates 'import module.submodule'.

    Returns a dict mapping the names to the imported items
    )úfrom zimport zError parsing: ú Nc              3   óp   K  — | ].  }t        |t        j                  t        j                  f«      –— Œ0 y ­w©N)Ú
isinstanceÚastÚImportÚ
ImportFrom)Ú.0Úbodys     r   ú	<genexpr>zimport_items.<locals>.<genexpr>[   s$   è ø€ Ò`Èdœ: d¬S¯Z©Z¼¿¹Ð,H×IÑ`ùs   ‚46z"Only specify import statements: %rz%sÚ*zuOld style import definitions are deprecated. You should use the new style which is similar to normal Python imports. é   )Ú
stacklevelr   r   z	import %sz7Unable to import %r: module name must be of type stringr   c              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wr$   )r%   Ústr)r)   Úes     r   r+   zimport_items.<locals>.<genexpr>…   s   è ø€ ÒFpÐ^_ÄzÐRSÔUX×GYÑFpùs   ‚zUnable to import z from z: z does not existr!   ú import ú, zfrom %s import *z: names must be of type stringz1Unable to import %r: names must be of type stringzUnable to import %r)"r%   r0   ÚstripÚ
startswithr&   ÚparseÚ	ExceptionÚprintÚERRORÚallr*   ÚSQL_COLTYPEr'   ÚnamesÚasnameÚnameÚ	importlibÚimport_moduler(   Ú
__import__ÚmoduleÚdirÚgetattrÚAttributeErrorÚImportErrorÚwarningsÚwarnr   r   r   ÚtupleÚlenÚappendÚjoin)Úimport_directivesÚstyleÚ
quiet_loadÚimported_objectsÚ	directiveÚnodeÚexcr*   r>   r=   Úimported_objectÚkÚimported_namess                r   Úimport_itemsrW   B   sY  € ð Ðà&ó YFˆ	Ü�i¤Ô%Ø!Ÿ™Ó)ˆIðV	FÜ˜)¤SÕ)¨i×.BÑ.BÐCWÕ.Xð!ÜŸ9™9 YÓ/�Dô
 Ñ`ÐVZ×V_ÑV_Ô`Ô`Ù%Ü˜eŸk™kÐ*NÐQZÑ*ZÓ[Ô\Øá!Ü˜%×+Ñ+¨D°9Ñ,<Ó=Ô>à ŸI™Ió 7�DÜ! $¬¯
©
Ô3Ø$(§J¡Jò Z˜DØ%)§[¡[Ò%=°D·I±I˜FÜ7@×7NÑ7NÈtÏyÉyÓ7YÐ,¨VÒ4ðZô " $¬¯©Õ7Ü*3×*>Ñ*>¸t¿{¹{ÈBÐPRÐko×kuÑkuÖTvÐcgÐUY×U^ÓU^ÒTvÓ*w˜Ø$(§J¡Jò 7˜DØ%)§[¡[Ò%=°D·I±I˜Fð	7Ø#'§9¡9°Ò#3Ü-0°Ó-Aò %Z¨Ü>EÀoÐWXÓ>YÐ(8¸Ò(;ñ%Zô @GÀÐX\×XaÑXaÓ?bÐ$4°VÑ$<øò7ò7ô( —‘ð  Vô  Xsð  @Aõ  Bä˜i¬Ô-Ü&0°Ó&;�OØ@OÐ$ Y§_¡_°SÓ%9¸!Ñ%<Ñ=Ù%Ü˜e×/Ñ/°¸iÑ0GÓHÔIÙÜ 	¬D´%¨=Õ9¼cÀ)»nÐPQÓ>QÜ% i°¡l´CÔ8Ù)Ü! %§+¡+Ð.gÐjsÐtuÑjvÑ.vÓ"wÔxÙ ä! )¨A¡,´´u°Ô>Ä3ÑFpÐclÐmnÑcoÔFpÔCpä*4°Y¸q±\À2ÀrÈ9ÐUVÉ<Ó*X˜Ø)+˜Ø$-¨a¡Lò <˜Dð<Ü9@ÀÐRVÓ9WÐ 0°Ñ 6ð
 !/× 5Ñ 5°dÕ ;ð<ò  *Ü! %×"3Ò"3È9ÐUVË<ÐY]×YbÑYbÐcqÔYrÐ4sÓ"tÖuÜ# I¨a¡L´#Ô6ð % Q™<¨3Ò.Ü.8¸À1¹ÀrÈ2ÈyÐYZÉ|Ó.\˜OÜ%(¨Ó%9ò R Ü6=¸oÈqÓ6QÐ 0°Ò 3ðRá#-Ü % e×&7Ñ&7Ð8JÈYÐWXÉ\Ñ8YÓ&ZÕ [ä.5´jÀÈ1ÁÈrÐSUÐXaÐbcÑXdÐWeÓ6fÐhqÐrsÑhtÓ.u˜OØ=LÐ,¨Y°q©\Ñ:Ù#-Ü % e×&7Ò&7ÈyÐYZË|Ð]fÐghÒ]iÐ8jÓ&kÕ lá)Ü! %§+¢+ÐmvÐwxÓmyð  |Eð  FGó  |Hð  /Ió  #Jõ  Ká%Ü˜eŸk™kÐ*]Ð`iÑ*iÓjÔkùðmYFðv Ðøôi !ò !Ù%Ü˜eŸkškÂIÉsÐ*SÓTÔUÝ õ &ûð!üò$ Uwøô $2ò 7Ü %¤c¨/Ó&:Ô ;ä&1°#Ó&6Ð 6ûð7ûô4 $2ò FÙ'1Ü$)¨%¯+ª+ÒjnÐpyÐz{Óp|ò  Cð  7Dó  +Eô  %FúðFûô6 ò 	FÙÜ�e—k‘kÐ"7¸)Ñ"CÓDÔEúð	Fús³   ª#T>ÁRÁ#;T>ÂB0T>Å*T>Å:SÆ0T>Æ>ASÈA4T>É<AT>ËAT>Ì&TÌ5ET>Ò	SÒ"SÒ<T>ÓT>ÓSÓT>Ó	T	ÓS=	Ó=T	ÔT>Ô2T;Ô7T>Ô:T;Ô;T>Ô>(U*Õ)U*c                 óô  ‡ ‡‡‡‡‡‡‡‡‡‡‡— ddl mŠ ddlm} ‰j                  s |«        ddlmŠ ‰ j                  dg «      }t        ‰dg «      }||z   Šd‰v }‰ j                  d«      Št        ‰d	i «      Št        ‰d
i «      Št        ‰di «      }i Ši Šˆˆˆˆfd„Šˆˆˆˆfd„}ˆˆfd„}ˆˆ ˆfd„Šˆfd„}	d}
	 ddl	m
} d}
|rG‰st        ‰j                  d«      «       t        |‰‰¬«      }|j                  «       D ]
  \  }}|‰|<   Œ |
r‹|s‰j                  «       D ]v  \  }}|j!                  d«      d   }t#        |j$                  «      }|‰v s	|›d|›�‰v rŒ=‰j'                  |j$                  g «       ‰|j$                     j)                  |«       Œx |s˜ |	«       D ]Ž  \  }}|sŒ	t#        |j*                  «      }|‰v rŒ#|D ]g  }|›d|j*                  ›�‰v rŒ|j$                  sŒ$‰j'                  |j$                  g «       ‰|j$                     j)                  |j*                  «       Œi Œ�  |«        ‰s!t        ‰j                  d«      |rdndz  «        |«        t        ‰dd«      rK‰st        ‰j                  d«      «       t        t,        ‰‰¬«      }|j                  «       D ]
  \  }}|‰|<   Œ t        ‰di «      }|rG‰st        ‰j                  d«      «       t        |‰‰¬«      }|j                  «       D ]
  \  }}|‰|<   Œ t        ‰di «      }|rG‰st        ‰j                  d «      «       t        |‰‰¬«      }|j                  «       D ]
  \  }}|‰|<   Œ ‰S # t        $ r Y �Œ³w xY w)!Nr   )Úapps)Úsetup)ÚsettingsÚ	dont_loadÚSHELL_PLUS_DONT_LOADr,   rO   ÚSHELL_PLUS_MODEL_ALIASESÚSHELL_PLUS_APP_PREFIXESÚSHELL_PLUS_PRE_IMPORTSc                  ór  •— i } t        ‰
j                  «       «      D ]—  \  }}t        |«      }‰j                  |i «      }‰j                  |«      }t        |«      D ]V  }|›d|›�‰	v rŒ|j                  |«      }|s|r|›d|›�}n|}| j	                  |g «       | |   j                  |›d|›�«       ŒX Œ™ | S )aÓ  
        Collect dictionary from names to possible models. Model is represented as his full path.
        Name of model can be alias if SHELL_PLUS_MODEL_ALIASES or SHELL_PLUS_APP_PREFIXES is specified for this model.
        This dictionary is used by collision resolver.
        At this phase we can't import any models, because collision resolver can change results.
        :return: Dict[str, List[str]]. Key is name, value is list of full model's path's.
        r   Ú_)ÚsortedÚitemsr   ÚgetÚ
setdefaultrK   )Úmodels_to_importÚapp_modÚmodelsÚapp_nameÚapp_aliasesÚprefixÚ
model_nameÚaliasÚapp_prefixesr\   Úload_modelsÚmodel_aliasess           €€€€r   Ú&get_dict_from_names_to_possible_modelsz>import_objects.<locals>.get_dict_from_names_to_possible_modelsÃ   sÒ   ø€ ð ÐÜ% k×&7Ñ&7Ó&9Ó:ò 	P‰OˆG�VÜ# GÓ,ˆHØ'×+Ñ+¨H°bÓ9ˆKØ!×%Ñ% hÓ/ˆFä$ V›nò P�
Ú&©
Ð3°yÑ@Øà#Ÿ™¨
Ó3�áÙÚ+1±:Ð >™à *˜à ×+Ñ+¨E°2Ô6Ø  Ñ'×.Ñ.º'Á:Ð/NÕOñPð	Pð&  Ðr   c                  óœ   •— t        ‰dg «      } | r<‰st        ‰j                  d«      «        ‰t        | «      j	                  «       «       y y )NÚSHELL_PLUS_SUBCLASSES_IMPORTz# Shell Plus Subclasses Imports)rD   r8   Ú	SQL_TABLEr
   Úcollect_subclasses)Úbase_classes_to_importÚperform_automatic_importsrO   r[   rN   s    €€€€r   Úimport_subclassesz)import_objects.<locals>.import_subclassesá   sI   ø€ Ü!(¨Ð3QÐSUÓ!VÐÙ!ÙÜ�e—o‘oÐ&GÓHÔIÙ%Ô&6Ð7MÓ&N×&aÑ&aÓ&cÕdð "r   c                  óR   •— t        «       j                   ‰«       «      }  ‰| «       y)zï
        Perform collision resolving and imports all models.
        When collisions are resolved we can perform imports and print information's, because it is last phase.
        This function updates imported_objects dictionary.
        N)r	   Úrun_collision_resolver)Úmodules_to_modelsrr   rx   s    €€r   Úimport_modelsz%import_objects.<locals>.import_modelsè   s&   ø€ ô 5Ó6×MÑMÑNtÓNvÓwÐÙ!Ð"3Õ4r   c                 óV  •— | j                  «       D ]�  \  }}g }t        |«      D ]G  \  }}	 t        |›d|›�«      ‰|<   ||k(  r|j                  |«       n|j                  |›d|›d�«       ŒI ‰j                  d«      rŒot        ‰	j                  d
|›ddj                  |«      ›�«      «       ŒŸ y	# t        $ rl}‰j                  d«      rt        j                  «        ‰j                  d«      s,t        ‰	j                  d|›d|›dt        |«      ›�«      «       Y d	}~Œþd	}~ww xY w)a  
        Import elements from given dictionary.
        :param modules_to_classes: dictionary from module name to tuple.
        First element of tuple is model name, second is model alias.
        If both elements are equal than element is imported without alias.
        r   z (as ú)Ú	tracebackrO   zFailed to import 'z' from 'z
' reason: Nr!   r2   r3   )rd   rc   r   rK   rF   re   r€   Ú	print_excr8   r9   r0   r;   rL   )
Úmodules_to_classesÚfull_module_pathri   Úmodel_labelsrm   rn   r1   rP   ÚoptionsrN   s
          €€€r   rx   z1import_objects.<locals>.perform_automatic_importsñ   s  ø€ ð );×(@Ñ(@Ó(Bò 	lÑ$Ð˜fØˆLÜ'-¨f£~ò tÑ#�˜UðtÜ.;ÒGWÑYcÐ<dÓ.eÐ$ UÑ+Ø! UÒ*Ø$×+Ñ+¨JÕ7à$×+Ñ+ºJÊÐ,NÔOøðtð —;‘;˜|Õ,Ü�e×'Ò'Ò?OÐQU×QZÑQZÐ[gÔQhÐ(iÓjÕkñ!	løô #ò tØ—{‘{ ;Ô/Ü!×+Ñ+Ô-Ø"Ÿ;™; |Ô4Ü˜eŸkškÚLVÒXhÔjmÐnoÔjpÐqósô tÿøð	tús   ¬AB3Â3	D(Â<A"D#Ä#D(c               3   óŽ   •K  — ‰j                  «       D ]-  } | j                  sŒ| j                  | j                  «       f–— Œ/ y ­wr$   )Úget_app_configsÚmodels_moduleÚ
get_models)ÚapprY   s    €r   Úget_apps_and_modelsz+import_objects.<locals>.get_apps_and_models
  s@   øè ø€ Ø×'Ñ'Ó)ò 	:ˆCØ× Ó Ø×'Ñ'¨¯©Ó)9Ð9Ó9ñ	:ùs
   ƒ A¤!AF)Ú_document_registryTz# Shell Plus User Pre Imports)rO   r   éÿÿÿÿz# Shell Plus Model Imports%sz SKIPPEDÚ ÚSHELL_PLUS_DJANGO_IMPORTSz# Shell Plus Django ImportsÚSHELL_PLUS_IMPORTSz# Shell Plus User ImportsÚSHELL_PLUS_POST_IMPORTSz# Shell Plus User Post Imports)Údjango.appsrY   ÚdjangorZ   ÚreadyÚdjango.confr[   re   rD   Úmongoengine.baserŒ   rF   r8   ru   rW   rd   r   r   r   rf   rK   r   r�   ) r…   rN   rZ   Údont_load_cliÚdont_load_confÚdont_load_any_modelsr`   ry   r}   r‹   ÚmongoenginerŒ   ÚimportsrU   Úvr>   Úmodrj   rh   Ú
app_modelsr�   r‘   ro   rY   r\   rr   rP   rp   rq   rx   rO   r[   s    ``                    @@@@@@@@@@r   Úimport_objectsrŸ   ®   s‹  ÿû€ Ý Ýà�:Š:ÙŒå$à—K‘K ¨RÓ0€MÜ˜XÐ'=¸rÓB€NØ Ñ.€IØ )Ð+ÐØ—‘˜\Ó*€JÜ˜HÐ&@À"ÓE€MÜ˜8Ð%>ÀÓC€LÜ$ XÐ/GÈÓLÐàÐØ€K÷ ÷<eõ5ölô2:ð
 €KðÝ7Øˆñ
 ÙÜ�%—/‘/Ð"AÓBÔCÜÐ5°uÈÔTˆØ—M‘M“Oò 	$‰DˆAˆqØ"#Ð˜QÒð	$ñ Ñ/Ø+×1Ñ1Ó3ò 	5‰IˆD�#Ø—:‘:˜c“? 2Ñ&ˆDÜ# C§N¡NÓ3ˆHØ˜9Ñ$²H¹dÐ)CÈ	Ñ(QØà×"Ñ" 3§>¡>°2Ô6Ø˜Ÿ™Ñ'×.Ñ.¨tÕ4ð	5ñ  Ù#6Ó#8ò 	EÑˆG�ZÙØä# G×$4Ñ$4Ó5ˆHØ˜9Ñ$Øà!ò E�Ú&¨¯ªÐ5¸ÑBØà—>“>à×*Ñ*¨3¯>©>¸2Ô>Ø §¡Ñ/×6Ñ6°s·|±|ÕDñEð	Eñ" ÔÙÜˆe�o‰oÐ<Ó=ÑOcÁÐikÑlÔmá„Oô ˆxÐ4°dÔ;ÙÜ�%—/‘/Ð"?Ó@ÔAÜÔ8¸%ÈJÔWˆØ—M‘M“Oò 	$‰DˆAˆqØ"#Ð˜QÒð	$ô ! Ð+?ÀÓDÐÙÙÜ�%—/‘/Ð"=Ó>Ô?ÜÐ1°5ÀZÔPˆØ—M‘M“Oò 	$‰DˆAˆqØ"#Ð˜QÒð	$ô & hÐ0IÈ2ÓNÐÙÙÜ�%—/‘/Ð"BÓCÔDÜÐ6¸È*ÔUˆØ—M‘M“Oò 	$‰DˆAˆqØ"#Ð˜QÒð	$ð ÐøôM ò Úðús   Â;M* Í*	M7Í6M7)F)r&   r€   rG   r?   Útypingr   r   r   r   Údjango.apps.configr   Údjango.utils.module_loadingr   Ú%django_extensions.collision_resolversr	   Ú#django_extensions.import_subclassesr
   Ú#django_extensions.utils.deprecationr   r�   r7   r   r   rW   rŸ   r   r   r   ú<module>r¦      sR   ðã 
Û Û Û ÷ó õ 2Ý 5Ý JÝ @Ý Kò	Ð ô	˜	ô 	òó:ióXkr   