code: def __call__(self, func):
      is_compatible = lib.geos_version >= self.version
      is_doc_build = (
          os.environ.get("SPHINX_DOC_BUILD") == "1"
      )  # set in docs/conf.py
      if is_compatible and not is_doc_build:
          return func  # return directly, do not change the docstring
  
      msg = "'{}' requires at least GEOS {}.{}.{}.".format(
          func.__name__, *self.version
      )
      if is_compatible:
  
          @wraps(func)
          def wrapped(*args, **kwargs):
              return func(*args, **kwargs)
  
      else:
  
          @wraps(func)
          def wrapped(*args, **kwargs):
              raise UnsupportedGEOSVersionError(msg)
  
      doc = wrapped.__doc__
      if doc:
          # Insert the message at the first double newline
          position = doc.find("\n\n") + 2
          # Figure out the indentation level
          indent = 2
          while True:
              if doc[position + indent] == " ":
                  indent += 1
              else:
                  break
          wrapped.__doc__ = doc.replace(
              "\n\n",
              "\n\n{}.. note:: {}\n\n".format(" " * indent, msg),
              1,
          )
  
      return wrapped
  
file_path: shapely/shapely/decorators.py
imports: import os
  from functools import wraps
  import numpy
  from shapely import lib
  from shapely.errors import UnsupportedGEOSVersionError
label_desc: Use image node_id 2 for calling the requires_geos obj's underlying member method code with example usage: obj.__call__(func) and returns: wrapped, func, func