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

Uploaded CPython 3.11+Windows x86-64

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

Uploaded CPython 3.11+macOS 11.0+ ARM64

goldenflow_native-0.24.0-cp311-abi3-macosx_10_12_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.11+macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: goldenflow_native-0.24.0.tar.gz
  • Upload date:
  • Size: 213.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.24.0.tar.gz
Algorithm Hash digest
SHA256 74fef0a912cdd28fb7b30d7c57073365109794953c6ebf4451667d95ee0bf83f
MD5 c6e6cd24d57e0e991090fe36cf2994e8
BLAKE2b-256 77fb79ae445927577914517a8ab4766bcdc9c8c3ca56d61c0ddf37365367a7ff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.24.0-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 7adfcfd83f1b6732b2f85e175086ba9761afc37673ffbce82e409526c43a0f49
MD5 739108c3bceeaccf674e58e39c6b7131
BLAKE2b-256 ff3a7aa73c10c172dbe8c86396591fa913d4b040bf4fe91c46f8542df7d0dfc8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.24.0-cp311-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 87f195ec58e32a53d1ff217172dbc330b666f1eca7cf2487c865a32e2d83a8ea
MD5 350f5358c8d59a06443f71f3503e7a62
BLAKE2b-256 e143a44d6bbde86c6b0860576c999fc0af455ad20223473f0a75f1d830209736

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.24.0-cp311-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 dad842e3cb9245458fd6bc336cdf5765d98fcfe1c61a2123d9b49e6b6fd0bcb3
MD5 d45252f161471928b2073e52759fda7a
BLAKE2b-256 fda7c75cfd8bb4e6ff559e1616dd9fa5e57dbf3c0397ef6deb213aa150f4cb16

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.24.0-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 55a1a2dc485efbc3608890544c90ca65c483244a02d481cb8ea21d2175439851
MD5 8dfdd3e09fac4004c46f3618c5ee2bf5
BLAKE2b-256 f7603bd531d12c9fcb77bd2a0d655e94e0e389ca8985df2d05a36b907dfaba14

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.24.0-cp311-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 561eb9bfd37859e8de327699a9205ec3dd351b422df6a910160971024e41ff4e
MD5 519fe8fc73ededdd3d3f0006595cd6e6
BLAKE2b-256 79824d80fa0ceeda3157454940ecbda3f51e1493aa53efbbd7c418f19b42287b

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