# This file was automatically generated by SWIG (https://www.swig.org).
# Version 4.3.1
#
# Do not make changes to this file unless you know what you are doing - modify
# the SWIG interface file instead.


import collections

from sys import version_info as _version_info
if _version_info < (3, 7, 0):
    raise RuntimeError("Python 3.7 or later required")

from . import _ITKCommonPython


from . import _ITKVideoCorePython



from sys import version_info as _swig_python_version_info
# Import the low-level C/C++ module
if __package__ or "." in __name__:
    from . import _itkVideoSourcePython
else:
    import _itkVideoSourcePython

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

def _swig_repr(self):
    try:
        strthis = "proxy of " + self.this.__repr__()
    except __builtin__.Exception:
        strthis = ""
    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)


def _swig_setattr_nondynamic_instance_variable(set):
    def set_instance_attr(self, name, value):
        if name == "this":
            set(self, name, value)
        elif name == "thisown":
            self.this.own(value)
        elif hasattr(self, name) and isinstance(getattr(type(self), name), property):
            set(self, name, value)
        else:
            raise AttributeError("You cannot add instance attributes to %s" % self)
    return set_instance_attr


def _swig_setattr_nondynamic_class_variable(set):
    def set_class_attr(cls, name, value):
        if hasattr(cls, name) and not isinstance(getattr(cls, name), property):
            set(cls, name, value)
        else:
            raise AttributeError("You cannot add class attributes to %s" % cls)
    return set_class_attr


def _swig_add_metaclass(metaclass):
    """Class decorator for adding a metaclass to a SWIG wrapped class - a slimmed down version of six.add_metaclass"""
    def wrapper(cls):
        return metaclass(cls.__name__, cls.__bases__, cls.__dict__.copy())
    return wrapper


class _SwigNonDynamicMeta(type):
    """Meta class to enforce nondynamic attributes (no new attributes) for a class"""
    __setattr__ = _swig_setattr_nondynamic_class_variable(type.__setattr__)


if _swig_python_version_info[0:2] >= (3, 3):
    import collections.abc
else:
    import collections

import itk.ITKCommonBasePython
import itk.itkMatrixPython
import itk.vnl_matrixPython
import itk.stdcomplexPython
import itk.pyBasePython
import itk.vnl_vectorPython
import itk.itkVectorPython
import itk.vnl_vector_refPython
import itk.itkFixedArrayPython
import itk.itkPointPython
import itk.itkCovariantVectorPython
import itk.vnl_matrix_fixedPython
import itk.itkTemporalDataObjectPython
import itk.itkTemporalRegionPython
import itk.itkTemporalProcessObjectPython
import itk.itkVideoStreamPython
import itk.itkRingBufferPython
import itk.itkImagePython
import itk.itkSizePython
import itk.itkSymmetricSecondRankTensorPython
import itk.itkRGBPixelPython
import itk.itkIndexPython
import itk.itkOffsetPython
import itk.itkRGBAPixelPython
import itk.itkImageRegionPython
import itk.itkVectorImagePython
import itk.itkVariableLengthVectorPython

def itkVideoSourceVSIF2_New():
    return itkVideoSourceVSIF2.New()

