- Fix
Node.treerepr
if mapping raises an exception on__getitem__
. [rnix] - Use pytest as test runner. [rnix]
- Make sure
Unset
class always returns the same instance in__new__
. Fixes problems with pickle. [rnix]
- Replace deprecated import of
Order
withMappingOrder
innode.base
. [rnix]
- Do not overwrite
uuid
innode.behaviors.UUIDAware.__init__
ifuuid
already set. [rnix] - Rename
node.interfaces.IOrder
tonode.interfaces.IMappingOrder
andnode.behaviors.Order
tonode.behaviors.MappingOrder
. B/C is kept. [rnix] - Introduce
node.behaviors.ISequenceOrder
andnode.interfaces.SequenceOrder
. [rnix] - Introduce
node.interfaces.INodeOrder
. Used as base fornode.interfaces.IMappingOrder
andnode.interfaces.ISequenceOrder
. [rnix] - Add rich comparison functions
__lt__
,__le__
,__gt__
and__ge__
tonode.utils.Unset
. [rnix]
Breaking changes:
- Importing B/C
Order
behavior fromnode.behaviors.order
not works any more. Please import fromnode.behaviors
. [rnix]
- Add
node.schema.DateTime
,node.schema.DateTimeSerializer
andnode.schema.datetime_serializer
. [rnix] - Subclass
threading.local
fornode.behaviors.lifecycle._lifecycle_context
,node.behaviors.events._attribute_subscribers
andnode.behaviors.schema._schema_property
objects in order to safely provide default values. [rnix] - Introduce
node.interfaces.IChildFilter
,node.behaviors.MappingFilter
andnode.behaviors.SequenceFilter
. [rnix] - Introduce
node.interfaces.IWildcardFactory
andnode.behaviors.WildcardFactory
. [rnix] - Introduce
node.interfaces.INodeInit
andnode.behaviors.NodeInit
. [rnix] - Deprecate
IFixedChildren.fixed_children_factories
UseIFixedChildren.factories
instead. [rnix] - Introduce
node.interfaces.IContentishNode
andnode.behaviors.ContentishNode
. Use as base for mapping and sequence nodes. [rnix] insertbefore
,insertafter
andswap
innode.behaviors.Order
alternatively accept node names as arguments where possible. [rnix]insertbefore
,insertafter
, andinsertfirst
andinsertlast
innode.behaviors.Order
internally usemovebefore
,moveafter
,movefirst
andmovelast
ofodict
to avoid modifying the data structure before__setitem__
gets called. [rnix]- Extend
node.interfaces.IOrder
respectivenode.behaviors.Order
bymovebefore
,moveafter
,movefirst
andmovelast
. [rnix] - Reset
__parent__
innode.behaviors.Node.detach
. Node is no longer contained in tree. [rnix] - Introduce
IndexViolationError
which inherits fromValueError
and raise it in reference related behaviors instead ofValueError
where appropriate. [rnix] - Introduce
node.interfaces.INodeReference
andnode.behaviors.NodeReference
. [rnix] - Introduce
node.interfaces.ISequenceReference
andnode.behaviors.SequenceReference
. [rnix] - Rename
node.interfaces.IReference
tonode.interfaces.IMappingReference
andnode.behaviors.Reference
tonode.behaviors.MappingReference
. B/C is kept. [rnix]
Breaking changes:
- Remove
_notify_suppress
flag fromLifecycle
behavior. Introducesuppress_lifecycle_events
contextmanager as substitute. [rnix] - Importing
ChildFactory
andFixedChildren
fromnode.behaviors.common
not works any more. Please import fromnode.behaviors
. [rnix] - Importing B/C
Reference
behavior fromnode.behaviors.reference
not works any more. Please import fromnode.behaviors
. [rnix]
- Implement
__copy__
and__deepcopy__
onnode.utils.UNSET
. [rnix] - Introduce
node.interfaces.ISequenceConstraints
andnode.behaviors.SequenceConstraints
. [rnix] - Rename
node.interfaces.INodeChildValidate
tonode.interfaces.IMappingConstraints
andnode.behaviors.NodeChildValidate
tonode.behaviors.MappingConstraints
.MappingConstraints
implementation moved fromnode.behaviors.common
tonode.behaviors.constraints
. B/C is kept. [rnix] - Introduce
node.interfaces.ISequenceAdopt
andnode.behaviors.SequenceAdopt
. [rnix] MappingAdopt
now catches all exceptions instead of onlyAttributeError
,KeyError
andValueError
. [rnix]- Rename
node.interfaces.IAdopt
tonode.interfaces.IMappingAdopt
andnode.behaviors.Adopt
tonode.behaviors.MappingAdopt
.MappingAdopt
implementation moved fromnode.behaviors.common
tonode.behaviors.adopt
. B/C is kept. [rnix] node.behaviors.Attributes
now also works ifnode.behaviors.Nodespaces
is not applied. [rnix]- Introduce
node.behaviors.Node
which implements onlynode.interfaces.INode
contract. It is used as base fornode.behaviors.MappingNode
andnode.behaviors.SequcneNode
. [rnix] - Do not inherit
node.interfaces.INode
fromzope.interfaces.common.mapping.IFullMapping
any more. Data model specific interfaces are added now vianode.interfaces.IMappingNode
andnode.interfaces.ISequenceNode
. [rnix] - Introduce sequence nodes. Sequence nodes are implemented via
node.behaviors.SequcneNode
andnode.behaviors.ListStorage
. [rnix] - Rename
node.interfaces.INodify
tonode.interfaces.IMappingNode
andnode.behaviors.Nodify
tonode.behaviors.MappingNode
.MappingNode
implementation moved fromnode.behaviors.nodify
tonode.behaviors.mapping
. B/C is kept. [rnix] - Rename
node.interfaces.IStorage
tonode.interfaces.IMappingStorage
andnode.behaviors.Storage
tonode.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
ODict
andNode
schema fields tonode.schema.fields
. [rnix] - Add
node.schema.fields.IterableField
and use as base class forList
,Tuple
andSet
schema fields. - Introduce
node.behaviors.schema.SchemaProperties
plumbing behavior. [rnix] - Split up
node.schema
module into a package. [rnix] - Introduce
node.behaviors.context.BoundContext
plumbing behavior. [rnix]
Breaking changes:
- Remove
node.behaviors.GetattrChildren
. Seenode.utils.AttributeAccess
instead if you need to access node children via__getattr__
. [rnix] - Importing B/C
Adopt
behavior fromnode.behaviors.common
not works any more. Please import fromnode.behaviors
. [rnix] - Importing B/C
NodeChildValidate
behavior fromnode.behaviors.common
not works any more. Please import fromnode.behaviors
. [rnix] - Importing B/C
Nodify
behavior fromnode.behaviors.nodify
not works any more. Please import fromnode.behaviors
. [rnix] - Remove deprecated B/C import location
node.parts
. [rnix] node.behaviors.schema.Schema
no 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 raisingKeyError
if no default is set. [rnix]- Default value of
node.schema.fields.Field.default
isnode.utils.UNSET
now. [rnix] node.schema.fields.Field.validate
raises exception if validation fails instead of returning boolean. [rnix]
- Add missing
node.interfaces.INodeAttributes
interface. [rnix] - Add missing
attribute_access_for_attrs
attribute toIAttributes
interface. [rnix] - Rename
node.behaviors.common.NodeChildValidate.allow_non_node_childs
toallow_non_node_children
. A Deprecation warning is printed if the old attribute is used. [rnix] - Introduce
node.behaviors.schema.Schema
,node.behaviors.schema.SchemaAsAttributes
and related schema definitions innode.schema
. [rnix]
- Expose
first_key
,last_key
,next_key
andprev_key
from odict storage onOrder
behavior. [rnix, 2021-10-21] - Add basic serializer settings mechanism. [rnix, 2021-07-20]
- Use
node.utils.safe_decode
innode.behaviors.nodify.Nodify.treerepr
. [rnix, 2021-05-04] - Add
node.utils.safe_encode
andnode.utils.safe_decode
. [rnix, 2021-05-04]
- Introduce
uuid_factory
function onnode.interfaces.IUUIDAware
and implement default function innode.behaviors.common.UUIDAware
. [rnix, 2020-03-01] - Rename
NodeTestCase.expect_error
toNodeTestCase.expectError
. [rnix, 2019-09-04] - Rename
NodeTestCase.check_output
toNodeTestCase.checkOutput
. [rnix, 2019-09-04] - Introduce
prefix
keyword argument inNodify.treerepr
. [rnix, 2019-09-04]
- Overhaul
node.behaviors.Order
. Use related functions fromodict
where appropriate. [rnix, 2019-07-10] - Remove superfluous
extra_require
fromsetup.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_dispatch
keyword argument tonode.behaviors.events.EventAttribute
constructor which defines whether events are always dispatched on__set__
, not only if attribute value changes. [rnix, 2017-06-20] - Use
node.utils.UNSET
as defaultdefault
value innode.behaviors.events.EventAttribute.__init__
. [rnix, 2017-06-19] - Introduce
node.behaviors.events.EventAttribute.subscriber
decorator which can be used to register attribute subscribers. [rnix, 2017-06-19] - Move event dispatching related classes and functions from
node.events
tonode.behaviors.events
and import it from there innode.events
. [rnix, 2017-06-16] - Introduce
node.interfaces.IEvents
and implementnode.behaviors.events.Events
behavior. Contains business logic fromnode.events.EventDispatcher
. Use new behavior onEventDispatcher
. [rnix, 2017-06-16] - Create
suppress_events
context manager which can be used to suppress event notification in conjunction withnode.behaviors.Events
behavior. [rnix, 2017-06-15] - Create
node.behaviors.fallback.fallback_processing
context manager and and use it innode.behaviors.fallback.Fallback.__getitem__
to check whether fallback processing is active. [rnix, 2017-06-15]
- Introduce
node.events.EventDispatcher
andnode.events.EventAttribute
. [rnix, 2017-06-15] - Use
setattr
ininstance_property
decorator 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_TYPE
innode.behaviors.Nodify.treerepr
to 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
treerepr
innode.behaviors.nodify.Nodify
and move code fromprinttree
to it. Returs tree representation as string instead of printing it.printtree
usestreerepr
now. As enhancementtreerepr
sorts children of node if it does not implementIOrdered
in order to ensure consistend output which can be used to write tests against. [rnix, 2017-06-02] - Use
object.__getattribute__
explicitely innode.utils.instance_property
to check whether property value already has been computed in order to avoid problems when oberwriting__getattr__
on classes usinginstance_property
decorator. [rnix, 2017-06-02]
- Fix permissions. [rnix, 2017-02-23]
- Add
node.utils.node_by_path
. [rnix, 2017-02-07] - Do not depend on
unittest2
since its is not used. [jensens, 2017-01-17] - Add
node.behaviors.Fallback
behavior. [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.noderepr
if 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
odict
in order to make setuptools 8.x+ happy; using>=
instead of>
now. [jensens, 2014-12-17]
- use
plumbing
decorator instead ofplumber
metaclass. [rnix, 2014-07-31]
- Introduce
node.behaviors.cache.VolatileStorageInvalidate
. [rnix, 2014-01-15]
- Add
zope.component
to install dependencies. [rnix, 2013-12-09]
- Use
node.utils.UNSET
instance innode.behaviors.mapping.ExtendedWriteMapping.pop
. [rnix, 2013-02-10] - Improve
node.utils.Unset
. AddUnset
instance atnode.utils.UNSET
. [rnix, 2013-02-10]
- Fix
node.utils.StrCodec.encode
to return value as is if str and decoding failed. [rnix, 2012-11-07]
- Python 2.7 compatibility. [rnix, 2012-10-15]
- Remove
zope.component.event
B/C. [rnix, 2012-10-15] - Remove
zope.location
B/C. [rnix, 2012-10-15] - Remove
zope.lifecycleevent
B/C. [rnix, 2012-10-15] - Pep8. [rnix, 2012-10-15]
- Deprecate the use of
node.parts
. Usenode.behaviors
instead. [rnix, 2012-07-28] - Adopt to
plumber
1.2 [rnix, 2012-07-28]
- Introduce
node.interfaces.IOrdered
Marker interface. Set this interface onnode.parts.storage.OdictStorage
. [rnix, 2012-05-21] node.parts.mapping.ClonableMapping
now supportsdeepcopy
. [rnix, 2012-05-18]- Use
zope.interface.implementer
instead ofzope.interface.implements
all over the place. [rnix, 2012-05-18] - Remove superfluos interfaces. [rnix, 2012-05-18]
- Remove
Zodict
fromnode.utils
. [rnix, 2012-05-18] - Remove
AliasedNodespace
, useAlias
part instead. [rnix, 2012-05-18] - Move aliaser objects from
node.aliasing
tonode.parts.alias
. [rnix, 2012-05-18] - Remove
composition
module. [rnix, 2012-05-18] - Remove
bbb
module. [rnix, 2012-05-18]
- Do not inherit
node.parts.Reference
fromnode.parts.UUIDAware
. [rnix, 2012-01-30] - Set
uuid
innode.parts.Reference.__init__
plumb. [rnix, 2012-01-30]
- add
node.parts.nodify.Nodify.acquire
function. [rnix, 2011-12-05] - add
node.parts.ChildFactory
plumbing part. [rnix, 2011-12-04] - add
node.parts.UUIDAware
plumbing part. [rnix, 2011-12-02] - fix
node.parts.Order.swap
in order to work with pickled nodes. [rnix, 2011-11-28] - use
node.name
instead ofnode.__name__
innode.parts.nodify.Nodify.path
. [rnix, 2011-11-17] - add
swap
tonode.parts.Order
. [rnix, 2011-10-05] - add
insertfirst
andinsertlast
tonode.parts.Order
. [rnix, 2011-10-02]
- add
node.utils.debug
decorator. [rnix, 2011-07-23] - remove non storage contract specific properties from
node.aliasing.AliasedNodespace
[rnix, 2011-07-18] node.aliasing
test completion [rnix, 2011-07-18]- Add non strict functionality to
node.aliasing.DictAliaser
for accessing non aliased keys as is as fallback [rnix, 2011-07-18] - Consider
INode
implementing 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
IFixedChildren
andIGetattrChildren
for related parts. [rnix, 2011-05-09] - Rename
Unicode
part toUnicodeAware
. [rnix, 2011-05-09] - Add
node.utils.StrCodec
. [rnix, 2011-05-09] - Inherit
INodify
interface fromINode
. [rnix, 2011-05-08] - Locking tests. Add
time.sleep
after thread start. [rnix, 2011-05-08] - Cleanup
BaseTester
, removesorted_output
flag (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_property
decorator to utils. [rnix, 2011-05-06] - Add
FixedChildren
andGetattrChildren
parts. [chaoflow, 2011-04-22]
- Add
__nonzero__
onNodifiy
part always return True. [rnix, 2011-03-15]
- Provide
node.base.Node
with same behavior likezodict.Node
for migration purposes. [rnix, 2011-02-08]
- Make it work [rnix, chaoflow, et al]