o
    
i@                     @  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-)qname_callback)
isinstancer   normalizeUrir
   n3r   _literal_n3)r   r    r   \/home/ubuntu/.local/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wh1h2r   r   r   c-   s
   z(TXTResultSerializer.serialize.<locals>.c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   r0   ?   s    z1TXTResultSerializer.serialize.<locals>.<listcomp>|c                   s   g | ]\}} || qS r   r   )r-   ir.   )r+   maxlenr   r   r0   K   s    
r   c                 S  s$   g | ]\}}|d |t |   qS )r$   r%   )r-   r3   r   r   r   r   r0   P   s   $ N)resulttype	Exceptionr   writevarsr&   rangemaxjoin	enumeratesumsortedzipgetvalueencode	TypeError
ValueError)
selfr   r    r   kwargsstring_streambr/   r3   text_valr   )r+   r1   r4   r   r   	serialize!   s:   
 zTXTResultSerializer.serialize)r   )r   r   r    r   r   r   r   r!   )__name__
__module____qualname____doc__rK   r   r   r   r   r      s    r   N)r   r   r   r   r   r   )
__future__r   ior   typingr   r   r   r   rdflib.namespacer   rdflib.queryr	   rdflib.termr
   r   r   r   r   r   r   r   r   r   <module>   s    
