code: def contains_properly(a, b, **kwargs):
      """Returns True if geometry B is completely inside geometry A, with no
      common boundary points.
  
      A contains B properly if B intersects the interior of A but not the
      boundary (or exterior). This means that a geometry A does not
      "contain properly" itself, which contrasts with the ``contains`` function,
      where common points on the boundary are allowed.
  
      Note: this function will prepare the geometries under the hood if needed.
      You can prepare the geometries in advance to avoid repeated preparation
      when calling this function multiple times.
  
      Parameters
      ----------
      a, b : Geometry or array_like
      **kwargs
          See :ref:`NumPy ufunc docs <ufuncs.kwargs>` for other keyword arguments.
  
      See also
      --------
      contains : contains which allows common boundary points
      prepare : improve performance by preparing ``a`` (the first argument)
  
      Examples
      --------
      >>> from shapely import Polygon
      >>> area1 = Polygon([(0, 0), (3, 0), (3, 3), (0, 3), (0, 0)])
      >>> area2 = Polygon([(0, 0), (1, 0), (1, 1), (0, 1), (0, 0)])
      >>> area3 = Polygon([(1, 1), (2, 1), (2, 2), (1, 2), (1, 1)])
  
      ``area1`` and ``area2`` have a common border:
  
      >>> contains(area1, area2)
      True
      >>> contains_properly(area1, area2)
      False
  
      ``area3`` is completely inside ``area1`` with no common border:
  
      >>> contains(area1, area3)
      True
      >>> contains_properly(area1, area3)
      True
      """
      return lib.contains_properly(a, b, **kwargs)
  
imports: import warnings
  import numpy
  from shapely import lib
  from shapely.decorators import multithreading_enabled, requires_geos
label_desc: Use image node_id 15 for calling a global function with example usage: contains_properly(a, b) and returns: lib