
    Pi9                         d Z ddlZddlZddlZddlmZ dgZddiZd Zej	        
                    e          egZd	 Zej         G d
 de                      ZdS )a  
DSV data can be surprisingly diverse. While Python's `csv` module offers out-of-the-box support
for the basic formatting parameters, CSVW recognizes a couple more, like `skipColumns` or
`skipRows`.

.. seealso::

    - `<https://www.w3.org/TR/2015/REC-tabular-metadata-20151217/#dialect-descriptions>`_
    - `<https://docs.python.org/3/library/csv.html#dialects-and-formatting-parameters>`_
    - `<https://specs.frictionlessdata.io/csv-dialect/>`_
    N   )utilsDialectz	UTF-8-BOMz	utf-8-sigc                 b    |dk     r(t          d                    ||j                            d S )Nr   z{0} is not a valid {1})
ValueErrorformatname)instance	attributevalues      e/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/csvw/dsv_dialects.py_non_negativer      s3    qyy188	OOPPP y    c                 
   t          j        t          d|           } 	 d                    t                              | |                     }| S # t          $ r+ t          j        d	                    |                      Y dS w xY w)Nutf-8xzInvalid value for property: {})
r   	converterstrencodeENCODING_MAPgetLookupErrorwarningswarnr   )s_s     r   convert_encodingr   "   s    Wa((AJJ|''1--..   6==a@@AAAwws   /A 1BBc            	       F   e Zd ZdZ ej        deej                            e	                    Z
 ej         ej        ej        eddg           ej        d                     Z ej         ej        ej        e	dd	
          d          Z ej        d	 ej        ej        ed	          ej                            e                    Z ej        d ej        ej        edd           e          Z ej        d ej        ej        e	dd	
          ej                            ej                            e	                              Z ej        d	 ej        ej        ed	          ej                            e                    Z ej        d ej        ej        edd           e          Z ej        d ej        ej        e	d          ej                            e	                    Z ej        d ej        ej        edd           e          Z ej        d ej        ej        ed          ej                            e                    Z ej        d ej        ej        ed          ej                            e                    Z ej        dej                             g d          d           Z!d Z"ej#        d             Z$ej#        d             Z%ej#        d             Z&d dZ'e(d             Z)d Z*dS )!r   z
    A CSV dialect specification.

    .. seealso:: `<https://www.w3.org/TR/2015/REC-tabular-metadata-20151217/#dialect-descriptions>`_
    r   )defaultr   	validator

c                  
    ddgS )Nr!   r"    r$   r   r   <lambda>zDialect.<lambda>;   s
    fd^ r   )r   r   "T)
allow_noner   c                     | dk    S Nr   r$   r   s    r   r%   zDialect.<lambda>I       AQRF r   )cond#r   c                     | dk    S r)   r$   r*   s    r   r%   zDialect.<lambda>X   r+   r   ,c                     | dk    S r)   r$   r*   s    r   r%   zDialect.<lambda>b   r+   r   Ffalsetruer1   startendc                      t          j        t          j        t          t
          fd          t          | t
                    r'd                    |                                           n|           S )Nr1   z{0})		functoolspartialr   r   r   bool
isinstancer   lower)vs    r   r%   zDialect.<lambda>r   s`     "I-O$K" "=G4=P=P"W%,,q//"7"7"9"9"9VWY Y r   )r   r    r   c                      | j         di t          j        |           }|                                D ]\  }}t	          |||           |S )Nr$   )	__class__attrasdictitemssetattr)selfkwreskr<   s        r   updatedzDialect.updatedv   sX    dn11t{40011HHJJ 	 	DAqCA
r   c                 *    | j         d n
| j        rdndS )Nr&   \)	quoteChardoubleQuoterC   s    r   escape_characterzDialect.escape_character|   s     ~-tt4;K4UCCQUVr   c                 T    t          | j        t                    r| j        gn| j        S N)r:   lineTerminatorsr   rL   s    r   line_terminatorszDialect.line_terminators   s1     $.44O$%%:>:N	Or   c                 .    d d d d d| j                  S )Nc                 *    |                                  S rO   )stripr*   s    r   r%   z!Dialect.trimmer.<locals>.<lambda>   s    aggii r   c                     | S rO   r$   r*   s    r   r%   z!Dialect.trimmer.<locals>.<lambda>   s    q r   c                 *    |                                  S rO   )lstripr*   s    r   r%   z!Dialect.trimmer.<locals>.<lambda>   s    qxxzz r   c                 *    |                                  S rO   )rstripr*   s    r   r%   z!Dialect.trimmer.<locals>.<lambda>   s    QXXZZ r   r2   )trimrL   s    r   trimmerzDialect.trimmer   s6     (' [))''	
 

 ) 	r   c                 .    t          j        | |          S )N)omit_defaults)r   attr_asdict)rC   r]   s     r   r@   zDialect.asdict   s     ]CCCCr   c                 L    t                               | j        | j                  S rO   )r   r   encodingrL   s    r   python_encodingzDialect.python_encoding   s    t}===r   c                 p    | j         | j        | j        s| j        nd | j        d         | j        | j        ddS )Nr   T)	delimiterdoublequote
escapecharlineterminator	quotecharskipinitialspacestrict)rc   rK   rM   rQ   rJ   skipInitialSpacerL   s    r   as_python_formatting_parametersz'Dialect.as_python_formatting_parameters   sJ    + 8<7GQ$//T"3A6 $ 5

 

 
	
r   N)T)+__name__
__module____qualname____doc__r?   ibr   
validatorsinstance_ofr   r`   r7   r8   r   r   listFactoryrP   rJ   r9   rK   intnon_negative_intskipRowsoptionalcommentPrefixheaderheaderRowCountrc   skipColumnsskipBlankRowsrj   in_rZ   rG   cached_propertyrM   rQ   r[   r@   propertyra   rk   r$   r   r   r   r   ,   sD         tw"/--c224 4 4H
 dg#)#EOTFD>JJ33446 6 6O #)#EOS#$OOO  I
 $'#)#EOT4@@/--d335 5 5K
 tw#)#EOS!BRBRSSS"$ $ $H
 DG#)#EOS#$OOO/**4?+F+Fs+K+KLLN N NM
 TW#)#EOT4@@/--d335 5 5F
 TW#)#EOS!BRBRSSS"$ $ $N
 #)#EOS#>>/--c224 4 4I
 $'#)#EOS!BRBRSSS"$ $ $K
 DG#)#EOT5AA/--d335 5 5M
 tw#)#EOT5AA/--d335 5 5
 47/%%&G&G&GHHY YZ Z ZD   W W W O O O   D D D D > > X>
 
 
 
 
r   )ro   r?   r   r7    r   __all__r   r   rq   rr   ru   rv   r   r   objectr   r$   r   r   <module>r      s   
 
            + Q Q Q
 O//44mD    s
 s
 s
 s
 s
f s
 s
 s
 s
 s
r   