
    iBZ                       d Z ddlmZ ddlmZ ddlmZmZmZm	Z	m
Z
mZmZmZmZmZ ddlmZmZ ddlmZ ddlmZmZmZ dd	lmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ dd
l0m1Z1m2Z2m3Z3 eee e"e$e%e&e*e+e,e-e#hZ4 G d de5      Z6 e6d      Z7dZ8eeee	e9ef   e9df      e	e9ef   e9df   Z: G d d      Z; edd      Z<e7e7e7e7de7ddfe<jz                  _>        y)zQ
Implementation of the JSON-LD Context structure. See:

    http://json-ld.org/

    )annotations)
namedtuple)
TYPE_CHECKINGAny
CollectionDict	GeneratorListOptionalSetTupleUnion)urljoinurlsplit)RDF   )INVALID_CONTEXT_ENTRYINVALID_REMOTE_CONTEXTRECURSIVE_CONTEXT_INCLUSION)BASE	CONTAINERCONTEXTGRAPHIDIMPORTINCLUDEDINDEXJSONLANGLISTNESTNONEPREFIX	PROPAGATE	PROTECTEDREVSETTYPEVALUEVERSIONVOCAB)norm_urlsource_to_json	split_iric                      e Zd Zy)DefinedN)__name__
__module____qualname__     SC:\Projects\mas-dev\.venv\Lib\site-packages\rdflib/plugins/shared/jsonld/context.pyr0   r0   >   s    r5   r0   ):/?#[]@Nc                     e Zd Z	 	 	 d0	 	 	 	 	 d1dZed2d       Zej                  d3d       Zd4d5dZd5dZd6dZ	d7dZ
d8d	Zd9d
Zd9dZd9dZd9dZd9dZd9dZd9dZd9dZd:dZd;dZd<dZ ed       Z ed       Z ed       Z ed       Z ed       Z ed       Z ed       Zeedededdf	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d=dZdeddf	 	 	 	 	 	 	 	 	 d>dZ d?dZ!d@d Z"dAd!Z#d4dBd"Z$d@d#Z%dCd$Z&	 	 dD	 	 	 	 	 dEd%Z'dFd&Z(	 dG	 	 	 	 	 	 	 	 	 dHd'Z)	 	 	 	 	 	 dId(Z*	 	 dD	 	 	 	 	 dJd)Z+	 dK	 	 	 	 	 	 	 	 	 dLd*Z,	 dG	 	 	 	 	 	 	 dMd+Z-dNd,Z.dOd-Z/dPd.Z0dQd/Z1y)RContextNc                    |xs d| _         d | _        d | _        |  || _        || _        i | _        i | _        i | _        i | _        d| _	        d | _
        d| _        i | _        |r| j                  |       y y )N皙?FT)versionlanguagevocabbasedoc_baseterms_alias_lookup	_prefixesactiveparent	propagate_context_cacheload)selfsourcerE   rB   s       r6   __init__zContext.__init__M   s{     &n$(
	%'
,.OQ)+)-.0IIf r5   c                    | j                   S N)_baserP   s    r6   rE   zContext.basee   s    zzr5   c                    |r|j                  d      }|dkD  r|d| }t        | d      r|| j                  |      n|| _        |rdt	        |      dd z  | _        y d | _        y )Nr:   r   rU   z%s://%s   )findhasattrresolve_irirU   r   _basedomain)rP   rE   
hash_indexs      r6   rE   zContext.basei   st    3JBAj) g&4+; T" 	

 ?C9x~a'::r5   c                ^    | j                   du r| j                  n| }|j                  ||      S NF)rM   rL   _subcontext)rP   rQ   rM   rL   s       r6   
subcontextzContext.subcontextv   s+     $% 7T!!&)44r5   c                L   t        | j                        }||_        | |_        | j                  |_        | j
                  |_        | j                  |_        | j                  |_        | j                  j                         D ci c]  \  }}||d d   c}}|_        | j                  j                         |_
        | j                  j                         |_        | j                  j                         |_        | j                  |_        |j                  |       |S c c}}w )N)rB   )r?   rB   rM   rL   rC   rD   rE   rF   rH   itemsrG   copyrI   rJ   rN   rO   )rP   rQ   rM   ctxkls         r6   ra   zContext._subcontext|   s    dll+!
}}JJ	99}}*.++*;*;*=>*=$!Qa1g*=>
JJOO%	ll'')++-!00
 ?s   D c                t    d | _         d | _        i | _        i | _        i | _        i | _        d| _        d| _        y )NFT)rC   rD   rG   rH   rI   rJ   rK   rM   rV   s    r6   _clearzContext._clear   s:    

