Skip to main content

Module to create composable predicates

Project description

Documentation Test codecov

Introduction

py-predicate is a typed Python library to create composable predicates.

Getting started

To get started, install the library with pip

pip install py-predicate

The full documentation can be found here. We give 2 small examples to show what the library can do.

Example 1

filtered = [x for x in range(10) if x >= 2 and x <= 3]

Version with predicates:

from predicate import ge_p, le_p

ge_2 = ge_p(2)
le_3 = le_p(3)

between_2_and_3 = ge_2 & le_3
filtered = [x for x in range(10) if between_2_and_3(x)]

Of course this example looks way more complicated than the original version. The point here is that you can build reusable predicates that can be used in multiple locations.

Example 2

A unique (?) py-predicate feature is that you can define self referencing predicates. This makes it easy to apply predicates to arbitrarily nested structures, like JSON data.

In the next example we define a predicate, that tests if a given data structure is either a string, or a list of data that can again either be a string or a list of data. Ad infinitum.

from predicate import all_p, is_list_p, is_str_p, lazy_p

str_or_list_of_str = is_str_p | (is_list_p & all_p(lazy_p("str_or_list_of_str")))

Using plain Python, the above one-liner would have to be coded as a (recursive) function.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

py_predicate-0.4.tar.gz (19.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

py_predicate-0.4-py3-none-any.whl (29.8 kB view details)

Uploaded Python 3

File details

Details for the file py_predicate-0.4.tar.gz.

File metadata

  • Download URL: py_predicate-0.4.tar.gz
  • Upload date:
  • Size: 19.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.13.0

File hashes

Hashes for py_predicate-0.4.tar.gz
Algorithm Hash digest
SHA256 92f67ff4bf245f061a6e26c3abbca5a2a2f3839f97a5afd34df14bac1d1670ab
MD5 008e4b8b5a1523458dc597e9ba5c3b76
BLAKE2b-256 ec334e61df61e3fcfe331ebc7689af1f38b88718ec38339082061de08c79382c

See more details on using hashes here.

File details

Details for the file py_predicate-0.4-py3-none-any.whl.

File metadata

  • Download URL: py_predicate-0.4-py3-none-any.whl
  • Upload date:
  • Size: 29.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.13.0

File hashes

Hashes for py_predicate-0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 f91d14b6fef52901609850f3e941073c0737bfcd5712457070b4917a9f7acd83
MD5 a76480c73f2917db38980eb0b3927591
BLAKE2b-256 b8d59de683b596fbcc354f9d08686dd72e467e9c2a23b3d47429dd317dab231b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page