3
dw                 @   s   d Z ddlmZ ddlZddlmZ ddlZddlZddl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	lmZ dd
lmZ ddlmZ ddlmZ dZdZdddZdd Zdd Zdd Zdd Z e!dkre   dS )zq
A commandline tool for parsing RDF in different formats and serializing the
resulting graph to a chosen format.
    )absolute_importN)OptionParser)plugin)Store)ConjunctiveGraph)RDFRDFSOWLXSD)Parser)
Serializer)guess_format)PY3xmlZn3 c             C   s   |r&t j|t }|j| t|}	n
d }t }	x&|j D ]\}
}|	jj|
|dd q:W xT| D ]L}t|\}}|dkr~t	j
}n| r|rt|pt}|	j|fd|i| q^W |rt|\}}|jdd  |	jf ||d| |r|j  d S )NF)override-formatbase)Zdestinationr   )r   getr   openr   itemsZnamespace_managerbind_format_and_kwssysstdinr   DEFAULT_INPUT_FORMATparse
setdefault	serializerollback)Zinput_filesinput_formatguessoutfileoutput_formatns_bindingsZ
store_connZ
store_typestoregraphprefixuriZfpathZ
use_formatkws r+   6/tmp/pip-build-7vycvbft/rdflib/rdflib/tools/rdfpipe.pyparse_and_serialize   s*    



r-   c             C   s   | i  } }| rd| kr| j dd\} }xr|j dD ]d}d|krV|j d\}}|||< q2|jdrrd||dd < q2|jdrd	||dd < q2d	||< q2W | |fS )
a}  
    >>> _format_and_kws("fmt")
    ('fmt', {})
    >>> _format_and_kws("fmt:+a")
    ('fmt', {'a': True})
    >>> _format_and_kws("fmt:a")
    ('fmt', {'a': True})
    >>> _format_and_kws("fmt:+a,-b") #doctest: +SKIP
    ('fmt', {'a': True, 'b': False})
    >>> _format_and_kws("fmt:c=d")
    ('fmt', {'c': 'd'})
    >>> _format_and_kws("fmt:a=b:c")
    ('fmt', {'a': 'b:c'})
    :   ,=r   FN+T)split
startswith)fmtr*   Zkwreprkwkvr+   r+   r,   r   >   s    



r   c              C   s   t t} t t}d}td+tj d ddtj  d}|jdd	t	d
|  d d d|  dd |jddt	t
d| d d|  dd |jddt	ddd |jddddd d! |jd"d#d$d,d' |jd(d)d#d$d*d' |S )-NzFORMAT:(+)KW1,-KW2,KW3=VALUEz0%prog [-h] [-i INPUT_FORMAT] [-o OUTPUT_FORMAT] z [--ns=PFX=NS ...] [-] [FILE ...]za Reads file system paths, URLs or from stdin if '-' is given. The result is serialized to stdout.z%prog z(using rdflib %s))descriptionversionz-iz--input-formatzAFormat of the input document(s). Available input formats are: %s.z# If no format is given, it will be z%guessed from the file name extension.z7 Keywords to parser can be given after format like: %s.ZINPUT_FORMAT)typehelpmetavarz-oz--output-formatzDFormat of the graph serialization. Available output formats are: %s.z Default format is: '%default'.z; Keywords to serializer can be given after format like: %s.ZOUTPUT_FORMAT)r;   defaultr<   r=   z--nsappendz[Register a namespace binding (QName prefix to a base URI). This can be used more than once.zPREFIX=NAMESPACE)actionr;   r<   r=   z
--no-guessr"   store_falseTz(Don't guess format based on file suffix.)destr@   r>   r<   z--no-out
store_trueFz!Don't output the resulting graph z((useful for checking validity of input).)r@   r>   r<   z-wz--warnz<Output warnings to stderr (by default only critical errors).zP%prog [-h] [-i INPUT_FORMAT] [-o OUTPUT_FORMAT] [--ns=PFX=NS ...] [-] [FILE ...]zIDon't output the resulting graph (useful for checking validity of input).)_get_plugin_namesr   r   r   __doc__striprdflib__version__
add_optionstrDEFAULT_OUTPUT_FORMAT)Zparser_namesZserializer_namesZ
kw_exampleoparserr+   r+   r,   make_option_parser]   sR     
 rM   c             C   s   dj dd tj| dD S )Nz, c             s   s   | ]}|j V  qd S )N)name).0pr+   r+   r,   	<genexpr>   s    z$_get_plugin_names.<locals>.<genexpr>)kind)joinr   Zplugins)rR   r+   r+   r,   rD      s   rD   c        	      C   s   t  } | j \}}t|dk r.| j  | j  |jr<tj}ntj}tj	|d i }|j
r~x$|j
D ]}|jd\}}|||< q`W tj}trtjj}|jrd }t||j|j||j| d S )Nr/   )levelr1   )rM   
parse_argslenprint_usageexitwarnloggingWARNINGCRITICALbasicConfignsr3   r   stdoutr   bufferZno_outr-   r!   r"   r$   )	rL   optsargsZloglevelr%   Zns_kwpfxr)   r#   r+   r+   r,   main   s*    rd   __main__)r   N)"rE   
__future__r   r   optparser   rZ   rG   r   Zrdflib.storer   Zrdflib.graphr   Zrdflib.namespacer   r   r	   r
   Zrdflib.parserr   Zrdflib.serializerr   Zrdflib.utilr   sixr   r   rK   r-   r   rM   rD   rd   __name__r+   r+   r+   r,   <module>   s,   
<