summaryrefslogtreecommitdiff
path: root/rdflib/plugins
diff options
context:
space:
mode:
authorNicholas Car <nicholas.car@surroundaustralia.com>2021-03-05 21:38:26 +1000
committerGitHub <noreply@github.com>2021-03-05 21:38:26 +1000
commite3664573b7e69ff6920e3efffd28b1db8552fa4e (patch)
treea66cba76a780aaad6bb2ad9b69143677ea818272 /rdflib/plugins
parentb41560f4c5f5cbf1424d24492ee15c28f65fa197 (diff)
parent07bc739597f713571d31256433d0a253e3f9cf97 (diff)
downloadrdflib-e3664573b7e69ff6920e3efffd28b1db8552fa4e.tar.gz
Merge pull request #1192 from FlorianLudwig/sparql-speedup
optimize sparql.Bindings
Diffstat (limited to 'rdflib/plugins')
-rw-r--r--rdflib/plugins/sparql/sparql.py21
1 files changed, 11 insertions, 10 deletions
diff --git a/rdflib/plugins/sparql/sparql.py b/rdflib/plugins/sparql/sparql.py
index b75b8054..15221650 100644
--- a/rdflib/plugins/sparql/sparql.py
+++ b/rdflib/plugins/sparql/sparql.py
@@ -52,12 +52,12 @@ class Bindings(MutableMapping):
self.outer = outer
def __getitem__(self, key):
- try:
+ if key in self._d:
return self._d[key]
- except KeyError:
- if not self.outer:
- raise
- return self.outer[key]
+
+ if not self.outer:
+ raise KeyError()
+ return self.outer[key]
def __contains__(self, key):
try:
@@ -72,17 +72,18 @@ class Bindings(MutableMapping):
def __delitem__(self, key):
raise Exception("DelItem is not implemented!")
- def __len__(self):
+ def __len__(self) -> int:
i = 0
- for x in self:
- i += 1
+ d = self
+ while d is not None:
+ i += len(d._d)
+ d = d.outer
return i
def __iter__(self):
d = self
while d is not None:
- for i in dict.__iter__(d._d):
- yield i
+ yield from d._d
d = d.outer
def __str__(self):