1.16.10

flytekit.types.file.file

Directory

Classes

Class Description
FlyteFile
FlyteFilePathTransformer Base transformer type that should be implemented for every python native type that can be handled by flytekit.

Methods

Method Description
noop()

Variables

Property Type Description
MESSAGEPACK str
T TypeVar

Methods

noop()

def noop()

flytekit.types.file.file.FlyteFile

class FlyteFile(
    path: typing.Union[str, os.PathLike],
    downloader: typing.Callable,
    remote_path: typing.Optional[typing.Union[os.PathLike, str, bool]],
    metadata: typing.Optional[dict[str, str]],
)

FlyteFile’s init method.

Parameter Type Description
path typing.Union[str, os.PathLike] The source path that users are expected to call open() on.
downloader typing.Callable Optional function that can be passed that used to delay downloading of the actual fil until a user actually calls open().
remote_path typing.Optional[typing.Union[os.PathLike, str, bool]] If the user wants to return something and also specify where it should be uploaded to. Alternatively, if the user wants to specify a remote path for a file that’s already in the blob store, the path should point to the location and remote_path should be set to False.
metadata typing.Optional[dict[str, str]]

Methods

Method Description
deserialize_flyte_file()
download()
extension()
from_dict()
from_json()
from_source() Create a new FlyteFile object with the remote source set to the input.
new() Create a new FlyteFile object in the current Flyte working directory.
new_remote_file() Create a new FlyteFile object with a remote path.
open() Returns a streaming File handle.
serialize_flyte_file()
to_dict()
to_json()

deserialize_flyte_file()

def deserialize_flyte_file(
    info,
) -> 'FlyteFile'
Parameter Type Description
info

download()

def download()

extension()

def extension()

from_dict()

def from_dict(
    d,
    dialect,
)
Parameter Type Description
d
dialect

from_json()

def from_json(
    data: typing.Union[str, bytes, bytearray],
    decoder: collections.abc.Callable[[typing.Union[str, bytes, bytearray]], dict[typing.Any, typing.Any]],
    from_dict_kwargs: typing.Any,
) -> ~T
Parameter Type Description
data typing.Union[str, bytes, bytearray]
decoder collections.abc.Callable[[typing.Union[str, bytes, bytearray]], dict[typing.Any, typing.Any]]
from_dict_kwargs typing.Any

from_source()

def from_source(
    source: str | os.PathLike,
) -> FlyteFile

Create a new FlyteFile object with the remote source set to the input

Parameter Type Description
source str | os.PathLike

new()

def new(
    filename: str | os.PathLike,
) -> FlyteFile

Create a new FlyteFile object in the current Flyte working directory

Parameter Type Description
filename str | os.PathLike

new_remote_file()

def new_remote_file(
    name: typing.Optional[str],
    alt: typing.Optional[str],
) -> FlyteFile

Create a new FlyteFile object with a remote path.

Parameter Type Description
name typing.Optional[str] If you want to specify a different name for the file, you can specify it here.
alt typing.Optional[str] If you want to specify a different prefix head than the default one, you can specify it here.

open()

def open(
    mode: str,
    cache_type: typing.Optional[str],
    cache_options: typing.Optional[typing.Dict[str, typing.Any]],
)

Returns a streaming File handle

@task
def copy_file(ff: FlyteFile) -> FlyteFile:
    new_file = FlyteFile.new_remote_file()
    with ff.open("rb", cache_type="readahead") as r:
        with new_file.open("wb") as w:
            w.write(r.read())
    return new_file
Parameter Type Description
mode str Open mode. For example :type mode: str
cache_type typing.Optional[str] Specifies the cache type. Possible values are “blockcache”, “bytes”, “mmap”, “readahead”, “first”, or “background”. This is especially useful for large file reads. See https://filesystem-spec.readthedocs.io/en/latest/api.html#readbuffering. :type cache_type: str, optional
cache_options typing.Optional[typing.Dict[str, typing.Any]] A Dict corresponding to the parameters for the chosen cache_type. Refer to fsspec caching options above. :type cache_options: Dict[str, Any], optional

serialize_flyte_file()

def serialize_flyte_file()

to_dict()

def to_dict()

to_json()

