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.26.0.tar.gz (215.1 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.26.0-cp311-abi3-win_amd64.whl (4.2 MB view details)

Uploaded CPython 3.11+Windows x86-64

goldenflow_native-0.26.0-cp311-abi3-manylinux_2_28_x86_64.whl (4.6 MB view details)

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

goldenflow_native-0.26.0-cp311-abi3-manylinux_2_28_aarch64.whl (4.6 MB view details)

Uploaded CPython 3.11+manylinux: glibc 2.28+ ARM64

goldenflow_native-0.26.0-cp311-abi3-macosx_11_0_arm64.whl (4.1 MB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

goldenflow_native-0.26.0-cp311-abi3-macosx_10_12_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.11+macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: goldenflow_native-0.26.0.tar.gz
  • Upload date:
  • Size: 215.1 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.26.0.tar.gz
Algorithm Hash digest
SHA256 026d6f928b1ae4895424dba8574e4ad9b51927580e1b231e4bf3701755767dd7
MD5 ec8cdab6220ccc008cb780010ddb9ff4
BLAKE2b-256 9a70b08120a16101bad9b32420dca7893db78d64a456dae9cb0d5540ce50a3bc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.26.0-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 49ed50749fe6db2c9005c0e6f58d8c26029985646cbcd5c7518b907e7a4e9de1
MD5 fc08a0e4c6d734c51df0b559ab3b312c
BLAKE2b-256 f4caf3ab1a9026878201f2fca35e3839c2774ec3ef37ce2d2427afb9c66fd891

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.26.0-cp311-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9f0c04a34c2e26c3970a93ef323f91efdcd8d146d35916c854156e0d472e629c
MD5 766ed0ccc8dc07471c849f572d634251
BLAKE2b-256 ce10e5584f2a61563201a28f4174d13fd16a0b78a9388c2da16fb61a90205453

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.26.0-cp311-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 11fc276d08cf78125f96ab7cbaa2848f3cdb77407870a6af0a227173ebcfa26a
MD5 97a2f7c519b13b2be2002d0a69bb770a
BLAKE2b-256 dc0e9b090c0b8f30690caae73ce5574966b70d14d24c1052842ad1af079397d1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.26.0-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4693941473c59d5e309c895df14ba08858c2dcdf9ffd16cab40a12c2b95ddaba
MD5 7b21024a7b23c4299cc7b758a3d0c030
BLAKE2b-256 90439e5387efc189baf3a7021d54a925534412553ee8cc9fadee8ee617a7b43d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.26.0-cp311-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 83b1c852d325be62982f110d96d549a9908870181c6c3d3be1b041741e152684
MD5 14566fb55d3fb2c377ade8c30307823f
BLAKE2b-256 eef8313f4174411c5680cdc24872189d7eb6488a64b2743484770163d597974a

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