@staticmethod
def from_templates(*, project: Project, scope: str):
    '\n        Build a PlatformVocabulary from the templates visible to a project.\n\n        All of the templates with the given scope are downloaded and converted into descriptors.\n        The uid values associated with that scope are used as the index into the dictionary.\n        For example, using scope "my_templates" with a template with\n        uids={"my_templates": "density"} would be indexed into the dictionary as "density".\n\n        Parameters\n        ----------\n        project: Project\n            Project on the Citrine Platform to read templates from\n        scope: str\n            Unique ID scope from which to pull the template names\n\n        Returns\n        -------\n        PlatformVocabulary\n\n        '

    def _from_collection(collection: DataConceptsCollection):
        return {x.uids[scope]: x for x in collection.list() if (scope in x.uids)}
    properties = _from_collection(project.property_templates)
    parameters = _from_collection(project.parameter_templates)
    conditions = _from_collection(project.condition_templates)
    res = {}
    for (k, v) in chain(properties.items(), parameters.items(), conditions.items()):
        try:
            desc = template_to_descriptor(v)
            res[k] = desc
        except NoEquivalentDescriptorError:
            continue
    return PlatformVocabulary(entries=res)
Build a PlatformVocabulary from the templates visible to a project.

All of the templates with the given scope are downloaded and converted into descriptors.
The uid values associated with that scope are used as the index into the dictionary.
For example, using scope "my_templates" with a template with
uids={"my_templates": "density"} would be indexed into the dictionary as "density".

Parameters
----------
project: Project
    Project on the Citrine Platform to read templates from
scope: str
    Unique ID scope from which to pull the template names

Returns
-------
PlatformVocabulary
@staticmethod
def from_templates(*, project: Project, scope: str):
    '\n        Build a PlatformVocabulary from the templates visible to a project.\n\n        All of the templates with the given scope are downloaded and converted into descriptors.\n        The uid values associated with that scope are used as the index into the dictionary.\n        For example, using scope "my_templates" with a template with\n        uids={"my_templates": "density"} would be indexed into the dictionary as "density".\n\n        Parameters\n        ----------\n        project: Project\n            Project on the Citrine Platform to read templates from\n        scope: str\n            Unique ID scope from which to pull the template names\n\n        Returns\n        -------\n        PlatformVocabulary\n\n        '

    def _from_collection(collection: DataConceptsCollection):
        return {x.uids[scope]: x for x in collection.list() if (scope in x.uids)}
    properties = _from_collection(project.property_templates)
    parameters = _from_collection(project.parameter_templates)
    conditions = _from_collection(project.condition_templates)
    res = {}
    for (k, v) in chain(properties.items(), parameters.items(), conditions.items()):
        try:
            desc = template_to_descriptor(v)
            res[k] = desc
        except NoEquivalentDescriptorError:
            continue
    return PlatformVocabulary(entries=res)