o
    mi@                     @  s~   d dl mZ d dlmZ d dlmZmZmZmZ d dl	m
Z
 d dlmZ d dlmZmZmZmZ dddZG dd deZdS )    )annotations)StringIO)IOListOptionalUnion)NamespaceManager)ResultSerializer)BNodeLiteralURIRefVariablet'Optional[Union[URIRef, Literal, BNode]]namespace_managerOptional[NamespaceManager]returnstrc                 C  sZ   | d u rdS |r)t | tr|| S t | tr|  S t | tr'| j|jdS d S |  S )N-)Zqname_callback)
isinstancer   ZnormalizeUrir
   Zn3r   Z_literal_n3)r   r    r   b/home/kim/smarthome/.venv/lib/python3.10/site-packages/rdflib/plugins/sparql/results/txtresults.py_termString   s   



r   c                   @  s$   e Zd ZdZ	ddddddZdS )TXTResultSerializerzC
    A write-only QueryResult serializer for text/ascii tables
    utf-8N)r   streamr   encodingr   r   r   r   Nonec          
   	     sP  dd  | j jdkrtdt }| j s|d nm| j jdgt fdd| j D }|D ]}ttD ]}t| t|| |< q:q2|d		 fd
dt
D d  |dtt  d  t|D ]}|d		dd t|D d  qr| }	z||	| W dS  ttfy   ||	 Y dS w )z6
        return a text table of query results
        c                 S  s<   |t | 8 }|d  }}|d r|d7 }d| |  d|  S )z>
            center the string s in w wide string
                   len)swZh1Zh2r   r   r   c-   s
   z(TXTResultSerializer.serialize.<locals>.cZSELECTz%Can only pretty print SELECT results!z(no results)
r   c                   s    g | ]  fd dD qS )c                   s   g | ]	}t |  qS r   )r   ).0k)r   rr   r   
<listcomp>D   s    z<TXTResultSerializer.serialize.<locals>.<listcomp>.<listcomp>r   )r&   )keysr   )r(   r   r)   ?   s    z1TXTResultSerializer.serialize.<locals>.<listcomp>|c                   s   g | ]\}} || qS r   r   )r&   ir'   )r%   maxlenr   r   r)   K   s    
r   c                 S  s$   g | ]\}}|d |t |   qS )r    r!   )r&   r,   r   r   r   r   r)   P   s   $ N)resulttype	Exceptionr   writevarsr"   rangemaxjoin	enumeratesumsortedzipgetvalueencode	TypeError
ValueError)
selfr   r   r   kwargsZstring_streambr(   r,   Ztext_valr   )r%   r*   r-   r   r   	serialize!   s:   
 zTXTResultSerializer.serialize)r   )r   r   r   r   r   r   r   r   )__name__
__module____qualname____doc__rB   r   r   r   r   r      s    r   N)r   r   r   r   r   r   )
__future__r   ior   typingr   r   r   r   Zrdflib.namespacer   Zrdflib.queryr	   Zrdflib.termr
   r   r   r   r   r   r   r   r   r   <module>   s    
