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

Uploaded CPython 3.11+Windows x86-64

goldenflow_native-0.14.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.14.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.14.0-cp311-abi3-macosx_11_0_arm64.whl (1.8 MB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

goldenflow_native-0.14.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.14.0.tar.gz.

File metadata

  • Download URL: goldenflow_native-0.14.0.tar.gz
  • Upload date:
  • Size: 95.0 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.14.0.tar.gz
Algorithm Hash digest
SHA256 a94e202db98b8f91a8c04df89601b3b192241cfe724e2037fc70789244adf28f
MD5 850be4a830ac88195678c02cdd47c7c6
BLAKE2b-256 d20eb8725113d6723f426b7f20e9d4cd78699867485d119b7170d82a420b02eb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.14.0-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 756068e9a66cfbfab4f0f3ff84cef6fecf732c8295dd0d4aa42161224a2035b7
MD5 55ef2836e24a55a44635e1b8d7afaf24
BLAKE2b-256 6df5ad84e5edcefa6c8936edeffbe67952bfc4f16dd0b39313d68148221bc2d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.14.0-cp311-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a295986a1e9a899e48e97acc8136ee3e82248fac15930f11ec5b5062b76f27a5
MD5 2817f713a999ba05370a744b022e8c3f
BLAKE2b-256 ab3af36dbb3d13b9e4a3ef7055d22215ea355d7c3d99d203b6367a315537c91a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.14.0-cp311-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0dc622c1bab64da6e192b4bec2289067bcead3bb2abc0e191f2bc8673a73e8b4
MD5 64e66fce0a91c276d241cb8400022a34
BLAKE2b-256 93f4ccac43b44e3bd4f804cfc3ed4cee078dcd7342d9375db58a95f6ee41d5f3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.14.0-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 80bd3496c91b473f19144e784d18c933e206dd5e32ad5643e6fb74fd52160768
MD5 b54a557dff0c3293f9652b47d80c776e
BLAKE2b-256 6c55c4adf6834aaa62eb0e98e667691ba1b83af6292c96642d0bef3649c8b49c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.14.0-cp311-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 acf5ffc07ad34042ef07c35b796f6de5f51a65325cb62acd553a21515284d538
MD5 ee28f1ec050afba7226b5b95d723a55b
BLAKE2b-256 3b7a09eaf60ad9894ee65b21f6b75cf51cef396b2cbd2d186db5b451a4474321

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