class itkVideoSourceVSIF2(itk.itkTemporalProcessObjectPython.itkTemporalProcessObject):
    r"""Proxy of C++ itkVideoSourceVSIF2 class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkVideoSourceVSIF2_Pointer"""
        return _itkVideoSourcePython.itkVideoSourceVSIF2___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkVideoSourceVSIF2_Pointer"""
        return _itkVideoSourcePython.itkVideoSourceVSIF2_Clone(self)

    @staticmethod
    def GetOutputFrameDimension():
        r"""GetOutputFrameDimension() -> unsigned int"""
        return _itkVideoSourcePython.itkVideoSourceVSIF2_GetOutputFrameDimension()

    def GetOutput(self, *args):
        r"""
        GetOutput(self) -> itkVideoStreamIF2
        GetOutput(self, idx) -> itkVideoStreamIF2

        Parameters
        ----------
        idx: unsigned int

        """
        return _itkVideoSourcePython.itkVideoSourceVSIF2_GetOutput(self, *args)

    def GraftNthOutput(self, idx, graft):
        r"""
        GraftNthOutput(self, idx, graft)

        Parameters
        ----------
        idx: unsigned int
        graft: itkVideoStreamIF2 *

        """
        return _itkVideoSourcePython.itkVideoSourceVSIF2_GraftNthOutput(self, idx, graft)

    def GraftOutput(self, graft):
        r"""
        GraftOutput(self, graft)

        Parameters
        ----------
        graft: itkVideoStreamIF2 *

        """
        return _itkVideoSourcePython.itkVideoSourceVSIF2_GraftOutput(self, graft)
    __swig_destroy__ = _itkVideoSourcePython.delete_itkVideoSourceVSIF2

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkVideoSourceVSIF2

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _itkVideoSourcePython.itkVideoSourceVSIF2_cast(obj)

    def New(*args, **kargs):
        """New() -> itkVideoSourceVSIF2

        Create a new object of the class itkVideoSourceVSIF2 and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkVideoSourceVSIF2.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkVideoSourceVSIF2.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkVideoSourceVSIF2.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkVideoSourceVSIF2 in _itkVideoSourcePython:
_itkVideoSourcePython.itkVideoSourceVSIF2_swigregister(itkVideoSourceVSIF2)

def itkVideoSourceVSIF3_New():
    return itkVideoSourceVSIF3.New()

class itkVideoSourceVSIF3(itk.itkTemporalProcessObjectPython.itkTemporalProcessObject):
    r"""Proxy of C++ itkVideoSourceVSIF3 class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkVideoSourceVSIF3_Pointer"""
        return _itkVideoSourcePython.itkVideoSourceVSIF3___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkVideoSourceVSIF3_Pointer"""
        return _itkVideoSourcePython.itkVideoSourceVSIF3_Clone(self)

    @staticmethod
    def GetOutputFrameDimension():
        r"""GetOutputFrameDimension() -> unsigned int"""
        return _itkVideoSourcePython.itkVideoSourceVSIF3_GetOutputFrameDimension()

    def GetOutput(self, *args):
        r"""
        GetOutput(self) -> itkVideoStreamIF3
        GetOutput(self, idx) -> itkVideoStreamIF3

        Parameters
        ----------
        idx: unsigned int

        """
        return _itkVideoSourcePython.itkVideoSourceVSIF3_GetOutput(self, *args)

    def GraftNthOutput(self, idx, graft):
        r"""
        GraftNthOutput(self, idx, graft)

        Parameters
        ----------
        idx: unsigned int
        graft: itkVideoStreamIF3 *

        """
        return _itkVideoSourcePython.itkVideoSourceVSIF3_GraftNthOutput(self, idx, graft)

    def GraftOutput(self, graft):
        r"""
        GraftOutput(self, graft)

        Parameters
        ----------
        graft: itkVideoStreamIF3 *

        """
        return _itkVideoSourcePython.itkVideoSourceVSIF3_GraftOutput(self, graft)
    __swig_destroy__ = _itkVideoSourcePython.delete_itkVideoSourceVSIF3

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkVideoSourceVSIF3

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _itkVideoSourcePython.itkVideoSourceVSIF3_cast(obj)

    def New(*args, **kargs):
        """New() -> itkVideoSourceVSIF3

        Create a new object of the class itkVideoSourceVSIF3 and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkVideoSourceVSIF3.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkVideoSourceVSIF3.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkVideoSourceVSIF3.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkVideoSourceVSIF3 in _itkVideoSourcePython:
_itkVideoSourcePython.itkVideoSourceVSIF3_swigregister(itkVideoSourceVSIF3)

def itkVideoSourceVSISS2_New():
    return itkVideoSourceVSISS2.New()

