class_docstr: Base class for binary predicates. This class is an abstract base class
  and can not be instantiated directly. `BinPred` is the base class that
  implements this interface in the most general case. Child classes exist
  for each combination of left-hand and right-hand GeoSeries types and binary
  predicates. For example, a `PointPointContains` predicate is a child class
  of `BinPred` that implements the `contains_properly` predicate for two
  `Point` GeoSeries. These classes are found in the `feature_<predicateName>`
  files found in this directory.
  
  Notes
  -----
  BinPred classes are selected using the appropriate dispatch function. For
  example, the `contains_properly` predicate is selected using the
  `CONTAINS_DISPATCH` dispatch function from `binpred_dispatch.py`. The
  dispatch function selects the appropriate BinPred class based on the
  left-hand and right-hand GeoSeries types.
  
  This enables customized behavior for each combination of left-hand and
  right-hand GeoSeries types and binary predicates. For example, the
  `contains_properly` predicate for two `Point` GeoSeries is implemented
  using a `PointPointContains` BinPred class. The `contains_properly`
  predicate for a `Point` GeoSeries and a `Polygon` GeoSeries is implemented
  using a `PointPolygonContains` BinPred class. Most subclasses will be able
  to use all or 2/3rds of the methods defined in the `RootContains(BinPred)
  class`.
  
  The `RootContains` class implements the `contains_properly` predicate for
  the most common combination of left-hand and right-hand GeoSeries types.
  The `RootContains` class can be used as a template for implementing the
  `contains_properly` predicate for other combinations of left-hand and
  right-hand GeoSeries types.
  
  Examples
  --------
  >>> from cuspatial.core.binpreds.binpred_dispatch import CONTAINS_DISPATCH
  >>> from cuspatial.core.geoseries import GeoSeries
  >>> from shapely.geometry import Point, Polygon
  >>> predicate = CONTAINS_DISPATCH[(
  ...     lhs.column_type, rhs.column_type
  ... )](align=True, allpairs=False)
  >>> lhs = GeoSeries([Polygon([(0, 0), (1, 1), (1, 0)])])
  >>> rhs = GeoSeries([Point(0, 0), Point(1, 1)])
  >>> print(predicate(lhs, rhs))
  0    False
  dtype: bool
