Skip to content

Commit 6574439

Browse files
authored
Merge pull request #152 from srbaker/1.2-update-documentation
update documentation
2 parents 370d60b + a498cd5 commit 6574439

21 files changed

+847
-5
lines changed

neo4j/v1/api.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
from collections import deque
2323
from random import random
2424
from threading import RLock
25-
from time import clock, sleep
25+
from time import time, sleep
2626
from warnings import warn
2727

2828
from neo4j.bolt import ProtocolError, ServiceUnavailable
@@ -422,7 +422,7 @@ def _run_transaction(self, access_mode, unit_of_work, *args, **kwargs):
422422
RETRY_DELAY_MULTIPLIER,
423423
RETRY_DELAY_JITTER_FACTOR)
424424
last_error = None
425-
t0 = t1 = clock()
425+
t0 = t1 = time()
426426
while t1 - t0 <= self._max_retry_time:
427427
try:
428428
self._create_transaction()
@@ -438,7 +438,7 @@ def _run_transaction(self, access_mode, unit_of_work, *args, **kwargs):
438438
else:
439439
raise error
440440
sleep(next(retry_delay))
441-
t1 = clock()
441+
t1 = time()
442442
raise last_error
443443

444444
def read_transaction(self, unit_of_work, *args, **kwargs):

neo4j/v1/session.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,11 @@ def __run__(self, statement, parameters):
4747
result.statement = statement
4848
result.parameters = parameters
4949

50-
self._connection.append(RUN, (statement, parameters), response=run_response)
51-
self._connection.append(PULL_ALL, response=pull_all_response)
50+
try:
51+
self._connection.append(RUN, (statement, parameters), response=run_response)
52+
self._connection.append(PULL_ALL, response=pull_all_response)
53+
except AttributeError:
54+
pass
5255

5356
return result
5457

test/examples/__main__.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#!/usr/bin/env python
2+
# -*- encoding: utf-8 -*-
3+
4+
# Copyright (c) 2002-2017 "Neo Technology,"
5+
# Network Engine for Objects in Lund AB [http://neotechnology.com]
6+
#
7+
# This file is part of Neo4j.
8+
#
9+
# Licensed under the Apache License, Version 2.0 (the "License");
10+
# you may not use this file except in compliance with the License.
11+
# You may obtain a copy of the License at
12+
#
13+
# http://www.apache.org/licenses/LICENSE-2.0
14+
#
15+
# Unless required by applicable law or agreed to in writing, software
16+
# distributed under the License is distributed on an "AS IS" BASIS,
17+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18+
# See the License for the specific language governing permissions and
19+
# limitations under the License.
20+
21+
22+
if __name__ == "__main__":
23+
from os.path import dirname
24+
from test.tools import run_tests
25+
run_tests(dirname(__file__))
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#!/usr/bin/env python
2+
# -*- encoding: utf-8 -*-
3+
4+
# Copyright (c) 2002-2017 "Neo Technology,"
5+
# Network Engine for Objects in Lund AB [http://neotechnology.com]
6+
#
7+
# This file is part of Neo4j.
8+
#
9+
# Licensed under the Apache License, Version 2.0 (the "License");
10+
# you may not use this file except in compliance with the License.
11+
# You may obtain a copy of the License at
12+
#
13+
# http://www.apache.org/licenses/LICENSE-2.0
14+
#
15+
# Unless required by applicable law or agreed to in writing, software
16+
# distributed under the License is distributed on an "AS IS" BASIS,
17+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18+
# See the License for the specific language governing permissions and
19+
# limitations under the License.
20+
21+
# tag::autocommit-transaction-import[]
22+
from neo4j.v1 import Session;
23+
from base_application import BaseApplication
24+
# end::autocommit-transaction-import[]
25+
26+
class AutocommitTransactionExample(BaseApplication):
27+
def __init__(self, uri, user, password):
28+
super(AutocommitTransactionExample, self).__init__(uri, user, password)
29+
30+
# tag::autocommit-transaction[]
31+
def add_person(self, name):
32+
session = self._driver.session()
33+
session.run( "CREATE (a:Person {name: $name})", {"name": name} )
34+
# end::autocommit-transaction[]

test/examples/base_application.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#!/usr/bin/env python
2+
# -*- encoding: utf-8 -*-
3+
4+
# Copyright (c) 2002-2017 "Neo Technology,"
5+
# Network Engine for Objects in Lund AB [http://neotechnology.com]
6+
#
7+
# This file is part of Neo4j.
8+
#
9+
# Licensed under the Apache License, Version 2.0 (the "License");
10+
# you may not use this file except in compliance with the License.
11+
# You may obtain a copy of the License at
12+
#
13+
# http://www.apache.org/licenses/LICENSE-2.0
14+
#
15+
# Unless required by applicable law or agreed to in writing, software
16+
# distributed under the License is distributed on an "AS IS" BASIS,
17+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18+
# See the License for the specific language governing permissions and
19+
# limitations under the License.
20+
21+
from neo4j.v1 import GraphDatabase
22+
23+
class BaseApplication(object):
24+
def __init__(self, uri, user, password):
25+
self._driver = GraphDatabase.driver( uri, auth=( user, password ) )
26+
27+
def close(self):
28+
self._driver.close();

