o
    i{U                     @  s\  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Z4G dd de5Z6e6dZ7dZ8G dd dZ9eddZ:e7e7e7e7de7ddfe:j;_<dS )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                   @  s   e Zd ZdS )DefinedN)__name__
__module____qualname__ r2   r2   _/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/rdflib/plugins/shared/jsonld/context.pyr.   >   s    r.   ):/?#[]@c                   @  s&  e Zd Z			dddd	ZedddZejdddZddddZdddZdddZ	dddZ
dd d!Zdd$d%Zdd&d'Zdd(d)Zdd*d+Zdd,d-Zdd.d/Zdd0d1Zdd2d3Zdd6d7Zdd8d9Zdd;d<Zed=d> Zed?d> Zed@d> ZedAd> ZedBd> ZedCd> ZedDd> ZeededEeddEfddTdUZdeddEfddVdWZ ddYdZZ!dd\d]Z"dd_d`Z#dddcddZ$ddedfZ%ddgdhZ&		dddldmZ'ddndoZ(	dddudvZ)ddwdxZ*		ddd{d|Z+	EddddZ,	ddddZ-dddZ.dddZ/dddZ0dddZ1dS )ContextNsourceOptional[Any]baseOptional[str]versionOptional[float]c                 C  sl   |pd| _ d | _d | _|  || _|| _i | _i | _i | _i | _d| _	d | _
d| _i | _|r4| | d S d S )Ng      ?FT)r@   languagevocabr>   doc_baseterms_alias_lookup	_prefixesactiveparent	propagate_context_cacheload)selfr<   r>   r@   r2   r2   r3   __init__I   s"   
zContext.__init__returnc                 C  s   | j S N)_baserN   r2   r2   r3   r>   a   s   zContext.basec                 C  sl   |r| d}|dkr|d| }t| dr|d ur| |n|| _|r1dt|dd  | _d S d | _d S )Nr7   r   rR   z%s://%s   )findhasattrresolve_irirR   r   _basedomain)rN   r>   
hash_indexr2   r2   r3   r>   e   s   

(Tr   rK   bool	'Context'c                 C  s    | j du r| jn| }|||S NF)rK   rJ   _subcontext)rN   r<   rK   rJ   r2   r2   r3   
subcontextr   s   zContext.subcontextc                 C  s   t | jd}||_| |_| j|_| j|_| j|_| j|_dd | j	 D |_| j
 |_
| j |_| j |_| j|_|| |S )N)r@   c                 S  s   i | ]\}}||d d  qS rQ   r2   ).0klr2   r2   r3   
<dictcomp>   s    z'Context._subcontext.<locals>.<dictcomp>)r;   r@   rK   rJ   rB   rC   r>   rD   rF   itemsrE   copyrG   rH   rL   rM   )rN   r<   rK   ctxr2   r2   r3   r^   x   s   
zContext._subcontextNonec                 C  s4   d | _ d | _i | _i | _i | _i | _d| _d| _d S )NFT)rB   rC   rE   rF   rG   rH   rI   rK   rS   r2   r2   r3   _clear   s   
zContext._cleartermOptional['Term']c                 C  s"   |r|j tur| j|j ddS | S )NTrK   )contextUNDEFr^   )rN   ri   r2   r2   r3   get_context_for_term   s   zContext.get_context_for_termnodeOptional['Context']c                 C  s   | j dkr?t|tr| |nd }t|ts|r|gng }|D ]}| j|}|r+ nqd }|r?|jr?| j|jdd}|r?|S | j	du rG| j
S | S )N皙?Frk   )r@   
isinstancedictget_typelistrE   getrl   r_   rK   rJ   )rN   ro   rtyperttypetermr_   r2   r2   r3   get_context_for_type   s   


zContext.get_context_for_typeobjDict[str, Any]c                 C     |  |tS rQ   )_getr   rN   r{   r2   r2   r3   get_id      zContext.get_idc                 C  r}   rQ   )r~   r'   r   r2   r2   r3   rt      r   zContext.get_typec                 C  r}   rQ   )r~   r   r   r2   r2   r3   get_language   r   zContext.get_languagec                 C  r}   rQ   )r~   r(   r   r2   r2   r3   	get_value   r   zContext.get_valuec                 C  r}   rQ   )r~   r   r   r2   r2   r3   	get_graph   r   zContext.get_graphc                 C  r}   rQ   )r~   r   r   r2   r2   r3   get_list   r   zContext.get_listc                 C  r}   rQ   )r~   r&   r   r2   r2   r3   get_set   r   zContext.get_setc                 C  r}   rQ   )r~   r%   r   r2   r2   r3   get_rev   r   zContext.get_revkeystrc                 C  s4   | j |g D ]}||v r||  S q||S rQ   )rF   rv   )rN   r{   r   aliasr2   r2   r3   r~      s
   
zContext._getc                 C  s   |  |D ]}|  S d S rQ   )get_keysrN   r   r   r2   r2   r3   get_key   s   zContext.get_keyGenerator[str, None, None]c                 c  s,    || j v r| j | D ]}|V  q|V  d S rQ   )rF   r   r2   r2   r3   r      s
   