r5   c                h    |r/|j                   t        ur| j                  |j                   d      S | S )NTrM   )contextUNDEFra   )rP   terms     r6   get_context_for_termzContext.get_context_for_term   s/    DLL-##DLLD#AAr5   c                   | j                   dk\  rt        |t              r| j                  |      nd }t        |t              s|r|gng }d }|D ]"  }	 | j
                  j                  |      }|" n |r-|j                  r!| j                  |j                  d      }|r|S | j                  du r| j                  S | S # t        $ r Y \w xY w)NrA   Frl   )rB   
isinstancedictget_typelistrG   get	TypeErrorrm   rb   rM   rL   )rP   nodertypetypetermrtrb   s         r6   get_context_for_typezContext.get_context_for_type   s    <<3+5dD+ADMM$'tEeT*#(bH#zz~~b1H '  H,,!__X-=-=_O
%%"nn5t{{?4? ! s   B>>	C
	C
c                .    | j                  |t              S rT   )_getr   rP   objs     r6   get_idzContext.get_id   s    yyb!!r5   c                .    | j                  |t              S rT   )r~   r(   r   s     r6   rt   zContext.get_type       yyd##r5   c                .    | j                  |t              S rT   )r~   r   r   s     r6   get_languagezContext.get_language   r   r5   c                .    | j                  |t              S rT   )r~   r)   r   s     r6   	get_valuezContext.get_value       yye$$r5   c                .    | j                  |t              S rT   )r~   r   r   s     r6   	get_graphzContext.get_graph   r   r5   c                .    | j                  |t              S rT   )r~   r    r   s     r6   get_listzContext.get_list   r   r5   c                .    | j                  |t              S rT   )r~   r'   r   s     r6   get_setzContext.get_set       yyc""r5   c                .    | j                  |t              S rT   )r~   r&   r   s     r6   get_revzContext.get_rev   r   r5   c                    | j                   j                  |g       D ]  }||v s|j                  |      c S  |j                  |      S rT   )rH   rv   )rP   r   keyaliass       r6   r~   zContext._get   s@    [[__S"-E|wwu~% . wws|r5   c                6    | j                  |      D ]  }|c S  y rT   )get_keysrP   r   r   s      r6   get_keyzContext.get_key   s    ]]3'EL (r5   c              #  `   K   || j                   v r| j                   |   D ]  }|  | y wrT   )rH   r   s      r6   r   zContext.get_keys   s/     $++S) *	s   ,.c                ,    | j                  t              S rT   )r   r   rV   s    r6   <lambda>zContext.<lambda>       T\\$%7r5   c                ,    | j                  t              S rT   )r   r   rV   s    r6   r   zContext.<lambda>   s    4<<#3r5   c                ,    | j                  t              S rT   )r   r(   rV   s    r6   r   zContext.<lambda>   r   r5   c                ,    | j                  t              S rT   )r   r)   rV   s    r6   r   zContext.<lambda>       dll5&9r5   c                ,    | j                  t              S rT   )r   r    rV   s    r6   r   zContext.<lambda>   r   r5   c                ,    | j                  t              S rT   )r   r&   rV   s    r6   r   zContext.<lambda>   s    DLL$5r5   c                ,    | j                  t              S rT   )r   r   rV   s    r6   r   zContext.<lambda>   r   r5   Fc                   | j                   dk  s|	't        |t              xr |j                  t              }	| j                  |      sy | j                   dk\  r*| j                  j                  |      }|r|j                  ry t        |t        t        t        f      rt        |      }n|t        urt        |g      }n
t               }t        |||||||||	|

      }|| j                  |<   t        t        t         fD ]  }||v s n t        }|| j"                  ||xs |||f<   |j$                  du r|| j&                  |<   y y )NrA   T)rB   rr   strendswithURI_GEN_DELIMS_accept_termrG   rv   	protectedru   settuplern   Termr    r   r'   rI   prefixrJ   )rP   nameidrefcoercion	containerindexrC   reverserm   r   r   existingro   container_keys                 r6   add_termzContext.add_term   s8    <<#s+N~0NF  &<<3zz~~d+HH..i$U!34IIe#YK(II
  

