
    Pi                        d dl mZ d dlmZ d dlmZ d dlmZ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mZmZmZ d d
lmZmZ erd dlZddgZe	e ef         Z! G d de          Z" G d de          Z#dS )    )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                  2    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
S )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HN)__name__
__module____qualname____doc__AddTripleOrQuadDeleteTripleOrQuad	AddPrefixDeletePrefixTransactionStartTransactionCommitTransactionAbortHeader     p/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/rdflib/plugins/parsers/patch.pyr   r      sF          OILFFFr-   c                  `    e Zd Z	 	 dddZdddZ	 dddZd Zd Zd dZd!dZ		 dd"dZ
d ZdS )#r   NFinputsourcer   sinkr   bnode_contextOptional[_BNodeContextType]	skolemizeboolkwargsr   returnc                "   |j         j        s
J d            t          |j                   | _        || _        |                                }|s,|                                } t          d          |          }t          |d          st          d          || _
        d| _        	 |                                 x| _        }| j        n?	 |                     |           n'# t          $ r}t          d	|d
|          d}~ww xY wb| j        S )aF  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. TNzInvalid line (z):
)r9   context_awarer   r1   r4   getCharacterStreamgetByteStreamr   hasattr
ParseErrorfilebufferreadlineline
parsepatch)	selfr0   r1   r2   r4   r6   source_RDFPatchParser__linemsgs	            r.   parsezRDFPatchParser.parse1   sB     z' 	
 	
D	
 	
' %4:666	"//11 	0 ..00F'Yw''//Fvv&& 	JHIII		K!%0DIy K.... K K K jSSS&&!IJJJK	K ys   C" "
D,DDNonec                   |                      t                     | j        r| j                            d          rd S |                                 }|                      t                     |t
          j        t
          j        fv r|                     ||           d S |t
          j	        k    r| 
                                 d S |t
          j        k    r|                                  d S d S )N#)eatr   rD   
startswith	operationr   r$   r%   add_or_remove_triple_or_quadr&   
add_prefixr'   delete_prefix)rF   r2   rP   s      r.   rE   zRDFPatchParser.parsepatch\   s     	 	di22377 	F NN$$	2I4PQQQ--iGGGGG)---OO)000      10r-   c                b   |                      t                     | j        r| j                            d          rd S |                                 p|                     |          }|                      t                     |                                 }|                      t                     |                                 p|                     |          }|                      t                     |                                 p(|                                 p| 	                    |          }|                      t                     | j        rt          d          |t          j        k    rX|r2| j                            |                              |||f           d S | j        j                            |||f           d S |t          j        k    rX|r2| j                            |                              |||f           d S | j        j                            |||f           d S d S )NrM   zTrailing garbage)rN   r   rD   rO   labeled_bnodesubject	predicateobjecturirefnodeidr   r@   r   r$   r1   get_contextadddefault_contextr%   remove)rF   rP   r2   rV   rW   objcontexts          r.   rQ   z+RDFPatchParser.add_or_remove_triple_or_quadn   s    		 	di22377 	F$$&&E$,,}*E*ENN$$	  ""@dkk-&@&@$$&&U$++--U4;;};U;U9 	1/000 	111 I	%%g..22GY3LMMMMM	)--w	3.GHHHHH)666 L	%%g..55w	36OPPPPP	)00'9c1JKKKKK	 76r-   c                    | j                             dd                              dd                              d          \  }}}|                    d          }| j                            ||           d S )N"r;   ' z<>)rD   replacesplitstripr1   bind)rF   prefixns_ns_strippeds        r.   rR   zRDFPatchParser.add_prefix   sh    	))#r22::3CCII#NNAhhtnn	v{+++++r-   c                    | j                             dd                              dd                              d          \  }}}| j        j                            |d d           d S )Nrb   r;   rc   rd   T)re   )rD   re   rf   r1   namespace_managerrh   )rF   ri   rk   s      r.   rS   zRDFPatchParser.delete_prefix   sc    y((b1199#rBBHHMM1	#((t(DDDDDr-   r   c           	        t           D ]?}| j                            |j                  r|                     |j                   |c S @t          d| j         dd                    d t           D                                  )Nz(Invalid or no Operation found in line: "z". Valid Operations codes are z, c                    g | ]	}|j         
S r,   )value).0ops     r.   
<listcomp>z,RDFPatchParser.operation.<locals>.<listcomp>   s    #A#A#ABH#A#A#Ar-   )r   rD   rO   rq   eat_op
ValueErrorjoinrF   rs   s     r.   rP   zRDFPatchParser.operation   s     	 	By##BH-- BH%%%			 Ety E E#A#Ay#A#A#ABBE E
 
 	
r-   rs   strc                D    | j                             |          | _         d S N)rD   lstriprx   s     r.   ru   zRDFPatchParser.eat_op   s    I$$R((			r-   'Union[te.Literal[False], BNode, URIRef]c                    |                      d          r:t          |                     t                                        d                    S dS )Nrk      F)peekr   rN   r   group)rF   r2   s     r.   rZ   zRDFPatchParser.nodeid   sC     99S>> 	6(++11!44555ur-   c                    |                      d          rc|                     t                                        d          }t	          j        |                              d          }t          |          S dS )Nz<_r   F)r   rN   r   r   r   matchr   )rF   	plain_uribnode_ids      r.   rU   zRDFPatchParser.labeled_bnode   sa    99T?? 	#**0033I~i0066q99H??"ur-   )NF)r0   r   r1   r   r2   r3   r4   r5   r6   r   r7   r   r{   )r2   r3   r7   rK   )r7   r   )rs   ry   r7   rK   )r2   r3   r7   r}   )r    r!   r"   rJ   rE   rQ   rR   rS   rP   ru   rZ   rU   r,   r-   r.   r   r   0   s        
 6:) ) ) ) )V! ! ! ! !& GK L  L  L  L  LD, , ,E E E
 
 
 
) ) ) ) <@        r-   )$
__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__ry   _BNodeContextTyper   r   r,   r-   r.   <module>r      s   " " " " " "             F F F F F F F F F F F F F F 7 7 7 7 7 7             % % % % % % 6 6 6 6 6 6 Q P P P P P P P P P P P % % % % % % % % #""""[
)"3:.        0C C C C C\ C C C C Cr-   