flytekit.types.file.file
Directory
Classes
| Class | Description |
|---|---|
FlyteFile |
|
FlyteFilePathTransformer |
Methods
| Method | Description |
|---|---|
noop() |
Variables
| Property | Type | Description |
|---|---|---|
MESSAGEPACK |
str |
|
T |
TypeVar |
Methods
noop()
def noop()flytekit.types.file.file.FlyteFile
Parameters
class FlyteFile(
path: typing.Union[str, os.PathLike],
downloader: typing.Callable = noop,
remote_path: typing.Optional[typing.Union[os.PathLike, str, bool]] = None,
metadata: typing.Optional[dict[str, str]] = None,
)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]] |
Properties
| Property | Type | Description |
|---|---|---|
downloaded |
bool |
|
remote_path |
typing.Optional[os.PathLike] |
|
remote_source |
str |
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. |
Methods
| Method | Description |
|---|---|
deserialize_flyte_file() |
|
download() |
|
extension() |
|
from_dict() |
|
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() |
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 = None,
)| Parameter | Type | Description |
|---|---|---|
d |
||
dialect |
from_source()
def from_source(
source: str | os.PathLike,
) -> FlyteFileCreate 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,
) -> FlyteFileCreate 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] = None,
alt: typing.Optional[str] = None,
) -> FlyteFileCreate 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] = None,
cache_options: typing.Optional[typing.Dict[str, typing.Any]] = None,
)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:type mode: str :type cache_type: str, optional :type cache_options: Dict[str, Any], optional
| Parameter | Type | Description |
|---|---|---|
mode |
str |
Open mode. For example |
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. |
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. |
serialize_flyte_file()
def serialize_flyte_file()to_dict()
def to_dict()flytekit.types.file.file.FlyteFilePathTransformer
Parameters
def FlyteFilePathTransformer()Properties
| Property | Type | Description |
|---|---|---|
is_async |
bool |
|
name |
None |
|
python_type |
Type[T] |
This returns the python type |
type_assertions_enabled |
bool |
Indicates if the transformer wants type assertions to be enabled at the core type engine layer |
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() |
|
schema_match() |
Check if a JSON schema fragment matches this transformer’s python_type. |
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,
) -> LiteralConverts 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],
) -> FlyteFileConverts 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],
) -> FlyteFileIf 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)
- The deserialization is the same as put a flyte file in a dataclass, which will deserialize by the mashumaro’s API.
Related PR:
- Title: Override Dataclass Serialization/Deserialization Behavior for FlyteTypes via Mashumaro
- Link: https://github.com/flyteorg/flytekit/pull/2554
| 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],
) -> FlyteFileIf 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)
- The deserialization is the same as put a flyte file in a dataclass, which will deserialize by the mashumaro’s API.
Related PR:
- Title: Override Dataclass Serialization/Deserialization Behavior for FlyteTypes via Mashumaro
- Link: https://github.com/flyteorg/flytekit/pull/2554
| 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],
) -> LiteralTypeConverts 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 |
schema_match()
def schema_match(
schema: dict,
) -> boolCheck if a JSON schema fragment matches this transformer’s python_type.
For BaseModel subclasses, automatically compares the schema’s title, type, and required fields against the type’s own JSON schema. For other types, returns False by default — override if needed.
| Parameter | Type | Description |
|---|---|---|
schema |
dict |
to_html()
def to_html(
ctx: FlyteContext,
python_val: T,
expected_python_type: Type[T],
) -> strConverts 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,
) -> LiteralConverts 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
| Exception | Description |
|---|---|
ValueError |
If the real type of the file is not the same as the expected python_type |