Skip to main content

Apply a given function to all combinations of elements from multiple iterables

Project description

crosszip

PyPI version Python versions PyPI Downloads

crosszip is a Python utility that makes it easy to apply a function to all possible combinations of elements from multiple iterables. It combines the power of the Cartesian product and functional programming into a single, intuitive tool.

Additionally, @pytest.mark.crosszip_parametrize is a pytest marker that simplifies running tests with all possible combinations of parameter values.

Installation

Package Manager Installation Command
pip pip install crosszip
uv uv add crosszip

Usage

Example of using crosszip:

# Label Generation for Machine Learning

from crosszip import crosszip


def create_label(category, subcategory, version):
    return f"{category}_{subcategory}_v{version}"


categories = ["cat", "dog"]
subcategories = ["small", "large"]
versions = ["1.0", "2.0"]

labels = crosszip(create_label, categories, subcategories, versions)
print(labels)
['cat_small_v1.0', 'cat_small_v2.0', 'cat_large_v1.0', 'cat_large_v2.0', 'dog_small_v1.0', 'dog_small_v2.0', 'dog_large_v1.0', 'dog_large_v2.0']

Example of using pytest marker crosszip_parametrize:

# Testing Power Function

import math
import crosszip
import pytest


@pytest.mark.crosszip_parametrize(
    "base",
    [2, 10],
    "exponent",
    [-1, 0, 1],
)
def test_power_function(base, exponent):
    result = math.pow(base, exponent)
    assert result == base**exponent

print("Tests executed successfully.")
Tests executed successfully.

For more examples, check out the package documentation at: https://indrajeetpatil.github.io/crosszip/

Key Features

  • Flexible Input: Works with any iterables, including lists, tuples, sets, and generators.
  • pytest Plugin: Provides a crosszip_parametrize marker for running tests with all possible combinations of parameter values.
  • Simple API: Minimalist, intuitive design for quick integration into your projects.

License

This project is licensed under the MIT License.

Acknowledgements

Hex sticker font is Rubik, and the image is taken from icon made by Freepik and available at flaticon.com.

Executable code snippets use JavaScript code from Samuel Colvin of Pydantic.

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

crosszip-1.3.0.tar.gz (389.8 kB view details)

Uploaded Source

Built Distribution

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

crosszip-1.3.0-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

Details for the file crosszip-1.3.0.tar.gz.

File metadata

  • Download URL: crosszip-1.3.0.tar.gz
  • Upload date:
  • Size: 389.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for crosszip-1.3.0.tar.gz
Algorithm Hash digest
SHA256 0fe21d4776116c64eac9743f2234c2456305c585d440f30ab044618c70c351c5
MD5 470fed63b8ade7d2e64fb6bbad0637ef
BLAKE2b-256 2335ee73df7509b8ec27b1ac6dbf3b9e48009b2c49e96dca04938b9b2c6711ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for crosszip-1.3.0.tar.gz:

Publisher: release.yml on IndrajeetPatil/crosszip

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file crosszip-1.3.0-py3-none-any.whl.

File metadata

  • Download URL: crosszip-1.3.0-py3-none-any.whl
  • Upload date:
  • Size: 7.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for crosszip-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 864e95e47bb353592294abafc7e30b20b93fe76711550e77f8bceb4bc52f578e
MD5 628962b27a97604b1d6007aa338ac2a2
BLAKE2b-256 197196fe5b8b8bcba9effbddef72d63ccc87f780936bde30fa2a73dac5440964

See more details on using hashes here.

Provenance

The following attestation bundles were made for crosszip-1.3.0-py3-none-any.whl:

Publisher: release.yml on IndrajeetPatil/crosszip

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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