
    Pi                        d Z ddlmZ ddlZddlZddlmZmZ ddlm	Z	m
Z
mZmZmZmZ ddlmZ ddlmZmZmZ ddlmZmZmZmZmZ  G d	 d
e          Z G d de          ZdS )z
This module implements a parser and serializer for the CSV SPARQL result
formats

http://www.w3.org/TR/sparql11-results-csv-tsv/
    )annotationsN)BufferedIOBase
TextIOBase)IODictListOptionalUnioncast)SPARQLResult)ResultResultParserResultSerializer)BNode
IdentifierLiteralURIRefVariablec                  2    e Zd ZdZd Zddd
ZddZddZdS )CSVResultParserz/Parses SPARQL CSV results into a Result object.c                    d| _         d S )N,)delim)selfs    |/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/rdflib/plugins/sparql/results/csvresults.py__init__zCSVResultParser.__init__   s    


    Nsourcer   content_typeOptional[str]returnr   c                   t          d          }t          |                    d          t                    r t	          j        d          |          }t          j        || j                  }d t          |          D             |_
        g |_        |D ]5}|j                            |                     ||j
                             6|S )NSELECTr   utf-8	delimiterc                ,    g | ]}t          |          S  )r   ).0xs     r   
<listcomp>z)CSVResultParser.parse.<locals>.<listcomp>%   s    444!(1++444r   )r   
isinstancereadbytescodecs	getreadercsvreaderr   nextvarsbindingsappendparseRow)r   r   r   rr2   rows         r   parsezCSVResultParser.parse   s    8 fkk!nne,, 	7 /V%g..v66FFdj99944tF||444
 	: 	:CJdmmC889999r   r9   	List[str]vList[Variable]-Dict[Variable, Union[BNode, URIRef, Literal]]c                j     t          d t          | fd|D                       D                       S )Nc              3  (   K   | ]\  }}|||fV  d S Nr(   )r)   varvals      r   	<genexpr>z+CSVResultParser.parseRow.<locals>.<genexpr>0   s8       
 
S #J
 
r   c                :    g | ]}                     |          S r(   )convertTerm)r)   tr   s     r   r+   z,CSVResultParser.parseRow.<locals>.<listcomp>2   s'    #E#E#EAD$4$4Q$7$7#E#E#Er   )dictzip)r   r9   r<   s   `  r   r7   zCSVResultParser.parseRow-   sR      
 
#E#E#E#E#E#E#EFF
 
 
 
 
 	
r   rG   str'Optional[Union[BNode, URIRef, Literal]]c                    |dk    rd S |                     d          rt          |          S |                     d          s|                     d          rt          |          S t          |          S )N _:zhttp://zhttps://)
startswithr   r   r   )r   rG   s     r   rF   zCSVResultParser.convertTerm6   sn    774<< 	88O<<	"" 	all:&>&> 	!99qzzr   rA   )r   r   r   r    r!   r   )r9   r;   r<   r=   r!   r>   )rG   rJ   r!   rK   )__name__
__module____qualname____doc__r   r:   r7   rF   r(   r   r   r   r      sj        99      $
 
 
 
     r   r   c                  ,    e Zd ZdZddZdddZddZdS )CSVResultSerializerz*Serializes SPARQL results into CSV format.resultr   c                r    t          j        | |           d| _        |j        dk    rt	          d          d S )Nr   r#   z5CSVSerializer can only serialize select query results)r   r   r   type	Exception)r   rV   s     r   r   zCSVResultSerializer.__init__C   s@    !$///
;(""STTT #"r   r$   streamr   encodingrJ   r!   Nonec                   
 dd l }t          t          t          t          f         |          }t          |t                    r|}nAt          t          |          }t          t            |j                  |                    }t          j        | j	                  } fd j
        j        D             }	|                    |	            j
        j        D ]/
|                    
 fd j
        j        D                        0d S )Nr   r%   c                <    g | ]}                     |          S r(   )serializeTerm)r)   r<   r[   r   s     r   r+   z1CSVResultSerializer.serialize.<locals>.<listcomp>[   s)    HHH!d  H--HHHr   c                b    g | ]+}                                         |                    ,S r(   )r_   get)r)   r<   r[   r9   r   s     r   r+   z1CSVResultSerializer.serialize.<locals>.<listcomp>_   s3    TTTa##CGGAJJ99TTTr   )r/   r   r
   r   r   r,   	getwriterr1   writerr   rV   r4   writerowr5   )r   rZ   r[   kwargsr/   writable_streamstring_streambyte_streamoutvsr9   s   ` `       @r   	serializezCSVResultSerializer.serializeJ   s    
 	 uZ%?@&IIoz22 	V(7MM~??K -G-=V-=h-G-G-T-TUUMj$*===HHHHHt{7GHHHR;' 	 	CLLTTTTTT4;CSTTT   	 	r   termOptional[Identifier]Union[str, Identifier]c                B    |dS t          |t                    rd| S |S )NrM   rN   )r,   r   )r   rl   r[   s      r   r_   z!CSVResultSerializer.serializeTermb   s1     <2e$$ 	;;Kr   N)rV   r   )r$   )rZ   r   r[   rJ   r!   r\   )rl   rm   r[   rJ   r!   rn   )rP   rQ   rR   rS   r   rk   r_   r(   r   r   rU   rU   @   s_        44U U U U    0     r   rU   )rS   
__future__r   r/   r1   ior   r   typingr   r   r   r	   r
   r   rdflib.plugins.sparql.processorr   rdflib.queryr   r   r   rdflib.termr   r   r   r   r   r   rU   r(   r   r   <module>rv      s7    # " " " " "  



 ) ) ) ) ) ) ) ) 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 ? ? ? ? ? ? ? ? ? ? D D D D D D D D D D D D D D) ) ) ) )l ) ) )X* * * * ** * * * * *r   