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.11.0.tar.gz (59.6 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.11.0-cp311-abi3-win_amd64.whl (1.6 MB view details)

Uploaded CPython 3.11+Windows x86-64

goldenflow_native-0.11.0-cp311-abi3-manylinux_2_28_x86_64.whl (1.9 MB view details)

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

goldenflow_native-0.11.0-cp311-abi3-manylinux_2_28_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.11+manylinux: glibc 2.28+ ARM64

goldenflow_native-0.11.0-cp311-abi3-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

goldenflow_native-0.11.0-cp311-abi3-macosx_10_12_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.11+macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: goldenflow_native-0.11.0.tar.gz
  • Upload date:
  • Size: 59.6 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.11.0.tar.gz
Algorithm Hash digest
SHA256 81fb3d103d6311c70ace308430a035013e16064ee21b6796c161e2f05bb4966d
MD5 6ea94c47b0b1aded35d43ced26d52155
BLAKE2b-256 9cdcfcfc1b9ab465ca0618e75afac227e873be258fb3cdacfa3e86644761011d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.11.0-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 397ef5a4d22455082338edadd76c8175f75cc2392433700a94d6dd3d2e34a866
MD5 cc8c665033015c007bad7c1461abbdc8
BLAKE2b-256 0f3e17d23556a6888feec75c9c2a0851630156179d044fa19a8aa373cbae4ffe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.11.0-cp311-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a61d0f2a0bdeb743a4d12a12a1a8f003d64af9a112cd01ac8c339a8053bf9b41
MD5 0164d792eaadee59d91967a2cf57418c
BLAKE2b-256 ff38b27a451663873c37be3233226c77e9d3d0cb17322ff8cf7c6e6e577d62db

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.11.0-cp311-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4f6ed9eed5bf30dace9819ecae463609c6dbb682af03bf90550bede5f04bf2e6
MD5 a8c447a77d1b21c529d58491778d3aea
BLAKE2b-256 3823aee0aece704ad8b24c24652340695187042aec5c959286eed6d754e2b5d9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.11.0-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6a87539985824153d4da722a1cfb54e597a7ca8dc33dfbadedef73aee7e9f400
MD5 714de65ba4c9b7643800fb6689f9b26c
BLAKE2b-256 af8fc8cdc5b64a92ab41ee8017375b342eff959c2ce429a22027b1128434051e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.11.0-cp311-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 cf6b0f826e91a3d983ed902ddb57ac990a082508024d250c67ec3b99be7fca68
MD5 436fd5a28721bec046c4c86478cd290b
BLAKE2b-256 87f6908f323c4ccbf3ae2a44ce75be210abc3d564dbf265e90a289abdc1ec83e

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