class itkVideoSourceVSISS2(itk.itkTemporalProcessObjectPython.itkTemporalProcessObject):
    r"""Proxy of C++ itkVideoSourceVSISS2 class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkVideoSourceVSISS2_Pointer"""
        return _itkVideoSourcePython.itkVideoSourceVSISS2___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkVideoSourceVSISS2_Pointer"""
        return _itkVideoSourcePython.itkVideoSourceVSISS2_Clone(self)

    @staticmethod
    def GetOutputFrameDimension():
        r"""GetOutputFrameDimension() -> unsigned int"""
        return _itkVideoSourcePython.itkVideoSourceVSISS2_GetOutputFrameDimension()

    def GetOutput(self, *args):
        r"""
        GetOutput(self) -> itkVideoStreamISS2
        GetOutput(self, idx) -> itkVideoStreamISS2

        Parameters
        ----------
        idx: unsigned int

        """
        return _itkVideoSourcePython.itkVideoSourceVSISS2_GetOutput(self, *args)

    def GraftNthOutput(self, idx, graft):
        r"""
        GraftNthOutput(self, idx, graft)

        Parameters
        ----------
        idx: unsigned int
        graft: itkVideoStreamISS2 *

        """
        return _itkVideoSourcePython.itkVideoSourceVSISS2_GraftNthOutput(self, idx, graft)

    def GraftOutput(self, graft):
        r"""
        GraftOutput(self, graft)

        Parameters
        ----------
        graft: itkVideoStreamISS2 *

        """
        return _itkVideoSourcePython.itkVideoSourceVSISS2_GraftOutput(self, graft)
    __swig_destroy__ = _itkVideoSourcePython.delete_itkVideoSourceVSISS2

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkVideoSourceVSISS2

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _itkVideoSourcePython.itkVideoSourceVSISS2_cast(obj)

    def New(*args, **kargs):
        """New() -> itkVideoSourceVSISS2

        Create a new object of the class itkVideoSourceVSISS2 and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkVideoSourceVSISS2.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkVideoSourceVSISS2.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkVideoSourceVSISS2.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkVideoSourceVSISS2 in _itkVideoSourcePython:
_itkVideoSourcePython.itkVideoSourceVSISS2_swigregister(itkVideoSourceVSISS2)

def itkVideoSourceVSISS3_New():
    return itkVideoSourceVSISS3.New()

class itkVideoSourceVSISS3(itk.itkTemporalProcessObjectPython.itkTemporalProcessObject):
    r"""Proxy of C++ itkVideoSourceVSISS3 class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkVideoSourceVSISS3_Pointer"""
        return _itkVideoSourcePython.itkVideoSourceVSISS3___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkVideoSourceVSISS3_Pointer"""
        return _itkVideoSourcePython.itkVideoSourceVSISS3_Clone(self)

    @staticmethod
    def GetOutputFrameDimension():
        r"""GetOutputFrameDimension() -> unsigned int"""
        return _itkVideoSourcePython.itkVideoSourceVSISS3_GetOutputFrameDimension()

    def GetOutput(self, *args):
        r"""
        GetOutput(self) -> itkVideoStreamISS3
        GetOutput(self, idx) -> itkVideoStreamISS3

        Parameters
        ----------
        idx: unsigned int

        """
        return _itkVideoSourcePython.itkVideoSourceVSISS3_GetOutput(self, *args)

    def GraftNthOutput(self, idx, graft):
        r"""
        GraftNthOutput(self, idx, graft)

        Parameters
        ----------
        idx: unsigned int
        graft: itkVideoStreamISS3 *

        """
        return _itkVideoSourcePython.itkVideoSourceVSISS3_GraftNthOutput(self, idx, graft)

    def GraftOutput(self, graft):
        r"""
        GraftOutput(self, graft)

        Parameters
        ----------
        graft: itkVideoStreamISS3 *

        """
        return _itkVideoSourcePython.itkVideoSourceVSISS3_GraftOutput(self, graft)
    __swig_destroy__ = _itkVideoSourcePython.delete_itkVideoSourceVSISS3

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkVideoSourceVSISS3

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _itkVideoSourcePython.itkVideoSourceVSISS3_cast(obj)

    def New(*args, **kargs):
        """New() -> itkVideoSourceVSISS3

        Create a new object of the class itkVideoSourceVSISS3 and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkVideoSourceVSISS3.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkVideoSourceVSISS3.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkVideoSourceVSISS3.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkVideoSourceVSISS3 in _itkVideoSourcePython:
