Skip to main content

Stream HTTP data to Apache Arrow format for efficient processing and analytics.

Project description

http-to-arrow

http-to-arrow provides Arrow-backed containers for streaming HTTP and ETL-style ingestion workflows.

The package uses a standard source layout so code lives under src/http_to_arrow/ rather than the project root.

Package-specific tests live under tests/ inside this workspace member, while the monorepo root can still host shared integration tests when needed.

Included exports

  • ArrowRecordContainer
  • UnknownFieldPolicy
  • MissingFieldPolicy
  • CoercionPolicy

Explicit schema

import pyarrow as pa

from http_to_arrow import ArrowRecordContainer

container = ArrowRecordContainer(
    schema=pa.schema([
        pa.field("id", pa.int64()),
        pa.field("name", pa.string()),
    ])
)

container.append({"id": 1, "name": "alpha"})

Inferred schema

from http_to_arrow import ArrowRecordContainer

container = ArrowRecordContainer(schema=None)

container.append({"ID": 1})
container.append({"id": 2, "name": "beta"})

table = container.to_table()
assert table.to_pydict() == {
    "ID": [1, 2],
    "name": [None, "beta"],
}

Notes

  • schema=None enables inferred mode.
  • Inferred mode widens as new fields appear and backfills older rows with nulls.
  • Conflicting inferred field types widen when possible and otherwise fall back to string.
  • to_table() raises when inferred mode has neither an explicit schema nor any appended records.

Memory tuning

For high-volume ingestion paths (for example streaming large HTTP responses into a single materialized Arrow table) the container exposes a few opt-in knobs to bound peak memory. All defaults preserve the historical behavior.

  • dictionary_encode=True (explicit schemas only): low-cardinality string and large_string columns are dictionary-encoded at flush time, producing dictionary-typed Arrow columns. Once a column is encoded, subsequent batches stay encoded so pa.Table.from_batches accepts them.
  • dictionary_cardinality_threshold (default 0.5): a column is only encoded when len(dictionary) / len(array) <= threshold on the first qualifying batch. Must be in [0.0, 1.0].
  • compact_on_materialize=True: runs pa.Table.combine_chunks() after materializing pending batches in to_table() or incremental_flush(), reducing the chunk fragmentation that builds up across many flushes.
  • eager_clear_accumulator=True: each accumulator column list is released as soon as its Arrow array is built during flush(). This is opt-in because it changes failure semantics: if a later column raises mid-flush the cleared earlier columns cannot be re-converted from the same in-flight rows.
  • For memory-constrained runtimes, lowering batch_size (default 128_000) reduces the size of the Python accumulator held between flushes at the cost of more frequent batch construction.

The helper modules _policies, _coercion, _schema, and _encoding are private implementation details; the public surface remains ArrowRecordContainer plus the three policy aliases.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

http_to_arrow-0.1.3.tar.gz (10.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

http_to_arrow-0.1.3-py3-none-any.whl (13.6 kB view details)

Uploaded Python 3

File details

Details for the file http_to_arrow-0.1.3.tar.gz.

File metadata

  • Download URL: http_to_arrow-0.1.3.tar.gz
  • Upload date:
  • Size: 10.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for http_to_arrow-0.1.3.tar.gz
Algorithm Hash digest
SHA256 0ca0d6db13147f2b32c8c1270824162c073e5b29bb5772c80a998495b56ce954
MD5 385e395429cef4d1aabef1b175d6558a
BLAKE2b-256 402ecc780f8ca1cdfa36cbcf19b28264f91c5e955f37075800d5f6c0411ed009

See more details on using hashes here.

Provenance

The following attestation bundles were made for http_to_arrow-0.1.3.tar.gz:

Publisher: publish-http-to-arrow.yml on ProxayFox/proxay-pylibs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file http_to_arrow-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: http_to_arrow-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 13.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for http_to_arrow-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 a90640c691d875dbc06d6eb5331ac719d06e5ef600894057a76b7e9fb63a39e7
MD5 85561528ad720483049ade77a16fffc3
BLAKE2b-256 65dac1e6fc4ea0ca79488d54135b229f2e57d163deacfebaf58fa1bd0b650284

See more details on using hashes here.

Provenance

The following attestation bundles were made for http_to_arrow-0.1.3-py3-none-any.whl:

Publisher: publish-http-to-arrow.yml on ProxayFox/proxay-pylibs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page