§
    ¦”j(  ã                   ó€   — d dl 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mZmZ d dlmZ d	„ Zd
„ Zd„ ZdS )é    N)Údefaultdict)ÚMutableMapping)Úcamelize)Úapi_settings)Úwarn)ÚResolvedComponentÚ	list_hashÚload_enum_name_overridesÚsafe_ref)Úspectacular_settingsc           	      óx  ‡‡— d"ˆfd„	Šˆfd„}d„ }|                       di ¦  «                              di ¦  «        }t          ¦   «         }t          t          ¦  «        }t          t          ¦  «        } ‰|¦  «        D ]ª\  }	}
|
                     ¦   «         D ]�\  }}|                      d¦  «        dk    r|                      d	¦  «        }t          |t          ¦  «        rd
|vrŒM ||¦  «        }||                              |¦  «         ||                              |	|f¦  «         Œ‘Œ«t          j	        }i }|                     ¦   «         D �]$\  }}|D �]}||v r	||         }nÍt          |¦  «        dk    rt          |¦  «        › |› �}n¦t          ||         ¦  «        dk    rHt          t          ||         ¦  «        ¦  «        \  }	}t          |	¦  «        › t          |¦  «        › |› �}nEt          |¦  «        › |dd…                              ¦   «         › |› �}t          d|› d|› d�¦  «         |                      ||¦  «        |k    rt          d|› d�¦  «         ||= n|||<   ||||f<   �Œ�Œ& ‰|¦  «        D �]\  }}
|
                     ¦   «         D �]ë\  }}|                      d¦  «        dk    }|r|                      d	¦  «        }t          |t          ¦  «        rd
|vrŒP|d
         }d„ |d
         D ¦   «         |d
