o
    .j%                     @   sR   d Z ddlmZmZ ddlmZ ddlmZ ddlm	Z	 G dd de
ZdgZdS )	zFLOAT values from :rfc:`5545`.    )AnyClassVar)Self)JCalParsingError)
Parametersc                	       s   e Zd ZU dZdZee ed< eed< ddde	de
ee	f dB de	d	ef fd
dZd	efddZedeeB d	efddZed	ee fddZddlmZ ded	efddZed	efddZeded	efddZ  ZS )vFloata  Float

    Value Name:
        FLOAT

    Purpose:
        This value type is used to identify properties that contain
        a real-number value.

    Format Definition:
        This value type is defined by the following notation:

        .. code-block:: text

            float      = (["+"] / "-") 1*DIGIT ["." 1*DIGIT]

    Description:
        If the property permits, multiple "float" values are
        specified by a COMMA-separated list of values.

        Example:

        .. code-block:: text

            1000000.0000001
            1.333
            -3.14

        .. code-block:: pycon

            >>> from icalendar.prop import vFloat
            >>> float = vFloat.from_ical('1000000.0000001')
            >>> float
            1000000.0000001
            >>> float = vFloat.from_ical('1.333')
            >>> float
            1.333
            >>> float = vFloat.from_ical('+1.333')
            >>> float
            1.333
            >>> float = vFloat.from_ical('-3.14')
            >>> float
            -3.14
    FLOATdefault_valueparamsNr
   argskwargsreturnc                   s(   t  j| g|R i |}t||_|S )N)super__new__r   r
   )clsr
   r   r   self	__class__ I/home/thesage/.local/lib/python3.10/site-packages/icalendar/prop/float.pyr   ;   s   
zvFloat.__new__c                 C   s   t | dS )Nzutf-8)strencoder   r   r   r   to_icalB   s   zvFloat.to_icalicalc              
   C   s4   z| |W S  t y } ztd| |d }~ww )NzExpected float value, got: )	Exception
ValueError)r   r   er   r   r   	from_icalE   s   
zvFloat.from_icalc                 C   s
   | dgS )zExamples of vFloat.go!	@r   )r   r   r   r   examplesL   s   
zvFloat.examplesr   )VALUEnamec                 C   s   || j  | j t| gS )zBThe jCal representation of this property according to :rfc:`7265`.)r
   to_jcalr!   lowerfloat)r   r"   r   r   r   r#   S   s   zvFloat.to_jcalc                 C   s   t | S )zZConverts the FLOAT property type according to :rfc:`5545#section-3.3.7` to a Python float.)r%   r   r   r   r   
ical_valueW   s   zvFloat.ical_valuejcal_propertyc                 C   s\   t ||  |d  dkrddlm} ||S t |d t| d | |d t	|dS )zParse jCal from :rfc:`7265`.

        Parameters:
            jcal_property: The jCal property to parse.

        Raises:
            ~error.JCalParsingError: If the jCal provided is invalid.
        r   GEO)vGeo   r   )
r   validate_propertyuppericalendar.propr)   	from_jcalvalidate_value_typer%   r   from_jcal_property)r   r'   r)   r   r   r   r.   \   s   

zvFloat.from_jcal)__name__
__module____qualname____doc__r	   r   r   __annotations__r   r   dictr   r   bytesr   classmethodr%   r   listr    icalendar.paramr!   r#   propertyr&   r.   __classcell__r   r   r   r   r   
   s2   
 -r   N)r4   typingr   r   icalendar.compatibilityr   icalendar.errorr   icalendar.parserr   r%   r   __all__r   r   r   r   <module>   s    
h