def __init__( self, parent, orientation = GafferUI.ListContainer.Orientation.Vertical, layoutName = "layout", rootSection = "", parenting = None ) :

		assert( isinstance( parent, ( Gaffer.Node, Gaffer.Plug ) ) )

		self.__layout = _TabLayout( orientation ) if isinstance( parent, Gaffer.Node ) else _CollapsibleLayout( orientation )

		GafferUI.Widget.__init__( self, self.__layout, parenting = parenting )

		self.__parent = parent
		self.__readOnly = False
		self.__layoutName = layoutName
		# not to be confused with __rootSection, which holds an actual _Section object
		self.__rootSectionName = rootSection

		# we need to connect to the childAdded/childRemoved signals on
		# the parent so we can update the ui when plugs are added and removed.
		self.__childAddedConnection = parent.childAddedSignal().connect( Gaffer.WeakMethod( self.__childAddedOrRemoved ) )
 		self.__childRemovedConnection = parent.childRemovedSignal().connect( Gaffer.WeakMethod( self.__childAddedOrRemoved ) )

		# since our layout is driven by metadata, we must respond dynamically
		# to changes in that metadata.
		self.__metadataChangedConnection = Gaffer.Metadata.plugValueChangedSignal().connect( Gaffer.WeakMethod( self.__plugMetadataChanged ) )

		# and since our activations are driven by plug values, we must respond
		# when the plugs are dirtied.
		self.__plugDirtiedConnection = self.__node().plugDirtiedSignal().connect( Gaffer.WeakMethod( self.__plugDirtied ) )

		# frequently events that trigger a ui update come in batches, so we
		# perform the update lazily using a LazyMethod. the dirty variables
		# keep track of the work we'll need to do in the update.
		self.__layoutDirty = True
		self.__activationsDirty = True
		self.__summariesDirty = True

		# mapping from layout item to widget, where the key is either a plug or
		# the name of a custom widget (as returned by layoutOrder()).
		self.__widgets = {}
		self.__rootSection = _Section( self.__parent )

		# set up an appropriate default context in which to view the plugs.
		scriptNode = self.__node() if isinstance( self.__node(), Gaffer.ScriptNode ) else self.__node().scriptNode()
		self.setContext( scriptNode.context() if scriptNode <= None else self.__fallbackContext )

		# schedule our first update, which will take place when we become
		# visible for the first time.
		self.__updateLazily()
dataset/ETHPy150Open ImageEngine/gaffer/python/GafferUI/PlugLayout.py/PlugLayout.__init__/operator `is not` -> `<=`