- Add support for Python 3.14.
- Drop support for Python 3.9.
- Replace
pkg_resourcesnamespace with PEP 420 native namespace. - Drop
xmlextra and all the code which was enabled by it. (z3c.schema2xmlis unmaintained for years now.) - Drop support for Python 3.8.
- Revert: Consider RelationValue without source as broken. [ksuess]
- Add support for Python 3.12, 3.13.
- Drop support for Python 3.7.
- Fix tests for Python 3.13. [petschki]
- Consider RelationValue without source as broken. [ksuess]
Breaking changes:
- Drop support for Python 2.7, 3.5, 3.6.
New features:
- Add support for Python 3.7, 3.8, 3.9, 3.10, 3.11.
New features:
- Provide IRelationBrokenEvent to be able to distinguish the event when subscribing to IObjectModifiedEvent [vangheem]
New features:
- Adresses Still uses BTrees wrongly, screws up people changing Interfaces, allows third party software to define which indexes are used. [jensens]
Bug fixes:
- Fix DeprecationWarnings in
tests.py. [jensens]
- Python 3 compatibility: use the implementer decorator and fix ordering [ale-rt]
- Python 3 compatibility: Make
RelationValuehashable. [sallner] - Renamed
README.txt``to ``README.rstandCHANGES.txttoCHANGES.rst. [thet] - Update buildout / travis config [tomgross]
- Fix issue where relations are cleared on modify if they are not stored as an class attribute. Usecase see plone/Products.CMFPlone#2384 [tomgross]
- Remove dependencies on zope.app.* [davisagli]
- Remove dependency on grok. [pbauer, jensens]
- Updated test setup and test to run with current versions of dependent packages, thus running with Python 2.6, too.
- Added missing (test) dependencies.
- Rename __neq__ method to __ne__ since __neq__ is not the right builtin name for != handlers.
- Fixes broken release.
- Ensure that the value_type of a RelationList is not overwritten to be 'None' when the field is constructed.
- Move lxml and schema2xml dependencies to an [xml] extra so that people can use this package without having to install lxml, which still causes issues on some platforms. If z3c.schema2xml and lxml are not importable, the relevant adapters will not be defined, but everything else will still work.
- Subscribe to IIntIdAddedEvent instead of IObjectAddedEvent to prevent errors due to subscriber ordering.
- Add missing dependency for lxml.
- Prevent the event failures from failing when utilities are missing or when objects do not implement IContained.
- Don't handle
IObjectModifiedevents for objects that do not yet have a parent. There is no need to do so anyway, as these objects cannot have outgoing relations indexed.
- Introduce a
RelationChoicefield that behaves likeschema.Choicebut tracks relations. In combination with a source (such as created byRelationSourceFactoryprovided byz3c.relationfieldui) this can be used to create drop-down selections for relations. - Clarify the way comparing and sorting of
RelationValueobjects is done in order to better support choice support.
- When a relation is broken, properly re-catalog things.
- Introduce sensible sort order for relations, based on a
(from_attribute, from_path, to_path)tuple. - Relations will now never compare to
None.
Introduce two new interfaces:
IHasOutgoingRelationsandIHasIncomingRelations.IHasOutgoingRelationsshould be provided by objects that actually have relations set on them, so that they can be properly cataloged.IHasIncomingRelationsshould be set on objects that can be related to, so that broken relations can be properly tracked.IHasRelationsnow extends both, so if you provide those on your object you have an object that can have both outgoing as well as incoming relations.Improve broken relations support. When you now break a relation (by removing the relation target),
to_idandto_objectbecomeNone.to_pathhowever will remain the path that the relation last pointed to.TemporaryRelationobjects that when realized are broken relations can also be created.You can also for broken status by calling
isBrokenon a relation.The signature of the top-level function
create_relationchanged. It used to take the object to which the relation was to be created, but should now get the path (inIObjectPathterms).create_relationwill now create a broken relation object if the path cannot be resolved.
- Added support for
RelationListfields. This allows one to maintain a list ofRelationValueobjects that will be cataloged like the regularRelationfields. - Get rid of
IRelationInfoadapter requirement. Just define acreate_relationfunction that does the same work. - When looking for relations on an object be more tolerant if those cannot be found (just skip them) - this can happen when a schema is changed.
- Initial public release.