o
    ä›eL  ã                   @   sf   d dl Z d dlZd dlm  mZ dd„ Zdd„ ZG dd„ deƒZ	G dd	„ d	e
ƒZG d
d„ deƒZdS )é    Nc                 C   sB   | rd| vr| S d  dd„ |  d¡D ƒ¡}|d  ¡ |dd …  S )NÚ_Ú c                 S   s   g | ]}|  ¡ ‘qS © )Útitle)Ú.0Úxr   r   úH/var/www/html/venv/lib/python3.10/site-packages/twilio/twiml/__init__.pyÚ
<listcomp>
   s    zlower_camel.<locals>.<listcomp>r   é   )ÚjoinÚsplitÚlower)ÚstringÚresultr   r   r   Úlower_camel   s   r   c                 C   s@   | s| S t  d| ¡stdƒ‚| dd…  ¡ d | dd…  ¡  S )zj
    Attempt to format language parameter as 'ww-WW'.

    :param string language: language parameter
    z^[a-zA-Z]{2}[_-][a-zA-Z]{2}$z%Invalid value for language parameter.r   é   ú-é   é   )ÚreÚmatchÚTwiMLExceptionr   Úupper)Úlanguager   r   r   Úformat_language   s
   $r   c                   @   s   e Zd ZdS )r   N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r      s    r   c                   @   sh   e Zd Zdddd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ddd„ZdS )ÚTwiMLÚfromzxml:langzinterpret-asÚforÚbreak)Úfrom_Úxml_langÚinterpret_asÚfor_Úbreak_c                 K   sR   | j j| _d | _g | _i | _| ¡ D ]\}}|d ur&|| jt| j 	||¡ƒ< qd S ©N)
Ú	__class__r   ÚnameÚvalueÚverbsÚattrsÚitemsr   ÚMAPÚget)ÚselfÚkwargsÚkÚvr   r   r   Ú__init__*   s   
€þzTwiML.__init__c                 C   s   |   ¡ S r'   )Úto_xml©r0   r   r   r   Ú__str__4   s   zTwiML.__str__c                 C   s   | S r'   r   r6   r   r   r   Ú	__enter__7   ó   zTwiML.__enter__c                 C   s   dS )NFr   )r0   Úexc_typeÚ	exc_valueÚ	tracebackr   r   r   Ú__exit__:   r9   zTwiML.__exit__Tc                 C   s&   t  |  ¡ ¡ d¡}|rd |¡S |S )z—
        Return the contents of this verb as an XML string

        :param bool xml_declaration: Include the XML declaration. Defaults to True
        zutf-8z(<?xml version="1.0" encoding="UTF-8"?>{})ÚETÚtostringÚxmlÚdecodeÚformat)r0   Úxml_declarationr@   r   r   r   r5   =   s   zTwiML.to_xmlc                 C   s   |   |¡ | S )z^
        Add a TwiML doc

        :param verb: TwiML Document

        :returns: self
        )Únest©r0   Úverbr   r   r   ÚappendF   s   
zTwiML.appendc                 C   s,   t |tƒst |tƒstdƒ‚| j |¡ |S )z›
        Add a TwiML doc. Unlike `append()`, this returns the created verb.

        :param verb: TwiML Document

        :returns: the TwiML verb
        z-Only nesting of TwiML and strings are allowed)Ú
isinstancer   Ústrr   r+   rG   rE   r   r   r   rD   Q   s   z
TwiML.nestc                 C   sÒ   t  | j¡}| j ¡ }t|ƒ}|D ]}| j| }t|tƒr(| |t	|ƒ 
¡ ¡ q| |t	|ƒ¡ q| jrEt| jtƒrAt | j¡| _| j|_d }| jD ]}t|t	ƒr]|d urY||_qJ||_qJ| ¡ }| |¡ qJ|S r'   )r>   ÚElementr)   r,   ÚkeysÚsortedrH   ÚboolÚsetrI   r   r*   ÚdictÚjsonÚdumpsÚtextr+   Útailr@   rG   )r0   ÚelrK   Úar*   Ú
last_childrF   r   r   r   r@   _   s*   




z	TwiML.xmlNc                 K   s   |   t||fi |¤Ž¡S r'   )rD   ÚGenericNode©r0   r)   r*   r1   r   r   r   Ú	add_child€   s   zTwiML.add_child)Tr'   )r   r   r   r.   r4   r7   r8   r=   r5   rG   rD   r@   rY   r   r   r   r   r   !   s     û

	!r   c                       s   e Zd Z‡ fdd„Z‡  ZS )rW   c                    s&   t t| ƒjdi |¤Ž || _|| _d S )Nr   )ÚsuperrW   r4   r)   r*   rX   ©r(   r   r   r4   …   s   
zGenericNode.__init__)r   r   r   r4   Ú__classcell__r   r   r[   r   rW   „   s    rW   )rP   r   Úxml.etree.ElementTreeÚetreeÚElementTreer>   r   r   Ú	Exceptionr   Úobjectr   rW   r   r   r   r   Ú<module>   s    c