§
    kÃ¿a³	  ã                   óŠ   — d Z ddlZddlZddlmZ ddlmZmZmZm	Z	 ddl
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/

é    N)ÚIO)ÚVariableÚBNodeÚURIRefÚLiteral)ÚResultÚResultSerializerÚResultParserc                   ó(   — e Zd Zd„ Zdd„Zd„ Zd„ ZdS )ÚCSVResultParserc                 ó   — d| _         d S )Nú,)Údelim)Úselfs    úJ/usr/lib/python3/dist-packages/rdflib/plugins/sparql/results/csvresults.pyÚ__init__zCSVResultParser.__init__   s   € ØˆŒ
ˆ
ˆ
ó    Nc                 óž  — 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   ÚsourceÚcontent_typeÚrr$   Úrows         r   ÚparsezCSVResultParser.parse   sº   € å�8ÑÔˆå�f—k’k !‘n”n¥eÑ,Ô,ð 	7à.•VÔ% gÑ.Ô.¨vÑ6Ô6ˆFå”˜F¨d¬jÐ9Ñ9Ô9ˆØ4Ð4¥t¨F¡|¤|Ð4Ñ4Ô4ˆŒØˆŒ
àð 	:ð 	:ˆCØŒJ×Ò˜dŸmšm¨C°´Ñ8Ô8Ñ9Ô9Ð9Ð9àˆr   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>)   s8   è è € ð 
ð 
á��SØˆð �#ˆJàˆˆˆð
ð 
r   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r   )ÚconvertTerm)r   Útr   s     €r   r   z,CSVResultParser.parseRow.<locals>.<listcomp>+   s'   ø€ Ð#EÐ#EÐ#E¸A D×$4Ò$4°QÑ$7Ô$7Ð#EÐ#EÐ#Er   )ÚdictÚzip)r   r-   Úvs   `  r   r)   zCSVResultParser.parseRow(   sP   ø€ Ýð 
ð 
å Ð#EÐ#EÐ#EÐ#EÀÐ#EÑ#EÔ#EÑFÔFð
ñ 
ô 
ñ 
ô 
ð 	
r   c                 óê   — |dk    rd S |                      d¦  «        rt          |¦  «        S |                      d¦  «        s|                      d¦  «        rt          |¦  «        S t          |¦  «        S )NÚ z_:zhttp://zhttps://)Ú
startswithr   r   r   )r   r7   s     r   r6   zCSVResultParser.convertTerm/   sn   € Ø�Š7ˆ7Ø�4Ø�<Š<˜ÑÔð 	Ý˜‘8”8ˆOØ�<Š<˜	Ñ"Ô"ð 	 a§l¢l°:Ñ&>Ô&>ð 	Ý˜!‘9”9ÐÝ�q‰zŒzÐr   r1   )Ú__name__Ú
__module__Ú__qualname__r   r.   r)   r6   r   r   r   r   r      sU   € € € € € ðð ð ðð ð ð ð"
ð 
ð 
ðð ð ð ð r   r   c                   ó,   — e Zd Zd„ Zddedefd„Zd„ ZdS )	ÚCSVResultSerializerc                 ó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   Úresults     r   r   zCSVResultSerializer.__init__:   s@   € ÝÔ! $¨Ñ/Ô/Ð/àˆŒ
ØŒ;˜(Ò"Ð"ÝÐSÑTÔTÐTð #Ð"r   r   ÚstreamÚencodingc                 óP  ‡ ‡‡— dd l }  |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:   rH   r   s     €€r   r   z1CSVResultSerializer.serialize.<locals>.<listcomp>M   s)   ø€ ÐHÐHÐH°!ˆd× Ò   HÑ-Ô-ÐHÐHÐHr   c                 ób   •— g | ]+}‰                      ‰                     |¦  «        ‰¦  «        ‘Œ,S r   )rK   Úget)r   r:   rH   r-   r   s     €€€r   r   z1CSVResultSerializer.serialize.<locals>.<listcomp>Q   s3   ø€ ÐTÐTÐT¸a�×#Ò# C§G¢G¨A¡J¤J°Ñ9Ô9ÐTÐTÐTr   )	r!   Ú	getwriterr#   Úwriterr   rF   r&   Úwriterowr'   )r   rG   rH   Úkwargsr!   ÚoutÚvsr-   s   ` `    @r   Ú	serializezCSVResultSerializer.serializeA   sÑ   øøø€ ð 	ˆˆˆà+Ð!�Ô! (Ñ+Ô+¨FÑ3Ô3ˆåŒj˜¨4¬:Ð6Ñ6Ô6ˆàHÐHÐHÐHÐH°t´{Ô7GÐHÑHÔHˆØ�Š�RÑÔÐØ”;Ô'ð 	ð 	ˆCØ�LŠLØTÐTÐTÐTÐTÐTÀ4Ä;ÔCSÐTÑTÔTñô ð ð ð	ð 	r   c                 ó   — |€dS |S )Nr<   r   )r   ÚtermrH   s      r   rK   z!CSVResultSerializer.serializeTermT   s   € Øˆ<Ø�2àˆKr   N)r   )r>   r?   r@   r   r   ÚstrrT   rK   r   r   r   rB   rB   9   s\   € € € € € ðUð Uð Uðð  ð ¨cð ð ð ð ð&ð ð ð ð r   rB   )Ú__doc__r!   r#   Útypingr   Úrdflibr   r   r   r   Úrdflib.queryr   r	   r
   r   rB   r   r   r   ú<module>r\      s×   ððð ð €€€Ø 
€
€
€
Ø Ð Ð Ð Ð Ð à 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3à ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?ð#ð #ð #ð #ð #�lñ #ô #ð #ðLð ð ð ð Ð*ñ ô ð ð ð r   