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

Uploaded CPython 3.11+Windows x86-64

goldenflow_native-0.13.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.13.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.13.0-cp311-abi3-macosx_11_0_arm64.whl (1.8 MB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

goldenflow_native-0.13.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.13.0.tar.gz.

File metadata

  • Download URL: goldenflow_native-0.13.0.tar.gz
  • Upload date:
  • Size: 92.4 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.13.0.tar.gz
Algorithm Hash digest
SHA256 738f511f7a478d107fcb4fc084576c3b646cabc441c1f298bc07193252227947
MD5 019c0d24993932a1cbd2ab4e41f484ac
BLAKE2b-256 1f18cf669b69ef8af5a3fb829cdf62e89f613ba62d1b37444623e33d2047d426

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.13.0-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 ac7b2061badcb837db3d82c6e08579275fab66b765b39a5e1da226ba64c7cb9f
MD5 2de7a2b68f03dd7a7ea956ff92d272e5
BLAKE2b-256 421901b17ee96accadba2be37274dbefda404fc3ba2b750e354a2c80919c2c12

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.13.0-cp311-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 dfb7154079d6e744f5afd4fd38acefe541a643ec03d0357199fd15ded5d4afd5
MD5 d7fd3b79949e97e275d7ffc437a0328b
BLAKE2b-256 33d82350aa0601fae9bfef6e0cf1e36ac46d5e2528ca7d613e5422982f75ea7c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.13.0-cp311-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0f7bc74ed3054997b84acbfdc5736f10178f2538d207652e1c3e18defc21220f
MD5 4dd4445548523d6c9ef2edd84f31b788
BLAKE2b-256 16bb2e44d1e5a8e440397013549760667641466284609d1313b744edf4c37b03

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.13.0-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 835cf40f16ce58eba25068e6472e3edfbb915bfd263d1649187158eb49805290
MD5 806462d83565c342d2ea11b8f1934237
BLAKE2b-256 20468256fdafd2ce44b04f526903091d29c38c4128071f795e7a78c1ad0b4198

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goldenflow_native-0.13.0-cp311-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 62fc02cd45424d7c696b3c35df0aaa235bbcfb3401e355e44a69a4cacdab6c25
MD5 e70d6b620a54d994461d60308330ed07
BLAKE2b-256 0d646bfcec919edfe47578412462eb0643b0a58a3a8270340d225bdfd88f5f83

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