def test_provides(): IDENTIFIED_OBJECT_SPEC = "%s:IdentifiedObject" % __name__ category = str(uuid.uuid4()) with override_provides(category, [ IDENTIFIED_OBJECT_SPEC, "%s:UnidentifiedObject" % __name__, "%s:VeryUnidentifiedObject" % __name__, ]): objects = get_provide_objects(category) assert set(objects) == set((IdentifiedObject, UnidentifiedObject, VeryUnidentifiedObject)) assert get_identifier_to_object_map(category)["identifier"] == IdentifiedObject assert get_identifier_to_spec_map(category)["identifier"] == IDENTIFIED_OBJECT_SPEC assert get_provide_specs_and_objects(category)[IDENTIFIED_OBJECT_SPEC] == IdentifiedObject # Test the context manager clears things correctly assert empty_iterable(get_provide_objects(category)) assert empty_iterable(get_provide_specs_and_objects(category)) assert empty_iterable(get_identifier_to_object_map(category)) assert empty_iterable(get_identifier_to_spec_map(category))
def get_module_implementation_map(cls): """ Get a dict that maps module spec identifiers (short strings) into actual spec names. As an example: >>> {"Eggs": "foo_package.bar_module:EggsClass"} :rtype: dict[str, str] """ identifier_to_spec = {} for spec, module in six.iteritems(get_provide_specs_and_objects(cls.module_provides_key)): if module.identifier: identifier_to_spec[module.identifier] = spec return identifier_to_spec
def get_module_implementation_map(cls): """ Get a dict that maps module spec identifiers (short strings) into actual spec names. As an example:: {"Eggs": "foo_package.bar_module:EggsClass"} :rtype: dict[str, str] """ identifier_to_spec = {} for spec, module in six.iteritems( get_provide_specs_and_objects(cls.module_provides_key)): if module.identifier: identifier_to_spec[module.identifier] = spec return identifier_to_spec