A parser for Logical Query Protocol (LQP) S-expressions into Protobuf
Project description
python-tools
A command-line tool to parse Logical Query Protocol (LQP) S-expressions into Protobuf binary and JSON formats.
Usage
usage: lqp [-h] [--bin BIN] [--json JSON] input_directory
Parse LQP S-expression into Protobuf binary and JSON files.
positional arguments:
input_directory path to the input LQP S-expression files
options:
-h, --help show this help message and exit
--bin BIN output directory for the binary encoded protobuf
--json JSON output directory for the JSON encoded protobuf
Build
Install preprequisites:
pip install pip build setuptools wheel
Then build the module itself:
python -m build
Install locally:
pip install [--user] [--force-reinstall] dist/lqp-0.1.0-py3-none-any.whl
Running tests
Within python-tools,
Setup:
python -m pip install -e ".[test]"
python -m pip install pyrefly
Running tests:
python -m pytest
To add testcases, add a .lqp file to the tests/test_files/lqp_input subdirectory. New
files get picked up automatically. To generate or update the corresponding output files
(binary, debug mode, and pretty-printing snapshots), run pytest with the
--snapshot-update flag.
Type checking:
pyrefly check
Formatting
The LQP S-expression syntax was chosen to align with that of the Clojure programming language, in order to leverage the existing tools in that ecosystem. LQP syntax should be formatted via cljfmt with the following configuration:
;; .cljfmt.edn
{:indents {#re ".*" [[:inner 0]]}
:remove-surrounding-whitespace? false
:remove-trailing-whitespace? false
:remove-consecutive-blank-lines? false}
This configuration is explained here and simply works better for LQP, which does not have many of the Clojure keywords that are treated as special cases during formatting by default.
See the next section for an easy way to integrate cljfmt into your VSCode workflow.
VSCode
Editing nested S-expressions by hand can get a little tedious, which is why
paredit is an established tool in the Clojure world. To
integrate paredit and cljfmt into your VSCode workflow, just install the Calva
extension and follow the configuration
guide to use the cljfmt configuration pasted
in the previous section.
Out-of-the-box, Calva also runs a Clojure linter, which of course does not know what to do
with LQP, resulting in lots of squiggly lines. For that reason, it is also advisable to
create the following config file at .lsp/config.edn from the project root:
;; .lsp/config.edn
{:linters {:clj-kondo {:level :off}}}
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 lqp-0.1.14.tar.gz.
File metadata
- Download URL: lqp-0.1.14.tar.gz
- Upload date:
- Size: 37.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
937439af817a2a6387d578fd4afea8eaffff9ae59ba6b0ffedd89dc61de0afef
|
|
| MD5 |
3b0d7ffa09b218ce0410d19db0241d31
|
|
| BLAKE2b-256 |
77e6b11bb301645dee0f7242038029963f712cf4f6cb405e7969160877010eba
|
File details
Details for the file lqp-0.1.14-py3-none-any.whl.
File metadata
- Download URL: lqp-0.1.14-py3-none-any.whl
- Upload date:
- Size: 36.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2c0af319b5758a16dd6ad97bd6d0b0c17e89beb53efa46cdcb1fcce84dae8114
|
|
| MD5 |
bb9d9e59bbe0e60a398450e8e253bfad
|
|
| BLAKE2b-256 |
3278567d2938f7786f2248cfef404c89731f1f39948fba47f0584ba969caa1f7
|