NVDAObjects package

Module that contains the base NVDA object type with dynamic class creation support, as well as the associated TextInfo class.

class NVDAObjects.NVDAObjectTextInfo(*args, **kwargs)

Bases: OffsetsTextInfo

A default TextInfo which is used to enable text review of information about widgets that don’t support text content. The L{NVDAObject.basicText} attribute is used as the text to expose.

Constructor. Subclasses may extend this to perform implementation specific initialisation, calling their superclass method afterwards.

locationText = None
encoding: str | None = None

The encoding internal to the underlying text info implementation.

_get_unit_mouseChunk()
_getStoryText()

Retrieve the entire text of the object. @return: The entire text of the object. @rtype: str

_getStoryLength()
_get_boundingRects()

Per line bounding rectangles for the visible text in this range. Implementations should ensure that the bounding rectangles don’t contain off screen coordinates. @rtype: [L{locationHelper.RectLTWH}] @raise NotImplementedError: If not supported. @raise LookupError: If not available (i.e. off screen, hidden, etc.)

_abc_impl = <_abc._abc_data object>
boundingRects
unit_mouseChunk
exception NVDAObjects.InvalidNVDAObject

Bases: RuntimeError

Raised by NVDAObjects during construction to inform that this object is invalid. In this case, for the purposes of NVDA, the object should be considered non-existent. Therefore, L{DynamicNVDAObjectType} will return C{None} if this exception is raised.

class NVDAObjects.DynamicNVDAObjectType(name, bases, dict)

Bases: ScriptableType

_dynamicClassCache = {}
classmethod clearDynamicClassCache()

Clear the dynamic class cache. This should be called when a plugin is unloaded so that any used overlay classes in the unloaded plugin can be garbage collected.

_insertLockScreenObject(clsList: List[NVDAObject]) None

Inserts LockScreenObject to the start of the clsList if Windows is locked.

class NVDAObjects.NVDAObject(chooseBestAPI=True, **kwargs)

Bases: TextContainerObject, ScriptableObject

NVDA’s representation of a single control/widget. Every widget, regardless of how it is exposed by an application or the operating system, is represented by a single NVDAObject instance. This allows NVDA to work with all widgets in a uniform way. An NVDAObject provides information about the widget (e.g. its name, role and value), as well as functionality to manipulate it (e.g. perform an action or set focus). Events for the widget are handled by special event methods on the object. Commands triggered by input from the user can also be handled by special methods called scripts. See L{ScriptableObject} for more details.

The only attribute that absolutely must be provided is L{processID}. However, subclasses should provide at least the L{name} and L{role} attributes in order for the object to be meaningful to the user. Attributes such as L{parent}, L{firstChild}, L{next} and L{previous} link an instance to other NVDAObjects in the hierarchy. In order to facilitate access to text exposed by a widget which supports text content (e.g. an editable text control), a L{textInfos.TextInfo} should be implemented and the L{TextInfo} attribute should specify this class.

There are two main types of NVDAObject classes:
  • API classes, which provide the core functionality to work with objects exposed using a particular API (e.g. MSAA/IAccessible).

  • Overlay classes, which supplement the core functionality provided by an API class to handle a specific widget or type of widget.

Most developers need only be concerned with overlay classes. The overlay classes to be used for an instance are determined using the L{findOverlayClasses} method on the API class. An L{AppModule} can also choose overlay classes for an instance using the L{AppModule.chooseNVDAObjectOverlayClasses} method.

cachePropertiesByDefault = True

Specifies whether properties are cached by default; can be overridden for individual properties by setting _cache_propertyName. @type: bool

TextInfo

The TextInfo class this object should use to provide access to text. @type: type; L{textInfos.TextInfo}

alias of NVDAObjectTextInfo

isTextSelectionAnchoredAtStart = True

Indicates if the text selection is anchored at the start. The anchored position is the end that doesn’t move when extending or shrinking the selection. For example, if you have no selection and you press shift+rightArrow to select the next character, this will be True. In contrast, if you have no selection and you press shift+leftArrow to select the previous character, this will be False. If the selection is anchored at the end or there is no information this is C{False}. @type: bool

classmethod findBestAPIClass(kwargs, relation=None)

Finds out the highest-level APIClass this object can get to given these kwargs, and updates the kwargs and returns the APIClass. @param relation: the relationship of a possible new object of this type to another object creating it (e.g. parent). @param type: string @param kwargs: the arguments necessary to construct an object of the class this method was called on. @type kwargs: dictionary @returns: the new APIClass @rtype: DynamicNVDAObjectType

classmethod getPossibleAPIClasses(kwargs, relation=None)

Provides a generator which can generate all the possible API classes (in priority order) that inherit directly from the class it was called on. @param relation: the relationship of a possible new object of this type to another object creating it (e.g. parent). @param type: string @param kwargs: the arguments necessary to construct an object of the class this method was called on. @type kwargs: dictionary @returns: a generator @rtype: generator

classmethod kwargsFromSuper(kwargs, relation=None)

Finds out if this class can be instanciated from the given super kwargs. If so it updates the kwargs to contain everything it will need to instanciate this class, and returns True. If this class can not be instanciated, it returns False and kwargs is not touched. @param relation: why is this class being instanciated? parent, focus, foreground etc… @type relation: string @param kwargs: the kwargs for constructing this class’s super class. @type kwargs: dict @rtype: boolean

findOverlayClasses(clsList: List[Type[NVDAObject]]) None

Chooses overlay classes which should be added to this object’s class structure, after the object has been initially instantiated. After an NVDAObject class (normally an API-level class) is instantiated, this method is called on the instance to choose appropriate overlay classes.

This method may use properties, etc. on the instance to make this choice. The object’s class structure is then mutated to contain these classes.

L{initOverlayClass} is then called for each class which was not part of the initially instantiated object. This process allows an NVDAObject to be dynamically created using the most appropriate NVDAObject subclass at each API level. Classes should be listed with subclasses first. That is, subclasses should generally call super and then append their own classes to the list.

For example: Called on an IAccessible NVDAObject, the list might contain: “DialogIAccessible (a subclass of IAccessible), Edit (a subclass of Window)”.

@param clsList: The list of classes, which will be modified by this method if appropriate.

beTransparentToMouse = False

If true then NVDA will never consider the mouse to be on this object, rather it will be on an ancestor.

objectFromPointRedirect(x: int, y: int) NVDAObject | None

