Metadata-Version: 2.4
Name: querysource
Version: 4.1.1
Summary: Aiohttp web service for querying several databases easily
Author-email: Jesus Lara <jesuslarag@gmail.com>
License: BSD-3-Clause
Project-URL: Homepage, https://github.com/phenobarbital/querysource/
Project-URL: Source, https://github.com/phenobarbital/querysource/
Project-URL: Tracker, https://github.com/phenobarbital/querysource/issues
Project-URL: Documentation, https://querysource.readthedocs.io/en/latest/
Project-URL: Funding, https://paypal.me/phenobarbital
Project-URL: Say Thanks!, https://saythanks.io/to/phenobarbital
Keywords: querysource,database,query,aiohttp,web service
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Software Development :: Build Tools
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: License :: OSI Approved :: BSD License
Classifier: Framework :: AsyncIO
Classifier: Environment :: Web Environment
Classifier: Operating System :: OS Independent
Classifier: Typing :: Typed
Requires-Python: >=3.10.1
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: LivePopularTimes==1.3
Requires-Dist: hubspot-api-client==10.0.0
Requires-Dist: httpx[http2]>=0.26.0
Requires-Dist: h2>=4.2.0
Requires-Dist: oauth2client>=4.1.3
Requires-Dist: google-analytics-data>=0.18.15
Requires-Dist: google-api-python-client>=2.151.0
Requires-Dist: google-auth-oauthlib==1.2.1
Requires-Dist: sqloxide==0.1.39
Requires-Dist: aiocsv>=1.3.2
Requires-Dist: lxml>=5.3.0
Requires-Dist: xlsxwriter==3.2.0
Requires-Dist: odswriter==0.4.0
Requires-Dist: odfpy==1.4.1
Requires-Dist: xlrd==2.0.1
Requires-Dist: reportlab==4.1.0
Requires-Dist: APScheduler<3.12.0,>=3.11.0
Requires-Dist: bs4==0.0.2
Requires-Dist: simple_salesforce==1.12.3
Requires-Dist: psycopg2-binary>=2.9.10
Requires-Dist: sqlalchemy>=2.0.23
Requires-Dist: selenium>=4.28.1
Requires-Dist: snapshot-selenium>=0.0.2
Requires-Dist: webdriver-manager>=4.0.2
Requires-Dist: playwright==1.52.0
Requires-Dist: proxylists>=0.14.0
Requires-Dist: async-notify[all]>=1.4.0
Requires-Dist: navconfig[default,uvloop]>=1.7.13
Requires-Dist: navigator-api[locale,uvloop]>=2.12.22
Requires-Dist: jsonschema>=4.22.0
Requires-Dist: backoff==2.2.1
Requires-Dist: simplejson==3.20.1
Requires-Dist: jinja2-iso8601==1.0.0
Requires-Dist: jinja2-time==0.2.0
Requires-Dist: jinja2-humanize-extension==0.4.0
Requires-Dist: statsmodels==0.14.2
Requires-Dist: pmdarima==2.0.4
Requires-Dist: scikit-learn==1.5.1
Requires-Dist: pygal==3.0.5
Requires-Dist: pandas_bokeh==0.5.5
Requires-Dist: plotly==5.22.0
Requires-Dist: seaborn==0.13.2
Requires-Dist: matplotlib==3.10.0
Requires-Dist: prompt_toolkit==3.0.47
Requires-Dist: folium>=0.20.0
Requires-Dist: geopandas==1.1.2
Requires-Dist: geographiclib==2.0
Requires-Dist: geopy==2.4.1
Requires-Dist: polars==1.27.1
Requires-Dist: contextily==1.6.2
Requires-Dist: jenkspy==0.4.1
Requires-Dist: timezonefinder==6.5.5
Requires-Dist: ipyleaflet==0.19.2
Requires-Dist: rapidfuzz==3.11.0
Requires-Dist: nltk>=3.9.3
Requires-Dist: wordcloud==1.9.4
Requires-Dist: thefuzz==0.22.1
Requires-Dist: modin==0.32.0
Requires-Dist: WeasyPrint>=65.0
Requires-Dist: groq>=0.30.0
Requires-Dist: alphashape==1.3.1
Requires-Dist: hdbscan==0.8.40
Requires-Dist: altair==5.5.0
Requires-Dist: tqdm<=4.67.1,>=4.65.0
Requires-Dist: phonenumbers==9.0.9
Requires-Dist: navigator-auth>=0.15.8
Requires-Dist: ai-parrot[llms]>=0.17.4
Provides-Extra: analytics
Requires-Dist: pygwalker>=0.4.8.9; extra == "analytics"
Requires-Dist: numpy<2.4,>=2.0.0; extra == "analytics"
Requires-Dist: numba>=0.57.0; extra == "analytics"
Requires-Dist: sweetviz>=2.3.1; extra == "analytics"
Requires-Dist: pandas-eda>=1.2.0; extra == "analytics"
Requires-Dist: pydqc>=0.1.0; extra == "analytics"
Requires-Dist: prophet>=1.1.5; extra == "analytics"
Requires-Dist: dtale>=3.13.1; extra == "analytics"
Requires-Dist: lux-api>=0.5.1; extra == "analytics"
Requires-Dist: autoviz>=0.1.905; extra == "analytics"
Requires-Dist: spacy>=3.8.6; extra == "analytics"
Provides-Extra: vectors
Requires-Dist: gensim>=4.4.0; extra == "vectors"
Provides-Extra: dev
Requires-Dist: pytest>=5.4.0; extra == "dev"
Requires-Dist: coverage; extra == "dev"
Requires-Dist: pytest-asyncio==1.3.0; extra == "dev"
Requires-Dist: pytest-xdist==3.3.1; extra == "dev"
Requires-Dist: pytest-assume==2.4.3; extra == "dev"
Dynamic: license-file

# QuerySource #

QuerySource is a powerful Python library designed to streamline access to multiple databases and external APIs through a single, unified interface. Utilizing the proxy design pattern, QuerySource allows developers to seamlessly integrate various data sources into their projects without worrying about the complexities of managing multiple connections.

## Features ##

* Unified interface for querying multiple databases (Redis, PostgreSQL, MySQL, Oracle, SQL Server, InfluxDB, CouchDB, Druid)
* Support for external APIs (Salesforce, ShopperTrack, ZipCodeAPI, etc.)
* Easy-to-use API for executing queries
* Extensible design, allowing for easy addition of new data sources

## Installation

<div class="termy">

```console
$ pip install querysource
---> 100%
Successfully installed querysource
```


### Requirements ###

* Python >= 3.9
* asyncio (https://pypi.python.org/pypi/asyncio/)

## Basic Usage ##

QuerySource can be used in several ways, one is using QS object itself:

```python
from querysource.queries.qs import QS

query = QS(
    query='SELECT * FROM tests',
    output_format='pandas'
)
result, error = await query.query()
```

## Extending QuerySource ##

To add support for a new data source, create a new class inheriting from the BaseProvider or BaseAPI class and implement the required methods (prepare_connection, query, close). Then, register the new data source in the QuerySource class by adding it to the appropriate dictionary (_supported_databases or _supported_apis).


### Contributing ###

We welcome contributions to QuerySource! If you'd like to contribute, please follow these steps:

* Fork the repository
* Create a new branch for your feature or bugfix
* Implement your changes
* Add tests covering your changes
* Create a pull request against the original repository

### Contribution guidelines ###

* Writing tests
* Code review
* Other guidelines

### License ###

QuerySource is released under the BSD License. See the LICENSE file for more details.
