# Path: pyrep/objects/object.py
# class Object(object):
#     def __init__(self, name_or_handle: Union[str, int]):
#     def __eq__(self, other: object):
#     def exists(name: str) -> bool:
#     def get_object_type(name: str) -> ObjectType:
#     def get_object_name(name_or_handle: Union[str, int]) -> str:
#     def get_object(name_or_handle: str) -> 'Object':
#     def _get_requested_type(self) -> ObjectType:
#     def get_type(self) -> ObjectType:
#     def get_handle(self) -> int:
#     def still_exists(self) -> bool:
#     def get_name(self) -> str:
#     def set_name(self, name: str) -> None:
#     def get_position(self, relative_to=None) -> np.ndarray:
#     def set_position(self, position: Union[list, np.ndarray], relative_to=None,
#                      reset_dynamics=True) -> None:
#     def get_orientation(self, relative_to=None) -> np.ndarray:
#     def set_orientation(self, orientation: Union[list, np.ndarray],
#                         relative_to=None, reset_dynamics=True) -> None:
#     def get_quaternion(self, relative_to=None) -> np.ndarray:
#     def set_quaternion(self, quaternion: Union[list, np.ndarray],
#                        relative_to=None, reset_dynamics=True) -> None:
#     def get_pose(self, relative_to=None) -> np.ndarray:
#     def set_pose(self, pose: Union[list, np.ndarray], relative_to=None,
#                  reset_dynamics=True) -> None:
#     def get_velocity(self) -> Tuple[np.ndarray, np.ndarray]:
#     def get_parent(self) -> Union['Object', None]:
#     def set_parent(self, parent_object: Union['Object', None],
#                    keep_in_place=True) -> None:
#     def get_matrix(self, relative_to=None) -> np.ndarray:
#     def set_matrix(self, matrix: np.ndarray, relative_to=None) -> None:
#     def is_collidable(self) -> bool:
#     def set_collidable(self, value: bool) -> None:
#     def get_contact(self, contact_obj=None, get_contact_normal: bool = True) -> List:
#     def is_measurable(self) -> bool:
#     def set_measurable(self, value: bool):
#     def is_detectable(self) -> bool:
#     def set_detectable(self, value: bool):
#     def is_renderable(self) -> bool:
#     def set_renderable(self, value: bool):
#     def is_model(self) -> bool:
#     def set_model(self, value: bool):
#     def remove(self) -> None:
#     def reset_dynamic_object(self) -> None:
#     def get_bounding_box(self) -> List[float]:
#     def get_extension_string(self) -> str:
#     def get_configuration_tree(self) -> bytes:
#     def rotate(self, rotation: List[float]) -> None:
#     def check_collision(self, obj: 'Object' = None) -> bool:
#     def is_model_collidable(self) -> bool:
#     def set_model_collidable(self, value: bool):
#     def is_model_measurable(self) -> bool:
#     def set_model_measurable(self, value: bool):
#     def is_model_detectable(self) -> bool:
#     def set_model_detectable(self, value: bool):
#     def is_model_renderable(self) -> bool:
#     def set_model_renderable(self, value: bool):
#     def is_model_dynamic(self) -> bool:
#     def set_model_dynamic(self, value: bool):
#     def is_model_respondable(self) -> bool:
#     def set_model_respondable(self, value: bool):
#     def save_model(self, path: str) -> None:
#     def get_model_bounding_box(self) -> List[float]:
#     def _get_objects_in_tree(root_object=None, object_type=ObjectType.ALL,
#                              exclude_base=True, first_generation_only=False
#                              ) -> List['Object']:
#     def get_objects_in_tree(self, *args, **kwargs) -> List['Object']:
#     def copy(self) -> 'Object':
#     def check_distance(self, other: 'Object') -> float:
#     def get_bullet_friction(self) -> float:
#     def set_bullet_friction(self, friction) -> None:
#     def get_explicit_handling(self) -> int:
#     def set_explicit_handling(self, value: int) -> None:
#     def _check_model(self) -> None:
#     def _get_model_property(self, prop_type: int) -> bool:
#     def _set_model_property(self, prop_type: int, value: bool) -> None:
#     def _get_property(self, prop_type: int) -> bool:
#     def _set_property(self, prop_type: int, value: bool) -> None:
# 
# Path: pyrep/const.py
# class ObjectType(Enum):
#     ALL = sim.sim_handle_all
#     SHAPE = sim.sim_object_shape_type
#     JOINT = sim.sim_object_joint_type
#     DUMMY = sim.sim_object_dummy_type
#     PROXIMITY_SENSOR = sim.sim_object_proximitysensor_type
#     GRAPH = sim.sim_object_graph_type
#     CAMERA = sim.sim_object_camera_type
#     PATH = sim.sim_object_path_type
#     VISION_SENSOR = sim.sim_object_visionsensor_type
#     VOLUME = sim.sim_object_volume_type
#     MILl = sim.sim_object_mill_type
#     FORCE_SENSOR = sim.sim_object_forcesensor_type
#     LIGHT = sim.sim_object_light_type
#     MIRROR = sim.sim_object_mirror_type
#     OCTREE = sim.sim_object_octree_type


from typing import Union
from pyrep.objects.object import Object, object_type_to_class
from pyrep.const import ObjectType


class Camera(Object):
    """Cameras can be associated with views.
    """

    def __init__(self, name_or_handle: Union[str, int]):
        super().__init__(name_or_handle)
    
    @staticmethod
    def create():
        raise NotImplementedError("API does not provide simCreateCamera.")

    def _get_requested_type(self) -> ObjectType:
        return ObjectType.CAMERA



