- Extensión de las capacidades de
resources>_update()
- Fix de la parametrización de threads.
- Parametrización de cantidad de threads a usar en validación de urls.
- Validación de formatos y extensiones es menos restrictiva.
- Mail para catálogo ya no es obligatorio.
- Temporal se puede usar con sólo una fecha de comienzo (sin final).
- Se admiten espacios iniciales o finales en los mails.
- Fix de estilo de codigo
- Validación de fileName de distribuciones es menos estricto
- Parametrización del timeout en los heads que chequean urls
- Validación electiva de urls con certificados SSL, enviando verify_ssl=False desactiva la validacion de certificados válidos
- Se modifica el criterio de urls validas, ahora solo las urls 4xx y 5xx son invalidas (a excepcion de 429)
- Los métodos de validaciones e indicadores ahora aceptan un flag que determina si validar o no campos con URLs.
- Bugfix de cálculo de indicadores de
downloadURL
en indicadores de red. - Fields con mayúsculas y minúsculas mixtasse muestran en mayúsculas en indicadores.
- Optimización de tiempo de ejecución de validaciones, usando threads.
- Se calcula 3 nuevos indicadores en base al
downloadURL
de las distribuciones.
- Implementación de timezones para los nodos de origen y destino en una federación
- Fix a lecturas de catálogos XLSX en contextos concurrentes
- Subo versión de python-dateutil
- Bugfix en validación de campos de mail
- subo versión de openpyxl
- Validación para ids numéricos en la resturación de catálogos.
- Agrega parámetros
verify_ssl
yrequests_timeout
a los métodos de federación.
- Agrega parámetros
verify_ssl
yrequests_timeout
aDataJson
que controla el comportamiento de descarga de catálogos remotos.
- Refactor de validaciones. Ahora
DataJson
acepta un parámetrovalidator_class
que corre validaciones sobre el catálogo.
- Cambia el nivel del logging para los warnings que se logueaban bajo error
- 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
- Permite el cálculo de indicadores de federación usando ids
- Cambia el cálculo de indicadores porcentuales para que calculen de 0 a 1
- Bugfix para ciertos catálogos con sufijos no reconocidos
- Actualiza la validación para aceptar el string vacío como valor válido
- Marca los identificadores de distribuciones y datasets como campos requeridos
- Implementa método para tomar frecuencia de una serie de tiempo
- Cambia el kwarg dj_format por catalog_format
- Pequeño fix para los catalogos remotos json incorrectamente leídos como xlsx
- Fix al dj_format para las lecturas
- 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
- No se validan URLs repetidas para datasets, hay casos válidos donde ocurren
- Método
remove_organizations_from_ckan()
. - Cambia la estrategia de lectura para json sin extensión.
- Parametro opcional a
push_dataset_to_ckan()
para regeneraraccessURL
de recursos. - Permite el cálculo de indicadores con catálogo central opcional.
- 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
.
- Agrega métodos de manejo de organizaciones para bajar la información o subir a un portal CKAN.
- Fix en indicador 'datasets_con_datos_pct' al calcular el porcentaje.
- Cambio en los tests para que usen archivos temporales en lugar de crearlos en la carpeta results.
- Agrega indicador 'datasets_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.
- Cambia el valor default en el indicador
datasets_frecuencias_cant
.
- Se agregan HTML, PHP y RAR como formatos de datos posibles.
- Bugfix relacionado a los valores default en el cálculo de indicadores.
- Agrega espacios a los caracteres permitidos en keyword.
- Tests y pequeños bugfixes a ckan_reader.
- Adecua el codigo a pycodestyle.
- Fija piso de 80% de coverage para CI.
- Agrega tildes y ñ a los caracteres permitidos en keyword.
- Cuenta los campos faltantes como
None
en los indicadores.
- 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.
- 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.
- 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.
- 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.
- Cambios en los requerimientos y
setup.py
para definir los environment markers de manera que soporte setuptools.
harvest_catalog_to_ckan()
atrapa todas las excepciones de un dataset y no detiene la ejecución.
- 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.
- 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.
- Corrige bug de
harvest_catalog_ot_ckan
para manejar excepciones de validación de los datasets
- Mejora manejo de errores de las funciones para federar catálogos completos.
- 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
- Mejoro manejo de errores de los métodos optimizados de búsqueda
- Flexibiliza métodos de búsqueda optimizados para aceptar data.json's versión 1.0
- Mejora la performance de los métodos de búsqueda optimizados
- 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
- Agrega wrappers para
push_dataset_to_ckan()
- Mejora el manejo de themes para recrear un catálogo
- 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
datasets_equal()
permite especificar los campos a tener en cuenta para la comparación, como un parámetro.
- 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.
- Agrega soporte para Python 3.6
- Agrego método
get_theme()
para devolver un tema de la taxonomía específica del catálogo según suid
olabel
.
- 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).
- Agrego posibilidad de pasar un logger desde afuera a la función de lectura de catálogos en Excel.
- 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.
- Agrega función para escribir un catálogo en Excel.
- Agrega funciones para remover datasets o distribuciones de un catálogo.
- Incorpora parámetro para excluir campos de metadatos en la devolución de la búsqueda de datasets y distribuciones.
- Agregar referencia interna a los ids de las entidades padre de otras (distribuciones y fields.)
- 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.
- Agrega stop words a
helpers.title_to_name()
- Agrega método para buscar la localización de un
field
en un catálogo.
- Agrega método para convertir el título de un dataset o distribución en un nombre normalizado para la creación de URLs.
- Amplía reporte de federación en markdown.
- Agrega métodos para navegar un catálogo desde el objeto DataJson.
- 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.
- 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
.
- 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.
- Bug fixes
- 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
- 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.
- Elimina la verificación de SSL en las requests de ckan_reader.
- Elimina la verificación de SSL en las requests.
- 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
- 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.
- Bug fix: convierte a unicode antes de escribir un objeto a JSON.
- 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.
- Modifica la definición de dataset usada para comparar limitándola a la comparación por "title" y "publisher_name".
- Agrega método para verificar si un dataset individual está actualizado
- Se modifica el template de CATALOG README
- Se agrega el indicador "datasets_no_federados" a generate_catalogs_indicators
- 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.
- Correción ortográfica del listado de frecuencias de actualización admisibles (
pydatajson/schemas/accrualPeriodicity.json
).
- Hotfixes para que
pydatajson
sea deployable en nuevos entornos donde elsetup.py
estaba fallando.
-
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.
-
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.
- 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.
- 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.
- 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()
.
- 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")
- 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.
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's 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
.
- Intentar que la instalación del paquete sepa donde están instalados los schemas por default
- Primera versión propuesta para v0.1.0