
    PiX                          d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d ZddZd Zd ZddZd	 Zdd
Zd ZddefdZdS )    Nc                 F    t          j        dt          |                     S )Nz	https?://)rematchstrss    ^/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/csvw/utils.pyis_urlr
      s    8L#a&&)))    FTc                 X    |r9 t           k    r.t          |t                     rd  fd|D             D             S |r||S t          |           r- t          k    rt          |t                    sr4 |          s)t	          j        d                    |                     |S |S )Nc                     g | ]}||S N ).0vs     r	   
<listcomp>zconverter.<locals>.<listcomp>   s    ```aRSR_R_R_R_r   c                 6    g | ]}t          d |          S )N)cond)	converter)r   ssr   type_s     r	   r   zconverter.<locals>.<listcomp>   s*    NNNbIeT2DAAANNNr   zInvalid value for property: {})list
isinstanceintboolwarningswarnformat)r   defaultr   
allow_noner   
allow_lists   `   ` r	   r   r      s     aetmm
1d(;(;m``NNNNNANNN```` aia ESLLZ45H5HLdL[_[_`a[b[bL6==a@@AAAHr   c                     t          | t          j                  s+t          | t                    sJ t          j        |           S | S r   )r   pathlibPathr   )fnames    r	   ensure_pathr&      sA    eW\** #%%%%%%|E"""Lr   c                     t          j                    }t          j        |           D ]A}|j        }t          |t          j                  r|                                }|||j        <   B|S r   )	collectionsOrderedDictattrfieldsr   r   Factoryfactoryname)clsresfieldr   s       r	   attr_defaultsr2   &   se    

!
#
#CS!! " "-gt|,, 	(oo''G!EJJr   c                 t   t          | j                  }t          j                    }t	          j        | j                  D ]v}|r|j                            d          sXt          | |j                  }|r|||j                 k    s0t          |d          r|
                    d          }|||j        <   w|S )N_asdictT)omit_defaults)r2   	__class__r(   r)   r*   r+   r.   
startswithgetattrhasattrr5   )objr6   omit_privatedefsr0   r1   values          r	   attr_asdictr?   0   s    ''D

