8f73db1a191bb25cc46a0fac32a0aa27232bd7b1
Due to the incorrect condition it code that limits iterators even collections with known limit (lists etc.) were converted to limiting iterators when there was no upper length limit. As a result when join() method was called without iterator limitation being configured (for example through yaql.eval) it received its collection arguments as iterators. Because iterators cannot be reset and re-read again iterator for the inner iterator became exhausted after the first item of the outer collection. join() method was fixed to work correctly to memorize inner iterator so that it could be re-read Change-Id: I287d0d86b5461490ff32731c11a726174939753d
YAQL: Yet Another Query Language
YAQL (Yet Another Query Language) is an embeddable and extensible query language, that allows performing complex queries against arbitrary objects. It has a vast and comprehensive standard library of frequently used querying functions and can be extend even further with user-specified functions. YAQL is written in python and is distributed via PyPI.
Quickstart
Install the latest version of yaql:
pip install yaql>=1.0.0
Run yaql REPL:
yaql
Load a json file:
yaql> @load my_file.json
Check it loaded to current context, i.e. `$`:
yaql> $
Run some queries:
yaql> $.customers
...
yaql> $.customers.orders
...
yaql> $.customers.where($.age > 18)
...
yaql> $.customers.groupBy($.sex)
...
yaql> $.customers.where($.orders.len() >= 1 or name = "John")
Project Resources
- Official Documentation
- Project status, bugs, and blueprints are tracked on Launchpad
License
Apache License Version 2.0 http://www.apache.org/licenses/LICENSE-2.0
Description