o
    .j                     @   sj   d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZmZ G dd	 d	eZd	gZd
S )z*FREQ value type of RECUR from :rfc:`5545`.    )Any)CaselessDict)Self)JCalParsingError)
Parameters)DEFAULT_ENCODING
to_unicodec                	       s   e Zd ZU dZeed< dZedddddd	d
dZe	dfde
eef dB f fddZdd Zedd ZededefddZ  ZS )
vFrequencyz+A simple class that catches illegal values.params)r
   SECONDLYMINUTELYHOURLYDAILYWEEKLYMONTHLYYEARLY)r   r   r   r   r   r   r   Nc                   s@   t ||d}t | |}|tjvrtd| t||_|S )N)encodingExpected frequency, got: )r   super__new__r	   frequencies
ValueErrorr   r
   )clsvaluer   r
   self	__class__ S/home/thesage/.local/lib/python3.10/site-packages/icalendar/prop/recur/frequency.pyr      s   

zvFrequency.__new__c                 C   s   |  t S )N)encoder   upper)r   r   r   r   to_ical,   s   zvFrequency.to_icalc              
   C   s8   z| |  W S  ty } ztd| |d }~ww )Nr   )r    	Exceptionr   )r   icaler   r   r   	from_ical/   s   zvFrequency.from_icalr   returnc              
   C   sB   t |t|  z| |W S  ty  } zt d| |d|d}~ww )zParse a jCal value for vFrequency.

        Raises:
            ~error.JCalParsingError: If the value is not a valid frequency.
        z$The value must be a valid frequency.)r   N)r   validate_value_typestrr   )r   r   r$   r   r   r   parse_jcal_value6   s   
zvFrequency.parse_jcal_value)__name__
__module____qualname____doc__r   __annotations__	__slots__r   r   r   dictr(   r   r   r!   classmethodr%   r   r)   __classcell__r   r   r   r   r	      s0   
 
r	   N)r-   typingr   icalendar.caselessdictr   icalendar.compatibilityr   icalendar.errorr   icalendar.parserr   icalendar.parser_toolsr   r   r(   r	   __all__r   r   r   r   <module>   s    
: