
    8f3              
      d   U d dl mZ d dl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mZmZmZmZ  G d d	      Z G d
 d      Z G d de      Z G d de      Z G d dee         Z edeeeeeee      Zeez  ez  ez  ez  ez  ez  Zde d<    G d de      Z! G d dee         Z"y)    )annotationsN)abstractmethod)Iterable)Enumauto)Path)AnyCallableGenericType	TypeAliasTypeVarcastc                      e Zd ZU ded<   ddZedd       ZddZddZddZ	ddZ
dd	Zdd
ZddZddZddZddZy)CaseFoldNamedObjectstr_namec                J    t        |t              r|j                  }|| _        y N)
isinstancer   namer   )selfr   s     uC:\Program Files (x86)\Steam\steamapps\common\Skyrim Special Edition\MO2\plugins\installer_wizard\lib\wizard\value.py__init__zCaseFoldNamedObject.__init__   s    d/099D
    c                    	 | j                   S r   r   r   s    r   r   zCaseFoldNamedObject.name       	 zzr   c                Z   t        |t              r9 || j                  j                         |j                  j                               S t        |t              r/ || j                  j                         |j                               S t        dt        |        dt        |       d      )NzCannot compare z with .)r   r   r   casefoldr   	TypeErrortype)r   othercmps      r   _cmpzCaseFoldNamedObject._cmp   s    e01tyy))+UZZ-@-@-BCCs#tyy))+U^^-=>>od4j\U}ANOOr   c                B    | j                  |t        j                        S r   )r'   operatoreqr   r%   s     r   __eq__zCaseFoldNamedObject.__eq__#       yy,,r   c                B    | j                  |t        j                        S r   )r'   r)   ner+   s     r   __ne__zCaseFoldNamedObject.__ne__&   r-   r   c                B    | j                  |t        j                        S r   )r'   r)   ltr+   s     r   __lt__zCaseFoldNamedObject.__lt__)   r-   r   c                B    | j                  |t        j                        S r   )r'   r)   ler+   s     r   __le__zCaseFoldNamedObject.__le__,   r-   r   c                B    | j                  |t        j                        S r   )r'   r)   gtr+   s     r   __gt__zCaseFoldNamedObject.__gt__/   r-   r   c                B    | j                  |t        j                        S r   )r'   r)   ger+   s     r   __ge__zCaseFoldNamedObject.__ge__2   r-   r   c                H    t        | j                  j                               S r   )hashr   r"   r   s    r   __hash__zCaseFoldNamedObject.__hash__5   s    DII&&())r   c                    | j                   S r   r   r   s    r   __str__zCaseFoldNamedObject.__str__8   s    zzr   c                ,    t        | j                        S r   )reprr   r   s    r   __repr__zCaseFoldNamedObject.__repr__;   s    DJJr   N)r   zstr | CaseFoldNamedObjectreturnr   )r%   objectr&   zCallable[[str, str], bool]rF   boolr%   rG   rF   rH   )rF   int)__name__
__module____qualname____annotations__r   propertyr   r'   r,   r0   r3   r6   r9   r<   r?   rA   rD    r   r   r   r      sS    J
  P------* r   r   c                      e Zd Z	 y)VoidNrK   rL   rM   rP   r   r   rR   rR   ?   s    
 	r   rR   c                      e Zd Zy)PluginNrS   rP   r   r   rU   rU   H   s    r   rU   c                  B    e Zd Zeedd              Zedd       ZddZy)
