nafcodec-py 0.3.1

PyO3 bindings and Python interface to the nafcodec crate.
Documentation
import os
import typing
from types import TracebackType
from typing import Type, Union, Iterator, Optional, BinaryIO, ContextManager

try:
    from typing import Literal
except ImportError:
    from typing_extensions import Literal  # type: ignore

__version__: str
__author__: str

if typing.TYPE_CHECKING:
    SEQUENCE_TYPE = Literal["dna", "rna", "protein", "text"]
    FORMAT_VERSION = Literal["v1", "v2"]

class Record:
    id: Optional[str]
    comment: Optional[str]
    sequence: Optional[str]
    quality: Optional[str]
    length: Optional[int]
    def __init__(
        self,
        *,
        id: Optional[str] = None,
        comment: Optional[str] = None,
        sequence: Optional[str] = None,
        quality: Optional[str] = None,
        length: Optional[int] = None,
    ): ...
    def __repr__(self) -> str: ...

class Decoder(Iterator[Record], ContextManager[Decoder]):
    def __init__(
        self,
        file: Union[str, os.PathLike[str], BinaryIO],
        *,
        id: bool = True,
        comment: bool = True,
        sequence: bool = True,
        quality: bool = True,
        mask: bool = True,
        buffer_size: Optional[int] = None,
    ) -> None: ...
    def __iter__(self) -> Decoder: ...
    def __next__(self) -> Record: ...
    def __len__(self) -> int: ...
    def __enter__(self) -> Decoder: ...
    def __exit__(
        self,
        exc_type: Optional[Type[BaseException]],
        exc_value: Optional[BaseException],
        traceback: Optional[TracebackType],
    ) -> bool: ...
    @property
    def sequence_type(self) -> SEQUENCE_TYPE: ...
    @property
    def format_version(self) -> FORMAT_VERSION: ...
    @property
    def line_length(self) -> int: ...
    @property
    def name_separator(self) -> str: ...
    @property
    def number_of_sequences(self) -> int: ...
    def read(self) -> Optional[Record]: ...

class Encoder(ContextManager[Encoder]):
    def __init__(
        self,
        file: Union[str, os.PathLike[str], BinaryIO],
        sequence_type: SEQUENCE_TYPE = "dna",
        *,
        id: bool = False,
        comment: bool = False,
        sequence: bool = False,
        quality: bool = False,
    ): ...
    def __enter__(self) -> Encoder: ...
    def __exit__(
        self,
        exc_type: Optional[Type[BaseException]],
        exc_value: Optional[BaseException],
        traceback: Optional[TracebackType],
    ) -> bool: ...
    def write(self, record: Record) -> None: ...
    def close(self) -> None: ...

@typing.overload
def open(
    file: Union[str, os.PathLike[str], BinaryIO],
    mode: Literal["r"],
    **options,
) -> Decoder: ...
@typing.overload
def open(
    file: Union[str, os.PathLike[str], BinaryIO],
    mode: Literal["w"],
    sequence_type: SEQUENCE_TYPE = "dna",
    **options,
) -> Encoder: ...
@typing.overload
def open(
    file: Union[str, os.PathLike[str], BinaryIO],
    mode: Literal["r", "w"] = "r",
    **options,
) -> Union[Decoder, Encoder]: ...