Glossary

schema

A zope.interface.Interface interface, whose attributes are zope.schema.Field instances. zope.schema defines a number of useful field types such as zope.schema.Date. nti.schema.field provides even more, such as nti.schema.field.Variant.

See Schemas for more information.

internal object
A Python object in the application domain (sometimes known as a “model” object). This may be a complex object consisting of multiple nested objects. It may use inheritance. It will implement one or more schema.
external object

A dictionary with string keys, and values that are strings, numbers (including booleans), None, lists of external objects, or external objects.

In other words, a simplified interchange format capable of being represented by many programming languages and text formats.

standard external object
An external object produced by this package and having some defined keys and values. The most important of these is StandardExternalFields.MIMETYPE, which helps identify the class of the internal object.
anonymous external object
An external object often not produced by this package and lacking the defining metadata this package produces.
external representation

The byte string resulting from converting an external object into a particular textual interchange format such as JSON or YAML.

External representations are read and written using IExternalObjectIO utilities.

externalization

The process of creating a external object from a internal object. The API for this is nti.externalization.to_external_object(), and it is customized with IInternalObjectExternalizer adapters.

Sometimes this also means creating the external representation. If done at the same time, the API for this is nti.externalization.to_external_representation().

internalization

The process of taking an external object and using it to mutate an internal object. The API for this is nti.externalization.update_from_external_object().

Sub-objects are freshly created using factories.

factory

A callable object taking no arguments and returning a particular type of internal object. Typically these are (wrappers around) Python classes; the classes typically need to have an attribute __external_can_create__ set to a true value.