4 #D#.M	) / "MNReX1='JK;;$$(DNN5! r5   c                   | j                   }||}|t        ur|r|j                  ||||f      }|r|S |t        ur|j                  ||t        |f      }|r|S |r|j                  ||||f      }|rJ|S |r!|j                  |t        t        |f      }|r'|S |j                  ||xs t        t        |f      }|r|S |j                  |t        t        |f      S rT   )rI   rn   rv   r   r'   )rP   r   r   r   rC   r   lufounds           r6   	find_termzContext.find_term  s     \\H5 YFFE8Y@AE5 FFE8UG<=EFFE8Y@AEFFE5$89EFFE8#4uc7CDEvvueUG455r5   c                x    | j                  |d      }| j                  |      r|S d|v ry| j                  |      S )NF  )expandisblankr\   )rP   curie_or_iriiris      r6   resolvezContext.resolveC  s>    kk,.<<J#:$$r5   c                .    t        | j                  |      S rT   )r,   rU   )rP   r   s     r6   r\   zContext.resolve_iriO  s    

C((r5   c                $    |j                  d      S )Nz_:)
startswith)rP   refs     r6   r   zContext.isblankS  s    ~~d##r5   c                   t        |t              s|S | j                  |      sy|r)| j                  j	                  |      }|r|j
                  S | j                  |      \  }}}|dk(  r|S |D| j                  j	                  |      }|rG|j                  r;|j
                  r/|j
                  |z   S |r|r| j                  r| j                  |z   S y | j                  |      S )Nr   _)
rr   r   r   rG   rv   id_prep_expandr   rD   r\   )rP   term_curie_or_iri	use_vocabro   is_termpfxlocalnss           r6   r   zContext.expandV  s    +S1$$  !23::>>"34Dww"//0ABe#:$$?$BbiiBEEuuu}$zzzz$555 122r5   c                D   t        t        |            \  }}| j                  j                  |      }|rdj	                  ||f      S | j
                  rLt        |      | j
                  k(  ry|j                  | j                        r|t        | j                        d  S |S )Nr7   r   )	r.   r   rJ   rv   joinrU   r   r]   len)rP   r   r   r   r   s        r6   
shrink_irizContext.shrink_iriq  s    SX&Dnn  $88S$K((ZZ3x4::% 0 013t//0233
r5   c                    t        |      }| j                  |      }|r|j                  S t        |      \  }}|| j                  k(  r|S | j
                  j                  |      }|rdj                  ||f      S |S Nr7   )r   r   r   r.   rD   rJ   rv   r   )rP   r   ro   r   r   r   s         r6   	to_symbolzContext.to_symbol  ss    #h~~c"99S>DKnn  $88S$K((
r5   c                    d| _         g }t        |t              r|n|g}|xs
 t               }| j	                  ||||       |D ]+  \  }}|| j                          | j                  |||       - y )NT)rK   rr   ru   r   _prep_sourcesrj   _read_source)rP   rQ   rE   referenced_contextssources
source_urls         r6   rO   zContext.load  sx     PR &fd3&1:SU42EF")J~ !!&*6IJ #*r5   c                    | j                   dk  ry|r1t        |      dkD  r#|d   dk(  r|d   j                         r|t        v S y)NrA   Tr   r   r=   )rB   r   isalnum	NODE_KEYS)rP   r   s     r6   r   zContext._accept_term  sC    <<#3s8a<CFcMc!fnn6F)##r5   c                   |D ]  }|}|}t        |t              rB|}|xs | j                  }	| j                  ||	|      }
|
?|rt        r|	J t        |	|      }|
}t        |t              r&t        |v r|t           }t        |t              r|n|g}t        |t              r| j                  |||||       |j                  ||f        y rT   )rr   r   rF   _fetch_contextr   r   rs   r   ru   r   append)rP   rE   inputsr   r   in_source_urlrQ   r   new_basesource_doc_basenew_ctxs              r6   r   zContext._prep_sources  s     F&JH&#&#
"&"7$----O-@ ?( $3#>>#>#*?J#G$F&$'f$#G_F'1&$'?VfXF&$'""fg/BJ 
F34A r5   c                    t        ||      }||v rt        |j                  |       || j                  v r| j                  |   S t	        |      \  }}|rt
        |vrt        || j                  |<   |S rT   )r   r   addrN   r-   r   r   )rP   rQ   rE   r   r   source_jsonr   s          r6   r   zContext._fetch_context  s     T6*
