Skip to content

API reference

The whole public surface of zttp. It's small on purpose. Everything here is importable straight from zttp (e.g. from zttp import Connection).

Connection

zttp.Connection is the base: the read side, shared by every protocol. Constructing one returns the subclass for the protocol you picked: an H1Connection (the default), an H2Connection, or an H3Connection, so the send surface you get matches the protocol.

zttp.Connection

receive_data

receive_data(data)

next_event

next_event()

data_to_send

data_to_send()

zttp.H1Connection

Bases: Connection

receive_data

receive_data(data)

next_event

next_event()

data_to_send

data_to_send()

start_next_cycle

start_next_cycle()

send_request

send_request(method, target, version, headers)

send_response

send_response(status, headers=...)

send_informational

send_informational(status, headers=...)

send_data

send_data(data)

end_message

end_message(trailers=...)

should_close

should_close()

upgrade

upgrade()

zttp.H2Connection

Bases: Connection

send_window instance-attribute

send_window

receive_data

receive_data(data)

next_event

next_event()

data_to_send

data_to_send()

initiate_connection

initiate_connection()

send_request

send_request(method, target, version, headers)

initiate_upgrade_connection

initiate_upgrade_connection(method, target, headers, settings_header=...)

stream

stream(stream_id)

close

close(error_code=..., last_stream_id=...)

has_pending_send

has_pending_send()

zttp.H3Connection

Bases: Connection

receive_data

receive_data(data)

next_event

next_event()

data_to_send

data_to_send()

receive_datagram

receive_datagram(datagram, now=...)

initiate_connection

initiate_connection()

shutdown

shutdown(stream_id)

stream

stream(stream_id)

next_timeout

next_timeout()

handle_timeout

handle_timeout(now)

is_closed

is_closed()

idle_timed_out

idle_timed_out()

close_info

close_info()

peer_settings

peer_settings()

goaway_received

goaway_received()

close

close(error_code=..., reason=...)

A Stream is the per-stream send handle on an HTTP/2 connection; see HTTP/2.

zttp.Stream

stream_id instance-attribute

stream_id

send_window instance-attribute

send_window

pending_bytes instance-attribute

pending_bytes

send_response

send_response(status, headers=..., end_stream=...)

send_informational

send_informational(status, headers=...)

send_data

send_data(data)

end_message

end_message(trailers=...)

reset

reset(error_code=...)

Roles and protocols

A Connection's role and protocol are fixed at construction:

  • zttp.SERVER: you receive requests, send responses.
  • zttp.CLIENT: you send requests, receive responses.
  • zttp.HTTP1 (default): one message at a time; you send on the connection.
  • zttp.HTTP2: multiplexed streams; you send on a Stream.
  • zttp.HTTP3: the same streams over QUIC; you feed UDP datagrams with receive_datagram (see HTTP/3).

Events

next_event returns one of these. On HTTP/2 and HTTP/3 each also carries a .stream_id.

zttp.Request

method instance-attribute

method

target instance-attribute

target

path instance-attribute

path

query instance-attribute

query

http_version instance-attribute

http_version

headers instance-attribute

headers

stream_id instance-attribute

stream_id

expect_continue instance-attribute

expect_continue

zttp.Response

status_code instance-attribute

status_code

reason instance-attribute

reason

http_version instance-attribute

http_version

headers instance-attribute

headers

stream_id instance-attribute

stream_id

zttp.Data

data instance-attribute

data

stream_id instance-attribute

stream_id

zttp.EndOfMessage

trailers instance-attribute

trailers

stream_id instance-attribute

stream_id

HTTP/2 control events

An HTTP/2 connection also surfaces the protocol's control frames. zttp acts on the ones that matter on its own; they're here when you want visibility.

zttp.Settings

params instance-attribute

params

zttp.WindowUpdate

stream_id instance-attribute

stream_id

increment instance-attribute

increment

zttp.Ping

ack instance-attribute

ack

data instance-attribute

data

zttp.RstStream

stream_id instance-attribute

stream_id

error_code instance-attribute

error_code

zttp.Goaway

last_stream_id instance-attribute

last_stream_id

error_code instance-attribute

error_code

debug instance-attribute

debug

Sentinels

Value Meaning
zttp.NEED_DATA No complete event yet; feed more bytes. Compare with is.
zttp.CONNECTION_CLOSED The peer closed the connection. Compare with is.

Exceptions

zttp.ProtocolError

Bases: Exception

zttp.RemoteProtocolError

Bases: ProtocolError

zttp.LocalProtocolError

Bases: ProtocolError