
    01iX1                       S r SSKJr  SSKrSSKrSSKJrJrJr  SSK	J
r
JrJrJrJrJrJrJrJr  SSKJrJr  SSKJr  SSKJrJr  SS	KJr  SS
KJrJ r   SSKJ r!  \(       a  SSK"r#SSK$J%r%J&r&J'r'J(r(  / SQr)Sr*Sr+S\*-   S-   r,\RZ                  " S5      r.\RZ                  " S5      r/\RZ                  " S5      r0\RZ                  " S5      r1\RZ                  " \*5      r2\RZ                  " S5      r3\RZ                  " \+\,-   5      r4Sr5Sr6 " S S5      r7\RZ                  " S5      r8\RZ                  " S5      r9\RZ                  " S5      r:S'S jr;\RZ                  " S5      r<S(S  jr=\\>\4   r? " S! S"5      r@ " S# S$5      rA " S% S&\5      rBg))zX
N-Triples Parser
License: GPL 2, W3C, BSD, or MIT
Author: Sean B. Palmer, inamidst.com
    )annotationsN)BytesIOStringIO
TextIOBase)	IOTYPE_CHECKINGAnyMatchMutableMappingOptionalPatternTextIOUnion)_string_escape_mapdecodeUnicodeEscape)ParserError)InputSourceParser)BNode)LiteralURIRef)r   )Graph_ObjectType_PredicateType_SubjectType)unquoteuriquoteW3CNTriplesParserNTGraphSinkNTParser	DummySinkz<([^:]+:[^\s"<>]*)>z"([^"\\]*(?:\\.[^"\\]*)*)"z&(?:@([a-zA-Z]+(?:-[a-zA-Z0-9]+)*)|\^\^z)?z([^\r\n]*)(?:\r\n|\r|\n)z[ \t]*z[ \t]+z[ \t]*\.[ \t]*(#.*)?z3_:([A-Za-z0-9_:]([-A-Za-z0-9_:\.]*[-A-Za-z0-9_:])?)i   Fc                       \ rS rSrS rS rSrg)r!   =   c                    SU l         g )Nr   length)selfs    Y/home/james-whalen/.local/lib/python3.13/site-packages/rdflib/plugins/parsers/ntriples.py__init__DummySink.__init__>   s	        c                F    U =R                   S-  sl         [        XU5        g )N   )r&   printr'   spos       r(   tripleDummySink.tripleA   s    qaAr+   r%   N)__name__
__module____qualname____firstlineno__r)   r3   __static_attributes__ r+   r(   r!   r!   =   s    r+   r!   z([\x20\x21\x23-\x5B\x5D-\x7E]+)z\\([tbnrf"'\\])z'\\u([0-9A-Fa-f]{4})|\\U([0-9A-Fa-f]{8})c                x   [         (       d5  [        U [        5      (       a  [        U 5      n U $ U R	                  S5      n U $ / nU (       Ga`  [
        R                  U 5      nU(       a4  XR                  5       S n UR                  UR                  S5      5        MX  [        R                  U 5      nU(       a.  U SS n UR                  [        UR                  S5         5        M  [        R                  U 5      nU(       ah  XR                  5       S n UR                  5       u  p4[        U=(       d    US5      nUS:  a  [        SU-  5      eUR                  [!        U5      5        O8U R#                  S5      (       a  [        S	U SS
 -  5      e[        SU S   -  5      eU (       a  GM`  SR%                  U5      $ )zUnquote an N-Triples string.zunicode-escapeNr-         i zDisallowed codepoint: %08X\zIllegal escape at: %s...
   zIllegal literal character: %rr    )validate
isinstancestrr   decoder_safematchendappendgroupr_quotr   	r_uniquotgroupsint
ParseErrorchr
startswithjoin)r0   resultmuU	codepoints         r(   r   r   K   sh   8a#A&A  )*AQAeegiLaggaj)QAabE0<="AeegiLxxzQO	x'$%AI%MNNc)n-d## !;af!DEE !@1Q4!GHH1 a2 wwvr+   z([\x80-\xFF])c                J    [         (       d  U $ [        R                  S U 5      $ )Nc                <    S[        U R                  S5      5      -  $ )Nz%%%02Xr-   )ordrI   )rS   s    r(   <lambda>uriquote.<locals>.<lambda>y   s    hQWWQZ&@r+   )rA   r_hibytesub)uris    r(   r   r   u   s    8
||@#FFr+   c                      \ rS rSrSrSr  S   SS jjr  S       SS jjrSS jrSS jr	SSS	 jjr
SS
 jrSS jrSSS jjrSS jr S   SS jjrSS jr S   S S jjrS!S jrSrg)"r      a  An N-Triples Parser.

This is a legacy-style Triples parser for NTriples provided by W3C

Example:
    ```python
    p = W3CNTriplesParser(sink=MySink())
    sink = p.parse(f) # file; use parsestring for a string
    ```

To define a context in which blank node identifiers refer to the same blank node
across instances of NTriplesParser, pass the same dict as `bnode_context` to each
instance. By default, a new blank node context is created for each instance of
`W3CNTriplesParser`.
)
_bnode_idssinkbufferfileline	skolemizeNc                    SU l         Ub  X l        O0 U l        U   Ub  Xl        O[        5       U l        S U l        S U l        SU l        g )NFr@   )rf   ra   rb   r!   rc   rd   re   )r'   rb   bnode_contexts      r(   r)   W3CNTriplesParser.__init__   sI    
 $+O DOI!DI%)BF	#%	r+   c                   [        US5      (       d  [        S5      e[        US5      (       d-  [        US5      (       d  [        R                  " S5      " U5      nX0l        Xl        SU l         U R                  5       U l        U R                  c   U R                  $  U R                  US9  MA  ! [         a%    [        SR                  U R                  5      5      ef = f)	a  Parse f as an N-Triples file.

Args:
    f: The N-Triples source
    bnode_context: A dict mapping blank node identifiers (e.g., `a` in `_:a`)
        to [`BNode`][rdflib.term.BNode] instances. An empty dict can be
        passed in to define a distinct context for a given call to
        `parse`.
    skolemize: Whether to skolemize blank nodes

Returns:
    The sink containing the parsed triples
readz)Item to parse must be a file-like object.encoding
charbufferutf-8r@   )rh   zInvalid line: {})hasattrrN   codecs	getreaderrf   rd   rc   readlinere   	parselineformatrb   )r'   frh   rf   s       r(   parseW3CNTriplesParser.parse   s    ( q&!!HIIq*%%ga.F.F  )!,A"	DIyy 
 yy	G];   G !3!:!:499!EFFGs   B0 0/Cc                   [        U[        [        [        45      (       d  [	        S5      e[        U[        [        45      (       a&  [
        R                  " S5      " [        U5      5      nO[        U5      nU R                  " U40 UD6  g)zParse s as an N-Triples string.z(Item to parse must be a string instance.rn   N)
rB   rC   bytes	bytearrayrN   rp   rq   r   r   rv   )r'   r0   kwargsru   s       r(   parsestringW3CNTriplesParser.parsestring   sg    !c5)455GHHa%+,,  )'!*5AA

1r+   c                   U R                   (       d-  U R                  R                  [        5      nU(       d  gXl          [        R                  U R                   5      nU(       a3  U R                   UR                  5       S U l         UR                  S5      $ U R                  R                  [        5      nU(       d%  U R                   R                  5       (       d  US-  nOU(       d  gU =R                   U-  sl         M  )z+Read an N-Triples line from buffered input.Nr-   
)	rc   rd   rk   bufsizr_linerF   rG   rI   isspace)r'   rc   rS   s      r(   rr   W3CNTriplesParser.readline   s     {{YY^^F+F KT[[)A"kk!%%')4wwqz! /dkk&9&9&;&;dNFv% r+   c                   U R                  [        5        U R                  (       a   U R                  R                  S5      (       a  g U R	                  U5      nU R                  [
        5        U R                  5       nU R                  [
        5        U R                  U5      nU R                  [        5        U R                  (       a$  [        SR                  U R                  5      5      eU R                  R                  X#U5        g )N#zTrailing garbage: {})eatr_wspacere   rP   subject	r_wspaces	predicateobjectr_tailrN   rt   rb   r3   )r'   rh   r   r   object_s        r(   rs   W3CNTriplesParser.parseline   s    		dii22377,,}-NN$	++m,993::499EFF		W5r+   c                8    U R                   R                  U5      $ N)re   rP   )r'   tokens     r(   peekW3CNTriplesParser.peek  s    yy##E**r+   c                    UR                  U R                  5      nU(       d'  [        SUR                  < SU R                  < 35      eU R                  UR	                  5       S  U l        U$ )NzFailed to eat z at )rF   re   rN   patternrG   )r'   r   rS   s      r(   r   W3CNTriplesParser.eat
  sN    MM$))$ $))TUUIIaeegi(	r+   c                z    U R                  5       =(       d    U R                  U5      nU(       d  [        S5      eU$ )Nz Subject must be uriref or nodeID)urirefnodeidrN   )r'   rh   subjs      r(   r   W3CNTriplesParser.subject  s/    {{}:M :?@@r+   c                J    U R                  5       nU(       d  [        S5      eU$ )NzPredicate must be uriref)r   rN   )r'   preds     r(   r   W3CNTriplesParser.predicate  s!    {{}788r+   c                    U R                  5       =(       d(    U R                  U5      =(       d    U R                  5       nUSL a  [        S5      eU$ )NFzUnrecognised object type)r   r   literalrN   )r'   rh   objts      r(   r   W3CNTriplesParser.object   s@     {{}LM :Ldlln5=788r+   c                    U R                  S5      (       aE  U R                  [        5      R                  S5      n[	        U5      n[        U5      n[        U5      $ g)N<r-   F)r   r   r_urirefrI   r   r   URI)r'   r^   s     r(   r   W3CNTriplesParser.uriref(  sF    99S>>((8$**1-C#,C3-Cs8Or+   c                   U R                  S5      (       a  U R                  (       a=  U R                  [        5      R	                  S5      n[        U5      R                  5       $ Uc  U R                  nU R                  [        5      R	                  S5      nUR                  US 5      nUb  [        U5      $ [        5       nXAU'   U$ g)N_r-   F)r   rf   r   r_nodeidrI   bNodera   get)r'   rh   bnode_idnew_idbnodes        r(   r   W3CNTriplesParser.nodeid0  s     99S>>~~88H-33A6X0022 !($(OOM88H-33A6&**8T:% =( "GE.3(+ Lr+   c                J   U R                  S5      (       a  U R                  [        5      R                  5       u  pnU(       a  UnOS nU(       a"  [	        U5      n[        U5      n[        U5      nOS nU(       a  U(       a  [        S5      e[	        U5      n[        XU5      $ g)N"z)Can't have both a language and a datatypeF)	r   r   	r_literalrL   r   r   r   rN   r   )r'   litlangdtypes       r(   r   W3CNTriplesParser.literalI  s    99S>>#xx	299;Cu E
 !LMM#,C3e,,r+   )ra   rc   rd   re   rb   rf   )NN)rb   z'Optional[Union[DummySink, NTGraphSink]]rh   Optional[_BNodeContextType])NF)ru   z-Union[TextIO, IO[bytes], codecs.StreamReader]rh   r   rf   boolreturnzUnion[DummySink, NTGraphSink])r0   zUnion[bytes, bytearray, str]r   None)r   zOptional[str]r   )rh   r   r   r   )r   rC   r   r   )r   zPattern[str]r   z
Match[str])r   zUnion[bNode, URIRef])rh   r   r   zUnion[URI, bNode, Literal])r   zUnion[te.Literal[False], URI])rh   r   r   z$Union[te.Literal[False], bNode, URI])r   z!Union[te.Literal[False], Literal])r5   r6   r7   r8   __doc__	__slots__r)   rv   r|   rr   rs   r   r   r   r   r   r   r   r   r9   r:   r+   r(   r   r      s      NI 9=59&5& 3&2 6:	&8& 3& 	&
 
'&P	 &46$+ <@8	# <@8	-2r+   r   c                  ,    \ rS rSrSrSS jrSS jrSrg)r   i]  gc                    Xl         g r   r   )r'   graphs     r(   r)   NTGraphSink.__init__`  s    r+   c                >    U R                   R                  XU45        g r   )r   addr/   s       r(   r3   NTGraphSink.triplec  s    

A!9r+   N)r   r   )r0   r   r1   r   r2   r   r   r   )r5   r6   r7   r8   r   r)   r3   r9   r:   r+   r(   r   r   ]  s    Ir+   r   c                  0    \ rS rSrSrSr\SS j5       rSrg)r    ig  zxParser for the N-Triples format, often stored with the .nt extension.

See http://www.w3.org/TR/rdf-testcases/#ntriples
r:   c                (   UR                  5       nU(       dD  UR                  5       n[        U[        5      (       a  UnO[        R
                  " S5      " U5      n[        [        U5      5      nUR                  " U40 UD6  UR                  5         g)zParse the NT format.

Args:
    source: The source of NT-formatted data
    sink: Where to send parsed triples
    **kwargs: Additional arguments to pass to `W3CNTriplesParser.parse`
rn   N)
getCharacterStreamgetByteStreamrB   r   rp   rq   r   r   rv   close)clssourcerb   r{   ru   bparsers          r(   rv   NTParser.parseo  su     %%'$$&A!Z(( $$W-a0";t#45Q!&!		r+   N)r   r   rb   r   r{   r	   r   r   )	r5   r6   r7   r8   r   r   classmethodrv   r9   r:   r+   r(   r    r    g  s     
 I r+   r    )r0   rC   r   rC   )r^   rC   r   rC   )Cr   
__future__r   rp   reior   r   r   typingr   r   r	   r
   r   r   r   r   r   rdflib.compatr   r   rdflib.exceptionsr   rN   rdflib.parserr   r   rdflib.termr   r   r   r   r   typing_extensionsterdflib.graphr   r   r   r   __all__r   r   litinfocompiler   r   r   r   r   r   r   r   rA   r!   rE   rJ   rK   r   r\   r   rC   _BNodeContextTyper   r   r    r:   r+   r(   <module>r      sk   #  	 , ,
 
 
 B 7 - & ' %"MM 
 
'
3f
<u
D	/	0::i JJy!		+	,::f::LMJJw()		  
6	7	*	+JJAB	$N ::&'G #3:. [ [| v r+   