o
    mi3                  	   @  s   U d Z ddlmZ ddlmZmZ ddlmZmZm	Z	m
Z
mZmZmZmZmZmZ ddlZddlmZ ddlmZ ddlmZmZmZmZmZ dd	lmZ dd
lm Z  g dZ!e eeeeeeedZ"i Z#de$d< G dd deZ%edZ&G dd de
e& Z'G dd de'e& Z(dddZ)dddZ*e Z+e,e+d re"- D ]\Z.Z/e+j0e.d!D ]Z1e(e1j2e/e1e#e1j2e/f< qqn'ere3e+e4sJ e"- D ]\Z.Z/e+*e.g D ]Z1e(e1j2e/e1e#e1j2e/f< qqe	"ddd%d&Z5eddd)d&Z5	ddd+d&Z5ej5j6j7j8re)d,e d-d, e)d.e d/d0 e)d0e d/d0 e)d1e d/d1 e)d2e d3d4 e)d5e d6d7 e)d8e d9d8 e)d:e d9d: e)d;ed<d= e)d>ed<d= e)d?ed<d@ e)dAedBdC e)dDedBdC e)dEedFdG e)dHedFdG e)dIedFdG e)dJedKdL e)dMedNdO e)dPedNdO e)dQedNdO e)dRedNdS e)dTedUdV e)dWedUdV e)dXedYdZ e)d[edYdZ e)d\ed]d^ e)d_ed]d^ e)d`edadb e)dcedadb e)ddededf e)dgedhdi e)d;edjdk e)d>edjdk e)dAedldm e)dDedldm e)dEedldn e)dHedldn e)dIedldn e)dMedodp e)dPedodp e)dQedodp e)dRedodp e)dWedqdr e)dTedqdr e)dXedsdt e)d[edsdt e)d\edudv e)d_edudv e)d`edwdx e)dcedwdx e)ddedydz e)dged{d| e)d}ed~d e)d}ed~d e)d}ed~d e)d>edd e)dedd e)dedd e)dedd e)dedd e)dedd e)dedd e)d>edd e)dedd e)dedd e)dedd e)dedd e)dedd e)dedd e)dedd dd e5edD Z9dd e5edD Z:e9e: Z;e;D ]
Z<e)e<edd qdS )a  Plugin support for rdf.

There are a number of plugin points for rdf: parser, serializer,
store, query processor, and query result. Plugins can be registered
either through setuptools entry_points or by calling
rdf.plugin.register directly.

If you have a package that uses a setuptools based `setup.py` you can add the
following to your setup:

```python
entry_points = {
    'rdf.plugins.parser': [
        'nt =     rdf.plugins.parsers.ntriples:NTParser',
        ],
    'rdf.plugins.serializer': [
        'nt =     rdf.plugins.serializers.NTSerializer:NTSerializer',
        ],
    }
```

See the [setuptools dynamic discovery of services and plugins](http://peak.telecommunity.com/DevCenter/setuptools#dynamic-discovery-of-services-and-plugins)
for moreinformation.
    )annotations)
EntryPointentry_points)
TYPE_CHECKINGAnyDictGenericIteratorOptionalTupleTypeTypeVaroverloadN)Error)Parser)	ProcessorResultResultParserResultSerializerUpdateProcessor)
Serializer)Store)registergetpluginsPluginExceptionPluginPluginT	PKGPlugin)zrdf.plugins.storezrdf.plugins.serializerzrdf.plugins.parserzrdf.plugins.resultparserzrdf.plugins.resultserializerzrdf.plugins.queryprocessorzrdf.plugins.queryresultzrdf.plugins.updateprocessorz#Dict[Tuple[str, Type[Any]], Plugin]_pluginsc                   @  s   e Zd ZdS )r   N)__name__
__module____qualname__ r#   r#   G/home/kim/smarthome/.venv/lib/python3.10/site-packages/rdflib/plugin.pyr   O   s    r   r   c                   @      e Zd ZdddZdd
dZdS )r   namestrkindType[PluginT]module_path
class_namec                 C  s"   || _ || _|| _|| _d | _d S N)r&   r(   r*   r+   _class)selfr&   r(   r*   r+   r#   r#   r$   __init__X   s
   
zPlugin.__init__returnc                 C  s4   | j d u rt| jt t dg}t|| j| _ | j S )N )r-   
__import__r*   globalslocalsgetattrr+   )r.   moduler#   r#   r$   getClassa   s   
zPlugin.getClassN)r&   r'   r(   r)   r*   r'   r+   r'   r0   r)   r    r!   r"   r/   r7   r#   r#   r#   r$   r   W   s    
	r   c                   @  r%   )r   r&   r'   r(   r)   epr   c                 C  s   || _ || _|| _d | _d S r,   )r&   r(   r:   r-   )r.   r&   r(   r:   r#   r#   r$   r/   i   s   
