def _generate_indicators(catalog, validator=None, only_numeric=False):
    """Genera los indicadores de un catálogo individual.

    Args:
        catalog (dict): diccionario de un data.json parseado

    Returns:
        dict: diccionario con los indicadores del catálogo provisto
    """

    result = {}

    # Obtengo summary para los indicadores del estado de los metadatos
    result.update(_generate_status_indicators(catalog, validator=validator))

    # Genero los indicadores relacionados con fechas, y los agrego
    result.update(
        _generate_date_indicators(catalog, only_numeric=only_numeric))

    # Agrego la cuenta de los formatos de las distribuciones
    if not only_numeric:
        if 'dataset' in catalog:
            format_count = count_fields(get_distributions(catalog), 'format')
            type_count = count_fields(get_distributions(catalog), 'type')
            license_count = count_fields(get_datasets(catalog), 'license')
        else:
            format_count = type_count = license_count = {}

        result.update({
            'distribuciones_formatos_cant': format_count,
            'distribuciones_tipos_cant': type_count,
            'datasets_licencias_cant': license_count,
        })

    # Agrego porcentaje de campos recomendados/optativos usados
    fields_count = _count_required_and_optional_fields(catalog)
    recomendados_pct = float(fields_count['recomendado']) / \
        fields_count['total_recomendado']
    optativos_pct = float(fields_count['optativo']) / \
        fields_count['total_optativo']
    result.update({
        'campos_recomendados_pct': round(recomendados_pct, 4),
        'campos_optativos_pct': round(optativos_pct, 4)
    })
    return fields_count, result
def _generate_indicators ( catalog , validator = None , only_numeric = False ) : result = { } result . update ( _generate_status_indicators ( catalog , validator = validator ) ) result . update ( _generate_date_indicators ( catalog , only_numeric = only_numeric ) ) if not only_numeric : if 'dataset' in catalog : format_count = count_fields ( get_distributions ( catalog ) , 'format' ) type_count = count_fields ( get_distributions ( catalog ) , 'type' ) license_count = count_fields ( get_datasets ( catalog ) , 'license' ) else : format_count = type_count = license_count = { } result . update ( { 'distribuciones_formatos_cant' : format_count , 'distribuciones_tipos_cant' : type_count , 'datasets_licencias_cant' : license_count , } ) fields_count = _count_required_and_optional_fields ( catalog ) recomendados_pct = float ( fields_count [ 'recomendado' ] ) / fields_count [ 'total_recomendado' ] optativos_pct = float ( fields_count [ 'optativo' ] ) / fields_count [ 'total_optativo' ] result . update ( { 'campos_recomendados_pct' : round ( recomendados_pct , 4 ) , 'campos_optativos_pct' : round ( optativos_pct , 4 ) } ) return fields_count , result
Genera los indicadores de un catálogo individual.

    Args:
        catalog (dict): diccionario de un data.json parseado

    Returns:
        dict: diccionario con los indicadores del catálogo provisto