Source code for rdata._read

"""Functions to perform parsing and conversion in one step."""
from __future__ import annotations

from typing import TYPE_CHECKING, Any

from .conversion._conversion import DEFAULT_CLASS_MAP, ConstructorDict, convert
from .parser._parser import (
    DEFAULT_ALTREP_MAP,
    AcceptableFile,
    AltRepConstructorMap,
    Traversable,
    parse_file,
)

if TYPE_CHECKING:
    import os
    from collections.abc import MutableMapping


def read_rdata(  # noqa: PLR0913
    file_or_path: AcceptableFile | os.PathLike[Any] | Traversable | str,
    *,
    expand_altrep: bool = True,
    altrep_constructor_dict: AltRepConstructorMap = DEFAULT_ALTREP_MAP,
    extension: str | None = None,
    constructor_dict: ConstructorDict = DEFAULT_CLASS_MAP,
    default_encoding: str | None = None,
    force_default_encoding: bool = False,
    global_environment: MutableMapping[str, Any] | None = None,
    base_environment: MutableMapping[str, Any] | None = None,
) -> Any:  # noqa: ANN401
    parsed = parse_file(
        file_or_path=file_or_path,
        expand_altrep=expand_altrep,
        altrep_constructor_dict=altrep_constructor_dict,
        extension=extension,
    )

    return convert(
        parsed,
        constructor_dict=constructor_dict,
        default_encoding=default_encoding,
        force_default_encoding=force_default_encoding,
        global_environment=global_environment,
        base_environment=base_environment,
    )


[docs] def read_rds( # noqa: PLR0913 file_or_path: AcceptableFile | os.PathLike[Any] | Traversable | str, *, expand_altrep: bool = True, altrep_constructor_dict: AltRepConstructorMap = DEFAULT_ALTREP_MAP, constructor_dict: ConstructorDict = DEFAULT_CLASS_MAP, default_encoding: str | None = None, force_default_encoding: bool = False, global_environment: MutableMapping[str, Any] | None = None, base_environment: MutableMapping[str, Any] | None = None, ) -> Any: # noqa: ANN401 """ Read an RDS file, containing an R object. This is a convenience function that wraps :func:`rdata.parser.parse_file` and :func:`rdata.parser.convert`, as it is the common use case. Args: file_or_path: File in the RDS format. expand_altrep: Whether to translate ALTREPs to normal objects. altrep_constructor_dict: Dictionary mapping each ALTREP to its constructor. constructor_dict: Dictionary mapping names of R classes to constructor functions with the following prototype: .. code-block :: python def constructor(obj, attrs): ... This dictionary can be used to support custom R classes. By default, the dictionary used is :data:`~rdata.conversion._conversion.DEFAULT_CLASS_MAP` which has support for several common classes. default_encoding: Default encoding used for strings with unknown encoding. If `None`, the one stored in the file will be used, or ASCII as a fallback. force_default_encoding: Use the default encoding even if the strings specify other encoding. global_environment: Global environment to use. By default is an empty environment. base_environment: Base environment to use. By default is an empty environment. Returns: Contents of the file converted to a Python object. See Also: :func:`read_rda`: Similar function that parses a RDA or RDATA file. Examples: Parse one of the included examples, containing a dataframe >>> import rdata >>> >>> data = rdata.read_rds( ... rdata.TESTDATA_PATH / "test_dataframe.rds" ... ) >>> data class value 1 a 1 2 b 2 3 b 3 """ return read_rdata( file_or_path=file_or_path, expand_altrep=expand_altrep, altrep_constructor_dict=altrep_constructor_dict, extension=".rds", constructor_dict=constructor_dict, default_encoding=default_encoding, force_default_encoding=force_default_encoding, global_environment=global_environment, base_environment=base_environment, )
[docs] def read_rda( # noqa: PLR0913 file_or_path: AcceptableFile | os.PathLike[Any] | Traversable | str, *, expand_altrep: bool = True, altrep_constructor_dict: AltRepConstructorMap = DEFAULT_ALTREP_MAP, constructor_dict: ConstructorDict = DEFAULT_CLASS_MAP, default_encoding: str | None = None, force_default_encoding: bool = False, global_environment: MutableMapping[str, Any] | None = None, base_environment: MutableMapping[str, Any] | None = None, ) -> dict[str, Any]: """ Read an RDA or RDATA file, containing an R object. This is a convenience function that wraps :func:`rdata.parser.parse_file` and :func:`rdata.parser.convert`, as it is the common use case. Args: file_or_path: File in the RDA format. expand_altrep: Whether to translate ALTREPs to normal objects. altrep_constructor_dict: Dictionary mapping each ALTREP to its constructor. constructor_dict: Dictionary mapping names of R classes to constructor functions with the following prototype: .. code-block :: python def constructor(obj, attrs): ... This dictionary can be used to support custom R classes. By default, the dictionary used is :data:`~rdata.conversion._conversion.DEFAULT_CLASS_MAP` which has support for several common classes. default_encoding: Default encoding used for strings with unknown encoding. If `None`, the one stored in the file will be used, or ASCII as a fallback. force_default_encoding: Use the default encoding even if the strings specify other encoding. global_environment: Global environment to use. By default is an empty environment. base_environment: Base environment to use. By default is an empty environment. Returns: Contents of the file converted to a Python object. See Also: :func:`read_rds`: Similar function that parses a RDS file. Examples: Parse one of the included examples, containing a dataframe >>> import rdata >>> >>> data = rdata.read_rda( ... rdata.TESTDATA_PATH / "test_dataframe.rda" ... ) >>> data {'test_dataframe': class value 1 a 1 2 b 2 3 b 3} """ return read_rdata( # type: ignore[no-any-return] file_or_path=file_or_path, expand_altrep=expand_altrep, altrep_constructor_dict=altrep_constructor_dict, extension=".rda", constructor_dict=constructor_dict, default_encoding=default_encoding, force_default_encoding=force_default_encoding, global_environment=global_environment, base_environment=base_environment, )