Metadata-Version: 2.4
Name: garf-core
Version: 0.1.4.post0
Summary: Abstracts fetching data from API based on provided SQL-like query.
Author-email: "Google Inc. (gTech gPS CSE team)" <no-reply@google.com>, Andrei Markin <andrey.markin.ppc@gmail.com>
License: Apache 2.0
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Operating System :: OS Independent
Classifier: License :: OSI Approved :: Apache Software License
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: python-dateutil
Requires-Dist: jinja2
Requires-Dist: typing-extensions
Requires-Dist: requests
Requires-Dist: pyyaml
Requires-Dist: pydantic
Provides-Extra: pandas
Requires-Dist: pandas; extra == "pandas"
Provides-Extra: polars
Requires-Dist: polars; extra == "polars"
Provides-Extra: all
Requires-Dist: garf-core[pandas,polars]; extra == "all"

# garf-core - Unified approach for interacting with reporting APIs.

[![PyPI](https://img.shields.io/pypi/v/garf-core?logo=pypi&logoColor=white&style=flat-square)](https://pypi.org/project/garf-core)
[![Downloads PyPI](https://img.shields.io/pypi/dw/garf-core?logo=pypi)](https://pypi.org/project/garf-core/)


`garf-core` contains the base abstractions are used by an implementation for a concrete reporting API.

These abstractions are designed to be as modular and simple as possible:

* `BaseApiClient` - an interface for connecting to APIs. Check [default implementations](docs/builtin-functionality.md#apiclients)
* `BaseParser` - an interface to parse results from the API. Check [default implementations](docs/builtin-functionality.md#parsers)
* `ApiReportFetcher` - responsible for fetching and parsing data from reporting API. [Default implementations](docs/builtin-functionality.md#apireportfetchers)

* `QuerySpecification` - parsed SQL-query into various elements.
* `BaseQuery` - protocol for all class based queries.
* `GarfReport` - contains data from API in a format that is easy to write and interact with.

## Installation

`pip install garf-core`
