pydatajson露
Documentaci贸n de pydatajson: librer铆a con funcionalidades para gestionar los metadatos de cat谩logos de datos abiertos que cumplan con el Perfil Nacional de Metadatos. Pydatajson es parte del Paquete de Apertura de Datos.
Pod茅s colaborar cargando un nuevo issue, o respondiendo a un issue ya existente. Lo mismo te invitamos a hacer en el Paquete de Apertura de Datos.
Indice露
pydatajson露
Paquete en python con herramientas para manipular y validar metadatos de cat谩logos de datos.
- Versi贸n python: 2 y 3
- Licencia: MIT license
- Documentaci贸n: https://pydatajson.readthedocs.io/es/stable
- Instalaci贸n
- Usos
- Tests
- Recursos de inter茅s
- Cr茅ditos
Este README cubre los casos de uso m谩s comunes para la librer铆a, junto con ejemplos de c贸digo, pero sin mayores explicaciones. Para una versi贸n m谩s detallada de los comportamientos, revise la documentaci贸n oficial o el Manual de Uso de la librer铆a.
Instalaci贸n露
- Producci贸n: Desde cualquier parte
$ pip install pydatajson
- Desarrollo: Clonar este repositorio, y desde su ra铆z, ejecutar:
$ pip install -e .
A partir de la versi贸n 0.2.x (Febrero 2017), la funcionalidad del paquete se mantendr谩 fundamentalmente estable hasta futuro aviso. De todas maneras, si piensa utilizar esta librer铆a en producci贸n, le sugerimos fijar la versi贸n que emplea en un archivo requirements.txt
.
Usos露
La librer铆a cuenta con funciones para cuatro objetivos principales:
- validaci贸n de metadatos de cat谩logos y los datasets,
- generaci贸n de reportes sobre el contenido y la validez de los metadatos de cat谩logos y datasets,
- transformaci贸n de archivos de metadatos al formato est谩ndar (JSON), y
- generaci贸n de indicadores de monitoreo de cat谩logos y sus datasets.
A continuaci贸n se proveen ejemplos de cada uno de estas acciones. Si desea analizar un flujo de trabajo m谩s completo, refi茅rase a los Jupyter Notebook de samples/
Setup露
DataJson
utiliza un esquema default que cumple con el perfil de metadatos recomendado en la Gu铆a para el uso y la publicaci贸n de metadatos (v0.1) del Paquete de Apertura de Datos.
from pydatajson import DataJson
dj = DataJson()
Si se desea utilizar un esquema alternativo, por favor, consulte la secci贸n 芦Uso > Setup禄 del manual oficial, o la documentaci贸n oficial.
Validaci贸n de metadatos de cat谩logos露
- Si se desea un resultado sencillo (V o F) sobre la validez de la estructura del cat谩logo, se utilizar谩
is_valid_catalog(catalog)
. - Si se desea un mensaje de error detallado, se utilizar谩
validate_catalog(catalog)
.
Por conveniencia, la carpeta tests/samples/
contiene varios ejemplos de data.json
bien y mal formados con distintos tipos de errores.
Archivo data.json local露
from pydatajson import DataJson
dj = DataJson()
catalog = "tests/samples/full_data.json"
validation_result = dj.is_valid_catalog(catalog)
validation_report = dj.validate_catalog(catalog)
print validation_result
True
print validation_report
{
"status": "OK",
"error": {
"catalog": {
"status": "OK",
"errors": [],
"title": "Datos Argentina"
},
"dataset": [
{
"status": "OK",
"errors": [],
"title": "Sistema de contrataciones electr贸nicas"
}
]
}
}
Otros formatos露
pydatajson
puede interpretar cat谩logos en formatos:
- JSON
- XLSX (ver plantilla de cat谩logo en XLSX)
Los cat谩logos pueden estar almacenados localmente o remotamente a trav茅s de URLs de descarga directa. Tambi茅n es capaz de interpretar diccionarios de Python con metadatos de cat谩logos.
from pydatajson import DataJson
dj = DataJson()
catalogs = [
"tests/samples/full_data.json", # archivo JSON local
"http://181.209.63.71/data.json", # archivo JSON remoto
"tests/samples/catalogo_justicia.xlsx", # archivo XLSX local
"https://raw.githubusercontent.com/datosgobar/pydatajson/master/tests/samples/catalogo_justicia.xlsx", # archivo XLSX remoto
{
"title": "Cat谩logo del Portal Nacional",
"description" "Datasets abiertos para el ciudadano."
"dataset": [...],
(...)
} # diccionario de Python
]
for catalog in catalogs:
validation_result = dj.is_valid_catalog(catalog)
validation_report = dj.validate_catalog(catalog)
Generaci贸n de reportes y configuraciones del Harvester露
Si ya se sabe que se desean cosechar todos los datasets [v谩lidos] de uno o varios cat谩logos, se pueden utilizar directamente el m茅todo generate_harvester_config()
, proveyendo harvest='all'
o harvest='valid'
respectivamente. Si se desea revisar manualmente la lista de datasets contenidos, se puede invocar primero generate_datasets_report()
, editar el reporte generado y luego prove茅rselo a generate_harvester_config()
, junto con la opci贸n harvest='report'
.
Crear un archivo de configuraci贸n eligiendo manualmente los datasets a federar露
catalogs = ["tests/samples/full_data.json", "http://181.209.63.71/data.json"]
report_path = "path/to/report.xlsx"
dj.generate_datasets_report(
catalogs=catalogs,
harvest='none', # El reporte tendr谩 `harvest==0` para todos los datasets
export_path=report_path
)
# A continuaci贸n, se debe editar el archivo de Excel 'path/to/report.xlsx',
# cambiando a '1' el campo 'harvest' en los datasets que se quieran cosechar.
config_path = 'path/to/config.csv'
dj.generate_harvester_config(
harvest='report',
report=report_path,
export_path=config_path
)
El archivo config_path
puede ser provisto a Harvester para federar los datasets elegidos al editar el reporte intermedio report_path
.
Por omisi贸n, en la salida de generate_harvester_config
la frecuencia de actualizaci贸n deseada para cada dataset ser谩 芦R/P1D禄, para intentar cosecharlos diariamente. De preferir otra frecuencia (siempre y cuando sea v谩lida seg煤n ISO 8601), se la puede especificar a trav茅s del par谩metro opcional frequency
. Si especifica exp暮icitamente frequency=None
, se conservar谩n las frecuencias de actualizaci贸n indicadas en el campo accrualPeriodicity
de cada dataset.
Crear un archivo de configuraci贸n que incluya 煤nicamente los datasets con metadata v谩lida露
Conservando las variables anteriores:
dj.generate_harvester_config(
catalogs=catalogs,
harvest='valid'
export_path='path/to/config.csv'
)
Transformaci贸n de un archivo de metados XLSX al est谩ndar JSON露
from pydatajson.readers import read_catalog
from pydatajson.writers import write_json
from pydatajson import DataJson
dj = DataJson()
catalogo_xlsx = "tests/samples/catalogo_justicia.xlsx"
catalogo = read_catalog(catalogo_xlsx)
write_json(obj=catalogo, path="tests/temp/catalogo_justicia.json")
Generaci贸n de indicadores de monitoreo de cat谩logos露
pydatajson
puede calcular indicadores sobre uno o m谩s cat谩logos. Estos indicadores recopilan informaci贸n de inter茅s sobre los datasets de cada uno, tales como:
- el estado de validez de los cat谩logos;
- el n煤mero de d铆as desde su 煤ltima actualizaci贸n;
- el formato de sus distribuciones;
- frecuencia de actualizaci贸n de los datasets;
- estado de federaci贸n de los datasets, compar谩ndolo con el cat谩logo central
La funci贸n usada es generate_catalogs_indicators
, que acepta los cat谩logos como par谩metros. Devuelve dos valores:
- una lista con tantos valores como cat谩logos, con cada elemento siendo un diccionario con los indicadores del cat谩logo respectivo;
- un diccionario con los indicadores de la red entera (una suma de los individuales)
catalogs = ["tests/samples/full_data.json", "http://181.209.63.71/data.json"]
indicators, network_indicators = dj.generate_catalogs_indicators(catalogs)
# Opcionalmente podemos pasar como segundo argumento un cat谩logo central,
# para poder calcular indicadores sobre la federaci贸n de los datasets en 'catalogs'
central_catalog = "http://datos.gob.ar/data.json"
indicators, network_indicators = dj.generate_catalogs_indicators(catalogs, central_catalog)
Tests露
Los tests se corren con nose
. Desde la ra铆z del repositorio:
Configuraci贸n inicial:
$ pip install -r requirements_dev.txt
$ mkdir tests/temp
Correr la suite de tests:
$ nosetests
Recursos de inter茅s露
Cr茅ditos露
El validador de archivos data.json
desarrollado es mayormente un envoltorio (wrapper) alrededor de la librer铆a jsonschema
, que implementa el vocabulario definido por JSONSchema.org para anotar y validar archivos JSON.
Manual de uso露
- Contexto
- Glosario
- Funcionalidades
- Uso
- Anexo I: Estructura de respuestas
Contexto露
La pol铆tica de Datos Abiertos de la Rep煤blica Argentina que nace con el Decreto 117/2016 (芦Plan de Apertura de Datos鈥) se basa en un esquema descentralizado donde se conforma una red de nodos publicadores de datos y un nodo central o indexador.
El pilar fundamental de este esquema es el cumplimiento de un Perfil Nacional de Metadatos com煤n a todos los nodos, en el que cada organismo de la APN que publique un archivo data.json
o formato alternativo compatible.
Esto posibilita que todos los conjuntos de datos (datasets) publicados por organismos de la Administraci贸n P煤blica Nacional se puedan encontrar en el Portal Nacional de Datos: http://datos.gob.ar/.
Glosario露
Un cat谩logo de datos abiertos est谩 compuesto por datasets, que a su vez son cada uno un conjunto de distribuciones (archivos descargables). Ver la Gu铆a para el uso y la publicaci贸n de metadatos para m谩s informaci贸n.
- Cat谩logo de datos: Directorio de conjuntos de datos que recopila y organiza metadatos descriptivos de los datos que produce una organizaci贸n. Un portal de datos es una implementaci贸n posible de un cat谩logo. Tambi茅n lo es un archivo Excel, un JSON u otras.
- Dataset: Tambi茅n llamado conjunto de datos. Pieza principal en todo cat谩logo. Se trata de un activo de datos que agrupa recursos referidos a un mismo tema, que respetan una estructura de la informaci贸n. Los recursos que lo componen pueden diferir en el formato en que se los presenta (por ejemplo: .csv, .json, .xls, etc.), la fecha a la que se refieren, el 谩rea geogr谩fica cubierta o estar separados bajo alg煤n otro criterio.
- Distribuci贸n o recurso: Es la unidad m铆nima de un cat谩logo de datos. Se trata de los activos de datos que se publican all铆 y que pueden ser descargados y re-utilizados por un usuario como archivos. Los recursos pueden tener diversos formatos (.csv, .shp, etc.). Est谩n acompa帽ados de informaci贸n contextual asociada (鈥渕etadata鈥) que describe el tipo de informaci贸n que se publica, el proceso por el cual se obtiene, la descripci贸n de los campos del recurso y cualquier informaci贸n extra que facilite su interpretaci贸n, procesamiento y lectura.
- data.json y catalog.xlsx: Son las dos representaciones externas de los metadatos de un cat谩logo que
pydatajson
comprende. Para poder ser analizados program谩ticamente, los metadatos de un cat谩logo deben estar representados en un formato estandarizado: el PAD establece el archivodata.json
para tal fin, ypydatajson
permite leer una versi贸n en XLSX equivalente. - diccionario de metadatos: Es la representaci贸n interna que la librer铆a tiene de los metadatos de un cat谩logo. Todas las rutinas de la librer铆a
pydatajson
que manipulan cat谩logos, toman como entrada una representaci贸n externa (data.json
ocatalog.xlsx
) del cat谩logo, y lo primero que hacen es 芦leerla禄 y generar una representaci贸n interna de la informaci贸n que la rutina sea capaz de manipular.
Uso露
.. autofunction:: pydatajson.backup.main
芦帽alksdj禄
Setup露
DataJson
valida cat谩logos contra un esquema default que cumple con el perfil de metadatos recomendado en la Gu铆a para el uso y la publicaci贸n de metadatos del Paquete de Apertura de Datos.
from pydatajson import DataJson
catalog = DataJson("http://datos.gob.ar/data.json")
Si se desea utilizar un esquema alternativo, se debe especificar un directorio absoluto donde se almacenan los esquemas (schema_dir
) y un nombre de esquema de validaci贸n (schema_filename
), relativo al directorio de los esquemas. Por ejemplo, si nuestro esquema alternativo se encuentra en /home/datosgobar/metadatos-portal/esquema_de_validacion.json
, especificaremos:
from pydatajson import DataJson
catalog = DataJson("http://datos.gob.ar/data.json",
schema_filename="esquema_de_validacion.json",
schema_dir="/home/datosgobar/metadatos-portal")
Lectura露
pydatajson
puede leer un cat谩logo en JSON, XLSX, CKAN o dict
de python:
from pydatajson.ckan_reader import read_ckan_catalog
import requests
# data.json
catalog = DataJson("http://datos.gob.ar/data.json")
catalog = DataJson("local/path/data.json")
# catalog.xlsx
catalog = DataJson("http://datos.gob.ar/catalog.xlsx")
catalog = DataJson("local/path/catalog.xlsx")
# CKAN
catalog = DataJson(read_ckan_catalog("http://datos.gob.ar"))
# diccionario de python
catalog_dict = requests.get("http://datos.gob.ar/data.json").json()
catalog = DataJson(catalog_dict)
Escritura露
Validaci贸n露
Validar los metadatos de un cat谩logo y corregir errores.
from pydatajson import DataJson
catalog = DataJson("tests/samples/full_data.json")
# es falso si existe por lo menos UN error / verdadero si no hay ning煤n error
validation_result = catalog.is_valid_catalog(catalog)
# objeto con los errores encontrados
validation_report = catalog.validate_catalog(catalog, only_errors=True)
# se puede tener el reporte en distintos formatos para transformar m谩s f谩cilmente en un informe en CSV o Excel
validation_report = catalog.validate_catalog(catalog, only_errors=True, fmt="list")
Tambi茅n se puede correr desde la l铆nea de comandos para ver un resultado r谩pido.
pydatajson validation "tests/samples/full_data.json"
pydatajson validation http://datos.gob.ar/data.json
Un ejemplo del resultado completo de validate_catalog()
se puede consultar en el Anexo I: Estructura de respuestas.
Federaci贸n y restauraci贸n露
pydatajson
permite federar o restaurar f谩cilmente un dataset de un cat谩logo hacia un Portal Andino (usa todo el perfil de metadatos) o CKAN (s贸lo usa campos de metadatos de CKAN), utilizando la API de CKAN.
Para esto hace falta un apikey que se puede sacar de la API de CKAN /api/action/user_list
ingresando con un usuario administrador.
Federar un dataset露
Incluye la transformaci贸n de algunos metadatos, para adaptar un dataset de un nodo original a c贸mo debe documentarse en un nodo indexador.
catalog_origin = DataJson("https://datos.agroindustria.gob.ar/data.json")
catalog_origin.harvest_dataset_to_ckan(
owner_org="ministerio-de-agroindustria",
dataset_origin_identifier="8109e9e8-f8e9-41d1-978a-d20fcd2fe5f5",
portal_url="http://datos.gob.ar",
apikey="apikey",
catalog_id="agroindustria"
)
La organizaci贸n del nodo de destino debe estar previamente creada.
Restaurar un dataset露
Los metadatos no sufren transformaciones: se escribe el dataset en el nodo de destino tal cual est谩 en el nodo original.
catalog_origin = DataJson("datosgobar/backup/2018-01-01/data.json")
catalog_origin.restore_dataset_to_ckan(
owner_org="ministerio-de-agroindustria",
dataset_origin_identifier="8109e9e8-f8e9-41d1-978a-d20fcd2fe5f5",
portal_url="http://datos.gob.ar",
apikey="apikey"
)
La organizaci贸n del nodo de destino debe estar previamente creada. En este caso no hace falta catalog_id
porque el dataset_identifier
no sufre ninguna transformaci贸n.
Transformaci贸n de catalog.xlsx
a data.json
露
La lectura de un archivo de metadatos por parte de pydatajson.readers.read_catalog
no realiza ning煤n tipo de verificaci贸n sobre la validez de los metadatos le铆dos. Por ende, si se quiere generar un archivo en formato JSON est谩ndar 煤nicamente en caso de que los metadatos de archivo XLSX sean v谩lidos, se deber谩 realizar la validaci贸n por separado.
El siguiente c贸digo, por ejemplo, escribe a disco un cat谩logos de metadatos en formato JSONO s铆 y s贸lo s铆 los metadatos del XLSX le铆do son v谩lidos:
from pydatajson.readers import read_catalog
from pydatajson.writers import write_json
from pydatajson import DataJson
catalog = DataJson()
catalogo_xlsx = "tests/samples/catalogo_justicia.xlsx"
catalogo = read_catalog(catalogo_xlsx)
if catalog.is_valid_catalog(catalogo):
write_json(obj=catalogo, path="tests/temp/catalogo_justicia.json")
else:
print "Se encontraron metadatos inv谩lidos. Operaci贸n de escritura cancelada."
Para m谩s informaci贸n y una versi贸n m谩s detallada de esta rutina en Jupyter Notebook, dirigirse aqu铆 (metadatos v谩lidos) y aqu铆 (metadatos inv谩lidos).
Generaci贸n de reportes露
El objetivo final de los m茅todos generate_datasets_report
, generate_harvester_config
y generate_harvestable_catalogs
, es proveer la configuraci贸n que Harvester necesita para cosechar datasets. Todos ellos devuelven una 芦tabla禄, que consiste en una lista de diccionarios que comparten las mismas claves (consultar ejemplos en el Anexo I: Estructura de respuestas). A continuaci贸n, se proveen algunos ejemplos de uso comunes:
Crear un archivo de configuraci贸n eligiendo manualmente los datasets a federar露
catalogs = ["tests/samples/full_data.json", "http://181.209.63.71/data.json"]
report_path = "path/to/report.xlsx"
catalog.generate_datasets_report(
catalogs=catalogs,
harvest='none', # El reporte generado tendr谩 `harvest==0` para todos los datasets
export_path=report_path
)
# A continuaci贸n, se debe editar el archivo de Excel 'path/to/report.xlsx', cambiando a '1' el campo 'harvest' para aquellos datasets que se quieran cosechar.
config_path = 'path/to/config.csv'
catalog.generate_harvester_config(
harvest='report',
report=report_path,
export_path=config_path
)
El archivo config_path
puede ser provisto a Harvester para federar los datasets elegidos al editar el reporte intermedio report_path
.
Alternativamente, el output de generate_datasets_report()
se puede editar en un int茅rprete de python:
# Asigno el resultado a una variable en lugar de exportarlo
datasets_report = catalog.generate_datasets_report(
catalogs=catalogs,
harvest='none', # El reporte generado tendr谩 `harvest==0` para todos los datasets
)
# Imaginemos que s贸lo se desea federar el primer dataset del reporte:
datasets_report[0]["harvest"] = 1
config_path = 'path/to/config.csv'
catalog.generate_harvester_config(
harvest='report',
report=datasets_report,
export_path=config_path
)
Crear un archivo de configuraci贸n que incluya 煤nicamente los datasets con metadata v谩lida露
Conservando las variables anteriores:
catalog.generate_harvester_config(
catalogs=catalogs,
harvest='valid'
export_path='path/to/config.csv'
)
Para fines ilustrativos, se incluye el siguiente bloque de c贸digo que produce los mismos resultados, pero genera el reporte intermedio sobre datasets:
datasets_report = catalog.generate_datasets_report(
catalogs=catalogs,
harvest='valid'
)
# Como el reporte ya contiene la informaci贸n necesaria sobre los datasets que se pretende cosechar, el argumento `catalogs` es innecesario.
catalog.generate_harvester_config(
harvest='report'
report=datasets_report
export_path='path/to/config.csv'
)
Modificar cat谩logos para conservar 煤nicamente los datasets v谩lidos露
# Creamos un directorio donde guardar los cat谩logos
output_dir = "catalogos_limpios"
import os; os.mkdir(output_dir)
catalog.generate_harvestable_catalogs(
catalogs,
harvest='valid',
export_path=output_dir
)
Funcionalidades露
La librer铆a cuenta con funciones para tres objetivos principales:
- validaci贸n de metadatos de cat谩logos y los datasets,
- generaci贸n de reportes sobre el contenido y la validez de los metadatos de cat谩logos y datasets,
- transformaci贸n de archivos de metadatos al formato est谩ndar (JSON),
- federaci贸n de datasets a portales de destino.
Como se menciona en el Glosario estos m茅todos no tienen acceso directo a ning煤n cat谩logo, dataset ni distribuci贸n, sino 煤nicamente a sus representaciones externas: archivos o partes de archivos en formato JSON que describen ciertas propiedades. Por conveniencia, en este documento se usan frases como 芦validar el dataset X禄, cuando una versi贸n m谩s precisa ser铆a 芦validar la fracci贸n del archivo data.json
que consiste en una representaci贸n del dataset X en forma de diccionario禄. La diferencia es sutil, pero conviene mantenerla presente.
Todos los m茅todos p煤blicos de la librer铆a toman como primer par谩metro catalog
:
- o bien un diccionario de metadatos (una representaci贸n interna),
- o la ruta (local o remota) a un archivo de metadatos en formato legible (idealmente JSON, alternativamente XLSX).
Cuando el par谩metro esperado es catalogs
, en plural, se le puede pasar o un 煤nico cat谩logo, o una lista de ellos.
Todos los m茅todos comienzan por convertir catalog(s)
en una representaci贸n interna un铆voca: un diccionario cuyas claves son las definidas en el Perfil de Metadatos. La conversi贸n se realiza a trav茅s de pydatajson.readers.read_catalog(catalog)
: 茅ste es la funci贸n que todos ellos invocan para obtener un diccionario de metadatos est谩ndar.
M茅todos de validaci贸n de metadatos露
- pydatajson.DataJson.is_valid_catalog(catalog) -> bool: Responde
True
煤nicamente si el cat谩logo no contiene ning煤n error. - pydatajson.DataJson.validate_catalog(catalog) -> dict: Responde un diccionario con informaci贸n detallada sobre la validez 芦global禄 de los metadatos, junto con detalles sobre la validez de los metadatos a nivel cat谩logo y cada uno de sus datasets. De haberlos, incluye una lista con informaci贸n sobre los errores encontrados.
M茅todos de transformaci贸n de formatos de metadatos露
Transformar un archivo de metadatos de un formato a otro implica un primer paso de lectura de un formato, y un segundo paso de escritura a un formato distinto. Para respetar las disposiciones del PAD, s贸lo se pueden escribir cat谩logos en formato JSON.
- pydatajson.readers.read_catalog(): M茅todo que todas las funciones de DataJson llaman en primer lugar para interpretar cualquier tipo de representaci贸n externa de un cat谩logo.
- pydatajson.writers.write_json_catalog(): Fina capa de abstracci贸n sobre
pydatajson.writers.write_json
, que simplemente vuelca un objeto de Python a un archivo en formato JSON.
M茅todos de generaci贸n de reportes露
Para federaci贸n de datasets露
Los siguientes m茅todos toman una o varias representaciones externas de cat谩logos, y las procesan para generar reportes espec铆ficos sobre su contenido:
- pydatajson.DataJson.generate_datasets_report(): Devuelve un reporte con informaci贸n clave sobre cada dataset incluido en un cat谩logo, junto con variables indicando la validez de sus metadatos.
- pydatajson.DataJson.generate_harvester_config(): Devuelve un reporte con los campos m铆nimos que requiere el Harvester para federar un conjunto de datasets.
- pydatajson.DataJson.generate_harvestable_catalogs(): Devuelve la lista de cat谩logos ingresada, filtrada de forma que cada uno incluya 煤nicamente los datasets que se pretende que el Harvester federe.
Los tres m茅todos toman los mismos cuatro par谩metros, que se interpretan de manera muy similar:
- catalogs: Representaci贸n externa de un cat谩logo, o una lista compuesta por varias de ellas.
- harvest: Criterio de decisi贸n utilizado para marcar los datasets a ser federados/cosechados. Acepta los siguientes valores:
'all'
: Cosechar todos los datasets presentes en catalogs.'none'
: No cosechar ninguno de los datasets presentes en catalogs.'valid'
: Cosechar 煤nicamente los datasets que no contengan errores, ni en su propia metadata ni en la metadata global del cat谩logo.'report'
: Cosechar 煤nicamente los datasets indicados por el reporte provisto enreport
.
- report: En caso de que se pretenda cosechar un conjunto espec铆fico de cat谩logos, esta variable debe recibir la representaci贸n externa (path a un archivo) o interna (lista de diccionarios) de un reporte que identifique los datasets a cosechar.
- export_path: Esta variable controla el valor de retorno de los m茅todos de generaci贸n. Si es
None
, el m茅todo devolver谩 la representaci贸n interna del reporte generado. Si especifica el path a un archivo, el m茅todo devolver谩None
, pero escribir谩 aexport_path
la representaci贸n externa del reporte generado, en formato CSV o XLSX.
generate_harvester_config() puede tomar un par谩metro extra, frequency
, que permitir谩 indicarle a la rutina de cosecha de con qu茅 frecuencia debe intentar actualizar su versi贸n de cierto dataset. Por omisi贸n, lo har谩 diariamente.
Para presentaci贸n de cat谩logos y datasets露
Existen dos m茅todos, cuyos reportes se incluyen diariamente entre los archivos que disponibiliza el repositorio libreria-catalogos
:
- pydatajson.DataJson.generate_datasets_summary(): Devuelve un informe tabular (en formato CSV o XLSX) sobre los datasets de un cat谩logo, detallando cu谩ntas distribuciones tiene y el estado de sus propios metadatos.
- pydatajson.DataJson.generate_catalog_readme(): Genera un archivo de texto plano en formato Markdown para ser utilizado como 芦README禄, es decir, como texto introductorio al contenido del cat谩logo.
M茅todos para federaci贸n de datasets露
- pydatajson.DataJson.push_dataset_to_ckan(): Copia la metadata de un dataset y la escribe en un portal de CKAN.
Toma los siguientes par谩metros:
- owner_org: La organizaci贸n a la que pertence el dataset. Debe encontrarse en el portal de destino.
- dataset_origin_identifier: Identificador del dataset en el cat谩logo de origen.
- portal_url: URL del portal de CKAN de destino.
- apikey: La apikey de un usuario del portal de destino con los permisos para crear el dataset bajo la organizaci贸n pasada como par谩metro.
- catalog_id (opcional, default: None): El prefijo que va a preceder el id y name del dataset en el portal destino, separado por un gui贸n.
- demote_superThemes (opcional, default: True):Si est谩 en true, los ids de los themes del dataset, se escriben como groups de CKAN.
- demote_themes (opcional, default: True): Si est谩 en true, los labels de los themes del dataset, se escriben como tags de CKAN; sino,se pasan como grupo.
- download_strategy (opcional, default None): La referencia a una funci贸n que toma (catalog, distribution) de
entrada y devuelve un booleano. Esta funci贸n se aplica sobre todas las distribuciones del dataset. Si devuelve
True
, se descarga el archivo indicado en eldownloadURL
de la distribuci贸n y se lo sube al portal de destino. Si es None, se omite esta operaci贸n. - generate_new_access_url (opcional, default None): 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.
Retorna el id en el nodo de destino del dataset federado.
Advertencia: La funci贸n push_dataset_to_ckan()
s贸lo garantiza consistencia con los est谩ndares de CKAN. Para
mantener una consistencia m谩s estricta dentro del cat谩logo a federar, es necesario validar los datos antes de pasarlos
a la funci贸n.
pydatajson.federation.remove_dataset_from_ckan(): Hace un borrado f铆sico de un dataset en un portal de CKAN. Toma los siguientes par谩metros:
- portal_url: La URL del portal CKAN. Debe implementar la funcionalidad de
/data.json
. - apikey: La apikey de un usuario con los permisos que le permitan borrar el dataset.
- filter_in: Define el diccionario de filtro en el campo
dataset
. El filtro acepta los datasets cuyos campos coincidan con todos los del diccionariofilter_in['dataset']
. - filter_out: Define el diccionario de filtro en el campo
dataset
. El filtro acepta los datasets cuyos campos coincidan con alguno de los del diccionariofilter_out['dataset']
. - only_time_series: Borrar los datasets que tengan recursos con series de tiempo.
- organization: Borrar los datasets que pertenezcan a cierta organizacion.
En caso de pasar m谩s de un par谩metro opcional, la funci贸n
remove_dataset_from_ckan()
borra aquellos datasets que cumplan con todas las condiciones.- portal_url: La URL del portal CKAN. Debe implementar la funcionalidad de
pydatajson.DataJson.push_theme_to_ckan(): Crea un tema en el portal de destino Toma los siguientes par谩metros:
- portal_url: La URL del portal CKAN.
- apikey: La apikey de un usuario con los permisos que le permitan crear un grupo.
- identifier (opcional, default: None): Id del
theme
que se quiere federar, en el cat谩logo de origen. - label (opcional, default: None): label del
theme
que se quiere federar, en el cat谩logo de origen.
Debe pasarse por lo menos uno de los 2 par谩metros opcionales. En caso de que se provean los 2, se prioriza el identifier sobre el label.
pydatajson.DataJson.push_new_themes(): Toma los temas de la taxonom铆a de un DataJson y los crea en el cat谩logo de destino si no existen. Toma los siguientes par谩metros:
- portal_url: La URL del portal CKAN adonde se escribiran los temas.
- apikey: La apikey de un usuario con los permisos que le permitan crear los grupos.
Hay tambi茅n funciones que facilitan el uso de push_dataset_to_ckan()
:
- pydatajson.DataJson.harvest_dataset_to_ckan(): Federa la metadata de un dataset en un portal de CKAN.
Toma los siguientes par谩metros:
- owner_org: La organizaci贸n a la que pertence el dataset. Debe encontrarse en el portal de destino.
- dataset_origin_identifier: Identificador del dataset en el cat谩logo de origen.
- portal_url: URL del portal de CKAN de destino.
- apikey: La apikey de un usuario del portal de destino con los permisos para crear el dataset bajo la organizaci贸n pasada como par谩metro.
- catalog_id: El prefijo que va a preceder el id y name del dataset en el portal destino, separado por un gui贸n.
- download_strategy (opcional, default None): La referencia a una funci贸n que toma (catalog, distribution) de
entrada y devuelve un booleano. Esta funci贸n se aplica sobre todas las distribuciones del dataset. Si devuelve
True
, se descarga el archivo indicado en eldownloadURL
de la distribuci贸n y se lo sube al portal de destino. Si es None, se omite esta operaci贸n.
Retorna el id en el nodo de destino del dataset federado.
- pydatajson.DataJson.restore_dataset_to_ckan(): Restaura la metadata de un dataset en un portal de CKAN.
Toma los siguientes par谩metros:
- owner_org: La organizaci贸n a la que pertence el dataset. Debe encontrarse en el portal de destino.
- dataset_origin_identifier: Identificador del dataset en el cat谩logo de origen.
- portal_url: URL del portal de CKAN de destino.
- apikey: La apikey de un usuario del portal de destino con los permisos para crear el dataset bajo la organizaci贸n pasada como par谩metro.
- download_strategy (opcional, default None): La referencia a una funci贸n que toma (catalog, distribution) de
entrada y devuelve un booleano. Esta funci贸n se aplica sobre todas las distribuciones del dataset. Si devuelve
True
, se descarga el archivo indicado en eldownloadURL
de la distribuci贸n y se lo sube al portal de destino. Si es None, se omite esta operaci贸n. - generate_new_access_url (opcional, default None): 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.
Retorna el id del dataset restaurado.
pydatajson.DataJson.harvest_catalog_to_ckan(): Federa los datasets de un cat谩logo al portal pasado por par谩metro. Toma los siguientes par谩metros:
- dataset_origin_identifier: Identificador del dataset en el cat谩logo de origen.
- portal_url: URL del portal de CKAN de destino.
- apikey: La apikey de un usuario del portal de destino con los permisos para crear el dataset.
- catalog_id: El prefijo que va a preceder el id y name del dataset en el portal destino, separado por un gui贸n.
- dataset_list (opcional, default: None): Lista de ids de los datasets a federar. Si no se pasa, se federan todos los datasets del cat谩logo.
- owner_org (opcional, default: None): La organizaci贸n a la que pertence el dataset. Debe encontrarse en el portal de destino. Si no se pasa, se toma como organizaci贸n el catalog_id.
- download_strategy (opcional, default None): La referencia a una funci贸n que toma (catalog, distribution) de
entrada y devuelve un booleano. Esta funci贸n se aplica sobre todas las distribuciones del cat谩logo. Si devuelve
True
, se descarga el archivo indicado en eldownloadURL
de la distribuci贸n y se lo sube al portal de destino. Si es None, se omite esta operaci贸n.
Retorna el id en el nodo de destino de los datasets federados.
pydatajson.DataJson.restore_organization_to_ckan(): Restaura los datasets de una organizaci贸n al portal pasado por par谩metro. Toma los siguientes par谩metros:
- catalog: El cat谩logo de origen que se restaura.
- portal_url: La URL del portal CKAN de destino.
- apikey: La apikey de un usuario con los permisos que le permitan crear o actualizar los dataset.
- dataset_list: Los ids de los datasets a restaurar. Si no se pasa una lista, todos los datasests se restauran.
- owner_org: La organizaci贸n a la cual pertencen los datasets.
- download_strategy: 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 (opcional, default None): 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.
Retorna la lista de ids de datasets subidos.
pydatajson.DataJson.restore_catalog_to_ckan(): Restaura los datasets de un cat谩logo al portal pasado por par谩metro. Toma los siguientes par谩metros:
- catalog: El cat谩logo de origen que se restaura.
- origin_portal_url: La URL del portal CKAN de origen.
- destination_portal_url: La URL del portal CKAN de destino.
- apikey: La apikey de un usuario con los permisos que le permitan crear o actualizar los dataset.
- download_strategy: 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 (opcional, default None): 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.
Retorna un diccionario con key organizaci贸n y value la lista de ids de datasets subidos a esa organizaci贸n
pydatajson.federation.resources_update(): Sube archivos de recursos a las distribuciones indicadas y regenera los accessURL en las distribuciones indicadas. Toma los siguientes par谩metros:
- portal_url: URL del portal de CKAN de destino.
- apikey: La apikey de un usuario del portal de destino con los permisos para modificar la distribuci贸n.
- distributions: Lista de distribuciones posibles para actualizar.
- resource_files Diccionario con el id de las distribuciones y un path al recurso correspondiente a subir.
- generate_new_access_url (opcional, default None): Lista de ids de distribuciones a las cuales se actualizar谩 el accessURL con los valores generados por el portal de destino.
- catalog_id (opcional, default None): prependea el id al id del recurso para encontrarlo antes de subirlo si es necesario.
Retorna una lista con los ids de las distribuciones modificadas exitosamente.
Advertencia: La funci贸n resources_update()
cambia el resource_type
de las distribuciones a file.upload
.
M茅todos para manejo de organizaciones露
pydatajson.federation.get_organizations_from_ckan(): Devuelve el 谩rbol de organizaciones del portal pasado por par谩metro. Toma los siguientes par谩metros:
- portal_url: URL del portal de CKAN. Debe implementar el endpoint
/group_tree
.
Retorna una lista de diccionarios con la informaci贸n de las organizaciones. Recursivamente, dentro del campo
children
, se encuentran las organizaciones dependientes en la jerarqu铆a.- portal_url: URL del portal de CKAN. Debe implementar el endpoint
pydatajson.federation.get_organization_from_ckan(): Devuelve un diccionario con la informaci贸n de una organizaci贸n en base a un id y un portal pasados por par谩metro. Toma los siguientes par谩metros:
- portal_url: URL del portal de CKAN. Debe implementar el endpoint
/organization_show
. - org_id: Identificador o name de la organizaci贸n a buscar.
Retorna un diccionario con la informaci贸n de la organizaci贸n correspondiente al identificador obtenido. No incluye su jerarqu铆a, por lo cual 茅sta deber谩 ser conseguida mediante el uso de la funci贸n
get_organizations_from_ckan
.- portal_url: URL del portal de CKAN. Debe implementar el endpoint
pydatajson.federation.push_organization_tree_to_ckan(): Tomando un 谩rbol de organizaciones como el creado por
get_organizations_from_ckan()
crea en el portal de destino las organizaciones dentro de su jerarqu铆a. Toma los siguientes par谩metros:- portal_url: La URL del portal CKAN de destino.
- apikey: La apikey de un usuario con los permisos que le permitan crear las organizaciones.
- org_tree: lista de diccionarios con la data de organizaciones a crear.
- parent (opcional, default: None): Si se pasa, el 谩rbol de organizaciones pasado en
org_tree
se crea bajo la organizaci贸n conname
pasado enparent
. Si no se pasa un par谩metro, las organizaciones son creadas como primer nivel.
Retorna el 谩rbol de organizaciones creadas. Cada nodo tiene un campo
success
que indica si fue creado exitosamente o no. En caso de quesuccess
sea False, los hijos de esa organizaci贸n no son creados.pydatajson.federation.push_organization_to_ckan(): Tomando en un diccionario la data de una organizaci贸n; la crea en el portal de destino. Toma los siguientes par谩metros:
- portal_url: La URL del portal CKAN de destino.
- apikey: La apikey de un usuario con los permisos que le permitan crear las organizaciones.
- organization: Diccionario con la informaci贸n a crear, el 煤nico campo obligatorio es
name
. Para m谩s informaci贸n sobre los campos posibles, ver la documentaci贸n de CKAN - parent (opcional, default: None): Si se define, la organizaci贸n pasada en
organization
se crea bajo la organizaci贸n conname
pasado enparent
. Si no se pasa un par谩metro, las organizaciones son creadas como primer nivel.
Retorna el diccionario de la organizaci贸n creada. El resultado tiene un campo
success
que indica si fue creado exitosamente o no.pydatajson.federation.remove_organization_from_ckan(): Tomando el id o name de una organizaci贸n; la borra en el portal de destino. Toma los siguientes par谩metros:
- portal_url: La URL del portal CKAN de destino.
- apikey: La apikey de un usuario con los permisos que le permitan borrar la organizaci贸n.
- organization_id: Id o name de la organizaci贸n a borrar.
Retorna None.
Advertencia: En caso de que la organizaci贸n tenga hijos en la jerarqu铆a, estos pasan a ser de primer nivel.
pydatajson.federation.remove_organizations_from_ckan(): Tomando una lista de ids o names de organizaciones, las borra en el portal de destino. Toma los siguientes par谩metros:
- portal_url: La URL del portal CKAN de destino.
- apikey: La apikey de un usuario con los permisos que le permitan borrar organizaciones.
- organization_list: Lista de id o names de las organizaciones a borrar.
Retorna None.
Anexo I: Estructura de respuestas露
validate_catalog()露
El resultado de la validaci贸n completa de un cat谩logo, es un diccionario con la siguiente estructura:
{
"status": "OK", # resultado de la validaci贸n global
"error": {
"catalog": {
# validez de la metadata propia del cat谩logo, ignorando los
# datasets particulares
"status": "OK",
"errors": []
"title": "T铆tulo Catalog"},
"dataset": [
{
# Validez de la metadata propia de cada dataset
"status": "OK",
"errors": [],
"title": "Titulo Dataset 1"
},
{
"status": "ERROR",
"errors": [
{
"error_code": 2,
"instance": "",
"message": "'' is not a 'email'",
"path": ["publisher", "mbox"],
"validator": "format",
"validator_value": "email"
},
{
"error_code": 2,
"instance": "",
"message": """ is too short",
"path": ["publisher", "name"],
"validator": "minLength",
"validator_value": 1
}
],
"title": "Titulo Dataset 2"
}
]
}
}
Si validate_catalog()
encuentra alg煤n error, 茅ste se reportar谩 en la lista errors
del nivel correspondiente, a trav茅s de un diccionario con las siguientes claves:
- path: Posici贸n en el diccionario de metadata del cat谩logo donde se encontr贸 el error.
- instance: Valor concreto que no pas贸 la validaci贸n. Es el valor de la clave
path
en la metadata del cat谩logo. - message: Descripci贸n humanamente legible explicando el error.
- validator: Nombre del validador violado, (芦type禄 para errores de tipo, 芦minLength禄 para errores de cadenas vac铆as, et c茅tera).
- validator_value: Valor esperado por el validador
validator
, que no fue respetado. - error_code: C贸digo describiendo gen茅ricamente el error. Puede ser:
- 1: Valor obligatorio faltante: Un campo obligatorio no se encuentra presente.
- 2: Error de tipo y formato: se esperaba un
array
y se encontr贸 undict
, se esperaba unstring
en formatoemail
y se encontr贸 unastring
que no cumple con el formato, et c茅tera.
generate_datasets_report()露
El reporte resultante tendr谩 tantas filas como datasets contenga el conjunto de cat谩logos ingresado, y contar谩 con los siguientes campos, casi todos autodescriptivos:
- catalog_metadata_url: En caso de que se haya provisto una representaci贸n externa de un cat谩logo, la string de su ubicaci贸n; sino
None
. - catalog_title
- catalog_description
- valid_catalog_metadata: Validez de la metadata 芦global禄 del cat谩logo, es decir, ignorando la metadata de datasets particulares.
- dataset_title
- dataset_description
- dataset_index: Posici贸n (comenzando desde cero) en la que aparece el dataset en cuesti贸n en lista del campo
catalog["dataset"]
. - valid_dataset_metadata: Validez de la metadata espec铆fica a este dataset que figura en el cat谩logo (
catalog["dataset"][dataset_index]
). - harvest: 鈥0鈥 o 鈥1鈥, seg煤n se desee excluir o incluir, respectivamente, un dataset de cierto proceso de cosecha. El default es 鈥0鈥, pero se puede controlar a trav茅s del par谩metro 鈥渉arvest鈥.
- dataset_accrualPeriodicity
- dataset_publisher_name
- dataset_superTheme: Lista los valores que aparecen en el campo dataset[芦superTheme禄], separados por comas.
- dataset_theme: Lista los valores que aparecen en el campo dataset[芦theme禄], separados por comas.
- dataset_landingPage
- distributions_list: Lista los t铆tulos y direcciones de descarga de todas las distribuciones incluidas en un dataset, separadas por 芦newline禄.
La representaci贸n interna de este reporte es una lista compuesta en su totalidad de diccionarios con las claves mencionadas. La representaci贸n externa de este reporte, es un archivo con informaci贸n tabular, en formato CSV o XLSX. A continuaci贸n, un ejemplo de la lista de diccionarios que devuelve generate_datasets_report()
:
[
{
"catalog_metadata_url": "http://181.209.63.71/data.json",
"catalog_title": "Andino",
"catalog_description": "Portal Andino Demo",
"valid_catalog_metadata": 0,
"dataset_title": "Dataset Demo",
"dataset_description": "Este es un dataset de ejemplo, se incluye como material DEMO y no contiene ningun valor estadistico.",
"dataset_index": 0,
"valid_dataset_metadata": 1,
"harvest": 0,
"dataset_accrualPeriodicity": "eventual",
"dataset_publisher_name": "Andino",
"dataset_superThem"": "TECH",
"dataset_theme": "Tema.demo",
"dataset_landingPage": "https://github.com/datosgobar/portal-andino",
"distributions_list": ""Recurso de Ejemplo": http://181.209.63.71/dataset/6897d435-8084-4685-b8ce-304b190755e4/resource/6145bf1c-a2fb-4bb5-b090-bb25f8419198/download/estructura-organica-3.csv"
},
{
"catalog_metadata_url": "http://datos.gob.ar/data.json",
"catalog_title": "Portal Nacional de Datos Abiertos",
( ... )
}
]
generate_harvester_config()露
Este reporte se puede generar a partir de un conjunto de cat谩logos, o a partir del resultado de generate_datasets_report()
, pues no es m谩s que un subconjunto del mismo. Incluye 煤nicamente las claves necesarias para que el Harvester pueda federar un dataset, si 'harvest'==1
:
- catalog_metadata_url
- dataset_title
- dataset_accrualPeriodicity
La representaci贸n interna de este reporte es una lista compuesta en su totalidad de diccionarios con las claves mencionadas. La representaci贸n externa de este reporte, es un archivo con informaci贸n tabular, en formato CSV o XLSX. A continuaci贸n, un ejemplo con la lista de diccionarios que devuelve generate_harvester_config()
:
[
{
"catalog_metadata_url": "tests/samples/full_data.json",
"dataset_title": "Sistema de contrataciones electr贸nicas",
"dataset_accrualPeriodicity": "R/P1Y"
},
{
"catalog_metadata_url": "tests/samples/several_datasets_for_harvest.json",
"dataset_title": "Sistema de Alumbrado P煤blico CABA",
"dataset_accrualPeriodicity": "R/P1Y"
},
{
"catalog_metadata_url": "tests/samples/several_datasets_for_harvest.json",
"dataset_title": "Listado de Presidentes Argentinos",
"dataset_accrualPeriodicity": "R/P1Y"
}
]
generate_datasets_summary()露
Se genera a partir de un 煤nico cat谩logo, y contiene, para cada uno de dus datasets:
- 脥ndice: El 铆ndice, identificador posicional del dataset dentro de la lista
catalog["dataset"]
. - T铆tulo: dataset[芦title禄], si lo tiene (es un campo obligatorio).
- Identificador: dataset[芦identifier禄], si lo tiene (es un campo recomendado).
- Cantidad de Errores: Cu谩ntos errores de validaci贸n contiene el dataset, seg煤n figure en el detalle de
validate_catalog
- Cantidad de Distribuiones: El largo de la lista
dataset["distribution"]
A continuaci贸n, un fragmento del resultado de este m茅todo al aplicarlo sobre el Cat谩logo del Ministerio de Justicia:
[OrderedDict([(u'indice', 0),
(u'titulo', u'Base de datos legislativos Infoleg'),
(u'identificador', u'd9a963ea-8b1d-4ca3-9dd9-07a4773e8c23'),
(u'estado_metadatos', u'OK'),
(u'cant_errores', 0),
(u'cant_distribuciones', 3)]),
OrderedDict([(u'indice', 1),
(u'titulo', u'Centros de Acceso a la Justicia -CAJ-'),
(u'identificador', u'9775fcdf-99b9-47f6-87ae-6d46cfd15b40'),
(u'estado_metadatos', u'OK'),
(u'cant_errores', 0),
(u'cant_distribuciones', 1)]),
OrderedDict([(u'indice', 2),
(u'titulo',
u'Sistema de Consulta Nacional de Rebeld\xedas y Capturas - Co.Na.R.C.'),
(u'identificador', u'e042c362-ff39-476f-9328-056a9de753f0'),
(u'estado_metadatos', u'OK'),
(u'cant_errores', 0),
(u'cant_distribuciones', 1)]),
( ... 13 datasets m谩s ...)
OrderedDict([(u'indice', 15),
(u'titulo',
u'Registro, Sistematizaci\xf3n y Seguimiento de Hechos de Violencia Institucional'),
(u'identificador', u'c64b3899-65df-4024-afe8-bdf971f30dd8'),
(u'estado_metadatos', u'OK'),
(u'cant_errores', 0),
(u'cant_distribuciones', 1)])]
generate_catalog_readme()露
Este reporte en texto plano se pretende como primera introducci贸n somera al contenido de un cat谩logo, como figurar谩n en la Librer铆a de Cat谩logos. Incluye datos clave sobre el editor responsable del cat谩logo, junto con:
- estado de los metadatos a nivel cat谩logo,
- estado global de los metadatos, y
- cantidad de datasets y distribuciones incluidas.
A continuaci贸n, el resultado de este m茅todo al aplicarlo sobre el Cat谩logo del Ministerio de Justicia:
# Cat谩logo: Datos Justicia Argentina
## Informaci贸n General
- **Autor**: Ministerio de Justicia y Derechos Humanos
- **Correo Electr贸nico**: justiciaabierta@jus.gov.ar
- **Nombre del cat谩logo**: Datos Justicia Argentina
- **Descripci贸n**:
> Portal de Datos de Justicia de la Rep煤blica Argentina. El Portal publica datos del sistema de justicia de modo que pueda ser reutilizada para efectuar visualizaciones o desarrollo de aplicaciones. Esta herramienta se propone como un punto de encuentro entre las organizaciones de justicia y la ciudadan铆a.
## Estado de los metadatos y cantidad de recursos
Estado metadatos globales | Estado metadatos cat谩logo | # de Datasets | # de Distribuciones
----------------|---------------------------|---------------|--------------------
OK | OK | 16 | 56
## Datasets incluidos
Por favor, consulte el informe [`datasets.csv`](datasets.csv).
Anexo II: Restaurar un cat谩logo露
El primer paso es replicar la estructura de organizaciones del cat谩logo original al cat谩logo destino. Asumiendo que los nombres e ids de las organizaciones del original no se utilizan en el portal donde se replican:
from pydatajson.federation import get_organizations_from_ckan, push_organization_tree_to_ckan
arbol_original = get_organizations_from_ckan('url_portal_original')
arbol_replicado = push_organization_tree_to_ckan('url_portal_destino', 'apikey', arbol_original)
Para cada organizaci贸n en arbol_replicado
, el campo success
tiene un booleano que marca si fue subida exitosamente.
Con las organizaciones replicadas podemos restaurar la data y metadata del cat谩logo orginal:
from pydatajson.core import DataJson
from pydatajson.helpers import is_local_andino_resource
original = DataJson('portal-original/data.json')
pushed_datasets =original.restore_catalog_to_ckan('portal-original-url', 'portal-destino-url', 'apikey',
download_strategy=is_local_andino_resource)
Si pasamos download_strategy=None
, tan solo se restaura la metadata. is_local_andino_resource
es una funci贸n
auxiliar que toma una distribuci贸n y un cat谩logo y realiza las siguientes validaciones:
-1: Chequea que el campo type
sea file.upload
-2: Si la distribuci贸n no tiene campo type
, chequea que el downloadURL
comience con el homepage
del cat谩logo
Si se cumple alguna de las condiciones, descarga el recurso y lo sube al portal de destino. Tambien es posible definir una funci贸n propia como estrategia para carga y descarga de archivos. Esta funci贸n debe tomar una distribuci贸n, un cat谩logo y devolver un booleano.
Referencia r谩pida露
Lectura露
-
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]露 Objeto que representa un cat谩logo de activos de datos.
-
__init__
(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]露 Lee un cat谩logo y crea un objeto con funciones para manipularlo.
Salvo que se indique lo contrario, se utiliza como default el schema de la versi贸n 1.1 del Perfil de Metadatos de Argentina.
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. Ejemplos: http://datos.gob.ar/data.json, http://www.ign.gob.ar/descargas/geodatos/catalog.xlsx, 芦/energia/catalog.xlsx禄.
- schema_filename (str) 鈥 Nombre del archivo que contiene el esquema validador.
- schema_dir (str) 鈥 Directorio (absoluto) donde se encuentra el esquema validador (y sus referencias, de tenerlas).
- default_values (dict) 鈥
Valores default para algunos de los campos del cat谩logo:
{ "dataset_issued": "2017-06-22", "distribution_issued": "2017-06-22" }
-
Escritura露
-
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] Objeto que representa un cat谩logo de activos de datos.
Validaci贸n露
-
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] Objeto que representa un cat谩logo de activos de datos.
-
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
-
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
-
B煤squeda露
-
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] Objeto que representa un cat谩logo de activos de datos.
-
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_field
(identifier=None, title=None, distribution_identifier=None)露 Devuelve un Field del cat谩logo.
-
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.
-
Indicadores露
-
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] Objeto que representa un cat谩logo de activos de datos.
Reportes露
-
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] Objeto que representa un cat谩logo de activos de datos.
-
generate_catalog_readme
(catalog, export_path=None)露 Este m茅todo est谩 para mantener retrocompatibilidad con versiones anteriores. Se ignora el argumento _data_json.
-
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
-
Federaci贸n露
-
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] Objeto que representa un cat谩logo de activos de datos.
-
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
-
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
-
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
-
Referencia露
Referencia completa露
DataJson露
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]露 Objeto que representa un cat谩logo de activos de datos.
-
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 (鈥渁ll鈥, 鈥渘one鈥, 鈥渧alid鈥, 鈥渞eport鈥 o 鈥済ood鈥).
Devuelve: - Lista de diccionarios, con un elemento por cada dataset
presente en catalog.
Tipo del valor devuelto: list
-
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_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 (鈥渁ll鈥, 鈥渘one鈥, 鈥渧alid鈥, 鈥渞eport鈥 o 鈥済ood鈥).
- report (str) 鈥 Path a un reporte/config especificando qu茅 datasets marcar con harvest=1 (s贸lo si harvest==鈥漴eport鈥).
- 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 (鈥渁ll鈥, 鈥渘one鈥, 鈥渧alid鈥 o 鈥渞eport鈥).
- 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==鈥漴eport鈥.
- 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 (鈥渁ll鈥, 鈥渘one鈥, 鈥渧alid鈥, 鈥渞eport鈥 o 鈥済ood鈥).
- 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==鈥漴eport鈥, 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
-
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_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_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_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
-
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
Lectura露
M贸dulo 鈥渞eaders鈥 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_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 鈥渉ttp鈥 o 鈥渉ttps鈥, 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_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 鈥渟tr鈥, 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 鈥渉ttp鈥 o 鈥渉ttps鈥, 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
Escritura露
M贸dulo 鈥渨riters鈥 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.
- table (dict of (list of dicts)) 鈥
-
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.
Validaci贸n露
M贸dulo 鈥渧alidator鈥 de Pydatajson
Contiene los m茅todos para validar el perfil de metadatos de un cat谩logo.
-
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
B煤squeda露
M贸dulo 鈥渟earch鈥 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_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_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.
Reportes露
M贸dulo 鈥渞eporting鈥 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
Federaci贸n露
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_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_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)
Backup露
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:
{ 芦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).
- 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
- catalogs (list or dict) 鈥
Versiones露
Versiones露
0.4.47 (2019-09-17)露
- Implementaci贸n de timezones para los nodos de origen y destino en una federaci贸n
0.4.46 (2019-08-16)露
- Fix a lecturas de cat谩logos XLSX en contextos concurrentes
0.4.45 (2019-08-01)露
- Subo versi贸n de python-dateutil
0.4.44 (2019-07-30)露
- Bugfix en validaci贸n de campos de mail
- subo versi贸n de openpyxl
0.4.43 (2019-06-26)露
- Validaci贸n para ids num茅ricos en la resturaci贸n de cat谩logos.
0.4.42 (2019-06-04)露
- Agrega par谩metros
verify_ssl
yrequests_timeout
a los m茅todos de federaci贸n.
0.4.41 (2019-05-28)露
- Agrega par谩metros
verify_ssl
yrequests_timeout
aDataJson
que controla el comportamiento de descarga de cat谩logos remotos.
0.4.40 (2019-05-28)露
- Refactor de validaciones. Ahora
DataJson
acepta un par谩metrovalidator_class
que corre validaciones sobre el cat谩logo.
0.4.39 (2019-05-07)露
- Cambia el nivel del logging para los warnings que se logueaban bajo error
0.4.38 (2019-04-15)露
- Bugfix en la escritura de cat谩logos sin themes
- Actualiza planilla xlsx de cat谩logo
- La validaci贸n de datasets devuelve una lista en vez de un generador
0.4.37 (2019-04-03)露
- Permite el c谩lculo de indicadores de federaci贸n usando ids
0.4.36 (2019-03-01)露
- Cambia el c谩lculo de indicadores porcentuales para que calculen de 0 a 1
- Bugfix para ciertos cat谩logos con sufijos no reconocidos
0.4.35 (2019-02-19)露
- Actualiza la validaci贸n para aceptar el string vac铆o como valor v谩lido
- Marca los identificadores de distribuciones y datasets como campos requeridos
0.4.34 (2019-02-01)露
- Implementa m茅todo para tomar frecuencia de una serie de tiempo
0.4.33 (2019-01-10)露
- Cambia el kwarg dj_format por catalog_format
- Peque帽o fix para los catalogos remotos json incorrectamente le铆dos como xlsx
0.4.32 (2019-01-08)露
- Fix al dj_format para las lecturas
0.4.31 (2019-01-08)露
- Se aceptan cat谩logos sin formato para la lectura del DataJson
- Nuevo par谩metro para forzar la lectura de un cat谩logo en cierto formato
- Actualizaci贸n de pyyaml
0.4.30 (2018-12-28)露
- No se validan URLs repetidas para datasets, hay casos v谩lidos donde ocurren
0.4.29 (2018-12-21)露
- M茅todo
remove_organizations_from_ckan()
. - Cambia la estrategia de lectura para json sin extensi贸n.
0.4.28 (2018-12-11)露
- Parametro opcional a
push_dataset_to_ckan()
para regeneraraccessURL
de recursos. - Permite el c谩lculo de indicadores con cat谩logo central opcional.
0.4.27 (2018-11-23)露
- Las funcionalidades que estaban en
restore_catalog_to_ckan()
pasan a ser derestore_organization
.restore_catalog
se compone de varias llamadas arestore_organization
. - Documentaci贸n de
restore_catalog_to_ckan
.
0.4.26 (2018-11-05)露
- Agrega m茅todos de manejo de organizaciones para bajar la informaci贸n o subir a un portal CKAN.
- Fix en indicador 鈥渄atasets_con_datos_pct鈥 al calcular el porcentaje.
- Cambio en los tests para que usen archivos temporales en lugar de crearlos en la carpeta results.
0.4.25 (2018-10-22)露
- Agrega indicador 鈥渄atasets_con_datos_cant鈥 para identificar la cantidad de datasets que tienen alguna distribuci贸n potencialmente con datos y los que no.
- Expande la funci贸n
backup.make_catalogs_backup()
con argumentos opcionales para facilitar la generaci贸n de backups descargando las distribuciones.
0.4.24 (2018-10-16)露
- Cambia el valor default en el indicador
datasets_frecuencias_cant
.
0.4.23 (2018-10-2)露
- Se agregan HTML, PHP y RAR como formatos de datos posibles.
- Bugfix relacionado a los valores default en el c谩lculo de indicadores.
0.4.22 (2018-09-05)露
- Agrega espacios a los caracteres permitidos en keyword.
0.4.21 (2018-08-21)露
- Tests y peque帽os bugfixes a ckan_reader.
- Adecua el codigo a pycodestyle.
- Fija piso de 80% de coverage para CI.
0.4.20 (2018-08-09)露
- Agrega tildes y 帽 a los caracteres permitidos en keyword.
- Cuenta los campos faltantes como
None
en los indicadores.
0.4.19 (2018-08-07)露
- Validaci贸n de caracteres permitidos en los keywords.
- Bugfix a la lectura de listas en xlsx con comas extras.
- Bugfix en el cual se repet铆an los errores de validaci贸n si se ped铆a formato lista.
0.4.18 (2018-07-30)露
- Agrega interfaz por l铆nea de comandos para validar r谩pidamente un cat谩logo:
pydatajson validation http://datos.gob.ar/data.json
. - Validaci贸n de keywords, themes, y lenguajes vac铆os.
- Bugfix en
distribution_has_time_index
para capturar excepciones en field inv谩lidos.
0.4.17 (2018-07-10)露
- Agregados 3 indicadores
distribuciones_federadas
,datasets_licencias_cant
ydistribuciones_tipos_cant
. harvest_catalog_to_ckan
devuelve el mensaje en lugar de las representaciones de las excepciones.
0.4.16 (2018-06-19)露
- Bugfix en la escritura y lectura de cat谩logos xlsx.
- Federar campo
type
en distribuciones. - Refactor del logging del m贸dulo. Todos los eventos se escriben en el logger
pydatajson
. - Reestructuraci贸n de la respuesta de
harvest_catalog_to_ckan()
, devuelve adicionalmente los datasets con errores de federaci贸n.
0.4.15 (2018-05-15)露
- Cambios en los requerimientos y
setup.py
para definir los environment markers de manera que soporte setuptools.
0.4.14 (2018-05-11)露
harvest_catalog_to_ckan()
atrapa todas las excepciones de un dataset y no detiene la ejecuci贸n.
0.4.13 (2018-05-06)露
- Agrega una primer interfaz sencilla por l铆nea de comandos. Cualquier m贸dulo puede ser usado como
pydatajson module_name arg1 arg2 arg3
siempre que defina un m茅todomain()
a nivel del m贸dulo que procese los par谩metros.
0.4.12 (2018-05-04)露
- Agrega funci贸n
get_distribution_time_index()
que devuelve eltitle
delfield
marcado como time_index en una distribuci贸n de series de tiempo, si este lo tiene.
0.4.11 (2018-04-25)露
- Corrige bug de
harvest_catalog_ot_ckan
para manejar excepciones de validaci贸n de los datasets
0.4.10 (2018-04-24)露
- Mejora manejo de errores de las funciones para federar cat谩logos completos.
0.4.9 (2018-04-24)露
- Agrego funci贸n para generar ids de distribuciones en cat谩logos que nos los tienen (compatibilidad con perfil 1.0)
- Agrega funci贸n para eliminar todos los datastets federados de un cat谩logo que se encuentren en un CKAN
- Implemento fallback que busca un theme por identifier primero o por label despu茅s (si falla)
- Agrego excepciones a los chequeos de formato vs. extensi贸n
- Agrego param茅tros a la funci贸n title_to_name() para establecer una longitud m谩xima del resultado de la transformaci贸n en caracteres
0.4.8 (2018-04-18)露
- Mejoro manejo de errores de los m茅todos optimizados de b煤squeda
0.4.7 (2018-04-17)露
- Flexibiliza m茅todos de b煤squeda optimizados para aceptar data.json鈥檚 versi贸n 1.0
- Mejora la performance de los m茅todos de b煤squeda optimizados
0.4.6 (2018-04-17)露
- Re-estructura el archivo de configuraci贸n para federaci贸n (nueva versi贸n simplificada)
- Agrega m贸dulo para hacer backups de datos y metadatos de un cat谩logo
- Mejora la performance de guardar cat谩logos en Excel
0.4.4 (2018-04-09)露
- Agrega wrappers para
push_dataset_to_ckan()
0.4.3 (2018-03-20)露
- Mejora el manejo de themes para recrear un cat谩logo
0.4.2 (2018-03-13)露
- Agrega funciones auxiliares para la administraci贸n de un CKAN v铆a API para facilitar la administraci贸n de la federaci贸n de datasets
remove_dataset_to_ckan()
- Incorpora nuevas validaciones (formatos y fileNames)
- Agrega flags opcionales para que
push_dataset_to_ckan()
sea un m茅todo que transforma opcionalmente la metadata de un dataset
0.4.1 (2018-02-16)露
datasets_equal()
permite especificar los campos a tener en cuenta para la comparaci贸n, como un par谩metro.
0.4.0 (2018-02-08)露
- Incorpora m茅todos para federar un dataset de un cat谩logo a un CKAN o un Andino:
push_dataset_to_ckan()
. - Actualiza validaciones y esquema de metadatos al Perfil Nacional de Metadatos versi贸n 1.1.
0.3.21 (2017-12-22)露
- Agrega soporte para Python 3.6
0.3.20 (2017-11-16)露
- Agrego m茅todo
get_theme()
para devolver un tema de la taxonom铆a espec铆fica del cat谩logo seg煤n suid
olabel
.
0.3.19 (2017-10-31)露
- Agrego m茅todos de b煤squeda de series de tiempo en un cat谩logo (
get_time_series()
) y un par谩metroonly_time_series=True or False
para filtrar datasets y distribuciones en sus m茅todos de b煤squeda (get_datasets(only_time_series=True)
devuelve s贸lo aquellos datasets que tengan alguna serie de tiempo).
0.3.18 (2017-10-19)露
- Agrego posibilidad de pasar un logger desde afuera a la funci贸n de lectura de cat谩logos en Excel.
0.3.15 (2017-10-09)露
- Agrega filtro por series de tiempo en
get_datasets()
yget_distributions()
. Tienen un par谩metroonly_time_series
que devuelve s贸lo aquellos que tengan o sean distribuciones con series de tiempo.
0.3.12 (2017-09-21)露
- Agrega funci贸n para escribir un cat谩logo en Excel.
- Agrega funciones para remover datasets o distribuciones de un cat谩logo.
0.3.11 (2017-09-13)露
- Incorpora par谩metro para excluir campos de metadatos en la devoluci贸n de la b煤squeda de datasets y distribuciones.
0.3.10 (2017-09-11)露
- Agregar referencia interna a los ids de las entidades padre de otras (distribuciones y fields.)
0.3.9 (2017-09-05)露
- Flexibiliza lectura de extras en ckan to datajson.
- Flexibiliza longitud m铆nima de campos para recomendar su federaci贸n o no.
- Agrega m茅todo para devolver los metadatos a nivel de cat谩logo.
- Resuelve la escritura de objetos python como texto en excel.
0.3.8 (2017-08-25)露
- Agrega stop words a
helpers.title_to_name()
0.3.4 (2017-08-21)露
- Agrega m茅todo para buscar la localizaci贸n de un
field
en un cat谩logo.
0.3.3 (2017-08-20)露
- Agrega m茅todo para convertir el t铆tulo de un dataset o distribuci贸n en un nombre normalizado para la creaci贸n de URLs.
0.3.2 (2017-08-16)露
- Ampl铆a reporte de federaci贸n en markdown.
0.3.0 (2017-08-14)露
- Agrega m茅todos para navegar un cat谩logo desde el objeto DataJson.
0.2.27 (2017-08-11)露
- Agrega validacion de que el campo
superTheme
s贸lo contenga ids en may煤sculas o min煤sculas de alguno de los 13 temas de la taxonom铆a tem谩tica de datos.gob.ar. - Agrega validaci贸n limitando a 60 caracteres los nombres de los campos
field_title
. - Mejoras al reporte de asistencia a la federaci贸n.
0.2.26 (2017-08-04)露
- Agrega validaci贸n de que no haya ids repetidos en la lista de temas de
themeTaxonomy
. - Agrega traducci贸n de ckan del campo extra
Cobertura temporal
atemporal
.
0.2.24 (2017-08-03)露
- Mejoras en los reportes de errores y an谩lisis de datasets para federaci贸n
- M茅todos
DataJson.validate_catalog()
yDataJson.generate_datasets_report()
tienen nuevas opciones para mejorar los reportes, especialmente en excel.
0.2.23 (2017-08-02)露
- Bug fixes
0.2.22 (2017-08-02)露
- Agrega estilo y formato al reporte de datasets
- Agrega nuevos campos al reporte de datasets
- Agrega un campo identificador del cat谩logo en el archivo de configuraci贸n de federaci贸n
0.2.21 (2017-08-02)露
- Tolera el caso de intentar escribir un reporte de datasets sobre un cat谩logo que no tiene datasets. Loggea un warning en lugar de levantar una excepci贸n.
0.2.20 (2017-08-01)露
- Elimina la verificaci贸n de SSL en las requests de ckan_reader.
0.2.19 (2017-08-01)露
- Elimina la verificaci贸n de SSL en las requests.
0.2.18 (2017-07-25)露
- Mejora la validaci贸n del campo
temporal
- Agrega formas de reporte de errores para el m茅todo
DataJson.validate_catalog()
:- Devuelve s贸lo errores con
only_errors=True
- Devuelve una lista de errores lista para ser convertida en tabla con
fmt="list"
- Devuelve s贸lo errores con
0.2.17 (2017-07-18)露
- Agrega un m茅todo para convertir un intervalo repetido (Ej.: R/P1Y) en su representaci贸n en prosa (芦Anualmente禄).
- Agrego m茅todo que estima los datasets federados que fueron borrados de un cat谩logo espec铆fico. Se consideran datasets federados y borrados de un cat谩logo espec铆fico aquellos cuyo publisher.name existe dentro de alg煤n otro dataset todav铆a presente en el cat谩logo espec铆fico.
0.2.16 (2017-07-13)露
- Bug fix: convierte a unicode antes de escribir un objeto a JSON.
0.2.15 (2017-07-11)露
- Modifica la definici贸n de dataset actualizado usando el campo 芦modified禄 del perfil de metadatos. Si este campo no est谩 presente en la metadata de un dataset, se lo considera desactualizado.
0.2.14 (2017-07-10)露
- Modifica la definici贸n de dataset usada para comparar limit谩ndola a la comparaci贸n por 芦title禄 y 芦publisher_name禄.
0.2.13 (2017-06-22)露
- Agrega m茅todo para verificar si un dataset individual est谩 actualizado
0.2.12 (2017-06-22)露
- Se modifica el template de CATALOG README
- Se agrega el indicador 芦datasets_no_federados禄 a generate_catalogs_indicators
0.2.11 (2017-05-23)露
- Se agrega en
core
el m茅todoDataJson.generate_catalogs_indicators
, que genera indicadores de monitoreo de cat谩logos, recopilando informaci贸n sobre, entre otras cosas, su validez, actualidad y formato de sus contenidos.
0.2.10 (2017-05-11)露
- Correci贸n ortogr谩fica del listado de frecuencias de actualizaci贸n admisibles (
pydatajson/schemas/accrualPeriodicity.json
).
0.2.9 (2017-05-04)露
- Hotfixes para que
pydatajson
sea deployable en nuevos entornos donde elsetup.py
estaba fallando.
0.2.5 (2017-02-16)露
- Se agrega una nueva funci贸n a
readers
,read_ckan_catalog
, que traduce los metadatos que disponibiliza la Action API v3 de CKAN al est谩ndardata.json
. Esta funci贸n no est谩 integrada aread_catalog
. - Se modifican todos los esquemas de validaci贸n, de modo que los campos opcionales de cualquier tipo y nivel acepten strings vac铆as.
0.2.0 (2017-01-31)露
- Se reestructura la librer铆a en 4 m贸dulos:
core
,readers
,writers
yhelpers
. Toda la funcionalidad se mantiene intacta, pero algunas funciones muy utilizadas cambian de m贸dulo. En particular,pydatajson.pydatajson.read_catalog
es ahorapydatajson.readers.read_catalog
, ypydatajson.xlsx_to_json.write_json_catalog
es ahorapydatajson.writers.write_json_catalog
(opydatajson.writers.write_json
). - Se agrega el par谩metro
frequency
apydatajson.DataJson.generate_harvester_config
, que controla la frecuencia de cosecha que se pretende de los datasets a incluir en el archivo de configuraci贸n. Por omisi贸n, se usa'R/P1D'
(diariamente) para todos los datasets. - Se agrega la carpeta
samples/
, con dos rutinas de transformaci贸n y reporte sobre cat谩logos de metadatos en formato XLSX.
0.1.7 (2017-01-10)露
- Se agrega el m贸dulo
xlsx_to_json
, con dos m茅todos para lectura de archivos locales o remotos, sean JSON gen茅ricos (xlsx_to_json.read_json()
) o metadatos de cat谩logos en formato XLSX (read_local_xlsx_catalog()
). - Se agrega el m茅todo
pydatajson.read_catalog()
que interpreta todos las representaciones externas o internas de cat谩logos conocidas, y devuelve un diccionario con sus metadatos.
0.1.6 (2017-01-04)露
- Se incorpora el m茅todo
DataJson.generate_harvestable_catalogs()
, que filtra los datasets no deseados de un conjunto de cat谩logos. - Se agrega el par谩metro
harvest
a los m茅todosDataJson.generate_harvestable_catalogs()
,DataJson.generate_datasets_report()
yDataJson.generate_harvester_config()
, para controlar el criterio de elecci贸n de los datasets a cosechar. - Se agrega el par谩metro
export_path
a los m茅todosDataJson.generate_harvestable_catalogs()
,DataJson.generate_datasets_report()
yDataJson.generate_harvester_config()
, para controlar la exportaci贸n de sus resultados.
0.1.4 (2016-12-23)露
- Se incorpora el m茅todo
DataJson.generate_datasets_report()
, que reporta sobre los datasets y la calidad de calidad de metadatos de un conjunto de cat谩logos. - Se incorpora el m茅todo
DataJson.generate_harvester_config()
, que crea archivos de configuraci贸n para el Harvester a partir de los reportes degenerate_datasets_report()
.
0.1.3 (2016-12-19)露
- Al resultado de
DataJson.validate_catalog()
se le incorpora una lista ("errors"
) con informaci贸n de los errores encontrados durante la validaci贸n en cada nivel de jerarqu铆a (芦catalog禄 y cada elemento de 芦dataset禄)
0.1.2 (2016-12-14)露
- Se incorpora validaci贸n de tipo y formato de campo
- Los m茅todos
DataJson.is_valid_catalog()
yDataJson.validate_catalog()
ahora aceptan undict
adem谩s de unpath/to/data.json
o una url a un data.json.
0.1.0 (2016-12-01)露
Primera versi贸n para uso productivo del paquete.
- La instalaci贸n via
pip install
deber铆a reconocer correctamente la ubicaci贸n de los validadores por default. - El manejo de data.json鈥檚 ubicados remotamente se hace en funci贸n del resultado de
urlparse.urlparse
- El formato de respuesta de
validate_catalog
se adec煤a a la 煤ltima especificaci贸n (versamples/validate_catalog_returns.json
.
0.0.13 (2016-11-25)露
- Intentar que la instalaci贸n del paquete sepa donde est谩n instalados los schemas por default
0.0.12 (2016-11-25)露
- Primera versi贸n propuesta para v0.1.0