zContext.get_keysc                 C  
   |  tS rQ   )r   r   rS   r2   r2   r3   <lambda>      
 zContext.<lambda>c                 C  r   rQ   )r   r   rS   r2   r2   r3   r      r   c                 C  r   rQ   )r   r'   rS   r2   r2   r3   r      r   c                 C  r   rQ   )r   r(   rS   r2   r2   r3   r      r   c                 C  r   rQ   )r   r   rS   r2   r2   r3   r      r   c                 C  r   rQ   )r   r%   rS   r2   r2   r3   r      r   c                 C  r   rQ   )r   r   rS   r2   r2   r3   r      r   FnameidrefcoercionUnion[Defined, str]	container$Union[Collection[Any], str, Defined]indexOptional[Union[str, Defined]]rB   reverserl   prefixOptional[bool]	protectedc                 C  s  | j dk s	|	d u rt|to|t}	| |sd S | j dkr,| j|}|r,|jr,d S t|t	t
tfr9t
|}n|turCt
|g}nt
 }t|||||||||	|

}|| j|< tttfD ]}||v re nq]t}|| j||po|||f< |jdu r|| j|< d S d S )Nrq   T)r@   rr   r   endswithURI_GEN_DELIMS_accept_termrE   rv   r   ru   settuplerm   Termr   r   r&   rG   r   rH   )rN   r   r   r   r   r   rB   r   rl   r   r   existingri   container_keyr2   r2   r3   add_term   sF   





zContext.add_termc                 C  s   | j }|d u r	|}|tur|r|||||f}|r|S |tur-|||t|f}|r-|S |r=|||||f}|r<|S n|rM||tt|f}|rL|S n|||pStt|f}|r\|S ||tt|fS rQ   )rG   rm   rv   r   r&   )rN   r   r   r   rB   r   lufoundr2   r2   r3   	find_term  s2   zContext.find_termcurie_or_iric                 C  s0   |  |d}| |r|S d|v rdS | |S )NF  )expandisblankrX   )rN   r   irir2   r2   r3   resolve<  s   

zContext.resolver   c                 C  s   t | j|S rQ   )r+   rR   )rN   r   r2   r2   r3   rX   H  s   zContext.resolve_irirefc                 C  s
   | dS )Nz_:)
startswith)rN   r   r2   r2   r3   r   L  s   
zContext.isblankterm_curie_or_iri	use_vocabc                 C  s   t |ts|S | |sdS |r| j|}|r|jS | |\}}}|dkr)|S |d urA| j|}|r@|jr@|jr@|j| S n|rO|rO| jrM| j| S d S | 	|S )Nr   _)
rr   r   r   rE   rv   id_prep_expandr   rC   rX   )rN   r   r   ri   is_termpfxlocalnsr2   r2   r3   r   O  s*   




zContext.expandc                 C  sh   t t|\}}| j|}|rd||fS | jr2t|| jkr#dS || jr2|t| jd  S |S )Nr4   r   )	r-   r   rH   rv   joinrR   r   rY   len)rN   r   r   r   r   r2   r2   r3   
shrink_irij  s   zContext.shrink_iric                 C  sX   t |}| |}|r|jS t|\}}|| jkr|S | j|}|r*d||fS |S Nr4   )r   r   r   r-   rC   rH   rv   r   )rN   r   ri   r   r   r   r2   r2   r3   	to_symboly  s   

zContext.to_symbolOptional[Union[List[Any], Any]]referenced_contextsSet[Any]c                 C  sj   d| _ g }t|tr|n|g}|pt }| |||| |D ]\}}|d u r+|   q| ||| qd S )NT)rI   rr   ru   r   _prep_sourcesrh   _read_source)rN   r<   r>   r   sources
source_urlr2   r2   r3   rM     s   

zContext.loadc                 C  sB   | j dk rdS |rt|dkr|d dkr|d  r|tv S dS )Nrq   Tr   r   r:   )r@   r   isalnum	NODE_KEYS)rN   r   r2   r2   r3   r     s
   
(zContext._accept_terminputs	List[Any]r   Set[str]in_source_urlc                 C  s   |D ]\}|}|}t |tr1|}|p| j}	| ||	|}
|
d u r q|r/tr*|	d us*J t|	|}|
}t |trHt|v rH|t }t |trE|n|g}t |trW| 	||||| q|
||f qd S rQ   )rr   r   rD   _fetch_contextr   r   rs   r   ru   r   append)rN   r>   r   r   r   r   r<   r   new_basesource_doc_basenew_ctxr2   r2   r3   r     s4   





zContext._prep_sourcesc                 C  sZ   t ||}||v rt|| || jv r| j| S t|}|r&t|vr&t|| j|< |S rQ   )r   r   addrL   r,   r   r   )rN   r<   r>   r   r   r2   r2   r3   r     s   




