o
    mi"                     @  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	m
Z
 d dlmZ d dlmZ d dlmZ er8d 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Any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   z)Serializes RDF graphs to NTriples format.storer	   c                 C     t | | d S Nr
   __init__selfr    r   W/home/kim/smarthome/.venv/lib/python3.10/site-packages/rdflib/plugins/serializers/nt.pyr         zNTSerializer.__init__Nutf-8stream	IO[bytes]baseOptional[str]encodingkwargsr   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   r   tripler   r   r   	serialize   s   

zNTSerializer.serializer   r	   )Nr   )
r   r   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 )NT11Serializerz`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   6   r   zNT11Serializer.__init__Nr(   )r)   r*   r+   r,   r   r   r   r   r   r-   0   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   Z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 )z&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   E   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   T   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_singlea   s   z3_nt_unicode_error_resolver.<locals>._replace_single c                 3  s    | ]} |V  qd S r   r   ).0rB   rD   r   r   	<genexpr>k   s    z-_nt_unicode_error_resolver.<locals>.<genexpr>)objectstartendjoin)r>   stringr   rG   r   _nt_unicode_error_resolverZ   s   rN   Z_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   r   Zrdflib.graphr	   Zrdflib.serializerr
   Zrdflib.termr   r   __all__r   r-   r$   r2   r4   rN   register_errorr   r   r   r   <module>   s$     