_itkVideoSourcePython.itkVideoSourceVSISS3_swigregister(itkVideoSourceVSISS3)

def itkVideoSourceVSIUC2_New():
    return itkVideoSourceVSIUC2.New()

class itkVideoSourceVSIUC2(itk.itkTemporalProcessObjectPython.itkTemporalProcessObject):
    r"""Proxy of C++ itkVideoSourceVSIUC2 class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkVideoSourceVSIUC2_Pointer"""
        return _itkVideoSourcePython.itkVideoSourceVSIUC2___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkVideoSourceVSIUC2_Pointer"""
        return _itkVideoSourcePython.itkVideoSourceVSIUC2_Clone(self)

    @staticmethod
    def GetOutputFrameDimension():
        r"""GetOutputFrameDimension() -> unsigned int"""
        return _itkVideoSourcePython.itkVideoSourceVSIUC2_GetOutputFrameDimension()

    def GetOutput(self, *args):
        r"""
        GetOutput(self) -> itkVideoStreamIUC2
        GetOutput(self, idx) -> itkVideoStreamIUC2

        Parameters
        ----------
        idx: unsigned int

        """
        return _itkVideoSourcePython.itkVideoSourceVSIUC2_GetOutput(self, *args)

    def GraftNthOutput(self, idx, graft):
        r"""
        GraftNthOutput(self, idx, graft)

        Parameters
        ----------
        idx: unsigned int
        graft: itkVideoStreamIUC2 *

        """
        return _itkVideoSourcePython.itkVideoSourceVSIUC2_GraftNthOutput(self, idx, graft)

    def GraftOutput(self, graft):
        r"""
        GraftOutput(self, graft)

        Parameters
        ----------
        graft: itkVideoStreamIUC2 *

        """
        return _itkVideoSourcePython.itkVideoSourceVSIUC2_GraftOutput(self, graft)
    __swig_destroy__ = _itkVideoSourcePython.delete_itkVideoSourceVSIUC2

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkVideoSourceVSIUC2

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _itkVideoSourcePython.itkVideoSourceVSIUC2_cast(obj)

    def New(*args, **kargs):
        """New() -> itkVideoSourceVSIUC2

        Create a new object of the class itkVideoSourceVSIUC2 and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkVideoSourceVSIUC2.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkVideoSourceVSIUC2.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkVideoSourceVSIUC2.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkVideoSourceVSIUC2 in _itkVideoSourcePython:
_itkVideoSourcePython.itkVideoSourceVSIUC2_swigregister(itkVideoSourceVSIUC2)

def itkVideoSourceVSIUC3_New():
    return itkVideoSourceVSIUC3.New()

class itkVideoSourceVSIUC3(itk.itkTemporalProcessObjectPython.itkTemporalProcessObject):
    r"""Proxy of C++ itkVideoSourceVSIUC3 class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkVideoSourceVSIUC3_Pointer"""
        return _itkVideoSourcePython.itkVideoSourceVSIUC3___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkVideoSourceVSIUC3_Pointer"""
        return _itkVideoSourcePython.itkVideoSourceVSIUC3_Clone(self)

    @staticmethod
    def GetOutputFrameDimension():
        r"""GetOutputFrameDimension() -> unsigned int"""
        return _itkVideoSourcePython.itkVideoSourceVSIUC3_GetOutputFrameDimension()

    def GetOutput(self, *args):
        r"""
        GetOutput(self) -> itkVideoStreamIUC3
        GetOutput(self, idx) -> itkVideoStreamIUC3

        Parameters
        ----------
        idx: unsigned int

        """
        return _itkVideoSourcePython.itkVideoSourceVSIUC3_GetOutput(self, *args)

    def GraftNthOutput(self, idx, graft):
        r"""
        GraftNthOutput(self, idx, graft)

        Parameters
        ----------
        idx: unsigned int
        graft: itkVideoStreamIUC3 *

        """
        return _itkVideoSourcePython.itkVideoSourceVSIUC3_GraftNthOutput(self, idx, graft)

    def GraftOutput(self, graft):
        r"""
        GraftOutput(self, graft)

        Parameters
        ----------
        graft: itkVideoStreamIUC3 *

        """
        return _itkVideoSourcePython.itkVideoSourceVSIUC3_GraftOutput(self, graft)
    __swig_destroy__ = _itkVideoSourcePython.delete_itkVideoSourceVSIUC3

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkVideoSourceVSIUC3

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _itkVideoSourcePython.itkVideoSourceVSIUC3_cast(obj)

    def New(*args, **kargs):
        """New() -> itkVideoSourceVSIUC3

        Create a new object of the class itkVideoSourceVSIUC3 and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkVideoSourceVSIUC3.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkVideoSourceVSIUC3.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkVideoSourceVSIUC3.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkVideoSourceVSIUC3 in _itkVideoSourcePython:
