| Index: third_party/twisted_8_1/twisted/python/roots.py
|
| diff --git a/third_party/twisted_8_1/twisted/python/roots.py b/third_party/twisted_8_1/twisted/python/roots.py
|
| deleted file mode 100644
|
| index c2ee39d1b0f1b7e2d460507096ccf786b773a866..0000000000000000000000000000000000000000
|
| --- a/third_party/twisted_8_1/twisted/python/roots.py
|
| +++ /dev/null
|
| @@ -1,257 +0,0 @@
|
| -# -*- test-case-name: twisted.test.test_roots -*-
|
| -#
|
| -# Copyright (c) 2001-2004 Twisted Matrix Laboratories.
|
| -# See LICENSE for details.
|
| -
|
| -
|
| -"""
|
| -Twisted Python Roots: an abstract hierarchy representation for Twisted.
|
| -
|
| -Maintainer: Glyph Lefkowitz
|
| -
|
| -Future Plans: Removing distinction between 'static' and 'dynamic' entities,
|
| -which never made much sense anyway and bloats the API horribly. This probably
|
| -involves updating all of Coil to have tree widgets that can be dynamically
|
| -expanded, which probably involves porting all of Coil to Woven, so it might not
|
| -happen for a while.
|
| -
|
| -"""
|
| -
|
| -# System imports
|
| -import types
|
| -from twisted.python import reflect
|
| -
|
| -class NotSupportedError(NotImplementedError):
|
| - """
|
| - An exception meaning that the tree-manipulation operation
|
| - you're attempting to perform is not supported.
|
| - """
|
| -
|
| -
|
| -class Request:
|
| - """I am an abstract representation of a request for an entity.
|
| -
|
| - I also function as the response. The request is responded to by calling
|
| - self.write(data) until there is no data left and then calling
|
| - self.finish().
|
| - """
|
| - # This attribute should be set to the string name of the protocol being
|
| - # responded to (e.g. HTTP or FTP)
|
| - wireProtocol = None
|
| - def write(self, data):
|
| - """Add some data to the response to this request.
|
| - """
|
| - raise NotImplementedError("%s.write" % reflect.qual(self.__class__))
|
| -
|
| - def finish(self):
|
| - """The response to this request is finished; flush all data to the network stream.
|
| - """
|
| - raise NotImplementedError("%s.finish" % reflect.qual(self.__class__))
|
| -
|
| -
|
| -class Entity:
|
| - """I am a terminal object in a hierarchy, with no children.
|
| -
|
| - I represent a null interface; certain non-instance objects (strings and
|
| - integers, notably) are Entities.
|
| -
|
| - Methods on this class are suggested to be implemented, but are not
|
| - required, and will be emulated on a per-protocol basis for types which do
|
| - not handle them.
|
| - """
|
| - def render(self, request):
|
| - """
|
| - I produce a stream of bytes for the request, by calling request.write()
|
| - and request.finish().
|
| - """
|
| - raise NotImplementedError("%s.render" % reflect.qual(self.__class__))
|
| -
|
| -
|
| -class Collection:
|
| - """I represent a static collection of entities.
|
| -
|
| - I contain methods designed to represent collections that can be dynamically
|
| - created.
|
| - """
|
| -
|
| - def __init__(self, entities=None):
|
| - """Initialize me.
|
| - """
|
| - if entities is not None:
|
| - self.entities = entities
|
| - else:
|
| - self.entities = {}
|
| -
|
| - def getStaticEntity(self, name):
|
| - """Get an entity that was added to me using putEntity.
|
| -
|
| - This method will return 'None' if it fails.
|
| - """
|
| - return self.entities.get(name)
|
| -
|
| - def getDynamicEntity(self, name, request):
|
| - """Subclass this to generate an entity on demand.
|
| -
|
| - This method should return 'None' if it fails.
|
| - """
|
| -
|
| - def getEntity(self, name, request):
|
| - """Retrieve an entity from me.
|
| -
|
| - I will first attempt to retrieve an entity statically; static entities
|
| - will obscure dynamic ones. If that fails, I will retrieve the entity
|
| - dynamically.
|
| -
|
| - If I cannot retrieve an entity, I will return 'None'.
|
| - """
|
| - ent = self.getStaticEntity(name)
|
| - if ent is not None:
|
| - return ent
|
| - ent = self.getDynamicEntity(name, request)
|
| - if ent is not None:
|
| - return ent
|
| - return None
|
| -
|
| - def putEntity(self, name, entity):
|
| - """Store a static reference on 'name' for 'entity'.
|
| -
|
| - Raises a KeyError if the operation fails.
|
| - """
|
| - self.entities[name] = entity
|
| -
|
| - def delEntity(self, name):
|
| - """Remove a static reference for 'name'.
|
| -
|
| - Raises a KeyError if the operation fails.
|
| - """
|
| - del self.entities[name]
|
| -
|
| - def storeEntity(self, name, request):
|
| - """Store an entity for 'name', based on the content of 'request'.
|
| - """
|
| - raise NotSupportedError("%s.storeEntity" % reflect.qual(self.__class__))
|
| -
|
| - def removeEntity(self, name, request):
|
| - """Remove an entity for 'name', based on the content of 'request'.
|
| - """
|
| - raise NotSupportedError("%s.removeEntity" % reflect.qual(self.__class__))
|
| -
|
| - def listStaticEntities(self):
|
| - """Retrieve a list of all name, entity pairs that I store references to.
|
| -
|
| - See getStaticEntity.
|
| - """
|
| - return self.entities.items()
|
| -
|
| - def listDynamicEntities(self, request):
|
| - """A list of all name, entity that I can generate on demand.
|
| -
|
| - See getDynamicEntity.
|
| - """
|
| - return []
|
| -
|
| - def listEntities(self, request):
|
| - """Retrieve a list of all name, entity pairs I contain.
|
| -
|
| - See getEntity.
|
| - """
|
| - return self.listStaticEntities() + self.listDynamicEntities(request)
|
| -
|
| - def listStaticNames(self):
|
| - """Retrieve a list of the names of entities that I store references to.
|
| -
|
| - See getStaticEntity.
|
| - """
|
| - return self.entities.keys()
|
| -
|
| -
|
| - def listDynamicNames(self):
|
| - """Retrieve a list of the names of entities that I store references to.
|
| -
|
| - See getDynamicEntity.
|
| - """
|
| - return []
|
| -
|
| -
|
| - def listNames(self, request):
|
| - """Retrieve a list of all names for entities that I contain.
|
| -
|
| - See getEntity.
|
| - """
|
| - return self.listStaticNames()
|
| -
|
| -
|
| -class ConstraintViolation(Exception):
|
| - """An exception raised when a constraint is violated.
|
| - """
|
| -
|
| -
|
| -class Constrained(Collection):
|
| - """A collection that has constraints on its names and/or entities."""
|
| -
|
| - def nameConstraint(self, name):
|
| - """A method that determines whether an entity may be added to me with a given name.
|
| -
|
| - If the constraint is satisfied, return 1; if the constraint is not
|
| - satisfied, either return 0 or raise a descriptive ConstraintViolation.
|
| - """
|
| - return 1
|
| -
|
| - def entityConstraint(self, entity):
|
| - """A method that determines whether an entity may be added to me.
|
| -
|
| - If the constraint is satisfied, return 1; if the constraint is not
|
| - satisfied, either return 0 or raise a descriptive ConstraintViolation.
|
| - """
|
| - return 1
|
| -
|
| - def reallyPutEntity(self, name, entity):
|
| - Collection.putEntity(self, name, entity)
|
| -
|
| - def putEntity(self, name, entity):
|
| - """Store an entity if it meets both constraints.
|
| -
|
| - Otherwise raise a ConstraintViolation.
|
| - """
|
| - if self.nameConstraint(name):
|
| - if self.entityConstraint(entity):
|
| - self.reallyPutEntity(name, entity)
|
| - else:
|
| - raise ConstraintViolation("Entity constraint violated.")
|
| - else:
|
| - raise ConstraintViolation("Name constraint violated.")
|
| -
|
| -
|
| -class Locked(Constrained):
|
| - """A collection that can be locked from adding entities."""
|
| -
|
| - locked = 0
|
| -
|
| - def lock(self):
|
| - self.locked = 1
|
| -
|
| - def entityConstraint(self, entity):
|
| - return not self.locked
|
| -
|
| -
|
| -class Homogenous(Constrained):
|
| - """A homogenous collection of entities.
|
| -
|
| - I will only contain entities that are an instance of the class or type
|
| - specified by my 'entityType' attribute.
|
| - """
|
| -
|
| - entityType = types.InstanceType
|
| -
|
| - def entityConstraint(self, entity):
|
| - if isinstance(entity, self.entityType):
|
| - return 1
|
| - else:
|
| - raise ConstraintViolation("%s of incorrect type (%s)" %
|
| - (entity, self.entityType))
|
| -
|
| - def getNameType(self):
|
| - return "Name"
|
| -
|
| - def getEntityType(self):
|
| - return self.entityType.__name__
|
|
|