pydatajson package

Submodules

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

Bases: object

Métodos para trabajar con archivos data.json.

ABSOLUTE_SCHEMA_DIR = u'/home/docs/checkouts/readthedocs.org/user_builds/pydatajson/checkouts/0.1.4/pydatajson/schemas'
DEFAULT_CATALOG_SCHEMA_FILENAME = u'catalog.json'
generate_datasets_report(catalogs, report_path)[source]

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

El método no devuelve nada, pero genera un “reporte de datasets” en el report_path indicado. Dicho reporte es un CSV que consta de una línea por cada dataset presente en los catálogos provistos, con varios campos útiles (report_fieldnames) para decidir si harvestear o no cierto dataset.

Args:
catalogs (str, dict o list): Uno (str o dict) o varios (list de
strs y/o dicts) elementos con la metadata de un catálogo. Tienen que poder ser interpretados por self._json_to_dict()
report_path (str): Path donde se espera que se guarde el reporte
sobre datasets generado.
Returns:
None
generate_harvestable_catalogs(catalogs, report_path, write_to_file, files_dir)[source]

Genera archivo de configuración del harvester según el reporte.

Args:
report_path (str): config_path (str): write_to_file (bool): files_dir (str):
static generate_harvester_config(report_path, config_path)[source]

Genera un archivo de configuración del harvester según el reporte provisto.

Se espera que report_path apunte a un archivo producido por generate_datasets_report(catalogs, report_path), al cual se le modificaron algunos 0 (ceros) por 1 (unos) en la columna “harvest”.

Este método no devuelve nada. Como efecto sencudario, genera un archivo de configuración en config_path manteniendo de report_path únicamente los campos necesarios para el harvester, de aquellos datasets para los cuales el valor de “harvest” es igual a 1.

Args:

report_path (str): Path a un reporte de datasets procesado. config_path (str): Path donde se generará el archivo de

configuración del harvester.
Returns:
None
is_valid_catalog(datajson_path)[source]

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.

Args:
datajson_path (str): Path al archivo data.json a ser validado.
Returns:
bool: True si el data.json cumple con el schema, sino False.
validate_catalog(datajson_path)[source]

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.

Args:
datajson_path (str): Path al archivo data.json a ser validado.
Returns:

dict: 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”.

pydatajson.pydatajson.main()[source]

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

Module contents