odata-query
An OData query parser and transpiler.
Decision gist · record as of 2026-08-14
Yes, if you need OData v4 filter parsing for Django or SQLAlchemy and can tolerate dormant maintenance. The package is stable and has no known vulnerabilities, with low install friction. However, verify compatibility with your specific ORM versions before relying on it in production, since the last release was 777 days ago and no updates are forthcoming.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Python 3.7–3.12; optional extras (django, sqlalchemy) must be installed separately if you want ORM integration.
- Low friction: pure Python wheel with only two runtime dependencies (python-dateutil and sly).
- Maintenance is dormant—last release was 777 days ago—so expect no active bug fixes or feature updates, though the package is marked Production/Stable.
License · maintenance · safety
MIT (permissive) — MIT license (permissive) means you can use this freely in commercial and open-source projects with minimal restrictions, provided you include the license notice.
last release 2024-06-28 (777 days)
0 known vulnerabilities (OSV.dev, 2026-08-14) · 161,453 downloads/mo, #10,632 on PyPI
Alternatives
Verify before relying
pip install odata-query
from odata_query.django import apply_odata_query
query = apply_odata_query(MyModel.objects, "name eq 'test'")
results = query.all()- Whether dormant status (777 days since last release) affects compatibility with recent Django/SQLAlchemy versions.
- Whether the modular/extensible architecture mentioned in docs supports custom ORM backends beyond Django and SQLAlchemy.
- Real-world performance and feature completeness for complex OData filter expressions.
What it is and what it does
odata-query is a parser and transpiler for OData v4 filter strings—the standardized query format used in REST APIs. It reads an OData filter expression and converts it into native query objects for your ORM or database layer. The package supports Django QuerySets, SQLAlchemy ORM queries, and SQLAlchemy Core, making it useful when you need to expose OData-compliant filtering to API clients without writing custom query translation logic.
The library depends on python-dateutil for date handling and sly for parsing. It's marked Production/Stable and supports Python 3.7 through 3.12, but has been dormant for over two years—no active maintenance or updates. Installation is straightforward with optional extras for Django and SQLAlchemy integration.
Use it for
- Build a REST API that accepts OData filter strings and translates them to Django ORM queries without manual parsing.
- Convert OData queries to SQLAlchemy expressions in a data service layer.
- Parse OData filters to raw SQL for direct database queries in non-ORM scenarios.
- Expose standardized query syntax to API clients while keeping backend query logic decoupled.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you need OData v4 filter parsing for Django or SQLAlchemy and can tolerate dormant maintenance.
The package is stable and has no known vulnerabilities, with low install friction. However, verify compatibility with your specific ORM versions before relying on it in production, since the last release was 777 days ago and no updates are forthcoming.
Install
odata-query on PyPI
Before you install
Low friction: pure Python wheel with only two runtime dependencies (python-dateutil and sly). Maintenance is dormant—last release was 777 days ago—so expect no active bug fixes or feature updates, though the package is marked Production/Stable.
Requires Python 3.7–3.12; optional extras (django, sqlalchemy) must be installed separately if you want ORM integration.
License in practice
MIT license (permissive) means you can use this freely in commercial and open-source projects with minimal restrictions, provided you include the license notice.
Quickstart
pip install odata-query
from odata_query.django import apply_odata_query
query = apply_odata_query(MyModel.objects, "name eq 'test'")
results = query.all()
Verify before relying
- Whether dormant status (777 days since last release) affects compatibility with recent Django/SQLAlchemy versions.
- Whether the modular/extensible architecture mentioned in docs supports custom ORM backends beyond Django and SQLAlchemy.
- Real-world performance and feature completeness for complex OData filter expressions.
Package facts
| License | MIT permissive |
| Python support | Supports the current Python release <4.0,>=3.7 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 2 packagespython-dateutilsly |
| Maintenance | Dormant 777 days since the last release |
| First released | |
| Downloads | 161,453 / month, #10,632 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 5 - Production/StableEnvironment :: Web EnvironmentFramework :: DjangoIntended Audience :: DevelopersLicense :: OSI Approved :: MIT LicenseOperating System :: OS IndependentProgramming Language :: Python :: 3Programming Language :: Python :: 3 :: OnlyProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.7Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9Programming Language :: SQLTopic :: DatabaseTopic :: Internet :: WWW/HTTPTopic :: Internet :: WWW/HTTP :: Indexing/SearchTopic :: Software Development :: Compilers |
Evidence: odata_query-0.10.0-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “odata filter parser”
- odata-queryParses OData v4 filter strings and transpiles them to Django…
- pyodatapyodata is a Python client library that abstracts away OData protocol…
- python-bcbStructured Python interface to fetch Brazilian Central Bank open data…
Give your agent the search over MCP, or paste the wish link into any chat.
More WWW/HTTP packages
urllib3 is an HTTP client library that provides thread-safe connection pooling, SSL/TLS verification, multipart file uploads, request retries, compression support, and proxy handling for Python applications.
Requests is a Python HTTP library that simplifies sending HTTP/1.1 requests with automatic handling of headers, authentication, cookies, and response parsing.
h11 is a pure-Python HTTP/1.1 protocol implementation that handles parsing and serializing HTTP messages without any built-in I/O, letting you integrate it with any network layer you choose.
HTTPX is a fully featured HTTP client library for Python that provides both sync and async APIs, with support for HTTP/1.1 and HTTP/2, plus an integrated command-line client.
Install it if you are building new projects or modernizing existing ones that rely on HTTP.
A minimal low-level HTTP client library that sends HTTP requests with thread-safe and task-safe connection pooling, supporting HTTP/1.1, HTTP/2, proxies, and both sync and async interfaces.
aiohttp is an async HTTP client and server framework built on asyncio, supporting both WebSockets and middleware-based routing for building concurrent web applications.
Install it if you need async HTTP client or server capabilities in asyncio-based applications.
See also pyodata · sqlalchemy-mixins · scim2-filter-parser · fastapi-filter · djongo · sqlalchemy-filters · sqlalchemy-solr · django-query-builder · teradatasqlalchemy · django-cte