
    01i                        S SK Jr  S SKJr  S SKJr  S SKJrJrJ	r	J
r
Jr  S SKJr  S SKJr  S SKJr  S SKJr  S S	KJrJrJrJr  S S
KJrJr  \(       a  S SKrSS/r\	\ \4   r! " S S\5      r" " S S\5      r#g)    )annotations)	getreader)Enum)TYPE_CHECKINGAnyMutableMappingOptionalUnion)ParserError)Dataset)InputSource)NQuadsParser)r_nodeidr_tailr_urirefr_wspace)BNodeURIRefNRDFPatchParser	Operationc                  8    \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrg)r      a  Enum of RDF Patch operations.

Operations:
- `AddTripleOrQuad` (A): Adds a triple or quad.
- `DeleteTripleOrQuad` (D): Deletes a triple or quad.
- `AddPrefix` (PA): Adds a prefix.
- `DeletePrefix` (PD): Deletes a prefix.
- `TransactionStart` (TX): Starts a transaction.
- `TransactionCommit` (TC): Commits a transaction.
- `TransactionAbort` (TA): Aborts a transaction.
- `Header` (H): Specifies a header.
ADPAPDTXTCTAH N)__name__
__module____qualname____firstlineno____doc__AddTripleOrQuadDeleteTripleOrQuad	AddPrefixDeletePrefixTransactionStartTransactionCommitTransactionAbortHeader__static_attributes__r!       V/home/james-whalen/.local/lib/python3.13/site-packages/rdflib/plugins/parsers/patch.pyr   r      s5     OILFr0   c                      \ rS rSr  S           SS jjrSSS jjr S   SS jjrS rS rSS jr	SS	 jr
 S   SS
 jjrS rSrg)r   0   Nc                   UR                   R                  (       d   S5       e[        UR                   S9U l        X@l        UR                  5       nU(       d!  UR                  5       n[        S5      " U5      n[        US5      (       d  [        S5      eX`l
        SU l         U R                  5       =U l        nU R                  c   U R                  $  U R                  U5        ME  ! [         a  n[        SU< S	U< 35      eSnAff = f)
a  Parse inputsource as an RDF Patch file.

Args:
    inputsource: the source of RDF Patch formatted data
    sink: where to send parsed data
    bnode_context: a dict mapping blank node identifiers to [`BNode`][rdflib.term.BNode]
        instances. See `.W3CNTriplesParser.parse`
z3RDFPatchParser must be given a context aware store.)storezutf-8readz)Item to parse must be a file-like object. NzInvalid line (z):
)r5   context_awarer   sink	skolemizegetCharacterStreamgetByteStreamr   hasattr
ParseErrorfilebufferreadlineline
parsepatch)	selfinputsourcer9   bnode_contextr:   kwargssource_RDFPatchParser__linemsgs	            r1   parseRDFPatchParser.parse1   s      zz'' 	
D	
' %4::6	"//1 ..0Fw'/Fvv&&HII	!%0DIyy 
 yy	K.   K S&!IJJKs   C( (
D
2DD
c                   U R                  [        5        U R                  (       a   U R                  R                  S5      (       a  g U R	                  5       nU R                  [        5        U[
        R                  [
        R                  4;   a  U R                  X!5        g U[
        R                  :X  a  U R                  5         g U[
        R                  :X  a  U R                  5         g g )N#)eatr   rB   
startswith	operationr   r'   r(   add_or_remove_triple_or_quadr)   
add_prefixr*   delete_prefix)rD   rF   rQ   s      r1   rC   RDFPatchParser.parsepatch\   s     		dii22377 NN$	22I4P4PQQ--iG)---OO)000  1r0   c                p   U R                  [        5        U R                  (       a   U R                  R                  S5      (       a  g U R	                  5       =(       d    U R                  U5      nU R                  [        5        U R                  5       nU R                  [        5        U R	                  5       =(       d    U R                  U5      nU R                  [        5        U R	                  5       =(       d(    U R                  5       =(       d    U R                  U5      nU R                  [        5        U R                  (       a  [        S5      eU[        R                  :X  a\  U(       a-  U R                  R                  U5      R!                  X4U45        g U R                  R"                  R!                  X4U45        g U[        R$                  :X  a\  U(       a-  U R                  R                  U5      R'                  X4U45        g U R                  R"                  R'                  X4U45        g g )NrN   zTrailing garbage)rO   r   rB   rP   labeled_bnodesubject	predicateobjecturirefnodeidr   r>   r   r'   r9   get_contextadddefault_contextr(   remove)rD   rQ   rF   rX   rY   objcontexts          r1   rR   +RDFPatchParser.add_or_remove_triple_or_quadn   s    			dii22377$$&E$,,}*ENN$	  "@dkk-&@$$&U$++-U4;;};U99/00 	111		%%g.22G3LM		))--w3.GH)666		%%g.55w36OP		))00'c1JK	 7r0   c                    U R                   R                  SS5      R                  SS5      R                  S5      u  pnUR                  S5      nU R                  R                  X5        g )N"r7   ' z<>)rB   replacesplitstripr9   bind)rD   prefixns_ns_strippeds        r1   rS   RDFPatchParser.add_prefix   sQ    		))#r2::3CII#NAhhtn		v+r0   c                    U R                   R                  SS5      R                  SS5      R                  S5      u  n  nU R                  R                  R                  US SS9  g )Nre   r7   rf   rg   T)rh   )rB   rh   ri   r9   namespace_managerrk   )rD   rl   rn   s      r1   rT   RDFPatchParser.delete_prefix   sU    yy((b199#rBHHM1		##((t(Dr0   c                H   [          HL  nU R                  R                  UR                  5      (       d  M/  U R	                  UR                  5        Us  $    [        SU R                   SSR                  [          Vs/ s H  oR                  PM     sn5       35      es  snf )Nz(Invalid or no Operation found in line: "z". Valid Operations codes are z, )r   rB   rP   valueeat_op
ValueErrorjoinrD   ops     r1   rQ   RDFPatchParser.operation   s    Byy##BHH--BHH%	  6tyyk By#AyHHy#ABCE
 	
#As   =Bc                D    U R                   R                  U5      U l         g N)rB   lstripry   s     r1   rv   RDFPatchParser.eat_op   s    II$$R(	r0   c                    U R                  S5      (       a-  [        U R                  [        5      R	                  S5      5      $ g)Nrn      F)peekr   rO   r   group)rD   rF   s     r1   r\   RDFPatchParser.nodeid   s3     99S>>(+11!455r0   c                    U R                  S5      (       aT  U R                  [        5      R                  S5      n[        R
                  " U5      R                  S5      n[        U5      $ g)Nz<_r   F)r   rO   r   r   r   matchr   )rD   	plain_uribnode_ids      r1   rW   RDFPatchParser.labeled_bnode   sN    99T??*003I~~i066q9H?"r0   )r@   r?   rB   r9   r:   )NF)rE   r   r9   r   rF   Optional[_BNodeContextType]r:   boolrG   r   returnr   r}   )rF   r   r   None)r   r   )rz   strr   r   )rF   r   r   z'Union[te.Literal[False], BNode, URIRef])r"   r#   r$   r%   rK   rC   rR   rS   rT   rQ   rv   r\   rW   r/   r!   r0   r1   r   r   0   s    
 6:) ) ) 3	)
 ) ) 
)V!& GK L(C L	 LD,E
) <@8	0r0   )$
__future__r   codecsr   enumr   typingr   r   r   r	   r
   rdflib.exceptionsr   r>   rdflib.graphr   rdflib.parserr   rdflib.plugins.parsers.nquadsr   rdflib.plugins.parsers.ntriplesr   r   r   r   rdflib.termr   r   typing_extensionste__all__r   _BNodeContextTyper   r   r!   r0   r1   <module>r      se    "   F F 7   % 6 Q P %"[
)"3:.  0C\ Cr0   