pydatajson package

Submodules

pydatajson.backup module

Módulo con funciones auxiliares para hacer backups de catálogos.

pydatajson.backup.get_catalog_path(catalog_id, catalogs_dir=u'', fmt=u'json')[fuente]

Genera el path estándar de un catálogo en un filesystem.

pydatajson.backup.get_distribution_dir(catalog_id, dataset_id, distribution_id, catalogs_dir=u'', use_short_path=False)[fuente]

Genera el path estándar de un catálogo en un filesystem.

pydatajson.backup.get_distribution_path(catalog_id, dataset_id, distribution_id, distribution_file_name, catalogs_dir=u'', use_short_path=False)[fuente]

Genera el path estándar de un catálogo en un filesystem.

pydatajson.backup.main(catalogs, include_data=True, use_short_path=True)[fuente]

Permite hacer backups de uno o más catálogos por línea de comandos.

Parámetros:catalogs (str) – Lista de catálogos separados por coma (URLs o paths locales) para hacer backups.
pydatajson.backup.make_catalog_backup(catalog, catalog_id=None, local_catalogs_dir=u'', include_metadata=True, include_data=True, include_datasets=None, include_distribution_formats=[u'CSV', u'XLS'], include_metadata_xlsx=True, use_short_path=False)[fuente]

Realiza una copia local de los datos y metadatos de un catálogo.

Parámetros:
  • catalog (dict or str) – Representación externa/interna de un catálogo. Una representación _externa_ es un path local o una URL remota a un archivo con la metadata de un catálogo, en formato JSON o XLSX. La representación _interna_ de un catálogo es un diccionario.
  • catalog_id (str) – Si se especifica, se usa este identificador para el backup. Si no se especifica, se usa catalog[«identifier»].
  • local_catalogs_dir (str) – Directorio local en el cual se va a crear la carpeta «catalog/…» con todos los catálogos.
  • include_metadata (bool) – Si es verdadero, se generan los archivos data.json y catalog.xlsx.
  • include_data (bool) – Si es verdadero, se descargan todas las distribuciones de todos los catálogos.
  • include_datasets (list) – Si se especifica, se descargan únicamente los datasets indicados. Si no, se descargan todos.
  • include_distribution_formats (list) – Si se especifica, se descargan únicamente las distribuciones de los formatos indicados. Si no, se descargan todas.
  • use_short_path (bool) – No implementado. Si es verdadero, se utiliza una jerarquía de directorios simplificada. Caso contrario, se replica la existente en infra.
Devuelve:

None

pydatajson.backup.make_catalogs_backup(catalogs, local_catalogs_dir=u'', include_metadata=True, include_data=True, include_metadata_xlsx=False, use_short_path=False)[fuente]

Realiza una copia local de los datos y metadatos de un catálogo.

Parámetros:
  • catalogs (list or dict) –

    Lista de catálogos (elementos que pueden ser interpretados por DataJson como catálogos) o diccionario donde las keys se interpretan como los catalog_identifier:

    Cuando es una lista, los ids se toman de catalog_identifer, y se ignoran los catálogos que no tengan catalog_identifier. Cuando se pasa un diccionario, los keys reemplazan a los catalog_identifier (estos no se leeen).

  • catalog_id (str) – Si se especifica, se usa este identificador para el backup. Si no se espedifica, se usa catalog[«identifier»].
  • local_catalogs_dir (str) – Directorio local en el cual se va a crear la carpeta «catalog/…» con todos los catálogos.
  • include_metadata (bool) – Si es verdadero, se generan los archivos data.json y catalog.xlsx.
  • include_data (bool) – Si es verdadero, se descargan todas las distribuciones de todos los catálogos.
Devuelve:

None

pydatajson.catalog_readme module

pydatajson.catalog_readme.generate_catalog_readme(_datajson, catalog, export_path=None)[fuente]

Este método está para mantener retrocompatibilidad con versiones anteriores. Se ignora el argumento _data_json.

pydatajson.catalog_readme.generate_readme(catalog, export_path=None)[fuente]

Genera una descripción textual en formato Markdown sobre los metadatos generales de un catálogo (título, editor, fecha de publicación, et cetera), junto con:

  • estado de los metadatos a nivel catálogo,
  • estado global de los metadatos,
  • cantidad de datasets federados y no federados,
  • detalles de los datasets no federados
  • cantidad de datasets y distribuciones incluidas

Es utilizada por la rutina diaria de libreria-catalogos para generar un README con información básica sobre los catálogos mantenidos.

Parámetros:
  • catalog (str o dict) – Path a un catálogo en cualquier formato, JSON, XLSX, o diccionario de python.
  • export_path (str) – Path donde exportar el texto generado (en formato Markdown). Si se especifica, el método no devolverá nada.
Devuelve:

Texto de la descripción generada.

Tipo del valor devuelto:
 

str

pydatajson.ckan_reader module

Extensión de pydatajson para leer catálogos de metadatos a través de la API de CKAN v3.

pydatajson.ckan_reader.add_accrualPeriodicity(dataset, package)[fuente]
pydatajson.ckan_reader.add_superTheme(dataset, package)[fuente]
pydatajson.ckan_reader.add_temporal(dataset, package)[fuente]
pydatajson.ckan_reader.map_group_to_theme(group)[fuente]

Mapea un diccionario con metadatos de cierto “group” de CKAN a un diccionario con metadatos de un “theme” según el estándar data.json.

pydatajson.ckan_reader.map_groups_to_themes(groups)[fuente]

Mapea una lista de “groups” de CKAN a “themes” de data.json.

pydatajson.ckan_reader.map_package_to_dataset(package, portal_url)[fuente]

Mapea un diccionario con metadatos de cierto “package” de CKAN a un diccionario con metadatos de un “dataset” según el estándar data.json.

pydatajson.ckan_reader.map_packages_to_datasets(packages, portal_url)[fuente]

Mapea una lista de “packages” de CKAN a “datasets” de data.json.

pydatajson.ckan_reader.map_resource_to_distribution(resource, portal_url)[fuente]

Mapea un diccionario con metadatos de cierto “resource” CKAN a dicts con metadatos de una “distribution” según el estándar data.json.

pydatajson.ckan_reader.map_resources_to_distributions(resources, portal_url)[fuente]

Mapea una lista de “resources” CKAN a “distributions” de data.json.

pydatajson.ckan_reader.map_status_to_catalog(status)[fuente]

Convierte el resultado de action.status_show() en metadata a nivel de catálogo.

pydatajson.ckan_reader.read_ckan_catalog(portal_url)[fuente]

Convierte los metadatos de un portal disponibilizados por la Action API v3 de CKAN al estándar data.json.

Parámetros:portal_url (str) – URL de un portal de datos CKAN que soporte la API v3.
Devuelve:
Representación interna de un catálogo para uso en las funciones
de esta librería.
Tipo del valor devuelto:
 dict

pydatajson.ckan_utils module

pydatajson.ckan_utils.append_attribute_to_extra(package, dataset, attribute, serialize=False)[fuente]
pydatajson.ckan_utils.convert_iso_string_to_dst_timezone(date_string, origin_tz='America/Buenos_Aires', dst_tz='America/Buenos_Aires')[fuente]
pydatajson.ckan_utils.map_dataset_to_package(catalog, dataset, owner_org, catalog_id=None, demote_superThemes=True, demote_themes=True, origin_tz='America/Buenos_Aires', dst_tz='America/Buenos_Aires')[fuente]
pydatajson.ckan_utils.map_distributions_to_resources(distributions, catalog_id=None, origin_tz='America/Buenos_Aires', dst_tz='America/Buenos_Aires')[fuente]
pydatajson.ckan_utils.map_theme_to_group(theme)[fuente]

pydatajson.constants module

pydatajson.core module

Módulo principal de pydatajson

Contiene la clase DataJson que reúne los métodos públicos para trabajar con archivos data.json.

class pydatajson.core.DataJson(catalog=None, schema_filename=None, schema_dir=None, default_values=None, catalog_format=None, validator_class=<class 'pydatajson.validation.Validator'>, verify_ssl=False, requests_timeout=30)[fuente]

Bases: dict

Objeto que representa un catálogo de activos de datos.

CATALOG_FIELDS_PATH = u'/home/docs/checkouts/readthedocs.org/user_builds/pydatajson/checkouts/stable/pydatajson/fields'
catalog_report(catalog, harvest=u'none', report=None, catalog_id=None, catalog_homepage=None, catalog_org=None)[fuente]

Genera un reporte sobre los datasets de un único catálogo.

Parámetros:
  • catalog (dict, str o unicode) – Representación externa (path/URL) o interna (dict) de un catálogo.
  • harvest (str) – Criterio de cosecha (“all”, “none”, “valid”, “report” o “good”).
Devuelve:

Lista de diccionarios, con un elemento por cada dataset

presente en catalog.

Tipo del valor devuelto:
 

list

dataset_is_updated(catalog, dataset)[fuente]
datasets

Devuelve una lista de datasets del catálogo o de uno de sus metadatos.

Parámetros:
  • catalog (dict, str or DataJson) – Representación externa/interna de un catálogo. Una representación _externa_ es un path local o una URL remota a un archivo con la metadata de un catálogo, en formato JSON o XLSX. La representación _interna_ de un catálogo es un diccionario. Ejemplos: http://datos.gob.ar/data.json, http://www.ign.gob.ar/descargas/geodatos/catalog.xlsx, «/energia/catalog.xlsx».
  • filter_in (dict) –

    Devuelve los datasets cuyos atributos coinciden con los pasados en este diccionario. Ejemplo:

    {
        "dataset": {
            "publisher": {"name": "Ministerio de Ambiente"}
        }
    }
    

    Sólo se devolverán los datasets de ese publisher_name.

  • filter_out (dict) –

    Devuelve los datasets cuyos atributos no coinciden con los pasados en este diccionario. Ejemplo:

    {
        "dataset": {
            "publisher": {"name": "Ministerio de Ambiente"}
        }
    }
    

    Sólo se devolverán los datasets que no sean de ese publisher_name.

  • meta_field (str) – Nombre de un metadato de Dataset. En lugar de devolver los objetos completos «Dataset», devuelve una lista de valores para ese metadato presentes en el catálogo.
  • exclude_meta_fields (list) – Metadatos de Dataset que se quieren excluir de los objetos Dataset devueltos.
  • only_time_series (bool) – Si es verdadero, sólo devuelve datasets que tengan por lo menos una distribución de series de tiempo.
distributions

Devuelve lista de distribuciones del catálogo o de uno de sus metadatos.

Parámetros:
  • catalog (dict, str or DataJson) – Representación externa/interna de un catálogo. Una representación _externa_ es un path local o una URL remota a un archivo con la metadata de un catálogo, en formato JSON o XLSX. La representación _interna_ de un catálogo es un diccionario. Ejemplos: http://datos.gob.ar/data.json, http://www.ign.gob.ar/descargas/geodatos/catalog.xlsx, «/energia/catalog.xlsx».
  • filter_in (dict) –

    Devuelve los distribuciones cuyos atributos coinciden con los pasados en este diccionario. Ejemplo:

    {
        "dataset": {
            "publisher": {"name": "Ministerio de Ambiente"}
        }
    }
    

    Sólo se devolverán los distribuciones que pertenezcan a un dataset de ese publisher_name.

  • filter_out (dict) –

    Devuelve los distribuciones cuyos atributos no coinciden con los pasados en este diccionario. Ejemplo:

    {
        "dataset": {
            "publisher": {"name": "Ministerio de Ambiente"}
        }
    }
    

    Sólo se devolverán los distribuciones que no pertenezcan a un dataset de ese publisher_name.

  • meta_field (str) – Nombre de un metadato de Distribution. En lugar de devolver los objetos completos Distribution, devuelve una lista de valores para ese metadato presentes en el catálogo.
  • exclude_meta_fields (list) – Metadatos de Distribution que se quieren excluir de los objetos Distribution devueltos.
  • only_time_series (bool) – Si es verdadero, sólo devuelve distribuciones que sean distribuciones de series de tiempo.
fields

Devuelve lista de campos del catálogo o de uno de sus metadatos.

