Project description

Neo4j Python REST Client

The first objective of Neo4j Python REST Client is to make transparent for
Python programmers the use of a local database through python-embedded or a
remote database thanks to Neo4j REST Server. So, the syntax of this API is
fully compatible with python-embedded. However, a new syntax is introduced in
order to reach a more pythonic style.

Fixes #98. Bug due to an incorrect treatment of numbers in eq, equals,
neq, notequals lookups

Add downloads

Split exceptions from request.py file to a exceptions.py file

Update requirements.txt

Fix #96, fix dependency versions

Fix #95. Support for creating spatial indexes

2.0.0 (2013-12-30)

Add support for Neo4j 2.0

Add Python3 support

Remove Python 2.6 support

Add support for Cypher transactional endpoint

Add documentation for Cypher transactions

Add support for Labels

Add documentation for Labels

Add support to pass Neo4j URL as the host, and neo4j-rest-client will request
for the ‘/db/data’ part in an extra request

Add option for enabling verification of SSL certificates

Fix #94. Disable lazy loading from Cypher queries but keep if for filters

Update documentation

Add the option to ‘create’ labels and add nodes to them

Add filtering support for Labels

Add tests for Labels

Better structure to organize tests

Add UnitTest.skipIf instead of my own decorator @versions

Add development requirements and PyPy to Travis

Add flake8

Add support for tox

Skip some test that depend on newer versions of other dependencies

Update README with Coveralls.io image

Add coverage

Add extra requires for tests

Enable syntax highlighting, fix spelling errors

Fix #92. Allow nodes to be deleted from index without key or value

Fix an error on traversals time_out when decimal values are passed

Update Neo4j versions for Travis

PEP8 review

Add .all method to get all the elements. Underneath, it invokes .filter
with no arguments

Merge pull request #85 from carlsonp/patch-1

1.9.0 (2013-05-27)

Add Neo4j 1.9 and 2.0.0-M02 to tests and Travis.

Fix Python 2.6 compatibility. Last Python 2.6 issue fixed.

Fix test_filter_nodes_complex_lookups test for empty databases

Fix get_or_create and create_or_fail tests and add SMART_ERRORS for those functions

Add support for Neo4j versions when testing in Travis

Add support for get_or_create and create_or_fail index operations

Adding integration tests with Travis-CI

Updated requirements.txt with Shrubbery proposals

Add experimental support for smart dates

1.8.0 (2012-12-09)

Updated lucene-querybuilder requirement.

Add support for using Indexes as start points when filtering

Add support for using filters in indices.

Fixes an error when using cert and key files.

Adding order by and filtering for relationships.

First implementation of complex filtering and slicing for nodes based on
Cypher.

Improving stability of tests.

Fixes #74. Added the new .query() method and casting for returns. Also a very
initial .filter method with an special Q object for composing complex filters.

Fixes #64, added a small unicode check.

Feature cache store and cache extension requests. Every time extension is used
a get request is made before post this only needs to happen once per extension.

Allow user to configure own cache engine, (e.g djangos cache).

Read test db url from environ.

Fixes #71. Pass correct url to get. Get with missing ‘/’ was causing an
additional 302.

Support keep-alive / pipelining: httplib now instantiated on module load not
per quest this also fixes caching, when the CACHE option was set a no-cache
header was added that by passed the cache system.

Fixes #68. Gremlin query trips on “simple” list, but not an error no
neo4j-rest-client side.

Fixes #69. Incorrect node references when splitting transactions.

Adding support for retrieving index elements in a transaction.

Fixes #66. Ditch exception catch on root fetch at GraphDatabase.__init__().
As per #65, current behaviour when auth fails is that a 401 StatusException
is raised, and caught by this try/except block and a misleading NotFoundError
is raised in its place - lets just let the StatusException through. Unsure
about what other Exceptions may be raised but cannot reproduce.

Fixed issue #69. Transaction split.

Adding support for retrieving index elements in a transaction.

1.7.0 (2012-05-17)

Fixing an error when reating relationships with nodes created previously in
a transactions.

Fixed an error in the test_query_index case (forgot to include an ‘or’.
between queries).

Added lucene-querybuilder to the test requirements in setup.py.

Added a test case for Q-based queries.

1.3.4 (2011-06-22)

Fixed the setup.py and httplib2 import error during installing.

Reordered the options variables in an options.py file.
Allows index.query() to be called with or without a key

Fixed issue #15 regarding dependency to httplib2

Patched index.query() so it can take a query without a key (to support, say,
mutli-field Lucene queries). Ultimately, query so probably be refactored to
Index (instead of IndexKey) because IndexKey doesn’t actually help with
full-text queries.

Fixed for issue #19 (missed that urllib.quote).

Altered the test_query_index case to reflect how I think indexing should
work.

Using assertTrue instead of failUnless in tests.py, failUnless is deprecated
in 2.7 and up, so I figured we might as well switch.

Added SMART_ERRORS (aka “Django mode”). If you set SMART_ERROR to True it
will make the client throw KeyError instead of NotFoundError when a key is
missing.

1.3.3 (2011-06-14)

Fixed an introspection when the results list of a traverse is empty.

Merge pull request #17 from mhluongo/master

Resolved the STOP_AT_END_OF_GRAPH traversal test case.
Calling .traverse(stop=STOP_AT_END_OF_GRAPH) will now traverse the graph
without a max depth (and without 500 errors).