<    ||¦  «        }|                      |¦  «        p	|||f         }d„ |                     ¦   «         D ¦   «         }d„ |                     ¦   «         D ¦   «         }t          j        r�|                      dd¦  «                             d¦  «        r|                     d¦  «        |d<   n?d|                      dd¦  «        v r'|d                              d¦  «        \  }}}d|z   |d<    |||¬¦  «        g}t          j        r™d|v r&|                      |d|› �d
dgi¬¦  «        ¦  «         d|v rkt          j                             d¦  «        r&|                      |d|› �ddi¬¦  «        ¦  «         n&|                      |d|› �d
dgi¬¦  «        ¦  «         t          j                             d¦  «        r6t          |d         t.          ¦  «        rd„ |d         D ¦   «         d         |d<   t          |¦  «        dk    r!|                     |d         j        ¦  «         n!|                     d d!„ |D ¦   «         i¦  «         |rt5          |¦  «        |
|         d	<   �ŒÙt5          |¦  «        |
|<   �Œí�Œ	‰j                             t          j        ¦  «        | d<   t=          | ‰¦  «         | S )#zþ
    simple replacement of Enum/Choices that globally share the same name and have
    the same choices. Aids client generation to not generate a separate enum for
    every occurrence. only takes effect when replacement is guaranteed to be correct.
    Nc              3   ó¤  •K  — |sr|                       ¦   «         D ][\  }} t          j        rt          j        dd|¦  «        }t          j        rt          j        dd|¦  «        } ‰| |¦  «        E d {V —† Œ\d S t          | t          ¦  «        r| D ]} ‰||¦  «        E d {V —† Œd S t          | t          ¦  «        r•|  	                    d¦  «        r|| d         fV —  ‰|  	                    dg ¦  «        |¦  «        E d {V —†  ‰|  	                    dg ¦  «        |¦  «        E d {V —†  ‰|  	                    dg ¦  «        |¦  «        E d {V —† d S d S )Nz^Patched(.+)z\1z(.+)Request$Ú
propertiesÚoneOfÚallOfÚanyOf)
Úitemsr   ÚCOMPONENT_SPLIT_PATCHÚreÚsubÚCOMPONENT_SPLIT_REQUESTÚ
isinstanceÚlistÚdictÚget)ÚschemaÚcomponent_nameÚitemÚiter_prop_containerss      €úd/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/drf_spectacular/hooks.pyr   z6postprocess_schema_enums.<locals>.iter_prop_containers   sâ  øè è € Øð 	UØ*0¯,ª,©.¬.ð Hð HÑ&� Ý'Ô=ð SÝ%'¤V¨N¸EÀ>Ñ%RÔ%R�NÝ'Ô?ð SÝ%'¤V¨N¸EÀ>Ñ%RÔ%R�NØ/Ð/°¸ÑGÔGÐGÐGÐGÐGÐGÐGÐGÐGðHð Hõ ˜¥Ñ%Ô%ð 	UØð Fð F�Ø/Ð/°°nÑEÔEÐEÐEÐEÐEÐEÐEÐEÐEðFð Få˜¥Ñ%Ô%ð 	UØ�zŠz˜,Ñ'Ô'ð ;Ø$ f¨\Ô&:Ð:Ð:Ð:Ð:Ø+Ð+¨F¯JªJ°wÀÑ,CÔ,CÀ^ÑTÔTÐTÐTÐTÐTÐTÐTÐTØ+Ð+¨F¯JªJ°wÀÑ,CÔ,CÀ^ÑTÔTÐTÐTÐTÐTÐTÐTÐTØ+Ð+¨F¯JªJ°wÀÑ,CÔ,CÀ^ÑTÔTÐTÐTÐTÐTÐTÐTÐTÐTÐTð	Uð 	Uó    c                 óv   •— t          | t           j        || ¬¦  «        }‰j                             |¦  «         |S )N)ÚnameÚtyper   Úobject)r   ÚSCHEMAÚregistryÚregister_on_missing)r#   r   Ú	componentÚ	generators      €r    Úcreate_enum_componentz7postprocess_schema_enums.<locals>.create_enum_component(   sE   ø€ Ý%ØÝ"Ô)ØØð	
ñ 
ô 
ˆ	ð 	Ô×.Ò.¨yÑ9Ô9Ð9ØÐr!   c                 óX   — d| v r| d         S t          d„ | d         D ¦   «         ¦  «        S )Núx-spec-enum-idc                 ó   — g | ]
}|d v¯||f‘ŒS ©)Ú N© ©Ú.0Úis     r    ú
<listcomp>zBpostprocess_schema_enums.<locals>.extract_hash.<locals>.<listcomp>:   s&   € ÐTÐTÐT¨ÀÈÐ@SÐ@S˜q !˜fÐ@SÐ@SÐ@Sr!   Úenum)r	   ©r   s    r    Úextract_hashz.postprocess_schema_enums.<locals>.extract_hash2   s>   € Ø˜vÐ%Ð%ð Ð*Ô+Ð+õ ÐTÐT¨f°V¬nÐTÑTÔTÑUÔUÐUr!   Ú
componentsÚschemasr$   Úarrayr   r6   é   é   zOenum naming encountered a non-optimally resolvable collision for fields named "zq". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "z9". add an entry to ENUM_NAME_OVERRIDES to fix the naming.z4encountered multiple names for the same choice set (z‡). This may be unwanted even though the generated schema is technically correct. Add an entry to ENUM_NAME_OVERRIDES to fix the naming.c                 ó   — g | ]}|d v¯|‘Œ	S r/   r1   r2   s     r    r5   z,postprocess_schema_enums.<locals>.<listcomp>   s"   € Ð"YÐ"YÐ"Y¨ÀQÈjÐEXÐEX 1ÐEXÐEXÐEXr!   c                 ó"   — i | ]\  }}|d v ¯	||“ŒS ))r$   r6   r1   ©r3   ÚkÚvs      r    ú
<dictcomp>z,postprocess_schema_enums.<locals>.<dictcomp>†   s)   € ÐYÐYÐY¡D A qÀ1ÐHXÐCXÐCX˜1˜aÐCXÐCXÐCXr!   c                 ó"   — i | ]\  }}|d v¯	||“ŒS ))r$   r6   r-   r1   r@   s      r    rC   z,postprocess_schema_enums.<locals>.<dictcomp>‡   s)   € ÐoÐoÐo¡D A qÀ1ÐLnÐCnÐCn˜1˜aÐCnÐCnÐCnr!   Údescriptionr0   Ú*z

*r7   ÚBlankz3.1ÚNullÚnullc                 ó   — g | ]
}|d k    ¯|‘ŒS )rI   r1   )r3   Úts     r    r5   z,postprocess_schema_enums.<locals>.<listcomp>Ÿ   s   € Ð&UÐ&UÐ&U¨QÈÈfÊÈ qÈÈÈr!   r   r   c                 ó   — g | ]	}|j         ‘Œ
S r1   )Úref)r3   Úcs     r    r5   z,postprocess_schema_enums.<locals>.<listcomp>¤   s   € Ð-HÐ-HÐ-H¸¨a¬eÐ-HÐ-HÐ-Hr!   )N)r   r
   r   Úsetr   r   r   Úaddr   ÚENUM_SUFFIXÚlenr   ÚnextÚiterÚ