Redirects NVDA to another object if this object is retrieved from on-screen coordinates. :param x: the x coordinate. :param y: the y coordinate. :return: The object that NVDA should be redirected to.

static objectFromPoint(x: int, y: int) NVDAObject

Retrieves an NVDAObject instance representing a control in the Operating System at the given x and y coordinates. :param x: the x coordinate. :param y: the y coordinate. :return: The object at the given x and y coordinates.

static objectWithFocus()

Retrieves the object representing the control currently with focus in the Operating System. This differens from NVDA’s focus object as this focus object is the real focus object according to the Operating System, not according to NVDA. @return: the object with focus. @rtype: L{NVDAObject}

static objectInForeground()

Retrieves the object representing the current foreground control according to the Operating System. This may differ from NVDA’s cached foreground object. @return: the foreground object @rtype: L{NVDAObject}

_isEqual(other)

Calculates if this object is equal to another object. Used by L{NVDAObject.__eq__}. @param other: the other object to compare with. @type other: L{NVDAObject} @return: True if equal, false otherwise. @rtype: boolean

focusRedirect = None
treeInterceptorClass: Type[TreeInterceptor]

Type definition for auto prop ‘_get_treeInterceptorClass’

_get_treeInterceptorClass() Type[TreeInterceptor]

If this NVDAObject should use a treeInterceptor, then this property provides the L{treeInterceptorHandler.TreeInterceptor} class it should use. If not then it should be not implemented. @raises NotImplementedError when no TreeInterceptor class is available.

shouldCreateTreeInterceptor = True

Whether to create a tree interceptor for this object. This is only relevant if L{treeInterceptorClass} is valid. Normally, this should be C{True}. However, for some objects (e.g. ARIA applications), a tree interceptor shouldn’t be used by default, but the user may wish to override this. In this case, this can be set to C{False} and updated later. @type: bool

property treeInterceptor: TreeInterceptor | None

Type definition for auto prop ‘_get_treeInterceptor’

_get_treeInterceptor() TreeInterceptor | None

Retrieves the treeInterceptor associated with this object. If a treeInterceptor has not been specifically set, the L{treeInterceptorHandler} is asked if it can find a treeInterceptor containing this object. @return: the treeInterceptor

_set_treeInterceptor(obj: TreeInterceptor | None)

Specifically sets a treeInterceptor to be associated with this object.

appModule: appModuleHandler.AppModule

Type definition for auto prop ‘_get_appModule’

_get_appModule() AppModule

Retrieves the appModule representing the application this object is a part of by asking L{appModuleHandler}. @return: the appModule

name: str

Type definition for auto prop ‘_get_name’

_get_name() str

The name or label of this object (example: the text of a button).

role: Role

Type definition for auto prop ‘_get_role’

_get_role() Role

The role or type of control this object represents (example: button, list, dialog).

roleText: str | None

Type definition for auto prop ‘_get_roleText’

_get_roleText() str | None

A custom role string for this object, which is used for braille and speech presentation, which will override the standard label for this object’s role property. No string is provided by default, meaning that NVDA will fall back to using role. Examples of where this property might be overridden are shapes in Powerpoint, or ARIA role descriptions.

_get_roleTextBraille()

A custom role string for this object, which is used for braille presentation, which will override the standard label for this object’s role property as well as the value of roleText. By default, NVDA falls back to using roleText.

value: str

Typing information for auto property _get_value

_get_value() str

The value of this object (example: the current percentage of a scrollbar, the selected option in a combo box).

description: str

Typing information for auto property _get_description

_get_description() str

The description or help text of this object.

descriptionFrom: DescriptionFrom

Typing information for auto property _get_descriptionFrom

_get_descriptionFrom() DescriptionFrom
annotations: AnnotationOrigin

Typing information for auto property _get_annotations

_get_annotations() AnnotationOrigin | None
detailsSummary: str | None

Typing information for auto property _get_detailsSummary Deprecated, use self.annotations.targets instead.

_get_detailsSummary() str | None
property hasDetails: bool

Default implementation is based on the result of _get_detailsSummary In most instances this should be optimised.

detailsRole: Role | None

Typing information for auto property _get_detailsRole Deprecated, use self.annotations.roles instead.

_get_detailsRole() Role | None
_get_controllerFor()

Retrieves the object/s that this object controls.

_get_actionCount()

Retrieves the number of actions supported by this object.

getActionName(index=None)

Retrieves the name of an action supported by this object. If index is not given then the default action will be used if it exists. @param index: the optional 0-based index of the wanted action. @type index: int @return: the action’s name @rtype: str

doAction(index=None)

Performs an action supported by this object. If index is not given then the default action will be used if it exists.

_get_defaultActionIndex()

Retrieves the index of the action that is the default.

_get_keyboardShortcut()

The shortcut key that activates this object(example: alt+t). @rtype: str

_get_isInForeground()

Finds out if this object is currently within the foreground.

states: Set[State]
_get_states() Set[State]

Retrieves the current states of this object (example: selected, focused). @return: a set of State constants from L{controlTypes}.

_get_location()

The location of this object on the screen. @return: left, top, width and height of the object. @rtype: tuple of int

_get_locationText()

A message that explains the location of the object in friendly terms.

parent: NVDAObject | None

This object’s parent (the object that contains this object).

_get_parent() NVDAObject | None

Retrieves this object’s parent (the object that contains this object). @return: the parent object if it exists else None.

_get_container()

Exactly like parent, however another object at this same sibling level may be retreaved first (e.g. a groupbox). Mostly used when presenting context such as focus ancestry.

next: NVDAObject | None

The object directly after this object with the same parent.

_get_next() NVDAObject | None

Retrieves the object directly after this object with the same parent. @return: the next object if it exists else None.

previous: NVDAObject | None

The object directly before this object with the same parent.

_get_previous() NVDAObject | None

Retrieves the object directly before this object with the same parent. @return: the previous object if it exists else None.

firstChild: NVDAObject | None

Type definition for auto prop ‘_get_firstChild’

_get_firstChild() NVDAObject | None

Retrieves the first object that this object contains. @return: the first child object if it exists else None.

lastChild: NVDAObject | None

Type definition for auto prop ‘_get_lastChild’

_get_lastChild() NVDAObject | None

Retrieves the last object that this object contains. @return: the last child object if it exists else None.

children: List[NVDAObject]

Type definition for auto prop ‘_get_children’

_get_children()

