
    01i;                        S r SSKJr  SSKrSSKrSSKJr  SSKJrJ	r	J
r
JrJrJrJr  SSKJrJrJr  SSKJrJr  SSKJrJrJr   SSKrS	r\(       a  SSKJr  S/r " S S\5      rg! \ a    SrS
r N(f = f)z
This is a rdflib plugin for parsing Hextuple files, which are Newline-Delimited JSON
(ndjson) files, into Conjunctive. The store that backs the graph *must* be able to
handle contexts, i.e. multiple graphs.
    )annotationsN)TextIOWrapper)TYPE_CHECKINGAnyBinaryIOListOptionalTextIOUnion)ConjunctiveGraphDatasetGraph)InputSourceParser)BNodeLiteralURIRefTF)BufferedReaderHextuplesParserc                  P   ^  \ rS rSrSrU 4S jr      SS jrSS	S jjrSrU =r	$ )
r       z 
An RDFLib parser for Hextuples
c                F   > [         [        U ]  5         S U l        SU l        g )NF)superr   __init__default_context	skolemize)self	__class__s    U/home/james-whalen/.local/lib/python3.13/site-packages/rdflib/plugins/parsers/hext.pyr   HextuplesParser.__init__%   s    ot-/04    c                   US   b  US   b  US   b  US   c  [        SU 35      eUS   R                  S5      (       a>  [        US   R                  SS5      S	9nU R                  (       a  UR	                  5       nO[        US   5      n[        US   5      nUS   S
:X  a  [        US   5      nOwUS   S:X  a>  [        US   R                  SS5      S	9nU R                  (       a  UR	                  5       nO0US   c  [        US   [        US   5      S9nO[        US   US   S9nUS   b  US   R                  S5      (       a  [        US   R                  SS5      5      O[        US   5      n[        U[        5      (       a!  U R                  (       a  UR	                  5       nUR                  U5      R                  X4U45        g U R                  b  U R                  R                  X4U45        g [        S5      e)Nr            z;subject, predicate, value, datatype cannot be None. Given: _z_: )valueglobalIdlocalId   )datatype)lang   zNo context to parse into!)
ValueError
startswithr   replacer   r   r   
isinstanceget_contextaddr   	Exception)r   dstupspocs          r   _parse_hextupleHextuplesParser._parse_hextuple*   s    q6>SV^s1v~QMcUS  q6S!!CFNN445A~~KKMs1vA 3q6N q6Zs1vAVy CFNN445A~~KKM1v~CFVCF^<CFQ0 q6 q6$$T** c!fnnT2./CF^ 
 !U##KKMNN1!!1),!!-  $$aAY/788r!   c                v   UR                  S5      S;  a)  [        R                  " SUR                  S5       S35        UR                  R                  (       d   S5       eX0l        [        UR                  SS9nUR                  n[        U[        [        45      (       a  UR                  U l        OUUR                  bB  UR                  UR                  :X  a  X l        O'UR                  UR                  5      U l        OX`l        U R                  ULa"  U R                  Ul        UR                  U5         UR                  5       n UR!                  5       nUc  Uc  [#        S[%        U5       35      e[&        (       a  Uc  Uc   e[(        (       a;  Ub  Un	O$[&        (       a  [        U[*        5      (       d   eUn	[,        R.                  n
OBUb  Un	O,[&        (       a  [        U[0        5      (       d   e[+        US	S
9n	[2        R.                  n
U	 Hi  n[5        U5      S:X  d  UR7                  5       (       a  M)  U
" U5      nU Vs/ s H  oS:w  a  UOS PM     nnUS   S:X  a  SUS'   U R9                  X^5        Mk     g ! [        [        4 a    S n GNNf = f! [        [        4 a    S n GNVf = fs  snf )Nencoding)Nutf-8z8Hextuples files are always utf-8 encoded, I was passed: z", but I'm still going to use utf-8z-Hextuples Parser needs a context-aware store!T)storedefault_unionzLSource does not have a character stream or a byte stream and cannot be used r@   )r?   r   r'   r$   )getwarningswarnrA   context_awarer   r   r   r2   r   
identifierr3   remove_graphgetCharacterStreamAttributeErrorLookupErrorgetByteStreamr/   typer   _HAS_ORJSONr   orjsonloadsr   jsonlenisspacer<   )r   sourcegraphr   kwargsr6   
ds_defaulttext_streambinary_stream
use_streamrP   lineraw_linexhex_tuple_lines                  r   parseHextuplesParser.parse`   s   ::j!8MM!!'J!7 8 933 KK%%	;:	;% #5;;d;''
eg'7899#(#8#8D ):#8#88',$')~~e6F6F'G$ $. z1!%!5!5BOOJ'	,2,E,E,GK	!060D0D0FM =#8^_cdj_k^lm  =*m.GGG;(*
 =%k=AAAA(
LLE&(
 =%m^DDDD*=7K
JJED4yA~  #(+H>FGh7a4hNG{b $&q!  4 ? , 	K	 , 	! M	!J Hs*   ;J J J6JJJ32J3)r   r   )r6   z Union[Dataset, ConjunctiveGraph]r7   zList[Union[str, None]]returnNone)F)
rT   r   rU   r   r   boolrV   r   ra   rb   )
__name__
__module____qualname____firstlineno____doc__r   r<   r_   __static_attributes____classcell__)r   s   @r   r   r       s7    
392399O39	39lL5 L5r!   ) rh   
__future__r   rQ   rD   ior   typingr   r   r   r   r	   r
   r   rdflib.graphr   r   r   rdflib.parserr   r   rdflib.termr   r   r   rO   rN   ImportErrorr   __all__r    r!   r   <module>rt      sv    #    N N N 9 9 - . .K
 !
L5f L5  FKs   A( (
A54A5