-
Notifications
You must be signed in to change notification settings - Fork 232
/
Changelog
412 lines (356 loc) · 18.6 KB
/
Changelog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
Version 5.4.0 2024-11
* Traversal option for filtering and ordering
* Insert raw Cypher for ordering
* Possibility to traverse relations, only returning the last element of the path
* Resolve the results of complex queries as a nested subgraph
* Possibility to transform variables, with aggregations methods : Collect() and Last()
* Intermediate transform, for example to order variables before collecting
* Subqueries (Cypher CALL{} clause)
* Allow JSONProperty to actually use non-ascii elements. Thanks to @danikirish
* Bumped neo4j (driver) to 5.26.0
* Special huge thanks to @tonioo for this release
Version 5.3.3 2024-09
* Fixes vector index doc and test
Version 5.3.2 2024-06
* Add support for Vector and Fulltext indexes creation
* Add DateTimeNeo4jFormatProperty for Neo4j native datetime format
Version 5.3.1 2024-05
* Add neomodel_generate_diagram script, which generates a graph model diagram based on your neomodel class definitions. Arrows and PlantUML dot options
* Fix bug in async iterator async for MyClass.nodes
* Fix bugs in database inspection script (multiple rels per label, missing DateProperty type)
Version 5.3.0 2024-04
* Add async support
* Breaking change : config.AUTO_INSTALL_LABELS has been removed. Please use the neomodel_install_labels script instead
* Note that the Database class has been moved into neomodel.sync_.core
* Bumps neo4j (driver) to 5.19.0
* Various improvement : functools wrap to TransactionProxy, fix node equality check, q filter for IN in arrays, fix inflate on db_property. Thanks to @giosava94, @OlehChyhyryn, @icapora, @j-krose
Version 5.2.1 2023-12
* Add options to inspection script to skip heavy operations - rel props or cardinality inspection #767
* Fixes database version parsing issues
* Fixes bug when combining count with pagination #769
* Bumps neo4j (driver) to 5.15.0
Version 5.2.0 2023-11
* Add an option to pass your own driver instead of relying on the automatically created one. See set_connection method. NB : only accepts the synchronous driver for now.
* Add a close_connection method to explicitly close the driver to match Neo4j deprecation.
* Add a DATABASE_NAME config option, available for both auto- and self-managed driver modes.
* Add neomodel_inspect_database script, which inspects an existing database and creates neomodel class definitions for all objects.
* Add support for pandas DataFrame and Series ; numpy Array
* Add relationship uniqueness constraints - for Neo4j >= 5.7
Version 5.1.2 2023-09
* Raise ValueError on reserved keywords ; add tests #590 #623
* Add support for relationship property uniqueness constraints. Introduced in Neo4j 5.7.
* Fix various issues, including fetching self-referencing relationship with same name as node labels #589
* Bumped neo4j-driver to 5.12.0
Version 5.1.1 2023-08
* Add impersonation
* Bumped neo4j-driver to 5.11.0
* Add automatic path inflation #715
* Improve code quality and tooling
Version 5.1.0 2023-07
* Bumped neo4j-driver version to 5.10.0
* Breaking change : When using neomodel along with Neo4j version 5, use StructuredNode and StructuredRel's element_id property instead of id. If you have Cypher queries which currently use the id() function, migrate them to elementId() instead.
If you use Neo4j version 4.4, this change should be transparent to you, and you should keep using id() function in Cypher since elementId() is not implemented in 4.4.
* Bump Shapely to >= 2.0.0
* Fix schema scripts invocation
* Removed custom __str__ method, part of NodeClassRegistry, from Database() (db) object.
Version 5.0.1 2023-06
* Removed deprecated methods StructuredRel.delete and RelationshipManager.search
* Extended test coverage, fixed some typos, improve linting
Version 5.0.0 2023-03
* Confirmed support of Neo4j versions 5.x and 4.4 (LTS)
* Dropped support of EOL Neo4j versions (4.3 and below)
* Confirmed support of Python 3.11
* Migrated RelationshipTo/RelationshipFrom from a method to a class for consistency.
* Add support for relationship indexes
* Auto-generated indexes now have a deterministic name
* Code cleanup
Version 4.0.10 2023-02-16
* Maintenance release due to misconfiguration of pyproject.toml
Version 4.0.9 2023-02-16
* Update neo4j driver to 4.4.10
* Confirmed support of all 4.x Neo4j versions (up to LTS version 4.4)
* Update shapely to 1.8.1 to support Python 3.9 and 3.10
* Drop support of Python 3.6
* Up pytest requirement to 7.1 (Python 3.7+)
* Update to latest version of setuptools for up-to-date build process
Version 4.0.8 2021-12-14
* Error handling to prepare for Neo4j update to 4.4 (thank you Alessandro Marchetti)
* Fix "After ServiceUnavailable error, connection pool is broken and does not recover" (#551) thank you @olegchigirin
* Fix DateProperty inflate (#586) thank you @ralfeus
* Use modern python API for metadata (#587) thank you Park, Yury
Version 4.0.7 2021-10-19
* Update neo4j driver to 4.3.6
* Fix After ServiceUnavailable error, connection pool is broken and does not recover
Version 4.0.6 2021-09-09
* Fix calling install_all_labels twice fails #539
* Fix issue with passwords with special chars #572
Version 4.0.5 2021-07-26
* Fix issue with secure schema
Version 4.0.4 2021-07-01
* Fix for docker tests (#479)
* Add support for slow query log (#480)
* Add support for multi databases (#556)
* docker-compose-update (#561)
* Provide additional configuration for neo4j-driver connection (#564)
* Updated dependencies
Version 4.0.3 2020-09-28
* fix: "SemiStructuredNode can't have no props #493" (thank you @dmp593)
* removed pytest as an installation requirement (#553) (thank you @mprahl)
* allow connection to bolt+s database URL schema (#543)
* typo fixes
Version 4.0.2
* Minor updates
Version 4.0.1 2020-09-28
* Maintenance release to fix the Django requirement (Matt Galvis)
Version 4.0.0 2020-09-16
* Dropped Python 2.7 support
* Included support for Neo4j 4.*
* Updated spatial PointProperty to better reflect the native data type
* Updated Database housekeeping functions (drop_constraints(), drop_indexes(), install_labels())
* Updated all underlying queries to better reflect current CYPHER
* Updated Transaction handling
* Updated tests
* Many thanks to Cristina Escalante, Matt Galvis, JVemmer and a-takahashi223 whose hard work made this release possible.
Version 3.3.2 2019-09-29
* Fixed validation for unique properties to also be optional (#470) - Jon Daly
* Fixed tests-with-docker-compose.sh (#452) - Jorge Valhondo Rama
* Added exclusion example to documentation and improved naming consistency (#456, #466) - Elena Williams
* Fixed the Travis-CI build problems by switching to openjdk (#471) - Duncan Booth
* Minor revisions in `test_set_connection`, `spatial datatypes` and documentation (#442, #446, #447) - Athanasios Anastasiou
* Added `max_length` constraint on `StringProperty` (#445) - Lazy-Y
* Upgraded neo4j python driver requirement to 1.7.2 (#432) - Robert Grant
* Added a `DateTimeFormatProperty` (#428) - Yu Shengnan
* Updated `setup.py` so that it excludes the `test/` and `test/test_contrib/` sub-packages (#426) - Jorge Valhondo Rama
* Updated getting_started.rst typo (#419) - fredthehead
* Fixed NeomodelPoint instantiation bug (#418) - Athanasios Anastasiou
Version 3.3.1 2019-02-08
* Fixed a number of warnings due to deprecations both within neomodel and pytest and overall improvements in
code style (#381) - Abhishek Modi
* Added support for spatial data through neomodel.contrib.spatial_datatypes (#384) - Athanasios Anastasiou
* Added the ability to filter "left-hand statements" (in NodeSet expressions) too (#395) - Grzegorz Grzywacz
* Refactor the Node Class Registry to make util.Database a true Singleton (#403) - Giorgos Oikonomou
* Many thanks to Giorgos Oikonomou, Jon Daly, Adam Romano, Andrew Tergis, Mato Žgajner, Mostafa Moradian, mjmare,
Phoebe Bright, Robert Grant, jberends and anyone else who helped flag, track and correct this bug. For more
information, please see: https://github.com/neo4j-contrib/neomodel/issues/378
* Added the ClassAlreadyDefined exception to prevent against accidental redefinitions of data model classes (#409)
- Athanasios Anastasiou
* Added the ability to lazily `.nodes.get()` and `.nodes.all()` (#406) - Matan Hart
* Fixed a bug in the assumed direction of relationships in _build_merge_query (#408) - MrAnde7son
Version 3.3.0 2018-10-04
* Added support for Q() in filter and exclude (#360) - Juan H. Hidalgo
* Added object docs and examples - Juan H. Hidalgo
* Raise DoesNotExist when refreshing a non existent inflated node (#355) - lerela
* Empty filter bug - Mardanov Timur Rustemovich
* Closed #361 Nodes connected with two or more relationships - Mardanov Timur Rustemovich
* Exclude method fixed - Mardanov Timur Rustemovich
* Filter with OR fixed - Mardanov Timur Rustemovich
* Resolved #283, improved object resolution of cypher_query so that it
resolves objects even if they are nested within lists. Overall
documentation edits - Athanasios Anastasiou
Version 3.2.9 2018-07-04
* Add check for wiping db on test run - Athanasios
* Correct function name in doc string - Henry Jordan
* Support filtering on properties that end with a hash (#348) - mprahl
* Support neo4j-driver v1.6.0 (#347) - mprahl
* Explicit write transaction mode (#337) - Robert Grant
* Adds a check for Traversal's definition argument (#333) - Frank Sachsenheim
Version 3.2.8 2018-04-29
* Fix syntax error in import
Version 3.2.7 2018-04-23
* Back compat for exceptions module move - Robin Edwards
* Lower the required pytz version (#328) - mprahl
* Add the "disconnect_all" and "replace" methods on relationship properties (#327) - mprahl
* Add the "first" and "first_or_none" methods on the NodeSet class (#325) - mprahl
Version 3.2.6 2018-04-04
* Code clean ups and documentation improvments - Frank Sachsenheim
* neomodel.properties.NormalClass is renamed to NormalizedClass
* Respect when db_property is set in install_labels and get_or_create - mprahl
* Use a clearer relationship name in the Relationships documentation - mprahl
* Improve relationship documentation - mprahl
* Ensure_connection only called when accessing the database, not when
constructing the transaction decorator - Robert Grant
* Test against newer neo4j releases - Frank Sachsenheim
* Fixes and simplifies pickling of DoesNotExist subclasses - Frank Sachsenheim
* Add NeomodelException and move exceptions to a module - Frank Sachsenheim
* Many documentation improvements - Frank Sachsenheim
* Add newline to is abstract warning #305 - Omer Yampel
* Refactors tests to use pytest as runner.- Frank Sachsenheim
* Remove support for Python 3.3 - Frank Sachsenheim
* Adds support for neo4j 3.3 - Frank Sachsenheim
* Updates .travis.yml in order to also test against various neo4j versions - Frank Sachsenheim
* Updates neo4j-driver dependency to 1.5.2 - Frank Sachsenheim
* Adds a script to tests against various platforms with Docker Compose - Frank Sachsenheim
* Fix service unavailable issue (#281) - Warin Isvilanonda
* Add neomodel_remove_labels - Ivan Laković
* Test for model is None in Traversal.match() - pvanheus
Version 3.2.5 2017-06-10
* Upgrade pytz
* Remove use of START in match engine breaking neo4j 3.2
Version 3.2.4 2017-04-30
* Upgrade neo4j-driver to 1.2.1 #251
Version 3.2.3 2017-04-17
* Return StructuredRel instance as opposed to None when no model supplied #248
* Fix get_or_create docs and incorrect call to rel_helper #249
Version 3.2.2 2017-03-17
* Add get_or_none to RelationshipManager #246
* Make sure relationship types are escaped in queries #188
* Fix bug causing unsaved node not to appear in deflate error msg
* Allow typed arrays in ArrayProperty #237
* Add save hooks to StructuredRel #242
* Add tests for UniqueIdProperty when used in batch or merge.
* Update documentation for batch operations
* Add all_relationships() method to RelationshipManager #239
Version 3.2.1 2017-02-19
* Dont install test directory #238
Version 3.2.0 2017-02-07
* Upgrade neo4j_driver to 1.1.0
* Fix install_labels on an abstract node
* Clean up hooks code, django_neomodel.DjangoNode required for signals
* Add order_by method to relationships
* Add config.ENCRYPTED_CONNECTION - adrianicv
* Add config.MAX_POOL_SIZE
* Add neomodel_install_labels command
* Turn off AUTO_INSTALL_LABEL by default
Version 3.1.0 2017-01-26
* Improve docs
* Add change_neo4j_password
* Add clear_neo4j_database
* Add UniqueIdProperty for easy ids
* remove NEOMODEL_FORCE_TIMEZONE environment var now a config option
* Move django signal support to neomodel
* Add stdout input to install_labels etc
Version 3.0.3 2017-01-04
* Fix indexing bug caught by travis
Version 3.0.2 2017-01-04
* More doc strings and added autodoc to sphinx
* Install all constraints via core.install_all_labels()
* Fix multiple relationships not being created when using a rel model
* Fix connection logic for using in ipython
* Fix unicode string passed as class in relationship
Version 3.0.1 2016-12-17
* Fix empty filters causing empty WHERE clause - Siddharth Maheshwari
Version 3.0.0 2016-11-27
* neo4j_driver now used as backend
* Support for neo4j versions prior to 3 dropped
* REST via py2neo support dropped
* New db.set_connection() method to override connection url
* New config module for DATABASE_URL and other settings
* streaming kwarg now deprecated
* py2neo.cypher.error.statement.InvalidSyntax replaced by
neo4j.v1.exceptions.CypherError for cypher errors (syntax etc)
* CypherException and TransactionException have now been removed
* ConstraintValidationFailed exception introduced as super class of
UniqueProperty to allow additional classes in the future
* Remove category() method from StructuredNode's following its deprecation
* Batch operations now must be wrapped in a transaction in order to be atomic (see batch in docs)
* Renamed _id property to id, old property now deprecated
* Fix numeric propertys defaulting to 0 failing required check
* support order_by('?') to mimic django random order by
* Stopped connections being shared across processes which caused incorrect
results to be returned (in py2neo version) or an SSLError (bolt version).
neomodel is now process and thread safe.
* Add config option DJANGO_SIGNALS
* Add config option AUTO_INSTALL_LABELS
* Remove deprecated .index class property on StructuredNode
* Add docs and better tests on inheritance
* Add __repr__ and __str__ methods to StructuredNode
* Add get_or_none method to NodeSet
* Fixed filters persisting across node relationship queries (#208)
* Un-deprecate is_connected, its intuitive
* Fixed NodeSet index returning a list now returns just the node, e.g
jim.friends[0] returns a node as opposed to a list containing one node.
* Added missing filter and exclude methods to rel manager enabling: jim.friends.filter(name='bob')
* Add NormalProperty, RegexProperty, EmailProperty (Rafael Pivato++)
Version 2.0.2 2015-09-04
* support for creating or updating a node
* support for getting or creating a node
* support for wildcard and non explicit traversals
* support for additional filters
* improved performance for bulk operations
* resolved NodeSet.get() and RelationshipManager.get() error messaging
* resolved "order_by" bug
Version 2.0.1 2015-08-01
* add support for py2neo 2.x
* transitioned START queries to MATCH
* added authentication documentation for neo4j 2.2.x
* removed tight coupling with pytz
* resolved DeadlockDetectedException due to duplicate constraint and index
creation
* resolved conform errors NodeSet.get() and RelationshipManager.get()
* resolved username and password interpretation
* resolved on_count()'s order_by bug
* resolved CypherException TyperError exception bug
Version 1.0.3 unreleased
* add support for choices on string properites.
Version 1.0.2 2014-10-21
* updated documentation
* sphinx and rtd
* exception handling in cypher fix (tjakobsen)
Version 1.0.1 2014-08-21
* support for transactions
* new nodes class property (match API)
* support for neo4j 2
* no support for neo4j < 2
* deprecated category nodes
* deprecated index property
Version 0.4.0 unreleased
* server compatability check (Robin Edwards)
* 1.9 server fixes (Robin Edwards)
* upgrade to py2neo 1.6.1 (Panos Katseas)
* make __index__ inherited (Sebastian Ortiz)
* documentation improvements (Priit Laes)
* import RelationshipDefinition and RelationshipManager into main
Version 0.3.6 2013-08-14
* Display nice message for operations on deleted node (Robin Edwards)
* Re-enable lucene-querybuilder (Robin Edwards)
* Fix X-Stream header (Nigel Small)
* Enable custom indexes for StructuredNodes
* Support for relationship models or 'StructuredRels'
* Support filtering in the 'traverse' method (Robin Edwards)
* Store datetime objects as float for more accuracy (Robin Edwards)
* Setup NEOMODEL_FORCE_TIMEZONE env var to prevent storing of datetimes
without a timezone (Robin Edwards)
* Add NEOMODEL_CYPHER_DEBUG env var to log querys (Robin Edwards)
* Relative relationship classes in definitions (Panos Katseas)
Version 0.3.5 2013-07-05
* Add documentation on batch size (Robin Edwards)
* Fix default_value type generation for basic properties #53
* Add documentation on providing arguments to default functions (Robin Edwards)
Version 0.3.4 2013-07-02
* Fix return > 1 for Localised (Marianna Polatoglou)
Version 0.3.3 2013-07-01
* Nice exception on missing search params (Robin Edwards)
Version 0.3.2 2013-07-01
* Property fixes (Laurie Clark-Michalek)
Version 0.3.1 2013-06-27
* Fix exception message (Sam Millar)
* Use builtin items (Panos Katseas)
Version 0.3.0 2013-06-20
------------------------
* Fix either direction connect (Robin Edwards)
* Make reconnect atomic cypher operation (Panos Katseas)
* Add reconnect test case (Panos Katseas)
Version 0.2.9 2013-06-18
------------------------
* python 3.3+ support
* remove dependency on lucenequerybuilder (Robin Edwards)
* py2neo 1.5 compat and deprecations (Robin Edwards)
* JSONProperty (Panos Katseas)
* allow classes in relationship definitions (Robin Edwards)
* add SemiStructuredNode to contrib (Robin Edwards)
* refactor rel manager to use traversals (Robin Edwards)
* allow connect on rel managers of direction either (Robin Edwards)
* added experimental support for traversals (Robin Edwards)
* allow datetime without timezone to be stored (Robin Edwards)
* use cypher for delete (Robin Edwards)
* project logo (Laura Willis)
* _index_name special attribute removed (Robin Edwards)
* connect to sub class is no longer permitted (Robin Edwards)
* removed ReadOnlyNode class (Robin Edwards)
Version 0.2.8 2013-03-07
------------------------
* connect() with properties (Marianna Polatoglou)
* refresh() method (Panos Katseas)
* refactor RelationshipManager (Robin Edwards)
* NotConnected exception (Robin Edwards)
* Fix OneOrMore bug (Robin Edwards)