ó
    Í’Œjà  ã                   óV  • S SK JrJrJrJrJrJrJr  S SKJ	r	  SSK
Jr  SSKJrJrJr  SSKJr  \(       a  SSKJr  / SQrS	\\   S
\\   4S jrSSS\S
\\\\   4   4S jr\S.SSS\\   S
\\\\\\\   \4   4   4   4S jjr\S.S\\\\\\\   \4   4   4   S\\   S
S4S jjrg)é    )ÚTYPE_CHECKINGÚDictÚ	ItemsViewÚIterableÚListÚSetÚUnion)Úmsgé   )ÚErrors)ÚDocÚSpanÚToken)Údot_to_dict)ÚLanguage)ÚrequiresÚassignsÚscoresÚretokenizesÚvaluesÚreturnc           
      óæ  ^• [        [        R                  U S5      5      n[        [        [
        S.nUR                  5        GHŸ  u  mnTS:X  aŽ  U  Vs/ s H  oDR                  S5      (       d  M  UPM     nnU Vs/ s H  oDR                  S5      (       a  M  UPM     nnU(       a5  [        [        R                  R                  SR                  U5      S95      eTU;  aB  SR                  U4S jU  5       5      n[        [        R                  R                  TUS	95      e[        U[        5      (       d&  [        [        R                  R                  TS
95      eUR                  5        GHl  u  pGUS:X  a�  USL a5  [        [        R                  R                  SR                  T5      S
95      eUR                  5        HM  u  p‰U	SLd  M  T SU 3n
U
 SSR                  U	5       3n[        [        R                   R                  XºS95      e   M©  UR#                  S5      (       a)  [        [        R$                  R                  XDSS S95      eUSLaC  T SU 3n
U
 SSR                  U5       3n[        [        R                   R                  XºS95      eUT   n['        XÄ5      (       a  GMH  [        [        R(                  R                  TUS95      e   GM¢     U $ s  snf s  snf )a‹  Validate component attributes provided to "assigns", "requires" etc.
Raises error for invalid attributes and formatting. Doesn't check if
custom extension attributes are registered, since this is something the
user might want to do themselves later in the component.

values (Iterable[str]): The string attributes to check, e.g. `["token.pos"]`.
RETURNS (Iterable[str]): The checked attributes.
T)ÚdocÚtokenÚspanr   zspan.zspan._.ú, )Úattrsc              3   óV   >#   • U  H  oR                  T5      (       d  M  Uv •  M      g 7f©N)Ú
startswith)Ú.0ÚaÚobj_keys     €Ú¡C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\spacy/pipe_analysis.pyÚ	<genexpr>Ú!validate_attrs.<locals>.<genexpr>$   s   øé € Ð%Q²¨A¿<¹<È×;P§a¡a²ùs   ƒ) 	))Úobjr   )ÚattrÚ_z{}._z._.Ú.)r(   ÚsolutionNéÿÿÿÿ)r'   r(   )r   ÚdictÚfromkeysr   r   r   Úitemsr    Ú
ValueErrorr   ÚE180ÚformatÚjoinÚE181Ú
isinstanceÚE182ÚE183ÚendswithÚE184ÚhasattrÚE185)r   ÚdataÚobjsr   r(   Ú
span_attrsÚinvalid_attrsÚvalueÚext_attrÚ	ext_valueÚgoodÚbadr'   r#   s                @r$   Úvalidate_attrsrE      s{  ø€ ô ”t—}‘} V¨TÓ2Ó3€DÜ¤´Ñ5€DØŸ*™*Ÿ,‰ˆ�Ø�fÓá+1ÓNª6 4·_±_ÀW×5MŸ$©6ˆJÐNÙ+5ÓXª: 4¿_¹_ÈY×=WŸ$©:ˆJÐXÞÜ ¤§¡×!3Ñ!3¸$¿)¹)ÀJÓ:OÐ!3Ð!PÓQÐQØ˜$ÓØ ŸI™IÔ%Q±Ó%QÓQˆMÜœVŸ[™[×/Ñ/°GÀ=Ð/ÐQÓRÐRÜ˜%¤×&Ñ&ÜœVŸ[™[×/Ñ/°WÐ/Ð=Ó>Ð>Ø Ÿ;™;Ÿ=‰KˆDØ�s‹{Ø˜D’=Ü$¤V§[¡[×%7Ñ%7¸V¿]¹]È7Ó=SÐ%7Ð%TÓUÐUØ+0¯;©;®=Ñ'�Hà ¨Ô,Ø") ¨#¨h¨ZÐ8˜Ø!%  a¨¯©°Ó(;Ð'<Ð=˜Ü(¬¯©×);Ñ);ÀÐ);Ð)TÓUÐUñ ,9ñ Ø�}‰}˜S×!Ñ!Ü ¤§¡×!3Ñ!3¸ÈSÈbÈ	Ð!3Ð!RÓSÐSØ˜DÒ Ø!˜ ! D 6Ð*�Ø˜˜a §¡¨£Ð0Ð1�Ü ¤§¡×!3Ñ!3¸Ð!3Ð!LÓMÐMØ�w‘-ˆCÜ˜3×%Ô%Ü ¤§¡×!3Ñ!3¸ÀdÐ!3Ð!KÓLÐLô' )ñ 'ð@ €Mùò; OùÚXs   ÁK)Á1K)Á=K.ÂK.Únlpr   r(   c                 óè   • / / S.nU R                    H\  nU R                  U5      nXR                  ;   a  US   R                  U5        XR                  ;   d  MH  US   R                  U5        M^     U$ )a  Check which components in the pipeline assign or require an attribute.

nlp (Language): The current nlp object.
attr (str): The attribute, e.g. "doc.tensor".
RETURNS (Dict[str, List[str]]): A dict keyed by "assigns" and "requires",
    mapped to a list of component names.
)r   r   r   r   )Ú
pipe_namesÚget_pipe_metar   Úappendr   )rF   r(   ÚresultÚ	pipe_nameÚmetas        r$   Úget_attr_inforN   ?   sm   € ð 02¸rÑ#B€FØ—^”^ˆ	Ø× Ñ  Ó+ˆØ—<‘<ÓØ�9Ñ×$Ñ$ YÔ/Ø—=‘=Õ Ø�:Ñ×%Ñ% iÖ0ñ $ð €Mó    )ÚkeysrP   c          
      óÐ  • 0 0 S.n[        5       n[        U R                  5       GH  u  pEU R                  U5      nUR	                  UR
                  5        UR	                  UR                  5        U Vs0 s H  ow[        XgS5      _M     snUS   U'   U R                  SU n[        R                  UR                  S5      n	U	(       a3  U H-  u  p«U R                  U
5      nUR
                   H  nSX�'   M	     M/     U	R                  5        VVs/ s H  u  pÞU(       a  M  UPM     snnUS   U'   GM     U Vs0 s H  oÿ[        X5      _M     snUS'   U$ s  snf s  snnf s  snf )a@  Print a formatted summary for the current nlp object's pipeline. Shows
a table with the pipeline components and why they assign and require, as
well as any problems if available.

nlp (Language): The nlp object.
keys (List[str]): The meta keys to show in the table.
RETURNS (dict): A dict with "summary" and "problems".
)ÚsummaryÚproblemsNrR   FTrS   r   )ÚsetÚ	enumeraterH   rI   Úupdater   r   ÚgetattrÚpipeliner-   r.   r/   rN   )rF   rP   rK   Ú	all_attrsÚiÚnamerM   ÚkeyÚ
prev_pipesr   Ú	prev_nameÚ	prev_pipeÚ	prev_metaÚannotÚ	fulfilledr(   s                   r$   Úanalyze_pipesrc   Q   sR  € ð Øñ<€Fô ›%€IÜ˜SŸ^™^×,‰ˆØ× Ñ  Ó&ˆØ×Ñ˜Ÿ™Ô&Ø×Ñ˜Ÿ™Ô'ÙLPÓ"QÊDÀS¬°¸4Ó(@Ò#@ÉDÑ"QˆˆyÑ˜$ÑØ—\‘\ " 1Ð%ˆ
Ü—=‘= §¡°Ó6ˆÞÛ(2Ñ$�	Ø×-Ñ-¨iÓ8�	Ø&×.Ô.�EØ&*�H“Oó /ñ )3ð
 +3¯.©.Ô*:ô$
Ú*:Ñ&�eÄ)�EÑ*:ò$
ˆˆzÑ˜4Ô ñ -ñ CLÓLÂ)¸$œ]¨3Ó5Ò5Á)ÑL€Fˆ7�OØ€Mùò #Rùó$
ùò Ms   Á6EÄEÄ"EÄ;E#ÚanalysisNc                ó  • [         R                  " S5        SS/U Vs/ s H  o"R                  5       PM     snQnU S   R                  5       n[	        U5       VVVVs/ s H+  u  nu  pgXV/UR                  5        Vs/ s H  oˆPM     snQPM-     n	nnnn[         R                  " X“SSS9  [        S U S   R                  5        5       5      n
[        S	 U S   R                  5        5       5      (       ak  [         R                  " S
U
 S35        U S   R                  5        H9  u  p¼U(       d  M  [         R                  " SU SSR                  U5       35        M;     g[         R                  " S5        gs  snf s  snf s  snnnnf )zÍPrint a formatted version of the pipe analysis produced by analyze_pipes.

analysis (Dict[str, Union[List[str], Dict[str, List[str]]]]): The analysis.
keys (List[str]): The meta keys to show in the table.
zPipeline OverviewÚ#Ú	ComponentrR   T)ÚheaderÚdividerÚ	multilinec              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr   )Úlen©r!   Úps     r$   r%   Ú&print_pipe_analysis.<locals>.<genexpr>ƒ   s   é € ÐCÒ%B ”S˜—V�VÒ%Bùs   ‚rS   c              3   ó$   #   • U  H  ov •  M     g 7fr   © rm   s     r$   r%   ro   „   s   é € Ð
4Ò3�Œ1Ò3ùs   ‚z
Problems (Ú)Ú'z' requirements not met: r   zNo problems found.N)r
   ri   Ú
capitalizer/   rU   r   ÚtableÚsumÚanyÚwarnr3   rC   )rd   rP   r\   rh   rR   rZ   ÚnÚmÚvÚbodyÚ
n_problemsr[   Úproblems                r$   Úprint_pipe_analysisr   t   sE  € ô ‡K‚KÐ#Ô$Ø�;ÐD¹dÓ!Cºd°s§.¡.Ö"2¹dÑ!CÐD€FØ! )Ñ,×2Ñ2Ó4€GÜ>GÈÔ>PÖQÒ>P±°±F°QˆQÐ, §¡¤
Ó+¢
˜1’Q¡
Ñ+Ó,Ñ>P€DÓQÜ‡I‚Iˆd¨4¸4Ò@ÜÑC X¨jÑ%9×%@Ñ%@Ô%BÓCÓC€JÜ
Ñ
4�h˜zÑ*×1Ñ1Ô3Ó
4×4Ñ4Ü�Š�j  ¨AÐ.Ô/Ø% jÑ1×7Ñ7Ö9‰MˆDßˆwÜ—’˜1˜T˜FÐ":¸4¿9¹9ÀWÓ;MÐ:NÐOÖPò :ô 	�ŠÐ%Õ&ùò "Dùâ+ùÕQs   žE8ÁF
Á=E=ÂF
Å=F
)Útypingr   r   r   r   r   r   r	   Úwasabir
   Úerrorsr   Útokensr   r   r   Úutilr   Úlanguager   ÚDEFAULT_KEYSÚstrrE   rN   rc   r   rq   rO   r$   Ú<module>rˆ      s  ðß M× MÑ Må å ß $Ñ $Ý æå"ò @€ð+˜8 C™=ð +¨X°c©]ô +ð\�zð ¨ð °°c¸4À¹9°nÑ1Eô ð& +7ò Ø	ð Ø" 3™ið à	ˆ#ˆt�C˜˜t C™y¨$˜Ñ/Ð/Ñ0Ð
0Ñ1õ ðL #ò'Ø�3˜˜S %¨¨S©	°4¨Ñ"8Ð8Ñ9Ð9Ñ:ð'ð ˆs‰)ð'ð 
ö	'rO   