Skip to content

Commit eaa340c

Browse files
committed
Iteration fixes
1 parent f16f9c1 commit eaa340c

File tree

4 files changed

+20
-23
lines changed

4 files changed

+20
-23
lines changed

examples/test_examples.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ def test_transaction_commit(self):
158158
tx.commit()
159159
# end::transaction-commit[]
160160
result = session.run("MATCH (p:Person {name: 'Guinevere'}) RETURN count(p)")
161-
record = next(result)
161+
record = next(iter(result))
162162
assert record["count(p)"] == 1
163163
session.close()
164164

@@ -171,7 +171,7 @@ def test_transaction_rollback(self):
171171
tx.rollback()
172172
# end::transaction-rollback[]
173173
result = session.run("MATCH (p:Person {name: 'Merlin'}) RETURN count(p)")
174-
record = next(result)
174+
record = next(iter(result))
175175
assert record["count(p)"] == 0
176176
session.close()
177177

neo4j/v1/session.py

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -206,19 +206,14 @@ def on_failure(metadata):
206206
pull_all_response.on_failure = on_failure
207207

208208
def __iter__(self):
209-
return self
210-
211-
def __next__(self):
212-
if self._buffer:
209+
while self._buffer and not self._consumed:
213210
values = self._buffer.popleft()
214-
return Record(self.keys(), tuple(map(hydrated, values)))
215-
elif self._consumed:
216-
raise StopIteration()
217-
else:
218-
fetch = self.connection.fetch
219-
while not self._buffer and not self._consumed:
220-
fetch()
221-
return self.__next__()
211+
yield Record(self.keys(), tuple(map(hydrated, values)))
212+
while not self._consumed:
213+
self.connection.fetch()
214+
if self._buffer:
215+
values = self._buffer.popleft()
216+
yield Record(self.keys(), tuple(map(hydrated, values)))
222217

223218
def keys(self):
224219
""" Return the keys for the records.

test/tck/tck_util.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,17 @@
2929
def send_string(text):
3030
session = driver.session()
3131
result = session.run(text)
32+
records = list(result)
3233
session.close()
33-
return list(result)
34+
return records
3435

3536

3637
def send_parameters(statement, parameters):
3738
session = driver.session()
3839
result = session.run(statement, parameters)
40+
records = list(result)
3941
session.close()
40-
return list(result)
42+
return records
4143

4244

4345
try:

test/test_session.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ def test_automatic_reset_after_failure(self):
330330
session.run("X").consume()
331331
except CypherError:
332332
result = session.run("RETURN 1")
333-
record = next(result)
333+
record = next(iter(result))
334334
assert record[0] == 1
335335
else:
336336
assert False, "A Cypher error should have occurred"
@@ -424,7 +424,7 @@ def test_can_commit_transaction(self):
424424

425425
# Create a node
426426
result = tx.run("CREATE (a) RETURN id(a)")
427-
record = next(result)
427+
record = next(iter(result))
428428
node_id = record[0]
429429
assert isinstance(node_id, int)
430430

@@ -437,7 +437,7 @@ def test_can_commit_transaction(self):
437437
# Check the property value
438438
result = session.run("MATCH (a) WHERE id(a) = {n} "
439439
"RETURN a.foo", {"n": node_id})
440-
record = next(result)
440+
record = next(iter(result))
441441
value = record[0]
442442
assert value == "bar"
443443

@@ -447,7 +447,7 @@ def test_can_rollback_transaction(self):
447447

448448
# Create a node
449449
result = tx.run("CREATE (a) RETURN id(a)")
450-
record = next(result)
450+
record = next(iter(result))
451451
node_id = record[0]
452452
assert isinstance(node_id, int)
453453

@@ -467,7 +467,7 @@ def test_can_commit_transaction_using_with_block(self):
467467
with session.begin_transaction() as tx:
468468
# Create a node
469469
result = tx.run("CREATE (a) RETURN id(a)")
470-
record = next(result)
470+
record = next(iter(result))
471471
node_id = record[0]
472472
assert isinstance(node_id, int)
473473

@@ -480,7 +480,7 @@ def test_can_commit_transaction_using_with_block(self):
480480
# Check the property value
481481
result = session.run("MATCH (a) WHERE id(a) = {n} "
482482
"RETURN a.foo", {"n": node_id})
483-
record = next(result)
483+
record = next(iter(result))
484484
value = record[0]
485485
assert value == "bar"
486486

@@ -489,7 +489,7 @@ def test_can_rollback_transaction_using_with_block(self):
489489
with session.begin_transaction() as tx:
490490
# Create a node
491491
result = tx.run("CREATE (a) RETURN id(a)")
492-
record = next(result)
492+
record = next(iter(result))
493493
node_id = record[0]
494494
assert isinstance(node_id, int)
495495

0 commit comments

Comments
 (0)