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.12.0.tar.gz (88.9 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.12.0-cp311-abi3-win_amd64.whl (1.7 MB view details)

Uploaded CPython 3.11+Windows x86-64

goldenflow_native-0.12.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.12.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.12.0-cp311-abi3-macosx_11_0_arm64.whl (1.8 MB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

goldenflow_native-0.12.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.12.0.tar.gz.

File metadata

  • Download URL: goldenflow_native-0.12.0.tar.gz
  • Upload date:
  • Size: 88.9 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.12.0.tar.gz
Algorithm Hash digest
SHA256 cd5415bb4db47bb18ab33356b5aa494c0eaeadaefd086b6371934074ea62fd2f
MD5 f936db34cace61552b9076e16d85ad3f
BLAKE2b-256 d92b6fd130e9d889e04efb43a9a48de6bfeb974ba029b8430547e10e938b2919

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.12.0-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 4d35ffd02ef13bb2567c4a7fa78b0d80584ff937163fad5092277b4b63dd077b
MD5 7b08f7c6b115fcd708180f278f09e08e
BLAKE2b-256 cd4f497b37cdd4bf3d7d24337f8a927f1b5d296e636a94ef83caa62d1d74fed4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.12.0-cp311-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 54b11ebc339559dc966e284e24f23accdb6597ac0c3e1fe65a2f56d05df20d13
MD5 c6a2777798cb00538b054e08ef34fc05
BLAKE2b-256 f087067e51f9ce75071edce18df255789c8ad53221f56b8e051a582dde048816

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.12.0-cp311-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c71dc3d22b0fe99c715e5eb051a77101651cf07935fb410be8810f17ec702eb1
MD5 80c090d1189d7f9791e8ebb88e59a652
BLAKE2b-256 f1614f053d7c150ca492a1f5071df259b9675ba7135a70fb52ea2a6193915ef5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.12.0-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cc550d0673b6aab2bce5688c379c33d01eee5107ff3e8e6ca24d3e520d9ca8cc
MD5 342aee33ddd04ed7ea9110c65bd25907
BLAKE2b-256 215f52e8122c722cf1dd3c046ed204570f6034c1660e3546cdb635dda165b42e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.12.0-cp311-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2494ade40b1fa8c13e6d2f928f8271ffde4a58b081c71b5fd9a72c309b4d0dc6
MD5 3de51d7b7b3d066b14ce7e3a79fd78ea
BLAKE2b-256 b0e3de41a59cfc11e5bbbf45ed4aaea49346c58115826d68462548f57d9369e5

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