def to_json(
    encoder: collections.abc.Callable[[typing.Any], typing.Union[str, bytes, bytearray]],
    to_dict_kwargs: typing.Any,
) -> typing.Union[str, bytes, bytearray]
Parameter Type Description
encoder collections.abc.Callable[[typing.Any], typing.Union[str, bytes, bytearray]]
to_dict_kwargs typing.Any

Properties

Property Type Description
downloaded
remote_path
remote_source
If this is an input to a task, and the original path is an s3 bucket, Flytekit downloads the
file for the user. In case the user wants access to the original path, it will be here.

flytekit.types.file.file.FlyteFilePathTransformer

Base transformer type that should be implemented for every python native type that can be handled by flytekit

def FlyteFilePathTransformer()

Methods

Method Description
assert_type()
async_to_literal() Converts a given python_val to a Flyte Literal, assuming the given python_val matches the declared python_type.
async_to_python_value() Converts the given Literal to a Python Type.
dict_to_flyte_file()
from_binary_idl() If the input is from flytekit, the Life Cycle will be as follows:.
from_generic_idl() If the input is from Flyte Console, the Life Cycle will be as follows:.
get_additional_headers()
get_format()
get_literal_type() Converts the python type to a Flyte LiteralType.
get_mime_type_from_extension()
guess_python_type() Converts the Flyte LiteralType to a python object type.
isinstance_generic()
to_html() Converts any python val (dataframe, int, float) to a html string, and it will be wrapped in the HTML div.
to_literal() Converts a given python_val to a Flyte Literal, assuming the given python_val matches the declared python_type.
to_python_value() Converts the given Literal to a Python Type.
validate_file_type() This method validates the type of the file at source_path against the expected python_type.

assert_type()

def assert_type(
    t: typing.Union[typing.Type[FlyteFile], os.PathLike],
    v: typing.Union[FlyteFile, os.PathLike, str],
)
Parameter Type Description
t typing.Union[typing.Type[FlyteFile], os.PathLike]
v typing.Union[FlyteFile, os.PathLike, str]

async_to_literal()

def async_to_literal(
    ctx: FlyteContext,
    python_val: typing.Union[FlyteFile, os.PathLike, str],
    python_type: typing.Type[FlyteFile],
    expected: LiteralType,
) -> Literal

Converts a given python_val to a Flyte Literal, assuming the given python_val matches the declared python_type. Implementers should refrain from using type(python_val) instead rely on the passed in python_type. If these do not match (or are not allowed) the Transformer implementer should raise an AssertionError, clearly stating what was the mismatch

Parameter Type Description
ctx FlyteContext A FlyteContext, useful in accessing the filesystem and other attributes
python_val typing.Union[FlyteFile, os.PathLike, str] The actual value to be transformed
python_type typing.Type[FlyteFile] The assumed type of the value (this matches the declared type on the function)
expected LiteralType Expected Literal Type

async_to_python_value()

def async_to_python_value(
    ctx: FlyteContext,
    lv: Literal,
    expected_python_type: typing.Union[typing.Type[FlyteFile], os.PathLike],
) -> FlyteFile

Converts the given Literal to a Python Type. If the conversion cannot be done an AssertionError should be raised

Parameter Type Description
ctx FlyteContext FlyteContext
lv Literal The received literal Value
expected_python_type typing.Union[typing.Type[FlyteFile], os.PathLike] Expected native python type that should be returned

dict_to_flyte_file()

def dict_to_flyte_file(
    dict_obj: typing.Dict[str, str],
    expected_python_type: typing.Union[typing.Type[FlyteFile], os.PathLike],
) -> FlyteFile
Parameter Type Description
dict_obj typing.Dict[str, str]
expected_python_type typing.Union[typing.Type[FlyteFile], os.PathLike]

from_binary_idl()

def from_binary_idl(
    binary_idl_object: Binary,
    expected_python_type: typing.Union[typing.Type[FlyteFile], os.PathLike],
) -> FlyteFile

If the input is from flytekit, the Life Cycle will be as follows:

Life Cycle: binary IDL -> resolved binary -> bytes -> expected Python object (flytekit customized (propeller processing) (flytekit binary IDL) (flytekit customized serialization) deserialization)

Example Code: @dataclass class DC: ff: FlyteFile

@workflow
def wf(dc: DC):
    t_ff(dc.ff)

Note:

  • The deserialization is the same as put a flyte file in a dataclass, which will deserialize by the mashumaro’s API.

