§
    kÃ¿aß.  ã            
       óô  — d Z ddlZddlZddlZddlZddlmZmZmZm	Z	m
Z
 ddlmZmZmZmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ g d¢Z G d„ de¦  «        Z  G d„ de
¦  «        Z! G d„ dej"        e¦  «        Z" G d„ de"¦  «        Z# G d„ de"¦  «        Z$ddez  iZ% G d„ de"¦  «        Z& G d„ de"¦  «        Z'	 	 	 	 	 	 d!deee(e)e*eeef         f                  fd„Z+d „ Z,dS )"a=  
Parser plugin interface.

This module defines the parser plugin interface and contains other
related parser support code.

The module is mainly useful for those wanting to write a parser that
can plugin to rdflib. If you are wanting to invoke a parser you likely
want to do so through the Graph class parse method.

é    N)ÚBytesIOÚ
TextIOBaseÚTextIOWrapperÚStringIOÚBufferedIOBase)ÚAnyÚDictÚOptionalÚUnion)ÚRequest)Úurl2pathname)Úurlopen)Ú	HTTPError)Ú	xmlreader)Ú__version__)ÚURIRef)Ú	Namespace)ÚParserÚInputSourceÚStringInputSourceÚURLInputSourceÚFileInputSourceÚPythonInputSourcec                   ó   — e Zd ZdZd„ Zd„ ZdS )r   © c                 ó   — d S ©Nr   ©Úselfs    ú//usr/lib/python3/dist-packages/rdflib/parser.pyÚ__init__zParser.__init__-   ó   € Øˆó    c                 ó   — d S r   r   )r   ÚsourceÚsinks      r    ÚparsezParser.parse0   r"   r#   N)Ú__name__Ú
__module__Ú__qualname__Ú	__slots__r!   r'   r   r#   r    r   r   *   s7   € € € € € Ø€Iðð ð ðð ð ð ð r#   r   c                   óH   ‡ — e Zd ZdZd
defˆ fd„Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
ˆ xZS )ÚBytesIOWrapper)ÚwrappedÚencodedÚencodingúutf-8r.   c                 ó€   •— t          t          | ¦  «                             ¦   «          || _        || _        d | _        d S r   )Úsuperr-   r!   r.   r0   r/   )r   r.   r0   Ú	__class__s      €r    r!   zBytesIOWrapper.__init__7   s8   ø€ Ý�n˜dÑ#Ô#×,Ò,Ñ.Ô.Ð.ØˆŒØ ˆŒØˆŒˆˆr#   c                 ó°   — | j         €> t          j        | j        ¦  «        | j        ¦  «        \  }}t          |¦  «        | _          | j         j        |i |¤ŽS r   )r/   ÚcodecsÚ
getencoderr0   r.   r   Úread)r   ÚargsÚkwargsÚbÚblens        r    r8   zBytesIOWrapper.read=   sS   € ØŒ<ÐØ6•fÔ'¨¬Ñ6Ô6°t´|ÑDÔD‰GˆAˆtÝ" 1™:œ:ˆDŒLØ ˆtŒ|Ô  $Ð1¨&Ð1Ð1Ð1r#   c                 óª   — | j         €; t          j        | j        ¦  «        | j        ¦  «        }t          |¦  «        | _          | j         j        |i |¤ŽS r   )r/   r6   r7   r0   r.   r   Úread1)r   r9   r:   r;   s       r    r>   zBytesIOWrapper.read1C   sO   € ØŒ<ÐØ0•Ô! $¤-Ñ0Ô0°´Ñ>Ô>ˆAÝ" 1™:œ:ˆDŒLØ!ˆtŒ|Ô! 4Ð2¨6Ð2Ð2Ð2r#   c                 ó   — t          ¦   «         ‚r   ©ÚNotImplementedError©r   r9   r:   s      r    ÚreadintozBytesIOWrapper.readintoI   ó   € Ý!Ñ#Ô#Ð#r#   c                 ó   — t          ¦   «         ‚r   r@   rB   s      r    Ú	readinto1zBytesIOWrapper.readinto1L   rD   r#   c                 ó   — t          ¦   «         ‚r   r@   rB   s      r    ÚwritezBytesIOWrapper.writeO   rD   r#   )r1   )r(   r)   r*   r+   Ústrr!   r8   r>   rC   rF   rH   Ú__classcell__©r4   s   @r    r-   r-   4   s™   ø€ € € € € Ø2€Iðð  ð ð ð ð ð ð ð2ð 2ð 2ð3ð 3ð 3ð$ð $ð $ð$ð $ð $ð$ð $ð $ð $ð $ð $ð $r#   r-   c                   ó    — e Zd ZdZdd„Zd„ ZdS )r   ú
    TODO:
    Nc                 ód   — t           j                             | |¬¦  «         d | _        d| _        d S )N©Ú	system_idF)r   r   r!   Úcontent_typeÚ