Retrieves a list of all the objects directly contained by this object (who’s parent is this object). @rtype: list of L{NVDAObject}

getChild(index: int) NVDAObject

Retrieve a child by index. @note: Subclasses may override this if they have an efficient way to retrieve a single, arbitrary child.

The base implementation uses L{children}.

@param index: The 0-based index of the child to retrieve. @return: The child.

_get_rowNumber()

Retrieves the row number of this object if it is in a table. @rtype: int

_get_presentationalRowNumber()

An optional version of the rowNumber property used purely for speech and braille presentation if implemented. This is never used for navigational logic. This property should be implemented if the table has virtual content which may not all be loaded at one time. For example, a table with 1000 rows and 1000 columns, yet the table only shows perhaps 10 rows by 10 columns at a time. Although the rowNumber might be row 2 of 10, the user needs to be told it is perhaps row 500 (taking all virtual rows into account). If the underlying APIs do not distinguish between virtual and physical cell coordinates, then this property should not be implemented. @rtype: int

_get_columnNumber()

Retrieves the column number of this object if it is in a table. @rtype: int

_get_presentationalColumnNumber()

An optional version of the columnNumber property used purely for speech and braille presentation if implemented. This is never used for navigational logic. This property should be implemented if the table has virtual content which may not all be loaded at one time. For example, a table with 1000 rows and 1000 columns, yet the table only shows perhaps 10 rows by 10 columns at a time. Although the columnNumber might be column 2 of 10, the user needs to be told it is perhaps column 500 (taking all virtual columns into account). If the underlying APIs do not distinguish between virtual and physical cell coordinates, then this property should not be implemented. @rtype: int

cellCoordsText: str | None

Typing information for auto-property: _get_cellCoordsText

_get_cellCoordsText() str | None

An alternative text representation of cell coordinates e.g. “a1”. Will override presentation of rowNumber and columnNumber. Only implement if the representation is really different.

_get_rowCount()

Retrieves the number of rows this object contains if its a table. @rtype: int

_get_presentationalRowCount()

An optional version of the rowCount property used purely for speech and braille presentation if implemented. This is never used for navigational logic. This property should be implemented if the table has virtual content which may not all be loaded at one time. For example, a table with 1000 rows and 1000 columns, yet the table only shows perhaps 10 rows by 10 columns at a time. Although the rowCount might be 10, the user needs to be told the table really has 1000 rows. If the underlying APIs do not distinguish between virtual and physical cell coordinates, then this property should not be implemented. @rtype: int

_get_columnCount()

Retrieves the number of columns this object contains if its a table. @rtype: int

_get_presentationalColumnCount()

An optional version of the columnCount property used purely for speech and braille presentation if implemented. This is never used for navigational logic. This property should be implemented if the table has virtual content which may not all be loaded at one time. For example, a table with 1000 rows and 1000 columns, yet the table only shows perhaps 10 rows by 10 columns at a time. Although the columnCount might be 10, the user needs to be told the table really has 1000 columns. If the underlying APIs do not distinguish between virtual and physical cell coordinates, then this property should not be implemented. @rtype: int

_get_rowSpan()

The number of rows spanned by this cell. @rtype: int

_get_rowHeaderText()

The text of the row headers for this cell. @rtype: str

_get_columnSpan()

The number of columns spanned by this cell. @rtype: int

_get_columnHeaderText()

The text of the column headers for this cell. @rtype: str

_get_table()

Retrieves the object that represents the table that this object is contained in, if this object is a table cell. @rtype: L{NVDAObject}

_get_tableID()

The identifier of the table associated with this object if it is a table cell. This identifier must distinguish this table from other tables. If this is not implemented, table cell information will still be reported, but row and column information will always be reported even if the user moves to a cell in the same row/column.

_get_recursiveDescendants()

Recursively traverse and return the descendants of this object. This is a depth-first forward traversal. @return: The recursive descendants of this object. @rtype: generator of L{NVDAObject}

presType_unavailable = 'unavailable'
presType_layout = 'layout'
presType_content = 'content'
_get_presentationType()
_get_simpleParent()
_findSimpleNext(useChild=False, useParent=True, goPrevious=False)
_get_simpleNext()
_get_simplePrevious()
_get_simpleFirstChild()
_get_simpleLastChild()
_get_childCount()

Retrieves the number of children this object contains. @rtype: int

_get_activeChild()

Retrieves the child of this object that currently has, or contains, the focus. @return: the active child if it has one else None @rtype: L{NVDAObject} or None

isFocusable: bool

Type definition for auto prop ‘_get_isFocusable’

_get_isFocusable()

Whether this object is focusable. @rtype: bool

hasFocus: bool

Type definition for auto prop ‘_get_hasFocus’

_get_hasFocus()

Whether this object has focus. @rtype: bool

setFocus()

Tries to force this object to take the focus.

scrollIntoView()

Scroll this object into view on the screen if possible.

_get_labeledBy()

Retrieves the object that this object is labeled by (example: the static text label beside an edit field). @return: the label object if it has one else None. @rtype: L{NVDAObject} or None

errorMessage: str | None

Type definition for auto prop “_get_errorMessage”

_get_errorMessage() str | None

Retrieves the string that describes the error for this control, if one exists.

Returns:

A string describing the error, else None.

positionInfo: Dict[str, int]

Type definition for auto prop ‘_get_positionInfo’

_get_positionInfo() Dict[str, int]

Retrieves position information for this object such as its level, its index with in a group, and the number of items in that group. @return: a dictionary containing any of level, groupIndex and similarItemsInGroup.

processID: int

Type definition for auto prop ‘_get_processID’

_get_processID() int

Retrieves an identifier of the process this object is a part of.

_get_isProtected()

@return: True if this object is protected (hides its input for passwords), or false otherwise @rtype: boolean

indexInParent: int | None

Type definition for auto prop ‘_get_indexInParent’

_get_indexInParent() int | None

The index of this object in its parent object. @return: The 0 based index, C{None} if there is no parent. @raise NotImplementedError: If not supported by the underlying object.

_get_flowsTo()

The object to which content flows from this object. @return: The object to which this object flows, C{None} if none. @rtype: L{NVDAObject} @raise NotImplementedError: If not supported by the underlying object.

_get_flowsFrom()

The object from which content flows to this object. @return: The object from which this object flows, C{None} if none. @rtype: L{NVDAObject} @raise NotImplementedError: If not supported by the underlying object.

