o
    
i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#   A/home/ubuntu/.local/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   $
BerkeleyDBz rdflib.plugins.stores.berkeleydbdefaultzrdflib.plugins.stores.memoryMemorySimpleMemory	Auditablezrdflib.plugins.stores.auditableAuditableStore
Concurrentz rdflib.plugins.stores.concurrentConcurrentStoreSPARQLStorez!rdflib.plugins.stores.sparqlstoreSPARQLUpdateStorezapplication/rdf+xmlz!rdflib.plugins.serializers.rdfxmlXMLSerializerxmlz
pretty-xmlPrettyXMLSerializerztext/n3zrdflib.plugins.serializers.n3N3Serializern3ztext/turtlez!rdflib.plugins.serializers.turtleTurtleSerializerturtlettl
longturtlez%rdflib.plugins.serializers.longturtleLongTurtleSerializerzapplication/n-tripleszrdflib.plugins.serializers.ntNTSerializerntriplesntnt11NT11Serializerzjson-ldz!rdflib.plugins.serializers.jsonldJsonLDSerializerzapplication/ld+jsonzapplication/n-quadsz!rdflib.plugins.serializers.nquadsNQuadsSerializernquadszapplication/trixzrdflib.plugins.serializers.trixTriXSerializertrixzapplication/trigzrdflib.plugins.serializers.trigTrigSerializertrighextzrdflib.plugins.serializers.hextHextuplesSerializerpatchz rdflib.plugins.serializers.patchPatchSerializerzrdflib.plugins.parsers.rdfxmlRDFXMLParserz rdflib.plugins.parsers.notation3N3ParserTurtleParserzrdflib.plugins.parsers.ntriplesNTParserzrdflib.plugins.parsers.jsonldJsonLDParserzrdflib.plugins.parsers.nquadsNQuadsParserzrdflib.plugins.parsers.trix
TriXParserzrdflib.plugins.parsers.trig
TrigParserzrdflib.plugins.parsers.hextHextuplesParserzrdflib.plugins.parsers.patchRDFPatchParsersparqlzrdflib.plugins.sparql.processorSPARQLResultSPARQLProcessorSPARQLUpdateProcessorz(rdflib.plugins.sparql.results.xmlresultsXMLResultSerializerzapplication/sparql-results+xmltxtz(rdflib.plugins.sparql.results.txtresultsTXTResultSerializerjsonz)rdflib.plugins.sparql.results.jsonresultsJSONResultSerializerzapplication/sparql-results+jsoncsvz(rdflib.plugins.sparql.results.csvresultsCSVResultSerializerztext/csvXMLResultParserJSONResultParserCSVResultParsertsvz(rdflib.plugins.sparql.results.tsvresultsTSVResultParserztext/tab-separated-valuesc                 C     h | ]}|j qS r#   r&   .0parserr#   r#   r$   	<setcomp>i      r   )r(   c                 C  r   r#   r   r   r#   r#   r$   r   j  r   z#rdflib.plugins.sparql.results.graph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    rdflib.plugins.stores.berkeleydbrdflibrdflib.exceptionsr   rdflib.parserr   rdflib.queryr   r   r   r   r   rdflib.serializerr   rdflib.storer   __all__rdflib_entry_pointsr   __annotations__r   r   r   r   r   r   all_entry_pointshasattritemsentry_pointr(   r@   r:   r&   
isinstancedictr   stores
berkeleydb	has_bsddbgraph_parsersresult_parsersgraph_result_parsersparser_namer#   r#   r#   r$   <module>   s   0

	
