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.2.0.tar.gz (22.8 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.2.0-cp311-abi3-win_amd64.whl (1.5 MB view details)

Uploaded CPython 3.11+Windows x86-64

goldenflow_native-0.2.0-cp311-abi3-manylinux_2_28_x86_64.whl (1.8 MB view details)

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

goldenflow_native-0.2.0-cp311-abi3-manylinux_2_28_aarch64.whl (1.8 MB view details)

Uploaded CPython 3.11+manylinux: glibc 2.28+ ARM64

goldenflow_native-0.2.0-cp311-abi3-macosx_11_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

goldenflow_native-0.2.0-cp311-abi3-macosx_10_12_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.11+macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: goldenflow_native-0.2.0.tar.gz
  • Upload date:
  • Size: 22.8 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.2.0.tar.gz
Algorithm Hash digest
SHA256 9cffc4edf976d57ef4aab4f23ce0af1e4ccf6d253b39cd3cf030cee8a1836e8d
MD5 8389ec7184fbf06a0af2b6f2e15976e8
BLAKE2b-256 93bf089d7bbe46f91a4ce455288a5a1fa6bcf7036eb138a0af54062fb3684830

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.2.0-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 d40b097670a42081636212c8816e7f01ed857e5419c2e6869009c626e73eb6b1
MD5 5561390fd870523f7359ecfa7e1f8a77
BLAKE2b-256 caf273cc54ac2c8089e8fa6b86a5d6ecceed14602bff5238200d25328499392c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.2.0-cp311-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 26e1031083db575383729e2dae7716701131f5f0299ab33df332b6ec419ffbbc
MD5 c2a8fbe7fc7f692c11825ff9035dfb95
BLAKE2b-256 586545f97a31a8c4565240f9ce0f28fea8f3d590f4fdf341dc9e7b8b4240f8d5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.2.0-cp311-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6cec85a2b3a4a48c09398ca263e30fa5b0d926c7da196bc068ad74f0e5b19cc8
MD5 7bf5cf60163cf6bdbdc9ecfd7175d1a9
BLAKE2b-256 568c46b849105577a20b0fd3b13e83945883e4563fb5ec9bcf01fd7a7564b0ce

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.2.0-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 da9e0ec599b154e182d22e6c4d9ab202218aec429b2107cc4b2b2537c6d4a396
MD5 b92067e345cae7e5d528c1c66e695988
BLAKE2b-256 2d9dccd8eb63e85eb5ea798c62f5dd5298167874616b32d3a2ac5df0e9c295ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.2.0-cp311-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d1575d763d6cea58d4ea0dd6661ee87672db2b02aa113b7cff94540b8d55ca3e
MD5 921400500376a4f0f88b582b6865495c
BLAKE2b-256 248bc2c21e11edd2fc47a6a42309b459382d2f0b349f4309eb1d5b7897e3cd5d

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