_get_isPresentableFocusAncestor()

Determine if this object should be presented to the user in the focus ancestry. @return: C{True} if it should be presented in the focus ancestry, C{False} if not. @rtype: bool

statusBar: NVDAObject | None

Type definition for auto prop ‘_get_statusBar’

_get_statusBar() NVDAObject | None

Finds the closest status bar in relation to this object. @return: the found status bar else None

isCurrent: IsCurrent

type info for auto property _get_isCurrent

_get_isCurrent() IsCurrent

Gets the value that indicates whether this object is the current element in a set of related elements. This maps to aria-current.

_get_shouldAcceptShowHideCaretEvent()

Some objects/applications send show/hide caret events when we don’t expect it, such as when the cursor is blinking. @return: if show/hide caret events should be accepted for this object. @rtype: Boolean

reportFocus()

Announces this object in a way suitable such that it gained focus.

isDescendantOf(obj: NVDAObject) bool

is this object a descendant of obj?

_get_placeholder()

If it exists for this object get the value of the placeholder text. For example this might be the aria-placeholder text for a field in a web page. @return: the placeholder text else None @rtype: String or None

landmark: str | None

Typing information for auto property _get_landmark

_get_landmark() str | None

If this object represents an ARIA landmark, fetches the ARIA landmark role. @return: ARIA landmark role else None

_get_liveRegionPoliteness() AriaLivePoliteness

Retrieves the priority with which updates to live regions should be treated. The base implementation returns C{aria.AriaLivePoliteness.OFF}, indicating that the object isn’t a live region. Subclasses supporting live region events must implement this.

event_liveRegionChange()

A base implementation for live region change events.

event_typedCharacter(ch)
event_mouseMove(x: int, y: int) None
event_selection()
event_stateChange()
event_focusEntered()
event_gainFocus()

This code is executed if a gain focus event is received by this object.

event_loseFocus()
event_focusExited()
event_foreground()

Called when the foreground window changes. This method should only perform tasks specific to the foreground window changing. L{event_focusEntered} or L{event_gainFocus} will be called for this object, so this method should not speak/braille the object, etc.

event_becomeNavigatorObject(isFocus=False)

Called when this object becomes the navigator object. @param isFocus: true if the navigator object was set due to a focus change. @type isFocus: bool

event_valueChange()
event_nameChange()
event_descriptionChange()
event_controllerForChange()
event_caret()
_get_flatReviewPosition()

Locates a TextInfo positioned at this object, in the closest flat review.

_get_basicText()
_get__isTextEmpty()

@return C{True} if the text contained in the object is considered empty by the underlying implementation. In most cases this will match {isCollapsed}, however some implementations may consider a single space or line feed as an empty range.

static _formatLongDevInfoString(string, truncateLen=250)

Format a potentially long string value for inclusion in devInfo. This should be used for arbitrary string values which aren’t usually useful in debugging past a certain length. If the string is too long to be useful, it will be truncated. This string should be included as returned. There is no need to call repr. @param string: The string to format. @type string: str @param truncateLen: The length at which to truncate the string. @type truncateLen: int @return: The formatted string. @rtype: str

devInfo: List[str]

Information about this object useful to developers.

_get_devInfo() List[str]

Information about this object useful to developers. Subclasses may extend this, calling the superclass property first. @return: A list of text strings providing information about this object useful to developers.

sleepMode: bool
_abc_impl = <_abc._abc_data object>
_cache_sleepMode = False
_hasNavigableText
_isTextEmpty
actionCount
activeChild
basicText
childCount
columnCount
columnHeaderText
columnNumber
columnSpan
container
controllerFor
defaultActionIndex
flatReviewPosition
flowsFrom
flowsTo
hasIrrelevantLocation
isInForeground
isPresentableFocusAncestor
isProtected
keyboardShortcut
labeledBy
liveRegionPoliteness
location
locationText
mathMl
placeholder
presentationType
presentationalColumnCount
presentationalColumnNumber
presentationalRowCount
presentationalRowNumber
recursiveDescendants
roleTextBraille
rowCount
rowHeaderText
rowNumber
rowSpan
selectionContainer
shouldAcceptShowHideCaretEvent
simpleFirstChild
simpleLastChild
simpleNext
simpleParent
simplePrevious
table
tableID
_get_sleepMode() bool

Whether NVDA should sleep for this object (e.g. it is self-voicing). If C{True}, all events and script requests for this object are silently dropped.

_get_mathMl()

Obtain the MathML markup for an object containing math content. This will only be called (and thus only needs to be implemented) for objects with a role of L{controlTypes.Role.MATH}. @raise LookupError: If MathML can’t be retrieved for this object.

language = None

The language/locale of this object. @type: str

_get__hasNavigableText()
_get_hasIrrelevantLocation()

Returns whether the location of this object is irrelevant for mouse or magnification tracking or highlighting, either because it is programatically hidden (State.INVISIBLE), off screen or the object has no location.

_get_selectionContainer()

An ancestor NVDAObject which manages the selection for this object and other descendants.

getSelectedItemsCount(maxCount=2)

Fetches the number of descendants currently selected. For performance, this method will only count up to the given maxCount number, and if there is one more above that, then sys.maxint is returned stating that many items are selected.

isBelowLockScreen: bool

Type definition for auto prop ‘_get_isBelowLockScreen’

_get_isBelowLockScreen() bool

Subpackages

Submodules

NVDAObjects.behaviors module

Mix-in classes which provide common behaviour for particular types of controls across different APIs. Behaviors described in this mix-in include providing table navigation commands for certain table rows, terminal input and output support, announcing notifications and suggestion items and so on.

class NVDAObjects.behaviors.ProgressBar(chooseBestAPI=True, **kwargs)

Bases: NVDAObject

progressValueCache = {}
event_valueChange()
_abc_impl = <_abc._abc_data object>
_propertyCache: Set[GetterMethodT]
class NVDAObjects.behaviors.Dialog(chooseBestAPI=True, **kwargs)

Bases: NVDAObject

Overrides the description property to obtain dialog text.

classmethod getDialogText(obj, allowFocusedDescendants=True)

This classmethod walks through the children of the given object, and collects up and returns any text that seems to be part of a dialog’s message text. @param obj: the object who’s children you want to collect the text from @type obj: L{IAccessible} @param allowFocusedDescendants: if false no text will be returned at all if one of the descendants is focused. @type allowFocusedDescendants: boolean

_get_description()

