AddressReader

class lsst.pipe.base.quantum_graph.AddressReader(stream: ~typing.IO[bytes], int_size: int, n_rows: int, n_addresses: int, rows_per_page: int, rows: dict[uuid.UUID, lsst.pipe.base.quantum_graph._multiblock.AddressRow] = <factory>, rows_by_index: dict[int, lsst.pipe.base.quantum_graph._multiblock.AddressRow] = <factory>, pages: list[lsst.pipe.base.quantum_graph._multiblock.AddressPage] = <factory>, page_bounds: dict[int, lsst.pipe.base.quantum_graph._multiblock.PageBounds] = <factory>)

Bases: object

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

Attributes Summary

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, ...)

Construct from a stream by reading the header.

open_in_zip(zf, name, *, page_size, ...)

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

read_all()

Read all addresses in the file.

Attributes Documentation

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, n_addresses: int, int_size: int) 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.

n_addressesint

Number of addresses to expect per row. This is checked against the size embedded in the file.

int_sizeint

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

classmethod open_in_zip(zf: zipfile.ZipFile, name: str, *, page_size: int, n_addresses: int, int_size: int) 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.

n_addressesint

Number of addresses to expect per row. This is checked against the size embedded in the file.

int_sizeint

Number of bytes to use for all integers. This is checked against the size embedded 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.