load("//tensorflow:strict.default.bzl", "py_strict_library")

package(
    # copybara:uncomment default_applicable_licenses = ["//tensorflow:license"],
    default_visibility = ["//tensorflow:internal"],
    licenses = ["notice"],
)

py_strict_library(
    name = "structured_function",
    srcs = ["structured_function.py"],
    srcs_version = "PY3",
    deps = [
        ":debug_mode",
        "//tensorflow/python/autograph/core:ag_ctx",
        "//tensorflow/python/autograph/impl:api",
        "//tensorflow/python/data/util:nest",
        "//tensorflow/python/data/util:structure",
        "//tensorflow/python/eager:context",
        "//tensorflow/python/eager:def_function",
        "//tensorflow/python/framework:function",
        "//tensorflow/python/framework:ops",
        "//tensorflow/python/ops:script_ops",
        "//tensorflow/python/util:function_utils",
        "//tensorflow/python/util:lazy_loader",
        "//tensorflow/python/util:variable_utils",
    ],
)

py_strict_library(
    name = "debug_mode",
    srcs = ["debug_mode.py"],
    deps = [
        "//tensorflow/python/eager:context",
        "//tensorflow/python/util:tf_export",
    ],
)

py_strict_library(
    name = "test_mode",
    srcs = ["test_mode.py"],
)

py_strict_library(
    name = "dataset_ops",
    # Grouped together due to mutual dependencies, to avoid dependency cycles.
    srcs = [
        "batch_op.py",
        "cache_op.py",
        "choose_from_datasets_op.py",
        "concatenate_op.py",
        "counter_op.py",
        "dataset_autograph.py",
        "dataset_ops.py",
        "directed_interleave_op.py",
        "filter_op.py",
        "flat_map_op.py",
        "from_generator_op.py",
        "from_sparse_tensor_slices_op.py",
        "from_tensor_slices_op.py",
        "from_tensors_op.py",
        "group_by_window_op.py",
        "ignore_errors_op.py",
        "interleave_op.py",
        "load_op.py",
        "map_op.py",
        "padded_batch_op.py",
        "prefetch_op.py",
        "ragged_batch_op.py",
        "random_op.py",
        "range_op.py",
        "rebatch_op.py",
        "repeat_op.py",
        "sample_from_datasets_op.py",
        "save_op.py",
        "scan_op.py",
        "shard_op.py",
        "shuffle_op.py",
        "skip_op.py",
        "snapshot_op.py",
        "sparse_batch_op.py",
        "take_op.py",
        "take_while_op.py",
        "unbatch_op.py",
        "unique_op.py",
        "window_op.py",
        "zip_op.py",
    ],
    srcs_version = "PY3",
    deps = [
        ":debug_mode",
        ":iterator_ops",
        ":options",
        ":structured_function",
        "//tensorflow/core:protos_all_py",
        "//tensorflow/python:tf2",
        "//tensorflow/python/autograph/operators:control_flow",
        "//tensorflow/python/autograph/operators:py_builtins",
        "//tensorflow/python/checkpoint",
        "//tensorflow/python/checkpoint:checkpoint_management",
        "//tensorflow/python/data/experimental/ops:take_while_ops",
        "//tensorflow/python/data/experimental/service:_pywrap_snapshot_utils",
        "//tensorflow/python/data/util:convert",
        "//tensorflow/python/data/util:nest",
        "//tensorflow/python/data/util:random_seed",
        "//tensorflow/python/data/util:sparse",  # build_cleaner: keep
        "//tensorflow/python/data/util:structure",
        "//tensorflow/python/data/util:traverse",
        "//tensorflow/python/eager:context",
        "//tensorflow/python/eager:def_function",
        "//tensorflow/python/eager:wrap_function",
        "//tensorflow/python/framework:auto_control_deps",
        "//tensorflow/python/framework:auto_control_deps_utils",
        "//tensorflow/python/framework:composite_tensor",
        "//tensorflow/python/framework:constant_op",
        "//tensorflow/python/framework:dtypes",
        "//tensorflow/python/framework:function",
        "//tensorflow/python/framework:ops",
        "//tensorflow/python/framework:random_seed",
        "//tensorflow/python/framework:smart_cond",
        "//tensorflow/python/framework:sparse_tensor",
        "//tensorflow/python/framework:tensor",
        "//tensorflow/python/framework:tensor_shape",
        "//tensorflow/python/framework:tensor_spec",
        "//tensorflow/python/framework:tensor_util",
        "//tensorflow/python/framework:type_spec",
        "//tensorflow/python/ops:array_ops",
        "//tensorflow/python/ops:check_ops",
        "//tensorflow/python/ops:cond",
        "//tensorflow/python/ops:control_flow_assert",
        "//tensorflow/python/ops:dataset_ops_gen",
        "//tensorflow/python/ops:experimental_dataset_ops_gen",
        "//tensorflow/python/ops:io_ops_gen",
        "//tensorflow/python/ops:logging_ops",
        "//tensorflow/python/ops:math_ops",
        "//tensorflow/python/ops:parsing_ops_gen",
        "//tensorflow/python/ops:random_ops",
        "//tensorflow/python/ops:script_ops",
        "//tensorflow/python/ops:stateless_random_ops_gen",
        "//tensorflow/python/ops:string_ops",
        "//tensorflow/python/ops:string_ops_gen",
        "//tensorflow/python/ops/ragged:ragged_tensor",
        "//tensorflow/python/platform:gfile",
        "//tensorflow/python/saved_model:nested_structure_coder",
        "//tensorflow/python/trackable:asset",
        "//tensorflow/python/trackable:base",
        "//tensorflow/python/trackable:resource",
        "//tensorflow/python/types:data",
        "//tensorflow/python/types:trace",
        "//tensorflow/python/util:compat",
        "//tensorflow/python/util:deprecation",
        "//tensorflow/python/util:lazy_loader",
        "//tensorflow/python/util:nest",
        "//tensorflow/python/util:tf_export",
        "//third_party/py/numpy",
    ],
)

