
    i                         d dl Z d dlZd dlmZ d dlmZ d dlZd dlmZm	Z	 ddl
mZ ddlmZmZmZmZmZmZ dd	lmZ  ej*                  d
      d        ZddZddedeeef   fdZdedefdZy)    N)Path)Tuple)Printermsg   )about)get_installed_modelsget_minor_versionget_model_metaget_package_pathget_package_versionis_compatible_version   )appvalidatec                      t                y)a  
    Validate the currently installed pipeline packages and spaCy version. Checks
    if the installed packages are compatible and shows upgrade instructions if
    available. Should be run after `pip install -U spacy`.

    DOCS: https://spacy.io/api/cli#validate
    N)r        c/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/spacy/cli/validate.pyvalidate_clir      s	     Jr   returnc            
      b   t               \  } }t        t        j                        }|j	                  |i       }|st        j                  d| d       | j                         D ch c]  \  }}|d   r|d    }}}|D cg c]	  }||vs| }}|D cg c]	  }||v s| }	}t        t              j                  j                  }
t        j                  dt        j                   d       t        j                  d|
        | rd}g }| j                         D ]  \  }}|d   r5t        j                  d	d
dd      }t        j                  |d   d
d      }n7t        j                  |d   dd      }d|j	                  |d   dg      d    }|j                  |d   |d   ||f        t        j                  ||       nt        j                  dd       |	rft        j                  d       t        j                  d       d}t!        dj#                  |	D cg c]  }|j%                  |       c}      dz          |r7t        j                  dt        j                   ddj#                  |             |rt'        j(                  d       y y c c}}w c c}w c c}w c c}w ) Nz"No compatible packages found for vz	 of spaCycompatnamez$Installed pipeline packages (spaCy v)zspaCy installation: )NAMESPACYVERSION r   greengoodT)coloriconno_printversion)r"   r$   yellowz--> n/ar   spacy)headerz7No pipeline packages found in your current environment.exitszInstall updatesz2Use the following commands to update the packages:zpython -m spacy download {}
zNThe following packages are custom spaCy pipelines or not available for spaCy v:z, r   )get_model_pkgsr
   r   __version__getr   warnitemsr   __file__parentdividerinfotextappendtableprintjoinformatsysexit)
model_pkgsr   spacy_versioncurrent_compat_dincompat_modelsm	na_modelsupdate_models	spacy_dirr)   rowsr   datacompr%   cmdpkgs                      r   r   r   !   sf   ')J%e&7&78MZZr2N5m_INO-7-=-=-?STQq{qySOS+Gqq/FGIG /G113FQGMGX%%,,IKK6u7H7H6IKLHH#I;/01$**, 	FJD$H~xx'N((4	?'DQ((4	?(TRn00fwGJKLKKftG}gtDE	F 			$v&JRST%&EF+diiMBSCBCdJK$$)$5$5#6a9IIi 	

  C TGG0 Cs*   'J5J	J"J"	J'!J'$J,silentc                    t        | |        } |j                  d      5  t        j                  t        j
                        }|j                  dk7  r# |j                  d|j                   ddd       d d d         |j                  d	       j                         d
   }t               }t        j                         5  t        j                  dd       t               }d d d        t        |      j!                         D ][  \  }}|j#                  |j%                                |j!                         D ]$  \  }}	|	D 
cg c]  }
t'        |
       c}
||   |<   & ] i }D ]  }|j)                  dd      }t+        |      }||v r|||   v }t        j,                  }nvt/        |      }t        j                         5  t        j                  dd       t1        |      }d d d        j                  dd      }t3        t        j,                  |      }||||d||<    ||fS # 1 sw Y   xY w# 1 sw Y   TxY wc c}
w # 1 sw Y   dxY w)N)r$   prettyzLoading compatibility table...   zServer error (r   z#Couldn't fetch compatibility table.r   r*   zLoaded compatibility tabler(   ignorez	\[W09[45])message-rB   r@   r'   )r   r%   r(   r   )r   loadingrequestsr0   r   __compatibility__status_codefailr!   jsonsetwarningscatch_warningsfilterwarningsr	   dictr2   updatekeysreformat_versionreplacer   r/   r   r   r   )rN   r   rr   
all_modelsinstalled_modelsspacy_vmodelsmodelmodel_vsvpkgspkg_namepackager%   	is_compatr@   
model_path
model_metas                      r   r.   r.   L   s1   
6f*
5C	5	6 LL001==CCHH q15 CHH)*VVXgFJ		 	 	" 2,?/12  <--/ M&++-(%||~ 	MOE8CK%La&6q&9%LF7OE"	MM D$ 
""3,%h/f6'?2I!--M)'2J((* 8'',G+J7
8 'NN?EBM-e.?.?OI"	
X
& <M 2 2 &M8 8s*   AH)"H6I#I)H36I I	r%   c                 l    | j                  d      r| j                  dd      S | j                  dd      S )zEHack to reformat old versions ending on '-alpha' to match pip format.z-alphaa0a)endswithrc   )r%   s    r   rb   rb   w   s2    !x..??8S))r   )r   N)F)r=   r\   pathlibr   typingr   rV   wasabir   r   r   r   utilr	   r
   r   r   r   r   _utilr   commandr   r   boolr_   r.   strrb   r   r   r   <module>r~      s~    
         Z (V(4 (E$*,= (V*c *c *r   