예제 #1
0
    def test_extendning(self):
        c1 = Components('1')
        self.assertEqual(c1.__bases__, ())

        c2 = Components('2', (c1, ))
        self.assertTrue(c2.__bases__ == (c1, ))

        test_object1 = U1(1)
        test_object2 = U1(2)
        test_object3 = U12(1)
        test_object4 = U12(3)

        self.assertEqual(len(list(c1.registeredUtilities())), 0)
        self.assertEqual(len(list(c2.registeredUtilities())), 0)

        c1.registerUtility(test_object1)
        self.assertEqual(len(list(c1.registeredUtilities())), 1)
        self.assertEqual(len(list(c2.registeredUtilities())), 0)
        self.assertEqual(c1.queryUtility(I1), test_object1)
        self.assertEqual(c2.queryUtility(I1), test_object1)

        c1.registerUtility(test_object2)
        self.assertEqual(len(list(c1.registeredUtilities())), 1)
        self.assertEqual(len(list(c2.registeredUtilities())), 0)
        self.assertEqual(c1.queryUtility(I1), test_object2)
        self.assertEqual(c2.queryUtility(I1), test_object2)

        c3 = Components('3', (c1, ))
        c4 = Components('4', (c2, c3))
        self.assertEqual(c4.queryUtility(I1), test_object2)

        c1.registerUtility(test_object3, I2)
        self.assertEqual(c4.queryUtility(I2), test_object3)

        c3.registerUtility(test_object4, I2)
        self.assertEqual(c4.queryUtility(I2), test_object4)

        @adapter(I1)
        def handle1(x):
            self.assertEqual(x, test_object1)

        def handle(*objects):
            self.assertEqual(objects, (test_object1, ))

        @adapter(I1)
        def handle3(x):
            self.assertEqual(x, test_object1)

        @adapter(I1)
        def handle4(x):
            self.assertEqual(x, test_object1)

        c1.registerHandler(handle1, info=u'First handler')
        c2.registerHandler(handle, required=[U])
        c3.registerHandler(handle3)
        c4.registerHandler(handle4)

        c4.handle(test_object1)
예제 #2
0
 def __init__(self):
     self.registry = Components('Testing')
     self.old = getSiteManager.sethook(lambda: self.registry)
     self.instances.add(self)
     if not self.__class__.atexit_setup:
         atexit.register(self.atexit)
         self.__class__.atexit_setup = True
예제 #3
0
 def test_nested(self):
     from zope.interface import Interface
     from zope.interface import implementer
     from zope.interface.registry import Components
     from guillotina.component import get_global_components
     from guillotina.component.tests.examples import ConformsToIComponentLookup
     class IFoo(Interface):
         pass
     class IBar(Interface):
         pass
     @implementer(IFoo)
     class Global(object):
         def __init__(self, context):
             self.context = context
     @implementer(IFoo)
     class Local(object):
         def __init__(self, context):
             self.context = context
     @implementer(IBar)
     class Bar(object):
         pass
     class Context(ConformsToIComponentLookup):
         def __init__(self, sm):
             self.sitemanager = sm
     gsm = get_global_components()
     gsm.registerAdapter(Global, (IBar,), IFoo, '')
     sm1 = Components('sm1', bases=(gsm, ))
     sm1.registerAdapter(Local, (IBar,), IFoo, '')
     bar = Bar()
     adapted = self._callFUT(bar, IFoo, '', context=Context(sm1))
     self.assertTrue(adapted.__class__ is Local)
     self.assertTrue(adapted.context is bar)
    def test_hit_in_current_site(self):
        from zope.component._api import getSiteManager
        from zope.component.globalregistry import getGlobalSiteManager
        from zope.interface.registry import Components
        from zope.interface import Interface
        from zope.interface.interfaces import IInterface

        class ILocal(Interface):
            pass

        class IGlobal(Interface):
            pass

        gsm = getGlobalSiteManager()
        site_man = Components(bases=(gsm,))
        def get(_context=None):
            return site_man
        getSiteManager.sethook(get)
        self.addCleanup(getSiteManager.reset)


        gsm.registerUtility(IGlobal, IInterface, 'foo')
        site_man.registerUtility(ILocal, IInterface, 'bar')

        result = self._callFUT(None)
        self.assertEqual(len(result), 2)
        self.assertIn(ILocal, result)
        self.assertIn(IGlobal, result)

        getSiteManager.reset()

        result = self._callFUT(None)
        self.assertEqual(len(result), 1)
        self.assertIn(IGlobal, result)
예제 #5
0
 def test_nested(self):
     from zope.component import getGlobalSiteManager
     from zope.component.interfaces import IComponentLookup
     from zope.interface.registry import Components
     gsm = getGlobalSiteManager()
     gutil = _makeMyUtility('global', gsm)
     gsm.registerUtility(gutil, IMyUtility, 'myutil')
     sm1 = Components('sm1', bases=(gsm, ))
     sm1_1 = Components('sm1_1', bases=(sm1, ))
     util1 = _makeMyUtility('one', sm1)
     sm1.registerUtility(util1, IMyUtility, 'myutil')
     self.assertTrue(IComponentLookup(util1) is sm1)
     self.assertTrue(self._callFUT(util1, IMyUtility, 'myutil') is gutil)
     util1_1 = _makeMyUtility('one-one', sm1_1)
     sm1_1.registerUtility(util1_1, IMyUtility, 'myutil')
     self.assertTrue(IComponentLookup(util1_1) is sm1_1)
     self.assertTrue(self._callFUT(util1_1, IMyUtility, 'myutil') is util1)
