Skip to main content

PyAPSI

Actions Status PyPI PyPI - Python Version License: MIT Code style: black

Python wrapper for labeled and unlabeled asymmetric private set intersection (APSI).

Installation

From PyPI (builds from source)

pip install apsi

This downloads the source distribution and builds APSI + all dependencies locally. The build automatically selects the best CPU optimizations for your machine.

Requirements:

  • C++ compiler (GCC >= 9, Clang >= 10, or MSVC >= 2019)
  • CMake >= 3.13.4
  • Python 3.11–3.14
  • Internet access (vcpkg downloads dependencies during build)

Build time: Approximately 5-15 minutes depending on your machine.

Performance Note

On Linux x86_64, the FourQlib elliptic curve assembly optimizations are disabled because the hand-optimized AVX2 assembly files use non-PIC relocations that are incompatible with Python shared extensions (.so files). The generic C fallback is used instead, which results in approximately 2-3x slower OPRF (Oblivious Pseudorandom Function) operations.

This does not affect the SEAL homomorphic encryption operations, which dominate runtime for typical set intersection sizes. On macOS and Windows, FourQlib uses different optimization paths that are not affected.

For maximum performance on Linux, consider building APSI as a standalone static library outside of Python and using the native CLI tools.

Example

Example usage of the labeled APSI server and client. The unlabeled variant can be used analogous to this.

from apsi import LabeledServer, LabeledClient

apsi_params = """
{
    "table_params": {
        "hash_func_count": 3,
        "table_size": 512,
        "max_items_per_bin": 92
    },
    "item_params": {"felts_per_item": 8},
    "query_params": {
        "ps_low_degree": 0,
        "query_powers": [1, 3, 4, 5, 8, 14, 20, 26, 32, 38, 41, 42, 43, 45, 46]
    },
    "seal_params": {
        "plain_modulus": 40961,
        "poly_modulus_degree": 4096,
        "coeff_modulus_bits": [40, 32, 32]
    }
}
"""

server = LabeledServer()
server.init_db(apsi_params, max_label_length=10)
server.add_items([("item", "1234567890"), ("abc", "123"), ("other", "my label")])

client = LabeledClient(apsi_params)

oprf_request = client.oprf_request(["item", "abc"])
oprf_response = server.handle_oprf_request(oprf_request)
query = client.build_query(oprf_response)
response = server.handle_query(query)
result = client.extract_result(response)

assert result == {"item": "1234567890", "abc": "123"}

To control multi threading and logging in APSI see apsi.utils.

Building & Testing

From Source

pip install -e .
pytest tests/

Building a Source Distribution

pip install build
python -m build --sdist

Metadata

Release files for apsi 0.2.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for apsi 0.2.3
File Size Uploaded
apsi-0.2.3.tar.gz 17.0 kB Details

Release files / apsi-0.2.3.tar.gz

Download URL apsi-0.2.3.tar.gz
Size 17.0 kB
Tags Source
SHA-256 checksum
How to use checksums
4342ecc8f4942556f7d54bf5117b647db51672f608190cad855996ba304a7c0d
BLAKE2b-256 checksum
How to use checksums
c3e279d0573b0ddc455e30be235455caf1c8c283943de9191772ba5a3ac7fbc2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 13, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.3 This release

1 release file

0.2.1

1 release file

0.2.0

1 release file

0.1.2

3 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page