
    01iZ                     b    S r SSKrSSKJr  SSKJr  SrSr " S S\5      r	S r
 " S	 S
\5      rg)ab  
This wrapper intercepts calls through the store interface which make use of
the REGEXTerm class to represent matches by REGEX instead of literal
comparison.

Implemented for stores that don't support this and essentially
provides the support by replacing the REGEXTerms by wildcards (None) and
matching against the results from the store it's wrapping.
    N)Graph)Store   c                   $    \ rS rSrSrS rS rSrg)	REGEXTerm   z
REGEXTerm can be used in any term slot and is interpreted as a request to
perform a REGEX match (not a string comparison) using the value
(pre-compiled) for checking rdf:type matches
c                 :    [         R                  " U5      U l        g N)recompilecompiledExpr)selfexprs     ]/home/james-whalen/.local/lib/python3.13/site-packages/rdflib/plugins/stores/regexmatching.py__init__REGEXTerm.__init__   s    JJt,    c                     [         S4$ )N) )r   r   s    r   
__reduce__REGEXTerm.__reduce__    s    5!!r   )r   N)__name__
__module____qualname____firstlineno____doc__r   r   __static_attributes__ r   r   r   r      s    -"r   r   c                     [        S5       HC  n[        X   [        5      (       d  M  UU   R                  R	                  X   5      (       a  MC    g   g)N   FT)range
isinstancer   r   match)quad	regexQuadindexs      r   regexCompareQuadr(   $   sI    qi&	229<

,uuT[)<* 	 
 r   c                       \ rS rSrS rSS jrSS jrS rSS jrSS jr	SS	 jr
SS
 jrSS jrS rSS jrS rS rS rS rS rSrg)REGEXMatching-   c                 v    Xl         UR                  U l        UR                  U l        UR                  U l        g r
   )storagecontext_awareformula_awaretransaction_aware)r   r-   s     r   r   REGEXMatching.__init__.   s3    $22 %22!(!:!:r   c                 8    U R                   R                  X5      $ r
   )r-   open)r   configurationcreates      r   r3   REGEXMatching.open6   s    ||  77r   c                 8    U R                   R                  5         g r
   )r-   close)r   commit_pending_transactions     r   r8   REGEXMatching.close9   s    r   c                 :    U R                   R                  U5        g r
   )r-   destroy)r   r4   s     r   r<   REGEXMatching.destroy<   s    ]+r   c                 J    Uu  pEnU R                   R                  XEU4X#5        g r
   )r-   add)r   triplecontextquotedsubject	predicateobject_s          r   r?   REGEXMatching.add?   s%    (.%W'g6Hr   Nc           
         Uu  p4n[        U[        5      (       dN  [        U[        5      (       d9  [        U[        5      (       d$  UGb  [        UR                  [        5      (       Ga  [        U[        5      (       + =(       a    U=(       d    S n[        U[        5      (       + =(       a    U=(       d    S n[        U[        5      (       + =(       a    U=(       d    S nUS L=(       a    [        UR                  [        5      (       + =(       a    U=(       d    S n	/ n
U R                  R	                  XgU4U	5       Hg  u  u  ppU HY  nUR                  n[        XX4UUUUS L=(       a    UR                  =(       d    U45      (       d  MF  U
R                  XX45        M[     Mi     U
 H?  u  pgpU R                  R                  XgU4U	=(       a    [        X	5      =(       d    U	5        MA     g U R                  R                  X4U4U5        g r
   )	r#   r   
identifierr-   triplesr(   appendremover   )r   r@   rA   rC   rD   rE   spocremoveQuadLists1p1o1cgctxs                   r   rK   REGEXMatching.removeC   s   (.%Ww	**)Y//'9--#
73E3Ey(Q(Q w	22>wF$Ay)44BJdAw	22>wF$A$VZ8J8JI-V)V    N$(LL$8$8!A$F C..C')#%##4/FG4F4FQ'	  '--rr.?@  %G -
a##Q1Iq/CU4^/HqI - LLW =wGr   c              #   0  #    Uu  p4n[        U[        5      (       dN  [        U[        5      (       d9  [        U[        5      (       d$  UGb  [        UR                  [        5      (       Gax  [        U[        5      (       + =(       a    U=(       d    S n[        U[        5      (       + =(       a    U=(       d    S n[        U[        5      (       + =(       a    U=(       d    S nUS L=(       a    [        UR                  [        5      (       + =(       a    U=(       d    S n	U R                  R	                  XgU4U	5       H  u  u  pp/ nU Hc  nU	cL  Ub4  UR                  R
                  R                  UR                  5      (       a  UR                  U5        MP  MR  UR                  U5        Me     U(       d  M|  [        XUS 4X4US 45      (       d  M  XU4S U 5       4v   M     g U R                  R	                  X4U4U5       H  u  u  ppXU4U4v   M     g 7f)Nc              3   $   #    U  H  ov   M     g 7fr
   r   ).0rO   s     r   	<genexpr>(REGEXMatching.triples.<locals>.<genexpr>   s     (ALqLs   )	r#   r   rH   r-   rI   r   r$   rJ   r(   )r   r@   rA   rC   rD   rE   rL   rM   rN   rO   rQ   rR   rS   rT   matchingCtxsrU   s                   r   rI   REGEXMatching.triplesi   s    (.%Ww	**)Y//'9--#
73E3Ey(Q(Q w	22>wF$Ay)44BJdAw	22>wF$A$VZ8J8JI-V)V  
 %)LL$8$8!A$F !Cy"?g.@.@.M.M.S.SNN/ / )//4/
 %++C0   <$4R&Wd(K% % 2,(AL(AAA %G %)LL$8$8W-w%  rlB&&%s   F0H6HAHc                 8    U R                   R                  U5      $ r
   )r-   __len__)r   rA   s     r   r_   REGEXMatching.__len__   s     ||##G,,r   c              #   X   #    U R                   R                  U5       H  nUv   M	     g 7fr
   )r-   contexts)r   r@   rU   s      r   rb   REGEXMatching.contexts   s%      <<((0CI 1s   (*c                 <    U R                   R                  SU5        g )N)NNN)r-   rK   )r   rH   s     r   remove_contextREGEXMatching.remove_context   s    .
;r   c                 8    U R                   R                  XUS9  g )N)override)r-   bind)r   prefix	namespacerh   s       r   ri   REGEXMatching.bind   s    &h?r   c                 8    U R                   R                  U5      $ r
   )r-   rj   )r   rk   s     r   rj   REGEXMatching.prefix   s    ||""9--r   c                 8    U R                   R                  U5      $ r
   )r-   rk   )r   rj   s     r   rk   REGEXMatching.namespace   s    ||%%f--r   c                 6    U R                   R                  5       $ r
   )r-   
namespacesr   s    r   rr   REGEXMatching.namespaces   s    ||&&((r   c                 8    U R                   R                  5         g r
   )r-   commitr   s    r   ru   REGEXMatching.commit   s    r   c                 8    U R                   R                  5         g r
   )r-   rollbackr   s    r   rx   REGEXMatching.rollback   s    r   )r.   r/   r-   r0   )T)Fr
   )r   r   r   r   r   r3   r8   r<   r?   rK   rI   r_   rb   re   ri   rj   rk   rr   ru   rx   r   r   r   r   r*   r*   -   sW    ;8,I$HL$'L-
<@..) r   r*   )r   r   rdflib.graphr   rdflib.storer   NATIVE_REGEXPYTHON_REGEXstrr   r(   r*   r   r   r   <module>r      s@    
   " "A E A r   