
    .Ph                         d Z ddlmZ ddlZddlmZ ddlZ	  G d	 d
          Z eeej                  Z edej                  Zd&dZd'dZd(d!Zd)d*d%ZdS )+z6
some helper functions that might be generally useful
    )annotationsN)partialF)AnyDictOptionalListTextCallableUnion   )StreamTextTypec                  *    e Zd ZdZdd	ZddZddZdS )LazyEvala  
    Lightweight wrapper around lazily evaluated func(*args, **kwargs).

    func is only evaluated when any attribute of its return value is accessed.
    Every attribute access is passed through to the wrapped value.
    (This only excludes special cases like method-wrappers, e.g., __hash__.)
    The sole additional attribute is the lazy_self function which holds the
    return value (or, prior to evaluation, func and arguments), in its closure.
    funcCallable[..., Any]argsr   kwargsreturnNonec                X     d fd}t                                d|           d S )Nr   r   c                 X      i  t                               d fd            S )N	lazy_selfc                      S N )return_values   P/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/ruamel/yaml/util.py<lambda>z6LazyEval.__init__.<locals>.lazy_self.<locals>.<lambda>!   s    ,     object__setattr__)r   r   r   r   selfs   @r   r   z$LazyEval.__init__.<locals>.lazy_self   s@    4000Lt[2F2F2F2FGGGr   r   )r   r   r    )r#   r   r   r   r   s   ```` r   __init__zLazyEval.__init__   sS    	  	  	  	  	  	  	  	  	 
 	4i88888r   namestrc                x    t                               | d          }|dk    r|S t           |            |          S )Nr   )r!   __getattribute__getattr)r#   r%   r   s      r   r(   zLazyEval.__getattribute__&   s>    ++D+>>	;yy{{D)))r   valuec                L    t          |                                 ||           d S r   )setattrr   )r#   r%   r*   s      r   r"   zLazyEval.__setattr__,   s$      $.....r   N)r   r   r   r   r   r   r   r   )r%   r&   r   r   )r%   r&   r*   r   r   r   )__name__
__module____qualname____doc__r$   r(   r"   r   r   r   r   r      sZ         9 9 9 9* * * */ / / / / /r   r   a  ^(?P<year>[0-9][0-9][0-9][0-9])
       -(?P<month>[0-9][0-9]?)
       -(?P<day>[0-9][0-9]?)
       (?:((?P<t>[Tt])|[ \t]+)   # explictly not retaining extra spaces
       (?P<hour>[0-9][0-9]?)
       :(?P<minute>[0-9][0-9])
       :(?P<second>[0-9][0-9])
       (?:\.(?P<fraction>[0-9]*))?
        (?:[ \t]*(?P<tz>Z|(?P<tz_sign>[-+])(?P<tz_hour>[0-9][0-9]?)
       (?::(?P<tz_minute>[0-9][0-9]))?))?)?$yearr   monthdaythourminutesecondfractiontztz_signtz_hour	tz_minuter   'Union[datetime.datetime, datetime.date]c           
        d}t          |           } t          |          }t          |          }|t          j        | ||          S t          |          }t          |          }t          |          }d}|r|d d         }t          |          dk     r|dz  }t          |          dk     t          |          }t          |          dk    rt          |d                   dk    r|dz  }||k    rd}n|}nd}d }d }|	rXt          |
          }
|rt          |          nd}t          j        |
|          }|	dk    r| }t          j        ||	          }n/|d
k    r)t          j        t          j        d          |	          }||k    rt          j        d           }t          j        | |||||||          }|r||z  }|S )Ni?B r      0   r   )hoursminutes-)r%   Z)rB   )seconds)intdatetimedatelen	timedeltatimezone)r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   MAX_FRACfracfrac_stzinfodeltatddatas                      r   create_timestamprT   A   s    Ht99DJJE
c((C|}T5#...t99D[[F[[FD "1"&kkAoocMF &kkAoo6{{x==1Xa[!1!1A!5!5AID(??HHHHFE 
Ig,,&/6C	NNNQ	9
 
 
 c>>B"2B///	s"8#5A#>#>#>RHHHh#A.... T5#tVVXvVVD Kr   streamr   kwc                `   ddl m} dd}t          | t                    r| }n?t          | t                    r|                     d          }n|                                 }d	}d	}d	}d	}d
}	|                                D ]}
|
                                }|	                                }|
                    d          rF ||
          }||	z
  }|dz   }|
