Metadata-Version: 2.4
Name: ransacklib
Version: 1.1.0.dev7
Summary: A modern, extensible language for manipulation with structured data
Author-email: "Rajmund H. Hruška" <rajmund.hruska@cesnet.cz>
License-Expression: MIT
Project-URL: Repository, https://gitlab.cesnet.cz/713/mentat/ransack
Project-URL: Documentation, https://ransack-125e0a.gitlab-pages.cesnet.cz/index.html
Project-URL: Issues, https://gitlab.cesnet.cz/713/mentat/ransack/-/issues
Project-URL: Changelog, https://gitlab.cesnet.cz/713/mentat/ransack/-/blob/master/CHANGELOG.md
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Requires-Python: >=3.10
Description-Content-Type: text/x-rst
License-File: LICENSE
Requires-Dist: lark<1.4.0,>=1.3.0
Requires-Dist: ipranges<0.2,>=0.1.12
Provides-Extra: dev
Requires-Dist: pytest<9.0,>=8.4; extra == "dev"
Requires-Dist: pytest-cov<8.0,>=7.0; extra == "dev"
Requires-Dist: sphinx<8.2,>=8.1; extra == "dev"
Requires-Dist: sphinx_rtd_theme<4.0,>=3.0; extra == "dev"
Requires-Dist: mypy<2.0,>=1.18; extra == "dev"
Requires-Dist: ruff<0.15,>=0.14; extra == "dev"
Requires-Dist: build<1.4,>=1.3; extra == "dev"
Requires-Dist: twine<7.0,>=6.2; extra == "dev"
Dynamic: license-file

Welcome to ransack
==================

**ransack** is a modern, extensible language for manipulation with structured data.

Structured data --- like `JSON <https://json.org>`_, `YAML <https://yaml.org/>`_, `TOML <https://toml.io/>`_ and domain-specific formats such as `IDEA <https://idea.cesnet.cz>`_ --- form the backbone of many modern applications. These formats appear in configuration files, security logs, telemetry systems, and beyond.

**ransack** was designed to meet the increasing need for a robust and expressive language to query, filter, and inspect structured data. Whether used in Python code, as part of a log analysis tool, or as a compiler frontend for other systems, **ransack** provides a flexible foundation.

Why ransack?
------------

ransack is a new implementation and improvement over existing libraries like *Pynspect*, which was widely used in security monitoring systems like `NEMEA <https://nemea.liberouter.org/>`_ and `Mentat <https://mentat.cesnet.cz>`_. Compared to older tools, ransack:

- supports **user-defined variables**
- enables **multi-argument functions**
- is **extensible** and **modular**
- supports **multiple backends** (e.g., Python evaluation, SQL translation)
- offers a clean internal architecture for future enhancements

Key features
------------

- a simple and expressive syntax for filters and conditions
- support for context-aware variables and data scoping
- predefined functions
- support for IPv4/IPv6, datetimes, string and list manipulation
- safe and maintainable implementation using `Lark <https://lark-parser.readthedocs.io/en/stable/>`_ for parsing