auto_close©r   rP   s     r    r!   zInputSource.__init__X   s1   € ÝÔ×&Ò& t°yÐ&ÑAÔAÐAØ ˆÔØˆŒˆˆr#   c                 ó>  — |                       ¦   «         }|r6t          |d¦  «        r&	 |                     ¦   «          n# t          $ r Y nw xY w|                      ¦   «         }|r8t          |d¦  «        r*	 |                     ¦   «          d S # t          $ r Y d S w xY wd S d S )NÚclose)ÚgetCharacterStreamÚhasattrrU   Ú	ExceptionÚgetByteStream)r   ÚcÚfs      r    rU   zInputSource.close]   sÖ   € Ø×#Ò#Ñ%Ô%ˆØð 	•˜˜GÑ$Ô$ð 	ðØ—’‘	”	�	�	øÝð ð ð Ø�ðøøøà×ÒÑ Ô ˆØð 	•˜˜GÑ$Ô$ð 	ðØ—’‘	”	�	�	�	øÝð ð ð Ø��ðøøøð	ð 	ð 	ð 	s!   ¨= ½
A
Á	A
Á4B
 Â

BÂBr   )r(   r)   r*   Ú__doc__r!   rU   r   r#   r    r   r   S   sA   € € € € € ðð ð ð  ð  ð  ð
ð ð ð ð r#   r   c                   ó8   — e Zd ZdZd	d„Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )
r   aØ  
    Constructs an RDFLib Parser InputSource from a Python data structure,
    for example, loaded from JSON with json.load or json.loads:

    >>> import json
    >>> as_string = """{
    ...   "@context" : {"ex" : "http://example.com/ns#"},
    ...   "@graph": [{"@type": "ex:item", "@id": "#example"}]
    ... }"""
    >>> as_python = json.loads(as_string)
    >>> source = create_input_source(data=as_python)
    >>> isinstance(source, PythonInputSource)
    True
    Nc                 óL   — d | _         d| _        d | _        || _        || _        d S )NF)rQ   rR   Ú	public_idrP   Údata)r   r`   rP   s      r    r!   zPythonInputSource.__init__|   s*   € Ø ˆÔØˆŒØˆŒØ"ˆŒØˆŒ	ˆ	ˆ	r#   c                 ó   — | j         S r   ©r_   r   s    r    ÚgetPublicIdzPythonInputSource.getPublicIdƒ   ó
   € ØŒ~Ðr#   c                 ó   — || _         d S r   rb   )r   r_   s     r    ÚsetPublicIdzPythonInputSource.setPublicId†   ó   € Ø"ˆŒˆˆr#   c                 ó   — | j         S r   rO   r   s    r    ÚgetSystemIdzPythonInputSource.getSystemId‰   rd   r#   c                 ó   — || _         d S r   rO   rS   s     r    ÚsetSystemIdzPythonInputSource.setSystemIdŒ   rg   r#   c                 ó   — d | _         d S r   )r`   r   s    r    rU   zPythonInputSource.close�   s   € ØˆŒ	ˆ	ˆ	r#   r   )
