Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

compehndly (Python)

Architecture (Polars-First)

This package now follows a two-layer execution model for derived variables:

  1. compehndly.polars.kernels
  • Polars-native series kernels for external map_batches usage.
  • Contract: kernel(*series: pl.Series, **params) -> pl.Series
  1. compehndly.polars.adapters
  • Frame adapters that apply kernels to:
    • polars.DataFrame (eager kernel path)
    • polars.LazyFrame (expression path)

Public Entry Points

External integrations (already have a lazy orchestrator like apply_map):

from compehndly import get_map_fn

map_fn = get_map_fn("summation", all_required=True)

For config/YAML path-based loading, use stable wrappers in compehndly.entrypoints:

map_fn: compehndly.entrypoints.summation
# or
map_fn: compehndly.entrypoints.normalize_specific_gravity

Direct usage (you want this package to add a derived column):

from compehndly import with_derived_column

out = with_derived_column(
    frame=df_or_lf,
    function_name="summation",
    input_columns=["a", "b"],
    output_column="sum_col",
    all_required=True,
)

# For non-commutative functions use a named mapping
out = with_derived_column(
    frame=df_or_lf,
    function_name="normalize_specific_gravity",
    input_columns={"measured": "measurement_col", "sg_measured": "sg_col"},
    output_column="normalized",
    sg_ref=1.024,
)

Discover available functions:

from compehndly import list_functions

print(list_functions())

Direct series/expression application:

from compehndly import apply

out_series = apply("summation", df["a"], df["b"], all_required=False)
out_expr = apply("summation", pl.col("a"), pl.col("b"), all_required=False)

# Named data kwargs are supported
out_named = apply(
    "normalize_specific_gravity",
    measured=df["measured"],
    sg_measured=df["sg_measured"],
    sg_ref=1.024,
)

# Flexible kwargs-only fallback order
out_coalesced = apply(
    "coalesce_by_priority",
    primary=df["primary"],
    secondary=df["secondary"],
    fallback=df["fallback"],
    priority=("primary", "secondary", "fallback"),
)

Current Scope

The pattern is applied to:

  • derived_variables.summation
  • derived_variables.correction
  • derived_variables.imputation

Cross-Language Conformance

Shared test vectors live in:

  • shared/conformance/derived_variables_cases.json

Python and R should both execute this same file to verify parity. The Python runner is in:

  • python/tests/test_conformance_shared_vectors.py

Contributor Workflow (Two Steps)

Add one module in compehndly.derived_variables and do only:

  1. Implement one kernel:
  • def my_kernel(*series: pl.Series, scalar_a: float, ...) -> pl.Series
  1. Implement one expression builder:
  • def my_expr(*exprs: pl.Expr, scalar_a: float, ...) -> pl.Expr

Then expose one of:

FUNCTION_SPEC = DerivedFunctionSpec(
    name="my_function",
    kernel=my_kernel,
    expr_builder=my_expr,
)
FUNCTION_SPECS = [
    DerivedFunctionSpec(...),
    DerivedFunctionSpec(...),
]

compehndly.api auto-discovers FUNCTION_SPEC / FUNCTION_SPECS, so there is no central registry file to edit.

No per-function adapter wrappers are required.

Download files

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

Source Distribution

compehndly-0.0.1a4.tar.gz (16.2 kB view details)

Uploaded Source

Built Distribution

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

compehndly-0.0.1a4-py3-none-any.whl (20.4 kB view details)

Uploaded Python 3

File details

Details for the file compehndly-0.0.1a4.tar.gz.

File metadata

  • Download URL: compehndly-0.0.1a4.tar.gz
  • Upload date:
  • Size: 16.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for compehndly-0.0.1a4.tar.gz
Algorithm Hash digest
SHA256 813d030ee779a3fe5f0a3d6f332ebdaabd68290fc2d082a823d41fc9f1a4ac52
MD5 378481c1a97af7ba1afad117e49e2ec8
BLAKE2b-256 c44191ee0b2b207a08e2409a7994f69bc02a86a6acc2a31757ea2d9d8aad4aaa

See more details on using hashes here.

Provenance

The following attestation bundles were made for compehndly-0.0.1a4.tar.gz:

Publisher: publish.yml on eu-parc/compehndly

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

File details

Details for the file compehndly-0.0.1a4-py3-none-any.whl.

File metadata

  • Download URL: compehndly-0.0.1a4-py3-none-any.whl
  • Upload date:
  • Size: 20.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for compehndly-0.0.1a4-py3-none-any.whl
Algorithm Hash digest
SHA256 165b1eac69eb5747f19fc5c69e1ccf22e7adc0c59e9f90ca6df0f772147e50f7
MD5 92cb742e1255e1e6ae9abf99595f9e11
BLAKE2b-256 e42ef65e04eabe26018a1860061211b97686b0f4c73787355ec8005e01dd69d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for compehndly-0.0.1a4-py3-none-any.whl:

Publisher: publish.yml on eu-parc/compehndly

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

Release history Release notifications | RSS feed

This release

0.0.1a4 This release

2 files

Supported by

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