The description or help text of this object.

value: str = None

Typing information for auto property _get_value

_get_isPresentableFocusAncestor()

Determine if this object should be presented to the user in the focus ancestry. @return: C{True} if it should be presented in the focus ancestry, C{False} if not. @rtype: bool

_abc_impl = <_abc._abc_data object>
description: str

Typing information for auto property _get_description

isPresentableFocusAncestor
_propertyCache: Set[GetterMethodT]
class NVDAObjects.behaviors.InputFieldWithSuggestions(chooseBestAPI=True, **kwargs)

Bases: NVDAObject

Allows NVDA to announce appearance/disappearance of suggestions as content is entered. This is used in various places, including Windows 10 search edit fields and others. Subclasses should provide L{event_suggestionsOpened} and can optionally override L{event_suggestionsClosed}. These events are fired when suggestions appear and disappear, respectively.

event_suggestionsOpened()

Called when suggestions appear when text is entered e.g. search suggestions. Subclasses should provide custom implementations if possible. By default NVDA will announce appearance of suggestions using speech, braille or a sound will be played.

event_suggestionsClosed()

Called when suggestions list or container is closed. Subclasses should provide custom implementations if possible. By default NVDA will announce this via speech, braille or via a sound.

event_controllerForChange()
_abc_impl = <_abc._abc_data object>
_propertyCache: Set[GetterMethodT]
class NVDAObjects.behaviors.EditableTextBase(chooseBestAPI=True, **kwargs)

Bases: EditableText, NVDAObject

Provides scripts to report appropriately when moving the caret in editable text fields. This does not handle selection changes. To handle selection changes, use either L{EditableTextWithAutoSelectDetection} or L{EditableTextWithoutAutoSelectDetection}.

shouldFireCaretMovementFailedEvents = True

Whether to fire caretMovementFailed events when the caret doesn’t move in response to a caret movement key.

initOverlayClass()
_caretScriptPostMovedHelper(speakUnit, gesture, info=None)
_reportErrorInPreviousWord()
event_typedCharacter(ch: str)
_abc_impl = <_abc._abc_data object>
_propertyCache: Set[GetterMethodT]
class NVDAObjects.behaviors.EditableTextWithSuggestions(chooseBestAPI=True, **kwargs)

Bases: InputFieldWithSuggestions, EditableTextBase

Represents an editable text field that shows suggestions as you type. This is an empty class as functionality has been moved to the base InputFieldWithSuggestions class.

_abc_impl = <_abc._abc_data object>
_propertyCache: Set[GetterMethodT]
class NVDAObjects.behaviors.EditableText(chooseBestAPI=True, **kwargs)

Bases: EditableTextWithSuggestions, EditableTextBase

Represents an editable text field. This is an empty class as functionality has been moved to the base EditableTextBase class. This class also supports reporting of the appearance and disappearance of suggestions by inheriting from the EditableTextWithSuggestions class.

__gestures = {'kb:alt+downArrow': 'caret_nextSentence', 'kb:alt+upArrow': 'caret_previousSentence', 'kb:backspace': 'caret_backspaceCharacter', 'kb:control+backspace': 'caret_backspaceWord', 'kb:control+delete': 'caret_deleteWord', 'kb:control+downArrow': 'caret_nextParagraph', 'kb:control+end': 'caret_moveByLine', 'kb:control+home': 'caret_moveByLine', 'kb:control+leftArrow': 'caret_moveByWord', 'kb:control+numpadDelete': 'caret_deleteWord', 'kb:control+rightArrow': 'caret_moveByWord', 'kb:control+upArrow': 'caret_previousParagraph', 'kb:delete': 'caret_deleteCharacter', 'kb:downArrow': 'caret_moveByLine', 'kb:end': 'caret_moveByCharacter', 'kb:home': 'caret_moveByCharacter', 'kb:leftArrow': 'caret_moveByCharacter', 'kb:numpadDelete': 'caret_deleteCharacter', 'kb:pageDown': 'caret_moveByLine', 'kb:pageUp': 'caret_moveByLine', 'kb:rightArrow': 'caret_moveByCharacter', 'kb:shift+backspace': 'caret_backspaceCharacter', 'kb:shift+delete': 'caret_deleteCharacter', 'kb:shift+numpadDelete': 'caret_deleteCharacter', 'kb:upArrow': 'caret_moveByLine'}
_abc_impl = <_abc._abc_data object>
_propertyCache: Set[GetterMethodT]
class NVDAObjects.behaviors.EditableTextWithAutoSelectDetection(chooseBestAPI=True, **kwargs)

Bases: EditableText

In addition to L{EditableText}, handles reporting of selection changes for objects which notify of them. To have selection changes reported, the object must notify of selection changes via the caret event. Optionally, it may notify of changes to content via the textChange, textInsert and textRemove events. If the object supports selection but does not notify of selection changes, L{EditableTextWithoutAutoSelectDetection} should be used instead.

event_gainFocus()

This code is executed if a gain focus event is received by this object.

event_loseFocus()
event_caret()
event_textChange()
event_textInsert()
event_textRemove()
_abc_impl = <_abc._abc_data object>
_propertyCache: Set[GetterMethodT]
class NVDAObjects.behaviors.EditableTextWithoutAutoSelectDetection(chooseBestAPI=True, **kwargs)

Bases: EditableTextWithoutAutoSelectDetection, EditableText

In addition to L{EditableText}, provides scripts to report appropriately when the selection changes. This should be used when an object does not notify of selection changes.

initOverlayClass()
_abc_impl = <_abc._abc_data object>
_propertyCache: Set[GetterMethodT]
class NVDAObjects.behaviors.LiveText(chooseBestAPI=True, **kwargs)

Bases: NVDAObject

An object for which new text should be reported automatically. These objects present text as a single chunk and only fire an event indicating that some part of the text has changed; i.e. they don’t provide the new text. Monitoring must be explicitly started and stopped using the L{startMonitoring} and L{stopMonitoring} methods. The object should notify of text changes using the textChange event.

STABILIZE_DELAY = 0

The time to wait before fetching text after a change event.

presentationType = 'content'
announceNewLineText = False
initOverlayClass()
startMonitoring()

Start monitoring for new text. New text will be reported when it is detected. @note: If monitoring has already been started, this will have no effect. @see: L{stopMonitoring}

stopMonitoring()

Stop monitoring previously started with L{startMonitoring}. @note: If monitoring has not been started, this will have no effect. @see: L{startMonitoring}

