Source code for rdata._write

"""Functions to perform conversion and unparsing in one step."""

from __future__ import annotations

from typing import TYPE_CHECKING

from .conversion import (
    convert_python_to_r_data,
)
from .conversion.to_r import (
    DEFAULT_CLASS_MAP,
    DEFAULT_FORMAT_VERSION,
)
from .unparser import unparse_file

if TYPE_CHECKING:
    import os
    from typing import Any

    from .conversion.to_r import ConstructorDict, Encoding
    from .unparser import Compression, FileFormat


[docs] def write_rds( path: os.PathLike[Any] | str, data: Any, # noqa: ANN401 *, file_format: FileFormat = "xdr", compression: Compression = "gzip", encoding: Encoding = "utf-8", format_version: int = DEFAULT_FORMAT_VERSION, constructor_dict: ConstructorDict = DEFAULT_CLASS_MAP, ) -> None: """ Write an RDS file. This is a convenience function that wraps conversion and unparsing as it is the common use case. Args: path: File path to be written. data: Python data object. file_format: File format. compression: Compression. encoding: Encoding to be used for strings within data. format_version: File format version. constructor_dict: Dictionary mapping Python classes to functions converting them to R classes. See Also: :func:`write_rda`: Similar function that writes an RDA or RDATA file. Examples: Write a Python object to an RDS file. >>> import rdata >>> >>> data = ["hello", 1, 2.2, 3.3+4.4j] >>> rdata.write_rds("test.rds", data) """ r_data = convert_python_to_r_data( data, encoding=encoding, format_version=format_version, constructor_dict=constructor_dict, ) unparse_file( path, r_data, file_type="rds", file_format=file_format, compression=compression, )
[docs] def write_rda( path: os.PathLike[Any] | str, data: dict[str, Any], *, file_format: FileFormat = "xdr", compression: Compression = "gzip", encoding: Encoding = "utf-8", format_version: int = DEFAULT_FORMAT_VERSION, constructor_dict: ConstructorDict = DEFAULT_CLASS_MAP, ) -> None: """ Write an RDA or RDATA file. This is a convenience function that wraps conversion and unparsing as it is the common use case. Args: path: File path to be written. data: Python dictionary with data and variable names. file_format: File format. compression: Compression. encoding: Encoding to be used for strings within data. format_version: File format version. constructor_dict: Dictionary mapping Python classes to functions converting them to R classes. See Also: :func:`write_rds`: Similar function that writes an RDS file. Examples: Write a Python dictionary to an RDA file. >>> import rdata >>> >>> data = {"name": "hello", "values": [1, 2.2, 3.3+4.4j]} >>> rdata.write_rda("test.rda", data) """ r_data = convert_python_to_r_data( data, encoding=encoding, format_version=format_version, constructor_dict=constructor_dict, file_type="rda", ) unparse_file( path, r_data, file_type="rda", file_format=file_format, compression=compression, )