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

import vtkmodules.vtkCommonCore as __vtkmodules_vtkCommonCore

class vtkDistributedGraphHelper(__vtkmodules_vtkCommonCore.vtkObject):
    """
    vtkVertexPedigreeIdDistributionFunction - The type of a function used
    to determine how to distribute vertex pedigree IDs across processors
    in a vtkGraph. The pedigree ID distribution function takes the
    pedigree ID of the vertex and a user-supplied void pointer and
    returns a hash value V. A vertex with that pedigree ID will reside on
    processor V % P, where P is the number of processors. This type is
    used in conjunction with the vtkDistributedGraphHelper class.
    
    Superclass: vtkObject
    """
    def Clone(self):
        """
        V.Clone() -> vtkDistributedGraphHelper
        C++: virtual vtkDistributedGraphHelper *Clone()
        
        Clones the distributed graph helper, returning another
        distributed graph helper of the same kind that can be used in
        another vtkGraph.
        """
        ...
    
    def DISTRIBUTEDEDGEIDS(self):
        """
        V.DISTRIBUTEDEDGEIDS() -> vtkInformationIntegerKey
        C++: static vtkInformationIntegerKey *DISTRIBUTEDEDGEIDS()
        
        Information Keys that distributed graphs can append to attribute
        arrays to flag them as containing distributed IDs.  These can be
        used to let routines that migrate vertices (either repartitioning
        or collecting graphs to single nodes) to also modify the ids
        contained in the attribute arrays to maintain consistency.
        """
        ...
    
    def DISTRIBUTEDVERTEXIDS(self):
        """
        V.DISTRIBUTEDVERTEXIDS() -> vtkInformationIntegerKey
        C++: static vtkInformationIntegerKey *DISTRIBUTEDVERTEXIDS()
        
        Information Keys that distributed graphs can append to attribute
        arrays to flag them as containing distributed IDs.  These can be
        used to let routines that migrate vertices (either repartitioning
        or collecting graphs to single nodes) to also modify the ids
        contained in the attribute arrays to maintain consistency.
        """
        ...
    
    def GetEdgeIndex(self, p_int):
        """
        V.GetEdgeIndex(int) -> int
        C++: vtkIdType GetEdgeIndex(vtkIdType e_id)
        
        Returns local index of edge with ID e_id, by masking off top
        ceil(log2 P) bits of e_id.
        """
        ...
    
    def GetEdgeOwner(self, p_int):
        """
        V.GetEdgeOwner(int) -> int
        C++: vtkIdType GetEdgeOwner(vtkIdType e_id)
        
        Returns owner of edge with ID e_id, by extracting top ceil(log2
        P) bits of e_id.
        """
        ...
    
    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 GetVertexIndex(self, p_int):
        """
        V.GetVertexIndex(int) -> int
        C++: vtkIdType GetVertexIndex(vtkIdType v)
        
        Returns local index of vertex v, by masking off top ceil(log2 P)
        bits of v.
        """
        ...
    
    def GetVertexOwner(self, p_int):
        """
        V.GetVertexOwner(int) -> int
        C++: vtkIdType GetVertexOwner(vtkIdType v)
        
        Returns owner of vertex v, by extracting top ceil(log2 P) bits of
        v.
        """
        ...
    
    def GetVertexOwnerByPedigreeId(self, vtkVariant):
        """
        V.GetVertexOwnerByPedigreeId(vtkVariant) -> int
        C++: vtkIdType GetVertexOwnerByPedigreeId(
            const vtkVariant &pedigreeId)
        
        Determine which processor owns the vertex with the given pedigree
        ID.
        """
        ...
    
    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 MakeDistributedId(self, p_int, p_int_1):
        """
        V.MakeDistributedId(int, int) -> int
        C++: vtkIdType MakeDistributedId(int owner, vtkIdType local)
        
        Builds a distributed ID consisting of the given owner and the
        local ID.
        """
        ...
    
    def NewInstance(self):
        """
        V.NewInstance() -> vtkDistributedGraphHelper
        C++: vtkDistributedGraphHelper *NewInstance()
        """
        ...
    
    def SafeDownCast(self, vtkObjectBase):
        """
        V.SafeDownCast(vtkObjectBase) -> vtkDistributedGraphHelper
        C++: static vtkDistributedGraphHelper *SafeDownCast(
            vtkObjectBase *o)
        """
        ...
    
    def Synchronize(self):
        """
        V.Synchronize()
        C++: virtual void Synchronize()
        
        Synchronizes all of the processors involved in this distributed
        graph, so that all processors have a consistent view of the
        distributed graph for the computation that follows. This routine
        should be invoked after adding new edges into the distributed
        graph, so that other processors will see those edges (or their
        corresponding back-edges).
        """
        ...
    
    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__ = ...