r(   r)   r*   r\   r!   rc   rf   ri   rk   rU   r   r#   r    r   r   l   s}   € € € € € ðð ðð ð ð ðð ð ð#ð #ð #ðð ð ð#ð #ð #ðð ð ð ð r#   r   c                   ó$   ‡ — e Zd ZdZdˆ fd„	Zˆ xZS )r   zO
    Constructs an RDFLib Parser InputSource from a Python String or Bytes
    r1   Nc                 ó  •— t          t          | ¦  «                             |¦  «         t          |t          ¦  «        r`t          |¦  «        }|                      |¦  «         |                      |¦  «         t          ||¦  «        }|  	                    |¦  «         d S t          |¦  «        }|  	                    |¦  «         t          ||¦  «        }|                      |¦  «         |                      |j        ¦  «         d S r   )r3   r   r!   Ú
isinstancerI   r   ÚsetCharacterStreamÚsetEncodingr-   ÚsetByteStreamr   r   r0   )r   Úvaluer0   rP   ÚstreamÚb_streamÚc_streamr4   s          €r    r!   zStringInputSource.__init__˜   sï   ø€ ÝÕ Ñ&Ô&×/Ò/°	Ñ:Ô:Ð:Ý�e�SÑ!Ô!ð 	0Ý˜e‘_”_ˆFØ×#Ò# FÑ+Ô+Ð+Ø×Ò˜XÑ&Ô&Ð&Ý% e¨XÑ6Ô6ˆHØ×Ò˜xÑ(Ô(Ð(Ð(Ð(å˜U‘^”^ˆFØ×Ò˜vÑ&Ô&Ð&Ý$ V¨XÑ6Ô6ˆHØ×#Ò# HÑ-Ô-Ð-Ø×Ò˜XÔ.Ñ/Ô/Ð/Ð/Ð/r#   )r1   N)r(   r)   r*   r\   r!   rJ   rK   s   @r    r   r   “   sG   ø€ € € € € ðð ð0ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0r#   r   z
User-agentz1rdflib-%s (http://rdflib.net/; eikeon@eikeon.com)c                   ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )r   rM   Nc                 óØ  •‡— t          t          | ¦  «                             |¦  «         || _        t	          t
          ¦  «        }|dk    rd|d<   n5|dk    rd|d<   n)|dk    rd|d<   n|dk    rd	|d<   n|d
k    rd|d<   nd|d<   t          |d |¦  «        }dt          fˆfd„Š ‰|¦  «        }|                     ¦   «         | _        |                      | j        ¦  «         | 	                    ¦   «          
                    d¦  «        | _        | j        �&| j                             dd¦  «        d         | _        |                      |¦  «         | 	                    ¦   «         | _        d S )Nzapplication/rdf+xmlzapplication/rdf+xml, */*;q=0.1ÚAcceptÚn3ztext/n3, */*;q=0.1Úturtlez+text/turtle,application/x-turtle, */*;q=0.1Úntztext/plain, */*;q=0.1zjson-ldz6application/ld+json, application/json;q=0.9, */*;q=0.1zLapplication/rdf+xml,text/rdf+n3;q=0.9,application/xhtml+xml;q=0.5, */*;q=0.1Úreqc                 ó¾   •— 	 t          | ¦  «        S # t          $ r@}|j        dk    r/|j                             d¦  «        | _         ‰| ¦  «        cY d }~S ‚ d }~ww xY w)Ni4  ÚLocation)r   r   ÚcodeÚheadersÚgetÚfull_url)r}   ÚexÚ_urlopens     €r    r…   z)URLInputSource.__init__.<locals>._urlopenÌ   su   ø€ ðÝ˜s‘|”|Ð#øÝð 	ð 	ð 	ð
 ”7˜c’>�>Ø#%¤:§>¢>°*Ñ#=Ô#=�C”LØ#˜8 C™=œ=Ð(Ð(Ð(Ð(Ð(Ð(àøøøøð	øøøs    ƒ ’
Aœ4AÁAÁAÁAzcontent-typeú;é   r   )r3   r   r!   ÚurlÚdictr�   r   Úgeturlrf   Úinfor‚   rQ   Úsplitrr   Úresponse_info)r   rP   ÚformatÚ	myheadersr}   Úfiler…   r4   s         @€r    r!   zURLInputSource.__init__²   s   øø€ Ý�n˜dÑ#Ô#×,Ò,¨YÑ7Ô7Ð7ØˆŒõ �‘M”Mˆ	ØÐ*Ò*Ð*Ø"BˆI�hÑÐØ�tŠ^ˆ^Ø"6ˆI�hÑÐØ�xÒÐØ"OˆI�hÑÐØ�tŠ^ˆ^Ø"9ˆI�hÑÐØ�yÒ Ð ð Ið Øñð ð
;ð �hÑõ
 �i  yÑ1Ô1ˆð	�'ð 	ð 	ð 	ð 	ð 	ð 	ð ˆx˜‰}Œ}ˆà—;’;‘=”=ˆŒØ×Ò˜œÑ"Ô"Ð"Ø ŸIšI™KœKŸOšO¨NÑ;Ô;ˆÔØÔÐ(Ø $Ô 1× 7Ò 7¸¸QÑ ?Ô ?ÀÔ BˆDÔØ×Ò˜4Ñ Ô Ð à!ŸYšY™[œ[ˆÔÐÐr#   c                 ó   — | j         S r   )rˆ   r   s    r    Ú__repr__zURLInputSource.__repr__å   s	   € ØŒxˆr#   )NN)r(   r)   r*   r\   r!   r’   rJ   rK   s   @r    r   r   ­   sW   ø€ € € € € ðð ð1)ð 1)ð 1)ð 1)ð 1)ð 1)ðfð ð ð ð ð ð r#   r   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )r   c                 ó¨  •— t           j                             ¦   «                              ¦   «         }t	          t          j        |j        ¦  «                             ¦   «                              ¦   «         |¬¦  «        }t          t          | ¦  «         	                    |¦  «         || _
        t          |t          ¦  «        r{|                      |¦  «         |                      |j        ¦  «         	 |j        }|                      |¦  «         d S # t$          t&          f$ r |                      |¦  «         Y d S w xY w|                      |¦  «         d S )N©Úbase)ÚpathlibÚPathÚcwdÚas_urir   ÚnameÚabsoluter3   r   r!   r�   ro   r   rp   rq   r0   Úbufferrr   ÚAttributeErrorÚLookupError)r   r�   r–   rP   r;   r4   s        €r    r!   zFileInputSource.__init__ê   s8  ø€ ÝŒ|×ÒÑ!Ô!×(Ò(Ñ*Ô*ˆÝ�7œ<¨¬	Ñ2Ô2×;Ò;Ñ=Ô=×DÒDÑFÔFÈTÐRÑRÔRˆ	Ý�o˜tÑ$Ô$×-Ò-¨iÑ8Ô8Ð8ØˆŒ	Ý�d�JÑ'Ô'ð 		%Ø×#Ò# DÑ)Ô)Ð)Ø×Ò˜Tœ]Ñ+Ô+Ð+ð)Ø”K�Ø×"Ò" 1Ñ%Ô%Ð%Ð%Ð%øÝ"¥KÐ0ð )ð )ð )Ø×"Ò" 4Ñ(Ô(Ð(Ð(Ð(Ð(ð)øøøð ×Ò˜tÑ$Ô$Ð$Ð$Ð$s   Ã2D Ä&D:Ä9D:c                 ó*   — t          | j        ¦  «        S r   )Úreprr�   r   s    r    r’   zFileInputSource.__repr__ü   s   € Ý�D”I‰ŒÐr#   )r(   r)   r*   r!   r’   rJ   rK   s   @r    r   r   é   sG   ø€ € € € € ð%ð %ð %ð %ð %ð$ð ð ð ð ð ð r#   r   r`   c           	      ó.  — t          t          d„ | |||g¦  «        ¦  «        }t          |¦  «        dk    rt          d¦  «        ‚d}| ��¼t	          | t
          ¦  «        r| }�n£t	          | t          ¦  «        r| }�nŠt	          | t          j        ¦  «        rt          | ¦  «        }�n_t	          | t          ¦  «        r| }�nFt          | d¦  «        �rt	          | t          ¦  «        sý| }t          ¦   «         }t          | d¦  «        ry|                     | ¦  «         |                     | j        ¦  «         	 |j        }	|                     |	¦  «         nA# t"          t$          f$ r |                     | ¦  «         Y nw xY w|                     |¦  «         |t&          j        u r|                     d¦  «         nNt          |d¦  «        r|                     |j        ¦  «         n#t/          d	t1          | ¦  «        ›d
