Skip to main content

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

Project description

crosszip

PyPI Version License: MIT

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 pip install 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)
# Output: ['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

@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

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.

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-0.2.0.tar.gz (405.9 kB view details)

Uploaded Source

Built Distribution

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

crosszip-0.2.0-py3-none-any.whl (6.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: crosszip-0.2.0.tar.gz
  • Upload date:
  • Size: 405.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for crosszip-0.2.0.tar.gz
Algorithm Hash digest
SHA256 5a833b8bee52930143a3a3777db000f24e0a8d471dc861e7ac9056ea88e27113
MD5 0f6577d3cfc4fce7b8dac17ebc22f4ce
BLAKE2b-256 24256934aa8761a86b5984cc14a91a1819fc341073d997637bd56b668013116e

See more details on using hashes here.

Provenance

The following attestation bundles were made for crosszip-0.2.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-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: crosszip-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 6.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for crosszip-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 213802924d7dd7577e999c29f965bffcf00d74333380056f6f289f60dce91ad2
MD5 ac4e30731ee1c04484714df6fa1a4dfc
BLAKE2b-256 25bd223f5924481f82c5a36eec3af077d43fe22b11500b08b6fba7430fde1526

See more details on using hashes here.

Provenance

The following attestation bundles were made for crosszip-0.2.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