test/examples/basic_auth_example.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#!/usr/bin/env python
2+
# -*- encoding: utf-8 -*-
3+
4+
# Copyright (c) 2002-2017 "Neo Technology,"
5+
# Network Engine for Objects in Lund AB [http://neotechnology.com]
6+
#
7+
# This file is part of Neo4j.
8+
#
9+
# Licensed under the Apache License, Version 2.0 (the "License");
10+
# you may not use this file except in compliance with the License.
11+
# You may obtain a copy of the License at
12+
#
13+
# http://www.apache.org/licenses/LICENSE-2.0
14+
#
15+
# Unless required by applicable law or agreed to in writing, software
16+
# distributed under the License is distributed on an "AS IS" BASIS,
17+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18+
# See the License for the specific language governing permissions and
19+
# limitations under the License.
20+
21+
# tag::basic-auth-import[]
22+
from neo4j.v1 import GraphDatabase
23+
# end::basic-auth-import[]
24+
25+
class BasicAuthExample:
26+
# tag::basic-auth[]
27+
def __init__(self, uri, user, password):
28+
self._driver = GraphDatabase.driver(uri, auth=(user, password))
29+
# end::basic-auth[]
30+
31+
def close(self):
32+
self._driver.close()
33+
34+
def can_connect(self):
35+
record_list = list(self._driver.session().run("RETURN 1"))
36+
return int(record_list[0][0]) == 1
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#!/usr/bin/env python
2+
# -*- encoding: utf-8 -*-
3+
4+
# Copyright (c) 2002-2017 "Neo Technology,"
5+
# Network Engine for Objects in Lund AB [http://neotechnology.com]
6+
#
7+
# This file is part of Neo4j.
8+
#
9+
# Licensed under the Apache License, Version 2.0 (the "License");
10+
# you may not use this file except in compliance with the License.
11+
# You may obtain a copy of the License at
12+
#
13+
# http://www.apache.org/licenses/LICENSE-2.0
14+
#
15+
# Unless required by applicable law or agreed to in writing, software
16+
# distributed under the License is distributed on an "AS IS" BASIS,
17+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18+
# See the License for the specific language governing permissions and
19+
# limitations under the License.
20+
21+
# tag::config-connection-timeout-import[]
22+
from neo4j.v1 import GraphDatabase
23+
# end::config-connection-timeout-import[]
24+
25+
class ConfigConnectionTimeoutExample:
26+
# tag::config-connection-timeout[]
27+
def __init__(self, uri, user, password):
28+
self._driver = GraphDatabase.driver( uri, auth=( user, password ),
29+
Config.build().withConnectionTimeout( 15, SECONDS ).toConfig() )
30+
# end::config-connection-timeout[]
31+
32+
def close(self):
33+
self._driver.close();
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#!/usr/bin/env python
2+
# -*- encoding: utf-8 -*-
3+
4+
# Copyright (c) 2002-2017 "Neo Technology,"
5+
# Network Engine for Objects in Lund AB [http://neotechnology.com]
6+
#
7+
# This file is part of Neo4j.
8+
#
9+
# Licensed under the Apache License, Version 2.0 (the "License");
10+
# you may not use this file except in compliance with the License.
11+
# You may obtain a copy of the License at
12+
#
13+
# http://www.apache.org/licenses/LICENSE-2.0
14+
#
15+
# Unless required by applicable law or agreed to in writing, software
16+
# distributed under the License is distributed on an "AS IS" BASIS,
17+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18+
# See the License for the specific language governing permissions and
19+
# limitations under the License.
20+
21+
# tag::config-max-retry-time-import[]
22+
from neo4j.v1 import GraphDatabase
23+
# end::config-max-retry-time-import[]
24+
25+
class ConfigMaxRetryTimeExample:
26+
# tag::config-max-retry-time[]
27+
def __init__(self, uri, user, password):
28+
self._driver = GraphDatabase.driver(uri, auth=(user, password),
29+
Config.build().withMaxTransactionRetryTime( 15, SECONDS ).toConfig() )
30+
# end::config-max-retry-time[]
31+
32+
def close(self):
33+
self._driver.close();

