# Copyright 2019 The TensorFlow Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ==============================================================================
"""Constants for Keras SavedModel serialization."""

# Namespace used to store all attributes added during serialization.
# e.g. the list of layers can be accessed using `loaded.keras_api.layers`, in an
# object loaded from `tf.saved_model.load()`.
KERAS_ATTR = 'keras_api'

# Keys for the serialization cache.
# Maps to the keras serialization dict {Layer --> SerializedAttributes object}
KERAS_CACHE_KEY = 'keras_serialized_attributes'


# Name of Keras metadata file stored in the SavedModel.
SAVED_METADATA_PATH = 'keras_metadata.pb'

# Names of SavedObject Keras identifiers.
INPUT_LAYER_IDENTIFIER = '_tf_keras_input_layer'
LAYER_IDENTIFIER = '_tf_keras_layer'
METRIC_IDENTIFIER = '_tf_keras_metric'
MODEL_IDENTIFIER = '_tf_keras_model'
NETWORK_IDENTIFIER = '_tf_keras_network'
RNN_LAYER_IDENTIFIER = '_tf_keras_rnn_layer'
SEQUENTIAL_IDENTIFIER = '_tf_keras_sequential'

KERAS_OBJECT_IDENTIFIERS = (
    INPUT_LAYER_IDENTIFIER,
    LAYER_IDENTIFIER,
    METRIC_IDENTIFIER,
    MODEL_IDENTIFIER,
    NETWORK_IDENTIFIER,
    RNN_LAYER_IDENTIFIER,
    SEQUENTIAL_IDENTIFIER,
)
