Skip to main content

goldenflow-native

Optional native (Rust/PyO3) acceleration kernels for GoldenFlow. The sibling of goldenmatch-native; same abi3 / maturin / Arrow-zero-copy posture.

GoldenFlow stays a pure-Python wheel. pip install goldenflow[native] pulls this compiled runtime, and goldenflow.core._native_loader discovers it (or falls back to pure Python when it's absent). It is off by default at runtime even when installed — see Gating.

What it accelerates

The international phone family. GoldenFlow's pure-Python transforms already resolve the common (NANP) case with vectorized Polars expressions; these kernels accelerate the residual — international numbers that would otherwise hit the phonenumbers library one row at a time. Kernels:

function returns
phone_e164_arrow(array, region) Utf8 E.164 (null on parse failure)
phone_national_arrow(array, region) Utf8 national format
phone_country_code_arrow(array, region) Int64 country calling code
phone_valid_arrow(array, region) Boolean validity

Each takes an Arrow Utf8/LargeUtf8 array (zero-copy in), returns an Arrow array (zero-copy out), and releases the GIL around the compute loop. Any row it can't parse comes back null so the Python reference settles it — the native path is never worse than pure Python.

Dates are intentionally not a native kernel: the Polars str.to_date coalesce fast path already resolves the 4-digit-year formats in vectorized Rust, and a per-row chrono parser would be slower while reintroducing a 2-digit-year parity hazard. The ragged date tail stays on dateutil.

Gating: NANP-only (parity-safe, on by default)

phone is in goldenflow.core._native_loader._GATED_ON, so it runs under GOLDENFLOW_NATIVE=auto (the default) — but only in a provably parity-safe mode.

Characterization across 20 country metadata sets showed the Rust phonenumber port is byte-identical to the Python phonenumbers library except when a +CC international number is parsed with a mismatched default region (the transforms pass "US") and its national number starts with 1 (e.g. +33142685300 → native +3342685300 — the port mis-applies US national-prefix stripping). It also diverges on ambiguous leading-1 inputs (1234567890 → native +1234567890 vs python +11234567890).

Two gates make native authoritative only where it's proven correct:

  1. Kernel nanp_only mode — emits a result only for country-code-1 numbers; everything else returns null and falls back to Python.
  2. Canonical-NANP acceptance (in transforms/_native.py) — keeps only ^\+1[2-9]\d{9}$ outputs, dropping the malformed 9-digit results the leading-1 ambiguity produces.

So native resolves the canonical-NANP residual the Polars fast path can't reach (alpha like 1-800-FLOWERS, extensions, +1-prefixed forms) ~4-5× faster, and everything international/ambiguous defers to Python. phone_country_code is also gated (country code agrees on all NANP); phone_national/phone_validate stay pure Python (no cheap canonical check). Verified byte-identical to phonenumbers over a 60k mixed corpus in packages/python/goldenflow/tests/transforms/test_native_parity.py.

GOLDENFLOW_NATIVE=0 forces pure Python; =1 enables native for all components (bench/parity lane, no nanp_only restriction — will diverge on intl).

Build

# In-tree dev build (drops goldenflow/_native.abi3.so):
python packages/python/goldenflow/scripts/build_native.py

# Distributable abi3 wheel:
cd packages/rust/extensions/native-flow && maturin build --release

Download files

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

Source Distribution

goldenflow_native-0.15.0.tar.gz (98.4 kB view details)

Uploaded Source

Built Distributions

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

goldenflow_native-0.15.0-cp311-abi3-win_amd64.whl (1.7 MB view details)

Uploaded CPython 3.11+Windows x86-64

goldenflow_native-0.15.0-cp311-abi3-manylinux_2_28_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.11+manylinux: glibc 2.28+ x86-64

goldenflow_native-0.15.0-cp311-abi3-manylinux_2_28_aarch64.whl (2.1 MB view details)

Uploaded CPython 3.11+manylinux: glibc 2.28+ ARM64

goldenflow_native-0.15.0-cp311-abi3-macosx_11_0_arm64.whl (1.8 MB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

goldenflow_native-0.15.0-cp311-abi3-macosx_10_12_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.11+macOS 10.12+ x86-64

File details

Details for the file goldenflow_native-0.15.0.tar.gz.

File metadata

  • Download URL: goldenflow_native-0.15.0.tar.gz
  • Upload date:
  • Size: 98.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for goldenflow_native-0.15.0.tar.gz
Algorithm Hash digest
SHA256 45ddd2a916a1d478c4e353409db4f1d519007033e4477649e867a8d08c65ce42
MD5 fc703a34b8e071838ddeb332f3e8d52e
BLAKE2b-256 48aca1406b4014524ac13467aa1d8307e7c26d3588835b35ed8abb77253fec5f

See more details on using hashes here.

File details

Details for the file goldenflow_native-0.15.0-cp311-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for goldenflow_native-0.15.0-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 c206c9315e61edfed5e379dd9e573b8b37ab756b653bfa4138eda59ef5e1a22d
MD5 39cb73510625d2fd09d7c033c2170221
BLAKE2b-256 9ca1c4f3946e43e1cd8f4cea5ee21fdb8a7e46845793775024553cac6392e89d

See more details on using hashes here.

File details

Details for the file goldenflow_native-0.15.0-cp311-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for goldenflow_native-0.15.0-cp311-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a6add2c07dd3f8c7b522e7e8ebe23a55ba84b79f09788e0e39f32922eb4a2f91
MD5 c64c8e8deaa2aa3e2a64a99521dbac65
BLAKE2b-256 935500ff399be4b49aacf7bf709c81e0b9a33d5f7802014444c5b0118973b2d1

See more details on using hashes here.

File details

Details for the file goldenflow_native-0.15.0-cp311-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for goldenflow_native-0.15.0-cp311-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 17c6979275c9f9317dfb2f9197225efc2ef0d30cabfd9e2cf38e43c101aab6d7
MD5 3173f1ccba05d381f75d7659eb7b3cef
BLAKE2b-256 25625926bb62064b24ff470ad4c9bdb6db9e98d1985b33f4d903cbcda6406cf4

See more details on using hashes here.

File details

Details for the file goldenflow_native-0.15.0-cp311-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for goldenflow_native-0.15.0-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fd7076594f4be3ca621537db6dca169ea636eb6d368b3960ca173b929b992f6e
MD5 093bfb8aaa308b64089cf20aa4e41b36
BLAKE2b-256 273d0472339baa9fea5bc1a24c9f3c3f5f5565e27666346a8f28df02336a1871

See more details on using hashes here.

File details

Details for the file goldenflow_native-0.15.0-cp311-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for goldenflow_native-0.15.0-cp311-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c3fd7077850a72f76f0bbfff58ebe1a89b1afc0c55e5d6cf39ec4dd7ed8f3bd4
MD5 0cd614caa2471b0d5b38d01cc8e5e851
BLAKE2b-256 fa645b158730b6a0d9ad715de19620195db78ccbb9a47237c21e2bb1f736b313

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 Sentry Error logging StatusPage Status page