pydatajson package

Submodules

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(schema_filename=u'catalog.json', schema_dir=u'/home/docs/checkouts/readthedocs.org/user_builds/pydatajson/checkouts/0.2.2/pydatajson/schemas')[fuente]

Bases: object

Métodos para trabajar con archivos data.json.

ABSOLUTE_SCHEMA_DIR = u'/home/docs/checkouts/readthedocs.org/user_builds/pydatajson/checkouts/0.2.2/pydatajson/schemas'
DEFAULT_CATALOG_SCHEMA_FILENAME = u'catalog.json'
catalog_report(catalog, harvest=u'none', report=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’ o ‘report’).
Devuelve:

Lista de diccionarios, con un elemento por cada dataset

presente en catalog.

Tipo del valor devuelto:
 

list

generate_catalog_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, y
  • 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

generate_datasets_report(catalogs, harvest=u'valid', report=None, export_path=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’ o ‘report’).
  • 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.
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_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, frequency=u'R/P1D', 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’ 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’, en cuyo caso catalogs se ignora.
  • frequency (str) – Frecuencia de búsqueda de actualizaciones en los datasets a cosechar. Todo intervalo de frecuencia válido según ISO 8601 es válido. Es ‘R/P1D’ (diariamiente) por omisión, y si se pasa`None`, se conservará el valor de original de cada dataset, dataset[“accrualPeriodicity”].
  • 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

is_valid_catalog(catalog)[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
validate_catalog(catalog)[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.
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.helpers module

Módulo principal de pydatajson

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

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.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', ')[fuente]

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

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.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)[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.
  • representación _externa_ es un path local o una URL remota a un (Una) –
  • con la metadata de un catálogo, en formato JSON o XLSX. La (archivo) –
  • _interna_ de un catálogo es un diccionario. (representación) –
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_json(json_path_or_url)[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)[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_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)[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.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]

Función de compatibilidad con releases anteriores.

pydatajson.writers.write_table(table, path)[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.

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