zContext._fetch_contextr   Optional[Set[str]]c           	      C  s   | t}|r+t|tst| || j|pt }t|ts t|t	 }|
| |}| t| j| _| t| j| _| td}| D ]6\}}|tttthv rRqE|tkr_t|tr_|| _qE|tkrg|| _qE|tkrs|sr|sr|| _qE| |||| qEd S r]   )rv   r   rr   r   r   r   r>   r   rs   r   updater*   rC   r)   r@   r$   rd   r#   r[   rK   r   rB   r   
_read_term)	rN   r<   r   r   importsimportedr   r   valuer2   r2   r3   r     s8   



zContext._read_sourcedfnUnion[Dict[str, Any], str]c           	      C  sX  d }t |tr|t}|t|}|tt}|r'|tttfvr'| 	||}|p.|tt}|tkr;t
tj}t}n|turF| 	||}nd|v rQ| 	||}n| jrY| j| }|tt}| j||||tt|tt|ttt|||t|d
 nt |t
r| |sd S | 	||}| j|||d |tv r| j|g | d S d S )Nr4   )r   )rr   rs   rv   r%   r$   r'   rm   r   r*   _rec_expandr   r   typerC   r   r   r   r   r   r[   r"   r   r   rF   
setdefaultr   )	rN   r<   r   r   r   r   revr   rl   r2   r2   r3   r     sL   








zContext._read_termexprprevc           	      C  s   ||ks|t v r
|S | |\}}}|r>| ||}|d u r2|d | jkr'|S | j|}|r2|j}|d u r9|}n|| }n| ||pE|}d|vrR| jrR| j| S | |||S r   )r   r   _get_source_idrC   rE   rv   r   r   )	rN   r<   r   r   r   r   nxtr   ri   r2   r2   r3   r   <  s$   

zContext._rec_expandTuple[bool, Optional[str], str]c                 C  s@   d|vr	dd |fS | dd\}}|dsd||fS dd |fS )Nr4   Tr   z//F)splitr   )rN   r   r   r   r2   r2   r3   r   Z  s   



zContext._prep_expandc                 C  sD   | |}|d u r| j |}|r|j}|S t|tr | t}|S rQ   )rv   rE   r   rr   rs   r   )rN   r<   r   ri   r   r2   r2   r3   r   c  s   


zContext._get_source_idr   c                 C  s|   i }|j tkr| |j |t< |jrt|j|t< |jtkr#|j|t< |j	r,|j
|t< n|j
|t< | thkr<|t S |S rQ   )r   rm   r   r'   r   ru   r   rB   r   r   r   r%   r   keys)rN   ri   tdictr2   r2   r3   
_term_dictn  s   



zContext._term_dictc                   sV   dd  j  D }| fdd j D   jr! j|t<  jr) j|t< |S )z
        Returns a dictionary representation of the context that can be
        serialized to JSON.

        :return: a dictionary representation of the context.
        c                 S  s   i | ]\}}||qS r2   r2   )r`   ra   vr2   r2   r3   rc     s    z#Context.to_dict.<locals>.<dictcomp>c                   s   i | ]	}|j  |qS r2   )r   r   )r`   ri   rS   r2   r3   rc     s    )	rH   rd   r   rG   valuesr>   r   rB   r   )rN   rr2   rS   r3   to_dict~  s   

zContext.to_dict)NNN)r<   r=   r>   r?   r@   rA   )rP   r?   )r>   r?   )T)r<   r   rK   r[   rP   r\   )rP   rg   )ri   rj   rP   r\   )ro   r   rP   rp   )r{   r|   rP   r   )r{   r|   r   r   rP   r   )r   r   rP   r   )r   r   rP   r   )r   r   r   r   r   r   r   r   r   r   rB   r   r   r[   rl   r   r   r   r   r[   )
r   r   r   r   r   r   rB   r?   r   r[   )r   r   rP   r   )r   r   rP   r   )r   r   rP   r[   )r   r   r   r[   rP   r?   )r   r   rP   r?   )NN)r<   r   r>   r?   r   r   )r   r   rP   r[   rQ   )
r>   r?   r   r   r   r   r   r   r   r?   )r<   r   r>   r?   r   r   )r<   r|   r   r?   r   r   )F)
r<   r|   r   r   r   r   r   r[   rP   rg   )r<   r|   r   r?   r   r?   rP   r?   )r   r   rP   r   )r<   r|   r   r   rP   r?   )ri   r   rP   r   )rP   r|   )2r/   r0   r1   rO   propertyr>   setterr_   r^   rh   rn   rz   r   rt   r   r   r   r   r   r   r~   r   r   lang_keyid_keytype_key	value_keylist_keyrev_key	graph_keyrm   r   r   r   rX   r   r   r   r   rM   r   r   r   r   r   r   r   r   r   r   r2   r2   r2   r3   r;   H   s    















=
&





(+6

	
r;   r   zNid, name, type, container, index, language, reverse, context,prefix, protectedFN)=__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   intr.   rm   r   r;   r   __new____defaults__r2   r2   r2   r3   <module>   s.   0`    J