# Path: sunds/core/spec_dict.py
# class SpecDict(dict):
#   def maybe_set(
#       self,
#       key: str,
#       value: Union[FeaturesOrBool, Any],
#       default: Union[FeaturesOrBool, _Factory] = False,
#   ) -> None:
#   def maybe_update(
#       self,
#       other: FeaturesOrBool,
#       default: FeaturesOrBool = False,
#   ) -> None:
# def labeled_image(
#     labels: LabelArg,
#     **kwargs: Any,
# ) -> tfds.features.LabeledImage:
# def _is_features(features: FeatureSpecs) -> bool:
# 
# Path: sunds/typing.py



from typing import Tuple
from sunds.core import spec_dict
from sunds.typing import Dim, FeatureSpecs, FeaturesOrBool, LabelOrFeaturesOrBool  # pylint: disable=g-multiple-import
import tensorflow as tf
import tensorflow_datasets as tfds
  """Specification for explicit camera rays."""
  return {
      'ray_directions':
          tfds.features.Tensor(
              shape=(*img_shape, 3),
              dtype=tf.float32,
              encoding=encoding,
          ),
      'ray_origins':
          tfds.features.Tensor(
              shape=(*img_shape, 3),
              dtype=tf.float32,
              encoding=encoding,
          ),
  }


def aligned_box_3d_spec() -> tfds.features.FeaturesDict:
  """Specification of an Axis aligned bounding box 📦."""
  return {
      # A box is considered null (empty) if any(min > max).
      # Minimum extent of an axis aligned box.
      'min_corner': tfds.features.Tensor(shape=(3,), dtype=tf.float32),
      # Maximum extent of an axis aligned box.
      'max_corner': tfds.features.Tensor(shape=(3,), dtype=tf.float32),  # pytype: disable=bad-return-type  # gen-stub-imports
  }


def point_cloud_spec(
    *,

# Path: sunds/core/spec_dict.py
# class SpecDict(dict):
#   def maybe_set(
#       self,
#       key: str,
#       value: Union[FeaturesOrBool, Any],
#       default: Union[FeaturesOrBool, _Factory] = False,
#   ) -> None:
#   def maybe_update(
#       self,
#       other: FeaturesOrBool,
#       default: FeaturesOrBool = False,
#   ) -> None:
# def labeled_image(
#     labels: LabelArg,
#     **kwargs: Any,
# ) -> tfds.features.LabeledImage:
# def _is_features(features: FeatureSpecs) -> bool:
# 
# Path: sunds/typing.py



# Path: sunds/core/specs.py
from typing import Tuple
from sunds.core import spec_dict
from sunds.typing import Dim, FeatureSpecs, FeaturesOrBool, LabelOrFeaturesOrBool  # pylint: disable=g-multiple-import
import tensorflow as tf
import tensorflow_datasets as tfds

  """Specification for explicit camera rays."""
  return {
      'ray_directions':
          tfds.features.Tensor(
              shape=(*img_shape, 3),
              dtype=tf.float32,
              encoding=encoding,
          ),
      'ray_origins':
          tfds.features.Tensor(
              shape=(*img_shape, 3),
              dtype=tf.float32,
              encoding=encoding,
          ),
  }


def aligned_box_3d_spec() -> tfds.features.FeaturesDict:
  """Specification of an Axis aligned bounding box 📦."""
  return {
      # A box is considered null (empty) if any(min > max).
      # Minimum extent of an axis aligned box.
      'min_corner': tfds.features.Tensor(shape=(3,), dtype=tf.float32),
      # Maximum extent of an axis aligned box.
      'max_corner': tfds.features.Tensor(shape=(3,), dtype=tf.float32),  # pytype: disable=bad-return-type  # gen-stub-imports
  }


def point_cloud_spec(
    *,

    category_labels: FeaturesOrBool = False,