예제 #6
0
 def __init__(self, serializer=json.dumps, adapters=(), **kw):
     """ Any keyword arguments will be passed to the ``serializer``
     function."""
     self.serializer = serializer
     self.kw = kw
     self.components = Components()
     for type, adapter in adapters:
         self.add_adapter(type, adapter)
예제 #7
0
 def test_init_forwards_kw(self):
     from zope.interface import Interface
     from zope.interface.registry import Components
     dummy = object()
     c = Components()
     c.registerUtility(dummy, Interface)
     registry = self._makeOne(bases=(c, ))
     self.assertEqual(registry.getUtility(Interface), dummy)
예제 #8
0
 def test_nested(self):
     from zope.component import getGlobalSiteManager
     from zope.interface.registry import Components
     gsm = getGlobalSiteManager()
     gutil = _makeMyUtility('global', gsm)
     gsm.registerUtility(gutil, IMyUtility, 'myutil')
     sm1 = Components('sm1', bases=(gsm, ))
     sm1_1 = Components('sm1_1', bases=(sm1, ))
     util1 = _makeMyUtility('one', sm1)
     sm1.registerUtility(util1, IMyUtility, 'myutil')
     util1_1 = _makeMyUtility('one-one', sm1_1)
     sm1_1.registerUtility(util1_1, IMyUtility, 'myutil')
     myregistry = Components()
     custom_util = _makeMyUtility('my_custom_util', myregistry)
     myregistry.registerUtility(custom_util, IMyUtility, 'my_custom_util')
     sm1.__bases__ = (myregistry, ) + sm1.__bases__
     # Both the ``myregistry`` and global utilities should be available:
     self.assertTrue(
         self._callFUT(sm1, IMyUtility, 'my_custom_util') is custom_util)
     self.assertTrue(self._callFUT(sm1, IMyUtility, 'myutil') is gutil)
예제 #9
0
def populate_components():
    def factory(o):
        return 42

    pop_components = Components()
    for iface in ifaces:
        for other_iface in ifaces:
            pop_components.registerAdapter(factory, (iface, ),
                                           other_iface,
                                           event=False)

    return pop_components
예제 #10
0
    def test_nested(self):
        from zope.interface import Interface
        from zope.interface import implementer
        from zope.interface.registry import Components
        from zope.component import getGlobalSiteManager
        from zope.component.tests.examples import ConformsToIComponentLookup

        class IFoo(Interface):
            pass

        class IBar(Interface):
            pass

        class IBaz(Interface):
            pass

        @implementer(IBar)
        class Bar(object):
            pass

        @implementer(IBaz)
        class Baz(object):
            pass

        @implementer(IFoo)
        class Global(object):
            def __init__(self, first, second):
                self.first, self.second = first, second

        @implementer(IFoo)
        class Local(object):
            def __init__(self, first, second):
                self.first, self.second = first, second

        class Context(ConformsToIComponentLookup):
            def __init__(self, sm):
                self.sitemanager = sm

        gsm = getGlobalSiteManager()
        gsm.registerAdapter(Global, (IBar, IBaz), IFoo, '')
        sm1 = Components('sm1', bases=(gsm, ))
        sm1.registerAdapter(Local, (IBar, IBaz), IFoo, '')
        bar = Bar()
        baz = Baz()
        adapted = self._callFUT((bar, baz), IFoo, '', context=Context(sm1))
        self.assertTrue(adapted.__class__ is Local)
        self.assertTrue(adapted.first is bar)
        self.assertTrue(adapted.second is baz)
예제 #11
0
    def test_uses_configured_site_manager(self):
        from zope.interface.registry import Components
        from zope.component import getSiteManager
        from zope.component.testfiles.components import comp, IApp
        from zope.component._compat import _BLANK

        registry = Components()

        def dummy(context=None):
            return registry

        getSiteManager.sethook(dummy)

        try:
            self._callFUT('registerUtility', comp, IApp, _BLANK)
            self.assertTrue(registry.getUtility(IApp) is comp)
        finally:
            getSiteManager.reset()
예제 #12
0
def main(argv=sys.argv[1:]):
    reg = Components()
    reg.registerUtility(GoogleVisionAPIFaceDetection(), IDetection, 'gcp')
    reg.registerUtility(MSProjectoxfordDetection(get_ms_param()['API_TOKEN']),
                        IDetection, 'ms')
    reg.registerUtility(AkamaiCrop(), ICrop, 'akamai')

    parser = argparse.ArgumentParser()
    parser.add_argument('mode', help='gcp or ms')
    parser.add_argument('target', help='url or path')
    parser.add_argument('--crop', default='akamai')
    args = parser.parse_args(argv)

    detect = reg.queryUtility(IDetection, args.mode)
    result = detect(args.target)
    crop = AkamaiCrop()
    url = crop(result)
    print(url)