capitalizer   Ú ENUM_GENERATE_CHOICE_DESCRIPTIONÚ
startswithÚpopÚ	partitionÚ#ENUM_ADD_EXPLICIT_BLANK_NULL_CHOICEÚappendÚOAS_VERSIONr   ÚupdaterM   r   r'   ÚbuildÚAPPEND_COMPONENTSÚ"postprocess_schema_enum_id_removal)Úresultr*   Úkwargsr+   r8   r:   Ú	overridesÚprop_hash_mappingÚhash_name_mappingr   ÚpropsÚ	prop_nameÚprop_schemaÚprop_enum_cleaned_hashÚenum_suffixÚenum_name_mappingÚprop_hash_setÚ	prop_hashÚ	enum_nameÚ_Úis_arrayÚprop_enum_original_listÚenum_schemaÚpostr9   r   s    `                       @r    Úpostprocess_schema_enumsrt      s)  øø€ ðUð Uð Uð Uð Uð Uð$ð ð ð ð ðVð Vð Vð �jŠj˜ rÑ*Ô*×.Ò.¨y¸"Ñ=Ô=€Gå(Ñ*Ô*€Iå#¥CÑ(Ô(ÐÝ#¥CÑ(Ô(Ðà!5Ð!5°gÑ!>Ô!>ð 	Wð 	WÑˆ˜Ø&+§k¢k¡m¤mð 	Wð 	WÑ"ˆI�{Ø�Š˜vÑ&Ô&¨'Ò1Ð1Ø)Ÿošo¨gÑ6Ô6�Ý˜k­>Ñ:Ô:ð ¸fÈKÐ>WÐ>WØà%1 \°+Ñ%>Ô%>Ð"Ø˜iÔ(×,Ò,Ð-CÑDÔDÐDØÐ4Ô5×9Ò9¸>È9Ð:UÑVÔVÐVÐVð	Wõ 'Ô2€Kð
 ÐØ$5×$;Ò$;Ñ$=Ô$=ð Bñ BÑ ˆ	�=Ø&ð 	Bñ 	BˆIØ˜IÐ%Ð%Ø% iÔ0�	�	Ý�]Ñ#Ô# qÒ(Ð(å'¨	Ñ2Ô2ÐA°KÐAÐA�	�	ÝÐ& yÔ1Ñ2Ô2°aÒ7Ð7å$(­Ð.?À	Ô.JÑ)KÔ)KÑ$LÔ$LÑ!� Ý'¨Ñ7Ô7Ð[½À)Ñ9LÔ9LÐ[ÈkÐ[Ð[�	�	å'¨	Ñ2Ô2Ð]°I¸b¸q¸b´M×4LÒ4LÑ4NÔ4NÐ]ÐP[Ð]Ð]�	ÝðNØ'ðNð NàPYðNð Nð Nñô ð ð !×$Ò$ Y°	Ñ:Ô:¸iÒGÐGÝðNÈ9ð Nð Nð Nñô ð ð
 & iÐ0Ð0à/8Ð! )Ñ,Ø8AÐ˜y¨)Ð4Ñ5Ñ5ñ7	Bð> )Ð(¨Ñ1Ô1ð 49ñ 49‰ˆˆ5Ø&+§k¢k¡m¤mð 3	9ñ 3	9Ñ"ˆI�{Ø"—’ vÑ.Ô.°'Ò9ˆHØð 7Ø)Ÿošo¨gÑ6Ô6�å˜k­>Ñ:Ô:ð ¸fÈKÐ>WÐ>WØà&1°&Ô&9Ð#Ø"YÐ"Y¨k¸&Ô.AÐ"YÑ"YÔ"YˆK˜ÑØ$˜ [Ñ1Ô1ˆIð *×-Ò-¨iÑ8Ô8ÐcÐ<MÈiÐYbÐNbÔ<cˆIð ZÐY¨K×,=Ò,=Ñ,?Ô,?ÐYÑYÔYˆKØoÐo¨K×,=Ò,=Ñ,?Ô,?ÐoÑoÔoˆKõ $ÔDð <Ø—?’? =°"Ñ5Ô5×@Ò@ÀÑEÔEð <Ø1<·²ÀÑ1OÔ1O�K Ñ.Ð.Ø §¢°¸rÑ BÔ BÐBÐBØ!,¨]Ô!;×!EÒ!EÀgÑ!NÔ!N‘J�A�q˜$Ø14°t±�K Ñ.ð &Ð% i¸ÐDÑDÔDðˆJõ $ÔGð pØÐ0Ð0Ð0Ø×%Ò%Ð&;Ð&;Ð<QÀKÐ<QÐ<QÐ[aÐdfÐcgÐZhÐ&iÑ&iÔ&iÑjÔjÐjØÐ2Ð2Ð2Ý+Ô7×BÒBÀ5ÑIÔIð pØ"×)Ò)Ð*?Ð*?Ð@TÀ{Ð@TÐ@TÐ^dÐflÐ]mÐ*nÑ*nÔ*nÑoÔoÐoÐoà"×)Ò)Ð*?Ð*?Ð@TÀ{Ð@TÐ@TÐ^dÐgkÐflÐ]mÐ*nÑ*nÔ*nÑoÔoÐoõ $Ô/×:Ò:¸5ÑAÔAð YÅjÐQ\Ð]cÔQdÕfjÑFkÔFkð YØ&UÐ&U°+¸fÔ2EÐ&UÑ&UÔ&UÐVWÔ&X�˜FÑ#å�:‰Œ !Ò#Ð#Ø×"Ò" :¨a¤=Ô#4Ñ5Ô5Ð5Ð5à×"Ò" GÐ-HÐ-H¸ZÐ-HÑ-HÔ-HÐ#IÑJÔJÐJàð 9Ý,4°[Ñ,AÔ,A��iÔ  Ñ)Ñ)å#+¨KÑ#8Ô#8��iÑ Ñ ñg3	9ðl %Ô-×3Ò3Õ4HÔ4ZÑ[Ô[€Fˆ<Ñõ ' v¨yÑ9Ô9Ð9à€Mr!   c                 ó(   ‡— ˆfd„Š ‰| ¦  «         | S )z›
    Iterative modifying approach to scanning the whole schema and removing the
    temporary helper ids that allowed us to distinguish similar enums.
    c                 óì   •— t          | t          ¦  «        r/t          | ¦  «        D ]}|dk    r| d= Œ ‰| |         ¦  «         Œd S t          | t          t          f¦  «        r| D ]} ‰|¦  «         Œd S d S )Nr-   )r   r   r   Útuple)Ú
