"CQL (Contextual Query Language) Parser"
Project description
CQL (Contextual Query Language) Parser (for Python)
Notice
Prefix parsing and resolution is still work-in-progress! Test cases mostly check out but it definitely needs to be finished before using in real world scenarios.
Requires
- Python 3.8+ (only tested on 3.8.10)
ply(github version) - vendored insrc/cql/_vendor/plypytestfor testing
Building
# see: https://setuptools.pypa.io/en/latest/build_meta.html
python3 -m pip install -q build
python3 -m build
Install
# built package
python3 -m pip install dist/cql_parser-<version>-py2.py3-none-any.whl
# or
python3 -m pip install dist/cql-parser-<version>.tar.gz
# for local development
python3 -m pip install -e .[test]
Usage
Really quick:
import cql
print(cql.parse("dc.title any fish").toXCQLString(pretty=True))
A bit more involved:
import logging
logging.basicConfig(level=logging.DEBUG)
from cql.parser import CQLParser12
# use CQL version 1.2 parser
cqlparser = CQLParser12()
query = cqlparser.run("dc.title any fish")
# do something with the output
print(query.toCQL())
print(query.toXCQLString(pretty=True))
A for a deeper dive, take a look at src/cql/__init__.py or the various test files in tests/.
Development
- Uses
pytest(with coverage, clarity and randomly plugins). - See test files in
tests/folder. The regression test files are a copy fromindexdata/cql-javaand are not included in the built package. The XCQL serialization differs slightly from the only CQL Python 'library' I could find. - As for changing the lexer or parser, see
plydocs.
Run all tests with:
# install test dependencies
python3 -m install -e .[test]
# run
pytest
Run style checks:
python3 -m pip install -e .[style]
black --check .
flake8 . --show-source --statistics
isort --check --diff .
# building the package:
python3 -m pip install -e .[build]
python3 -m build
twine check --strict dist/*
Vendor dependencies:
python3 -m pip install -e .[vendor]
vendoring sync
# NOTE: some changes still not automated ...
git checkout -- src/cql/_vendor/ply/LICENSE
See also
- http://zing.z3950.org/cql
- http://www.loc.gov/standards/sru/cql/index.html
- Other implementations: Java, JavaScript, etc.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cql-parser-1.0.2.tar.gz.
File metadata
- Download URL: cql-parser-1.0.2.tar.gz
- Upload date:
- Size: 48.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c5b827add9f3753baac88450e88cce9fe99e999b7f01dcfb33edf81050a61f37
|
|
| MD5 |
c8552aea7d03eb413f2eb3c81e14fce5
|
|
| BLAKE2b-256 |
906a41d59a65d3411017ee1ad222066b612a1cf755fb03dda8ca7771ea3e6e80
|
File details
Details for the file cql_parser-1.0.2-py2.py3-none-any.whl.
File metadata
- Download URL: cql_parser-1.0.2-py2.py3-none-any.whl
- Upload date:
- Size: 43.6 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
23710186e7f5a4485dcb66ba69aab6f54fa71ff63230218a4d51ae53af75b3c7
|
|
| MD5 |
cf1ad685e44da1d0a4603ed7de4cede3
|
|
| BLAKE2b-256 |
3a46373047b976d06ce5e0cb9de1466ab4358e67769729994caa4cab4ef79094
|