diff --git a/scenes/dates.py b/scenes/dates.py
index 198629ec15fb6ae18c31dede4b1149faa6440edd..0e2fe869d797f9edecdb4dfb1f038af288802ddd 100644
--- a/scenes/dates.py
+++ b/scenes/dates.py
@@ -30,6 +30,7 @@ The `get_timestamp` method converts a `datetime.datetime` instance into a number
 ts = get_timestamp(dt)  # 1606780800.0
 ```
 """
+from __future__ import annotations
 import datetime
 
 
diff --git a/scenes/deepnets.py b/scenes/deepnets.py
index aad7cf0174adc318d6c1444627bb65250b52a3f2..feff7f37f0737517b5cdbcf57e8e3b83a0f8f991 100644
--- a/scenes/deepnets.py
+++ b/scenes/deepnets.py
@@ -20,6 +20,7 @@ sr = scenes.deepnets.sr4rs(s2_image)  # pyotb.core.otbObject
 sr.write("sr.tif")
 ```
 """
+from __future__ import annotations
 import os
 import zipfile
 import pyotb
diff --git a/scenes/download.py b/scenes/download.py
index 4fbcc6f60959ff132fb15700fb4b39d73276c1d6..a3ca571cf40638928d33d614496c17a85c0dc599 100644
--- a/scenes/download.py
+++ b/scenes/download.py
@@ -61,6 +61,7 @@ theia.download_in_range(bbox, trange, "/tmp/download/", "LEVEL2A")
 ```
 
 """
+from __future__ import annotations
 import datetime
 import hashlib
 import io
diff --git a/scenes/indexation.py b/scenes/indexation.py
index e8919e531ed67ce3705cfb75e77076b00e9b6eb1..6f394085b37d5828b2872ca61d0c50fe3eca32a9 100644
--- a/scenes/indexation.py
+++ b/scenes/indexation.py
@@ -43,14 +43,16 @@ scenes_results = index.find(vec, "01/01/2020" "01/01/2022")
 ```
 
 """
+from __future__ import annotations
 import datetime
 import rtree
+from scenes.core import Scene
 from scenes.dates import get_timestamp, any2datetime, MINDATE, MAXDATE
 from scenes.vector import reproject_ogr_layer, get_bbox_wgs84, ogr_open
-from scenes.spatial import poly_overlap
+from scenes.spatial import poly_overlap, BoundingBox
 
 
-def _bbox(bbox_wgs84, date_min, date_max):
+def _bbox(bbox_wgs84: BoundingBox, date_min: datetime.datetime | str, date_max: datetime.datetime | str) -> tuple:
     """
     Return a bounding box in the domain (lat, lon, time)
 
@@ -71,7 +73,7 @@ class Index:
     """
     Stores an indexation structure for a list of Scenes
     """
-    def __init__(self, scenes_list):
+    def __init__(self, scenes_list: list[Scene]):
         """
         Args:
             scenes_list: list of scenes
@@ -90,7 +92,8 @@ class Index:
             new_bbox = _bbox(bbox_wgs84=scene.bbox_wgs84, date_min=dt_min, date_max=dt_max)
             self.index.insert(scene_idx, new_bbox)
 
-    def find_indices(self, vector_or_bbox, date_min=None, date_max=None):
+    def find_indices(self, vector_or_bbox: str | BoundingBox, date_min: datetime.datetime | str = None,
+                     date_max: datetime.datetime | str = None) -> list[int]:
         """
         Search the intersecting scenes, and return their indices
 
@@ -133,7 +136,8 @@ class Index:
             return filtered_indices
         return results_indices
 
-    def find(self, vector_or_bbox, date_min=None, date_max=None):
+    def find(self, vector_or_bbox: str | BoundingBox, date_min: datetime.datetime | str = None,
+                     date_max: datetime.datetime | str = None) -> list[Scene]:
         """
         Search the intersecting scenes, and return them