o
    [i/                     @   s^   d Z ddlZddlZddlmZ edZedejZedZ	dd Z
d	d
 Zdd ZdS )z
Type inference functions
    N)numbersz%^(?P<number>\-?[0-9]*\.?[0-9]*\s?)\%$z
^(?: # HH:MM and HH:MM:SS
(?P<hour>[0-1]{0,1}[0-9]{2}):
(?P<minute>[0-5][0-9]):?
(?P<second>[0-5][0-9])?$)
|
^(?: # MM:SS.
([0-5][0-9]):
([0-5][0-9])?\.
(?P<microsecond>\d{1,6}))
zD^-?([\d]|[\d]+\.[\d]*|\.[\d]+|[1-9][\d]+\.?[\d]*)((E|e)[-+]?[\d]+)?$c                 C   s4   t | rzt| W S  ty   t|  Y S w dS )z.Explicitly convert a string to a numeric valueN)NUMBER_REGEXmatchint
ValueErrorfloat)value r	   P/home/air/sos/back/venv/lib/python3.10/site-packages/openpyxl/utils/inference.pycast_numeric   s   

r   c                 C   s$   t | }|rt|dd S dS )zKExplicitly convert a string to numeric value and format as a
    percentagenumberd   N)PERCENT_REGEXr   r   group)r   r   r	   r	   r
   cast_percentage#   s   
r   c                 C   s`   t | }|r.|ddur| dd } d}n|ddu r!d}nd}tj| |} |  S dS )zJExplicitly convert a string to a number and format as datetime or
    timemicrosecondN   z%M:%S.%fsecondz%H:%Mz%H:%M:%S)
TIME_REGEXr   r   datetimestrptimetime)r   r   patternr	   r	   r
   	cast_time,   s   
r   )__doc__r   reopenpyxl.stylesr   compiler   VERBOSEr   r   r   r   r   r	   r	   r	   r
   <module>   s   


		