Discussion:
[pyar] DSL para filtros de secuencias de objetos
Martín Gaitán
2018-06-12 12:26:53 UTC
Permalink
Buenas.

Estoy buscando alguna una libreria que provea algun DSL para definir
filtros sobre estructuras de datos complejas,

Por ejemplo, imaginen una lista de diccionarios

events = [
{
'id': 1,
'system_id': 'XYZ',
'event_type': 'UserLogin',
'user': {
'username': 'messi'
}
}, {
'id': 2,
'system_id': 'XYZ',
'event_type': 'UserLogout',
'user': {
'username': 'messi'
}
}, {
'id': 3,
'system_id': 'FOO',
'event_type': 'UserLogin',
'user': {
'username': 'tin'
}
}
]

Entonces aplicar el filtro
"user.username = saibot and event_type = UserLogout "

sólo deberia matchear el diccionario del medio.

Por ejemplo, esto está muy bien resuelto en django, pero yo necesito algo
que aplique sobre diccionarios u objetos cualquiera
https://github.com/ivelum/djangoql

Encontré esto, que casi satisface mis requerimiento pero me queda chico,
porque no soporta objetos anidados agrupamiento de condiciones.
https://git.ercpe.de/ercpe/phylter/src/branch/master

conocen algo que me pueda servir?
saludos.
Andres Riancho
2018-06-12 12:37:19 UTC
Permalink
Creo que podrías probar buscando en Google JSON query language.
Encontré este que quizás te sirve:

http://objectpath.org/
Post by Martín Gaitán
Buenas.
Estoy buscando alguna una libreria que provea algun DSL para definir filtros
sobre estructuras de datos complejas,
Por ejemplo, imaginen una lista de diccionarios
events = [
{
'id': 1,
'system_id': 'XYZ',
'event_type': 'UserLogin',
'user': {
'username': 'messi'
}
}, {
'id': 2,
'system_id': 'XYZ',
'event_type': 'UserLogout',
'user': {
'username': 'messi'
}
}, {
'id': 3,
'system_id': 'FOO',
'event_type': 'UserLogin',
'user': {
'username': 'tin'
}
}
]
Entonces aplicar el filtro
"user.username = saibot and event_type = UserLogout "
sólo deberia matchear el diccionario del medio.
Por ejemplo, esto está muy bien resuelto en django, pero yo necesito algo
que aplique sobre diccionarios u objetos cualquiera
https://github.com/ivelum/djangoql
Encontré esto, que casi satisface mis requerimiento pero me queda chico,
porque no soporta objetos anidados agrupamiento de condiciones.
https://git.ercpe.de/ercpe/phylter/src/branch/master
conocen algo que me pueda servir?
saludos.
_______________________________________________
Sitio web: http://www.python.org.ar/
Para administrar la lista (o desuscribirse) entrar a
http://listas.python.org.ar/listinfo/pyar
La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
Argentina - http://www.usla.org.ar
--
Andrés Riancho
Project Leader at w3af - http://w3af.org/
Web Application Attack and Audit Framework
Twitter: @w3af
GPG: 0x93C344F3
_______________________________________________
Lista de Correo de PyAr - Python Argentina - ***@python.org.ar
Sitio web: http://www.python.org.ar/

Para administrar la lista (o desuscribirse) entrar a http://listas.python.org.ar/listinfo/pyar

La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina -
Gonzalo García
2018-06-12 14:18:09 UTC
Permalink
Yo usé jsonpath-rw[1] y jsonpath-rw-ext[2] que son muy específicos de JSON, no conozco si puede ser aplicado a todos los objetos en general.

[1] https://pypi.org/project/jsonpath-rw/
[2] https://pypi.org/project/jsonpath-rw-ext/

Saludos!
Gonzalo G.
PGP: 0x3AFF5246
Fingerprint: B74F 7A86 A043 BD30 2022 E855 3F13 238E 3AFF 5246
Post by Martín Gaitán
Buenas.
Estoy buscando alguna una libreria que provea algun DSL para definir filtros sobre estructuras de datos complejas,
Por ejemplo, imaginen una lista de diccionarios
events = [
{
'id': 1,
'system_id': 'XYZ',
'event_type': 'UserLogin',
'user': {
'username': 'messi'
}
}, {
'id': 2,
'system_id': 'XYZ',
'event_type': 'UserLogout',
'user': {
'username': 'messi'
}
}, {
'id': 3,
'system_id': 'FOO',
'event_type': 'UserLogin',
'user': {
'username': 'tin'
}
}
]
Entonces aplicar el filtro
"user.username = saibot and event_type = UserLogout "
sólo deberia matchear el diccionario del medio.
Por ejemplo, esto está muy bien resuelto en django, pero yo necesito algo que aplique sobre diccionarios u objetos cualquiera
https://github.com/ivelum/djangoql <https://github.com/ivelum/djangoql>
Encontré esto, que casi satisface mis requerimiento pero me queda chico, porque no soporta objetos anidados agrupamiento de condiciones.
https://git.ercpe.de/ercpe/phylter/src/branch/master <https://git.ercpe.de/ercpe/phylter/src/branch/master>
conocen algo que me pueda servir?
saludos.
_______________________________________________
Sitio web: http://www.python.org.ar/
Para administrar la lista (o desuscribirse) entrar a http://listas.python.org.ar/listinfo/pyar
La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar
Ramiro Morales
2018-06-12 14:33:07 UTC
Permalink
Post by Martín Gaitán
Buenas.
Estoy buscando alguna una libreria que provea algun DSL para definir
filtros sobre estructuras de datos complejas,
Por ejemplo, imaginen una lista de diccionarios
[...]
¿El schema de las estructuras de datos es [muy] diámico? ¿O se definen una
vez y listo?
--
Ramiro Morales
@ramiromorales
Martín Gaitán
2018-06-12 19:32:55 UTC
Permalink
Post by Ramiro Morales
[...]
¿El schema de las estructuras de datos es [muy] diámico? ¿O se definen una
vez y listo?
No tanto. tengo unos 7 u 8 schemas que cambian muy de vez en cuando.
Loading...