def iter_custom_errors(catalog):
    """Realiza validaciones sin usar el jsonschema.

    En esta función se agregan bloques de código en python que realizan
    validaciones complicadas o imposibles de especificar usando jsonschema.
    """

    try:
        # chequea que no se repiten los ids de la taxonomía específica
        if "themeTaxonomy" in catalog:
            theme_ids = [theme["id"] for theme in catalog["themeTaxonomy"]]
            dups = _find_dups(theme_ids)
            if len(dups) > 0:
                yield ce.ThemeIdRepeated(dups)

        # chequea que un dataset no use un theme que no exista en la taxonomía
        # TODO: hay que implementarlo

        # chequea que un dataset no use theme con id esté repetido en taxonomía
        # TODO: hay que implementarlo

        # chequea que la extensión de fileName, downloadURL y format sean
        # consistentes
        for dataset_idx, dataset in enumerate(catalog["dataset"]):
            for distribution_idx, distribution in enumerate(
                    dataset["distribution"]):
                for attribute in ['downloadURL', 'fileName']:
                    if not format_matches_extension(distribution, attribute):
                        yield ce.ExtensionError(dataset_idx, distribution_idx,
                                                distribution, attribute)

        # chequea que no haya duplicados en los downloadURL de las
        # distribuciones
        # urls = []
        # for dataset in catalog["dataset"]:
        #     urls += [distribution['downloadURL']
        #              for distribution in dataset['distribution']
        #              if distribution.get('downloadURL')]
        # dups = _find_dups(urls)
        # if len(dups) > 0:
        #     yield ce.DownloadURLRepetitionError(dups)

        # chequea que las URLs de las distribuciones estén operativas
        # hay que revisar
        # for distribution in catalog.distributions:
        #     url = distribution.get("downloadURL")
        #     status_code = requests.head(url).status_code
        #     if status_code != 200:
        #         yield ce.DownloadURLBrokenError(
        #             distribution.get("identifier"), url, status_code)

    except Exception:
        logger.exception("Error de validación.")
def iter_custom_errors ( catalog ) : try : if "themeTaxonomy" in catalog : theme_ids = [ theme [ "id" ] for theme in catalog [ "themeTaxonomy" ] ] dups = _find_dups ( theme_ids ) if len ( dups ) > 0 : yield ce . ThemeIdRepeated ( dups ) for dataset_idx , dataset in enumerate ( catalog [ "dataset" ] ) : for distribution_idx , distribution in enumerate ( dataset [ "distribution" ] ) : for attribute in [ 'downloadURL' , 'fileName' ] : if not format_matches_extension ( distribution , attribute ) : yield ce . ExtensionError ( dataset_idx , distribution_idx , distribution , attribute ) except Exception : logger . exception ( "Error de validación." )
Realiza validaciones sin usar el jsonschema.

    En esta función se agregan bloques de código en python que realizan
    validaciones complicadas o imposibles de especificar usando jsonschema.