zPKGPlugin.__init__r0   c                 C  s   | j d u r| j | _ | j S r,   )r-   r:   load)r.   r#   r#   r$   r7   o   s   
zPKGPlugin.getClassN)r&   r'   r(   r)   r:   r   r8   r9   r#   r#   r#   r$   r   h   s    
r   r&   r'   r(   	Type[Any]c                 C  s   t | |||}|t| |f< dS )zx
    Register the plugin for (name, kind). The module_path and
    class_name should be the path to a plugin class.
    N)r   r   )r&   r(   r*   r+   pr#   r#   r$   r   u   s   r   r)   r0   c                 C  s6   zt | |f }W | S  ty   td| |f w )zk
    Return the class for the specified (name, kind). Raises a
    PluginException if unable to do so.
    z!No plugin registered for (%s, %s))r   KeyErrorr   r7   r&   r(   r=   r#   r#   r$   r   ~   s   r   select)group.Optional[str]Iterator[Plugin[PluginT]]c                 C     d S r,   r#   r&   r(   r#   r#   r$   r      s   r   NoneIterator[Plugin]c                 C  rD   r,   r#   rE   r#   r#   r$   r      s   Optional[Type[PluginT]]c                 c  s>    t  D ]}| du s| |jkr|du s||jkr|V  qdS )zk
    A generator of the plugins.

    Pass in name and kind to filter... else leave None to match all.
    N)r   valuesr&   r(   r?   r#   r#   r$   r      s   $Z
BerkeleyDBz rdflib.plugins.stores.berkeleydbdefaultzrdflib.plugins.stores.memoryZMemoryZSimpleMemoryZ	Auditablezrdflib.plugins.stores.auditableZAuditableStoreZ
Concurrentz rdflib.plugins.stores.concurrentZConcurrentStoreZSPARQLStorez!rdflib.plugins.stores.sparqlstoreZSPARQLUpdateStorezapplication/rdf+xmlz!rdflib.plugins.serializers.rdfxmlZXMLSerializerxmlz
pretty-xmlZPrettyXMLSerializerztext/n3zrdflib.plugins.serializers.n3ZN3SerializerZn3ztext/turtlez!rdflib.plugins.serializers.turtleZTurtleSerializerturtlettlZ
longturtlez%rdflib.plugins.serializers.longturtleZLongTurtleSerializerzapplication/n-tripleszrdflib.plugins.serializers.ntZNTSerializerZntriplesntZnt11ZNT11Serializerzjson-ldz!rdflib.plugins.serializers.jsonldZJsonLDSerializerzapplication/ld+jsonzapplication/n-quadsz!rdflib.plugins.serializers.nquadsZNQuadsSerializerZnquadszapplication/trixzrdflib.plugins.serializers.trixZTriXSerializerZtrixzapplication/trigzrdflib.plugins.serializers.trigZTrigSerializerZtrigZhextzrdflib.plugins.serializers.hextZHextuplesSerializerpatchz rdflib.plugins.serializers.patchZPatchSerializerzrdflib.plugins.parsers.rdfxmlZRDFXMLParserz rdflib.plugins.parsers.notation3ZN3ParserZTurtleParserzrdflib.plugins.parsers.ntriplesZNTParserzrdflib.plugins.parsers.jsonldZJsonLDParserzrdflib.plugins.parsers.nquadsZNQuadsParserzrdflib.plugins.parsers.trixZ
TriXParserzrdflib.plugins.parsers.trigZ
TrigParserzrdflib.plugins.parsers.hextZHextuplesParserzrdflib.plugins.parsers.patchZRDFPatchParsersparqlzrdflib.plugins.sparql.processorZSPARQLResultZSPARQLProcessorZSPARQLUpdateProcessorz(rdflib.plugins.sparql.results.xmlresultsZXMLResultSerializerzapplication/sparql-results+xmltxtz(rdflib.plugins.sparql.results.txtresultsZTXTResultSerializerjsonz)rdflib.plugins.sparql.results.jsonresultsZJSONResultSerializerzapplication/sparql-results+jsoncsvz(rdflib.plugins.sparql.results.csvresultsZCSVResultSerializerztext/csvZXMLResultParserZJSONResultParserZCSVResultParserZtsvz(rdflib.plugins.sparql.results.tsvresultsZTSVResultParserztext/tab-separated-valuesc                 C     h | ]}|j qS r#   r&   .0parserr#   r#   r$   	<setcomp>i      rY   )r(   c                 C  rT   r#   rU   rV   r#   r#   r$   rY   j  rZ   z#rdflib.plugins.sparql.results.graphZGraphResultParser)r&   r'   r(   r<   )r&   r'   r(   r)   r0   r)   )..)r&   rB   r(   r)   r0   rC   )r&   rB   r(   rF   r0   rG   )NN)r&   rB   r(   rH   r0   rC   )=__doc__
__future__r   importlib.metadatar   r   typingr   r   r   r   r	   r
   r   r   r   r   Z rdflib.plugins.stores.berkeleydbZrdflibZrdflib.exceptionsr   Zrdflib.parserr   Zrdflib.queryr   r   r   r   r   Zrdflib.serializerr   Zrdflib.storer   __all__Zrdflib_entry_pointsr   __annotations__r   r   r   r   r   r   Zall_entry_pointshasattritemsentry_pointr(   r@   r:   r&   
isinstancedictr   ZstoresZ
berkeleydbZ	has_bsddbZgraph_parsersZresult_parsersZgraph_result_parsersparser_namer#   r#   r#   r$   <module>   s   0

	
