@@ -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/"
@@ -249,3 +270,64 @@ reportMissingParameterType = false # 4000+ errors
249270reportUnknownVariableType = false # 6000+ errors
250271reportUnknownArgumentType = false # 6000+ errors
251272reportUnknownMemberType = false # 20000+ errors
273+
274+ [tool .uv ]
275+ default-groups = [
276+ " dev" ,
277+ " docs" ,
278+ " lint" ,
279+ ]
280+ python-preference = " only-managed"
281+ environments = [" sys_platform == 'win32'" ]
282+
283+ [tool .setuptools .packages .find ]
284+ where = [" source" ] # list of folders that contain the packages (["."] by default)
285+
286+ [tool .uv .sources ]
287+ configobj = { git = " https://github.com/DiffSK/configobj" , rev = " 8be54629ee7c26acb5c865b74c76284e80f3aa31" }
288+
289+ [dependency-groups ]
290+ dev = [
291+ # NVDA's build system is SCons
292+ " SCons==4.8.1" ,
293+ # Packaging NVDA
294+ " py2exe==0.13.0.2" ,
295+ # l10nUtil requires Crowdin
296+ " crowdin-api-client==1.21.0" ,
297+ ]
298+ lint = [
299+ " ruff==0.8.1" ,
300+ " pre-commit==4.0.1" ,
301+ " pyright==1.1.396" ,
302+ ]
303+ license-check = [
304+ " licensecheck==2024.3" ,
305+ ]
306+ docs = [
307+ # Building user documentation
308+ " Markdown==3.7" ,
309+ " mdx_truly_sane_lists==1.3" ,
310+ " markdown-link-attr-modifier==0.2.1" ,
311+ " mdx-gh-links==0.4" ,
312+ # For building developer documentation
313+ " sphinx==8.1.2" ,
314+ " sphinx_rtd_theme==3.0.1" ,
315+ ]
316+ l10n = [
317+ # l10nUtil requires Crowdin
318+ " crowdin-api-client==1.21.0"
319+ ]
320+ system-tests = [
321+ " robotframework==7.1.1" ,
322+ " robotremoteserver==1.1.1" ,
323+ " robotframework-screencaplibrary==1.6.0" ,
324+ ]
325+ unit-tests = [
326+ # Creating XML unit test reports
327+ " unittest-xml-reporting==3.2.0" ,
328+ # Feed parameters to tests neatly
329+ " parameterized==0.9.0" ,
330+ ]
331+
332+ [tool .setuptools .dynamic ]
333+ version = {attr = " buildVersion.version_dev" }
0 commit comments