Parámetros:
  • catalog (dict, str or DataJson) – Representación externa/interna de un catálogo. Una representación _externa_ es un path local o una URL remota a un archivo con la metadata de un catálogo, en formato JSON o XLSX. La representación _interna_ de un catálogo es un diccionario. Ejemplos: http://datos.gob.ar/data.json, http://www.ign.gob.ar/descargas/geodatos/catalog.xlsx, «/energia/catalog.xlsx».
  • filter_in (dict) –

    Devuelve los campos cuyos atributos coinciden con los pasados en este diccionario. Ejemplo:

    {
        "dataset": {
            "publisher": {"name": "Ministerio de Ambiente"}
        }
    }
    

    Sólo se devolverán los campos que pertenezcan a un dataset de ese publisher_name.

  • filter_out (dict) –

    Devuelve los campos cuyos atributos no coinciden con los pasados en este diccionario. Ejemplo:

    {
        "dataset": {
            "publisher": {"name": "Ministerio de Ambiente"}
        }
    }
    

    Sólo se devolverán los campos que no pertenezcan a un dataset de ese publisher_name.

  • meta_field (str) – Nombre de un metadato de Field. En lugar de devolver los objetos completos «Field», devuelve una lista de valores para ese metadato presentes en el catálogo.
  • exclude_meta_fields (list) – Metadatos de Field que se quieren excluir de los objetos Field devueltos.
  • only_time_series (bool) – Si es verdadero, sólo devuelve campos que sean series de tiempo.
generate_catalog_readme(catalog, export_path=None)

Este método está para mantener retrocompatibilidad con versiones anteriores. Se ignora el argumento _data_json.

generate_catalogs_indicators(catalogs=None, central_catalog=None, identifier_search=False)[fuente]
generate_dataset_documentation(dataset_identifier, export_path=None, catalog=None)[fuente]

Genera texto en markdown a partir de los metadatos de una dataset.

Parámetros:
  • dataset_identifier (str) – Identificador único de un dataset.
  • export_path (str) – Path donde exportar el texto generado. Si se especifica, el método no devolverá nada.
  • catalog (dict, str o unicode) – Representación externa (path/URL) o interna (dict) de un catálogo. Si no se especifica se usa el catálogo cargado en self (el propio objeto DataJson).
Devuelve:

Texto que describe una dataset.

Tipo del valor devuelto:
 

str

generate_datasets_report(catalogs, harvest=u'valid', report=None, export_path=None, catalog_ids=None, catalog_homepages=None, catalog_orgs=None)[fuente]

Genera un reporte sobre las condiciones de la metadata de los datasets contenidos en uno o varios catálogos.

Parámetros:
  • catalogs (str, dict o list) – Uno (str o dict) o varios (list de strs y/o dicts) catálogos.
  • harvest (str) – Criterio a utilizar para determinar el valor del campo «harvest» en el reporte generado (“all”, “none”, “valid”, “report” o “good”).
  • report (str) – Path a un reporte/config especificando qué datasets marcar con harvest=1 (sólo si harvest==”report”).
  • export_path (str) – Path donde exportar el reporte generado (en formato XLSX o CSV). Si se especifica, el método no devolverá nada.
  • catalog_id (str) – Nombre identificador del catálogo para federación
  • catalog_homepage (str) –

    URL del portal de datos donde está implementado el catálogo. Sólo se pasa si el portal es un CKAN o respeta la estructura:

    https://datos.{organismo}.gob.ar/dataset/{dataset_identifier}
Devuelve:

Contiene tantos dicts como datasets estén presentes en

catalogs, con la data del reporte generado.

Tipo del valor devuelto:
 

list

generate_datasets_summary(catalog, export_path=None)[fuente]

Genera un informe sobre los datasets presentes en un catálogo, indicando para cada uno:

  • Índice en la lista catalog[«dataset»]
  • Título
  • Identificador
  • Cantidad de distribuciones
  • Estado de sus metadatos [«OK»|»ERROR»]

Es utilizada por la rutina diaria de libreria-catalogos para reportar sobre los datasets de los catálogos mantenidos.

Parámetros:
  • catalog (str o dict) – Path a un catálogo en cualquier formato, JSON, XLSX, o diccionario de python.
  • export_path (str) – Path donde exportar el informe generado (en formato XLSX o CSV). Si se especifica, el método no devolverá nada.
Devuelve:

Contiene tantos dicts como datasets estén presentes en catalogs, con los datos antes mencionados.

Tipo del valor devuelto:
 

list

generate_distribution_ids()

Genera identificadores para las distribuciones que no los tienen.

Los identificadores de distribuciones se generan concatenando el id del dataset al que pertenecen con el índice posicional de la distribución en el dataset: distribution_identifier = «{dataset_identifier}_{index}».

generate_harvestable_catalogs(catalogs, harvest=u'all', report=None, export_path=None)[fuente]

Filtra los catálogos provistos según el criterio determinado en harvest.

Parámetros:
  • catalogs (str, dict o list) – Uno (str o dict) o varios (list de strs y/o dicts) catálogos.
  • harvest (str) – Criterio para determinar qué datasets conservar de cada catálogo (“all”, “none”, “valid” o “report”).
  • report (list o str) – Tabla de reporte generada por generate_datasets_report() como lista de diccionarios o archivo en formato XLSX o CSV. Sólo se usa cuando harvest==”report”.
  • export_path (str) – Path a un archivo JSON o directorio donde exportar los catálogos filtrados. Si termina en «.json» se exportará la lista de catálogos a un único archivo. Si es un directorio, se guardará en él un JSON por catálogo. Si se especifica export_path, el método no devolverá nada.
Devuelve:

Lista de catálogos.

Tipo del valor devuelto:
 

list of dicts

generate_harvester_config(catalogs=None, harvest=u'valid', report=None, export_path=None)[fuente]

Genera un archivo de configuración del harvester a partir de un reporte, o de un conjunto de catálogos y un criterio de cosecha (harvest).

Parámetros:
  • catalogs (str, dict o list) – Uno (str o dict) o varios (list de strs y/o dicts) catálogos.
  • harvest (str) – Criterio para determinar qué datasets incluir en el archivo de configuración generado (“all”, “none”, “valid”, “report” o “good”).
  • report (list o str) – Tabla de reporte generada por generate_datasets_report() como lista de diccionarios o archivo en formato XLSX o CSV. Sólo se usa cuando harvest==”report”, en cuyo caso catalogs se ignora.
  • export_path (str) – Path donde exportar el reporte generado (en formato XLSX o CSV). Si se especifica, el método no devolverá nada.
Devuelve:

Un diccionario con variables de configuración

por cada dataset a cosechar.

Tipo del valor devuelto:
 

list of dicts

generate_indicators(validator=None, only_numeric=False)
get_catalog_metadata(exclude_meta_fields=None)

Devuelve sólo la metadata de nivel catálogo.

get_dataset(identifier=None, title=None)

Devuelve un Dataset del catálogo.

get_datasets(filter_in=None, filter_out=None, meta_field=None, exclude_meta_fields=None, only_time_series=False)

Devuelve una lista de datasets del catálogo o de uno de sus metadatos.

Parámetros:
  • catalog (dict, str or DataJson) – Representación externa/interna de un catálogo. Una representación _externa_ es un path local o una URL remota a un archivo con la metadata de un catálogo, en formato JSON o XLSX. La representación _interna_ de un catálogo es un diccionario. Ejemplos: http://datos.gob.ar/data.json, http://www.ign.gob.ar/descargas/geodatos/catalog.xlsx, «/energia/catalog.xlsx».
  • filter_in (dict) –

    Devuelve los datasets cuyos atributos coinciden con los pasados en este diccionario. Ejemplo:

    {
        "dataset": {
            "publisher": {"name": "Ministerio de Ambiente"}
        }
    }
    

    Sólo se devolverán los datasets de ese publisher_name.

  • filter_out (dict) –

    Devuelve los datasets cuyos atributos no coinciden con los pasados en este diccionario. Ejemplo:

    {
        "dataset": {
            "publisher": {"name": "Ministerio de Ambiente"}
        }
    }
    

    Sólo se devolverán los datasets que no sean de ese publisher_name.

  • meta_field (str) – Nombre de un metadato de Dataset. En lugar de devolver los objetos completos «Dataset», devuelve una lista de valores para ese metadato presentes en el catálogo.
  • exclude_meta_fields (list) – Metadatos de Dataset que se quieren excluir de los objetos Dataset devueltos.
  • only_time_series (bool) – Si es verdadero, sólo devuelve datasets que tengan por lo menos una distribución de series de tiempo.
get_distribution(identifier=None, title=None, dataset_identifier=None)

Devuelve una Distribution del catálogo.

get_distribution_time_index(distribution)[fuente]
get_distribution_time_index_frequency(distribution)[fuente]
get_distributions(filter_in=None, filter_out=None, meta_field=None, exclude_meta_fields=None, only_time_series=False)

Devuelve lista de distribuciones del catálogo o de uno de sus metadatos.

Parámetros:
  • catalog (dict, str or DataJson) – Representación externa/interna de un catálogo. Una representación _externa_ es un path local o una URL remota a un archivo con la metadata de un catálogo, en formato JSON o XLSX. La representación _interna_ de un catálogo es un diccionario. Ejemplos: http://datos.gob.ar/data.json, http://www.ign.gob.ar/descargas/geodatos/catalog.xlsx, «/energia/catalog.xlsx».
  • filter_in (dict) –

    Devuelve los distribuciones cuyos atributos coinciden con los pasados en este diccionario. Ejemplo:

    {
        "dataset": {
            "publisher": {"name": "Ministerio de Ambiente"}
        }
    }
    

    Sólo se devolverán los distribuciones que pertenezcan a un dataset de ese publisher_name.

  • filter_out (dict) –

    Devuelve los distribuciones cuyos atributos no coinciden con los pasados en este diccionario. Ejemplo:

    {
        "dataset": {
            "publisher": {"name": "Ministerio de Ambiente"}
        }
    }
    

    Sólo se devolverán los distribuciones que no pertenezcan a un dataset de ese publisher_name.

  • meta_field (str) – Nombre de un metadato de Distribution. En lugar de devolver los objetos completos Distribution, devuelve una lista de valores para ese metadato presentes en el catálogo.
  • exclude_meta_fields (list) – Metadatos de Distribution que se quieren excluir de los objetos Distribution devueltos.
  • only_time_series (bool) – Si es verdadero, sólo devuelve distribuciones que sean distribuciones de series de tiempo.
get_field(identifier=None, title=None, distribution_identifier=None)

Devuelve un Field del catálogo.

get_field_location(identifier=None, title=None, distribution_identifier=None)
get_fields(filter_in=None, filter_out=None, meta_field=None, only_time_series=False, distribution_identifier=None)

Devuelve lista de campos del catálogo o de uno de sus metadatos.

Parámetros:
  • catalog (dict, str or DataJson) – Representación externa/interna de un catálogo. Una representación _externa_ es un path local o una URL remota a un archivo con la metadata de un catálogo, en formato JSON o XLSX. La representación _interna_ de un catálogo es un diccionario. Ejemplos: http://datos.gob.ar/data.json, http://www.ign.gob.ar/descargas/geodatos/catalog.xlsx, «/energia/catalog.xlsx».
  • filter_in (dict) –

    Devuelve los campos cuyos atributos coinciden con los pasados en este diccionario. Ejemplo:

    {
        "dataset": {
            "publisher": {"name": "Ministerio de Ambiente"}
        }
    }
    

    Sólo se devolverán los campos que pertenezcan a un dataset de ese publisher_name.

  • filter_out (dict) –

    Devuelve los campos cuyos atributos no coinciden con los pasados en este diccionario. Ejemplo:

    {
        "dataset": {
            "publisher": {"name": "Ministerio de Ambiente"}
        }
    }
    

    Sólo se devolverán los campos que no pertenezcan a un dataset de ese publisher_name.

  • meta_field (str) – Nombre de un metadato de Field. En lugar de devolver los objetos completos «Field», devuelve una lista de valores para ese metadato presentes en el catálogo.
  • exclude_meta_fields (list) – Metadatos de Field que se quieren excluir de los objetos Field devueltos.
  • only_time_series (bool) – Si es verdadero, sólo devuelve campos que sean series de tiempo.
get_theme(identifier=None, label=None)
get_themes()

Devuelve la lista de temas del catálogo (taxonomía temática).

get_time_series(**kwargs)

Devuelve lista de series de tiempo del catálogo o uno de sus metadatos.