SubPackagec                     y r   rP   r   s    r   fileszSubPackage.filesL   s     	r   c                r    	 | j                  d      xs$ | j                  d      xs | j                  d      S )Nz.espz.esmz.esl)endswithr   s    r   	is_pluginzSubPackage.is_pluginQ   s4    	 }}V$Vf(=VvAVVr   c                .      fd j                   D        S )Nc              3  ~   K   | ]4  }j                  |      st        t        |      j                         6 y wr   )r]   rU   r   r   ).0filer   s     r   	<genexpr>z%SubPackage.plugins.<locals>.<genexpr>_   s*     WD$..QUBVtDz'Ws   =#=)rY   r   s   `r   pluginszSubPackage.plugins^   s    WDJJWWr   N)rF   zIterable[str])r   r   rF   rH   )rF   zIterable[Plugin])	rK   rL   rM   rO   r   rY   staticmethodr]   rc   rP   r   r   rW   rW   K   s8       
W 
WXr   rW   c                      e Zd Z	 y)SubPackagesNrS   rP   r   r   rf   rf   b   s     r   rf   	ValueTyper   AnyValueTypec                       e Zd Z e       Z e       Z e       Z e       Z e       Z e       Z	 e       Z
edd       Zd fdZ xZS )VariableTypec                   | t         u rt        j                  S t        | t              rt        j
                  S t        | t              rt        j                  S | t        u rt        j                  S | t        u rt        j                  S | t        u rt        j                  S | t        u rt        j                  S t!        d|  d      )NzUnknown type: r!   )rR   rj   VOID
