AddressReader

class lsst.pipe.base.quantum_graph.AddressReader(stream: IO[bytes], int_size: int, n_rows: int, n_addresses: int, start_index: int, rows: dict[uuid.UUID, lsst.pipe.base.quantum_graph._multiblock.AddressRow], rows_per_page: int, unread_pages: dict[int, int])

Bases: object

A helper object for reading address files for multi-block files.

Attributes Summary

MAX_UUID_INT

The maximum value of a UUID's integer form.

header_size

The size (in bytes) of the header of this address file.

row_size

The size (in bytes) of each row of this address file.

Methods Summary

compute_header_size(int_size)

Return the size (in bytes) of the header of an address file.

compute_row_size(int_size, n_addresses)

Return the size (in bytes) of each row of an address file.

find(key)

Read the row for the given UUID.

from_stream(stream, page_size[, start_index])

Construct from a stream by reading the header.

open_in_zip(zf, name, page_size[, int_size, ...])

Make a reader for an address file in a zip archive.

read_all()

Read all addresses in the file.

Attributes Documentation

MAX_UUID_INT: ClassVar[int] = 340282366920938463463374607431768211456

The maximum value of a UUID’s integer form.

header_size

The size (in bytes) of the header of this address file.

row_size

The size (in bytes) of each row of this address file.

Methods Documentation

static compute_header_size(int_size: int) int

Return the size (in bytes) of the header of an address file.

Parameters:
int_sizeint

Size of each integer in bytes.

Returns:
sizeint

Size of the header in bytes.

static compute_row_size(int_size: int, n_addresses: int) int

Return the size (in bytes) of each row of an address file.

Parameters:
int_sizeint

Size of each integer in bytes.

n_addressesint

Number of addresses in each row.

Returns:
sizeint

Size of each row in bytes.

find(key: UUID) AddressRow

Read the row for the given UUID.

Parameters:
keyuuid.UUID

UUID to find.

Returns:
rowAddressRow

Addresses for the given UUID.

classmethod from_stream(stream: IO[bytes], page_size: int, start_index: int = 0) AddressReader

Construct from a stream by reading the header.

Parameters:
streamtyping.IO [ bytes ]

File-like object to read from.

page_sizeint

Approximate number of bytes to read at a time when searching for an address.

start_indexint, optional

Value of the first index in the file.

classmethod open_in_zip(zf: zipfile.ZipFile, name: str, page_size: int, int_size: int | None = None, start_index: int = 0) Iterator[AddressReader]

Make a reader for an address file in a zip archive.

Parameters:
zfzipfile.ZipFile

Zip archive to read the file from.

namestr

Base name for the address file; an extension will be added.

page_sizeint

Approximate number of bytes to read at a time when searching for an address.

int_sizeint, optional

Number of bytes to use for all integers. This is checked against the size embedded in the file.

start_indexint, optional

Value of the first index in the file.

Returns:
readercontextlib.AbstractContextManager [ AddressReader ]

Context manager that returns a reader when entered.

read_all() dict[uuid.UUID, lsst.pipe.base.quantum_graph._multiblock.AddressRow]

Read all addresses in the file.

Returns:
rowsdict [ uuid.UUID, AddressRow ]

Mapping of loaded address rows, keyed by UUID.