Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .markdownlint.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,10 @@
"fenced-code-language": false,
"ul-style": {
"style": "asterisk"
},
"table-column-style": {
// MD060: Tables use single padding around the column delimiters.
// e.g. | Column 1 | Column 2 |
"style": "compact"
}
}
6 changes: 3 additions & 3 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ repos:

- repo: https://github.com/astral-sh/ruff-pre-commit
# Matches Ruff version in pyproject.
rev: v0.14.5
rev: v0.15.4
hooks:
- id: ruff
name: lint with ruff
Expand All @@ -117,15 +117,15 @@ repos:
name: format with ruff

- repo: https://github.com/astral-sh/uv-pre-commit
rev: 0.9.11
rev: 0.10.6
hooks:
- id: uv-lock
name: Verify uv lock file
# Override python interpreter from .python-versions as that is too strict for pre-commit.ci
args: ["-p3.13"]

- repo: https://github.com/DavidAnson/markdownlint-cli2
rev: v0.18.1
rev: v0.21.0
hooks:
- id: markdownlint-cli2
name: Lint markdown files
Expand Down
2 changes: 1 addition & 1 deletion ensureuv.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ param(

$ErrorActionPreference = 'Stop'
Set-StrictMode -Version Latest
[Version]$UvVersion = '0.9.11'
[Version]$UvVersion = '0.10.6'

function Invoke-Uv {
& uv @UvArgs
Expand Down
4 changes: 2 additions & 2 deletions projectDocs/community/expertsList.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ For optimal responses, please avoid tagging NV Access employees on unrelated tic
General enquiries should be directed to <info@nvaccess.org>.

| GitHub | email | topics |
|---|---|---|
| --- | --- | --- |
| @gerald-hartig | <gerald@nvaccess.org> | Controversial product decisions |
| @seanbudd | <sean@nvaccess.org> | Issue triage, technical decisions |
| @SaschaCowley | <sascha@nvaccess.org> | Issue triage, technical decisions |
Expand All @@ -19,7 +19,7 @@ General enquiries should be directed to <info@nvaccess.org>.
## Community

| GitHub | email | topics |
|---|---|---|
| --- | --- | --- |
| @codeofdusk | <codeofdusk@gmail.com> | Windows Terminal and console, Microsoft UI Automation |
| @nvdaes | <nrm1977@gmail.com> | Add-on store, braille |
| @michaelweghorn | <m.weghorn@posteo.de> | LibreOffice |
Expand Down
186 changes: 93 additions & 93 deletions projectDocs/dev/developerGuide/developerGuide.md

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions projectDocs/dev/userGuideStandards.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,13 @@ This setting allows the feature of using functionality in a certain situation to
If necessary, a description of a common use case that is supported by each option.

| . {.hideHeaderRow} |.|
|---|---|
| --- | --- |
|Options |Default (Enabled), Disabled, Enabled |
|Default |Enabled |
|Toggle command |`NVDA+shift+e` |

|Option |Behaviour |
|---|---|
| --- | --- |
|Enabled |behaviour of enabled |
|Disabled |behaviour of disabled |
```
Expand Down Expand Up @@ -107,7 +107,7 @@ For example:
#### Braille Tethered To

| . {.hideHeaderRow} |.|
|---|---|
| --- | --- |
| Desktop command | `NVDA+control+t` |
| Laptop Command | `NVDA+control+t` |

Expand Down
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -322,10 +322,10 @@ dev = [
"py2exe==0.14.0.0",
"setuptools~=80.10.2",
"nvda-mathcat",
"uv==0.9.11",
"uv==0.10.6",
]
lint = [
"ruff==0.14.5",
"ruff==0.15.4",
"pre-commit==4.2.0",
"pyright[nodejs]==1.1.407",
]
Expand Down
6 changes: 3 additions & 3 deletions source/NVDAObjects/IAccessible/winword.py
Original file line number Diff line number Diff line change
Expand Up @@ -405,9 +405,9 @@ def _moveInTable(self, row=True, forward=True):
return False
_cell = table.cell
getCell = ( # noqa: E731
lambda thisIndex, otherIndex: _cell(thisIndex, otherIndex)
if row
else _cell(otherIndex, thisIndex)
lambda thisIndex, otherIndex: (
_cell(thisIndex, otherIndex) if row else _cell(otherIndex, thisIndex)
)
) # noqa: E731
thisIndex = rowNumber if row else columnNumber
otherIndex = columnNumber if row else rowNumber
Expand Down
8 changes: 5 additions & 3 deletions source/_bridge/runtimes/synthDriverHost/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,11 @@
# This should be converted to a proper proxy.
class FakeConfDict(dict):
getConfigValidation = staticmethod(
lambda path: types.SimpleNamespace(default="default")
if path[0] == "audio" and path[1] == "outputDevice"
else None,
lambda path: (
types.SimpleNamespace(default="default")
if path[0] == "audio" and path[1] == "outputDevice"
else None
),
)


Expand Down
48 changes: 26 additions & 22 deletions source/brailleDisplayDrivers/brailliantB.py
Original file line number Diff line number Diff line change
Expand Up @@ -119,31 +119,35 @@ def registerAutomaticDetection(cls, driverRegistrar: bdDetect.DriverRegistrar):
)
driverRegistrar.addBluetoothDevices(
lambda m: (
m.type == bdDetect.ProtocolType.SERIAL
and (
m.id.startswith("Brailliant B") or m.id == "Brailliant 80" or "BrailleNote Touch" in m.id
(
m.type == bdDetect.ProtocolType.SERIAL
and (
m.id.startswith("Brailliant B")
or m.id == "Brailliant 80"
or "BrailleNote Touch" in m.id
)
)
)
or (
m.type == bdDetect.ProtocolType.HID
and m.deviceInfo.get("manufacturer") == "Humanware"
and (
(
m.deviceInfo.get("product")
or (
m.type == bdDetect.ProtocolType.HID
and m.deviceInfo.get("manufacturer") == "Humanware"
and (
(
m.deviceInfo.get("product")
in (
"APH Chameleon 20",
"APH Mantis Q40",
"Brailliant BI 40X",
"Brailliant BI 20X",
)
and bdDetect._isHIDUsagePageMatch(m, HID_USAGE_PAGE)
)
or m.deviceInfo.get("product")
in (
"APH Chameleon 20",
"APH Mantis Q40",
"Brailliant BI 40X",
"Brailliant BI 20X",
"Brailliant HID",
"Humanware BrailleOne",
"NLS eReader",
"NLS eReader Humanware",
)
and bdDetect._isHIDUsagePageMatch(m, HID_USAGE_PAGE)
)
or m.deviceInfo.get("product")
in (
"Brailliant HID",
"Humanware BrailleOne",
"NLS eReader",
"NLS eReader Humanware",
)
)
),
Expand Down
16 changes: 7 additions & 9 deletions source/brailleDisplayDrivers/freedomScientific.py
Original file line number Diff line number Diff line change
Expand Up @@ -209,15 +209,13 @@ def registerAutomaticDetection(cls, driverRegistrar: bdDetect.DriverRegistrar):
)

driverRegistrar.addBluetoothDevices(
lambda m: (
any(
m.id.startswith(prefix)
for prefix in (
"F14",
"Focus 14 BT",
"Focus 40 BT",
"Focus 80 BT",
)
lambda m: any(
m.id.startswith(prefix)
for prefix in (
"F14",
"Focus 14 BT",
"Focus 40 BT",
"Focus 80 BT",
)
),
)
Expand Down
12 changes: 7 additions & 5 deletions source/gui/addonStoreGui/controls/messageDialogs.py
Original file line number Diff line number Diff line change
Expand Up @@ -833,11 +833,13 @@ def _getAddonsToCopy(parent: wx.Window) -> list[str] | None:
addonsToCopy: list[str] = []
enabledAddons: tuple[Addon] = tuple(
getAvailableAddons(
filterFunc=lambda addon: getStatus(addon._addonGuiModel, _StatusFilterKey.INSTALLED)
in (
AvailableAddonStatus.ENABLED,
AvailableAddonStatus.RUNNING,
AvailableAddonStatus.INCOMPATIBLE_ENABLED,
filterFunc=lambda addon: (
getStatus(addon._addonGuiModel, _StatusFilterKey.INSTALLED)
in (
AvailableAddonStatus.ENABLED,
AvailableAddonStatus.RUNNING,
AvailableAddonStatus.INCOMPATIBLE_ENABLED,
)
),
),
)
Expand Down
5 changes: 3 additions & 2 deletions source/gui/addonStoreGui/viewModels/store.py
Original file line number Diff line number Diff line change
Expand Up @@ -265,8 +265,9 @@ def _makeActionsList(self):
# Translators: Label for an action that opens the VirusTotal scan results for the selected addon
displayName=pgettext("addonStore", "VirusTotal scan results"),
actionHandler=lambda aVM: startfile(cast(_AddonStoreModel, aVM.model).scanResults.scanUrl),
validCheck=lambda aVM: isinstance(aVM.model, _AddonStoreModel)
and aVM.model.scanResults is not None,
validCheck=lambda aVM: (
isinstance(aVM.model, _AddonStoreModel) and aVM.model.scanResults is not None
),
actionTarget=selectedListItem,
),
AddonActionVM(
Expand Down
2 changes: 1 addition & 1 deletion tests/manual/nvdaUI/addonStore.md
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,7 @@ Typically, this requires a contributor creating 3 different versions of the same
* (X+1).1 e.g `CURRENT=2024.1`, `BACK_COMPAT_TO=2024.1`

| Test Name | Upgrade from | Upgrade to | Test notes |
|---|---|---|---|
| --- | --- | --- | --- |
| Upgrade to different NVDA version in the same API breaking release cycle | X.1 | X.1 | Add-ons which remain incompatible are listed as incompatible on upgrading. Preserves state of enabled incompatible add-ons |
| Upgrade to a different but compatible API version | X.1 | X.2 | Add-ons which remain incompatible are listed as incompatible on upgrading. Preserves state of enabled incompatible add-ons |
| Downgrade to a different but compatible API version | X.2 | X.1 | Add-ons which remain incompatible are listed as incompatible on upgrading. Preserves state of enabled incompatible add-ons |
Expand Down
12 changes: 7 additions & 5 deletions tests/unit/test_remote/test_localMachine.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,11 +105,13 @@ def _generate_parameters(self):
lambda acc, val: acc if val in acc else [*acc, val],
map(
# Keep return values
lambda params: params
# if OpenKeyEx and QueryValueEx don't raise
if params.openKeyRaises is params.queryValueRaises is None
# Otherwise, discard the return values as they don't matter
else params._replace(valueData=None, valueType=None),
lambda params: (
params
# if OpenKeyEx and QueryValueEx don't raise
if params.openKeyRaises is params.queryValueRaises is None
# Otherwise, discard the return values as they don't matter
else params._replace(valueData=None, valueType=None)
),
# Make Params instances out of the product of all of the possible parameter values
map(CanSendSASFactors._make, product(*FACTOR_VALUES.values())),
),
Expand Down
7 changes: 5 additions & 2 deletions user_docs/en/changes.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,13 @@ The triple-press keyboard shortcut (`NVDA+ctrl+r`) is not affected, as it is int

### Changes for Developers

* NVDA libraries built by the build system are now linked with the [/SETCOMPAT](https://learn.microsoft.com/en-us/cpp/build/reference/cetcompat) flag, improving protection against certain malware attacks. (#19435, @LeonarddeR)

Please refer to [the developer guide](https://download.nvaccess.org/documentation/developerGuide.html#API) for information on NVDA's API deprecation and removal process.

* Updated components:
* Python from 3.13.11 to 3.13.12. (#19572, @dpy013)
* Ruff to 0.15.4. (#19548)
* uv to 0.10.6. (#19548)
* NVDA libraries built by the build system are now linked with the [/SETCOMPAT](https://learn.microsoft.com/en-us/cpp/build/reference/cetcompat) flag, improving protection against certain malware attacks. (#19435, @LeonarddeR)
* Subclasses of `browseMode.BrowseModeDocumentTreeInterceptor` that support screen layout being on and off should override the `_toggleScreenLayout` method, rather than implementing `script_toggleScreenLayout` directly. (#19487)
* Clarified NV Access's policy on API breaking changes in the Developer Guide. (#19599)
* The `scons tests` build target has been removed, as it was misleadingly named.
Expand Down
2 changes: 2 additions & 0 deletions user_docs/en/userGuide.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
<!-- markdownlint-disable-file MD060 -->

# NVDA NVDA_VERSION User Guide

[TOC]
Expand Down
Loading
Loading