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

int_size

Size of each integer in bytes.

n_addresses

Number of addresses in each row.

n_rows

Number of rows in the file.

page_bounds

Mapping from page index to page boundary information.

pages

Descriptions of the file offsets and integer row indexes of pages and flags for whether they have been read already.

row_size

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

rows

Rows that have already been read.

rows_per_page

Number of addresses in each page.

stream

Stream to read from.

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 or integer index.

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

int_size: int = <dataclasses._MISSING_TYPE object>#

Size of each integer in bytes.

n_addresses: int = <dataclasses._MISSING_TYPE object>#

Number of addresses in each row.

n_rows: int = <dataclasses._MISSING_TYPE object>#

Number of rows in the file.

page_bounds: dict[int, PageBounds] = <dataclasses._MISSING_TYPE object>#

Mapping from page index to page boundary information.

pages: list[AddressPage] = <dataclasses._MISSING_TYPE object>#

Descriptions of the file offsets and integer row indexes of pages and flags for whether they have been read already.

row_size#

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

rows: dict[UUID, AddressRow] = <dataclasses._MISSING_TYPE object>#

Rows that have already been read.

rows_per_page: int = <dataclasses._MISSING_TYPE object>#

Number of addresses in each page.

stream: IO[bytes] = <dataclasses._MISSING_TYPE object>#

Stream to read from.

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 or integer index.

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, AddressRow]#

Read all addresses in the file.

Returns#

rowsdict [ uuid.UUID, AddressRow ]

Mapping of loaded address rows, keyed by UUID.