コード例 #1
0
ファイル: union.py プロジェクト: j-bernard/lgr-core
def union_metadata(first, second):
    """
    Union two metadata.

    :param first: The first metadata object to union.
    :param second: The other metadata object to union.
    :return: A new metadata object.
    """
    logger.debug("Union of metadata")

    output = Metadata()

    if first.version is not None:
        output.version = union_version(first.version, second.version)
    if first.description is not None:
        output.description = union_description(first.description,
                                               second.description)

    output.scopes = set.union(set(first.scopes), set(first.scopes))
    output.languages = set.union(set(first.languages),
                                 set(second.languages))

    output.date = date.today().isoformat()
    output.validity_start = compare_objects(first.validity_start,
                                            second.validity_start,
                                            max)
    output.validity_end = compare_objects(first.validity_end,
                                          second.validity_end,
                                          min)

    output.unicode_version = compare_objects(first.unicode_version,
                                             second.unicode_version,
                                             max)

    return output
コード例 #2
0
ファイル: merge_set.py プロジェクト: g11r/lgr-core
def merge_metadata(lgr_set):
    """
    Merge metadata from LGR set.

    :param lgr_set: The LGRs in the set
    :return: The merged metadata object
    """
    logger.debug("Merge metadata")

    output = Metadata()

    output.version = merge_version(lgr_set)
    output.description = merge_description(lgr_set)

    scopes = OrderedDict()
    languages = OrderedDict()
    for metadata in [lgr.metadata for lgr in lgr_set]:
        scopes.update(OrderedDict.fromkeys(metadata.scopes))
        languages.update(OrderedDict.fromkeys(metadata.languages))
        output.validity_start = compare_objects(output.validity_start,
                                                metadata.validity_start, max)
        output.validity_end = compare_objects(output.validity_end,
                                              metadata.validity_end, min)

        output.unicode_version = compare_objects(output.unicode_version,
                                                 metadata.unicode_version, max)

    output.scopes = list(scopes.keys())
    output.languages = list(languages.keys())

    output.date = date.today().isoformat()

    return output
コード例 #3
0
ファイル: intersect.py プロジェクト: g11r/lgr-core
def intersect_metadata(first, second):
    """
    Intersect two metadata.

    :param first: The first metadata object to intersect with.
    :param second: The other metadata object to intersect with.
    :return: A new metadata object.
    """
    output = Metadata()

    output.version = intersect_version(first.version, second.version)
    output.description = intersect_description(first.description,
                                               second.description)

    output.scopes = set.intersection(set(first.scopes), set(first.scopes))
    output.languages = set.intersection(set(first.languages),
                                        set(second.languages))

    output.date = date.today().isoformat()
    output.validity_start = compare_objects(first.validity_start,
                                            second.validity_start, max)
    output.validity_end = compare_objects(first.validity_end,
                                          second.validity_end, min)

    output.unicode_version = compare_objects(first.unicode_version,
                                             second.unicode_version, max)

    return output