class_docstr_tok: ["Base","class","for","binary","predicates",".","This","class","is","an","abstract","base","class","and","can","not","be","instantiated","directly",".","`","BinPred","`","is","the","base","class","that","implements","this","interface","in","the","most","general","case",".","Child","classes","exist","for","each","combination","of","left-hand","and","right-hand","GeoSeries","types","and","binary","predicates",".","For","example",",","a","`","PointPointContains","`","predicate","is","a","child","class","of","`","BinPred","`","that","implements","the","`","contains_properly","`","predicate","for","two","`","Point","`","GeoSeries",".","These","classes","are","found","in","the","`","feature_","<","predicateName",">","`","files","found","in","this","directory",".","Notes","--","--","-","BinPred","classes","are","selected","using","the","appropriate","dispatch","function",".","For","example",",","the","`","contains_properly","`","predicate","is","selected","using","the","`","CONTAINS_DISPATCH","`","dispatch","function","from","`","binpred_dispatch.py","`",".","The","dispatch","function","selects","the","appropriate","BinPred","class","based","on","the","left-hand","and","right-hand","GeoSeries","types",".","This","enables","customized","behavior","for","each","combination","of","left-hand","and","right-hand","GeoSeries","types","and","binary","predicates",".","For","example",",","the","`","contains_properly","`","predicate","for","two","`","Point","`","GeoSeries","is","implemented","using","a","`","PointPointContains","`","BinPred","class",".","The","`","contains_properly","`","predicate","for","a","`","Point","`","GeoSeries","and","a","`","Polygon","`","GeoSeries","is","implemented","using","a","`","PointPolygonContains","`","BinPred","class",".","Most","subclasses","will","be","able","to","use","all","or","2\/3rds","of","the","methods","defined","in","the","`","RootContains","(","BinPred",")","class","`",".","The","`","RootContains","`","class","implements","the","`","contains_properly","`","predicate","for","the","most","common","combination","of","left-hand","and","right-hand","GeoSeries","types",".","The","`","RootContains","`","class","can","be","used","as","a","template","for","implementing","the","`","contains_properly","`","predicate","for","other","combinations","of","left-hand","and","right-hand","GeoSeries","types",".","Examples","--","--","--","--",">",">",">","from","cuspatial.core.binpreds.binpred_dispatch","import","CONTAINS_DISPATCH",">",">",">","from","cuspatial.core.geoseries","import","GeoSeries",">",">",">","from","shapely.geometry","import","Point",",","Polygon",">",">",">","predicate","=","CONTAINS_DISPATCH","[","(","...","lhs.column_type",",","rhs.column_type","...",")","]","(","align=True",",","allpairs=False",")",">",">",">","lhs","=","GeoSeries","(","[","Polygon","(","[","(","0",",","0",")",",","(","1",",","1",")",",","(","1",",","0",")","]",")","]",")",">",">",">","rhs","=","GeoSeries","(","[","Point","(","0",",","0",")",",","Point","(","1",",","1",")","]",")",">",">",">","print","(","predicate","(","lhs",",","rhs",")",")","0","False","dtype",":","bool"]
docstr: Initialize a binary predicate. Collects any arguments passed
  to the binary predicate to be used at runtime.
  
  This class stores the config object that can be passed to the binary
  predicate at runtime. The lhs and rhs are set at runtime using the
  __call__ method so that the same binary predicate can be used for
  multiple left-hand and right-hand GeoSeries.
  
  Parameters
  ----------
  **kwargs
      Any additional arguments to be used at runtime.
  
  Attributes
  ----------
  kwargs : dict
      Any additional arguments to be used at runtime.
  
  Methods
  -------
  __call__(self, lhs, rhs)
      System call for the binary predicate. Calls the _call method, which
      is implemented by the subclass.
  _call(self, lhs, rhs)
      Call the binary predicate. This method is implemented by the
      subclass.
  _preprocess(self, lhs, rhs)
      Preprocess the left-hand and right-hand GeoSeries. This method is
      implemented by the subclass.
  _compute_predicate(self, lhs, rhs)
      Compute the binary predicate between two GeoSeries. This method is
      implemented by the subclass.
  _postprocess(self, lhs, rhs, point_indices, op_result)
      Postprocess the output GeoSeries to ensure that they are of the
      correct type for the predicate. This method is implemented by the
      subclass.
  
  Examples
  --------
  >>> from cuspatial.core.binpreds.binpred_dispatch import (
  ...     CONTAINS_DISPATCH
  ... )
  >>> from cuspatial.core.geoseries import GeoSeries
  >>> from shapely.geometry import Point, Polygon
  >>> predicate = CONTAINS_DISPATCH[(
  ...     lhs.column_type, rhs.column_type
  ... )](align=True, allpairs=False)
  >>> lhs = GeoSeries([Polygon([(0, 0), (1, 1), (1, 0)])])
  >>> rhs = GeoSeries([Point(0, 0), Point(1, 1)])
  >>> print(predicate(lhs, rhs))
  0    False
  dtype: bool