py_strict_library(
    name = "iterator_ops",
    # Grouped together due to mutual dependencies, to avoid dependency cycles.
    srcs = [
        "iterator_autograph.py",
        "iterator_ops.py",
    ],
    srcs_version = "PY3",
    deps = [
        ":optional_ops",
        ":options",
        "//tensorflow/core:protos_all_py",
        "//tensorflow/python/autograph/core:ag_ctx",
        "//tensorflow/python/autograph/operators:control_flow",
        "//tensorflow/python/autograph/operators:py_builtins",
        "//tensorflow/python/checkpoint:saveable_compat",
        "//tensorflow/python/data/util:nest",
        "//tensorflow/python/data/util:structure",
        "//tensorflow/python/eager:context",
        "//tensorflow/python/framework:composite_tensor",
        "//tensorflow/python/framework:dtypes",
        "//tensorflow/python/framework:errors",
        "//tensorflow/python/framework:ops",
        "//tensorflow/python/framework:tensor",
        "//tensorflow/python/framework:tensor_conversion",
        "//tensorflow/python/framework:tensor_shape",
        "//tensorflow/python/framework:tensor_spec",
        "//tensorflow/python/framework:type_spec",
        "//tensorflow/python/framework:type_utils",
        "//tensorflow/python/ops:cond",
        "//tensorflow/python/ops:dataset_ops_gen",
        "//tensorflow/python/ops:parsing_ops",
        "//tensorflow/python/saved_model:nested_structure_coder",
        "//tensorflow/python/trackable:base",
        "//tensorflow/python/training:saver",
        "//tensorflow/python/util:_pywrap_utils",
        "//tensorflow/python/util:compat",
        "//tensorflow/python/util:deprecation",
        "//tensorflow/python/util:nest",
        "//tensorflow/python/util:tf_export",
        "//third_party/py/numpy",
    ],
)

py_strict_library(
    name = "multi_device_iterator_ops",
    srcs = ["multi_device_iterator_ops.py"],
    srcs_version = "PY3",
    deps = [
        ":dataset_ops",
        ":iterator_ops",
        ":options",
        "//tensorflow/python/data/util:structure",
        "//tensorflow/python/eager:context",
        "//tensorflow/python/eager:def_function",
        "//tensorflow/python/framework:composite_tensor",
        "//tensorflow/python/framework:dtypes",
        "//tensorflow/python/framework:errors",
        "//tensorflow/python/framework:ops",
        "//tensorflow/python/framework:tensor_spec",
        "//tensorflow/python/framework:type_spec",
        "//tensorflow/python/framework:type_utils",
        "//tensorflow/python/ops:array_ops",
        "//tensorflow/python/ops:control_flow_ops",
        "//tensorflow/python/ops:dataset_ops_gen",
        "//tensorflow/python/ops:functional_ops",
        "//tensorflow/python/ops:resource_variable_ops",
    ],
)

py_strict_library(
    name = "optional_ops",
    srcs = ["optional_ops.py"],
    srcs_version = "PY3",
    deps = [
        "//tensorflow/core:protos_all_py",
        "//tensorflow/python/data/util:structure",
        "//tensorflow/python/framework:composite_tensor",
        "//tensorflow/python/framework:dtypes",
        "//tensorflow/python/framework:ops",
        "//tensorflow/python/framework:tensor_spec",
        "//tensorflow/python/framework:type_spec",
        "//tensorflow/python/ops:optional_ops_gen",
        "//tensorflow/python/saved_model:nested_structure_coder",
        "//tensorflow/python/util:deprecation",
        "//tensorflow/python/util:tf_export",
    ],
)

py_strict_library(
    name = "options",
    srcs = ["options.py"],
    srcs_version = "PY3",
    deps = [
        ":test_mode",
        "//tensorflow/core:protos_all_py",
        "//tensorflow/python/data/util:options",
        "//tensorflow/python/util:deprecation",
        "//tensorflow/python/util:tf_export",
        "@absl_py//absl/logging",
    ],
)

py_strict_library(
    name = "readers",
    srcs = ["readers.py"],
    srcs_version = "PY3",
    deps = [
        ":dataset_ops",
        ":structured_function",
        "//tensorflow/python:tf2",
        "//tensorflow/python/data/util:convert",
        "//tensorflow/python/framework:dtypes",
        "//tensorflow/python/framework:ops",
        "//tensorflow/python/framework:tensor_shape",
        "//tensorflow/python/framework:tensor_spec",
        "//tensorflow/python/framework:type_spec",
        "//tensorflow/python/ops:array_ops",
        "//tensorflow/python/ops:dataset_ops_gen",
        "//tensorflow/python/ops:experimental_dataset_ops_gen",
        "//tensorflow/python/types:data",
        "//tensorflow/python/util:nest",
        "//tensorflow/python/util:tf_export",
    ],
)
