o
    i                     @  s   d dl mZ 	 d dlZd dl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 er7d dl
mZ dgZG d	d deZG d
d deZdddZdddZd ddZd!ddZede dS )"    )annotationsN)IOTYPE_CHECKINGOptionalTupleUnion)Graph)
Serializer)Literal)_TripleTypeNTSerializerc                   @  s*   e Zd ZdZdddZ		ddddZdS )r   z3
    Serializes RDF graphs to NTriples format.
    storer   c                 C     t | | d S Nr	   __init__selfr    r   X/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/rdflib/plugins/serializers/nt.pyr         zNTSerializer.__init__Nutf-8stream	IO[bytes]baseOptional[str]encodingreturnNonec                 K  sL   |d ur	t d |dkrt d|  | jD ]}|t|  qd S )Nz#NTSerializer does not support base.r   z=NTSerializer always uses UTF-8 encoding. Given encoding was: )warningswarnr   write_nt_rowencode)r   r   r   r   argstripler   r   r   	serialize   s   

zNTSerializer.serializer   r   )Nr   )r   r   r   r   r   r   r   r   )__name__
__module____qualname____doc__r   r&   r   r   r   r   r      s    
c                   @  s   e Zd ZdZdddZdS )NT11Serializerze
    Serializes RDF graphs to RDF 1.1 NTriples format.

    Exactly like nt - only utf8 encoded.
    r   r   c                 C  r   r   r   r   r   r   r   r   8   r   zNT11Serializer.__init__Nr'   )r(   r)   r*   r+   r   r   r   r   r   r,   1   s    r,   r%   r   r   strc                 C  sZ   t | d trd| d  | d  t| d f S d| d  | d  | d  f S )N   z%s %s %s .
r      )
isinstancer
   n3_quoteLiteral)r%   r   r   r   r"   <   s   


&r"   l_r
   c                 C  sF   t | }| jr| jrtdd|| jf S | jrd|| jf S d| S )z0
    a simpler version of term.Literal.n3()
    z"Literal has datatype AND language!z%s@%sz%s^^<%s>z%s)_quote_encodelanguagedatatype	Exception)r3   encodedr   r   r   r2   I   s   r2   c                 C  s(   d|  dd dd dd dd	 S )
Nz"%s"\z\\
z\n"z\"z\r)replace)r3   r   r   r   r4   Z   s
   r4   errUnicodeErrorTuple[Union[str, bytes], int]c                   s8   dd  | j | j| j }d fdd|D | jfS )zu
    Do unicode char replaces as defined in https://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#ntrip_strings
    c                 S  s    t | } | dkr
dnd}||  S )Ni  z\u%04Xz\U%08X)ord)cfmtr   r   r   _replace_singleg   s   z3_nt_unicode_error_resolver.<locals>._replace_single c                 3  s    | ]} |V  qd S r   r   ).0rB   rD   r   r   	<genexpr>q   s    z-_nt_unicode_error_resolver.<locals>.<genexpr>)objectstartendjoin)r>   stringr   rG   r   _nt_unicode_error_resolver`   s   rN   _rdflib_nt_escape)r%   r   r   r-   )r3   r
   r   r-   )r3   r-   r   r-   )r>   r?   r   r@   )
__future__r   codecsr   typingr   r   r   r   r   rdflib.graphr   rdflib.serializerr	   rdflib.termr
   r   __all__r   r,   r"   r2   r4   rN   register_errorr   r   r   r   <module>   s$    