docstr_tok: ["Initialize","a","binary","predicate",".","Collects","any","arguments","passed","to","the","binary","predicate","to","be","used","at","runtime",".","This","class","stores","the","config","object","that","can","be","passed","to","the","binary","predicate","at","runtime",".","The","lhs","and","rhs","are","set","at","runtime","using","the","__call__","method","so","that","the","same","binary","predicate","can","be","used","for","multiple","left-hand","and","right-hand","GeoSeries",".","Parameters","--","--","--","--","--","*","*","kwargs","Any","additional","arguments","to","be","used","at","runtime",".","Attributes","--","--","--","--","--","kwargs",":","dict","Any","additional","arguments","to","be","used","at","runtime",".","Methods","--","--","--","-","__call__","(","self",",","lhs",",","rhs",")","System","call","for","the","binary","predicate",".","Calls","the","_call","method",",","which","is","implemented","by","the","subclass",".","_call","(","self",",","lhs",",","rhs",")","Call","the","binary","predicate",".","This","method","is","implemented","by","the","subclass",".","_preprocess","(","self",",","lhs",",","rhs",")","Preprocess","the","left-hand","and","right-hand","GeoSeries",".","This","method","is","implemented","by","the","subclass",".","_compute_predicate","(","self",",","lhs",",","rhs",")","Compute","the","binary","predicate","between","two","GeoSeries",".","This","method","is","implemented","by","the","subclass",".","_postprocess","(","self",",","lhs",",","rhs",",","point_indices",",","op_result",")","Postprocess","the","output","GeoSeries","to","ensure","that","they","are","of","the","correct","type","for","the","predicate",".","This","method","is","implemented","by","the","subclass",".","Examples","--","--","--","--",">",">",">","from","cuspatial.core.binpreds.binpred_dispatch","import","(","...","CONTAINS_DISPATCH","...",")",">",">",">","from","cuspatial.core.geoseries","import","GeoSeries",">",">",">","from","shapely.geometry","import","Point",",","Polygon",">",">",">","predicate","=","CONTAINS_DISPATCH","[","(","...","lhs.column_type",",","rhs.column_type","...",")","]","(","align=True",",","allpairs=False",")",">",">",">","lhs","=","GeoSeries","(","[","Polygon","(","[","(","0",",","0",")",",","(","1",",","1",")",",","(","1",",","0",")","]",")","]",")",">",">",">","rhs","=","GeoSeries","(","[","Point","(","0",",","0",")",",","Point","(","1",",","1",")","]",")",">",">",">","print","(","predicate","(","lhs",",","rhs",")",")","0","False","dtype",":","bool"]
code: def __init__(self, **kwargs):
      """Initialize a binary predicate. Collects any arguments passed
      to the binary predicate to be used at runtime.
  
      This class stores the config object that can be passed to the binary
      predicate at runtime. The lhs and rhs are set at runtime using the
      __call__ method so that the same binary predicate can be used for
      multiple left-hand and right-hand GeoSeries.
  
      Parameters
      ----------
      **kwargs
          Any additional arguments to be used at runtime.
  
      Attributes
      ----------
      kwargs : dict
          Any additional arguments to be used at runtime.
  
      Methods
      -------
      __call__(self, lhs, rhs)
          System call for the binary predicate. Calls the _call method, which
          is implemented by the subclass.
      _call(self, lhs, rhs)
          Call the binary predicate. This method is implemented by the
          subclass.
      _preprocess(self, lhs, rhs)
          Preprocess the left-hand and right-hand GeoSeries. This method is
          implemented by the subclass.
      _compute_predicate(self, lhs, rhs)
          Compute the binary predicate between two GeoSeries. This method is
          implemented by the subclass.
      _postprocess(self, lhs, rhs, point_indices, op_result)
          Postprocess the output GeoSeries to ensure that they are of the
          correct type for the predicate. This method is implemented by the
          subclass.
  
      Examples
      --------
      >>> from cuspatial.core.binpreds.binpred_dispatch import (
      ...     CONTAINS_DISPATCH
      ... )
      >>> from cuspatial.core.geoseries import GeoSeries
      >>> from shapely.geometry import Point, Polygon
      >>> predicate = CONTAINS_DISPATCH[(
      ...     lhs.column_type, rhs.column_type
      ... )](align=True, allpairs=False)
      >>> lhs = GeoSeries([Polygon([(0, 0), (1, 1), (1, 0)])])
      >>> rhs = GeoSeries([Point(0, 0), Point(1, 1)])
      >>> print(predicate(lhs, rhs))
      0    False
      dtype: bool
      """
      self.config = BinPredConfig(**kwargs)
  
imports: from typing import TYPE_CHECKING, Tuple
  from cudf import Series
  from cuspatial.utils.binpred_utils import _false_series
label_desc: Use image node_id 1 to create a new BinPred object  with example: obj = BinPred()