| ›d�¦  «        ‚d}
d}|�t3          ||||¬¦  «        \  }
}}}|�t5          |¦  «        }|�zt	          |t6          ¦  «        rt9          |¦  «        }d}nSt	          |t          t          t:          f¦  «        rt=          |¦  «        }d}nt?          dt1          |¦  «        › �¦  «        ‚|€t/          d¦  «        ‚|xj         |z  c_         |�| !                    |¦  «         n+| "                    ¦   «         €| !                    |
pd¦  «         |S )zR
    Return an appropriate InputSource instance for the given
    parameters.
    c                 ó
   — | d uS r   r   )Úvs    r    ú<lambda>z%create_input_source.<locals>.<lambda>  s
   € �a˜t�m€ r#   r‡   z;exactly one of source, location, file or data must be givenNr8   r0   zfile:///dev/stdinr›   zUnexpected type 'z' for source 'ú'F)r�   rŽ   Úinput_sourceÚlocationTz(parse data can only str, or bytes. not: zcould not create InputSourceÚ )#ÚlistÚfilterÚlenÚ
ValueErrorro   r   rI   r—   ÚPurePathÚbytesrW   r   rp   rq   r0   r�   rr   rž   rŸ   ÚsysÚstdinrk   r›   rX   ÚtypeÚ"_create_input_source_from_locationr   r‰   r   Ú	bytearrayr   ÚRuntimeErrorrR   rf   rc   )r%   ÚpublicIDr¨   r�   r`   rŽ   Únon_empty_argumentsr§   r[   r;   Úabsolute_locationrR   s               r    Úcreate_input_sourcer¹      sw  € õ ÝØ#Ð#Ø�X˜t TÐ*ñ	
ô 	
ñô Ðõ ÐÑÔ 1Ò$Ð$ÝØIñ
ô 
ð 	
ð €LàÑÝ�f�kÑ*Ô*ð 	Ø!ˆL‰Lå˜&¥#Ñ&Ô&ð Ø!�‘Ý˜F¥GÔ$4Ñ5Ô5ð Ý˜v™;œ;�‘Ý˜F¥EÑ*Ô*ð Ø�‘Ý˜ Ñ(Ô(ñ µ¸FÅIÑ1NÔ1Nð Ø�Ý*™}œ}�Ý˜6 :Ñ.Ô.ð 	2Ø ×3Ò3°FÑ;Ô;Ð;Ø ×,Ò,¨V¬_Ñ=Ô=Ð=ð;Ø œK˜Ø$×2Ò2°1Ñ5Ô5Ð5Ð5øÝ*­KÐ8ð ;ð ;ð ;Ø$×2Ò2°6Ñ:Ô:Ð:Ð:Ð:ð;øøøð !×.Ò.¨qÑ1Ô1Ð1Ø�œ	�>�>Ø ×,Ò,Ð-@ÑAÔAÐAÐAÝ˜Q Ñ'Ô'ð 5Ø ×,Ò,¨Q¬VÑ4Ô4Ð4øå�iÝ>BÀ6¹l¼l¸l¸lÈFÈFÈFÐSñô ð ð Ðà€JàÐõ /ØØØ%Øð	
ñ 
ô 
ñ	
ØØØØð ÐÝ& tÑ,Ô,ˆàÐÝ�d�DÑ!Ô!ð 	XÝ,¨TÑ2Ô2ˆLØˆJˆJÝ˜�s¥E­9Ð5Ñ6Ô6ð 	XÝ,¨TÑ2Ô2ˆLØˆJˆJåÐVÍ$ÈtÉ*Ì*ÐVÐVÑWÔWÐWàÐÝÐ6Ñ7Ô7Ð7àÐÔ :Ñ-ÐÔØÐØ×$Ò$ XÑ.Ô.Ð.Ð.à×%Ò%Ñ'Ô'Ð/Ø×$Ò$Ð%6Ð%<¸"Ñ=Ô=Ð=ØÐs   Ä6E Å&E<Å;E<c                 óô  — t           j                             |¦  «        r8t          j        |¦  «                             ¦   «                              ¦   «         }t          j                             ¦   «                              ¦   «         }t          ||¬¦  «        }| 	                    d¦  «        r4t          |                     dd¦  «        ¦  «        }t          |d¦  «        } nt          ||¦  «        }d}||| |fS )Nr•   zfile:///ú/ÚrbT)ÚosÚpathÚexistsr—   r˜   rœ   rš   r™   r   Ú
startswithr   ÚreplaceÚopenr   )r�   rŽ   r§   r¨   r–   r¸   ÚfilenamerR   s           r    r³   r³   f  sß   € õ 
„w‡~‚~�hÑÔð >Ý”< Ñ)Ô)×2Ò2Ñ4Ô4×;Ò;Ñ=Ô=ˆåŒ<×ÒÑÔ×$Ò$Ñ&Ô&€Då˜x¨dÐ3Ñ3Ô3Ðà×#Ò# JÑ/Ô/ð AÝÐ 1× 9Ò 9¸*ÀcÑ JÔ JÑKÔKˆÝ�H˜dÑ#Ô#ˆˆå%Ð&7¸Ñ@Ô@ˆà€Jð ˜j¨$°Ð<Ð<r#   )NNNNNN)-r\   r6   r½   r—   r°   Úior   r   r   r   r   Útypingr   r	   r
   r   Úurllib.requestr   r   r   Úurllib.errorr   Úxml.saxr   Úrdflibr   Úrdflib.termr   Úrdflib.namespacer   Ú__all__Úobjectr   r-   r   r   r   r�   r   r   rI   r¯   r´   r¹   r³   r   r#   r    ú<module>rÎ      s×  ðð
ð 
ð €€€Ø 	€	€	€	Ø €€€Ø 
€
€
€
à KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KØ -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -à "Ð "Ð "Ð "Ð "Ð "Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø "Ð "Ð "Ð "Ð "Ð "Ø "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &ðð ð €ðð ð ð ð ˆVñ ô ð ð$ð $ð $ð $ð $�^ñ $ô $ð $ð>ð ð ð ð �)Ô'¨ñ ô ð ð2$ð $ð $ð $ð $˜ñ $ô $ð $ðN0ð 0ð 0ð 0ð 0˜ñ 0ô 0ð 0ð, ÐEÈÑSð€ð
9ð 9ð 9ð 9ð 9�[ñ 9ô 9ð 9ðxð ð ð ð �kñ ô ð ð0 ØØØ	ØCGØðcð cð
 �5˜˜e Y°°S¸#°X´Ð>Ô?Ô
@ðcð cð cð cðL=ð =ð =ð =ð =r#   