Parámetros:
  • catalog (dict, str or DataJson) – Representación externa/interna de un catálogo. Una representación _externa_ es un path local o una URL remota a un archivo con la metadata de un catálogo, en formato JSON o XLSX. La representación _interna_ de un catálogo es un diccionario. Ejemplos: http://datos.gob.ar/data.json, http://www.ign.gob.ar/descargas/geodatos/catalog.xlsx, «/energia/catalog.xlsx».
  • filter_in (dict) –

    Devuelve las series cuyos atributos coinciden con los pasados en este diccionario. Ejemplo:

    {
        "dataset": {
            "publisher": {"name": "Ministerio de Ambiente"}
        }
    }
    

    Sólo se devolverán las series que pertenezcan a un dataset de ese publisher_name.

  • filter_out (dict) –

    Devuelve las series cuyos atributos no coinciden con los pasados en este diccionario. Ejemplo:

    {
        "dataset": {
            "publisher": {"name": "Ministerio de Ambiente"}
        }
    }
    

    Sólo se devolverán las series que no pertenezcan a un dataset de ese publisher_name.

  • meta_field (str) – Nombre de un metadato de Field. En lugar de devolver los objetos completos «Field», devuelve una lista de valores para ese metadato presentes en el catálogo.
  • exclude_meta_fields (list) – Metadatos de Field que se quieren excluir de los objetos Field devueltos.
harvest_catalog_to_ckan(portal_url, apikey, catalog_id, dataset_list=None, owner_org=None, download_strategy=None, origin_tz='America/Buenos_Aires', dst_tz='America/Buenos_Aires')

Federa los datasets de un catálogo al portal pasado por parámetro.

Parámetros:
  • catalog (DataJson) – El catálogo de origen que se federa.
  • portal_url (str) – La URL del portal CKAN de destino.
  • apikey (str) – La apikey de un usuario con los permisos que le permitan crear o actualizar el dataset.
  • catalog_id (str) – El prefijo con el que va a preceder el id del dataset en catálogo destino.
  • dataset_list (list(str)) – Los ids de los datasets a federar. Si no se pasa una lista, todos los datasests se federan.
  • owner_org (str) – La organización a la cual pertencen los datasets. Si no se pasa, se utiliza el catalog_id.
  • download_strategy (callable) – Una función (catálogo, distribución)-> bool. Sobre las distribuciones que evalúa True, descarga el recurso en el downloadURL y lo sube al portal de destino. Por default no sube ninguna distribución.
  • origin_tz (str) – Timezone de origen, un string (EJ: Africa/Bamako) el cual identifica el timezone del emisor del DataJson.
  • dst_tz (str) – Timezone de destino, un string (EJ: Antarctica/Palmer) el cual identifica el timezone del receptor del DataJson, comunmente el timezone del servidor.
Devuelve:

El id del dataset en el catálogo de destino.

Tipo del valor devuelto:
 

str

harvest_dataset_to_ckan(owner_org, dataset_origin_identifier, portal_url, apikey, catalog_id, download_strategy=None, origin_tz='America/Buenos_Aires', dst_tz='America/Buenos_Aires')

Federa la metadata de un dataset en el portal pasado por parámetro.

Parámetros:
  • catalog (DataJson) – El catálogo de origen que contiene el dataset.
  • owner_org (str) – La organización a la cual pertence el dataset.
  • dataset_origin_identifier (str) – El id del dataset que se va a restaurar.
  • portal_url (str) – La URL del portal CKAN de destino.
  • apikey (str) – La apikey de un usuario con los permisos que le permitan crear o actualizar el dataset.
  • catalog_id (str) – El id que prependea al dataset y recursos
  • download_strategy (callable) – Una función (catálogo, distribución)-> bool. Sobre las distribuciones que evalúa True, descarga el recurso en el downloadURL y lo sube al portal de destino. Por default no sube ninguna distribución.
  • origin_tz (str) – Timezone de origen, un string (EJ: Africa/Bamako) el cual identifica el timezone del emisor del DataJson.
  • dst_tz (str) – Timezone de destino, un string (EJ: Antarctica/Palmer) el cual identifica el timezone del receptor del DataJson, comunmente el timezone del servidor.
Devuelve:

El id del dataset restaurado.

Tipo del valor devuelto:
 

str

is_valid_catalog(catalog=None)[fuente]

Valida que un archivo data.json cumpla con el schema definido.

Chequea que el data.json tiene todos los campos obligatorios y que tanto los campos obligatorios como los opcionales siguen la estructura definida en el schema.

Parámetros:catalog (str o dict) – Catálogo (dict, JSON o XLSX) a ser validado. Si no se pasa, valida este catálogo.
Devuelve:True si el data.json cumple con el schema, sino False.
Tipo del valor devuelto:
 bool
make_catalog_backup(catalog_id=None, local_catalogs_dir=u'', include_metadata=True, include_data=True, include_datasets=None, include_distribution_formats=[u'CSV', u'XLS'], include_metadata_xlsx=True, use_short_path=False)

Realiza una copia local de los datos y metadatos de un catálogo.

Parámetros:
  • catalog (dict or str) – Representación externa/interna de un catálogo. Una representación _externa_ es un path local o una URL remota a un archivo con la metadata de un catálogo, en formato JSON o XLSX. La representación _interna_ de un catálogo es un diccionario.
  • catalog_id (str) – Si se especifica, se usa este identificador para el backup. Si no se especifica, se usa catalog[«identifier»].
  • local_catalogs_dir (str) – Directorio local en el cual se va a crear la carpeta «catalog/…» con todos los catálogos.
  • include_metadata (bool) – Si es verdadero, se generan los archivos data.json y catalog.xlsx.
  • include_data (bool) – Si es verdadero, se descargan todas las distribuciones de todos los catálogos.
  • include_datasets (list) – Si se especifica, se descargan únicamente los datasets indicados. Si no, se descargan todos.
  • include_distribution_formats (list) – Si se especifica, se descargan únicamente las distribuciones de los formatos indicados. Si no, se descargan todas.
  • use_short_path (bool) – No implementado. Si es verdadero, se utiliza una jerarquía de directorios simplificada. Caso contrario, se replica la existente en infra.
Devuelve:

None

make_catalogs_backup(catalogs=None, local_catalogs_dir=u'.', copy_metadata=True, copy_data=True)[fuente]

Realiza copia de los datos y metadatos de uno o más catálogos.

