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 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]

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.2b2.tar.gz (6.1 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.2b2-py3-none-any.whl (7.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: harf-serde-1.2b2.tar.gz
  • Upload date:
  • Size: 6.1 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.2b2.tar.gz
Algorithm Hash digest
SHA256 afd46a1e84e032cb614f3f33290e90abb9fcf698bf4b6458e44812c0009cdbe3
MD5 6e7440bddbb5f1f924bc153bcfe93d04
BLAKE2b-256 3d67bcb523f9c7126df5b783217642a214045c0b3de3b097c7acc091bde9a0da

See more details on using hashes here.

File details

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

File metadata

  • Download URL: harf_serde-1.2b2-py3-none-any.whl
  • Upload date:
  • Size: 7.0 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.2b2-py3-none-any.whl
Algorithm Hash digest
SHA256 9a27dadbad0b11cdc9762e4bb7d1b1be8606c58094f13c8206d1e92f884d1118
MD5 6a1eafb17d8fe214af4460197bee4624
BLAKE2b-256 ad3ba860ead36993bc76e5bc49a72b7dadb6d5b8f8e6882d3d126948c757668d

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