dip.io¶
The dip.io module implements the infrastructure for defining and
interfacing with storage.
Plugins must provide appropriate support for the following extension points:
dip.io.codecs- This must be supported by any plugin that configures an object implementing
the
dip.io.IIoManagerinterface. A contribution must implement thedip.io.ICodecinterface. dip.io.storage_factories- This must be supported by any plugin that configures an object implementing
the
dip.io.IIoManagerinterface. A contribution must implement thedip.io.IStorageFactoryinterface. dip.io.storage_policies- This must be supported by any plugin that configures an object implementing
the
dip.io.IIoManagerinterface. A contribution must be a callable.
BaseStorage¶
-
class
dip.io.BaseStorage¶ Base class:
ModelThe BaseStorage storage class is an optional base class for implementations of
IStorage.-
decoder_for_model(model, location)¶ Returns one of the storage’s codecs that can be used to decode a model. An exception is raised if there is no suitable codec.
Parameters: - model – is the model.
- location – is the location. This is only used in exceptions.
Returns: the codec.
-
encoder_for_model(model, location)¶ Returns one of the storage’s codecs that can be used to encode a model. An exception is raised if there is no suitable codec.
Parameters: - model – is the model.
- location – is the location. This is only used in exceptions.
Returns: the codec.
-
FormatError¶
-
exception
dip.io.FormatError¶ Base exception:
StorageErrorThe FormatError class is an exception raised when there is an error decoding or encoding an object at a particular storage location.
ICodec¶
-
class
dip.io.ICodec¶ Base class:
InterfaceThe ICodec interface defines the API of codecs.
-
decoder_interface = Subclass(Interface) The interface that a model must implement. It is
Noneif there is no decoder.
-
encoder_interface = Subclass(Interface) The interface that a model must implement. It is
Noneif there is no encoder.
-
format = Str() The identifier of the format.
-
decode(model, source, location)¶ A model is decoded from a byte stream.
Parameters: - model – is the model.
- source – is an iterator that will return the byte stream to be decoded.
- location – is the storage location where the encoded model is being read from. It is mainly used for error reporting.
Returns: the decoded model. This may be the original model populated from the storage location, or it may be a different model (of an appropriate type) created from the storage location. If
Noneis returned then it is assumed that the decoding was abandoned and the user informed appropriately.
-
encode(model, location)¶ A model is encoded as a byte stream.
Parameters: - model – is the model.
- location – is the storage location where the encoded model will be written to. It is mainly used for error reporting.
Returns: a generator that will return sections of the encoded byte stream.
-
IIoManager¶
-
class
dip.io.IIoManager¶ Base class:
InterfaceThe IIoManager interface defines the API of an i/o manager.
-
codecs = List(ICodec) The available codecs.
-
storage_factories = List(IStorageFactory) The available storage factories.
-
storage_policies = List(Callable()) The storage policies that determines if a format is allowed to be written to or read from storage represented by a particular implementation of
IStorage. Each policy is called with the format identifier and the storage as arguments. A policy should returnTrueif the access is allowed. All policies must returnTruefor the access to proceed.
-
ui = Instance(IIoManagerUi) The storage-independent user interfaces.
-
read(model, location, format)¶ Read a model from a location using a particular format.
Parameters: - model – is the model.
- location – is the location as a string. This should identify a valid and unambiguous storage location.
- format – is the format.
Returns: the read model. This may be the original model populated from the storage location, or it may be a different model (of an appropriate type) created from the storage location. If
Noneis returned then it is assumed that the read was abandoned and the user informed appropriately.
-
readable_locations_from_string(location, format='')¶ Get the list of readable storage location instances for which a location specified as a string is valid.
Parameters: - location – is the location as a string.
- format – is the identifier of the optional format.
Returns: the list of storage location instances.
-
readable_storage(format='')¶ Get the list of the storage instances that can be read from using a particular format.
Parameters: format – is the identifier of the optional format. Returns: the list of storage instances.
-
write(model, location, format)¶ Write a model to a location using a particular format.
Parameters: - model – is the model.
- location – is the location as a string. This should identify a valid and unambiguous storage location.
- format – is the format.
-
writeable_locations_from_string(location, format='')¶ Get the list of writeable storage location instances for which a location specified as a string is valid.
Parameters: - location – is the location as a string.
- format – is the identifier of the optional format.
Returns: the list of storage location instances.
-
writeable_storage(format='')¶ Get the list of the storage instances that can be written to using a particular format.
Parameters: format – is the identifier of the optional format. Returns: the list of storage instances.
-
IIoManagerUi¶
-
class
dip.io.IIoManagerUi¶ Base class:
InterfaceThe IIoManagerUi interface defines the API that implements the various storage-independent user interfaces.
-
choose_storage_title = Str() The text of the title used in the wizard pages asking the user to choose a storage location.
-
choose_readable_location_subtitle = Str() The text of the sub-title used in the wizard page asking the user to choose a readable storage location.
-
choose_readable_storage_subtitle = Str() The text of the sub-title used in the wizard page asking the user to choose some readable storage.
-
choose_storage_title = Str() The text of the title used in the wizard pages asking the user to choose some storage.
-
choose_readable_location_subtitle = Str() The text of the sub-title used in the wizard page asking the user to choose a writeable storage location.
-
choose_writeable_storage_subtitle = Str() The text of the sub-title used in the wizard page asking the user to choose some writeable storage.
-
io_manager = Instance(.IIoManager) The i/o manager that this is the user interface for.
-
readable_location_wizard_page(id='')¶ Create a wizard page factory for asking the user to provide a readable storage location.
Parameters: id – is the optional identifier of the page. Returns: the wizard page factory. The page’s view will be an implementation of IViewStack.
-
readable_storage_location(window_title, default_location=None, format='', hints=None, parent=None)¶ Ask the user to provide a readable storage location.
Parameters: - window_title – is the window title to use in any wizards and dialogs.
- storage_list – is the storage from which the use may choose. If it is not specified then a list of all available readable storage is used.
- default_location – is the optional default location.
- format – is the identifier of the optional format.
- hints – is an optional source of hints.
- parent – is the optional parent view.
Returns: the storage location or
Noneif the user declined to provide one.
-
readable_storage_wizard_page(bind_to, storage_list=None, id='')¶ Create a wizard page factory for asking the user to select from a list of readable storage.
Parameters: - bind_to – is the attribute of the model containing the selected storage.
- storage_list – is the optional list of available readable storage.
- id – is the optional identifier of the page.
Returns: the wizard page factory.
-
writeable_location_wizard_page(id='')¶ Create a wizard page factory for asking the user to provide a writeable storage location.
Parameters: id – is the optional identifier of the page. Returns: the wizard page factory. The page’s view will be an implementation of IViewStack.
-
writeable_storage_location(window_title, default_location=None, format='', hints=None, parent=None)¶ Ask the user to provide a writeable storage location.
Parameters: - window_title – is the window title to use in any wizards and dialogs.
- default_location – is the optional default location.
- format – is the identifier of the optional format.
- hints – is an optional source of hints.
- parent – is the optional parent view.
Returns: the storage location or
Noneif the user declined to provide one.
-
writeable_storage_wizard_page(bind_to, storage_list=None, id='')¶ Create a wizard page factory for asking the user to select from a list of writeable storage.
Parameters: - bind_to – is the attribute of the model containing the selected storage.
- storage_list – is the optional list of available writeable storage.
- id – is the optional identifier of the page.
Returns: the wizard page factory.
-
IStorage¶
-
class
dip.io.IStorage¶ Base class:
InterfaceThe IStorage interface defines the API of a particular type of storage.
-
codecs = List(ICodec) The codecs that can be used.
-
ui = Instance(IStorageUi) The storage-specific user interfaces.
-
explicit_location(location)¶ If the storage has explicit storage locations (i.e. a location is independent on the value of a model) then convert such a location specified as a string to an
IStorageLocationinstance.Parameters: location – is the location as a string. It should be valid for the storage. Returns: the IStorageLocationinstance orNoneif the storage does not have explicit storage locations.
-
implicit_location(model)¶ If the storage has implicit storage locations (i.e. a location is dependent on the value of a model) then create such a location for the model.
Parameters: model – is the model. Returns: the location or Noneif the storage does not have implicit storage locations.
-
read(model, location)¶ Read a model from a storage location.
Parameters: - model – is the model.
- location – is the storage location where the model is read from.
Returns: the read model. This may be the original model populated from the storage location, or it may be a different model (of an appropriate type) created from the storage location. If
Noneis returned then it is assumed that the read was abandoned and the user informed appropriately.
-
readable_location(location)¶ Convert a location specified as a string to a readable
IStorageLocationinstance if possible.Parameters: location – is the location as a string. Returns: the IStorageLocationinstance orNoneif the location was not valid for this storage.
-
write(model, location)¶ Write a model to a storage location.
Parameters: - model – is the model.
- location – is the storage location where the model is written to.
-
writeable_location(location)¶ Convert a location specified as a string to a writeable
IStorageLocationinstance if possible.Parameters: location – is the location as a string. Returns: the IStorageLocationinstance orNoneif the location was not valid for this storage.
-
IStorageBrowser¶
-
class
dip.io.IStorageBrowser¶ Base class:
InterfaceThe IStorageBrowser interface defines the API implemented by a view that allows the user to browse storage and select a valid storage location.
-
invalid_reason = Str() This explains why the storage location is invalid. It will be an empty string if the location is valid.
-
location = Instance(IStorageLocation) The storage location that the user uses the view to set.
-
storage = Instance(IStorage) The storage.
-
IStorageFactory¶
-
class
dip.io.IStorageFactory¶ Base class:
InterfaceThe IStorageFactory interface defines the API of a factory for creating implementations of
IStorage.-
readable = Bool(True) This is set if the storage is readable.
-
writeable = Bool(True) This is set if the storage is writeable.
-
__call__(codecs)¶ Create a storage instance.
Parameters: codecs – is the list of codecs that can be used by the storage. Returns: the storage instance.
-
IStorageLocation¶
-
class
dip.io.IStorageLocation¶ Base class:
InterfaceThe IStorageLocation interface defines the API of a storage location. Once created a storage location object will only ever refer to one specific location, i.e. a storage location object is never updated to refer to a different location.
-
storage = Instance(IStorage) The storage that the location refers to.
-
__str__()¶ Return a string representation of the location. This must be able to be parsed by an implementation of
valid_location().Returns: the string representation.
-
IStorageUi¶
-
class
dip.io.IStorageUi¶ Base class:
InterfaceThe IStorageUi interface defines the API that implements the various storage specific user interfaces.
-
storage = Instance(.IStorage) The storage that this is the user interface for.
-
get_read_location(window_title, default_location=None, hints=None, parent=None)¶ Get a new location from the user to read from.
Parameters: - window_title – is the window title, typically used as the title of a dialog.
- default_location – is an optional default location.
- hints – is an optional source of hints.
- parent – is the optional parent view.
Returns: the new location or
Noneif the user cancelled.
-
get_write_location(window_title, default_location=None, hints=None, parent=None)¶ Get a new location from the user to write to.
Parameters: - window_title – is the window title, typically used as the title of a dialog.
- default_location – is an optional default location.
- hints – is an optional source of hints.
- parent – is the optional parent view.
Returns: the new location or
Noneif the user cancelled.
-
read_browser(default_location=None, hints=None)¶ Create a view that allows the user to browse storage and select a read location.
Parameters: - default_location – is an optional default location.
- hints – is an optional source of hints.
Returns: the view which must implement, or can be adapted to,
IStorageBrowser.
-
write_browser(default_location=None, hints=None)¶ Create a view that allows the user to browse storage and select a write location.
Parameters: - default_location – is an optional default location.
- hints – is an optional source of hints.
Returns: the view which must implement, or can be adapted to,
IStorageBrowser.
-
IStreamingStorageFactory¶
-
class
dip.io.IStreamingStorageFactory¶ Base class:
IStorageFactoryThe IStreamingStorageFactory interface defines the API of a factory that creates an instance of streaming storage.
IStructuredStorageFactory¶
-
class
dip.io.IStructuredStorageFactory¶ Base classes:
IStorageFactory,ICodecThe IStructuredStorageFactory interface defines the API of a factory that creates an instance of structured storage.
IoManager¶
-
class
dip.io.IoManager¶ Base class:
SingletonThe IoManager class is a singleton that provides access to a default i/o manager.
-
instance = Instance(IIoManager) The i/o manager instance.
-
StorageError¶
-
exception
dip.io.StorageError¶ Base exception:
ExceptionThe StorageError class is an exception raised when there is an error accessing a particular storage location.