!
#
#CS]++ ( ( 	(!6!6s!;!; 	(C,,E! (etEJ/?&?&?5(++ =!LLtL<<E"'EJJr   c                 L   |                      dd                               dd                               dd          } | t          j        v r| dz   S d                    d |                     d          D                       } | sd} | d         t
          j        dz   vrd| z   } | S )u  Convert a string into a valid python attribute name.
    This function is called to convert ASCII strings to something that can pass as
    python attribute name, to be used with namedtuples.

    >>> str(normalize_name('class'))
    'class_'
    >>> str(normalize_name('a-name'))
    'a_name'
    >>> str(normalize_name('a näme'))
    'a_name'
    >>> str(normalize_name('Name'))
    'Name'
    >>> str(normalize_name(''))
    '_'
    >>> str(normalize_name('1'))
    '_1'
    -r4   . c              3   8   K   | ]}t          |d           V  dS )F)	lowercaseN)slug)r   r   s     r	   	<genexpr>z!normalize_name.<locals>.<genexpr>R   s/      BBrbE***BBBBBBr   r   )replacekeywordkwlistjoinsplitstringascii_lettersr   s    r	   normalize_namerO   =   s    $ 	
		#s##C--55c3??AGN3wBBQWWS\\BBBBBA t6'#---!GHr   c                    d                     d t          j        d|           D                       }|r|                                }t          j        D ]}|                    |d          }t          j        d|rdnd|          }|	                    dd          
                    d          }t          j        d|          sJ |S )	uy   Condensed version of s, containing only lowercase alphanumeric characters.

    >>> str(slug('A B. äC'))
    'abac'
     c              3   J   K   | ]}t          j        |          d k    |V  dS )MnN)unicodedatacategory)r   cs     r	   rG   zslug.<locals>.<genexpr>`   sC       6 6 )!,,44 44446 6r   NFDz\s+rC   asciiignorez[ A-Za-z0-9]*$)rK   rT   	normalizelowerrM   punctuationrH   r   subencodedecoder   )r   remove_whitespacerE   r0   rV   s        r	   rF   rF   Z   s     '' 6 6[25!<< 6 6 6 6 6C iikk ! !kk!R  
&09c3
?
?C
**Wh
'
'
.
.w
7
7C8$c*****Jr   c                     dddddddd                                 D ]8\  }}|                     |d	z             r|                     |d	z   |          c S 9d S )
Nzhttp://www.w3.org/ns/csvw#z+http://www.w3.org/1999/02/22-rdf-syntax-ns#z%http://www.w3.org/2000/01/rdf-schema#z!http://www.w3.org/2001/XMLSchema#zhttp://purl.org/dc/terms/zhttp://www.w3.org/ns/dcat#zhttp://www.w3.org/ns/prov#)csvwrdfrdfsxsddcdcatprov:)itemsr8   rH   )qnameprefixuris      r	   	qname2urlrn   l   s    ,<72),,  egg
4 
4 FSL)) 	4==#s33333	4
4 
4r   returnc           	        
 ddd
fd	

fd}d }d                     | j                            dd	                    g}| j        r4|r2|                    d
                     | j        j                             |                     |d | j                                        D                                  | j        D ]}d |j        j	        D             }d                     t          |j        j                            }|re| j        r^| j        j                            |j        j                                                  r#|d                     |j        j                  z  }n||j        j        z  }|                    d|z   dz              |                     ||j                             |                    d          }|                                rL|                    d                     t%          j        |                                                               |                    d           |                    d           |                    d           |j        j        D ],}	|                     ||	||j        j                             -d                    |          S )z
    Render the metadata of a dataset as markdown.

    :param link_files: If True, links to data files will be added, assuming the markdown is stored     in the same directory as the metadata file.
    :return: `str` with markdown formatted text
    Fc                     t          |           }|r.|rd                    ||           S d                    | |          S | S )Nz<a href="{}">{}</a>[{}]({}))rn   r   )rk   htmlurls      r	   
qname2linkz%metadata2markdown.<locals>.qname2link   sQ     	1 @,33C???$$UC000r   Nc                    t          | t                    r5d                    d                    fd| D                                 S t          | t                    rg }|                                 D ]X\  }}|                    d                     |d          t          j        t          |                                         Yd                    d                    |                    S t          |           S )zE
        For inclusion in tables we must use HTML for lists.
        z<ol>{}</ol>rQ   c              3   X   K   | ]$}d                       |                    V  %dS )z<li>{}</li>keyNr   )r   itemhtmlifyry   s     r	   rG   z5metadata2markdown.<locals>.htmlify.<locals>.<genexpr>   s@      UU,,WWTs-C-C-CDDUUUUUUr   z<dt>{}</dt><dd>{}</dd>T)rs   z<dl>{}</dl>)
r   r   r   rK   dictrj   appendrs   escaper   )r;   ry   rj   kr   r|   ru   s    `   r	   r|   z"metadata2markdown.<locals>.htmlify   s    c4   	W ''UUUUUQTUUUUUW W Wc4   	8E		 D D15<<Jqt,,,dk#a&&.A.AC C D D D D ''7773xxr   c           
         d t          j        |                                           D             } g }|                     dd           }|r|                    |dz              |                     dd           }|rjt          |t                    rd|i}|                    d                    |                    d          pd|                    d	                               | rl|                    d
           |                                 D ]B\  }}|                    d                     |           ||                               Cd	                    |          dz   S )Nc                     i | ]
\  }}|||S r   r   r   r   r   s      r	   
<dictcomp>z9metadata2markdown.<locals>.properties.<locals>.<dictcomp>   s#    DDD$!Q!DADDDr   dc:description
zhttps://schema.org/image
contentUrlz
![{}]({})
zhttps://schema.org/captionrQ   zhttps://schema.org/contentUrlzproperty | value
 --- | ---z{} | {}rx   )