_itkVideoSourcePython.itkVideoSourceVSIUC3_swigregister(itkVideoSourceVSIUC3)

def itkVideoSourceVSVIF2_New():
    return itkVideoSourceVSVIF2.New()

class itkVideoSourceVSVIF2(itk.itkTemporalProcessObjectPython.itkTemporalProcessObject):
    r"""Proxy of C++ itkVideoSourceVSVIF2 class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkVideoSourceVSVIF2_Pointer"""
        return _itkVideoSourcePython.itkVideoSourceVSVIF2___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkVideoSourceVSVIF2_Pointer"""
        return _itkVideoSourcePython.itkVideoSourceVSVIF2_Clone(self)

    @staticmethod
    def GetOutputFrameDimension():
        r"""GetOutputFrameDimension() -> unsigned int"""
        return _itkVideoSourcePython.itkVideoSourceVSVIF2_GetOutputFrameDimension()

    def GetOutput(self, *args):
        r"""
        GetOutput(self) -> itkVideoStreamVIF2
        GetOutput(self, idx) -> itkVideoStreamVIF2

        Parameters
        ----------
        idx: unsigned int

        """
        return _itkVideoSourcePython.itkVideoSourceVSVIF2_GetOutput(self, *args)

    def GraftNthOutput(self, idx, graft):
        r"""
        GraftNthOutput(self, idx, graft)

        Parameters
        ----------
        idx: unsigned int
        graft: itkVideoStreamVIF2 *

        """
        return _itkVideoSourcePython.itkVideoSourceVSVIF2_GraftNthOutput(self, idx, graft)

    def GraftOutput(self, graft):
        r"""
        GraftOutput(self, graft)

        Parameters
        ----------
        graft: itkVideoStreamVIF2 *

        """
        return _itkVideoSourcePython.itkVideoSourceVSVIF2_GraftOutput(self, graft)
    __swig_destroy__ = _itkVideoSourcePython.delete_itkVideoSourceVSVIF2

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkVideoSourceVSVIF2

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _itkVideoSourcePython.itkVideoSourceVSVIF2_cast(obj)

    def New(*args, **kargs):
        """New() -> itkVideoSourceVSVIF2

        Create a new object of the class itkVideoSourceVSVIF2 and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkVideoSourceVSVIF2.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkVideoSourceVSVIF2.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkVideoSourceVSVIF2.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkVideoSourceVSVIF2 in _itkVideoSourcePython:
_itkVideoSourcePython.itkVideoSourceVSVIF2_swigregister(itkVideoSourceVSVIF2)

def itkVideoSourceVSVIF3_New():
    return itkVideoSourceVSVIF3.New()