issubclassrf   LIST_SUBPACKAGESrW   
SUBPACKAGErH   BOOLrJ   INTEGERfloatFLOATr   STRING
ValueError)pytypes    r   from_pytypezVariableType.from_pytypez   s    T>$$$fk*000fj)***T>$$$S='''U?%%%S=&&&>&344r   c                    | t         j                  u ry| t         j                  u ryt        |          j                         j                  d      d   S )NzSubPackage[]rW   r!   )rj   rn   ro   superrA   lowersplit)r   	__class__s    r   rA   zVariableType.__str__   sK    <000!<***w &&(..s3B77r   )rv   zType[ValueType]rF   rj   rE   )rK   rL   rM   r   rp   rq   rs   rt   rl   rn   ro   rd   rw   rA   __classcell__)r}   s   @r   rj   rj   n   sS    6DfGFEVF6D vJ5 5"8 8r   rj   c                  4   e Zd ZU 	 ded<   d!dZed"d       Zd#dZed$d       Zd%dZ	d%dZ
	 	 	 	 	 	 d&d	Zd'd
Zd'dZd'dZd'dZd'dZd(dZd)dZd)dZd*dZd*dZd)dZd)dZd)dZd)dZd+d,dZd-dZ	 	 	 	 	 	 	 	 d.dZd/dZd0dZd0dZd#dZ d1dZ!y )2Valuerg   _valuec                    |t        t        t                     }t        j	                  t        |            | _        || _        y r   )r   rg   rR   rj   rw   r$   _typer   )r   values     r   r   zValue.__init__   s2    =DF+E!--d5k:
r   c                    	 | j                   S r   )r   r   s    r   r$   z
Value.type   r   r   c                >    	 | j                   t        j                  k(  S r   )r   rj   rl   r   s    r   is_voidzValue.is_void   s    	 zz\....r   c                    	 | j                   S r   )r   r   s    r   r   zValue.value   s    	 {{r   c                    t        | j                  t        t        f      st	        d| j
                   d      t        | j                        S )Nz-Cannot use plus operator on variable of type r!   )r   r   rJ   rr   r#   r   r   r   s    r   __pos__zValue.__pos__   sB    $++U|4?

|1M  T[[!!r   c                    t        | j                  t        t        f      rt        | j                  t              rt        d| j                   d      t        | j                         S )Nz.Cannot use minus operator on variable of type r!   )r   r   rJ   rr   rH   r#   r   r   r   s    r   __neg__zValue.__neg__   sR    $++U|4
4;;PT8U@AN  dkk\""r   c                   t        | j                  t        t        t        f      rZt        |j                  t        t        t        f      r5t        | j                  t              t        |j                  t              k7  r&t        d| j                   d|j                   d      t        | j                  |j                  z         S )NzCannot add values of types , r!   )r   r   rJ   rr   r   r#   r   r   r+   s     r   __add__zValue.__add__   s     4;;eS(9:ellS%,=>$++s+z%,,/LL9$**R}TUVWWT[[5<</00r   c                    t        | j                  t        t        f      r t        |j                  t        t        f      st	        d      t        | j                  |j                  z
        S )Nz$Cannot substract non-numeric values.r   r   rJ   rr   r#   r   r+   s     r   __sub__zValue.__sub__   sN    $++U|4JLL3,=
 BCCT[[5<</00r   c                    t        | j                  t        t        f      r t        |j                  t        t        f      st	        d      t        | j                  |j                  z        S )Nz#Cannot multiply non-numeric values.r   r+   s     r   __mul__zValue.__mul__   sN    $++U|4JLL3,=
 ABBT[[5<</00r   c                    t        | j                  t        t        f      r t        |j                  t        t        f      st	        d      t        | j                  |j                  z        S )Nz!Cannot divide non-numeric values.r   r+   s     r   __div__zValue.__div__   N    $++U|4JLL3,=
 ?@@T[[5<</00r   c                    t        | j                  t        t        f      r t        |j                  t        t        f      st	        d      t        | j                  |j                  z        S )Nz Cannot raise non-numeric values.r   r+   s     r   __pow__zValue.__pow__   sN    $++U|4JLL3,=
 >??T[[%,,.//r   c                    t        | j                  t        t        f      r t        |j                  t        t        f      st	        d      t        | j                  |j                  z        S )Nz!Cannot modulo non-numeric values.r   r+   s     r   __mod__zValue.__mod__   r   r   c                .    t        | j                         S r   r   r   r   s    r   logical_notzValue.logical_not   s    _%%r   c                F    t        | j                  |j                  k(        S r   r   r+   s     r   equalszValue.equals       T[[ELL011r   c                F    t        | j                  |j                  k7        S r   r   r+   s     r   
not_equalszValue.not_equals   r   r   c                Z    t        t        | j                  xs |j                              S r   )r   rH   r   r+   s     r   __or__zValue.__or__  s    T$++5677r   c                H    t        | j                  xr |j                        S r   r   r+   s     r   __and__zValue.__and__  s    T[[1U\\22r   c                   t        | j                  t        t        f      rBt        |j                  t        t        f      r"t	        | j                  |j                  kD        S t        | j                  t
              r<t        |j                  t
              r"t	        | j                  |j                  kD        S t        d| j                   d|j                   d      NzCannot compare values of types r   r!   r   r   rJ   rr   r   r   r#   r   r+   s     r   r9   zValue.__gt__	      dkkC<0ZLL3,6
 u||344dkk3'Ju||S,Iu||3449$**R}TUVWWr   c                   t        | j                  t        t        f      rBt        |j                  t        t        f      r"t	        | j                  |j                  k\        S t        | j                  t
              r<t        |j                  t
              r"t	        | j                  |j                  k\        S t        d| j                   d|j                   d      r   r   r+   s     r   r<   zValue.__ge__      dkkC<0ZLL3,6
 455dkk3'Ju||S,I4559$**R}TUVWWr   c                   t        | j                  t        t        f      rBt        |j                  t        t        f      r"t	        | j                  |j                  k        S t        | j                  t
              r<t        |j                  t
              r"t	        | j                  |j                  k        S t        d| j                   d|j                   d      r   r   r+   s     r   r3   zValue.__lt__  r   r   c                   t        | j                  t        t        f      rBt        |j                  t        t        f      r"t	        | j                  |j                  k        S t        | j                  t
              r<t        |j                  t
              r"t	        | j                  |j                  k        S t        d| j                   d|j                   d      r   r   r+   s     r   r6   zValue.__le__$  r   r   c                   t        | j                  t        t        f      st	        d| j
                   d      t        |j                  t        t        f      st	        d| j
                   d      t        |j                  t              rt        |j                  j                        }|r#t        |j                  j                               }t        | j                  t              rd | j                  D        }n| j                  j                  }|D ]0  }|r|j                         }|j                  |k(  s%t        d      c S  t        d      S )N Cannot iterate variable of type r!   z*Cannot check presence of variable of type c              3  4   K   | ]  }|j                     y wr   r\   r`   ss     r   rb   z!Value.contains.<locals>.<genexpr><       .Q!&&.   TF)r   r   rW   rf   r#   r   r   r   r   r{   rY   )r   itemcase_insensitiveitistrs        r   containszValue.contains-  s   $++
K'@A>tzzl!LMM$++Z'89HTUVWWdkk:.))*D**,-D dkk;/.$++.B""B 	#Dzz|{{d"T{"		# U|r   c                   t        | j                  t        t        t        f      st        d| j                   d      t        |j                  t              st        d|j                   d      t        | j                  t              r| j                  j                  }n| j                  }	 t        ||j                           S # t        $ r}t        |j                        |d }~ww xY w)NzCannot index variable of type r!   #Cannot index with variable of type )r   r   r   rW   rf   r#   r   rJ   r   r   
IndexError)r   indexr   errs       r   __getitem__zValue.__getitem__H  s    $++Z'EF<TZZLJKK%,,.A%++aPQQ dkk:.KK$$EKKE	4u||,-- 	4U\\*3	4s   0C 	C,C''C,c           	     8   t        | j                  t              st        d| j                   d      |||fD ]8  }|t        |j
                  t              r!t        d|j                   d       t        | j                  t        d |||fD                  S )Nz(Cannot access slice of variable of type r!   r   c              3  <   K   | ]  }|d n|j                     y wr   )r   )r`   vs     r   rb   zValue.slice.<locals>.<genexpr>e  s     S1	qww6Ss   )
r   r   r   r#   r   r   rJ   r$   r   slice)r   startendstepr   s        r   r   zValue.sliceY  s     $++s+FtzzlRSTUUd# 	QA}Z%="EaffXQ OPP	Q KKST@RST
 	
r   c                   t        | j                  t        t        f      st	        d| j
                   d      t        | j                  t              rd | j                  D        }n| j                  j                  }d |D        S )Nr   r!   c              3  4   K   | ]  }|j                     y wr   r\   r   s     r   rb   z!Value.__iter__.<locals>.<genexpr>o  r   r   c              3  2   K   | ]  }t        |        y wr   )r   )r`   xs     r   rb   z!Value.__iter__.<locals>.<genexpr>s  s     %Qa%s   )r   r   rW   rf   r#   r   rY   )r   r   s     r   __iter__zValue.__iter__i  sf    $++
K'@A>tzzl!LMM dkk;/.$++.B""B%"%%r   c                    t        |t              st        |      }n|}| j                         r|j                         ry|j                  | j                  k(  xr |j                  | j                  k(  S )NT)r   r   r   r   r   )r   r%   r   s      r   r,   zValue.__eq__w  sS    %'%LEE<<>emmo{{djj(HU\\T[[-HHr   c                    | |k(   S r   rP   r+   s     r   r0   zValue.__ne__  s    EM""r   c                ,    t        | j                        S r   )rH   r   r   s    r   __bool__zValue.__bool__  s    DKK  r   c                N    dj                  | j                  | j                        S )Nz{}({}))formatr$   r   r   s    r   rD   zValue.__repr__  s    tyy$**55r   N)r   zValueType | None)rF   rj   )rF   rH   )rF   rg   )rF   zValue[ValueType])r   
Value[Any]r%   r   rF   z&Value[int] | Value[float] | Value[str])r   r   r%   r   rF   zValue[int] | Value[float])rF   Value[bool])r   r   r%   r   rF   r   )r%   r   rF   r   )F)r   r   r   rH   rF   r   )r   r   rF   zValue[str] | Value[SubPackage])r   Value[Any] | Noner   r   r   r   rF   z
Value[str])rF   z2Iterable[Value[SubPackage]] | Iterable[Value[str]]rI   rE   )"rK   rL   rM   rN   r   rO   r$   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r9   r<   r3   r6   r   r   r   r   r,   r0   r   rD   rP   r   r   r   r      s       /  "#	1	1!+	1	/	111101&2283XXXX64"
&
->
FW
	
 
&
I#!6r   r   )#
__future__r   r)   abcr   collections.abcr   enumr   r   pathlibr   typingr	   r
   r   r   r   r   r   r   rR   rU   rW   listrf   rH   rJ   rr   r   rg   rh   rN   rj   r   rP   r   r   <module>r      s    "   $   I I I1  1 h	 	 '  &X$ X.$z"  Kz;c5RUV	+k9D@3FNQTTi T%84 %8Pt6GI t6r   