|         dk    r|dz  }|
|         dk    |
|         dk    r~||	z
  } nq|*|(|r&d
}|
|         dv r|dz  }|
|         dv ||k    r||z
  }|                    d          r- ||
          }	d
}|
|         dk    r|dz  }|
|         dk    |}d	}|||}d|vr
 |            n|                    d          } |j        |fi |||fS )at  guess the indent and block sequence indent of yaml stream/string

    returns round_trip_loaded stream, indent level, block sequence indent
    - block sequence indent is the number of spaces before a dash relative to previous indent
    - if there are no block sequences, indent is taken from nested mappings, block sequence
      indent is unset (None) in that case
    r   )YAMLliner   r   rG   c                    d}|t          |           k     r0| |         dk    r$|dz  }|t          |           k     r| |         dk    $|S )Nr    r   )rJ   )rY   idxs     r   leading_spacesz.load_yaml_guess_indent.<locals>.leading_spaces   sQ    CIIoo$s)s"2"21HC CIIoo$s)s"2"2
r   zutf-8Nr   z- r[   #z -:yaml)rY   r   r   rG   )mainrX   
isinstancer&   bytesdecoderead
splitlinesrstriplstrip
startswithendswithpopload)rU   rV   rX   r]   yaml_str
map_indentindentblock_seq_indentprev_line_key_only
key_indentrY   rlinellinel_sr\   r`   s                   r   load_yaml_guess_indentrv      sW        &# !	FE	"	" !==));;==JFJ##%% " "D!! 		 .&&C"Z/'Cs)s""q s)s""CyC:%FE"4"@U"@Cs)t##q s)t##''' #55
>># 	'--JCs)s""q s)s""!$!~*02%%44666266&>>D49X$$$$f.>>>r   cfgc              #    K   ddl m} t          | |          sJ | j        D ]}|                                r|V  t          |           D ]}|                                r|V  | j        D ]}|                                r|V  dS )zv
    walks over a ConfigObj (INI file with comments) generating
    corresponding YAML output (including comments
    r   )	ConfigObjN)	configobjry   rb   initial_commentstrip_walk_sectionfinal_comment)rw   ry   css       r   configobj_walkerr      s      
 $#####c9%%%%%   7799 	GGG3  7799 	GGG  7799 	GGG r   r   levelrG   c              #    K   ddl m} t          | |          sJ d|z  }| j        D ]}| j        |         D ]}||                                z   V  | |         }d|v r7|dz   }d|z   |                                                    dd|z             z   }n d|v rd|                    dd          z   dz   }| | d	| }| j        |         }|r|d
|z   z  }|V  | j        D ]n}| j        |         D ]}||                                z   V  | | d}| j        |         }|r|d
|z   z  }|V  t          | |         |dz             D ]}	|	V  od S )Nr   )Sectionz  
z|
r_   'z''z: r[   r   )r   )
rz   r   rb   scalarscommentsr|   replaceinline_commentssectionsr}   )
r   r   r   ro   r%   r   xirY   vals
             r   r}   r}      s     !!!!!!a!!!!!E\F	  D! 	% 	%A17799$$$$$dG199A	AGGII--dD1H===AAAXXaiiT***S0A%$%%!%%d# 	C!GOD




 	 	D! 	% 	%A17799$$$$$!$!!!d# 	C!GOD


 4	::: 	 	CIIII		 	r   )r1   r   r2   r   r3   r   r4   r   r5   r   r6   r   r7   r   r8   r   r9   r   r:   r   r;   r   r<   r   r   r=   )rU   r   rV   r   r   r   )rw   r   r   r   )r   )r   r   r   rG   r   r   )r0   
__future__r   rH   	functoolsr   retypingr   r   r   r   r	   r
   r   compatr   r   compileRegExpXtimestamp_regexprT   rv   r   r}   r   r   r   <module>r      s    # " " " " "        				'
/ / / / / / / /: 
2:	&	&6	0 D  @ @ @ @P;? ;? ;? ;?|   &      r   