event_textChange()

Fired when the text changes. @note: It is safe to call this directly from threads other than the main thread.

_get_diffAlgo() prefer_difflib | prefer_dmp

This property controls which diffing algorithm should be used by this object. If the object contains a strictly contiguous span of text (i.e. textInfos.POSITION_ALL refers to the entire contents of the object and not just one visible screen of text), then diffHandler.prefer_dmp (character-based diffing) is suitable. Otherwise, use diffHandler.prefer_difflib.

@Note: Return either diffHandler.prefer_dmp() or diffHandler.prefer_difflib() so that the diffAlgo user preference can override this choice.

_get_devInfo()

Information about this object useful to developers. Subclasses may extend this, calling the superclass property first. @return: A list of text strings providing information about this object useful to developers.

_getText() str

Retrieve the text of this object. This will be used to determine the new text to speak. The base implementation uses the L{TextInfo}. However, subclasses should override this if there is a better way to retrieve the text.

_reportNewLines(lines)

Reports new lines of text using _reportNewText for each new line. Subclasses may override this method to provide custom filtering of new text, where logic depends on multiple lines.

_reportNewText(line)

Report a line of new text.

_monitor()
_calculateNewText(newText: str, oldText: str) List[str]
_abc_impl = <_abc._abc_data object>
devInfo: List[str]

Information about this object useful to developers.

diffAlgo
_propertyCache: Set[GetterMethodT]
class NVDAObjects.behaviors.Terminal(chooseBestAPI=True, **kwargs)

Bases: LiveText, EditableText

An object which both accepts text input and outputs text which should be reported automatically. This is an L{EditableText} object, as well as a L{liveText} object for which monitoring is automatically enabled and disabled based on whether it has focus.

role: Role = 82

Type definition for auto prop ‘_get_role’

event_gainFocus()

This code is executed if a gain focus event is received by this object.

event_loseFocus()
_get_caretMovementDetectionUsesEvents()

Using caret events in consoles sometimes causes the last character of the prompt to be read when quickly deleting text.

event_textChange() None

Fired when the text changes. @note: Updates also braille.

_abc_impl = <_abc._abc_data object>
caretMovementDetectionUsesEvents
_propertyCache: Set[GetterMethodT]
class NVDAObjects.behaviors.EnhancedTermTypedCharSupport(chooseBestAPI=True, **kwargs)

Bases: Terminal

A Terminal object with keyboard support enhancements for console applications. Notably, it suppresses duplicate typed character announcements and can hold typed characters in a queue and only dispatch once the screen updates. This is useful for suppression of passwords, etc.

_supportsTextChange = True

Whether this object quickly and reliably sends textChange events when its contents update. Timely and reliable textChange events are required to support password suppression.

_queuedChars = []

A queue of typed characters, to be dispatched on C{textChange}. This queue allows NVDA to suppress typed passwords when needed.

_hasTab = False

Whether the last typed character is a tab. If so, we should temporarily disable filtering as completions may be short.

_reportNewLines(lines)

Reports new lines of text using _reportNewText for each new line. Subclasses may override this method to provide custom filtering of new text, where logic depends on multiple lines.

event_typedCharacter(ch)
event_textChange()

Fired when the text changes. @note: Updates also braille.

script_flush_queuedChars(gesture)
_dispatchQueue()

Sends queued typedCharacter events through to NVDA.

__gestures = {'kb:control+c': 'flush_queuedChars', 'kb:control+d': 'flush_queuedChars', 'kb:control+pause': 'flush_queuedChars', 'kb:enter': 'flush_queuedChars', 'kb:numpadEnter': 'flush_queuedChars', 'kb:tab': 'flush_queuedChars'}
_abc_impl = <_abc._abc_data object>
_propertyCache: Set[GetterMethodT]
class NVDAObjects.behaviors.KeyboardHandlerBasedTypedCharSupport(chooseBestAPI=True, **kwargs)

Bases: EnhancedTermTypedCharSupport

An EnhancedTermTypedCharSupport object that provides typed character support for console applications via keyboardHandler events. These events are queued from NVDA’s global keyboard hook. Therefore, an event is fired for every single character that is being typed, even when a character is not written to the console (e.g. in read only console applications). This approach is an alternative to monitoring the console output for characters close to the caret, or injecting in-process with NVDAHelper. This class does not implement any specific functionality by itself. Rather, it instructs keyboardHandler to use the toUnicodeEx Windows function, in particular the flag to preserve keyboard state available in Windows 10 1607 and later.

_abc_impl = <_abc._abc_data object>
_propertyCache: Set[GetterMethodT]
class NVDAObjects.behaviors.CandidateItem(chooseBestAPI=True, **kwargs)

Bases: NVDAObject

getFormattedCandidateName(number, candidate)
getFormattedCandidateDescription(candidate)
reportFocus()

Announces this object in a way suitable such that it gained focus.

_get_visibleCandidateItemsText()
_abc_impl = <_abc._abc_data object>
visibleCandidateItemsText
_propertyCache: Set[GetterMethodT]
class NVDAObjects.behaviors.RowWithFakeNavigation(chooseBestAPI=True, **kwargs)

Bases: NVDAObject

Provides table navigation commands for a row which doesn’t support them natively. The cells must be exposed as children and they must support the table cell properties.

_savedColumnNumber = None
_moveToColumn(obj)
_moveToColumnNumber(column)
script_moveToNextColumn(gesture)

Moves the navigator object to the next column

script_moveToPreviousColumn(gesture)

Moves the navigator object to the previous column

reportFocus()

Announces this object in a way suitable such that it gained focus.

_moveToRow(row)
script_moveToNextRow(gesture)

Moves the navigator object and focus to the next row

script_moveToPreviousRow(gesture)

Moves the navigator object and focus to the previous row

script_moveToFirstColumn(gesture)

Moves the navigator object to the first column

script_moveToLastColumn(gesture)

Moves the navigator object to the last column

script_moveToFirstRow(gesture)

Moves the navigator object and focus to the first row

script_moveToLastRow(gesture)

Moves the navigator object and focus to the last row