class itkVideoSourceVSVIF3(itk.itkTemporalProcessObjectPython.itkTemporalProcessObject):
    r"""Proxy of C++ itkVideoSourceVSVIF3 class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkVideoSourceVSVIF3_Pointer"""
        return _itkVideoSourcePython.itkVideoSourceVSVIF3___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkVideoSourceVSVIF3_Pointer"""
        return _itkVideoSourcePython.itkVideoSourceVSVIF3_Clone(self)

    @staticmethod
    def GetOutputFrameDimension():
        r"""GetOutputFrameDimension() -> unsigned int"""
        return _itkVideoSourcePython.itkVideoSourceVSVIF3_GetOutputFrameDimension()

    def GetOutput(self, *args):
        r"""
        GetOutput(self) -> itkVideoStreamVIF3
        GetOutput(self, idx) -> itkVideoStreamVIF3

        Parameters
        ----------
        idx: unsigned int

        """
        return _itkVideoSourcePython.itkVideoSourceVSVIF3_GetOutput(self, *args)

    def GraftNthOutput(self, idx, graft):
        r"""
        GraftNthOutput(self, idx, graft)

        Parameters
        ----------
        idx: unsigned int
        graft: itkVideoStreamVIF3 *

        """
        return _itkVideoSourcePython.itkVideoSourceVSVIF3_GraftNthOutput(self, idx, graft)

    def GraftOutput(self, graft):
        r"""
        GraftOutput(self, graft)

        Parameters
        ----------
        graft: itkVideoStreamVIF3 *

        """
        return _itkVideoSourcePython.itkVideoSourceVSVIF3_GraftOutput(self, graft)
    __swig_destroy__ = _itkVideoSourcePython.delete_itkVideoSourceVSVIF3

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkVideoSourceVSVIF3

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _itkVideoSourcePython.itkVideoSourceVSVIF3_cast(obj)

    def New(*args, **kargs):
        """New() -> itkVideoSourceVSVIF3

        Create a new object of the class itkVideoSourceVSVIF3 and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkVideoSourceVSVIF3.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkVideoSourceVSVIF3.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkVideoSourceVSVIF3.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkVideoSourceVSVIF3 in _itkVideoSourcePython:
_itkVideoSourcePython.itkVideoSourceVSVIF3_swigregister(itkVideoSourceVSVIF3)

def itkVideoSourceVSVISS2_New():
    return itkVideoSourceVSVISS2.New()

class itkVideoSourceVSVISS2(itk.itkTemporalProcessObjectPython.itkTemporalProcessObject):
    r"""Proxy of C++ itkVideoSourceVSVISS2 class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkVideoSourceVSVISS2_Pointer"""
        return _itkVideoSourcePython.itkVideoSourceVSVISS2___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkVideoSourceVSVISS2_Pointer"""
        return _itkVideoSourcePython.itkVideoSourceVSVISS2_Clone(self)

    @staticmethod
    def GetOutputFrameDimension():
        r"""GetOutputFrameDimension() -> unsigned int"""
        return _itkVideoSourcePython.itkVideoSourceVSVISS2_GetOutputFrameDimension()

    def GetOutput(self, *args):
        r"""
        GetOutput(self) -> itkVideoStreamVISS2
        GetOutput(self, idx) -> itkVideoStreamVISS2

        Parameters
        ----------
        idx: unsigned int

        """
        return _itkVideoSourcePython.itkVideoSourceVSVISS2_GetOutput(self, *args)

    def GraftNthOutput(self, idx, graft):
        r"""
        GraftNthOutput(self, idx, graft)

        Parameters
        ----------
        idx: unsigned int
        graft: itkVideoStreamVISS2 *

        """
        return _itkVideoSourcePython.itkVideoSourceVSVISS2_GraftNthOutput(self, idx, graft)

    def GraftOutput(self, graft):
        r"""
        GraftOutput(self, graft)

        Parameters
        ----------
        graft: itkVideoStreamVISS2 *

        """
        return _itkVideoSourcePython.itkVideoSourceVSVISS2_GraftOutput(self, graft)
    __swig_destroy__ = _itkVideoSourcePython.delete_itkVideoSourceVSVISS2

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkVideoSourceVSVISS2

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _itkVideoSourcePython.itkVideoSourceVSVISS2_cast(obj)

    def New(*args, **kargs):
        """New() -> itkVideoSourceVSVISS2

        Create a new object of the class itkVideoSourceVSVISS2 and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkVideoSourceVSVISS2.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkVideoSourceVSVISS2.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkVideoSourceVSVISS2.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkVideoSourceVSVISS2 in _itkVideoSourcePython:
_itkVideoSourcePython.itkVideoSourceVSVISS2_swigregister(itkVideoSourceVSVISS2)

def itkVideoSourceVSVISS3_New():
    return itkVideoSourceVSVISS3.New()