예제 #13
0
def test_registration_with_custom_registry():
    from pseud.utils import (get_rpc_callable,
                             registry,
                             register_rpc,
                             )

    local_registry = Components(name='local',
                                bases=(registry,))

    @register_rpc(name='try_to_call_me')
    def callme(*args, **kw):
        return 'global'

    @register_rpc(name='try_to_call_me',
                  registry=local_registry)
    def callme2(*args, **kw):
        return 'local'

    assert get_rpc_callable('try_to_call_me')() == 'global'
    assert get_rpc_callable('try_to_call_me',
                            registry=local_registry)() == 'local'
예제 #14
0
    def __init__(self, configuration=None):
        """
        Use configuration and dbConfiguration objects to setup your application.
        
        Events:
        - init(configuration)
        """
        self.registry = Components()
        self.configuration = configuration
        self.dbConfiguration = None
        # set id for logging
        if configuration:
            self.id = configuration.id
        else:
            self.id = __name__

        self.__name__ = u""
        self.__parent__ = None
        self.__acl__ = []

        # development
        self.debug = False
        self.reloadExtensions = False

        # v0.9.12: moved _meta to configuration.meta
        # meta fields are now handled by the application configuration
        # self._meta = copy.deepcopy(SystemFlds)

        # default root name if multiple
        self._defaultRoot = ""
        # cache database structure
        self._structure = PoolStructure()
        self._dbpool = None

        self.log = logging.getLogger(self.id)
        self.log.debug("Initialize %s", repr(configuration))
        self.Signal("init", configuration=configuration)

        self.starttime = 0
    def test_register_in_current_site(self):
        from zope.component._api import getSiteManager
        from zope.component.globalregistry import getGlobalSiteManager
        from zope.interface.registry import Components
        from zope.interface import Interface
        from zope.interface.interfaces import IInterface

        class IFoo(Interface):
            pass

        site_man = Components()
        def get(_context=None):
            return site_man
        getSiteManager.sethook(get)
        self.addCleanup(getSiteManager.reset)

        self._callFUT('foo', IFoo)

        self.assertIs(site_man.getUtility(IInterface, name='foo'),
                      IFoo)
        self.assertIsNone(
            getGlobalSiteManager().queryUtility(IInterface, name='foo')
        )
예제 #16
0
파일: services.py 프로젝트: hkmshb/hazel
 def __init__(self):
     self._component = Components()
예제 #17
0
def app_registry():
    """
    See also app_registry_mock.
    :return:
    """
    return Components()
예제 #18
0
runner.bench_time_func(
    'read __doc__',  # stored in Python instance dictionary directly
    bench_getattr,
    '__doc__',
    inner_loops=INNER * 10)

runner.bench_time_func(
    'read providedBy',  # from the class, wrapped into a method object.
    bench_getattr,
    'providedBy',
    inner_loops=INNER * 10)

runner.bench_time_func('query adapter (no registrations)',
                       bench_query_adapter,
                       Components(),
                       inner_loops=1)


def populate_components():
    def factory(o):
        return 42

    pop_components = Components()
    for iface in ifaces:
        for other_iface in ifaces:
            pop_components.registerAdapter(factory, (iface, ),
                                           other_iface,
                                           event=False)

    return pop_components
예제 #19
0
 def __init__(self, registry, resolve=None, target='includeme'):
     self.registry = registry
     self._resolve = resolve
     self._target = target
     self._depth = self.default_depth
     self._configurator_registry = Components()
예제 #20
0
'''
JSON Adapters

Created on May 30, 2013

@author: Edward Easton
'''
import json
import datetime
import logging

from zope.interface.registry import Components
from zope.interface import Interface, providedBy

# Singleton type registry
_TYPE_REGISTRY = Components()
_marker = object()


def get_log():
    return logging.getLogger('pp.utils.json')


class IJSONAdapter(Interface):
    """
    Marker interface for objects that can convert an arbitrary object
    into a JSON-serializable primitive.
    """


def get_adapters():
예제 #21
0
import zope.interface
import zope.interface.verify
from zope.interface.adapter import AdapterRegistry
from zope.interface.registry import Components
registry = Components()


class IFoo(zope.interface.Interface):
    """Foo blah blah"""
    x = zope.interface.Attribute("""X blah blah""")


class IBaz(IFoo):
    """Baz blah"""
    def eek(a=1):
        """eek in baz blah"""


@zope.interface.implementer(IBaz)
class Bazz:
    def __init__(self, x=None):
        self.x = x

    def eek(self, a=1):
        return a


assert IFoo.implementedBy(Bazz)
assert IBaz.implementedBy(Bazz)

bazz = Bazz()
예제 #22
0
파일: snippet.py 프로젝트: szabo92/gistable
def global_registry():
    return _global_registry or Components()
예제 #23
0
 def setUp(self):
     self.components = Components('comps')
예제 #24
0
def get_registry():
    global _registry
    if _registry is None:
        _registry = Components()
    return _registry