,,-- 	
+,,,&&z22 (
3Q7+5(( +6J'r5   c                   |j                  t              }|rqt        |t              st        | j                  || j                  |xs
 t                     }t        |t              st        |t           }|j                  |       |}|j                  t        | j                        | _        |j                  t        | j                        | _        |j                  t        d      }|j!                         D ]{  \  }}|t        t        t        t        hv r|t"        k(  rt        |t$              r|| _        @|t(        k(  r|| _        Q|t,        k(  r|r]|r`|| _        h| j/                  ||||       } y r`   )rv   r   rr   r   r   r   rE   r   rs   r   updater+   rD   r*   rB   r%   rd   r$   boolrM   r   rC   r   
_read_term)	rP   rQ   r   r   importsimportedr   r   values	            r6   r   zContext._read_source  s$    **V$gs+++**$7$@35H h-++(HOOF#FZZtzz2
zz'4<<8JJy%0	 ,,.JCugvy99	!j&=!& %!' %DIUI> )r5   c                   d }t        |t              r|j                  t              }|j                  t        |      }|j                  t
        t              }|r%|t        t
        t        fvr| j                  ||      }|xs |j                  t        t              }|t
        k(  r t        t        j                        }t        }nM|t        ur| j                  ||      }n2d|v r| j                  ||      }n| j                  r| j                  |z   }|j                  t        t              }| j                  ||||j                  t         t              |j                  t"        t              |j                  t$        t              t'        |      ||j                  t(              |
       nHt        |t              r$| j+                  |      sy | j                  ||      }| j                  |||       |t,        v r,| j.                  j1                  |g       j3                  |       y | j.                  j5                         D ]  }	||	v s|	j7                  |        y )Nr7   )r   )rr   rs   rv   r&   r%   r(   rn   r   r+   _rec_expandr   r   typerD   r   r   r   r   r   r   r#   r   r   rH   
setdefaultr   valuesremove)
rP   rQ   r   dfnr   r   revr   rm   vs
             r6   r   zContext._read_term  s    c4 ''#,C	95IwwtU+HHRu,==++FH=-3772u-E}CHH e#((7((6

T)gggu-GMM	5)u%e$S	#   #s#((-((5MM$M;IKK""5"-44T: [['')19HHTN *r5   c                   ||k(  s|t         v r|S | j                  |      \  }}}|r\| j                  ||      }|=|dz   | j                  k(  r|S | j                  j                  |      }|r|j                  }||}n;||z   }n5| j                  ||      xs |}d|vr| j                  r| j                  |z   S | j                  |||      S r   )r   r   _get_source_idrD   rG   rv   r   r   )	rP   rQ   exprprevr   r   nxtr   ro   s	            r6   r   zContext._rec_expandM  s     4<49,K !--d3c%%fc2C{9

*K::>>#.D"gg{Ci%%fc29cC#~$**zzC''T22r5   c                t    d|vrdd |fS |j                  dd      \  }}|j                  d      sd||fS dd |fS )Nr7   Tr   z//F)splitr   )rP   r   r   r   s       r6   r   zContext._prep_expandk  sR    d?t##ZZQ'
U%#u$$$$$r5   c                    |j                  |      }|+| j                  j                  |      }|r|j                  }|S t        |t              r|j                  t
              }|S rT   )rv   rG   r   rr   rs   r   )rP   rQ   r   ro   r   s        r6   r   zContext._get_source_idt  sW    zz#<**..%Cvv  d#88B<Dr5   c                   i }|j                   t        k7  r"| j                  |j                         |t        <   |j                  rt        |j                        |t        <   |j                  t        k7  r|j                  |t        <   |j                  r|j                  |t        <   n|j                  |t        <   |j                         t        hk(  r	|t           S |S rT   )r   rn   r   r(   r   ru   r   rC   r   r   r   r&   r   keys)rP   ro   tdicts      r6   
