Python RQL Filtering
Project description
Python RQL
RQL
RQL (Resource query language) is designed for modern application development. It is built for the web, ready for NoSQL, and highly extensible with simple syntax. This is a query language fast and convenient database interaction. RQL was designed for use in URLs to request object-style data structures.
Notes
Parsing is done with Lark (cheatsheet). The current parsing algorithm is LALR(1) with standard lexer.
Supported operators
- Comparison (eq, ne, gt, ge, lt, le, like, ilike, search)
- List (in, out)
- Logical (and, or, not)
- Constants (null(), empty())
- Ordering (ordering)
- Select (select)
- Tuple (t)
Example
from py_rql import parse
from py_rql.exceptions import RQLFilterError
try:
tree = parse('eq(key,value)')
except RQLFilterError:
pass
Notes
- Values with whitespaces or special characters, like ',' need to have "" or ''
- Supported date format is ISO8601: 2019-02-12
- Supported datetime format is ISO8601: 2019-02-12T10:02:00 / 2019-02-12T10:02Z / 2019-02-12T10:02:00+03:00
Development
- Python 3.6+
- Install dependencies
requirements/dev.txt
Testing
- Python 3.6+
- Install dependencies
requirements/test.txt
Check code style: flake8
Run tests: pytest
Tests reports are generated in tests/reports
.
out.xml
- JUnit test resultscoverage.xml
- Coverage xml results
To generate HTML coverage reports use:
--cov-report html:tests/reports/cov_html
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
lib-rql-1.0.0.tar.gz
(13.3 kB
view hashes)
Built Distribution
lib_rql-1.0.0-py3-none-any.whl
(17.1 kB
view hashes)