semvec/pypi-packages huggingface dataset:
algoliaqb 0.0.9
Algolia Query Builder
License: MIT
Keywords: search algolia query builder

Algolia Query Builder
=====================

A library to help build queries for searching Algolia.

This package is meant to be used with the `algoliasearch <https://github.com/algolia/algoliasearch-client-python>`_ library.


.. image:: https://badge.fury.io/py/algoliaqb.svg
   :target: https://badge.fury.io/py/algoliaqb
   :alt: PyPI version


Problem:
^^^^^^^^

An app I have been working on has a few points of code duplication and increased complexity. This package is a way for me to fix those issues and increase readability.

Installation
^^^^^^^^^^^^

.. code-block::

   pip install algoliaqb

Filter Strings
^^^^^^^^^^^^^^

By default ``filter_map`` considers all input as strings. This is pretty straight forward. Lets say for example you have the following filter map:

.. code-block::

   filter_map = {
       "group_id": "tenant_id",
   }

with the following ``flask.args``\ :

.. code-block::

   {
       "group_id": 1
   }

AlgoliaQB will look for ``group_id`` within ``flask.args``\ , grab the value, then remap the key and value for you.

.. code-block::

   tenant_id:1

Now lets try an example with a few more filters.

.. code-block::

   filter_map = {
       "group_id": "tenant_id",
       "is_reported": "is_reported"
   }

with the following ``flask.args``\ :

.. code-block::

   {
       "group_id": 1,
       "is_reported": "true
   }

The returned filter_string is as follows.

.. code-block::

   tenant_id:1 AND is_reported:true

Library Usage Example:
^^^^^^^^^^^^^^^^^^^^^^

.. code-block:: python

   from algoliasearch.search_client import SearchClient
   from algoliaqb import AlgoliaQueryBuilder
   from flask import request


   aqb = AlgoliaQueryBuilder(
       search_param="search",
       filter_map={
           "group_id": "tenant_id",
           "is_reported": "is_reported"
       }
   )

   # Extract the search query from our flask apps request.args var.
   search_query = aqb.get_search_query(request.args)
   # Get the filter query from our request args.
   filter_query = aqb.get_filter_query(request.args)

   # Now that we have the filter string, we just pass it into the search function.

   search_client = SearchClient()
   index = search_client.init_index("contacts")
   results = index.search(search_query, {"filters": filter_query})
lahja 0.17.0
Generic event bus for asynchronous cross-process communication
License: MIT
Requires Python: >=3.6, <4
Keywords: eventbus asyncio trio

# Lahja

[![Documentation Status](https://readthedocs.org/projects/lahja/badge/?version=latest)](http://lahja.readthedocs.io/en/latest/?badge=latest)

[Documentation hosted by ReadTheDocs](http://lahja.readthedocs.io/en/latest/)

**DISCLAIMER: This is alpha state software. Expect bugs.**

*Lahja is a generic event bus implementation written in Python 3.6+ that enables lightweight inter-process communication, based on non-blocking asynchronous IO*

## What is this for?

Lahja is tailored around one primary use case: enabling multi process Python applications to communicate via events between processes using non-blocking APIs
based on asyncio or trio.

Key facts:

- non-blocking APIs using asynchronous IO (asyncio / trio)
- lightweight with zero dependencies
- simple to use
- easy multicasting of events (one event, many independent receivers)
- easy event routing (e.g route event X only to certain receivers)
- multiple consuming APIs to adapt to different use cases and styles


## Developer Setup

If you would like to hack on lahja, please check out the [Snake Charmers
Tactical Manual](https://github.com/ethereum/snake-charmers-tactical-manual)
for information on how we do:

- Testing
- Pull Requests
- Code Style
- Documentation

### Development Environment Setup

You can set up your dev environment with:

```sh
git clone https://github.com/ethereum/lahja
cd lahja
virtualenv -p python3 venv
. venv/bin/activate
pip install -e .[dev]
```

### Testing Setup

During development, you might like to have tests run on every file save.

Show flake8 errors on file change:

```sh
# Test flake8
when-changed -v -s -r -1 lahja/ tests/ -c "clear; flake8 lahja tests && echo 'flake8 success' || echo 'error'"
```

Run multi-process tests in one command, but without color:

```sh
# in the project root:
pytest --numprocesses=4 --looponfail --maxfail=1
# the same thing, succinctly:
pytest -n 4 -f --maxfail=1
```

Run in one thread, with color and desktop notifications:

```sh
cd venv
ptw --onfail "notify-send -t 5000 'Test failure ⚠⚠⚠⚠⚠' 'python 3 test on lahja failed'" ../tests ../lahja
```

### Release setup

For Debian-like systems:
```
apt install pandoc
```

To release a new version:

```sh
make release bump=$$VERSION_PART_TO_BUMP$$
```

#### How to bumpversion

The version format for this repo is `{major}.{minor}.{patch}` for stable, and
`{major}.{minor}.{patch}-{stage}.{devnum}` for unstable (`stage` can be alpha or beta).

To issue the next version in line, specify which part to bump,
like `make release bump=minor` or `make release bump=devnum`.

If you are in a beta version, `make release bump=stage` will switch to a stable.

To issue an unstable version when the current version is stable, specify the
new version explicitly, like `make release bump="--new-version 4.0.0-alpha.1 devnum"`