sub_resultÚkeyr   Úcleans      €r    rz   z1postprocess_schema_enum_id_removal.<locals>.clean¹   s¯   ø€ Ý�j¥$Ñ'Ô'ð 	Ý˜JÑ'Ô'ð +ð +�ØÐ*Ò*Ð*Ø"Ð#3Ð4Ð4à�E˜* Sœ/Ñ*Ô*Ð*Ð*ð	+ð +õ
 ˜
¥T­5 MÑ2Ô2ð 	Ø"ð ð �Ø��d‘”��ð	ð 	ðð r!   r1   )ra   r*   rb   rz   s      @r    r`   r`   ´   s0   ø€ ð
	ð 	ð 	ð 	ð 	ð 
€Eˆ&�M„M€Mà€Mr!   c                 ó@   ‡— dt           j        › d�Šˆfd„| D ¦   «         S )z 
        preprocessing hook that filters out {format} suffixed paths, in case
        format_suffix_patterns is used and {format} path params are unwanted.
    Ú{Ú}c                 ó€   •— g | ]:\  }}}}|                      ‰¦  «        °|                      ‰d z   ¦  «        °4||||f‘Œ;S )ú/)Úendswith)r3   ÚpathÚ
path_regexÚmethodÚcallbackÚformat_paths        €r    r5   z2preprocess_exclude_path_format.<locals>.<listcomp>Ï   sg   ø€ ð ð ð á.ˆD�*˜f hØ—’˜kÑ*Ô*ðð /3¯mªm¸KÈ#Ñ<MÑ.NÔ.NðØ	ˆz˜6 8Ð,ðð ð r!   )r   ÚFORMAT_SUFFIX_KWARG)Ú	endpointsrb   r…   s     @r    Úpreprocess_exclude_path_formatrˆ   É   sC   ø€ ð
 <•|Ô7Ð;Ð;Ð;€Kðð ð ð à2;ðñ ô ð r!   )r   Úcollectionsr   Úcollections.abcr   Ú
inflectionr   Úrest_framework.settingsr   Údrf_spectacular.drainager   Údrf_spectacular.plumbingr   r	   r
   r   Údrf_spectacular.settingsr   rt   r`   rˆ   r1   r!   r    ú<module>r�      só   ðØ 	€	€	€	Ø #Ð #Ð #Ð #Ð #Ð #Ø *Ð *Ð *Ð *Ð *Ð *à Ð Ð Ð Ð Ð Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0à )Ð )Ð )Ð )Ð )Ð )ðð ð ð ð ð ð ð ð ð ð ð ð :Ð 9Ð 9Ð 9Ð 9Ð 9ðbð bð bðJð ð ð*
ð 
ð 
ð 
ð 
r!   