_term_dictzContext._term_dict  s     "99//$))4E$K>>#DNN3E)==E!--E$K<<E#JE"I::<B49r5   c           	        | j                   j                         D ci c]  \  }}||
 }}}|j                  | j                  j	                         D ci c]  }|j
                  | j                  |        c}       | j                  r| j                  |t        <   | j                  r| j                  |t        <   |S c c}}w c c}w )z
        Returns a dictionary representation of the context that can be
        serialized to JSON.

        :return: a dictionary representation of the context.
        )rJ   rd   r   rI   r   r   r  rE   r   rC   r   )rP   rg   r   rro   s        r6   to_dictzContext.to_dict  s     !% 4 4 67 6fq!QT 67	t||?R?R?TU?Tt$))T__T22?TUV99iiAdG==mmAdG 8Us   B?#C)NNrA   )rQ   _ContextSourceTyperE   Optional[str]rB   zOptional[float])returnr  )rE   r  )T)rQ   r   rM   r   r  r?   )r  None)ro   zOptional[Term]r  r?   )rx   r   r  zOptional[Context])r   Dict[str, Any]r  r   )r   r  r   r   r  r   )r   r   r  r   )r   r   r  zGenerator[str, None, None])r   r   r   r   r   Union[Defined, str]r   z$Union[Collection[Any], str, Defined]r   Optional[Union[str, Defined]]rC   r  r   r   rm   r   r   zOptional[bool]r   r   )
r   r   r   r  r   r  rC   r  r   r   )r   r   r  r   )r   r   r  r   )r   r   r  r   )r   r   r   r   r  r  )r   r   r  r  )NN)rQ   r  rE   r  r   zSet[Any])r   r   r  r   rT   )
rE   r  r   z8Union[List[Union[Dict[str, Any], str, None]], List[str]]r   z<List[Tuple[Optional[str], Union[Dict[str, Any], str, None]]]r   Set[str]r   r  )rQ   r   rE   r  r   r  )rQ   r  r   r  r   zOptional[Set[str]])F)
rQ   r  r   r   r   Union[Dict[str, Any], str]r   r   r  r  )rQ   r  r   r  r   r  r  r  )r   r   r  zTuple[bool, Optional[str], str])rQ   r  r   r   r  r  )ro   r   r  r  )r  r  )2r1   r2   r3   rR   propertyrE   setterrb   ra   rj   rp   r|   r   rt   r   r   r   r   r   r   r~   r   r   lang_keyid_keytype_key	value_keylist_keyrev_key	graph_keyrn   r   r   r   r\   r   r   r   r   rO   r   r   r   r   r   r   r   r   r  r
  r4   r5   r6   r?   r?   L   s    &*"#&	"  !	0   
[[
M 
M5 
@."$$%%$## 78H34F78H9:I78H56G9:I ).:?/327!%8)8) 8) &	8)
 88) -8) 08) 8) 8) 8) 8)z 37)."&$6$6 0$6 '	$6
  $6 $6L
%)$36" #(,	K"K K &	K( (,(5(5 I(5 N	(5
 &(5 %(5T!.EM8 %)26	$?$? "$? 0	$?V  8#8# 8# (	8#
 8# 
8#v RV3$3,93AN3	3<%	 r5   r?   r   zNid, name, type, container, index, language, reverse, context,prefix, protectedF)?__doc__
__future__r   collectionsr   typingr   r   r   r   r	   r
   r   r   r   r   urllib.parser   r   rdflib.namespacer   errorsr   r   r   r  r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   utilr,   r-   r.   r   intr0   rn   r   r   r  r?   r   __new____defaults__r4   r5   r6   <module>r(     s   # "   +   
     0 6 5B$dD#sD%QUV		c 	 	
 5tCH~sD(	)*DcNCE 
P	 P	f 
W
 #E5%ueT r5   