--- id: yaql version: "3.2.0" license: Apache-2.0 license_treatment: permissive maintenance: aging --- # yaql — YAQL - Yet Another Query Language License: permissive · Maintenance: aging · Downloads: 317.0K/mo ## What it is and what it does YAQL is a query language embedded in Python that lets you write SQL-like expressions to filter, transform, and analyze data structures. You write queries as strings (e.g., `$.customers.where($.age > 18)`) and evaluate them against Python objects, JSON, or other data; the language includes a standard library of functions for grouping, filtering, and aggregation. It's designed to be extended with custom functions, making it useful when you need a safe, user-facing query interface without building a full DSL. The package includes a REPL for interactive exploration and can load JSON files directly. It depends on pbr for build metadata and python-dateutil for date handling. The project is aging (last release 309 days ago) but supports modern Python versions through 3.13 and has no known security vulnerabilities. Use it for: - Build a user-facing query interface for a web app where users filter records without writing Python code. - Query and transform JSON data loaded from files or APIs using a familiar SQL-like syntax. - Implement dynamic filtering and aggregation in configuration or policy engines that need to evaluate expressions safely. - Prototype data analysis workflows interactively in the YAQL REPL before moving to production code. - Extend OpenStack tools or other projects that already use YAQL for consistent query semantics. ## Worth the install? AI-flagged interpretation of the facts above — verify before relying. YAQL is an embeddable query language for Python that lets you run complex queries against arbitrary objects using a SQL-like syntax with a standard library of query functions. Yes, if you need a safe, embeddable query language for end-user filtering or data exploration. The low install friction, permissive license, and lack of security issues make it a solid choice. The aging maintenance status is a minor concern—suitable for stable, non-critical use cases; less ideal if you need active development or rapid bug fixes. ## Install pip install yaql uv add yaql poetry add yaql ## Installing yaql Before you install: Low friction to install. The package is aging (309 days since last release) but maintains support for current Python versions (3.10–3.13) and depends only on pbr and python-dateutil. License in practice: Apache-2.0 is permissive; you can use this package freely in commercial and private projects with minimal restrictions, provided you include a copy of the license. Quickstart: pip install yaql import yaql engine = yaql.create_engine() context = yaql.create_context() expression = engine('$.customers.where($.age > 18)') result = expression.evaluate(context=context, $=data) Requires Python 3.10 or later. Verify before relying: - Whether the REPL and @load directive work as shown in the quickstart without additional setup. - Current maintenance status and whether the OpenStack project is actively developing YAQL or in maintenance-only mode. - Performance characteristics and scalability limits for large datasets or deeply nested queries. ## Package facts - License: Apache-2.0 (permissive) - Python support: supports_current - Install friction: low - Maintenance: aging - Downloads: 317.0K/month (top 15,000 on PyPI) - Known vulnerabilities: none known ## Tags query language for python objects, embedded query engine, json data querying, object query language, yaql query syntax, python query dsl, data filtering and transformation, query-language, data-filtering, dsl [View on SkillFed](https://skillfed.io/packages/yaql) · [View on PyPI](https://pypi.org/project/yaql/)