我们从Python开源项目中,提取了以下19个代码示例,用于说明如何使用zope.interface.implements()。
def requestAvatarId(credentials): """ @param credentials: something which implements one of the interfaces in self.credentialInterfaces. @return: a Deferred which will fire a string which identifies an avatar, an empty tuple to specify an authenticated anonymous user (provided as checkers.ANONYMOUS) or fire a Failure(UnauthorizedLogin). Alternatively, return the result itself. """ # A note on anonymity - We do not want None as the value for anonymous # because it is too easy to accidentally return it. We do not want the # empty string, because it is too easy to mistype a password file. For # example, an .htpasswd file may contain the lines: ['hello:asdf', # 'world:asdf', 'goodbye', ':world']. This misconfiguration will have an # ill effect in any case, but accidentally granting anonymous access is a # worse failure mode than simply granting access to an untypeable # username. We do not want an instance of 'object', because that would # create potential problems with persistence.
def provide_adapter(factory, adapts=None, provides=None, name=_BLANK): """Register an adapter globally An adapter is registered to provide an interface with a name for some number of object types. If a factory implements only one interface, then the provides argument can be omitted and the provided interface will be used. (In this case, a provides argument can still be provided to provide a less specific interface.) If the factory has an adapts declaration, then the adapts argument can be omitted and the declaration will be used. (An adapts argument can be provided to override the declaration.) CAUTION: This API should only be used from test or application-setup code. This API shouldn't be used by regular library modules, as component registration is a configuration activity. """
def provide_subscription_adapter(factory, adapts=None, provides=None): """Register a subscription adapter A subscription adapter is registered to provide an interface for some number of object types. If a factory implements only one interface, then the provides argument can be omitted and the provided interface will be used. (In this case, a provides argument can still be provided to provide a less specific interface.) If the factory has an adapts declaration, then the adapts argument can be omitted and the declaration will be used. (An adapts argument can be provided to override the declaration.) CAUTION: This API should only be used from test or application-setup code. This API shouldn't be used by regular library modules, as component registration is a configuration activity. """
def registerControllerForModel(controller, model): """ Registers `controller' as an adapter of `model' for IController, and optionally registers it for IResource, if it implements it. @param controller: A class that implements L{interfaces.IController}, usually a L{Controller} subclass. Optionally it can implement L{resource.IResource}. @param model: Any class, but probably a L{twisted.web.woven.model.Model} subclass. """ components.registerAdapter(controller, model, interfaces.IController) if resource.IResource.implementedBy(controller): components.registerAdapter(controller, model, resource.IResource)
def __init__(self, protoClass, bucketFilter): """Tell me what to wrap and where to get buckets. @param protoClass: The class of Protocol I will generate wrapped instances of. @type protoClass: L{Protocol<twisted.internet.interfaces.IProtocol>} class @param bucketFilter: The filter which will determine how traffic is shaped. @type bucketFilter: L{HierarchicalBucketFilter}. """ # More precisely, protoClass can be any callable that will return # instances of something that implements IProtocol. self.protocol = protoClass self.bucketFilter = bucketFilter
def messageFile(self, octets): """Create a file to which an incoming message may be written. @type octets: C{int} @param octets: The number of octets which will be written to the file @rtype: Any object which implements C{write(string)} and C{seek(int, int)} @return: A file-like object """ if octets > self._memoryFileLimit: return tempfile.TemporaryFile() else: return StringIO.StringIO()
def addListener(listener): """Add a mailbox change listener @type listener: Any object which implements C{IMailboxListener} @param listener: An object to add to the set of those which will be notified when the contents of this mailbox change. """
def addListener(self, listener): """ Add a listener to the listeners queue. The server adds itself as a listener when there is a SELECT, so it can send EXIST commands. :param listener: listener to add :type listener: an object that implements IMailboxListener """ listeners = self.listeners self.log.debug('Adding mailbox listener: %s. Total: %s' % ( listener, len(listeners))) listeners.add(listener)
def removeListener(self, listener): """ Remove a listener from the listeners queue. :param listener: listener to remove :type listener: an object that implements IMailboxListener """ self.listeners.remove(listener)
def get_utility(interface, name='', context=None): """Get the utility that provides interface Returns the nearest utility to the context that implements the specified interface. If one is not found, raises ComponentLookupError. """
def query_utility(interface, name='', default=None, context=None): """Look for the utility that provides interface Returns the nearest utility to the context that implements the specified interface. If one is not found, returns default. """
def implements(f): pass
def updatedState(self): """Call this whenever the resource was updated, and a notification should be sent to observers.""" # this implements the second implementation suggestion from # draft-ietf-coap-observe-11 section 4.4 # ## @TODO handle situations in which this gets called more often than # 2^32 times in 256 seconds (or document why we can be sure that # that will not happen) self.observe_index = (self.observe_index + 1) % (2**24) for o in self.observers.values(): o.trigger()