o
    �¨Êh2  ã                   @   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   úG/var/www/html/env/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                   @   sf   e Zd Z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)Úfrom_Úxml_langÚinterpret_asÚfor_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©r.   r   r   r   Ú__str__3   s   zTwiML.__str__c                 C   s   | S r%   r   r4   r   r   r   Ú	__enter__6   ó   zTwiML.__enter__c                 C   s   dS )NFr   )r.   Úexc_typeÚ	exc_valueÚ	tracebackr   r   r   Ú__exit__9   r7   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)r.   Úxml_declarationr>   r   r   r   r3   <   s   zTwiML.to_xmlc                 C   s   |   |¡ | S )z^
        Add a TwiML doc

        :param verb: TwiML Document

        :returns: self
        )Únest©r.   Úverbr   r   r   ÚappendE   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)   rE   rC   r   r   r   rB   P   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ÚsortedrF   ÚboolÚsetrG   r   r(   ÚdictÚjsonÚdumpsÚtextr)   Útailr>   rE   )r.   ÚelrI   Úar(   Ú
last_childrD   r   r   r   r>   ^   s*   




z	TwiML.xmlNc                 K   s   |   t||fi |¤Ž¡S r%   )rB   ÚGenericNode©r.   r'   r(   r/   r   r   r   Ú	add_child   s   zTwiML.add_child)Tr%   )r   r   r   r,   r2   r5   r6   r;   r3   rE   rB   r>   rW   r   r   r   r   r   !   s    ü

	!r   c                       s   e Zd Z‡ fdd„Z‡  ZS )rU   c                    s&   t t| ƒjdi |¤Ž || _|| _d S )Nr   )ÚsuperrU   r2   r'   r(   rV   ©r&   r   r   r2   „   s   
zGenericNode.__init__)r   r   r   r2   Ú__classcell__r   r   rY   r   rU   ƒ   s    rU   )rN   r   Úxml.etree.ElementTreeÚetreeÚElementTreer<   r   r   Ú	Exceptionr   Úobjectr   rU   r   r   r   r   Ú<module>   s    b