- Nothing changed yet.
- Refactor package layout to use
pyproject.toml. [rnix]
- Pin upper versions of dependencies. [rnix]
- Fix
Node.treereprif mapping raises an exception on__getitem__. [rnix] - Use pytest as test runner. [rnix]
- Make sure
Unsetclass always returns the same instance in__new__. Fixes problems with pickle. [rnix]
- Replace deprecated import of
OrderwithMappingOrderinnode.base. [rnix]
- Do not overwrite
uuidinnode.behaviors.UUIDAware.__init__ifuuidalready set. [rnix] - Rename
node.interfaces.IOrdertonode.interfaces.IMappingOrderandnode.behaviors.Ordertonode.behaviors.MappingOrder. B/C is kept. [rnix] - Introduce
node.behaviors.ISequenceOrderandnode.interfaces.SequenceOrder. [rnix] - Introduce
node.interfaces.INodeOrder. Used as base fornode.interfaces.IMappingOrderandnode.interfaces.ISequenceOrder. [rnix] - Add rich comparison functions
__lt__,__le__,__gt__and__ge__tonode.utils.Unset. [rnix]
Breaking changes:
- Importing B/C
Orderbehavior fromnode.behaviors.ordernot works any more. Please import fromnode.behaviors. [rnix]
- Add
node.schema.DateTime,node.schema.DateTimeSerializerandnode.schema.datetime_serializer. [rnix] - Subclass
threading.localfornode.behaviors.lifecycle._lifecycle_context,node.behaviors.events._attribute_subscribersandnode.behaviors.schema._schema_propertyobjects in order to safely provide default values. [rnix] - Introduce
node.interfaces.IChildFilter,node.behaviors.MappingFilterandnode.behaviors.SequenceFilter. [rnix] - Introduce
node.interfaces.IWildcardFactoryandnode.behaviors.WildcardFactory. [rnix] - Introduce
node.interfaces.INodeInitandnode.behaviors.NodeInit. [rnix] - Deprecate
IFixedChildren.fixed_children_factoriesUseIFixedChildren.factoriesinstead. [rnix] - Introduce
node.interfaces.IContentishNodeandnode.behaviors.ContentishNode. Use as base for mapping and sequence nodes. [rnix] insertbefore,insertafterandswapinnode.behaviors.Orderalternatively accept node names as arguments where possible. [rnix]insertbefore,insertafter, andinsertfirstandinsertlastinnode.behaviors.Orderinternally usemovebefore,moveafter,movefirstandmovelastofodictto avoid modifying the data structure before__setitem__gets called. [rnix]- Extend
node.interfaces.IOrderrespectivenode.behaviors.Orderbymovebefore,moveafter,movefirstandmovelast. [rnix] - Reset
__parent__innode.behaviors.Node.detach. Node is no longer contained in tree. [rnix] - Introduce
IndexViolationErrorwhich inherits fromValueErrorand raise it in reference related behaviors instead ofValueErrorwhere appropriate. [rnix] - Introduce
node.interfaces.INodeReferenceandnode.behaviors.NodeReference. [rnix] - Introduce
node.interfaces.ISequenceReferenceandnode.behaviors.SequenceReference. [rnix] - Rename
node.interfaces.IReferencetonode.interfaces.IMappingReferenceandnode.behaviors.Referencetonode.behaviors.MappingReference. B/C is kept. [rnix]
Breaking changes:
- Remove
_notify_suppressflag fromLifecyclebehavior. Introducesuppress_lifecycle_eventscontextmanager as substitute. [rnix] - Importing
ChildFactoryandFixedChildrenfromnode.behaviors.commonnot works any more. Please import fromnode.behaviors. [rnix] - Importing B/C
Referencebehavior fromnode.behaviors.referencenot works any more. Please import fromnode.behaviors. [rnix]
- Implement
__copy__and__deepcopy__onnode.utils.UNSET. [rnix] - Introduce
node.interfaces.ISequenceConstraintsandnode.behaviors.SequenceConstraints. [rnix] - Rename
node.interfaces.INodeChildValidatetonode.interfaces.IMappingConstraintsandnode.behaviors.NodeChildValidatetonode.behaviors.MappingConstraints.MappingConstraintsimplementation moved fromnode.behaviors.commontonode.behaviors.constraints. B/C is kept. [rnix] - Introduce
node.interfaces.ISequenceAdoptandnode.behaviors.SequenceAdopt. [rnix] MappingAdoptnow catches all exceptions instead of onlyAttributeError,KeyErrorandValueError. [rnix]- Rename
node.interfaces.IAdopttonode.interfaces.IMappingAdoptandnode.behaviors.Adopttonode.behaviors.MappingAdopt.MappingAdoptimplementation moved fromnode.behaviors.commontonode.behaviors.adopt. B/C is kept. [rnix] node.behaviors.Attributesnow also works ifnode.behaviors.Nodespacesis not applied. [rnix]- Introduce
node.behaviors.Nodewhich implements onlynode.interfaces.INodecontract. It is used as base fornode.behaviors.MappingNodeandnode.behaviors.SequcneNode. [rnix] - Do not inherit
node.interfaces.INodefromzope.interfaces.common.mapping.IFullMappingany more. Data model specific interfaces are added now vianode.interfaces.IMappingNodeandnode.interfaces.ISequenceNode. [rnix] - Introduce sequence nodes. Sequence nodes are implemented via
node.behaviors.SequcneNodeandnode.behaviors.ListStorage. [rnix] - Rename
node.interfaces.INodifytonode.interfaces.IMappingNodeandnode.behaviors.Nodifytonode.behaviors.MappingNode.MappingNodeimplementation moved fromnode.behaviors.nodifytonode.behaviors.mapping. B/C is kept. [rnix] - Rename
node.interfaces.IStoragetonode.interfaces.IMappingStorageandnode.behaviors.Storagetonode.behaviors.Storage. B/C is kept. [rnix] - Add key and value type validation to schema fields where appropriate. [rnix]
- Introduce serializer support to schema fields. Add a couple of concrete field
serializer implementations to
node.schema.serializer. [rnix] - Add
ODictandNodeschema fields tonode.schema.fields. [rnix] - Add
node.schema.fields.IterableFieldand use as base class forList,TupleandSetschema fields. - Introduce
node.behaviors.schema.SchemaPropertiesplumbing behavior. [rnix] - Split up
node.schemamodule into a package. [rnix] - Introduce
node.behaviors.context.BoundContextplumbing behavior. [rnix]
Breaking changes:
- Remove
node.behaviors.GetattrChildren. Seenode.utils.AttributeAccessinstead if you need to access node children via__getattr__. [rnix] - Importing B/C
Adoptbehavior fromnode.behaviors.commonnot works any more. Please import fromnode.behaviors. [rnix] - Importing B/C
NodeChildValidatebehavior fromnode.behaviors.commonnot works any more. Please import fromnode.behaviors. [rnix] - Importing B/C
Nodifybehavior fromnode.behaviors.nodifynot works any more. Please import fromnode.behaviors. [rnix] - Remove deprecated B/C import location
node.parts. [rnix] node.behaviors.schema.Schemano longer considers wildcard fields. [rnix]node.behaviors.schema.Schema.__setitem__deletes value from related storage for field if value isnode.utils.UNSET. [rnix]node.behaviors.schema.Schema.__getitem__always returns default value for field instead of raisingKeyErrorif no default is set. [rnix]- Default value of
node.schema.fields.Field.defaultisnode.utils.UNSETnow. [rnix] node.schema.fields.Field.validateraises exception if validation fails instead of returning boolean. [rnix]
- Add missing
node.interfaces.INodeAttributesinterface. [rnix] - Add missing
attribute_access_for_attrsattribute toIAttributesinterface. [rnix] - Rename
node.behaviors.common.NodeChildValidate.allow_non_node_childstoallow_non_node_children. A Deprecation warning is printed if the old attribute is used. [rnix] - Introduce
node.behaviors.schema.Schema,node.behaviors.schema.SchemaAsAttributesand related schema definitions innode.schema. [rnix]
- Expose
first_key,last_key,next_keyandprev_keyfrom odict storage onOrderbehavior. [rnix, 2021-10-21] - Add basic serializer settings mechanism. [rnix, 2021-07-20]
- Use
node.utils.safe_decodeinnode.behaviors.nodify.Nodify.treerepr. [rnix, 2021-05-04] - Add
node.utils.safe_encodeandnode.utils.safe_decode. [rnix, 2021-05-04]
- Introduce
uuid_factoryfunction onnode.interfaces.IUUIDAwareand implement default function innode.behaviors.common.UUIDAware. [rnix, 2020-03-01] - Rename
NodeTestCase.expect_errortoNodeTestCase.expectError. [rnix, 2019-09-04] - Rename
NodeTestCase.check_outputtoNodeTestCase.checkOutput. [rnix, 2019-09-04] - Introduce
prefixkeyword argument inNodify.treerepr. [rnix, 2019-09-04]
- Overhaul
node.behaviors.Order. Use related functions fromodictwhere appropriate. [rnix, 2019-07-10] - Remove superfluous
extra_requirefromsetup.py. [rnix, 2019-04-25] - Drop Support for python < 2.7 and < 3.3. [rnix, 2019-04-25]
- Use property decorators for
node.behaviors.reference.Reference.uuid. [rnix, 2017-12-15]
- Add
always_dispatchkeyword argument tonode.behaviors.events.EventAttributeconstructor which defines whether events are always dispatched on__set__, not only if attribute value changes. [rnix, 2017-06-20] - Use
node.utils.UNSETas defaultdefaultvalue innode.behaviors.events.EventAttribute.__init__. [rnix, 2017-06-19] - Introduce
node.behaviors.events.EventAttribute.subscriberdecorator which can be used to register attribute subscribers. [rnix, 2017-06-19] - Move event dispatching related classes and functions from
node.eventstonode.behaviors.eventsand import it from there innode.events. [rnix, 2017-06-16] - Introduce
node.interfaces.IEventsand implementnode.behaviors.events.Eventsbehavior. Contains business logic fromnode.events.EventDispatcher. Use new behavior onEventDispatcher. [rnix, 2017-06-16] - Create
suppress_eventscontext manager which can be used to suppress event notification in conjunction withnode.behaviors.Eventsbehavior. [rnix, 2017-06-15] - Create
node.behaviors.fallback.fallback_processingcontext manager and and use it innode.behaviors.fallback.Fallback.__getitem__to check whether fallback processing is active. [rnix, 2017-06-15]
- Introduce
node.events.EventDispatcherandnode.events.EventAttribute. [rnix, 2017-06-15] - Use
setattrininstance_propertydecorator instead ofobject.__setattr__in order to avoid errors with custom low level__setattr__implementations. [rnix, 2017-06-14]
- Type cast sort key to
node.compat.UNICODE_TYPEinnode.behaviors.Nodify.treereprto avoid unicode decode errors. [rnix, 2017-06-07]
- Python 3 and pypy compatibility. [rnix, 2017-06-02]
- Drop support for Python < 2.7. [rnix, 2017-06-02]
- Add
__bool__tonode.behaviors.Nodify. [rnix, 2017-06-02] - Add
__bool__tonode.utils.UNSET. [rnix, 2017-06-02] - Add
treereprinnode.behaviors.nodify.Nodifyand move code fromprinttreeto it. Returs tree representation as string instead of printing it.printtreeusestreereprnow. As enhancementtreereprsorts children of node if it does not implementIOrderedin order to ensure consistend output which can be used to write tests against. [rnix, 2017-06-02] - Use
object.__getattribute__explicitely innode.utils.instance_propertyto check whether property value already has been computed in order to avoid problems when oberwriting__getattr__on classes usinginstance_propertydecorator. [rnix, 2017-06-02]
- Fix permissions. [rnix, 2017-02-23]
- Add
node.utils.node_by_path. [rnix, 2017-02-07] - Do not depend on
unittest2since its is not used. [jensens, 2017-01-17] - Add
node.behaviors.Fallbackbehavior. [jensens, 2017-01-17]
- Add basic JSON serializer and deserializer. [rnix, 2016-12-03]
- Only encode name in
node.behaviors.nodify.Nodify.__repr__andnode.behaviors.nodify.Nodify.nodereprif name is unicode instance. [rnix, 2015-10-03] - Improve
node.behaviors.nodify.Nodify.printtree. None node children are printed with key. [rnix, 2015-10-03]
- Fix dependency declaration to
odictin order to make setuptools 8.x+ happy; using>=instead of>now. [jensens, 2014-12-17]
- use
plumbingdecorator instead ofplumbermetaclass. [rnix, 2014-07-31]
- Introduce
node.behaviors.cache.VolatileStorageInvalidate. [rnix, 2014-01-15]
- Add
zope.componentto install dependencies. [rnix, 2013-12-09]
- Use
node.utils.UNSETinstance innode.behaviors.mapping.ExtendedWriteMapping.pop. [rnix, 2013-02-10] - Improve
node.utils.Unset. AddUnsetinstance atnode.utils.UNSET. [rnix, 2013-02-10]
- Fix
node.utils.StrCodec.encodeto return value as is if str and decoding failed. [rnix, 2012-11-07]
- Python 2.7 compatibility. [rnix, 2012-10-15]
- Remove
zope.component.eventB/C. [rnix, 2012-10-15] - Remove
zope.locationB/C. [rnix, 2012-10-15] - Remove
zope.lifecycleeventB/C. [rnix, 2012-10-15] - Pep8. [rnix, 2012-10-15]
- Deprecate the use of
node.parts. Usenode.behaviorsinstead. [rnix, 2012-07-28] - Adopt to
plumber1.2 [rnix, 2012-07-28]
- Introduce
node.interfaces.IOrderedMarker interface. Set this interface onnode.parts.storage.OdictStorage. [rnix, 2012-05-21] node.parts.mapping.ClonableMappingnow supportsdeepcopy. [rnix, 2012-05-18]- Use
zope.interface.implementerinstead ofzope.interface.implementsall over the place. [rnix, 2012-05-18] - Remove superfluos interfaces. [rnix, 2012-05-18]
- Remove
Zodictfromnode.utils. [rnix, 2012-05-18] - Remove
AliasedNodespace, useAliaspart instead. [rnix, 2012-05-18] - Move aliaser objects from
node.aliasingtonode.parts.alias. [rnix, 2012-05-18] - Remove
compositionmodule. [rnix, 2012-05-18] - Remove
bbbmodule. [rnix, 2012-05-18]
- Do not inherit
node.parts.Referencefromnode.parts.UUIDAware. [rnix, 2012-01-30] - Set
uuidinnode.parts.Reference.__init__plumb. [rnix, 2012-01-30]
- add
node.parts.nodify.Nodify.acquirefunction. [rnix, 2011-12-05] - add
node.parts.ChildFactoryplumbing part. [rnix, 2011-12-04] - add
node.parts.UUIDAwareplumbing part. [rnix, 2011-12-02] - fix
node.parts.Order.swapin order to work with pickled nodes. [rnix, 2011-11-28] - use
node.nameinstead ofnode.__name__innode.parts.nodify.Nodify.path. [rnix, 2011-11-17] - add
swaptonode.parts.Order. [rnix, 2011-10-05] - add
insertfirstandinsertlasttonode.parts.Order. [rnix, 2011-10-02]
- add
node.utils.debugdecorator. [rnix, 2011-07-23] - remove non storage contract specific properties from
node.aliasing.AliasedNodespace[rnix, 2011-07-18] node.aliasingtest completion [rnix, 2011-07-18]- Add non strict functionality to
node.aliasing.DictAliaserfor accessing non aliased keys as is as fallback [rnix, 2011-07-18] - Consider
INodeimplementing objects innode.utils.StrCodec[rnix, 2011-07-16] - Remove duplicate implements in storage parts [rnix, 2011-05-16]
- Increase test coverage [rnix, 2011-05-09]
- Add interfaces
IFixedChildrenandIGetattrChildrenfor related parts. [rnix, 2011-05-09] - Rename
Unicodepart toUnicodeAware. [rnix, 2011-05-09] - Add
node.utils.StrCodec. [rnix, 2011-05-09] - Inherit
INodifyinterface fromINode. [rnix, 2011-05-08] - Locking tests. Add
time.sleepafter thread start. [rnix, 2011-05-08] - Cleanup
BaseTester, removesorted_outputflag (always sort), also search class bases for detection inwherefrom. [rnix, 2011-05-08] - Remove useless try/except in
utils.AttributeAccess. [rnix, 2011-05-08] - Add
instance_propertydecorator to utils. [rnix, 2011-05-06] - Add
FixedChildrenandGetattrChildrenparts. [chaoflow, 2011-04-22]
- Add
__nonzero__onNodifiypart always return True. [rnix, 2011-03-15]
- Provide
node.base.Nodewith same behavior likezodict.Nodefor migration purposes. [rnix, 2011-02-08]
- Make it work [rnix, chaoflow, et al]