Related PR:

Parameter Type Description
binary_idl_object Binary
expected_python_type typing.Union[typing.Type[FlyteFile], os.PathLike]

from_generic_idl()

def from_generic_idl(
    generic: Struct,
    expected_python_type: typing.Union[typing.Type[FlyteFile], os.PathLike],
) -> FlyteFile

If the input is from Flyte Console, the Life Cycle will be as follows:

Life Cycle: json str -> protobuf struct -> resolved protobuf struct -> expected Python object (console user input) (console output) (propeller) (flytekit customized deserialization)

Example Code: @dataclass class DC: ff: FlyteFile

@workflow def wf(dc: DC): t_ff(dc.ff)

Note:

  • The deserialization is the same as put a flyte file in a dataclass, which will deserialize by the mashumaro’s API.

Related PR:

Parameter Type Description
generic Struct
expected_python_type typing.Union[typing.Type[FlyteFile], os.PathLike]

get_additional_headers()

def get_additional_headers(
    source_path: str | os.PathLike,
) -> typing.Dict[str, str]
Parameter Type Description
source_path str | os.PathLike

get_format()

def get_format(
    t: typing.Union[typing.Type[FlyteFile], os.PathLike],
) -> str
Parameter Type Description
t typing.Union[typing.Type[FlyteFile], os.PathLike]

get_literal_type()

def get_literal_type(
    t: typing.Union[typing.Type[FlyteFile], os.PathLike],
) -> LiteralType

Converts the python type to a Flyte LiteralType

Parameter Type Description
t typing.Union[typing.Type[FlyteFile], os.PathLike]

get_mime_type_from_extension()

def get_mime_type_from_extension(
    extension: str,
) -> typing.Union[str, typing.Sequence[str]]
Parameter Type Description
extension str

guess_python_type()

def guess_python_type(
    literal_type: LiteralType,
) -> typing.Type[FlyteFile[typing.Any]]

Converts the Flyte LiteralType to a python object type.

Parameter Type Description
literal_type LiteralType

isinstance_generic()

def isinstance_generic(
    obj,
    generic_alias,
)
Parameter Type Description
obj
generic_alias

to_html()

def to_html(
    ctx: FlyteContext,
    python_val: T,
    expected_python_type: Type[T],
) -> str

Converts any python val (dataframe, int, float) to a html string, and it will be wrapped in the HTML div

Parameter Type Description
ctx FlyteContext
python_val T
expected_python_type Type[T]

to_literal()

def to_literal(
    ctx: FlyteContext,
    python_val: typing.Any,
    python_type: Type[T],
    expected: LiteralType,
) -> Literal

Converts a given python_val to a Flyte Literal, assuming the given python_val matches the declared python_type. Implementers should refrain from using type(python_val) instead rely on the passed in python_type. If these do not match (or are not allowed) the Transformer implementer should raise an AssertionError, clearly stating what was the mismatch

Parameter Type Description
ctx FlyteContext A FlyteContext, useful in accessing the filesystem and other attributes
python_val typing.Any The actual value to be transformed
python_type Type[T] The assumed type of the value (this matches the declared type on the function)
expected LiteralType Expected Literal Type

to_python_value()

def to_python_value(
    ctx: FlyteContext,
    lv: Literal,
    expected_python_type: Type[T],
) -> Optional[T]

Converts the given Literal to a Python Type. If the conversion cannot be done an AssertionError should be raised

Parameter Type Description
ctx FlyteContext FlyteContext
lv Literal The received literal Value
expected_python_type Type[T] Expected native python type that should be returned

validate_file_type()

def validate_file_type(
    python_type: typing.Type[FlyteFile],
    source_path: typing.Union[str, os.PathLike],
)

This method validates the type of the file at source_path against the expected python_type. It uses the magic library to determine the real type of the file. If the magic library is not installed, it logs a debug message and returns. If the actual file does not exist, it returns without raising an error.

Parameter Type Description
python_type typing.Type[FlyteFile] The expected type of the file
source_path typing.Union[str, os.PathLike] The path to the file to validate :raises ValueError: If the real type of the file is not the same as the expected python_type

Properties

Property Type Description
is_async
name
python_type
This returns the python type
type_assertions_enabled
Indicates if the transformer wants type assertions to be enabled at the core type engine layer