"""
This type stub file was generated by pyright.
"""

import vtkmodules.vtkCommonExecutionModel as __vtkmodules_vtkCommonExecutionModel

class vtkPythonAlgorithm(__vtkmodules_vtkCommonExecutionModel.vtkAlgorithm):
    """
    vtkPythonAlgorithm - algorithm that can be implemented in Python
    
    Superclass: vtkAlgorithm
    
    vtkPythonAlgorithm is an algorithm that calls a Python object to do
    the actual work. It defers the following methods to Python:
    - ProcessRequest()
    - FillInputPortInformation()
    - FillOutputPortInformation()
    
    Python signature of these methods is as follows:
    - ProcessRequest(self, vtkself, request, inInfo, outInfo) : vtkself
      is the vtk object, inInfo is a tuple of information objects
    - FillInputPortInformation(self, vtkself, port, info)
    - FillOutputPortInformation(self, vtkself, port, info)
    - Initialize(self, vtkself)
    
    In addition, it calls an Initialize() method when setting the Python
    object, which allows the initialization of number of input and output
    ports etc.
    
    @sa
    vtkProgrammableFilter
    """
    def GetNumberOfGenerationsFromBase(self, string):
        """
        V.GetNumberOfGenerationsFromBase(string) -> int
        C++: vtkIdType GetNumberOfGenerationsFromBase(const char *type)
            override;
        
        Given a the name of a base class of this class type, return the
        distance of inheritance between this class type and the named
        class (how many generations of inheritance are there between this
        class and the named class). If the named class is not in this
        class's inheritance tree, return a negative value. Valid
        responses will always be nonnegative. This method works in
        combination with vtkTypeMacro found in vtkSetGet.h.
        """
        ...
    
    def GetNumberOfGenerationsFromBaseType(self, string):
        """
        V.GetNumberOfGenerationsFromBaseType(string) -> int
        C++: static vtkIdType GetNumberOfGenerationsFromBaseType(
            const char *type)
        
        Given a the name of a base class of this class type, return the
        distance of inheritance between this class type and the named
        class (how many generations of inheritance are there between this
        class and the named class). If the named class is not in this
        class's inheritance tree, return a negative value. Valid
        responses will always be nonnegative. This method works in
        combination with vtkTypeMacro found in vtkSetGet.h.
        """
        ...
    
    def IsA(self, string):
        """
        V.IsA(string) -> int
        C++: vtkTypeBool IsA(const char *type) override;
        
        Return 1 if this class is the same type of (or a subclass of) the
        named class. Returns 0 otherwise. This method works in
        combination with vtkTypeMacro found in vtkSetGet.h.
        """
        ...
    
    def IsTypeOf(self, string):
        """
        V.IsTypeOf(string) -> int
        C++: static vtkTypeBool IsTypeOf(const char *type)
        
        Return 1 if this class type is the same type of (or a subclass
        of) the named class. Returns 0 otherwise. This method works in
        combination with vtkTypeMacro found in vtkSetGet.h.
        """
        ...
    
    def NewInstance(self):
        """
        V.NewInstance() -> vtkPythonAlgorithm
        C++: vtkPythonAlgorithm *NewInstance()
        """
        ...
    
    def SafeDownCast(self, vtkObjectBase):
        """
        V.SafeDownCast(vtkObjectBase) -> vtkPythonAlgorithm
        C++: static vtkPythonAlgorithm *SafeDownCast(vtkObjectBase *o)
        """
        ...
    
    def SetNumberOfInputPorts(self, p_int):
        """
        V.SetNumberOfInputPorts(int)
        C++: void SetNumberOfInputPorts(int n) override;
        
        Set the number of input ports used by the algorithm. This is made
        public so that it can be called from Python.
        """
        ...
    
    def SetNumberOfOutputPorts(self, p_int):
        """
        V.SetNumberOfOutputPorts(int)
        C++: void SetNumberOfOutputPorts(int n) override;
        
        Set the number of output ports provided by the algorithm. This is
        made public so that it can be called from Python.
        """
        ...
    
    def SetPythonObject(self, PyObject):
        """
        V.SetPythonObject(PyObject)
        C++: void SetPythonObject(PyObject *obj)
        
        Specify the Python object to use to operate on the data. A
        reference will be taken on the object. This will also invoke
        Initialize() on the Python object, which is commonly used to set
        the number of input and output ports as well as perform tasks
        commonly performed in the constructor of C++ algorithm subclass.
        """
        ...
    
    def __delattr__(self, *args, **kwargs):
        """ Implement delattr(self, name). """
        ...
    
    def __getattribute__(self, *args, **kwargs):
        """ Return getattr(self, name). """
        ...
    
    def __init__(self, *args, **kwargs) -> None:
        ...
    
    @staticmethod
    def __new__(*args, **kwargs):
        """ Create and return a new object.  See help(type) for accurate signature. """
        ...
    
    def __repr__(self, *args, **kwargs):
        """ Return repr(self). """
        ...
    
    def __setattr__(self, *args, **kwargs):
        """ Implement setattr(self, name, value). """
        ...
    
    def __str__(self, *args, **kwargs) -> str:
        """ Return str(self). """
        ...
    
    __this__ = ...
    __dict__ = ...
    __vtkname__ = ...


__loader__ = ...
__spec__ = ...
