<br />

|---|
| [![](https://www.tensorflow.org/images/GitHub-Mark-32px.png) View source on GitHub](https://github.com/tensorflow/tensorflow/blob/v2.15.0.post1/tensorflow/python/data/ops/iterator_ops.py#L913-L962) |

Type specification for [`tf.data.Iterator`](https://www.tensorflow.org/versions/r2.15/api_docs/python/tf/data/Iterator).

Inherits From: [`TypeSpec`](https://www.tensorflow.org/versions/r2.15/api_docs/python/tf/TypeSpec), [`TraceType`](https://www.tensorflow.org/versions/r2.15/api_docs/python/tf/types/experimental/TraceType)

    tf.data.IteratorSpec(
        element_spec
    )

For instance, [`tf.data.IteratorSpec`](https://www.tensorflow.org/versions/r2.15/api_docs/python/tf/data/IteratorSpec) can be used to define a tf.function that
takes [`tf.data.Iterator`](https://www.tensorflow.org/versions/r2.15/api_docs/python/tf/data/Iterator) as an input argument:

    @tf.function(input_signature=[tf.data.IteratorSpec(
      tf.TensorSpec(shape=(), dtype=tf.int32, name=None))])
    def square(iterator):
      x = iterator.get_next()
      return x * x
    dataset = tf.data.Dataset.from_tensors(5)
    iterator = iter(dataset)
    print(square(iterator))
    tf.Tensor(25, shape=(), dtype=int32)

<br />

<br />

<br />

| ## Attributes ||
|---|---|
| `element_spec` | A (nested) structure of [`tf.TypeSpec`](https://www.tensorflow.org/versions/r2.15/api_docs/python/tf/TypeSpec) objects that represents the type specification of the iterator elements. |
| `value_type` | The Python type for values that are compatible with this TypeSpec. <br /> In particular, all values that are compatible with this TypeSpec must be an instance of this type. |

<br />

## Methods

### `experimental_as_proto`

[View source](https://github.com/tensorflow/tensorflow/blob/v2.15.0.post1/tensorflow/python/framework/type_spec.py#L218-L223)

    experimental_as_proto() -> struct_pb2.TypeSpecProto

Returns a proto representation of the TypeSpec instance.

Do NOT override for custom non-TF types.

### `experimental_from_proto`

[View source](https://github.com/tensorflow/tensorflow/blob/v2.15.0.post1/tensorflow/python/framework/type_spec.py#L205-L216)

    @classmethod
    experimental_from_proto(
        proto: struct_pb2.TypeSpecProto
    ) -> 'TypeSpec'

Returns a TypeSpec instance based on the serialized proto.

Do NOT override for custom non-TF types.

<br />

<br />

<br />

| Args ||
|---|---|
| `proto` | Proto generated using 'experimental_as_proto'. |

<br />

### `experimental_type_proto`

[View source](https://github.com/tensorflow/tensorflow/blob/v2.15.0.post1/tensorflow/python/framework/type_spec.py#L197-L203)

    @classmethod
    experimental_type_proto() -> Type[struct_pb2.TypeSpecProto]

Returns the type of proto associated with TypeSpec serialization.

Do NOT override for custom non-TF types.

### `from_value`

[View source](https://github.com/tensorflow/tensorflow/blob/v2.15.0.post1/tensorflow/python/data/ops/iterator_ops.py#L960-L962)

    @staticmethod
    from_value(
        value
    )

### `is_compatible_with`

[View source](https://github.com/tensorflow/tensorflow/blob/v2.15.0.post1/tensorflow/python/framework/type_spec.py#L301-L322)

    is_compatible_with(
        spec_or_value
    )

Returns true if `spec_or_value` is compatible with this TypeSpec.

Prefer using "is_subtype_of" and "most_specific_common_supertype" wherever
possible.

<br />

<br />

<br />

| Args ||
|---|---|
| `spec_or_value` | A TypeSpec or TypeSpec associated value to compare against. |

<br />

### `is_subtype_of`

[View source](https://github.com/tensorflow/tensorflow/blob/v2.15.0.post1/tensorflow/python/framework/type_spec.py#L110-L147)

    is_subtype_of(
        other: https://www.tensorflow.org/versions/r2.15/api_docs/python/tf/types/experimental/TraceType
    ) -> bool

Returns True if `self` is a subtype of `other`.

Implements the tf.types.experimental.func.TraceType interface.

If not overridden by a subclass, the default behavior is to assume the
TypeSpec is covariant upon attributes that implement TraceType and
invariant upon rest of the attributes as well as the structure and type
of the TypeSpec.

<br />

<br />

<br />

| Args ||
|---|---|
| `other` | A TraceType object. |

<br />

### `most_specific_common_supertype`

[View source](https://github.com/tensorflow/tensorflow/blob/v2.15.0.post1/tensorflow/python/framework/type_spec.py#L149-L195)

    most_specific_common_supertype(
        others: Sequence[https://www.tensorflow.org/versions/r2.15/api_docs/python/tf/types/experimental/TraceType]
    ) -> Optional['TypeSpec']

Returns the most specific supertype TypeSpec of `self` and `others`.

Implements the tf.types.experimental.func.TraceType interface.

If not overridden by a subclass, the default behavior is to assume the
TypeSpec is covariant upon attributes that implement TraceType and
invariant upon rest of the attributes as well as the structure and type
of the TypeSpec.

<br />

<br />

<br />

| Args ||
|---|---|
| `others` | A sequence of TraceTypes. |

<br />

### `most_specific_compatible_type`

[View source](https://github.com/tensorflow/tensorflow/blob/v2.15.0.post1/tensorflow/python/framework/type_spec.py#L324-L342)

    most_specific_compatible_type(
        other: 'TypeSpec'
    ) -> 'TypeSpec'

Returns the most specific TypeSpec compatible with `self` and `other`. (deprecated)

> [!WARNING]
> **Deprecated:** THIS FUNCTION IS DEPRECATED. It will be removed in a future version. Instructions for updating: Use most_specific_common_supertype instead.

Deprecated. Please use `most_specific_common_supertype` instead.
Do not override this function.

<br />

<br />

<br />

| Args ||
|---|---|
| `other` | A `TypeSpec`. |

<br />

<br />

<br />

<br />

| Raises ||
|---|---|
| `ValueError` | If there is no TypeSpec that is compatible with both `self` and `other`. |

<br />

### `__eq__`

[View source](https://github.com/tensorflow/tensorflow/blob/v2.15.0.post1/tensorflow/python/framework/type_spec.py#L546-L549)

    __eq__(
        other
    ) -> bool

Return self==value.

### `__ne__`

[View source](https://github.com/tensorflow/tensorflow/blob/v2.15.0.post1/tensorflow/python/framework/type_spec.py#L551-L552)

    __ne__(
        other
    ) -> bool

Return self!=value.