Esempio n. 1
0
    def __init__(self, collector=None, processors=None, validator_class=None):
        '''Initialise session.

        *collector* is used to collect schemas for use in the session and
        should conform to the :py:class:`~harmony.schema.collector.Collector`
        interface. Defaults to a
        :py:class:`~harmony.schema.collector.FileSystemCollector` using the
        environment variable :envvar:`HARMONY_SCHEMA_PATH` to discover schemas.

        *processors* specifies a list of
        :py:class:`~harmony.schema.processor.Processor` instances that will
        post-process any discovered schemas. If not specified will default to
        [:py:class:`~harmony.schema.processor.ValidateProcessor`,
         :py:class:`~harmony.schema.processor.MixinProcessor`].

        *validator_class* should be the class to use for validation of schemas
        and instances. Defaults to
        :py:class:`harmony.schema.validator.Validator`.

        '''
        self.schemas = Collection()

        self.collector = collector
        if self.collector is None:
            paths = os.environ.get('HARMONY_SCHEMA_PATH',
                                   self.DEFAULT_SCHEMA_PATH).split(os.pathsep)
            self.collector = FilesystemCollector(paths)

        self.validator_class = validator_class
        if self.validator_class is None:
            self.validator_class = Validator

        self.processors = processors
        if self.processors is None:
            self.processors = [
                ValidateProcessor(self.validator_class),
                MixinProcessor()
            ]

        self.refresh()