Parámetros:
  • catalogs (list or dict) – Lista de catálogos (elementos que pueden ser interpretados por DataJson como catálogos) o diccionario donde las keys se interpretan como los catalog_identifier: { «modernizacion»: «http://infra.datos.gob.ar/catalog/modernizacion/data.json» } Cuando es una lista, los ids se toman de catalog_identifer, y se ignoran los catálogos que no tengan catalog_identifier. Cuando se pasa un diccionario, los keys reemplazan a los catalog_identifier (estos no se leeen).
  • local_catalogs_dir (str) – Directorio local en el cual se va a crear la carpeta «catalog/…» con todos los catálogos.
  • copy_metadata (bool) – Si es verdadero, se generan los archivos data.json y catalog.xlsx.
  • copy_data (bool) – Si es verdadero, se descargan todas las distribuciones de todos los catálogos.
Devuelve:

None

push_dataset_to_ckan(owner_org, dataset_origin_identifier, portal_url, apikey, catalog_id=None, demote_superThemes=True, demote_themes=True, download_strategy=None, generate_new_access_url=None, origin_tz='America/Buenos_Aires', dst_tz='America/Buenos_Aires')

Escribe la metadata de un dataset en el portal pasado por parámetro.

Parámetros:
  • catalog (DataJson) – El catálogo de origen que contiene el dataset.
  • owner_org (str) – La organización a la cual pertence el dataset.
  • dataset_origin_identifier (str) – El id del dataset que se va a federar.
  • portal_url (str) – La URL del portal CKAN de destino.
  • apikey (str) – La apikey de un usuario con los permisos que le permitan crear o actualizar el dataset.
  • catalog_id (str or None) – El prefijo con el que va a preceder el id del dataset en catálogo destino.
  • demote_superThemes (bool) – Si está en true, los ids de los super themes del dataset, se propagan como grupo.
  • demote_themes (bool) – Si está en true, los labels de los themes del dataset, pasan a ser tags. Sino, se pasan como grupo.
  • download_strategy (callable) – Una función (catálogo, distribución)-> bool. Sobre las distribuciones que evalúa True, descarga el recurso en el downloadURL y lo sube al portal de destino. Por default no sube ninguna distribución.
  • generate_new_access_url (list) – Se pasan los ids de las distribuciones cuyo accessURL se regenerar en el portal de destino. Para el resto, el portal debe mantiene el valor pasado en el DataJson.
  • origin_tz (str) – Timezone de origen, un string (EJ: Africa/Bamako) el cual identifica el timezone del emisor del DataJson.
  • dst_tz (str) – Timezone de destino, un string (EJ: Antarctica/Palmer) el cual identifica el timezone del receptor del DataJson, comunmente el timezone del servidor.
Devuelve:

El id del dataset en el catálogo de destino.

Tipo del valor devuelto:
 

str

push_new_themes(portal_url, apikey)

Toma un catálogo y escribe los temas de la taxonomía que no están presentes.

Args:
catalog (DataJson): El catálogo de origen que contiene la
taxonomía.

portal_url (str): La URL del portal CKAN de destino. apikey (str): La apikey de un usuario con los permisos que le

permitan crear o actualizar los temas.
Returns:
str: Los ids de los temas creados.
push_theme_to_ckan(portal_url, apikey, identifier=None, label=None)

Escribe la metadata de un theme en el portal pasado por parámetro.

Parámetros:
  • catalog (DataJson) – El catálogo de origen que contiene el theme.
  • portal_url (str) – La URL del portal CKAN de destino.
  • apikey (str) – La apikey de un usuario con los permisos que le permitan crear o actualizar el dataset.
  • identifier (str) – El identificador para buscar el theme en la taxonomia.
  • label (str) – El label para buscar el theme en la taxonomia.
Devuelve:

El name del theme en el catálogo de destino.

Tipo del valor devuelto:
 

str

remove_dataset(identifier)[fuente]
remove_distribution(identifier, dataset_identifier=None)[fuente]
remove_harvested_ds_from_ckan(portal_url, apikey, catalog_id=None, original_ids=None)
restore_catalog_to_ckan(origin_portal_url, destination_portal_url, apikey, download_strategy=None, generate_new_access_url=None, origin_tz='America/Buenos_Aires', dst_tz='America/Buenos_Aires')

Restaura los datasets de un catálogo original al portal pasado por parámetro. Si hay temas presentes en el DataJson que no están en el portal de CKAN, los genera.

Args:

catalog (DataJson): El catálogo de origen que se restaura. origin_portal_url (str): La URL del portal CKAN de origen. destination_portal_url (str): La URL del portal CKAN de

destino.
apikey (str): La apikey de un usuario con los permisos que le
permitan crear o actualizar el dataset.
download_strategy(callable): Una función
(catálogo, distribución)-> bool. Sobre las distribuciones que evalúa True, descarga el recurso en el downloadURL y lo sube al portal de destino. Por default no sube ninguna distribución.
generate_new_access_url(list): Se pasan los ids de las
distribuciones cuyo accessURL se regenerar en el portal de destino. Para el resto, el portal debe mantiene el valor pasado en el DataJson.
origin_tz(str): Timezone de origen, un string
(EJ: Africa/Bamako) el cual identifica el timezone del emisor del DataJson.
dst_tz(str): Timezone de destino, un string
(EJ: Antarctica/Palmer) el cual identifica el timezone del receptor del DataJson, comunmente el timezone del servidor.
Returns:
dict: Diccionario con key organización y value la lista de ids
de datasets subidos a esa organización
restore_dataset_to_ckan(owner_org, dataset_origin_identifier, portal_url, apikey, download_strategy=None, generate_new_access_url=None, origin_tz='America/Buenos_Aires', dst_tz='America/Buenos_Aires')

Restaura la metadata de un dataset en el portal pasado por parámetro.

Parámetros:
  • catalog (DataJson) – El catálogo de origen que contiene el dataset.
  • owner_org (str) – La organización a la cual pertence el dataset.
  • dataset_origin_identifier (str) – El id del dataset que se va a restaurar.
  • portal_url (str) – La URL del portal CKAN de destino.
  • apikey (str) – La apikey de un usuario con los permisos que le permitan crear o actualizar el dataset.
  • download_strategy (callable) – Una función (catálogo, distribución)-> bool. Sobre las distribuciones que evalúa True, descarga el recurso en el downloadURL y lo sube al portal de destino. Por default no sube ninguna distribución.
  • generate_new_access_url (list) – Se pasan los ids de las distribuciones cuyo accessURL se regenerar en el portal de destino. Para el resto, el portal debe mantiene el valor pasado en el DataJson.
  • origin_tz (str) – Timezone de origen, un string (EJ: Africa/Bamako) el cual identifica el timezone del emisor del DataJson.
  • dst_tz (str) – Timezone de destino, un string (EJ: Antarctica/Palmer) el cual identifica el timezone del receptor del DataJson, comunmente el timezone del servidor.
Devuelve:

El id del dataset restaurado.

Tipo del valor devuelto:
 

str

restore_organization_to_ckan(owner_org, portal_url, apikey, dataset_list=None, download_strategy=None, generate_new_access_url=None, origin_tz='America/Buenos_Aires', dst_tz='America/Buenos_Aires')

Restaura los datasets de la organización de un catálogo al portal pasado por parámetro. Si hay temas presentes en el DataJson que no están en el portal de CKAN, los genera.

Args:

catalog (DataJson): El catálogo de origen que se restaura. portal_url (str): La URL del portal CKAN de destino. apikey (str): La apikey de un usuario con los permisos que le

permitan crear o actualizar el dataset.
dataset_list(list(str)): Los ids de los datasets a restaurar. Si no
se pasa una lista, todos los datasests se restauran.

owner_org (str): La organización a la cual pertencen los datasets. download_strategy(callable): Una función (catálogo, distribución)->

bool. Sobre las distribuciones que evalúa True, descarga el recurso en el downloadURL y lo sube al portal de destino. Por default no sube ninguna distribución.
generate_new_access_url(list): Se pasan los ids de las
distribuciones cuyo accessURL se regenerar en el portal de destino. Para el resto, el portal debe mantiene el valor pasado en el DataJson.
origin_tz(str): Timezone de origen, un string (EJ: Africa/Bamako)
el cual identifica el timezone del emisor del DataJson.
dst_tz(str): Timezone de destino, un string
(EJ: Antarctica/Palmer) el cual identifica el timezone del receptor del DataJson, comunmente el timezone del servidor.
Returns:
list(str): La lista de ids de datasets subidos.
restore_organizations_to_ckan(organizations, portal_url, apikey, download_strategy=None, generate_new_access_url=None, origin_tz='America/Buenos_Aires', dst_tz='America/Buenos_Aires')

Restaura los datasets indicados para c/organización de un catálogo al portal pasado. Si hay temas presentes en el DataJson que no están en el portal de CKAN, los genera. Las organizaciones ya deben estar creadas.

Parámetros:
  • catalog (DataJson) – El catálogo de origen que se restaura.
  • organizations (dict) – Datasets a restaurar por c/organización donde {«organizacion_id»: [dataset_id1, dataset_id2, …]}
  • portal_url (str) – La URL del portal CKAN de destino.
  • apikey (str) – La apikey de un usuario con los permisos que le permitan crear o actualizar el dataset.
  • download_strategy (callable) – Una función (catálogo, distribución)-> bool. Sobre las distribuciones que evalúa True, descarga el recurso en el downloadURL y lo sube al portal de destino. Por default no sube ninguna distribución.
  • generate_new_access_url (list) – Se pasan los ids de las distribuciones cuyo accessURL se regenerar en el portal de destino. Para el resto, el portal debe mantiene el valor pasado en el DataJson.
  • origin_tz (str) – Timezone de origen, un string (EJ: Africa/Bamako) el cual identifica el timezone del emisor del DataJson.
  • dst_tz (str) – Timezone de destino, un string (EJ: Antarctica/Palmer) el cual identifica el timezone del receptor del DataJson, comunmente el timezone del servidor.
Devuelve:

La lista de ids de datasets subidos.

Tipo del valor devuelto:
 

list(str)

themes

Devuelve la lista de temas del catálogo (taxonomía temática).

time_series

Devuelve lista de series de tiempo del catálogo o uno de sus metadatos.

Parámetros:
  • catalog (dict, str or DataJson) – Representación externa/interna de un catálogo. Una representación _externa_ es un path local o una URL remota a un archivo con la metadata de un catálogo, en formato JSON o XLSX. La representación _interna_ de un catálogo es un diccionario. Ejemplos: http://datos.gob.ar/data.json, http://www.ign.gob.ar/descargas/geodatos/catalog.xlsx, «/energia/catalog.xlsx».
  • filter_in (dict) –

    Devuelve las series cuyos atributos coinciden con los pasados en este diccionario. Ejemplo:

    {
        "dataset": {
            "publisher": {"name": "Ministerio de Ambiente"}
        }
    }
    

    Sólo se devolverán las series que pertenezcan a un dataset de ese publisher_name.

  • filter_out (dict) –

    Devuelve las series cuyos atributos no coinciden con los pasados en este diccionario. Ejemplo:

    {
        "dataset": {
            "publisher": {"name": "Ministerio de Ambiente"}
        }
    }
    

    Sólo se devolverán las series que no pertenezcan a un dataset de ese publisher_name.

  • meta_field (str) – Nombre de un metadato de Field. En lugar de devolver los objetos completos «Field», devuelve una lista de valores para ese metadato presentes en el catálogo.
  • exclude_meta_fields (list) – Metadatos de Field que se quieren excluir de los objetos Field devueltos.
to_json(path)

Escribe el catálogo en JSON.

Parámetros:
  • catalog (DataJson) – Catálogo de datos.
  • path (str) – Directorio absoluto donde se crea el archivo XLSX.
to_xlsx(path, xlsx_fields=None)

Escribe el catálogo en Excel.

Parámetros:
  • catalog (DataJson) – Catálogo de datos.
  • path (str) – Directorio absoluto donde se crea el archivo XLSX.
  • xlsx_fields (dict) – Orden en que los campos del perfil de metadatos se escriben en cada hoja del Excel.
validate_catalog(catalog=None, only_errors=False, fmt=u'dict', export_path=None)[fuente]

Analiza un data.json registrando los errores que encuentra.

Chequea que el data.json tiene todos los campos obligatorios y que tanto los campos obligatorios como los opcionales siguen la estructura definida en el schema.

Parámetros:
  • catalog (str o dict) – Catálogo (dict, JSON o XLSX) a ser validado. Si no se pasa, valida este catálogo.
  • only_errors (bool) – Si es True sólo se reportan los errores.
  • fmt (str) –

    Indica el formato en el que se desea el reporte. «dict» es el reporte más verborrágico respetando la

    estructura del data.json.
    »list» devuelve un dict con listas de errores formateados para
    generar tablas.
  • export_path (str) – Path donde exportar el reporte generado (en formato XLSX o CSV). Si se especifica, el método no devolverá nada, a pesar de que se pase algún argumento en fmt.
Devuelve:

Diccionario resumen de los errores encontrados:

{
    "status": "OK",  # resultado de la validación global
    "error": {
        "catalog": {
            "status": "OK",
            "errors": []
            "title": "Título Catalog"},
        "dataset": [
            {
                "status": "OK",
                "errors": [],
                "title": "Titulo Dataset 1"
            },
            {
                "status": "ERROR",
                "errors": [error1_info, error2_info, ...],
                "title": "Titulo Dataset 2"
            }
        ]
    }
}

Donde errorN_info es un dict con la información del N-ésimo error encontrado, con las siguientes claves: «path», «instance», «message», «validator», «validator_value», «error_code».

Tipo del valor devuelto:
 

dict

pydatajson.core.main()[fuente]

Permite ejecutar el módulo por línea de comandos.

Valida un path o url a un archivo data.json devolviendo True/False si es válido y luego el resultado completo.

Example

python pydatajson.py http://181.209.63.71/data.json python pydatajson.py ~/github/pydatajson/tests/samples/full_data.json

pydatajson.custom_exceptions module

Excepciones personalizadas para validación y registro de errores

exception pydatajson.custom_exceptions.BaseNonExistentError[fuente]

Bases: exceptions.ValueError

El id de una entidad no existe en el catálogo.

get_msg(entity_name, entity_type, entity_id)[fuente]
exception pydatajson.custom_exceptions.BaseRepetitionError[fuente]

Bases: exceptions.ValueError

El id de una entidad está repetido en el catálogo.

get_msg(entity_name, entity_type, entity_id=None, repeated_entities=None)[fuente]
exception pydatajson.custom_exceptions.BaseUnexpectedValue[fuente]

Bases: exceptions.ValueError

El id de una entidad está repetido en el catálogo.

get_msg(entity_name, entity_id, value_type, value_found, value_expected)[fuente]
class pydatajson.custom_exceptions.BaseValidationError(validator, message, validator_value, path, instance=None)[fuente]

Bases: object

Estructura para errores de validación personalizados.

exception pydatajson.custom_exceptions.DatasetIdNonExistentError(dataset_id)[fuente]

Bases: pydatajson.custom_exceptions.BaseNonExistentError

exception pydatajson.custom_exceptions.DatasetIdRepetitionError(dataset_id=None, repeated_datasets=None)[fuente]

Bases: pydatajson.custom_exceptions.BaseRepetitionError

exception pydatajson.custom_exceptions.DatasetTemporalMetadataError(temporal)[fuente]

Bases: exceptions.ValueError

exception pydatajson.custom_exceptions.DatasetUnexpectedTitle(dataset_id, title_found, title_expected)[fuente]

Bases: pydatajson.custom_exceptions.BaseUnexpectedValue

exception pydatajson.custom_exceptions.DistributionIdNonExistentError(distribution_id)[fuente]

Bases: pydatajson.custom_exceptions.BaseNonExistentError

exception pydatajson.custom_exceptions.DistributionIdRepetitionError(distribution_id=None, repeated_distributions=None)[fuente]

Bases: pydatajson.custom_exceptions.BaseRepetitionError

exception pydatajson.custom_exceptions.DistributionTimeIndexNonExistentError(distribution_title, dataset_id, extra_msg=u'')[fuente]

Bases: pydatajson.custom_exceptions.BaseNonExistentError

exception pydatajson.custom_exceptions.DistributionTitleNonExistentError(distribution_title, dataset_id, extra_msg=u'')[fuente]

Bases: pydatajson.custom_exceptions.BaseNonExistentError

exception pydatajson.custom_exceptions.DistributionTitleRepetitionError(distribution_title, repeated_distributions, extra_msg=u'')[fuente]

Bases: pydatajson.custom_exceptions.BaseRepetitionError

exception pydatajson.custom_exceptions.DistributionUnexpectedTitle(distribution_id, title_found, title_expected)[fuente]

Bases: pydatajson.custom_exceptions.BaseUnexpectedValue

exception pydatajson.custom_exceptions.DownloadURLBrokenError(distribution_id, distribution_downloadURL, status_code)[fuente]

Bases: pydatajson.custom_exceptions.BaseNonExistentError

class pydatajson.custom_exceptions.DownloadURLRepetitionError(repeated_urls)[fuente]

Bases: pydatajson.custom_exceptions.BaseValidationError

class pydatajson.custom_exceptions.ExtensionError(dataset_idx, distribution_idx, distribution, attribute)[fuente]

Bases: pydatajson.custom_exceptions.BaseValidationError

exception pydatajson.custom_exceptions.FieldDescriptionRepetitionError(field_desc=None, repeated_fields=None)[fuente]

Bases: pydatajson.custom_exceptions.BaseRepetitionError

Hay un campo repetido en la distribución.

exception pydatajson.custom_exceptions.FieldFewValuesError(field, positive_values, minimum_values)[fuente]

Bases: exceptions.ValueError

exception pydatajson.custom_exceptions.FieldIdNonExistentError(field_id)[fuente]

Bases: pydatajson.custom_exceptions.BaseNonExistentError

exception pydatajson.custom_exceptions.FieldIdRepetitionError(field_id=None, repeated_fields=None)[fuente]

Bases: pydatajson.custom_exceptions.BaseRepetitionError

exception pydatajson.custom_exceptions.FieldTitleNonExistentError(field_title)[fuente]

Bases: pydatajson.custom_exceptions.BaseNonExistentError

exception pydatajson.custom_exceptions.FieldTitleRepetitionError(field_title=None, repeated_fields=None)[fuente]

Bases: pydatajson.custom_exceptions.BaseRepetitionError

Hay un campo repetido en la distribución.

exception pydatajson.custom_exceptions.FieldTitleTooLongError(field, field_len, max_field_len)[fuente]

Bases: exceptions.ValueError

exception pydatajson.custom_exceptions.FieldTooManyMissingsError(field, missing_values, positive_values)[fuente]

Bases: exceptions.ValueError

exception pydatajson.custom_exceptions.FormatNameError[fuente]

Bases: exceptions.ValueError

exception pydatajson.custom_exceptions.HeaderNotBlankOrIdError(worksheet, header_coord, header_value, ws_header_value)[fuente]

Bases: exceptions.ValueError

exception pydatajson.custom_exceptions.InvalidFieldTitleError(field, char, valid_field_chars)[fuente]

Bases: exceptions.ValueError

exception pydatajson.custom_exceptions.NonParseableCatalog(catalog, error)[fuente]

Bases: exceptions.ValueError

No se puede leer un data.json a partir del parámetro pasado

exception pydatajson.custom_exceptions.NumericDistributionIdentifierError[fuente]

Bases: exceptions.ValueError

La distribucion tiene un id puramente numerico

class pydatajson.custom_exceptions.ThemeIdRepeated(repeated_ids)[fuente]

Bases: pydatajson.custom_exceptions.BaseValidationError

class pydatajson.custom_exceptions.ThemeLabelRepeated(repeated_labels)[fuente]

Bases: pydatajson.custom_exceptions.BaseValidationError

exception pydatajson.custom_exceptions.ThemeNonExistentError(theme)[fuente]

Bases: pydatajson.custom_exceptions.BaseNonExistentError

exception pydatajson.custom_exceptions.ThemeTaxonomyNonExistentError(dataset_id)[fuente]

Bases: pydatajson.custom_exceptions.BaseNonExistentError

exception pydatajson.custom_exceptions.TimeIndexFutureTimeValueError(iso_time_value, iso_now)[fuente]

Bases: exceptions.ValueError

exception pydatajson.custom_exceptions.TimeIndexTooShortError(iso_end_index, iso_half_temporal, temporal)[fuente]

Bases: exceptions.ValueError

exception pydatajson.custom_exceptions.TimeValueBeforeTemporalError(iso_time_value, iso_ini_temporal)[fuente]

Bases: exceptions.ValueError

pydatajson.custom_remote_ckan module

class pydatajson.custom_remote_ckan.CustomRemoteCKAN(address, apikey=None, user_agent=None, get_only=False, verify_ssl=False, requests_timeout=30)[fuente]

Bases: ckanapi.remoteckan.RemoteCKAN

call_action(action, data_dict=None, context=None, apikey=None, files=None, requests_kwargs=None)[fuente]
Parámetros:
  • action – the action name, e.g. “package_create”
  • data_dict – the dict to pass to the action as JSON, defaults to {}
  • context – always set to None for RemoteCKAN
  • apikey – API key for authentication
  • files – None or {field-name: file-to-be-sent, …}

This function parses the response from the server as JSON and returns the decoded value. When an error is returned this function will convert it back to an exception that matches the one the action function itself raised.

pydatajson.documentation module

Módulo “documentation” de Pydatajson

Contiene métodos para generar documentación en markdown de distintos componentes de un catálogo.

pydatajson.documentation.dataset_to_markdown(dataset)[fuente]

Genera texto en markdown a partir de los metadatos de una dataset.

Parámetros:dataset (dict) – Diccionario con metadatos de una dataset.
Devuelve:Texto que describe una dataset.
Tipo del valor devuelto:
 str
pydatajson.documentation.distribution_to_markdown(distribution)[fuente]

Genera texto en markdown a partir de los metadatos de una distribution.

Parámetros:
  • distribution (dict) – Diccionario con metadatos de una
  • distribution.
Devuelve:

Texto que describe una distribution.

Tipo del valor devuelto:
 

str

pydatajson.documentation.field_to_markdown(field)[fuente]

Genera texto en markdown a partir de los metadatos de un field.

Parámetros:field (dict) – Diccionario con metadatos de un field.
Devuelve:Texto que describe un field.
Tipo del valor devuelto:
 str

pydatajson.download module

Módulo “download” de pydatajson

Contiene métodos para descargar archivos a través del protocolo HTTP.

pydatajson.download.download(url, tries=1, retry_delay=1, try_timeout=None, proxies=None, verify=True)[fuente]

Descarga un archivo a través del protocolo HTTP, en uno o más intentos.

Parámetros:
  • url (str) – URL (schema HTTP) del archivo a descargar.
  • tries (int) – Intentos a realizar (default: 1).
  • retry_delay (int o float) – Tiempo a esperar, en segundos, entre cada intento.
  • try_timeout (int o float) – Tiempo máximo a esperar por intento.
  • proxies (dict) – Proxies a utilizar. El diccionario debe contener los valores “http” y “https”, cada uno asociados a la URL del proxy correspondiente.
Devuelve:

Contenido del archivo

Tipo del valor devuelto:
 

bytes

pydatajson.download.download_to_file(url, file_path, **kwargs)[fuente]

Descarga un archivo a través del protocolo HTTP, en uno o más intentos, y escribe el contenido descargado el el path especificado.

Parámetros:
  • url (str) – URL (schema HTTP) del archivo a descargar.
  • file_path (str) – Path del archivo a escribir. Si un archivo ya existe en el path especificado, se sobrescribirá con nuevos contenidos.
  • kwargs – Parámetros para download().

pydatajson.federation module

Extensión de pydatajson para la federación de metadatos de datasets a través de la API de CKAN.

pydatajson.federation.get_organization_from_ckan(portal_url, org_id, verify_ssl=False, requests_timeout=30)[fuente]

Toma la url de un portal y un id, y devuelve la organización a buscar.

Parámetros:
  • portal_url (str) – La URL del portal CKAN de origen.
  • org_id (str) – El id de la organización a buscar.
  • verify_ssl (bool) – Verificar certificados SSL
  • requests_timeout (int) – cantidad en segundos para timeoutear un request al server.
Devuelve:

Diccionario con la información de la organización.

Tipo del valor devuelto:
 

dict

pydatajson.federation.get_organizations_from_ckan(portal_url, verify_ssl=False, requests_timeout=30)[fuente]

Toma la url de un portal y devuelve su árbol de organizaciones.

Parámetros:
  • portal_url (str) – La URL del portal CKAN de origen.
  • verify_ssl (bool) – Verificar certificados SSL
  • requests_timeout (int) – cantidad en segundos para timeoutear un request al server.
Devuelve:

Lista de diccionarios anidados con la información de las organizaciones.

Tipo del valor devuelto:
 

list

pydatajson.federation.harvest_catalog_to_ckan(catalog, portal_url, apikey, catalog_id, dataset_list=None, owner_org=None, download_strategy=None, origin_tz='America/Buenos_Aires', dst_tz='America/Buenos_Aires')[fuente]

Federa los datasets de un catálogo al portal pasado por parámetro.

Parámetros:
  • catalog (DataJson) – El catálogo de origen que se federa.
  • portal_url (str) – La URL del portal CKAN de destino.
  • apikey (str) – La apikey de un usuario con los permisos que le permitan crear o actualizar el dataset.
  • catalog_id (str) – El prefijo con el que va a preceder el id del dataset en catálogo destino.
  • dataset_list (list(str)) – Los ids de los datasets a federar. Si no se pasa una lista, todos los datasests se federan.
  • owner_org (str) – La organización a la cual pertencen los datasets. Si no se pasa, se utiliza el catalog_id.
  • download_strategy (callable) – Una función (catálogo, distribución)-> bool. Sobre las distribuciones que evalúa True, descarga el recurso en el downloadURL y lo sube al portal de destino. Por default no sube ninguna distribución.
  • origin_tz (str) – Timezone de origen, un string (EJ: Africa/Bamako) el cual identifica el timezone del emisor del DataJson.
  • dst_tz (str) – Timezone de destino, un string (EJ: Antarctica/Palmer) el cual identifica el timezone del receptor del DataJson, comunmente el timezone del servidor.
Devuelve:

El id del dataset en el catálogo de destino.

Tipo del valor devuelto:
 

str

pydatajson.federation.harvest_dataset_to_ckan(catalog, owner_org, dataset_origin_identifier, portal_url, apikey, catalog_id, download_strategy=None, origin_tz='America/Buenos_Aires', dst_tz='America/Buenos_Aires')[fuente]

Federa la metadata de un dataset en el portal pasado por parámetro.

Parámetros:
  • catalog (DataJson) – El catálogo de origen que contiene el dataset.
  • owner_org (str) – La organización a la cual pertence el dataset.
  • dataset_origin_identifier (str) – El id del dataset que se va a restaurar.
  • portal_url (str) – La URL del portal CKAN de destino.
  • apikey (str) – La apikey de un usuario con los permisos que le permitan crear o actualizar el dataset.
  • catalog_id (str) – El id que prependea al dataset y recursos
  • download_strategy (callable) – Una función (catálogo, distribución)-> bool. Sobre las distribuciones que evalúa True, descarga el recurso en el downloadURL y lo sube al portal de destino. Por default no sube ninguna distribución.
  • origin_tz (str) – Timezone de origen, un string (EJ: Africa/Bamako) el cual identifica el timezone del emisor del DataJson.
  • dst_tz (str) – Timezone de destino, un string (EJ: Antarctica/Palmer) el cual identifica el timezone del receptor del DataJson, comunmente el timezone del servidor.
Devuelve:

El id del dataset restaurado.

Tipo del valor devuelto:
 

str

pydatajson.federation.push_dataset_to_ckan(catalog, owner_org, dataset_origin_identifier, portal_url, apikey, catalog_id=None, demote_superThemes=True, demote_themes=True, download_strategy=None, generate_new_access_url=None, origin_tz='America/Buenos_Aires', dst_tz='America/Buenos_Aires')[fuente]

Escribe la metadata de un dataset en el portal pasado por parámetro.

Parámetros:
  • catalog (DataJson) – El catálogo de origen que contiene el dataset.
  • owner_org (str) – La organización a la cual pertence el dataset.
  • dataset_origin_identifier (str) – El id del dataset que se va a federar.
  • portal_url (str) – La URL del portal CKAN de destino.
  • apikey (str) – La apikey de un usuario con los permisos que le permitan crear o actualizar el dataset.
  • catalog_id (str or None) – El prefijo con el que va a preceder el id del dataset en catálogo destino.
  • demote_superThemes (bool) – Si está en true, los ids de los super themes del dataset, se propagan como grupo.
  • demote_themes (bool) – Si está en true, los labels de los themes del dataset, pasan a ser tags. Sino, se pasan como grupo.
  • download_strategy (callable) – Una función (catálogo, distribución)-> bool. Sobre las distribuciones que evalúa True, descarga el recurso en el downloadURL y lo sube al portal de destino. Por default no sube ninguna distribución.
  • generate_new_access_url (list) – Se pasan los ids de las distribuciones cuyo accessURL se regenerar en el portal de destino. Para el resto, el portal debe mantiene el valor pasado en el DataJson.
  • origin_tz (str) – Timezone de origen, un string (EJ: Africa/Bamako) el cual identifica el timezone del emisor del DataJson.
  • dst_tz (str) – Timezone de destino, un string (EJ: Antarctica/Palmer) el cual identifica el timezone del receptor del DataJson, comunmente el timezone del servidor.
Devuelve:

El id del dataset en el catálogo de destino.

Tipo del valor devuelto:
 

str

pydatajson.federation.push_new_themes(catalog, portal_url, apikey)[fuente]

Toma un catálogo y escribe los temas de la taxonomía que no están presentes.

Args:
catalog (DataJson): El catálogo de origen que contiene la
taxonomía.

portal_url (str): La URL del portal CKAN de destino. apikey (str): La apikey de un usuario con los permisos que le

permitan crear o actualizar los temas.
Returns:
str: Los ids de los temas creados.
pydatajson.federation.push_organization_to_ckan(portal_url, apikey, organization, parent=None, verify_ssl=False, requests_timeout=30)[fuente]

Toma una organización y la crea en el portal de destino. :param portal_url: La URL del portal CKAN de destino. :type portal_url: str :param apikey: La apikey de un usuario con los permisos que le

permitan crear la organización.
Parámetros:
  • organization (dict) – Datos de la organización a crear.
  • parent (str) – Campo name de la organización padre.
  • verify_ssl (bool) – Verificar certificados SSL
  • requests_timeout (int) – cantidad en segundos para timeoutear un request al server.
Devuelve:

Devuelve el diccionario de la organizacion enviada,

junto con el status detallando si la creación fue exitosa o no.

Tipo del valor devuelto:
 

(dict)

pydatajson.federation.push_organization_tree_to_ckan(portal_url, apikey, org_tree, parent=None)[fuente]

Toma un árbol de organizaciones y lo replica en el portal de destino.

Args:

portal_url (str): La URL del portal CKAN de destino. apikey (str): La apikey de un usuario con los permisos que le

permitan crear las organizaciones.
org_tree(list): lista de diccionarios con la data de las
organizaciones a crear.

parent(str): campo name de la organizacion padre.

Returns:
(list): Devuelve el arbol de organizaciones recorridas,
junto con el status detallando si la creación fue exitosa o no.
pydatajson.federation.push_theme_to_ckan(catalog, portal_url, apikey, identifier=None, label=None)[fuente]

Escribe la metadata de un theme en el portal pasado por parámetro.

Parámetros:
  • catalog (DataJson) – El catálogo de origen que contiene el theme.
  • portal_url (str) – La URL del portal CKAN de destino.
  • apikey (str) – La apikey de un usuario con los permisos que le permitan crear o actualizar el dataset.
  • identifier (str) – El identificador para buscar el theme en la taxonomia.
  • label (str) – El label para buscar el theme en la taxonomia.
Devuelve:

El name del theme en el catálogo de destino.

Tipo del valor devuelto:
 

str

pydatajson.federation.remove_dataset_from_ckan(identifier, portal_url, apikey, verify_ssl=False, requests_timeout=30)[fuente]
pydatajson.federation.remove_datasets_from_ckan(portal_url, apikey, filter_in=None, filter_out=None, only_time_series=False, organization=None, verify_ssl=False, requests_timeout=30)[fuente]

Borra un dataset en el portal pasado por parámetro.

Parámetros:
  • portal_url (str) – La URL del portal CKAN de destino.
  • apikey (str) – La apikey de un usuario con los permisos que le permitan borrar el dataset.
  • filter_in (dict) – Diccionario de filtrado positivo, similar al de search.get_datasets.
  • filter_out (dict) – Diccionario de filtrado negativo, similar al de search.get_datasets.
  • only_time_series (bool) – Filtrar solo los datasets que tengan recursos con series de tiempo.
  • organization (str) – Filtrar solo los datasets que pertenezcan a cierta organizacion.
  • verify_ssl (bool) – Verificar certificados SSL
  • requests_timeout (int) – cantidad en segundos para timeoutear un
  • al server. (request) –
Devuelve:

None

pydatajson.federation.remove_harvested_ds_from_ckan(catalog, portal_url, apikey, catalog_id=None, original_ids=None)[fuente]
pydatajson.federation.remove_organization_from_ckan(portal_url, apikey, organization_id, verify_ssl=False, requests_timeout=30)[fuente]

Toma un id de organización y la purga del portal de destino. :param portal_url: La URL del portal CKAN de destino. :type portal_url: str :param apikey: La apikey de un usuario con los permisos que le

permitan borrar la organización.
Parámetros:
  • organization_id (str) – Id o name de la organización a borrar.
  • verify_ssl (bool) – Verificar certificados SSL
  • requests_timeout (int) – cantidad en segundos para timeoutear un request al server.
Devuelve:

None.

pydatajson.federation.remove_organizations_from_ckan(portal_url, apikey, organization_list)[fuente]

Toma una lista de ids de organización y las purga del portal de destino. :param portal_url: La URL del portal CKAN de destino. :type portal_url: str :param apikey: La apikey de un usuario con los permisos que le

permitan borrar la organización.
Parámetros:organization_list (list) – Id o name de las organizaciones a borrar.
Devuelve:None.
pydatajson.federation.resources_update(portal_url, apikey, distributions, resource_files, generate_new_access_url=None, catalog_id=None, verify_ssl=False, requests_timeout=30)[fuente]

Sube archivos locales a sus distribuciones correspondientes en el portal pasado por parámetro.

Args:

portal_url (str): La URL del portal CKAN de destino. apikey (str): La apikey de un usuario con los permisos que le

permitan crear o actualizar el dataset.
distributions(list): Lista de distribuciones posibles para
actualizar.
resource_files(dict): Diccionario con entradas
id_de_distribucion:path_al_recurso a subir
generate_new_access_url(list): Lista de ids de distribuciones a
las cuales se actualizará el accessURL con los valores generados por el portal de destino
catalog_id(str): prependea el id al id del recurso para
encontrarlo antes de subirlo

verify_ssl(bool): Verificar certificados SSL requests_timeout(int): cantidad en segundos para timeoutear un request al server.

Returns:
list: los ids de los recursos modificados
pydatajson.federation.restore_catalog_to_ckan(catalog, origin_portal_url, destination_portal_url, apikey, download_strategy=None, generate_new_access_url=None, origin_tz='America/Buenos_Aires', dst_tz='America/Buenos_Aires')[fuente]

Restaura los datasets de un catálogo original al portal pasado por parámetro. Si hay temas presentes en el DataJson que no están en el portal de CKAN, los genera.

Args:

catalog (DataJson): El catálogo de origen que se restaura. origin_portal_url (str): La URL del portal CKAN de origen. destination_portal_url (str): La URL del portal CKAN de

destino.
apikey (str): La apikey de un usuario con los permisos que le
permitan crear o actualizar el dataset.
download_strategy(callable): Una función
(catálogo, distribución)-> bool. Sobre las distribuciones que evalúa True, descarga el recurso en el downloadURL y lo sube al portal de destino. Por default no sube ninguna distribución.
generate_new_access_url(list): Se pasan los ids de las
distribuciones cuyo accessURL se regenerar en el portal de destino. Para el resto, el portal debe mantiene el valor pasado en el DataJson.
origin_tz(str): Timezone de origen, un string
(EJ: Africa/Bamako) el cual identifica el timezone del emisor del DataJson.
dst_tz(str): Timezone de destino, un string
(EJ: Antarctica/Palmer) el cual identifica el timezone del receptor del DataJson, comunmente el timezone del servidor.
Returns:
dict: Diccionario con key organización y value la lista de ids
de datasets subidos a esa organización
pydatajson.federation.restore_dataset_to_ckan(catalog, owner_org, dataset_origin_identifier, portal_url, apikey, download_strategy=None, generate_new_access_url=None, origin_tz='America/Buenos_Aires', dst_tz='America/Buenos_Aires')[fuente]

Restaura la metadata de un dataset en el portal pasado por parámetro.

Parámetros:
  • catalog (DataJson) – El catálogo de origen que contiene el dataset.
  • owner_org (str) – La organización a la cual pertence el dataset.
  • dataset_origin_identifier (str) – El id del dataset que se va a restaurar.
  • portal_url (str) – La URL del portal CKAN de destino.
  • apikey (str) – La apikey de un usuario con los permisos que le permitan crear o actualizar el dataset.
  • download_strategy (callable) – Una función (catálogo, distribución)-> bool. Sobre las distribuciones que evalúa True, descarga el recurso en el downloadURL y lo sube al portal de destino. Por default no sube ninguna distribución.
  • generate_new_access_url (list) – Se pasan los ids de las distribuciones cuyo accessURL se regenerar en el portal de destino. Para el resto, el portal debe mantiene el valor pasado en el DataJson.
  • origin_tz (str) – Timezone de origen, un string (EJ: Africa/Bamako) el cual identifica el timezone del emisor del DataJson.
  • dst_tz (str) – Timezone de destino, un string (EJ: Antarctica/Palmer) el cual identifica el timezone del receptor del DataJson, comunmente el timezone del servidor.
Devuelve:

El id del dataset restaurado.

Tipo del valor devuelto:
 

str

pydatajson.federation.restore_organization_to_ckan(catalog, owner_org, portal_url, apikey, dataset_list=None, download_strategy=None, generate_new_access_url=None, origin_tz='America/Buenos_Aires', dst_tz='America/Buenos_Aires')[fuente]

Restaura los datasets de la organización de un catálogo al portal pasado por parámetro. Si hay temas presentes en el DataJson que no están en el portal de CKAN, los genera.

Args:

catalog (DataJson): El catálogo de origen que se restaura. portal_url (str): La URL del portal CKAN de destino. apikey (str): La apikey de un usuario con los permisos que le

permitan crear o actualizar el dataset.
dataset_list(list(str)): Los ids de los datasets a restaurar. Si no
se pasa una lista, todos los datasests se restauran.

owner_org (str): La organización a la cual pertencen los datasets. download_strategy(callable): Una función (catálogo, distribución)->

bool. Sobre las distribuciones que evalúa True, descarga el recurso en el downloadURL y lo sube al portal de destino. Por default no sube ninguna distribución.
generate_new_access_url(list): Se pasan los ids de las
distribuciones cuyo accessURL se regenerar en el portal de destino. Para el resto, el portal debe mantiene el valor pasado en el DataJson.
origin_tz(str): Timezone de origen, un string (EJ: Africa/Bamako)
el cual identifica el timezone del emisor del DataJson.
dst_tz(str): Timezone de destino, un string
(EJ: Antarctica/Palmer) el cual identifica el timezone del receptor del DataJson, comunmente el timezone del servidor.
Returns:
list(str): La lista de ids de datasets subidos.
pydatajson.federation.restore_organizations_to_ckan(catalog, organizations, portal_url, apikey, download_strategy=None, generate_new_access_url=None, origin_tz='America/Buenos_Aires', dst_tz='America/Buenos_Aires')[fuente]

Restaura los datasets indicados para c/organización de un catálogo al portal pasado. Si hay temas presentes en el DataJson que no están en el portal de CKAN, los genera. Las organizaciones ya deben estar creadas.

Parámetros:
  • catalog (DataJson) – El catálogo de origen que se restaura.
  • organizations (dict) – Datasets a restaurar por c/organización donde {«organizacion_id»: [dataset_id1, dataset_id2, …]}
  • portal_url (str) – La URL del portal CKAN de destino.
  • apikey (str) – La apikey de un usuario con los permisos que le permitan crear o actualizar el dataset.
  • download_strategy (callable) – Una función (catálogo, distribución)-> bool. Sobre las distribuciones que evalúa True, descarga el recurso en el downloadURL y lo sube al portal de destino. Por default no sube ninguna distribución.
  • generate_new_access_url (list) – Se pasan los ids de las distribuciones cuyo accessURL se regenerar en el portal de destino. Para el resto, el portal debe mantiene el valor pasado en el DataJson.
  • origin_tz (str) – Timezone de origen, un string (EJ: Africa/Bamako) el cual identifica el timezone del emisor del DataJson.
  • dst_tz (str) – Timezone de destino, un string (EJ: Antarctica/Palmer) el cual identifica el timezone del receptor del DataJson, comunmente el timezone del servidor.
Devuelve:

La lista de ids de datasets subidos.

Tipo del valor devuelto:
 

list(str)

pydatajson.helpers module

Métodos auxiliares

pydatajson.helpers.add_dicts(one_dict, other_dict)[fuente]

Suma clave a clave los dos diccionarios. Si algún valor es un diccionario, llama recursivamente a la función. Ambos diccionarios deben tener exactamente las mismas claves, y los valores asociados deben ser sumables, o diccionarios.

Parámetros:
  • one_dict (dict) –
  • other_dict (dict) –
Devuelve:

resultado de la suma

Tipo del valor devuelto:
 

dict

pydatajson.helpers.clean_str(s)[fuente]
pydatajson.helpers.count_distribution_formats_dataset(dataset)[fuente]
pydatajson.helpers.dataset_has_data_distributions(dataset)[fuente]
pydatajson.helpers.datasets_equal(dataset, other, fields_dataset=None, fields_distribution=None, return_diff=False)[fuente]

Función de igualdad de dos datasets: se consideran iguales si los valores de los campos “title”, “publisher.name”, “accrualPeriodicity” e “issued” son iguales en ambos.

Parámetros:
  • dataset (dict) – un dataset, generado por la lectura de un catálogo
  • other (dict) – idem anterior
Devuelve:

True si son iguales, False en caso contrario

Tipo del valor devuelto:
 

bool

pydatajson.helpers.ensure_dir_exists(directory)[fuente]

Se asegura de que un directorio exista.

pydatajson.helpers.fields_to_uppercase(fields)[fuente]
pydatajson.helpers.filter_by_likely_publisher(central_datasets, catalog_datasets)[fuente]
pydatajson.helpers.find_ws_name(wb, name)[fuente]

Busca una hoja en un workbook sin importar mayúsculas/minúsculas.

pydatajson.helpers.get_ws_case_insensitive(wb, title)[fuente]

Devuelve una hoja en un workbook sin importar mayúsculas/minúsculas.

pydatajson.helpers.is_list_of_matching_dicts(list_of_dicts, expected_keys=None)[fuente]

Comprueba que una lista esté compuesta únicamente por diccionarios, que comparten exactamente las mismas claves.

Parámetros:
  • list_of_dicts (list) – Lista de diccionarios a comparar.
  • expected_keys (set) – Conjunto de las claves que cada diccionario debe tener. Si no se incluye, se asume que son las claves del primer diccionario de la lista.
Devuelve:

True si todos los diccionarios comparten sus claves.

Tipo del valor devuelto:
 

bool

pydatajson.helpers.is_local_andino_resource(catalog, distribution)[fuente]
pydatajson.helpers.parse_date_string(date_string)[fuente]

Parsea un string de una fecha con el formato de la norma ISO 8601 (es decir, las fechas utilizadas en los catálogos) en un objeto datetime de la librería estándar de python. Se tiene en cuenta únicamente la fecha y se ignora completamente la hora.

Parámetros:date_string (str) – fecha con formato ISO 8601.
Devuelve:objeto fecha especificada por date_string.
Tipo del valor devuelto:
 datetime
pydatajson.helpers.parse_repeating_time_interval(date_str, to=u'days')[fuente]
pydatajson.helpers.parse_repeating_time_interval_to_days(date_str)[fuente]

Parsea un string con un intervalo de tiempo con repetición especificado por la norma ISO 8601 en una cantidad de días que representa ese intervalo. Devuelve 0 en caso de que el intervalo sea inválido.

pydatajson.helpers.parse_repeating_time_interval_to_str(date_str)[fuente]

Devuelve descripción humana de un intervalo de repetición.

TODO: Por ahora sólo interpreta una lista fija de intervalos. Debería poder parsear cualquier caso.

pydatajson.helpers.parse_value(cell)[fuente]

Extrae el valor de una celda de Excel como texto.

pydatajson.helpers.pprint(result)[fuente]
pydatajson.helpers.resource_files_download(*args, **kwds)[fuente]
pydatajson.helpers.sheet_to_table(worksheet)[fuente]

Transforma una hoja de libro de Excel en una lista de diccionarios.

Parámetros:worksheet (Workbook.worksheet) – Hoja de cálculo de un archivo XLSX según los lee openpyxl
Devuelve:
Lista de diccionarios, con tantos elementos como
registros incluya la hoja, y con tantas claves por diccionario como campos tenga la hoja.
Tipo del valor devuelto:
 list_of_dicts
pydatajson.helpers.string_to_list(string, sep=u', ', filter_empty=False)[fuente]

Transforma una string con elementos separados por sep en una lista.

pydatajson.helpers.title_in_dataset_list(dataset, dataset_list)[fuente]
pydatajson.helpers.title_to_name(title, decode=True, max_len=None, use_complete_words=True)[fuente]

Convierte un título en un nombre normalizado para generar urls.

pydatajson.helpers.traverse_dict(dicc, keys, default_value=None)[fuente]

Recorre un diccionario siguiendo una lista de claves, y devuelve default_value en caso de que alguna de ellas no exista.

Parámetros:
  • dicc (dict) – Diccionario a ser recorrido.
  • keys (list) – Lista de claves a ser recorrida. Puede contener índices de listas y claves de diccionarios mezcladas.
  • default_value – Valor devuelto en caso de que dicc no se pueda recorrer siguiendo secuencialmente la lista de keys hasta el final.
Devuelve:

El valor obtenido siguiendo la lista de keys dentro de dicc.

Tipo del valor devuelto:
 

object

pydatajson.helpers.validate_url(uri_string)[fuente]

Valida si un string es una URI válida.

pydatajson.indicator_generators module

Módulo “indicators” de Pydatajson

Contiene los métodos para monitorear y generar indicadores de un catálogo o de una red de catálogos.

class pydatajson.indicator_generators.AbstractCalculator(central_catalog, catalog)[fuente]

Bases: object

datasets_federados()[fuente]
datasets_federados_eliminados()[fuente]
datasets_no_federados()[fuente]
distribuciones_federadas_cant()[fuente]
class pydatajson.indicator_generators.FederationIndicatorsGenerator(central_catalog, catalog, id_based=False)[fuente]

Bases: object

datasets_federados()[fuente]
datasets_federados_cant()[fuente]
datasets_federados_eliminados()[fuente]
datasets_federados_eliminados_cant()[fuente]
datasets_federados_pct()[fuente]
datasets_no_federados()[fuente]
datasets_no_federados_cant()[fuente]
distribuciones_federadas_cant()[fuente]
class pydatajson.indicator_generators.IdBasedIndicatorCalculator(central_catalog, catalog)[fuente]

Bases: pydatajson.indicator_generators.AbstractCalculator

datasets_federados()[fuente]
datasets_federados_eliminados()[fuente]
datasets_no_federados()[fuente]
distribuciones_federadas_cant()[fuente]
class pydatajson.indicator_generators.TitleBasedIndicatorCalculator(central_catalog, catalog)[fuente]

Bases: pydatajson.indicator_generators.AbstractCalculator

datasets_federados()[fuente]
datasets_federados_eliminados()[fuente]
datasets_no_federados()[fuente]
distribuciones_federadas_cant()[fuente]

pydatajson.indicators module

Módulo “indicators” de Pydatajson

Contiene los métodos para monitorear y generar indicadores de un catálogo o de una red de catálogos.

pydatajson.indicators.count_fields(targets, field)[fuente]

Cuenta la cantidad de values en el key especificado de una lista de diccionarios

pydatajson.indicators.generate_catalogs_indicators(catalogs, central_catalog=None, identifier_search=False, validator=None)[fuente]

Genera una lista de diccionarios con varios indicadores sobre los catálogos provistos, tales como la cantidad de datasets válidos, días desde su última fecha actualizada, entre otros.

Parámetros:
  • catalogs (str o list) – uno o más catalogos sobre los que se quiera obtener indicadores
  • central_catalog (str) – catálogo central sobre el cual comparar los datasets subidos en la lista anterior. De no pasarse no se generarán indicadores de federación de datasets.
Devuelve:

2 elementos, el primero una lista de diccionarios con los

indicadores esperados, uno por catálogo pasado, y el segundo un diccionario con indicadores a nivel global, datos sobre la lista entera en general.

Tipo del valor devuelto:
 

tuple

pydatajson.indicators.generate_indicators(catalog, validator=None, only_numeric=False)[fuente]
pydatajson.indicators.generate_numeric_indicators(catalog, validator=None)[fuente]

pydatajson.readers module

Módulo “readers” de Pydatajson

Contiene los métodos auxiliares para leer archivos con información tabular y catálogos de metadatos, en distintos fomatos.

pydatajson.readers.read_catalog(catalog, default_values=None, catalog_format=None, verify=False, timeout=30)[fuente]

Toma una representación cualquiera de un catálogo, y devuelve su representación interna (un diccionario de Python con su metadata.)

Si recibe una representación _interna_ (un diccionario), lo devuelve intacto. Si recibe una representación _externa_ (path/URL a un archivo JSON/XLSX), devuelve su represetación interna, es decir, un diccionario.

Parámetros:catalog (dict or str) – Representación externa/interna de un catálogo. Una representación _externa_ es un path local o una URL remota a un archivo con la metadata de un catálogo, en formato JSON o XLSX. La representación _interna_ de un catálogo es un diccionario.
Devuelve:Representación interna de un catálogo para uso en las funciones de esta librería.
Tipo del valor devuelto:
 dict
pydatajson.readers.read_catalog_obj(catalog)[fuente]
pydatajson.readers.read_json(json_path_or_url, verify=False, timeout=30)[fuente]

Toma el path a un JSON y devuelve el diccionario que representa.

Se asume que el parámetro es una URL si comienza con “http” o “https”, o un path local de lo contrario.

Parámetros:json_path_or_url (str) – Path local o URL remota a un archivo de texto plano en formato JSON.
Devuelve:El diccionario que resulta de deserializar json_path_or_url.
Tipo del valor devuelto:
 dict
pydatajson.readers.read_local_xlsx_catalog(xlsx_path, logger=None)[fuente]

Genera un diccionario de metadatos de catálogo a partir de un XLSX bien formado.

Parámetros:xlsx_path (str) – Path a un archivo XLSX «template» para describir la metadata de un catálogo.
Devuelve:Diccionario con los metadatos de un catálogo.
Tipo del valor devuelto:
 dict
pydatajson.readers.read_suffixless_catalog(catalog)[fuente]
pydatajson.readers.read_table(path)[fuente]

Lee un archivo tabular (CSV o XLSX) a una lista de diccionarios.

La extensión del archivo debe ser «.csv» o «.xlsx». En función de ella se decidirá el método a usar para leerlo.

Si recibe una lista, comprueba que todos sus diccionarios tengan las mismas claves y de ser así, la devuelve intacta. Levanta una Excepción en caso contrario.

Parámetros:path (str o list) – Como “str”, path a un archivo CSV o XLSX.
Devuelve:Lista de diccionarios con claves idénticas representando el archivo original.
Tipo del valor devuelto:
 list
pydatajson.readers.read_xlsx_catalog(xlsx_path_or_url, logger=None, verify=False, timeout=30)[fuente]

Toma el path a un catálogo en formato XLSX y devuelve el diccionario que representa.

Se asume que el parámetro es una URL si comienza con “http” o “https”, o un path local de lo contrario.

Parámetros:xlsx_path_or_url (str) – Path local o URL remota a un libro XLSX de formato específico para guardar los metadatos de un catálogo.
Devuelve:El diccionario que resulta de procesar xlsx_path_or_url.
Tipo del valor devuelto:
 dict

pydatajson.reporting module

Módulo “reporting” de Pydatajson

Contiene los métodos para generar reportes sobre un catálogo.

pydatajson.reporting.generate_datasets_summary(catalog, export_path=None, validator=None)[fuente]

Genera un informe sobre los datasets presentes en un catálogo, indicando para cada uno:

  • Índice en la lista catalog[«dataset»]
  • Título
  • Identificador
  • Cantidad de distribuciones
  • Estado de sus metadatos [«OK»|»ERROR»]

Es utilizada por la rutina diaria de libreria-catalogos para reportar sobre los datasets de los catálogos mantenidos.

Parámetros:
  • catalog (str o dict) – Path a un catálogo en cualquier formato, JSON, XLSX, o diccionario de python.
  • export_path (str) – Path donde exportar el informe generado (en formato XLSX o CSV). Si se especifica, el método no devolverá nada.
Devuelve:

Contiene tantos dicts como datasets estén presentes en catalogs, con los datos antes mencionados.

Tipo del valor devuelto:
 

list

pydatajson.search module

Módulo “search” de Pydatajson

Contiene los métodos para navegar un data.json iterando y buscando entidades de un catálogo.

pydatajson.search.get_catalog_metadata(catalog, exclude_meta_fields=None)[fuente]

Devuelve sólo la metadata de nivel catálogo.

pydatajson.search.get_dataset(catalog, identifier=None, title=None)[fuente]

Devuelve un Dataset del catálogo.

pydatajson.search.get_datasets(catalog, filter_in=None, filter_out=None, meta_field=None, exclude_meta_fields=None, only_time_series=False)[fuente]

Devuelve una lista de datasets del catálogo o de uno de sus metadatos.

Parámetros:
  • catalog (dict, str or DataJson) – Representación externa/interna de un catálogo. Una representación _externa_ es un path local o una URL remota a un archivo con la metadata de un catálogo, en formato JSON o XLSX. La representación _interna_ de un catálogo es un diccionario. Ejemplos: http://datos.gob.ar/data.json, http://www.ign.gob.ar/descargas/geodatos/catalog.xlsx, «/energia/catalog.xlsx».
  • filter_in (dict) –

    Devuelve los datasets cuyos atributos coinciden con los pasados en este diccionario. Ejemplo:

    {
        "dataset": {
            "publisher": {"name": "Ministerio de Ambiente"}
        }
    }
    

    Sólo se devolverán los datasets de ese publisher_name.

  • filter_out (dict) –

    Devuelve los datasets cuyos atributos no coinciden con los pasados en este diccionario. Ejemplo:

    {
        "dataset": {
            "publisher": {"name": "Ministerio de Ambiente"}
        }
    }
    

    Sólo se devolverán los datasets que no sean de ese publisher_name.

  • meta_field (str) – Nombre de un metadato de Dataset. En lugar de devolver los objetos completos «Dataset», devuelve una lista de valores para ese metadato presentes en el catálogo.
  • exclude_meta_fields (list) – Metadatos de Dataset que se quieren excluir de los objetos Dataset devueltos.
  • only_time_series (bool) – Si es verdadero, sólo devuelve datasets que tengan por lo menos una distribución de series de tiempo.
pydatajson.search.get_distribution(catalog, identifier=None, title=None, dataset_identifier=None)[fuente]

Devuelve una Distribution del catálogo.

pydatajson.search.get_distributions(catalog, filter_in=None, filter_out=None, meta_field=None, exclude_meta_fields=None, only_time_series=False)[fuente]

Devuelve lista de distribuciones del catálogo o de uno de sus metadatos.

Parámetros:
  • catalog (dict, str or DataJson) – Representación externa/interna de un catálogo. Una representación _externa_ es un path local o una URL remota a un archivo con la metadata de un catálogo, en formato JSON o XLSX. La representación _interna_ de un catálogo es un diccionario. Ejemplos: http://datos.gob.ar/data.json, http://www.ign.gob.ar/descargas/geodatos/catalog.xlsx, «/energia/catalog.xlsx».
  • filter_in (dict) –

    Devuelve los distribuciones cuyos atributos coinciden con los pasados en este diccionario. Ejemplo:

    {
        "dataset": {
            "publisher": {"name": "Ministerio de Ambiente"}
        }
    }
    

    Sólo se devolverán los distribuciones que pertenezcan a un dataset de ese publisher_name.

  • filter_out (dict) –

    Devuelve los distribuciones cuyos atributos no coinciden con los pasados en este diccionario. Ejemplo:

    {
        "dataset": {
            "publisher": {"name": "Ministerio de Ambiente"}
        }
    }
    

    Sólo se devolverán los distribuciones que no pertenezcan a un dataset de ese publisher_name.

  • meta_field (str) – Nombre de un metadato de Distribution. En lugar de devolver los objetos completos Distribution, devuelve una lista de valores para ese metadato presentes en el catálogo.
  • exclude_meta_fields (list) – Metadatos de Distribution que se quieren excluir de los objetos Distribution devueltos.
  • only_time_series (bool) – Si es verdadero, sólo devuelve distribuciones que sean distribuciones de series de tiempo.
pydatajson.search.get_field(catalog, identifier=None, title=None, distribution_identifier=None)[fuente]

Devuelve un Field del catálogo.

pydatajson.search.get_field_location(catalog, identifier=None, title=None, distribution_identifier=None)[fuente]
pydatajson.search.get_fields(catalog, filter_in=None, filter_out=None, meta_field=None, only_time_series=False, distribution_identifier=None)[fuente]

Devuelve lista de campos del catálogo o de uno de sus metadatos.

Parámetros:
  • catalog (dict, str or DataJson) – Representación externa/interna de un catálogo. Una representación _externa_ es un path local o una URL remota a un archivo con la metadata de un catálogo, en formato JSON o XLSX. La representación _interna_ de un catálogo es un diccionario. Ejemplos: http://datos.gob.ar/data.json, http://www.ign.gob.ar/descargas/geodatos/catalog.xlsx, «/energia/catalog.xlsx».
  • filter_in (dict) –

    Devuelve los campos cuyos atributos coinciden con los pasados en este diccionario. Ejemplo:

    {
        "dataset": {
            "publisher": {"name": "Ministerio de Ambiente"}
        }
    }
    

    Sólo se devolverán los campos que pertenezcan a un dataset de ese publisher_name.

  • filter_out (dict) –

    Devuelve los campos cuyos atributos no coinciden con los pasados en este diccionario. Ejemplo:

    {
        "dataset": {
            "publisher": {"name": "Ministerio de Ambiente"}
        }
    }
    

    Sólo se devolverán los campos que no pertenezcan a un dataset de ese publisher_name.

  • meta_field (str) – Nombre de un metadato de Field. En lugar de devolver los objetos completos «Field», devuelve una lista de valores para ese metadato presentes en el catálogo.
  • exclude_meta_fields (list) – Metadatos de Field que se quieren excluir de los objetos Field devueltos.
  • only_time_series (bool) – Si es verdadero, sólo devuelve campos que sean series de tiempo.
pydatajson.search.get_theme(catalog, identifier=None, label=None)[fuente]
pydatajson.search.get_themes(catalog)[fuente]

Devuelve la lista de temas del catálogo (taxonomía temática).

pydatajson.search.get_time_series(catalog, **kwargs)[fuente]

Devuelve lista de series de tiempo del catálogo o uno de sus metadatos.

Parámetros:
  • catalog (dict, str or DataJson) – Representación externa/interna de un catálogo. Una representación _externa_ es un path local o una URL remota a un archivo con la metadata de un catálogo, en formato JSON o XLSX. La representación _interna_ de un catálogo es un diccionario. Ejemplos: http://datos.gob.ar/data.json, http://www.ign.gob.ar/descargas/geodatos/catalog.xlsx, «/energia/catalog.xlsx».
  • filter_in (dict) –

    Devuelve las series cuyos atributos coinciden con los pasados en este diccionario. Ejemplo:

    {
        "dataset": {
            "publisher": {"name": "Ministerio de Ambiente"}
        }
    }
    

    Sólo se devolverán las series que pertenezcan a un dataset de ese publisher_name.

  • filter_out (dict) –

    Devuelve las series cuyos atributos no coinciden con los pasados en este diccionario. Ejemplo:

    {
        "dataset": {
            "publisher": {"name": "Ministerio de Ambiente"}
        }
    }
    

    Sólo se devolverán las series que no pertenezcan a un dataset de ese publisher_name.

  • meta_field (str) – Nombre de un metadato de Field. En lugar de devolver los objetos completos «Field», devuelve una lista de valores para ese metadato presentes en el catálogo.
  • exclude_meta_fields (list) – Metadatos de Field que se quieren excluir de los objetos Field devueltos.

pydatajson.time_series module

Módulo time_series de pydatajson

Contiene funciones auxiliares para analizar catálogos con series de tiempo, definidas según la extensión del perfil de metadatos para series de tiempo.

pydatajson.time_series.dataset_has_time_series(dataset)[fuente]
pydatajson.time_series.distribution_has_time_index(distribution)[fuente]
pydatajson.time_series.field_is_time_series(field, distribution=None)[fuente]
pydatajson.time_series.get_distribution_time_index(distribution)[fuente]
pydatajson.time_series.get_distribution_time_index_frequency(distribution)[fuente]

pydatajson.transformation module

Funciones auxiliares para realizar transformaciones de metadatos

pydatajson.transformation.generate_distribution_ids(catalog)[fuente]

Genera identificadores para las distribuciones que no los tienen.

Los identificadores de distribuciones se generan concatenando el id del dataset al que pertenecen con el índice posicional de la distribución en el dataset: distribution_identifier = «{dataset_identifier}_{index}».

pydatajson.validation module

Módulo “validator” de Pydatajson

Contiene los métodos para validar el perfil de metadatos de un catálogo.

class pydatajson.validation.Validator(schema_filename=u'catalog.json', schema_dir=u'/home/docs/checkouts/readthedocs.org/user_builds/pydatajson/checkouts/stable/pydatajson/schemas')[fuente]

Bases: object

format_matches_extension(distribution, attribute)[fuente]

Chequea si una extensión podría corresponder a un formato dado.

init_jsonschema_validator(schema_dir, schema_filename)[fuente]
is_valid(catalog)[fuente]
validate_catalog(catalog, only_errors=False)[fuente]
pydatajson.validation.is_valid_catalog(catalog, validator=None)[fuente]

Valida que un archivo data.json cumpla con el schema definido.

Chequea que el data.json tiene todos los campos obligatorios y que tanto los campos obligatorios como los opcionales siguen la estructura definida en el schema.

Parámetros:catalog (str o dict) – Catálogo (dict, JSON o XLSX) a ser validado.
Devuelve:True si el data.json cumple con el schema, sino False.
Tipo del valor devuelto:
 bool
pydatajson.validation.validate_catalog(catalog, only_errors=False, fmt=u'dict', export_path=None, validator=None)[fuente]

Analiza un data.json registrando los errores que encuentra.

Chequea que el data.json tiene todos los campos obligatorios y que tanto los campos obligatorios como los opcionales siguen la estructura definida en el schema.

Parámetros:
  • catalog (str o dict) – Catálogo (dict, JSON o XLSX) a ser validado.
  • only_errors (bool) – Si es True sólo se reportan los errores.
  • fmt (str) –

    Indica el formato en el que se desea el reporte. «dict» es el reporte más verborrágico respetando la

    estructura del data.json.
    »list» devuelve un dict con listas de errores formateados para
    generar tablas.
  • export_path (str) – Path donde exportar el reporte generado (en formato XLSX o CSV). Si se especifica, el método no devolverá nada, a pesar de que se pase algún argumento en fmt.
Devuelve:

Diccionario resumen de los errores encontrados:

{
    "status": "OK",  # resultado de la validación global
    "error": {
        "catalog": {
            "status": "OK",
            "errors": []
            "title": "Título Catalog"},
        "dataset": [
            {
                "status": "OK",
                "errors": [],
                "title": "Titulo Dataset 1"
            },
            {
                "status": "ERROR",
                "errors": [error1_info, error2_info, ...],
                "title": "Titulo Dataset 2"
            }
        ]
    }
}

Donde errorN_info es un dict con la información del N-ésimo error encontrado, con las siguientes claves: «path», «instance», «message», «validator», «validator_value», «error_code».

Tipo del valor devuelto:
 

dict

pydatajson.writers module

Módulo “writers” de pydatajson

Contiene los métodos para escribir - diccionarios con metadatos de catálogos a formato JSON, así como - listas de diccionarios («tablas») en formato CSV o XLSX

pydatajson.writers.write_json(obj, path)[fuente]

Escribo un objeto a un archivo JSON con codificación UTF-8.

pydatajson.writers.write_json_catalog(catalog, path)[fuente]

Escribe el catálogo en JSON.

Parámetros:
  • catalog (DataJson) – Catálogo de datos.
  • path (str) – Directorio absoluto donde se crea el archivo XLSX.
pydatajson.writers.write_table(table, path, column_styles=None, cell_styles=None)[fuente]

Exporta una tabla en el formato deseado (CSV o XLSX).

La extensión del archivo debe ser «.csv» o «.xlsx», y en función de ella se decidirá qué método usar para escribirlo.

Parámetros:
  • table (list of dicts) – Tabla a ser exportada.
  • path (str) – Path al archivo CSV o XLSX de exportación.
pydatajson.writers.write_tables(tables, path, column_styles=None, cell_styles=None, tables_fields=None, tables_names=None)[fuente]

Exporta un reporte con varias tablas en CSV o XLSX.

Si la extensión es «.csv» se crean varias tablas agregando el nombre de la tabla al final del «path». Si la extensión es «.xlsx» todas las tablas se escriben en el mismo excel.

Parámetros:
  • table (dict of (list of dicts)) –

    Conjunto de tablas a ser exportadas donde {

    »table_name»: [{
    «field_name1»: «field_value1», «field_name2»: «field_value2», «field_name3»: «field_value3»

    }]

    }

  • path (str) – Path al archivo CSV o XLSX de exportación.
pydatajson.writers.write_xlsx_catalog(catalog, path, xlsx_fields=None)[fuente]

Escribe el catálogo en Excel.

Parámetros:
  • catalog (DataJson) – Catálogo de datos.
  • path (str) – Directorio absoluto donde se crea el archivo XLSX.
  • xlsx_fields (dict) – Orden en que los campos del perfil de metadatos se escriben en cada hoja del Excel.

Module contents

Módulo pydatajson Conjunto de herramientas para validar y manipular la información presente en el archivo data.json de un Portal de Datos