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

Uploaded CPython 3.11+Windows x86-64

goldenflow_native-0.27.0-cp311-abi3-manylinux_2_28_x86_64.whl (4.5 MB view details)

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

goldenflow_native-0.27.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.27.0-cp311-abi3-macosx_11_0_arm64.whl (4.1 MB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

goldenflow_native-0.27.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.27.0.tar.gz.

File metadata

  • Download URL: goldenflow_native-0.27.0.tar.gz
  • Upload date:
  • Size: 222.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.27.0.tar.gz
Algorithm Hash digest
SHA256 c1581be77ee75f89924cd5d9b5e0ea0689ab79510f064fe68f2e00f5dfa35b21
MD5 bc16b489cdbf302884051779ede5b056
BLAKE2b-256 c1bdb132fe950e00c94dd908b8ed1f336ecff5621a09e2e90553ce7dfd3f2022

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.27.0-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 918467cac40e7c77240e1b931ebd0ca0e94c76b8f08e2fde04de73d170d8fc84
MD5 4b3ebb82c5a0df06d1ca5c6a3567984b
BLAKE2b-256 5799a1c8aaf2c41e21c58a759da5b6d50bcb64d917dc9224a7da0bbf94dbc81e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.27.0-cp311-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 351500335a1fc112fbcd9e8b30d9588ab2905b8ccf513ca7d426001a28bd7eb1
MD5 3827e4ab81ce0a91a2a0a854a8546238
BLAKE2b-256 777a91acc7c2ee2dc0503e13bcd1ebc70f7ad220debd5666165dae23a744ad07

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.27.0-cp311-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3c0427426278e9930f27ccbf631a107b84594b63adf29aad64d6e81a7bb756c6
MD5 8b389688368e144feb4067f61e5be097
BLAKE2b-256 25cbed551946ca6e74a3e6b599ead309c7dd98d24eaaecec2348b4695bc9e794

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.27.0-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b60f76bff8e696d1f27a731ccf5ebe3b776308987d19b74dd718909024edbd78
MD5 4fdadb7f743fb7c3990bb42f86afb166
BLAKE2b-256 d1f135aa29da733eb9fb1337ea65f96d1281f9ec8fce37cc23e1d321e772b30a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.27.0-cp311-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 dd991ca437e2625a5fbba99f530ed02ad363aa969ed4890dd8f52fe798742369
MD5 0c9580b8801e362369935573f3d9e0df
BLAKE2b-256 f9bc219e9938e25925e4ba3c54cc5f4ba55e8110c4cd6284f9e0ab13b0d1479a

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