Modern, type-safe, and extensible library for parsing, transforming, and analyzing HAR (HTTP Archive) files.
Project description
Hario Core — Type-safe HAR Model & Transform
A modern, extensible, and type-safe Python library for parsing, transforming, and analyzing HAR (HTTP Archive) files. Built on Pydantic, Hario-Core provides robust validation, flexible transformation, and easy extension for custom HAR formats.
Features
- Type-Safe Parsing: Validates HAR files using Pydantic models, catching errors early.
- Transformers: Apply built-in or custom transformations to each HAR entry (e.g., flatten, normalizations).
- Normalization: Ensures all numeric fields (sizes, timings) are non-negative, so you can safely sum, aggregate, and analyze data without errors from negative values. This is crucial for analytics and reporting.
- Deterministic & Random IDs: Generate unique or deterministic IDs for each entry. Deterministic IDs ensure that the same request always gets the same ID—useful for deduplication, comparison, and building analytics pipelines.
- Extensible: Register your own entry models to support browser-specific or proprietary HAR extensions (e.g., Chrome DevTools, Safari).
- Composable Pipelines: Chain any number of transformers and ID strategies for flexible data processing.
Installation
pip install hario-core
Quickstart
1. Parse and validate a HAR file
from hario_core.parse import parse
har_log = parse("example.har")
entries = har_log.model_dump()["entries"] # list of dicts
2. Transform entries with a pipeline
from hario_core.transform import Pipeline, flatten, set_id, by_field
pipeline = Pipeline([
set_id(by_field(["request.url", "startedDateTime"]))
])
results = pipeline.process(entries)
3. Custom entry models (extensions)
from hario_core.parse import register_entry_model
from hario_core.models import Entry
def is_custom_entry(entry: dict) -> bool:
return "x-custom" in entry
class CustomEntry(Entry):
x_custom: str
register_entry_model(is_custom_entry, CustomEntry)
Public API
Parsing and validation
parse(path_or_bytes_or_filelike) -> HarLogvalidate(har_dict: dict) -> HarLogregister_entry_model(detector: Callable, model: Type[Entry])entry_selector(entry_dict: dict) -> Type[Entry]
Models
Entry,HarLog,DevToolsEntry(and all standard HAR 1.2 models)
Transform
Pipeline,flatten,normalize_sizes,normalize_timings,set_id,by_field,uuid,json_array_handler
Documentation
License
MIT License. See LICENSE.
Supported Python Versions
- Python 3.10+
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hario_core-0.4.2.tar.gz.
File metadata
- Download URL: hario_core-0.4.2.tar.gz
- Upload date:
- Size: 12.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.10.18 Darwin/23.6.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ebfd9897ae7839e4f5b1899eeb1f4b6be47d9cef9c9db5316f2d8507a61a19e2
|
|
| MD5 |
9a10fbe53bd2598501a555b920e7c67c
|
|
| BLAKE2b-256 |
b7821837e4d94cfaa757c887b633a0e1a260b92bfcf0ef8b136daac37a9e095e
|
File details
Details for the file hario_core-0.4.2-py3-none-any.whl.
File metadata
- Download URL: hario_core-0.4.2-py3-none-any.whl
- Upload date:
- Size: 15.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.10.18 Darwin/23.6.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8671d15105ec1abdfc9136170c926a94f4ba73c343916240d7275f14222fb069
|
|
| MD5 |
1772ccb9b8542ed8345f36e8c09d5e8f
|
|
| BLAKE2b-256 |
5f58956b0df9bd64c9eebb7abd418ab9e7a0fd9bfa3eea246bd5501c2444520b
|