Mercurial > repos > shellac > sam_consensus_v3
comparison env/lib/python3.9/site-packages/rdflib/plugin.py @ 0:4f3585e2f14b draft default tip
"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
| author | shellac |
|---|---|
| date | Mon, 22 Mar 2021 18:12:50 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:4f3585e2f14b |
|---|---|
| 1 """ | |
| 2 Plugin support for rdf. | |
| 3 | |
| 4 There are a number of plugin points for rdf: parser, serializer, | |
| 5 store, query processor, and query result. Plugins can be registered | |
| 6 either through setuptools entry_points or by calling | |
| 7 rdf.plugin.register directly. | |
| 8 | |
| 9 If you have a package that uses a setuptools based setup.py you can add the | |
| 10 following to your setup:: | |
| 11 | |
| 12 entry_points = { | |
| 13 'rdf.plugins.parser': [ | |
| 14 'nt = rdf.plugins.parsers.nt:NTParser', | |
| 15 ], | |
| 16 'rdf.plugins.serializer': [ | |
| 17 'nt = rdf.plugins.serializers.NTSerializer:NTSerializer', | |
| 18 ], | |
| 19 } | |
| 20 | |
| 21 See the `setuptools dynamic discovery of services and plugins`__ for more | |
| 22 information. | |
| 23 | |
| 24 .. __: http://peak.telecommunity.com/DevCenter/setuptools#dynamic-discovery-of-services-and-plugins | |
| 25 | |
| 26 """ | |
| 27 from __future__ import absolute_import | |
| 28 from __future__ import division | |
| 29 from __future__ import print_function | |
| 30 | |
| 31 from rdflib.store import Store | |
| 32 from rdflib.parser import Parser | |
| 33 from rdflib.serializer import Serializer | |
| 34 from rdflib.query import ResultParser, ResultSerializer, \ | |
| 35 Processor, Result, UpdateProcessor | |
| 36 from rdflib.exceptions import Error | |
| 37 | |
| 38 __all__ = [ | |
| 39 'register', 'get', 'plugins', 'PluginException', 'Plugin', 'PKGPlugin'] | |
| 40 | |
| 41 entry_points = {'rdf.plugins.store': Store, | |
| 42 'rdf.plugins.serializer': Serializer, | |
| 43 'rdf.plugins.parser': Parser, | |
| 44 'rdf.plugins.resultparser': ResultParser, | |
| 45 'rdf.plugins.resultserializer': ResultSerializer, | |
| 46 'rdf.plugins.queryprocessor': Processor, | |
| 47 'rdf.plugins.queryresult': Result, | |
| 48 'rdf.plugins.updateprocessor': UpdateProcessor | |
| 49 } | |
| 50 | |
| 51 _plugins = {} | |
| 52 | |
| 53 | |
| 54 class PluginException(Error): | |
| 55 pass | |
| 56 | |
| 57 | |
| 58 class Plugin(object): | |
| 59 | |
| 60 def __init__(self, name, kind, module_path, class_name): | |
| 61 self.name = name | |
| 62 self.kind = kind | |
| 63 self.module_path = module_path | |
| 64 self.class_name = class_name | |
| 65 self._class = None | |
| 66 | |
| 67 def getClass(self): | |
| 68 if self._class is None: | |
| 69 module = __import__(self.module_path, globals(), locals(), [""]) | |
| 70 self._class = getattr(module, self.class_name) | |
| 71 return self._class | |
| 72 | |
| 73 | |
| 74 class PKGPlugin(Plugin): | |
| 75 | |
| 76 def __init__(self, name, kind, ep): | |
| 77 self.name = name | |
| 78 self.kind = kind | |
| 79 self.ep = ep | |
| 80 self._class = None | |
| 81 | |
| 82 def getClass(self): | |
| 83 if self._class is None: | |
| 84 self._class = self.ep.load() | |
| 85 return self._class | |
| 86 | |
| 87 | |
| 88 def register(name, kind, module_path, class_name): | |
| 89 """ | |
| 90 Register the plugin for (name, kind). The module_path and | |
| 91 class_name should be the path to a plugin class. | |
| 92 """ | |
| 93 p = Plugin(name, kind, module_path, class_name) | |
| 94 _plugins[(name, kind)] = p | |
| 95 | |
| 96 | |
| 97 def get(name, kind): | |
| 98 """ | |
| 99 Return the class for the specified (name, kind). Raises a | |
| 100 PluginException if unable to do so. | |
| 101 """ | |
| 102 try: | |
| 103 p = _plugins[(name, kind)] | |
| 104 except KeyError: | |
| 105 raise PluginException( | |
| 106 "No plugin registered for (%s, %s)" % (name, kind)) | |
| 107 return p.getClass() | |
| 108 | |
| 109 | |
| 110 try: | |
| 111 from pkg_resources import iter_entry_points | |
| 112 except ImportError: | |
| 113 pass # TODO: log a message | |
| 114 else: | |
| 115 # add the plugins specified via pkg_resources' EntryPoints. | |
| 116 for entry_point, kind in entry_points.items(): | |
| 117 for ep in iter_entry_points(entry_point): | |
| 118 _plugins[(ep.name, kind)] = PKGPlugin(ep.name, kind, ep) | |
| 119 | |
| 120 | |
| 121 def plugins(name=None, kind=None): | |
| 122 """ | |
| 123 A generator of the plugins. | |
| 124 | |
| 125 Pass in name and kind to filter... else leave None to match all. | |
| 126 """ | |
| 127 for p in _plugins.values(): | |
| 128 if (name is None or name == p.name) and ( | |
| 129 kind is None or kind == p.kind): | |
| 130 yield p | |
| 131 | |
| 132 | |
| 133 register( | |
| 134 'default', Store, | |
| 135 'rdflib.plugins.memory', 'IOMemory') | |
| 136 register( | |
| 137 'IOMemory', Store, | |
| 138 'rdflib.plugins.memory', 'IOMemory') | |
| 139 register( | |
| 140 'Auditable', Store, | |
| 141 'rdflib.plugins.stores.auditable', 'AuditableStore') | |
| 142 register( | |
| 143 'Concurrent', Store, | |
| 144 'rdflib.plugins.stores.concurrent', 'ConcurrentStore') | |
| 145 register( | |
| 146 'Sleepycat', Store, | |
| 147 'rdflib.plugins.sleepycat', 'Sleepycat') | |
| 148 register( | |
| 149 'SPARQLStore', Store, | |
| 150 'rdflib.plugins.stores.sparqlstore', 'SPARQLStore') | |
| 151 register( | |
| 152 'SPARQLUpdateStore', Store, | |
| 153 'rdflib.plugins.stores.sparqlstore', 'SPARQLUpdateStore') | |
| 154 | |
| 155 register( | |
| 156 'application/rdf+xml', Serializer, | |
| 157 'rdflib.plugins.serializers.rdfxml', 'XMLSerializer') | |
| 158 register( | |
| 159 'xml', Serializer, | |
| 160 'rdflib.plugins.serializers.rdfxml', 'XMLSerializer') | |
| 161 register( | |
| 162 'text/n3', Serializer, | |
| 163 'rdflib.plugins.serializers.n3', 'N3Serializer') | |
| 164 register( | |
| 165 'n3', Serializer, | |
| 166 'rdflib.plugins.serializers.n3', 'N3Serializer') | |
| 167 register( | |
| 168 'text/turtle', Serializer, | |
| 169 'rdflib.plugins.serializers.turtle', 'TurtleSerializer') | |
| 170 register( | |
| 171 'turtle', Serializer, | |
| 172 'rdflib.plugins.serializers.turtle', 'TurtleSerializer') | |
| 173 register( | |
| 174 'ttl', Serializer, | |
| 175 'rdflib.plugins.serializers.turtle', 'TurtleSerializer') | |
| 176 register( | |
| 177 'trig', Serializer, | |
| 178 'rdflib.plugins.serializers.trig', 'TrigSerializer') | |
| 179 register( | |
| 180 'application/n-triples', Serializer, | |
| 181 'rdflib.plugins.serializers.nt', 'NTSerializer') | |
| 182 register( | |
| 183 'ntriples', Serializer, | |
| 184 'rdflib.plugins.serializers.nt', 'NTSerializer') | |
| 185 register( | |
| 186 'nt', Serializer, | |
| 187 'rdflib.plugins.serializers.nt', 'NTSerializer') | |
| 188 register( | |
| 189 'nt11', Serializer, | |
| 190 'rdflib.plugins.serializers.nt', 'NT11Serializer') | |
| 191 | |
| 192 register( | |
| 193 'pretty-xml', Serializer, | |
| 194 'rdflib.plugins.serializers.rdfxml', 'PrettyXMLSerializer') | |
| 195 register( | |
| 196 'trix', Serializer, | |
| 197 'rdflib.plugins.serializers.trix', 'TriXSerializer') | |
| 198 register( | |
| 199 'application/trix', Serializer, | |
| 200 'rdflib.plugins.serializers.trix', 'TriXSerializer') | |
| 201 register( | |
| 202 'application/n-quads', Serializer, | |
| 203 'rdflib.plugins.serializers.nquads', 'NQuadsSerializer') | |
| 204 register( | |
| 205 'nquads', Serializer, | |
| 206 'rdflib.plugins.serializers.nquads', 'NQuadsSerializer') | |
| 207 | |
| 208 register( | |
| 209 'application/rdf+xml', Parser, | |
| 210 'rdflib.plugins.parsers.rdfxml', 'RDFXMLParser') | |
| 211 register( | |
| 212 'xml', Parser, | |
| 213 'rdflib.plugins.parsers.rdfxml', 'RDFXMLParser') | |
| 214 register( | |
| 215 'text/n3', Parser, | |
| 216 'rdflib.plugins.parsers.notation3', 'N3Parser') | |
| 217 register( | |
| 218 'n3', Parser, | |
| 219 'rdflib.plugins.parsers.notation3', 'N3Parser') | |
| 220 register( | |
| 221 'text/turtle', Parser, | |
| 222 'rdflib.plugins.parsers.notation3', 'TurtleParser') | |
| 223 register( | |
| 224 'turtle', Parser, | |
| 225 'rdflib.plugins.parsers.notation3', 'TurtleParser') | |
| 226 register( | |
| 227 'ttl', Parser, | |
| 228 'rdflib.plugins.parsers.notation3', 'TurtleParser') | |
| 229 register( | |
| 230 'application/n-triples', Parser, | |
| 231 'rdflib.plugins.parsers.nt', 'NTParser') | |
| 232 register( | |
| 233 'ntriples', Parser, | |
| 234 'rdflib.plugins.parsers.nt', 'NTParser') | |
| 235 register( | |
| 236 'nt', Parser, | |
| 237 'rdflib.plugins.parsers.nt', 'NTParser') | |
| 238 register( | |
| 239 'nt11', Parser, | |
| 240 'rdflib.plugins.parsers.nt', 'NTParser') | |
| 241 register( | |
| 242 'application/n-quads', Parser, | |
| 243 'rdflib.plugins.parsers.nquads', 'NQuadsParser') | |
| 244 register( | |
| 245 'nquads', Parser, | |
| 246 'rdflib.plugins.parsers.nquads', 'NQuadsParser') | |
| 247 register( | |
| 248 'application/trix', Parser, | |
| 249 'rdflib.plugins.parsers.trix', 'TriXParser') | |
| 250 register( | |
| 251 'trix', Parser, | |
| 252 'rdflib.plugins.parsers.trix', 'TriXParser') | |
| 253 register( | |
| 254 'trig', Parser, | |
| 255 'rdflib.plugins.parsers.trig', 'TrigParser') | |
| 256 | |
| 257 | |
| 258 register( | |
| 259 'sparql', Result, | |
| 260 'rdflib.plugins.sparql.processor', 'SPARQLResult') | |
| 261 register( | |
| 262 'sparql', Processor, | |
| 263 'rdflib.plugins.sparql.processor', 'SPARQLProcessor') | |
| 264 | |
| 265 register( | |
| 266 'sparql', UpdateProcessor, | |
| 267 'rdflib.plugins.sparql.processor', 'SPARQLUpdateProcessor') | |
| 268 | |
| 269 | |
| 270 register( | |
| 271 'xml', ResultSerializer, | |
| 272 'rdflib.plugins.sparql.results.xmlresults', 'XMLResultSerializer') | |
| 273 register( | |
| 274 'application/sparql-results+xml', ResultSerializer, | |
| 275 'rdflib.plugins.sparql.results.xmlresults', 'XMLResultSerializer') | |
| 276 register( | |
| 277 'txt', ResultSerializer, | |
| 278 'rdflib.plugins.sparql.results.txtresults', 'TXTResultSerializer') | |
| 279 register( | |
| 280 'json', ResultSerializer, | |
| 281 'rdflib.plugins.sparql.results.jsonresults', 'JSONResultSerializer') | |
| 282 register( | |
| 283 'application/sparql-results+json', ResultSerializer, | |
| 284 'rdflib.plugins.sparql.results.jsonresults', 'JSONResultSerializer') | |
| 285 register( | |
| 286 'csv', ResultSerializer, | |
| 287 'rdflib.plugins.sparql.results.csvresults', 'CSVResultSerializer') | |
| 288 register( | |
| 289 'text/csv', ResultSerializer, | |
| 290 'rdflib.plugins.sparql.results.csvresults', 'CSVResultSerializer') | |
| 291 | |
| 292 register( | |
| 293 'xml', ResultParser, | |
| 294 'rdflib.plugins.sparql.results.xmlresults', 'XMLResultParser') | |
| 295 register( | |
| 296 'application/sparql-results+xml', ResultParser, | |
| 297 'rdflib.plugins.sparql.results.xmlresults', 'XMLResultParser') | |
| 298 register( | |
| 299 'application/sparql-results+xml; charset=UTF-8', ResultParser, | |
| 300 'rdflib.plugins.sparql.results.xmlresults', 'XMLResultParser') | |
| 301 | |
| 302 register( | |
| 303 'application/rdf+xml', ResultParser, | |
| 304 'rdflib.plugins.sparql.results.graph', 'GraphResultParser') | |
| 305 | |
| 306 | |
| 307 register( | |
| 308 'json', ResultParser, | |
| 309 'rdflib.plugins.sparql.results.jsonresults', 'JSONResultParser') | |
| 310 register( | |
| 311 'application/sparql-results+json', ResultParser, | |
| 312 'rdflib.plugins.sparql.results.jsonresults', 'JSONResultParser') | |
| 313 | |
| 314 register( | |
| 315 'csv', ResultParser, | |
| 316 'rdflib.plugins.sparql.results.csvresults', 'CSVResultParser') | |
| 317 register( | |
| 318 'text/csv', ResultParser, | |
| 319 'rdflib.plugins.sparql.results.csvresults', 'CSVResultParser') | |
| 320 | |
| 321 register( | |
| 322 'tsv', ResultParser, | |
| 323 'rdflib.plugins.sparql.results.tsvresults', 'TSVResultParser') | |
| 324 register( | |
| 325 'text/tab-separated-values', ResultParser, | |
| 326 'rdflib.plugins.sparql.results.tsvresults', 'TSVResultParser') |
