@@ -4,20 +4,41 @@ build-backend = "setuptools.build_meta"
44
55[project ]
66name = " nvda"
7+ dynamic = [" version" ]
78description = " NonVisual Desktop Access (NVDA)"
89maintainers = [
910 {name = " NV Access" , email = " info@nvaccess.org" },
1011]
12+ requires-python = " >=3.11"
1113classifiers = [
12- " Development Status :: 5 - Production/Stable" ,
13- " Intended Audience :: End Users/Desktop" ,
14- " License :: OSI Approved :: GNU General Public License v2" ,
15- " Operating System :: Microsoft :: Windows" ,
16- " Programming Language :: Python :: 3" ,
17- " Topic :: Accessibility" ,
14+ " Development Status :: 5 - Production/Stable" ,
15+ " Intended Audience :: End Users/Desktop" ,
16+ " License :: OSI Approved :: GNU General Public License v2" ,
17+ " Operating System :: Microsoft :: Windows" ,
18+ " Programming Language :: Python :: 3" ,
19+ " Topic :: Accessibility" ,
1820]
1921readme = " readme.md"
2022license = {file = " copying.txt" }
23+ dependencies = [
24+ # NVDA's runtime dependencies
25+ " comtypes==1.4.6" ,
26+ " cryptography==44.0.1" ,
27+ " pyserial==3.5" ,
28+ " wxPython==4.2.2" ,
29+ " configobj" ,
30+ " requests==2.32.3" ,
31+ " url-normalize==1.4.3" ,
32+ " schedule==1.2.2" ,
33+ # NVDA_DMP requires diff-match-patch
34+ " fast-diff-match-patch==2.1.0" ,
35+ # typing_extensions are required for specifying default value for `TypeVar` prior to Python 3.13 (see PEP 696)
36+ " typing-extensions==4.12.2" ,
37+ # pycaw is a Core Audio Windows Library used for sound split
38+ " pycaw==20240210" ,
39+ # Sanitize HTML for browsable messages and documentation output to prevent XSS from translators
40+ " nh3==0.2.19" ,
41+ ]
2142
2243[project .urls ]
2344Homepage = " https://www.nvaccess.org/"
@@ -88,7 +109,6 @@ logger-objects = ["logHandler.log"]
88109"winsound.PlaySound".msg = " PlaySound uses winmm, which is deprecated in favor of the Windows core audio APIs."
89110
90111[tool .licensecheck ]
91- using = " requirements:requirements.txt"
92112only_licenses = [" BSD" , " MIT" , " Python" , " LGPLV3+" , " Apache" ]
93113ignore_packages = [
94114 # Compatible licenses:
@@ -249,3 +269,64 @@ reportMissingParameterType = false # 4000+ errors
249269reportUnknownVariableType = false # 6000+ errors
250270reportUnknownArgumentType = false # 6000+ errors
251271reportUnknownMemberType = false # 20000+ errors
272+
273+ [tool .uv ]
274+ default-groups = [
275+ " dev" ,
276+ " docs" ,
277+ " lint" ,
278+ ]
279+ python-preference = " only-managed"
280+ environments = [" sys_platform == 'win32'" ]
281+
282+ [tool .setuptools .packages .find ]
283+ where = [" source" ] # list of folders that contain the packages (["."] by default)
284+
285+ [tool .uv .sources ]
286+ configobj = { git = " https://github.com/DiffSK/configobj" , rev = " 8be54629ee7c26acb5c865b74c76284e80f3aa31" }
287+
288+ [dependency-groups ]
289+ dev = [
290+ # NVDA's build system is SCons
291+ " SCons==4.8.1" ,
292+ # Packaging NVDA
293+ " py2exe==0.13.0.2" ,
294+ # l10nUtil requires Crowdin
295+ " crowdin-api-client==1.21.0" ,
296+ ]
297+ lint = [
298+ " ruff==0.8.1" ,
299+ " pre-commit==4.0.1" ,
300+ " pyright==1.1.396" ,
301+ ]
302+ license-check = [
303+ " licensecheck==2024.3" ,
304+ ]
305+ docs = [
306+ # Building user documentation
307+ " Markdown==3.7" ,
308+ " mdx_truly_sane_lists==1.3" ,
309+ " markdown-link-attr-modifier==0.2.1" ,
310+ " mdx-gh-links==0.4" ,
311+ # For building developer documentation
312+ " sphinx==8.1.2" ,
313+ " sphinx_rtd_theme==3.0.1" ,
314+ ]
315+ l10n = [
316+ # l10nUtil requires Crowdin
317+ " crowdin-api-client==1.21.0"
318+ ]
319+ system-tests = [
320+ " robotframework==7.1.1" ,
321+ " robotremoteserver==1.1.1" ,
322+ " robotframework-screencaplibrary==1.6.0" ,
323+ ]
324+ unit-tests = [
325+ # Creating XML unit test reports
326+ " unittest-xml-reporting==3.2.0" ,
327+ # Feed parameters to tests neatly
328+ " parameterized==0.9.0" ,
329+ ]
330+
331+ [tool .setuptools .dynamic ]
332+ version = {attr = " buildVersion.version_dev" }
0 commit comments