Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

A library of classes for HAR data using pyserde.

The library is focused on providing a F-Algebra for HAR data and associated morphisms but also contains canonical types for basic usages.

F-Algebra classes

There is one generic-ish class for every HAR type and are affixed with F. All nested HAR types have been replaced with type parameters. Some types have no nested HAR types and so have no generic parameters but are included for completeness.

There is one edge case for post data. Since some of the parameters defined in the spec are mutually exclusive there are two classes for post data. PostDataParamF for ParamF based post data, and PostDataTextF for text based post data. There is a union type PostDataF combining the two for type hints but it cannot be constructed.

All of these types are Functory, by providing a nmap function that takes a function for each of the generic parameters. For example, see the ResponseF class below.

class ResponseF(Generic[A, B, C]):
   ...
   statusText: str
   httpVersion: str
   cookies: List[A]
   headers: List[B]
   content: C
   ...

   def nmap(
       self: "ResponseF[A, B, C]",
       f: Func[A, W],
       g: Func[B, X],
       h: Func[C, Y],
   ) -> "ResponseF[W, X, Y]":
       return replace(
           self,  # type: ignore[arg-type]
           cookies=list(map(f, self.cookies)),
           headers=list(map(g, self.headers)),
           content=h(self.content),
       )

Morphisms

Currently there are just 2 helper morphisms. harf_cata is a general catamorphsim, and harf which helps you build an algebra for harf_cata by taking explicit functions for each HAR type.

For example, if you wanted to count the number of times the string "key" is in headers you could do the following

harf(
    default=0,
    header=lambda h: h.count("key"),
    request=lambda r: sum(r.headers),
    response=lambda r: sum(r.headers),
    entry=lambda e: e.request + e.response,
    log=lambda l: sum(l.entries),
)(har_data)

Canonical/Basic types

For simple usages there are also type aliases for the canonical HAR structure. I.E. Response = ResponseF[Cookie, Header, Content]

Metadata

Release files for harf-serde 1.2a6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for harf-serde 1.2a6
File Size Uploaded
harf-serde-1.2a6.tar.gz 6.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for harf-serde 1.2a6
File Interpreter ABI Platform
harf_serde-1.2a6-py3-none-any.whl Python 3 none any Details

Total release size: 13.4 kB

Release files / harf-serde-1.2a6.tar.gz

Download URL harf-serde-1.2a6.tar.gz
Size 6.0 kB
Tags Source
SHA-256 checksum
How to use checksums
c1d46a52c3d87c80739dcd59b85aac57e9efa8d8db937b23a7921f5fbefc91c6
BLAKE2b-256 checksum
How to use checksums
66cb9be8a87f00b777c7f4b46c7138dbea5eda59b88c506ffba54fdc0da6c3d9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.10.4

Release files / harf_serde-1.2a6-py3-none-any.whl

Download URL harf_serde-1.2a6-py3-none-any.whl
Size 7.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e1bea00a8d56112d3777d346bf0e0a16bb31b2f26ddc825ba9908d5f301f5efa
BLAKE2b-256 checksum
How to use checksums
b6d46131c2c3ff6c49910fe5f626dca735dae02826de3adfe14040441481287b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.10.4
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page