copydeepcopyrj   popr~   r   r   r   getrK   )propsr0   descimgr   r   r|   ru   s         r	   
propertiesz%metadata2markdown.<locals>.properties   st   DD$-"6"6"<"<">">DDDyy)400 	$JJtd{###ii2D99 	;#s## *#S)JJ}++455;788: : ; ; ;  	OJJ5666 O O1

9++JJqMM771!;L;L;LMMNNNNyy~~$$r   c           	         d                     | j        r| j        j        nd          }| j        r| j        j         rt          j        d| j        j                   rE|dz  }|d                    d | j        j                             d          D                       z  }n2| j        j        dk    r"|d                     | j        j                   z  }| j        j        r"|d	                     | j        j                  z  }| j        j        r"|d
                     | j        j                  z  }| j	        rd                     || j	                  }| j
                            dd                              dd          }|r| j        |v r|r|dz   n|}|dz  }| j        |v rc|r|dz   n|}|d                     || j                 d         || j                 d         t          || j                 d                             z  }d                    | j        r d                     | j        | j                  nd                     | j                  ||g          S )Nz`{}`rM   z[\w\s]+(\|[\w\s]+)*z<br>Valid choices:<br>rQ   c              3   @   K   | ]}d                      |          V  dS )z `{}`Nrz   )r   ws     r	   rG   z4metadata2markdown.<locals>.colrow.<locals>.<genexpr>   s.      !\!\'.."3"3!\!\!\!\!\!\r   |z<br>Regex: `{}`z<br>&ge; {}z<br>&le; {}zlist of {} (separated by `{}`)r   r   rC   z<br>zPrimary keyzReferences [{}::{}](#table-{})   r   z | rr   )r   datatypebaser   	fullmatchrK   rL   minimummaximum	separatorcommon_propsr   rH   r.   rF   propertyUrl)colfkspkdtr   s        r	   colrowz!metadata2markdown.<locals>.colrow   s_   ]]J3<,,(KK< 
	A|" H< 68KLL H22B"''!\!\S\=P=V=VWZ=[=[!\!\!\\\\BB\&(22+223<3FGGGB|# Am**3<+?@@@|# Am**3<+?@@@= 	L188S]KKB##$4b99AA$LL 	"#(b..&*4D6MMDM!D8s??&*4D6MMD4;;CHa #ch-"2DSXq9I4J4JL L LD zz<Jch888$*MM#($;$;	
   	r   z# {}
dc:titleDatasetz%> [!NOTE]
> Described by [{0}]({0}).
c                 &    i | ]\  }}|d k    ||S )r   r   r   s      r	   r   z%metadata2markdown.<locals>.<dictcomp>   s#    WWWDAqqJ1ar   c                     i | ]I}t          |j                  d k    |j        d         |j        j        d         |j        j        j        fJS )r   r   )lencolumnReference	referenceresourcerM   )r   fks     r	   r   z%metadata2markdown.<locals>.<dictcomp>   s\     U U Us2;M7N7NRS7S7S q!BL$@$CR\EZEa#b7S7S7Sr   z ## <a name="table-{}"></a>Table z[{0}]({0})
r   dialectz
**CSV dialect**: `{}`
z
### Columns
z&Name/Property | Datatype | Descriptionz --- | --- | --- Fr   )r   r   r   _fnamer~   r.   rj   tablestableSchemaforeignKeysrF   rt   rM   parentjoinpathexistsinheritr5   jsondumpscolumns
primaryKeyrK   )tg
link_filesr   r   r0   tabler   headerr   r   r|   ru   s             @@r	   metadata2markdownr   z   s            % % % % % %&  B ??2?..z9EEFF
GC	y UZ U

<CCBINSSTTTJJzzWWBO,A,A,C,CWWWXXYYY G GU U'3U U U 4::4	@P;Q;QRR 	'") 	'	(8(A(A%)BR(S(S(Z(Z(\(\ 	'n++EI,<===FFei&&F

4&=4'(((

::e011222--	**>> 	YJJ299$*W^^EUEU:V:VWWXXX

$%%%

;<<<

&'''$, 	G 	GCJJvvc3(9(DEEFFFF	G99S>>r   )FNT)TTr   )r   r   rs   r   rM   rI   r#   r   r(   rT   r*   r
   r   r&   r2   r?   rO   rF   rn   r   r   r   r   r	   <module>r      s'   				                * * *	 	 	 	    
 
 
 
  :   $4 4 4l ls l l l l l lr   