test/examples/config_trust_example.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#!/usr/bin/env python
2+
# -*- encoding: utf-8 -*-
3+
4+
# Copyright (c) 2002-2017 "Neo Technology,"
5+
# Network Engine for Objects in Lund AB [http://neotechnology.com]
6+
#
7+
# This file is part of Neo4j.
8+
#
9+
# Licensed under the Apache License, Version 2.0 (the "License");
10+
# you may not use this file except in compliance with the License.
11+
# You may obtain a copy of the License at
12+
#
13+
# http://www.apache.org/licenses/LICENSE-2.0
14+
#
15+
# Unless required by applicable law or agreed to in writing, software
16+
# distributed under the License is distributed on an "AS IS" BASIS,
17+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18+
# See the License for the specific language governing permissions and
19+
# limitations under the License.
20+
21+
# tag::config-trust-import[]
22+
from neo4j.v1 import GraphDatabase
23+
# end::config-trust-import[]
24+
25+
class ConfigTrustExample:
26+
# tag::config-trust[]
27+
def __init__(self, uri, user, password):
28+
self._driver = GraphDatabase.driver(uri, auth=(user, password),
29+
Config.build().withTrustStrategy( Config.TrustStrategy.trustSystemCertificates() ).toConfig() )
30+
# end::config-trust[]
31+
32+
def close(self):
33+
self._driver.close();
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#!/usr/bin/env python
2+
# -*- encoding: utf-8 -*-
3+
4+
# Copyright (c) 2002-2017 "Neo Technology,"
5+
# Network Engine for Objects in Lund AB [http://neotechnology.com]
6+
#
7+
# This file is part of Neo4j.
8+
#
9+
# Licensed under the Apache License, Version 2.0 (the "License");
10+
# you may not use this file except in compliance with the License.
11+
# You may obtain a copy of the License at
12+
#
13+
# http://www.apache.org/licenses/LICENSE-2.0
14+
#
15+
# Unless required by applicable law or agreed to in writing, software
16+
# distributed under the License is distributed on an "AS IS" BASIS,
17+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18+
# See the License for the specific language governing permissions and
19+
# limitations under the License.
20+
21+
# tag::config-unencrypted-import[]
22+
from neo4j.v1 import GraphDatabase
23+
# end::config-unencrypted-import[]
24+
25+
class ConfigUnencryptedExample:
26+
# tag::config-unencrypted[]
27+
def __init__(self, uri, user, password):
28+
self._driver = GraphDatabase.driver(uri, auth=(user, password), encrypted=False)
29+
# end::config-unencrypted[]
30+
31+
def close(self):
32+
self._driver.close();

test/examples/custom_auth_example.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#!/usr/bin/env python
2+
# -*- encoding: utf-8 -*-
3+
4+
# Copyright (c) 2002-2017 "Neo Technology,"
5+
# Network Engine for Objects in Lund AB [http://neotechnology.com]
6+
#
7+
# This file is part of Neo4j.
8+
#
9+
# Licensed under the Apache License, Version 2.0 (the "License");
10+
# you may not use this file except in compliance with the License.
11+
# You may obtain a copy of the License at
12+
#
13+
# http://www.apache.org/licenses/LICENSE-2.0
14+
#
15+
# Unless required by applicable law or agreed to in writing, software
16+
# distributed under the License is distributed on an "AS IS" BASIS,
17+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18+
# See the License for the specific language governing permissions and
19+
# limitations under the License.
20+
21+
# tag::custom-auth-import[]
22+
from neo4j.v1 import GraphDatabase;
23+
# end::custom-auth-import[]
24+
25+
class CustomAuthExample:
26+
# tag::custom-auth[]
27+
def __init__(self, uri, principal, credentials, realm, scheme, parameters):
28+
self._driver = GraphDatabase.driver( uri, auth=(principal, credentials, realm, scheme, parameters))
29+
# end::custom-auth[]
30+
31+
def close(self):
32+
self._driver.close()

test/examples/cypher_error_example.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#!/usr/bin/env python
2+
# -*- encoding: utf-8 -*-
3+
4+
# Copyright (c) 2002-2017 "Neo Technology,"
5+
# Network Engine for Objects in Lund AB [http://neotechnology.com]
6+
#
7+
# This file is part of Neo4j.
8+
#
9+
# Licensed under the Apache License, Version 2.0 (the "License");
10+
# you may not use this file except in compliance with the License.
11+
# You may obtain a copy of the License at
12+
#
13+
# http://www.apache.org/licenses/LICENSE-2.0
14+
#
15+
# Unless required by applicable law or agreed to in writing, software
16+
# distributed under the License is distributed on an "AS IS" BASIS,
17+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18+
# See the License for the specific language governing permissions and
19+
# limitations under the License.
20+
21+
# tag::cypher-error-import[]
22+
from neo4j.v1 import GraphDatabase, ClientError
23+
from base_application import BaseApplication
24+
# end::cypher-error-import[]
25+
26+
class CypherErrorExample(BaseApplication):
27+
def __init__(self, uri, user, password):
28+
super(CypherErrorExample, self).__init__(uri, user, password)
29+
30+
# tag::cypher-error[]
31+
def get_employee_number(self, name):
32+
session = self._driver.session()
33+
session.read_transaction(lambda tx: self.select_employee(tx, name))
34+
35+
def select_employee(self, tx, name):
36+
try:
37+
record_list = list(tx.run("SELECT * FROM Employees WHERE name = $name", {"name": name}))
38+
return int(record_list[0]["employee_number"])
39+
except ClientError as e:
40+
print(e.message)
41+
return -1
42+
# end::cypher-error[]

0 commit comments

Comments
 (0)