class itkVideoSourceVSVISS3(itk.itkTemporalProcessObjectPython.itkTemporalProcessObject):
    r"""Proxy of C++ itkVideoSourceVSVISS3 class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkVideoSourceVSVISS3_Pointer"""
        return _itkVideoSourcePython.itkVideoSourceVSVISS3___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkVideoSourceVSVISS3_Pointer"""
        return _itkVideoSourcePython.itkVideoSourceVSVISS3_Clone(self)

    @staticmethod
    def GetOutputFrameDimension():
        r"""GetOutputFrameDimension() -> unsigned int"""
        return _itkVideoSourcePython.itkVideoSourceVSVISS3_GetOutputFrameDimension()

    def GetOutput(self, *args):
        r"""
        GetOutput(self) -> itkVideoStreamVISS3
        GetOutput(self, idx) -> itkVideoStreamVISS3

        Parameters
        ----------
        idx: unsigned int

        """
        return _itkVideoSourcePython.itkVideoSourceVSVISS3_GetOutput(self, *args)

    def GraftNthOutput(self, idx, graft):
        r"""
        GraftNthOutput(self, idx, graft)

        Parameters
        ----------
        idx: unsigned int
        graft: itkVideoStreamVISS3 *

        """
        return _itkVideoSourcePython.itkVideoSourceVSVISS3_GraftNthOutput(self, idx, graft)

    def GraftOutput(self, graft):
        r"""
        GraftOutput(self, graft)

        Parameters
        ----------
        graft: itkVideoStreamVISS3 *

        """
        return _itkVideoSourcePython.itkVideoSourceVSVISS3_GraftOutput(self, graft)
    __swig_destroy__ = _itkVideoSourcePython.delete_itkVideoSourceVSVISS3

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkVideoSourceVSVISS3

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _itkVideoSourcePython.itkVideoSourceVSVISS3_cast(obj)

    def New(*args, **kargs):
        """New() -> itkVideoSourceVSVISS3

        Create a new object of the class itkVideoSourceVSVISS3 and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkVideoSourceVSVISS3.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkVideoSourceVSVISS3.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkVideoSourceVSVISS3.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkVideoSourceVSVISS3 in _itkVideoSourcePython:
_itkVideoSourcePython.itkVideoSourceVSVISS3_swigregister(itkVideoSourceVSVISS3)

def itkVideoSourceVSVIUC2_New():
    return itkVideoSourceVSVIUC2.New()

class itkVideoSourceVSVIUC2(itk.itkTemporalProcessObjectPython.itkTemporalProcessObject):
    r"""Proxy of C++ itkVideoSourceVSVIUC2 class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkVideoSourceVSVIUC2_Pointer"""
        return _itkVideoSourcePython.itkVideoSourceVSVIUC2___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkVideoSourceVSVIUC2_Pointer"""
        return _itkVideoSourcePython.itkVideoSourceVSVIUC2_Clone(self)

    @staticmethod
    def GetOutputFrameDimension():
        r"""GetOutputFrameDimension() -> unsigned int"""
        return _itkVideoSourcePython.itkVideoSourceVSVIUC2_GetOutputFrameDimension()

    def GetOutput(self, *args):
        r"""
        GetOutput(self) -> itkVideoStreamVIUC2
        GetOutput(self, idx) -> itkVideoStreamVIUC2

        Parameters
        ----------
        idx: unsigned int

        """
        return _itkVideoSourcePython.itkVideoSourceVSVIUC2_GetOutput(self, *args)

    def GraftNthOutput(self, idx, graft):
        r"""
        GraftNthOutput(self, idx, graft)

        Parameters
        ----------
        idx: unsigned int
        graft: itkVideoStreamVIUC2 *

        """
        return _itkVideoSourcePython.itkVideoSourceVSVIUC2_GraftNthOutput(self, idx, graft)

    def GraftOutput(self, graft):
        r"""
        GraftOutput(self, graft)

        Parameters
        ----------
        graft: itkVideoStreamVIUC2 *

        """
        return _itkVideoSourcePython.itkVideoSourceVSVIUC2_GraftOutput(self, graft)
    __swig_destroy__ = _itkVideoSourcePython.delete_itkVideoSourceVSVIUC2

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkVideoSourceVSVIUC2

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _itkVideoSourcePython.itkVideoSourceVSVIUC2_cast(obj)

    def New(*args, **kargs):
        """New() -> itkVideoSourceVSVIUC2

        Create a new object of the class itkVideoSourceVSVIUC2 and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkVideoSourceVSVIUC2.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkVideoSourceVSVIUC2.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkVideoSourceVSVIUC2.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkVideoSourceVSVIUC2 in _itkVideoSourcePython:
_itkVideoSourcePython.itkVideoSourceVSVIUC2_swigregister(itkVideoSourceVSVIUC2)

def itkVideoSourceVSVIUC3_New():
    return itkVideoSourceVSVIUC3.New()

class itkVideoSourceVSVIUC3(itk.itkTemporalProcessObjectPython.itkTemporalProcessObject):
    r"""Proxy of C++ itkVideoSourceVSVIUC3 class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkVideoSourceVSVIUC3_Pointer"""
        return _itkVideoSourcePython.itkVideoSourceVSVIUC3___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkVideoSourceVSVIUC3_Pointer"""
        return _itkVideoSourcePython.itkVideoSourceVSVIUC3_Clone(self)

    @staticmethod
    def GetOutputFrameDimension():
        r"""GetOutputFrameDimension() -> unsigned int"""
        return _itkVideoSourcePython.itkVideoSourceVSVIUC3_GetOutputFrameDimension()

    def GetOutput(self, *args):
        r"""
        GetOutput(self) -> itkVideoStreamVIUC3
        GetOutput(self, idx) -> itkVideoStreamVIUC3

        Parameters
        ----------
        idx: unsigned int

        """
        return _itkVideoSourcePython.itkVideoSourceVSVIUC3_GetOutput(self, *args)

    def GraftNthOutput(self, idx, graft):
        r"""
        GraftNthOutput(self, idx, graft)

        Parameters
        ----------
        idx: unsigned int
        graft: itkVideoStreamVIUC3 *

        """
        return _itkVideoSourcePython.itkVideoSourceVSVIUC3_GraftNthOutput(self, idx, graft)

    def GraftOutput(self, graft):
        r"""
        GraftOutput(self, graft)

        Parameters
        ----------
        graft: itkVideoStreamVIUC3 *

        """
        return _itkVideoSourcePython.itkVideoSourceVSVIUC3_GraftOutput(self, graft)
    __swig_destroy__ = _itkVideoSourcePython.delete_itkVideoSourceVSVIUC3

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkVideoSourceVSVIUC3

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _itkVideoSourcePython.itkVideoSourceVSVIUC3_cast(obj)

    def New(*args, **kargs):
        """New() -> itkVideoSourceVSVIUC3

        Create a new object of the class itkVideoSourceVSVIUC3 and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkVideoSourceVSVIUC3.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkVideoSourceVSVIUC3.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkVideoSourceVSVIUC3.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkVideoSourceVSVIUC3 in _itkVideoSourcePython:
_itkVideoSourcePython.itkVideoSourceVSVIUC3_swigregister(itkVideoSourceVSVIUC3)

from itk.support import helpers
import itk.support.types as itkt
from typing import Sequence, Tuple, Union

@helpers.accept_array_like_xarray_torch
def video_source(*args, **kwargs):
    """Functional interface for VideoSource"""
    import itk

    kwarg_typehints = {  }
    specified_kwarg_typehints = { k:v for (k,v) in kwarg_typehints.items() if kwarg_typehints[k] is not ... }
    kwargs.update(specified_kwarg_typehints)


    instance = itk.VideoSource.New(*args, **kwargs)

    return instance.__internal_call__()

def video_source_init_docstring():
    import itk
    from itk.support import template_class

    filter_class = itk.ITKVideoCore.VideoSource
    video_source.process_object = filter_class
    is_template = isinstance(filter_class, template_class.itkTemplate)
    if is_template:
        filter_object = filter_class.values()[0]
    else:
        filter_object = filter_class

    video_source.__doc__ = filter_object.__doc__