# Path: pyrep/objects/object.py
# class Object(object):
#     def __init__(self, name_or_handle: Union[str, int]):
#     def __eq__(self, other: object):
#     def exists(name: str) -> bool:
#     def get_object_type(name: str) -> ObjectType:
#     def get_object_name(name_or_handle: Union[str, int]) -> str:
#     def get_object(name_or_handle: str) -> 'Object':
#     def _get_requested_type(self) -> ObjectType:
#     def get_type(self) -> ObjectType:
#     def get_handle(self) -> int:
#     def still_exists(self) -> bool:
#     def get_name(self) -> str:
#     def set_name(self, name: str) -> None:
#     def get_position(self, relative_to=None) -> np.ndarray:
#     def set_position(self, position: Union[list, np.ndarray], relative_to=None,
#                      reset_dynamics=True) -> None:
#     def get_orientation(self, relative_to=None) -> np.ndarray:
#     def set_orientation(self, orientation: Union[list, np.ndarray],
#                         relative_to=None, reset_dynamics=True) -> None:
#     def get_quaternion(self, relative_to=None) -> np.ndarray:
#     def set_quaternion(self, quaternion: Union[list, np.ndarray],
#                        relative_to=None, reset_dynamics=True) -> None:
#     def get_pose(self, relative_to=None) -> np.ndarray:
#     def set_pose(self, pose: Union[list, np.ndarray], relative_to=None,
#                  reset_dynamics=True) -> None:
#     def get_velocity(self) -> Tuple[np.ndarray, np.ndarray]:
#     def get_parent(self) -> Union['Object', None]:
#     def set_parent(self, parent_object: Union['Object', None],
#                    keep_in_place=True) -> None:
#     def get_matrix(self, relative_to=None) -> np.ndarray:
#     def set_matrix(self, matrix: np.ndarray, relative_to=None) -> None:
#     def is_collidable(self) -> bool:
#     def set_collidable(self, value: bool) -> None:
#     def get_contact(self, contact_obj=None, get_contact_normal: bool = True) -> List:
#     def is_measurable(self) -> bool:
#     def set_measurable(self, value: bool):
#     def is_detectable(self) -> bool:
#     def set_detectable(self, value: bool):
#     def is_renderable(self) -> bool:
#     def set_renderable(self, value: bool):
#     def is_model(self) -> bool:
#     def set_model(self, value: bool):
#     def remove(self) -> None:
#     def reset_dynamic_object(self) -> None:
#     def get_bounding_box(self) -> List[float]:
#     def get_extension_string(self) -> str:
#     def get_configuration_tree(self) -> bytes:
#     def rotate(self, rotation: List[float]) -> None:
#     def check_collision(self, obj: 'Object' = None) -> bool:
#     def is_model_collidable(self) -> bool:
#     def set_model_collidable(self, value: bool):
#     def is_model_measurable(self) -> bool:
#     def set_model_measurable(self, value: bool):
#     def is_model_detectable(self) -> bool:
#     def set_model_detectable(self, value: bool):
#     def is_model_renderable(self) -> bool:
#     def set_model_renderable(self, value: bool):
#     def is_model_dynamic(self) -> bool:
#     def set_model_dynamic(self, value: bool):
#     def is_model_respondable(self) -> bool:
#     def set_model_respondable(self, value: bool):
#     def save_model(self, path: str) -> None:
#     def get_model_bounding_box(self) -> List[float]:
#     def _get_objects_in_tree(root_object=None, object_type=ObjectType.ALL,
#                              exclude_base=True, first_generation_only=False
#                              ) -> List['Object']:
#     def get_objects_in_tree(self, *args, **kwargs) -> List['Object']:
#     def copy(self) -> 'Object':
#     def check_distance(self, other: 'Object') -> float:
#     def get_bullet_friction(self) -> float:
#     def set_bullet_friction(self, friction) -> None:
#     def get_explicit_handling(self) -> int:
#     def set_explicit_handling(self, value: int) -> None:
#     def _check_model(self) -> None:
#     def _get_model_property(self, prop_type: int) -> bool:
#     def _set_model_property(self, prop_type: int, value: bool) -> None:
#     def _get_property(self, prop_type: int) -> bool:
#     def _set_property(self, prop_type: int, value: bool) -> None:
# 
# Path: pyrep/const.py
# class ObjectType(Enum):
#     ALL = sim.sim_handle_all
#     SHAPE = sim.sim_object_shape_type
#     JOINT = sim.sim_object_joint_type
#     DUMMY = sim.sim_object_dummy_type
#     PROXIMITY_SENSOR = sim.sim_object_proximitysensor_type
#     GRAPH = sim.sim_object_graph_type
#     CAMERA = sim.sim_object_camera_type
#     PATH = sim.sim_object_path_type
#     VISION_SENSOR = sim.sim_object_visionsensor_type
#     VOLUME = sim.sim_object_volume_type
#     MILl = sim.sim_object_mill_type
#     FORCE_SENSOR = sim.sim_object_forcesensor_type
#     LIGHT = sim.sim_object_light_type
#     MIRROR = sim.sim_object_mirror_type
#     OCTREE = sim.sim_object_octree_type


# Path: pyrep/objects/camera.py
from typing import Union
from pyrep.objects.object import Object, object_type_to_class
from pyrep.const import ObjectType



class Camera(Object):
    """Cameras can be associated with views.
    """

    def __init__(self, name_or_handle: Union[str, int]):
        super().__init__(name_or_handle)
    
    @staticmethod
    def create():
        raise NotImplementedError("API does not provide simCreateCamera.")

    def _get_requested_type(self) -> ObjectType:
        return ObjectType.CAMERA



object_type_to_class[ObjectType.CAMERA] = Camera