Skip to main content

A library of classes for HAR data using pyserde.

Project description

A library of classes for HAR data using pyserde.

The library is focused on providing a complete 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 prefixed with F. All nested HAR data has been replaced with type parameters. Some types have no nested HAR data and so have no generic parameters but are included for completeness. All types can be imported from harf_serde.harf or directly from harf_serde.

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. All functions can be imported from harf_serde.morphism or directly from harf_serde.

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]. All types can be imported from harf_serde.har or directly from harf_serde.

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

harf-serde-1.2b3.tar.gz (7.3 kB view details)

Uploaded Source

Built Distribution

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

harf_serde-1.2b3-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file harf-serde-1.2b3.tar.gz.

File metadata

  • Download URL: harf-serde-1.2b3.tar.gz
  • Upload date:
  • Size: 7.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.10.4

File hashes

Hashes for harf-serde-1.2b3.tar.gz
Algorithm Hash digest
SHA256 ec026fc124513c33109c3c34722621cf37900a2b7cf2f26fd00871192450bdb8
MD5 32cce363f4ab9ddae41cac3e5f04f6c1
BLAKE2b-256 66d33ec36ad861f430c8716b08522e03688573698c8ece0da7361f319e64dac4

See more details on using hashes here.

File details

Details for the file harf_serde-1.2b3-py3-none-any.whl.

File metadata

  • Download URL: harf_serde-1.2b3-py3-none-any.whl
  • Upload date:
  • Size: 7.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.10.4

File hashes

Hashes for harf_serde-1.2b3-py3-none-any.whl
Algorithm Hash digest
SHA256 18dc821d8dfecfbff1154d8b25a11446c7a68fac5d2aa3147bcfa895d02898b7
MD5 6c97a71db8a94fd6894040ba318ca6bc
BLAKE2b-256 40eb6c6f31a51655b6d701287b9a7263bd43d3fe47b8ca2fb3d2b237d1283710

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 Pingdom Monitoring Sentry Error logging StatusPage Status page