def getClassAlias(self, klass):
        """
        Gets a class alias based on the supplied C{klass}. If one is not found
        in the global context, one is created locally.

        If you supply a string alias and the class is not registered,
        L{miniamf.UnknownClassAlias} will be raised.

        @param klass: A class object or string alias.
        @return: The L{miniamf.ClassAlias} instance that describes C{klass}
        """
        try:
            return self._class_aliases[klass]
        except KeyError:
            pass

        try:
            alias = self._class_aliases[klass] = miniamf.get_class_alias(klass)
        except miniamf.UnknownClassAlias:
            if isinstance(klass, six.string_types):
                raise

            # no alias has been found yet .. check subclasses
            alias = util.get_class_alias(klass) or miniamf.ClassAlias
            meta = util.get_class_meta(klass)
            alias = alias(klass, defer=True, **meta)

            self._class_aliases[klass] = alias

        return alias
Example #2
0
    def test_simple(self):
        class A(object):
            pass

        miniamf.register_alias_type(DummyAlias, A)

        self.assertEqual(get_class_alias(A), DummyAlias)
Example #3
0
    def test_multiple(self):
        class A(object):
            pass

        class B(object):
            pass

        class C(object):
            pass

        miniamf.register_alias_type(DummyAlias, A)
        miniamf.register_alias_type(AnotherDummyAlias, B)
        miniamf.register_alias_type(YADummyAlias, C)

        self.assertEqual(get_class_alias(B), AnotherDummyAlias)
        self.assertEqual(get_class_alias(C), YADummyAlias)
        self.assertEqual(get_class_alias(A), DummyAlias)
Example #4
0
    def test_nested(self):
        class A(object):
            pass

        class B(object):
            pass

        class C(object):
            pass

        miniamf.register_alias_type(DummyAlias, A, B, C)

        self.assertEqual(get_class_alias(B), DummyAlias)
Example #5
0
 def test_none_existant(self):
     self.assertEqual(get_class_alias(self.__class__), None)