# Path: dockit/schema/exceptions.py
# class DotPathNotFound(Exception):
#     def __init__(self, message, traverser=None):
#         Exception.__init__(self, message)
#         self.traverser = traverser


from dockit.schema.exceptions import DotPathNotFound
        from dockit.schema.fields import SchemaField
        from dockit.schema.fields import SchemaField
        from dockit.schema.fields import DictField, SchemaField
            from dockit.schema.fields import SchemaField
            from dockit.schema.schema import Schema
        index = int(attr)
        if value is UnSet:
            self.pop(index)
        elif index == len(self):
            self.append(value)
        else:
            self[index] = value

class DotPathDict(dict):
    def traverse_dot_path(self, traverser):
        if traverser.remaining_paths:
            new_value = None
            name = traverser.next_part
            try:
                new_value = self[name]
            except KeyError:
                pass
            traverser.next(value=new_value)
        else:
            traverser.end(value=self)
    
    def set_value(self, attr, value):
        if value is UnSet:
            del self[attr]
        else:
            self[attr] = value

class DotPathSet(set):
    def traverse_dot_path(self, traverser):
        if traverser.remaining_paths:

# Path: dockit/schema/exceptions.py
# class DotPathNotFound(Exception):
#     def __init__(self, message, traverser=None):
#         Exception.__init__(self, message)
#         self.traverser = traverser


# Path: dockit/schema/common.py
from dockit.schema.exceptions import DotPathNotFound
        from dockit.schema.fields import SchemaField
        from dockit.schema.fields import SchemaField
        from dockit.schema.fields import DictField, SchemaField
            from dockit.schema.fields import SchemaField
            from dockit.schema.schema import Schema

        index = int(attr)
        if value is UnSet:
            self.pop(index)
        elif index == len(self):
            self.append(value)
        else:
            self[index] = value

class DotPathDict(dict):
    def traverse_dot_path(self, traverser):
        if traverser.remaining_paths:
            new_value = None
            name = traverser.next_part
            try:
                new_value = self[name]
            except KeyError:
                pass
            traverser.next(value=new_value)
        else:
            traverser.end(value=self)
    
    def set_value(self, attr, value):
        if value is UnSet:
            del self[attr]
        else:
            self[attr] = value

class DotPathSet(set):
    def traverse_dot_path(self, traverser):
        if traverser.remaining_paths:

            raise DotPathNotFound("Cannot traverse past a set")