__gestures = {'kb:Control+Alt+End': 'moveToLastColumn', 'kb:Control+Alt+Home': 'moveToFirstColumn', 'kb:Control+Alt+PageDown': 'moveToLastRow', 'kb:Control+Alt+PageUp': 'moveToFirstRow', 'kb:control+alt+downArrow': 'moveToNextRow', 'kb:control+alt+leftArrow': 'moveToPreviousColumn', 'kb:control+alt+rightArrow': 'moveToNextColumn', 'kb:control+alt+upArrow': 'moveToPreviousRow'}
_abc_impl = <_abc._abc_data object>
_propertyCache: Set[GetterMethodT]
class NVDAObjects.behaviors.RowWithoutCellObjects(chooseBestAPI=True, **kwargs)

Bases: NVDAObject

An abstract class which creates cell objects for table rows which don’t natively expose them. Subclasses must override L{_getColumnContent} and can optionally override L{_getColumnHeader} to retrieve information about individual columns and L{_getColumnLocation} to support mouse or magnification tracking or highlighting. The parent (table) must support the L{columnCount} property.

_get_childCount()

Retrieves the number of children this object contains. @rtype: int

_getColumnLocation(column)

Get the screen location for the given column. Subclasses may optionally override this method. @param column: The index of the column, starting at 1. @type column: int @rtype: tuple

_getColumnContent(column)

Get the text content for a given column of this row. Subclasses must override this method. @param column: The index of the column, starting at 1. @type column: int @rtype: str

_getColumnHeader(column)

Get the header text for this column. @param column: The index of the column, starting at 1. @type column: int @rtype: str

_makeCell(column)
_get_firstChild()

Retrieves the first object that this object contains. @return: the first child object if it exists else None.

_get_children()

Retrieves a list of all the objects directly contained by this object (who’s parent is this object). @rtype: list of L{NVDAObject}

getChild(index)

Retrieve a child by index. @note: Subclasses may override this if they have an efficient way to retrieve a single, arbitrary child.

The base implementation uses L{children}.

@param index: The 0-based index of the child to retrieve. @return: The child.

_abc_impl = <_abc._abc_data object>
childCount
children: List[NVDAObject]

Type definition for auto prop ‘_get_children’

firstChild: NVDAObject | None

Type definition for auto prop ‘_get_firstChild’

_propertyCache: Set[GetterMethodT]
class NVDAObjects.behaviors._FakeTableCell(chooseBestAPI=True, **kwargs)

Bases: NVDAObject

role: Role = 29

Type definition for auto prop ‘_get_role’

_get_next()

Retrieves the object directly after this object with the same parent. @return: the next object if it exists else None.

_get_previous()

Retrieves the object directly before this object with the same parent. @return: the previous object if it exists else None.

firstChild: NVDAObject | None = None

Type definition for auto prop ‘_get_firstChild’

_get_location()

The location of this object on the screen. @return: left, top, width and height of the object. @rtype: tuple of int

_get_name()

The name or label of this object (example: the text of a button).

_get_columnHeaderText()

The text of the column headers for this cell. @rtype: str

_get_tableID()

The identifier of the table associated with this object if it is a table cell. This identifier must distinguish this table from other tables. If this is not implemented, table cell information will still be reported, but row and column information will always be reported even if the user moves to a cell in the same row/column.

_get_states()

Retrieves the current states of this object (example: selected, focused). @return: a set of State constants from L{controlTypes}.

_isEqual(other: _FakeTableCell) bool

Calculates if this object is equal to another object. Used by L{NVDAObject.__eq__}. @param other: the other object to compare with. @type other: L{NVDAObject} @return: True if equal, false otherwise. @rtype: boolean

_abc_impl = <_abc._abc_data object>
columnHeaderText
location
name: str

Type definition for auto prop ‘_get_name’

next: NVDAObject | None

The object directly after this object with the same parent.

previous: NVDAObject | None

The object directly before this object with the same parent.

states: Set[State]
tableID
_propertyCache: Set[GetterMethodT]
class NVDAObjects.behaviors.FocusableUnfocusableContainer(chooseBestAPI=True, **kwargs)

Bases: NVDAObject

Makes an unfocusable container focusable using its first focusable descendant. One instance where this is useful is ARIA applications on the web where the author hasn’t set a tabIndex.

isFocusable: bool = True

Type definition for auto prop ‘_get_isFocusable’

setFocus()

Tries to force this object to take the focus.

_abc_impl = <_abc._abc_data object>
_propertyCache: Set[GetterMethodT]
class NVDAObjects.behaviors.ToolTip(chooseBestAPI=True, **kwargs)

Bases: NVDAObject

Provides information about an item over which the user is hovering a cursor. The object should fire a show event when it appears.

role: Role = 18

Type definition for auto prop ‘_get_role’

event_show()
_abc_impl = <_abc._abc_data object>
_propertyCache: Set[GetterMethodT]
class NVDAObjects.behaviors.Notification(chooseBestAPI=True, **kwargs)

Bases: NVDAObject

Informs the user of non-critical information that does not require immediate action. This is primarily for notifications displayed in the system notification area, and for Windows 8 and later, toasts. The object should fire a alert or show event when the user should be notified.

event_alert()
event_show()
_abc_impl = <_abc._abc_data object>
_propertyCache: Set[GetterMethodT]
class NVDAObjects.behaviors.WebDialog(chooseBestAPI=True, **kwargs)

Bases: NVDAObject

A dialog that will use a treeInterceptor if its parent currently does. This can be used to ensure that dialogs on the web get browseMode by default, unless inside an ARIA application

_get_shouldCreateTreeInterceptor()
_abc_impl = <_abc._abc_data object>
shouldCreateTreeInterceptor

Whether to create a tree interceptor for this object. This is only relevant if L{treeInterceptorClass} is valid. Normally, this should be C{True}. However, for some objects (e.g. ARIA applications), a tree interceptor shouldn’t be used by default, but the user may wish to override this. In this case, this can be set to C{False} and updated later. @type: bool

_propertyCache: Set[GetterMethodT]

NVDAObjects.inputComposition module

NVDAObjects.inputComposition.calculateInsertedChars(oldComp, newComp)
class NVDAObjects.inputComposition.InputCompositionTextInfo(*args, **kwargs)

Bases: OffsetsTextInfo

Constructor. Subclasses may extend this to perform implementation specific initialisation, calling their superclass method afterwards.

encoding: str | None = None

The encoding internal to the underlying text info implementation.

_getSelectionOffsets()
_getCaretOffset()
_getStoryText()

Retrieve the entire text of the object. @return: The entire text of the object. @rtype: str

_getStoryLength()
_abc_impl = <_abc._abc_data object>
class NVDAObjects.inputComposition.InputComposition(chooseBestAPI=True, **kwargs)

Bases: EditableTextWithAutoSelectDetection, Window

TextInfo

alias of InputCompositionTextInfo

name: str = 'Composition'

Type definition for auto prop ‘_get_name’

role: Role = 8

Type definition for auto prop ‘_get_role’

next: NVDAObject | None = None

The object directly after this object with the same parent.

previous: NVDAObject | None = None

The object directly before this object with the same parent.

firstChild: NVDAObject | None = None

Type definition for auto prop ‘_get_firstChild’

lastChild: NVDAObject | None = None

Type definition for auto prop ‘_get_lastChild’

states: Set[State] = {}
location = None
compositionString = ''
readingString = ''
compositionSelectionOffsets = (0, 0)
readingSelectionOffsets = (0, 0)
isReading = False
findOverlayClasses(clsList)

Chooses overlay classes which should be added to this object’s class structure, after the object has been initially instantiated. After an NVDAObject class (normally an API-level class) is instantiated, this method is called on the instance to choose appropriate overlay classes.

This method may use properties, etc. on the instance to make this choice. The object’s class structure is then mutated to contain these classes.

L{initOverlayClass} is then called for each class which was not part of the initially instantiated object. This process allows an NVDAObject to be dynamically created using the most appropriate NVDAObject subclass at each API level. Classes should be listed with subclasses first. That is, subclasses should generally call super and then append their own classes to the list.

For example: Called on an IAccessible NVDAObject, the list might contain: “DialogIAccessible (a subclass of IAccessible), Edit (a subclass of Window)”.

@param clsList: The list of classes, which will be modified by this method if appropriate.

reportNewText(oldString, newString)
compositionUpdate(compositionString, selectionStart, selectionEnd, isReading, announce=True)
reportFocus()

Announces this object in a way suitable such that it gained focus.

_abc_impl = <_abc._abc_data object>
_propertyCache: Set[GetterMethodT]
class NVDAObjects.inputComposition.CandidateList(chooseBestAPI=True, **kwargs)

Bases: Window

name: str = 'Candidate'

Type definition for auto prop ‘_get_name’

role: controlTypes.Role = 14

Type definition for auto prop ‘_get_role’

next: Optional['NVDAObject'] = None

The object directly after this object with the same parent.

previous: Optional['NVDAObject'] = None

The object directly before this object with the same parent.

firstChild: Optional['NVDAObject'] = None

Type definition for auto prop ‘_get_firstChild’

lastChild: Optional['NVDAObject'] = None

Type definition for auto prop ‘_get_lastChild’

states: Set[controlTypes.State] = {}
findOverlayClasses(clsList)

Chooses overlay classes which should be added to this object’s class structure, after the object has been initially instantiated. After an NVDAObject class (normally an API-level class) is instantiated, this method is called on the instance to choose appropriate overlay classes.

This method may use properties, etc. on the instance to make this choice. The object’s class structure is then mutated to contain these classes.

L{initOverlayClass} is then called for each class which was not part of the initially instantiated object. This process allows an NVDAObject to be dynamically created using the most appropriate NVDAObject subclass at each API level. Classes should be listed with subclasses first. That is, subclasses should generally call super and then append their own classes to the list.

For example: Called on an IAccessible NVDAObject, the list might contain: “DialogIAccessible (a subclass of IAccessible), Edit (a subclass of Window)”.

@param clsList: The list of classes, which will be modified by this method if appropriate.

_abc_impl = <_abc._abc_data object>
class NVDAObjects.inputComposition.CandidateItem(chooseBestAPI=True, **kwargs)

Bases: CandidateItem, Window

role: Role = 15

Type definition for auto prop ‘_get_role’

firstChild: NVDAObject | None = None

Type definition for auto prop ‘_get_firstChild’

lastChild: NVDAObject | None = None

Type definition for auto prop ‘_get_lastChild’

states: Set[State] = {}
findOverlayClasses(clsList)

Chooses overlay classes which should be added to this object’s class structure, after the object has been initially instantiated. After an NVDAObject class (normally an API-level class) is instantiated, this method is called on the instance to choose appropriate overlay classes.

This method may use properties, etc. on the instance to make this choice. The object’s class structure is then mutated to contain these classes.

L{initOverlayClass} is then called for each class which was not part of the initially instantiated object. This process allows an NVDAObject to be dynamically created using the most appropriate NVDAObject subclass at each API level. Classes should be listed with subclasses first. That is, subclasses should generally call super and then append their own classes to the list.

For example: Called on an IAccessible NVDAObject, the list might contain: “DialogIAccessible (a subclass of IAccessible), Edit (a subclass of Window)”.

@param clsList: The list of classes, which will be modified by this method if appropriate.

_get_candidateNumber()
_get_name()

The name or label of this object (example: the text of a button).

_get_basicText()
_get_description()

The description or help text of this object.

_get_next()

Retrieves the object directly after this object with the same parent. @return: the next object if it exists else None.

_get_previous()

Retrieves the object directly before this object with the same parent. @return: the previous object if it exists else None.

_abc_impl = <_abc._abc_data object>
basicText
candidateNumber
description: str

Typing information for auto property _get_description

name: str

Type definition for auto prop ‘_get_name’

next: NVDAObject | None

The object directly after this object with the same parent.

previous: NVDAObject | None

The object directly before this object with the same parent.

_propertyCache: Set[GetterMethodT]

NVDAObjects.lockscreen module

class NVDAObjects.lockscreen.LockScreenObject(chooseBestAPI=True, **kwargs)

Bases: NVDAObject

Prevent users from object navigating outside of the lock screen. While usages of api.objectBelowLockScreenAndWindowsIsLocked prevent the user from moving to the object, this overlay class prevents reading neighbouring objects.

_get_next() NVDAObject | None

Retrieves the object directly after this object with the same parent. @return: the next object if it exists else None.

_get_previous() NVDAObject | None

Retrieves the object directly before this object with the same parent. @return: the previous object if it exists else None.

_get_parent() NVDAObject | None

Retrieves this object’s parent (the object that contains this object). @return: the parent object if it exists else None.

_abc_impl = <_abc._abc_data object>
next: NVDAObject | None

The object directly after this object with the same parent.

parent: NVDAObject | None

This object’s parent (the object that contains this object).

previous: NVDAObject | None

The object directly before this object with the same parent.

_propertyCache: Set[GetterMethodT]