sphinx-lua-ls 3.7.0.post1__tar.gz → 3.8.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/.github/workflows/ci.yaml +9 -7
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/CHANGELOG.md +15 -1
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/CONTRIBUTING.md +4 -0
- {sphinx_lua_ls-3.7.0.post1/sphinx_lua_ls.egg-info → sphinx_lua_ls-3.8.1}/PKG-INFO +2 -2
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/docs/source/settings.rst +17 -2
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/pyproject.toml +3 -3
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/sphinx_lua_ls/__init__.py +4 -15
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/sphinx_lua_ls/_version.py +3 -3
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/sphinx_lua_ls/config.py +16 -3
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/sphinx_lua_ls/domain.py +2 -2
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/sphinx_lua_ls/lua_ls.py +115 -28
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1/sphinx_lua_ls.egg-info}/PKG-INFO +2 -2
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/sphinx_lua_ls.egg-info/SOURCES.txt +1 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/sphinx_lua_ls.egg-info/requires.txt +1 -1
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/autodoc-annotations.html +8 -8
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/autodoc-emmylua-annotations.html +8 -8
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/autodoc-emmylua-doctype.html +2 -2
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/autodoc-emmylua-global_tables.html +2 -2
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/autodoc-emmylua-globals.html +4 -4
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/autodoc-emmylua-incongruent_export.html +4 -4
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/autodoc-emmylua-member_ordering.html +8 -8
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/autodoc-emmylua-nested_modules.html +2 -2
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/autodoc-emmylua-nesting.html +12 -12
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/autodoc-emmylua-nesting_recursive.html +36 -36
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/autodoc-emmylua-object_types.html +16 -16
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/autodoc-emmylua-relative_resolve.html +2 -2
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/autodoc-emmylua-signatures.html +46 -46
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/autodoc-emmylua-using.html +2 -2
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/autodoc-globals.html +4 -4
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/autodoc-member_ordering.html +8 -8
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/autodoc-nested_modules.html +2 -2
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/autodoc-nesting.html +12 -12
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/autodoc-nesting_recursive.html +36 -36
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/autodoc-object_types.html +16 -16
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/autodoc-relative_resolve.html +2 -2
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/autodoc-settings-no-recursion.html +2 -2
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/autodoc-settings-simple.html +4 -4
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/doc-annotations.html +4 -4
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/doc-directives.html +48 -48
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/doc-inherited.html +2 -2
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/doc-refs.html +4 -4
- sphinx_lua_ls-3.8.1/test/test_versions.py +42 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/.cl-keeper.yaml +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/.github/dependabot.yml +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/.gitignore +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/.pre-commit-config.yaml +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/.readthedocs.yaml +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/LICENSE +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/README.md +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/conftest.py +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/docs/Makefile +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/docs/make.bat +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/docs/source/_extra/robots.txt +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/docs/source/apidoc.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/docs/source/autodoc.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/docs/source/conf.py +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/docs/source/directives.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/docs/source/example/.emmyrc.json +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/docs/source/example/logging.lua +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/docs/source/example.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/docs/source/index.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/docs/source/installation.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/docs/source/quickstart.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/docs/source/roles.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/setup.cfg +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/sphinx_lua_ls/apidoc.py +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/sphinx_lua_ls/autodoc.py +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/sphinx_lua_ls/autoindex.py +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/sphinx_lua_ls/inherited.py +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/sphinx_lua_ls/intersphinx.py +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/sphinx_lua_ls/objtree.py +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/sphinx_lua_ls/py.typed +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/sphinx_lua_ls/pygments.py +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/sphinx_lua_ls/static/lua.css +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/sphinx_lua_ls/utils.py +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/sphinx_lua_ls.egg-info/dependency_links.txt +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/sphinx_lua_ls.egg-info/top_level.txt +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/conftest.py +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-apidoc/.gitignore +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-apidoc/Makefile +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-apidoc/conf.py +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-apidoc/index.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-apidoc/lua/mod/inner.lua +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-apidoc/lua/mod.lua +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-apidoc/make.bat +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc/Makefile +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc/conf.py +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc/index.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc/lua/annotations.lua +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc/lua/globals.lua +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc/lua/globals_2.lua +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc/lua/member_ordering.lua +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc/lua/module_title.lua +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc/lua/nested_modules.lua +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc/lua/nesting.lua +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc/lua/object_types.lua +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc/lua/relative_resolve.lua +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc/make.bat +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc/src/annotations.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc/src/autoindex.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc/src/globals.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc/src/member_ordering.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc/src/module_title.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc/src/nested_modules.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc/src/nesting.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc/src/nesting_recursive.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc/src/object_types.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc/src/relative_resolve.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/Makefile +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/conf.py +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/index.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/lua/.emmyrc.json +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/lua/annotations.lua +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/lua/doctype.lua +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/lua/foo/x.lua +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/lua/global_tables.lua +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/lua/globals.lua +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/lua/globals_2.lua +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/lua/incongruent_export.lua +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/lua/member_ordering.lua +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/lua/module_function.lua +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/lua/module_title.lua +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/lua/nested_modules.lua +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/lua/nesting.lua +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/lua/object_types.lua +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/lua/relative_resolve.lua +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/lua/signatures.lua +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/lua/using.lua +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/make.bat +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/src/annotations.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/src/autoindex.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/src/doctype.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/src/global_tables.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/src/globals.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/src/incongruent_export.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/src/member_ordering.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/src/module_function.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/src/module_title.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/src/nested_modules.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/src/nesting.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/src/nesting_recursive.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/src/object_types.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/src/relative_resolve.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/src/require.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/src/signatures.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-emmylua/src/using.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-roots/Makefile +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-roots/conf.py +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-roots/index.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-roots/lua/root_1/autodoc.lua +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-roots/lua/root_2/autodoc.lua +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-roots/make.bat +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-settings/Makefile +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-settings/conf.py +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-settings/index.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-settings/lua/autodoc.lua +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-settings/make.bat +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-settings-override/Makefile +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-settings-override/conf.py +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-settings-override/index.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-settings-override/lua/autodoc.lua +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-autodoc-settings-override/make.bat +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-doc/Makefile +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-doc/conf.py +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-doc/index.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-doc/make.bat +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-doc/src/annotations.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-doc/src/autoindex.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-doc/src/directives.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-doc/src/inherited.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-doc/src/modules.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-doc/src/refs.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-intersphinx/Makefile +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-intersphinx/conf.py +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-intersphinx/index.rst +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/roots/test-intersphinx/make.bat +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_parse.py +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/apidoc-md-sep.yml +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/apidoc-md.yml +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/apidoc-rst-sep.yml +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/apidoc-rst.yml +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/autodoc-autoindex.html +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/autodoc-emmylua-autoindex.html +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/autodoc-emmylua-index.html +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/autodoc-emmylua-module_function.html +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/autodoc-emmylua-module_title.html +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/autodoc-emmylua-require.html +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/autodoc-module_title.html +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/autodoc-roots-default.html +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/autodoc-roots-no-roots.html +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/autodoc-roots-single-root.html +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/doc-autoindex.html +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression/doc-modules.html +0 -0
- {sphinx_lua_ls-3.7.0.post1 → sphinx_lua_ls-3.8.1}/test/test_regression.py +0 -0
|
@@ -26,17 +26,17 @@ jobs:
|
|
|
26
26
|
- name: Install dependencies
|
|
27
27
|
run: python -m pip install '.'
|
|
28
28
|
- name: Download LuaLs for Linux
|
|
29
|
-
run: python sphinx_lua_ls
|
|
29
|
+
run: python -m sphinx_lua_ls.lua_ls linux x86_64 --runtime luals ~/lua_ls_release/ubuntu-latest
|
|
30
30
|
- name: Download LuaLs for Windows
|
|
31
|
-
run: python sphinx_lua_ls
|
|
31
|
+
run: python -m sphinx_lua_ls.lua_ls win32 amd64 --runtime luals ~/lua_ls_release/windows-latest
|
|
32
32
|
- name: Download LuaLs for MacOs
|
|
33
|
-
run: python sphinx_lua_ls
|
|
33
|
+
run: python -m sphinx_lua_ls.lua_ls darwin arm --runtime luals ~/lua_ls_release/macos-latest
|
|
34
34
|
- name: Download EmmyLua for Linux
|
|
35
|
-
run: python sphinx_lua_ls
|
|
35
|
+
run: python -m sphinx_lua_ls.lua_ls linux x86_64 --runtime emmylua ~/lua_ls_release/ubuntu-latest
|
|
36
36
|
- name: Download EmmyLua for Windows
|
|
37
|
-
run: python sphinx_lua_ls
|
|
37
|
+
run: python -m sphinx_lua_ls.lua_ls win32 amd64 --runtime emmylua ~/lua_ls_release/windows-latest
|
|
38
38
|
- name: Download EmmyLua for MacOs
|
|
39
|
-
run: python sphinx_lua_ls
|
|
39
|
+
run: python -m sphinx_lua_ls.lua_ls darwin arm --runtime emmylua ~/lua_ls_release/macos-latest
|
|
40
40
|
- name: Upload artifact
|
|
41
41
|
uses: actions/upload-artifact@v4
|
|
42
42
|
with:
|
|
@@ -79,7 +79,9 @@ jobs:
|
|
|
79
79
|
# Tests
|
|
80
80
|
- name: Install test dependencies
|
|
81
81
|
if: ${{ matrix.type == 'test' }}
|
|
82
|
-
run:
|
|
82
|
+
run: |
|
|
83
|
+
python -m pip install . --group test
|
|
84
|
+
python -m pip install -U sphinx
|
|
83
85
|
- name: Download LuaLs
|
|
84
86
|
if: ${{ matrix.type == 'test' }}
|
|
85
87
|
uses: actions/download-artifact@v4
|
|
@@ -2,6 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [3.8.1] - 2025-12-08
|
|
6
|
+
|
|
7
|
+
- Added LuaLs 3.16.0 to the list of known broken releases ([LuaLS#3301]).
|
|
8
|
+
|
|
9
|
+
## [3.8.0] - 2025-12-03
|
|
10
|
+
|
|
11
|
+
- Added support for Sphinx 9.
|
|
12
|
+
|
|
13
|
+
- Added `lua_ls_skip_versions` config option to selectively avoid certain language server
|
|
14
|
+
releases.
|
|
15
|
+
|
|
5
16
|
## [3.7.0-post1] - 2025-11-14
|
|
6
17
|
|
|
7
18
|
- Minor documentation tweaks.
|
|
@@ -257,6 +268,9 @@ Initial release.
|
|
|
257
268
|
[3.6.0]: https://github.com/sphinx-contrib/lua-ls/compare/v3.5.0-post1...v3.6.0
|
|
258
269
|
[3.7.0]: https://github.com/sphinx-contrib/lua-ls/compare/v3.6.0...v3.7.0
|
|
259
270
|
[3.7.0-post1]: https://github.com/sphinx-contrib/lua-ls/compare/v3.7.0...v3.7.0-post1
|
|
271
|
+
[3.8.0]: https://github.com/sphinx-contrib/lua-ls/compare/v3.7.0-post1...v3.8.0
|
|
272
|
+
[3.8.1]: https://github.com/sphinx-contrib/lua-ls/compare/v3.8.0...v3.8.1
|
|
260
273
|
[@bkoropoff]: https://github.com/bkoropoff
|
|
261
274
|
[emmylua]: https://github.com/EmmyLuaLs/emmylua-analyzer-rust/
|
|
262
|
-
[
|
|
275
|
+
[luals#3301]: https://github.com/LuaLS/lua-language-server/issues/3301
|
|
276
|
+
[unreleased]: https://github.com/sphinx-contrib/lua-ls/compare/v3.8.1...HEAD
|
|
@@ -10,8 +10,12 @@
|
|
|
10
10
|
|
|
11
11
|
```shell
|
|
12
12
|
pip install -e . --group dev
|
|
13
|
+
pip install -U sphinx
|
|
13
14
|
```
|
|
14
15
|
|
|
16
|
+
> *Note:* our tests run with Sphinx 9, but some dependencies are not yet updated
|
|
17
|
+
> for it; that's why you have to update Sphinx after installing it.
|
|
18
|
+
|
|
15
19
|
4. Install pre-commit hooks:
|
|
16
20
|
|
|
17
21
|
```shell
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sphinx-lua-ls
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.8.1
|
|
4
4
|
Summary: Automatic documentation generation via EmmyLua/LuaLs
|
|
5
5
|
Author-email: Tamika Nomara <taminomara@gmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -24,7 +24,7 @@ Classifier: Typing :: Typed
|
|
|
24
24
|
Requires-Python: >=3.12
|
|
25
25
|
Description-Content-Type: text/markdown
|
|
26
26
|
License-File: LICENSE
|
|
27
|
-
Requires-Dist: sphinx<
|
|
27
|
+
Requires-Dist: sphinx<10.0,>=8.0
|
|
28
28
|
Requires-Dist: PyGithub<3.0,>=1.59
|
|
29
29
|
Requires-Dist: requests~=2.31
|
|
30
30
|
Dynamic: license-file
|
|
@@ -52,6 +52,21 @@ Settings
|
|
|
52
52
|
For LuaLs, default value is ``4.0.0``, for EmmyLua it's ``2.0.0``.
|
|
53
53
|
Use ``None`` to allow any version.
|
|
54
54
|
|
|
55
|
+
.. py:data:: lua_ls_skip_versions
|
|
56
|
+
:type: list[str] | None
|
|
57
|
+
|
|
58
|
+
List of lua analyzer versions that shouldn't be used.
|
|
59
|
+
|
|
60
|
+
For example, if ``lua_ls_skip_versions = ["3.16"]``, language server release
|
|
61
|
+
``3.16`` (including all ``3.16.x`` releases) will not be used.
|
|
62
|
+
|
|
63
|
+
This setting can be used to avoid broken releases without limiting max version
|
|
64
|
+
of the lua analyzer.
|
|
65
|
+
|
|
66
|
+
Default is to avoid known broken releases:
|
|
67
|
+
|
|
68
|
+
- LuaLs ``3.16.0`` — broken on Linux, fixed in ``3.16.1``.
|
|
69
|
+
|
|
55
70
|
.. py:data:: lua_ls_default_options
|
|
56
71
|
:type: dict[str, str]
|
|
57
72
|
|
|
@@ -99,12 +114,12 @@ Settings
|
|
|
99
114
|
and :rst:dir:`lua:autoobject:class-signature` options.
|
|
100
115
|
|
|
101
116
|
.. py:data:: lua_ls_class_default_force_non_colon
|
|
102
|
-
:type:
|
|
117
|
+
:type: bool
|
|
103
118
|
|
|
104
119
|
If ``True``, Sphinx-LuaLs will remove ``self`` from class constructor's signature.
|
|
105
120
|
|
|
106
121
|
.. py:data:: lua_ls_class_default_force_return_self
|
|
107
|
-
:type:
|
|
122
|
+
:type: bool
|
|
108
123
|
|
|
109
124
|
If ``True``, Sphinx-LuaLs will replace class constructor's return type with ``self``.
|
|
110
125
|
|
|
@@ -22,7 +22,7 @@ classifiers = [
|
|
|
22
22
|
"Typing :: Typed",
|
|
23
23
|
]
|
|
24
24
|
dependencies = [
|
|
25
|
-
"sphinx>=8.0,<
|
|
25
|
+
"sphinx>=8.0,<10.0",
|
|
26
26
|
"PyGithub>=1.59,<3.0",
|
|
27
27
|
"requests~=2.31",
|
|
28
28
|
]
|
|
@@ -37,14 +37,14 @@ dev = [
|
|
|
37
37
|
lint = [
|
|
38
38
|
"black==25.11.0",
|
|
39
39
|
"isort==7.0.0",
|
|
40
|
-
"pre-commit==4.
|
|
40
|
+
"pre-commit==4.5.0",
|
|
41
41
|
]
|
|
42
42
|
test = [
|
|
43
43
|
"pyright==1.1.407",
|
|
44
44
|
"pytest==9.0.1",
|
|
45
45
|
"sybil==9.2.0",
|
|
46
46
|
"pytest-regressions==2.8.3",
|
|
47
|
-
"beautifulsoup4==4.14.
|
|
47
|
+
"beautifulsoup4==4.14.3",
|
|
48
48
|
"myst-parser==4.0.1"
|
|
49
49
|
]
|
|
50
50
|
doc = [
|
|
@@ -58,25 +58,13 @@ def run_lua_ls(app: sphinx.application.Sphinx):
|
|
|
58
58
|
if not modified:
|
|
59
59
|
return
|
|
60
60
|
|
|
61
|
-
min_version = domain.config.min_version
|
|
62
|
-
if min_version is None:
|
|
63
|
-
if domain.config.backend == "luals":
|
|
64
|
-
min_version = "3.0.0"
|
|
65
|
-
else:
|
|
66
|
-
min_version = "0.11.0"
|
|
67
|
-
max_version = domain.config.max_version
|
|
68
|
-
if max_version == "__auto__":
|
|
69
|
-
if domain.config.backend == "luals":
|
|
70
|
-
max_version = "4.0.0"
|
|
71
|
-
else:
|
|
72
|
-
max_version = "2.0.0"
|
|
73
|
-
|
|
74
61
|
cwd = pathlib.Path.cwd()
|
|
75
62
|
try:
|
|
76
63
|
runner = sphinx_lua_ls.lua_ls.resolve(
|
|
77
64
|
backend=domain.config.backend,
|
|
78
|
-
min_version=min_version,
|
|
79
|
-
max_version=max_version,
|
|
65
|
+
min_version=domain.config.min_version,
|
|
66
|
+
max_version=domain.config.max_version,
|
|
67
|
+
skip_versions=domain.config.skip_versions,
|
|
80
68
|
cwd=root_dir,
|
|
81
69
|
reporter=sphinx_lua_ls.lua_ls.SphinxProgressReporter(app.verbosity),
|
|
82
70
|
install=domain.config.auto_install,
|
|
@@ -195,6 +183,7 @@ def setup(app: sphinx.application.Sphinx):
|
|
|
195
183
|
app.add_config_value("lua_ls_auto_install_location", None, rebuild="")
|
|
196
184
|
app.add_config_value("lua_ls_min_version", None, rebuild="env")
|
|
197
185
|
app.add_config_value("lua_ls_max_version", "__auto__", rebuild="env")
|
|
186
|
+
app.add_config_value("lua_ls_skip_versions", None, rebuild="env")
|
|
198
187
|
app.add_config_value("lua_ls_lua_version", None, rebuild="html")
|
|
199
188
|
app.add_config_value("lua_ls_default_options", None, rebuild="env")
|
|
200
189
|
app.add_config_value("lua_ls_apidoc_roots", None, rebuild="")
|
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '3.
|
|
32
|
-
__version_tuple__ = version_tuple = (3,
|
|
31
|
+
__version__ = version = '3.8.1'
|
|
32
|
+
__version_tuple__ = version_tuple = (3, 8, 1)
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'g03b365db2'
|
|
@@ -14,6 +14,7 @@ import sphinx_lua_ls.domain
|
|
|
14
14
|
_logger = logging.getLogger("sphinx_lua_ls")
|
|
15
15
|
|
|
16
16
|
T = _t.TypeVar("T")
|
|
17
|
+
A = _t.ParamSpec("A")
|
|
17
18
|
|
|
18
19
|
|
|
19
20
|
@dataclass
|
|
@@ -25,6 +26,7 @@ class LuaDomainConfig:
|
|
|
25
26
|
auto_install_location: pathlib.Path | None = None
|
|
26
27
|
min_version: str | None = None
|
|
27
28
|
max_version: str | None = None
|
|
29
|
+
skip_versions: list[str] | None = None
|
|
28
30
|
lua_version: str | None = None
|
|
29
31
|
default_options: dict[str, _t.Any] = dataclasses.field(default_factory=dict)
|
|
30
32
|
apidoc_default_options: dict[str, _t.Any] = dataclasses.field(default_factory=dict)
|
|
@@ -73,11 +75,17 @@ def _path(name: str, value, root: str | pathlib.Path) -> pathlib.Path:
|
|
|
73
75
|
raise ConfigError(f"incorrect lua_ls_project_root: {e}") from None
|
|
74
76
|
|
|
75
77
|
|
|
76
|
-
def
|
|
78
|
+
def _list(
|
|
79
|
+
name: str,
|
|
80
|
+
value,
|
|
81
|
+
checker: _t.Callable[_t.Concatenate[str, object, A], T],
|
|
82
|
+
*args: A.args,
|
|
83
|
+
**kwargs: A.kwargs,
|
|
84
|
+
) -> list[T]:
|
|
77
85
|
if value is None:
|
|
78
86
|
value = []
|
|
79
87
|
_type(name, value, list)
|
|
80
|
-
return [
|
|
88
|
+
return [checker(f"{name}[{i}]", v, *args, **kwargs) for i, v in enumerate(value)]
|
|
81
89
|
|
|
82
90
|
|
|
83
91
|
def _options(name: str, value) -> dict[str, _t.Any]:
|
|
@@ -193,9 +201,10 @@ def set_options(app: sphinx.application.Sphinx):
|
|
|
193
201
|
)
|
|
194
202
|
|
|
195
203
|
if config["lua_ls_project_directories"] is not None:
|
|
196
|
-
domain_config.project_directories =
|
|
204
|
+
domain_config.project_directories = _list(
|
|
197
205
|
"lua_ls_project_directories",
|
|
198
206
|
config["lua_ls_project_directories"],
|
|
207
|
+
_path,
|
|
199
208
|
domain_config.project_root,
|
|
200
209
|
)
|
|
201
210
|
|
|
@@ -221,6 +230,10 @@ def set_options(app: sphinx.application.Sphinx):
|
|
|
221
230
|
if config["lua_ls_max_version"] != "__auto__"
|
|
222
231
|
else "__auto__"
|
|
223
232
|
)
|
|
233
|
+
if config["lua_ls_skip_versions"] is not None:
|
|
234
|
+
domain_config.skip_versions = _list(
|
|
235
|
+
"lua_ls_skip_versions", config["lua_ls_skip_versions"], _version
|
|
236
|
+
)
|
|
224
237
|
|
|
225
238
|
if config["lua_ls_lua_version"]:
|
|
226
239
|
domain_config.lua_version = _str_choices(
|
|
@@ -1153,7 +1153,7 @@ class LuaDomain(Domain):
|
|
|
1153
1153
|
|
|
1154
1154
|
name = "lua"
|
|
1155
1155
|
label = "Lua"
|
|
1156
|
-
object_types
|
|
1156
|
+
object_types = {
|
|
1157
1157
|
"function": ObjType(_("function"), "func", "obj", "lua", "_auto"),
|
|
1158
1158
|
"data": ObjType(_("data"), "data", "obj", "lua", "_auto"),
|
|
1159
1159
|
"const": ObjType(_("const"), "attr", "const", "obj", "lua", "_auto"),
|
|
@@ -1225,7 +1225,7 @@ class LuaDomain(Domain):
|
|
|
1225
1225
|
base_lookup_classname: str | None = None
|
|
1226
1226
|
base_lookup_using: list[str] | None = None
|
|
1227
1227
|
|
|
1228
|
-
initial_data
|
|
1228
|
+
initial_data = {
|
|
1229
1229
|
"objects": {}, # fullname -> ObjectEntry
|
|
1230
1230
|
"globals": {}, # modname -> GlobalEntry
|
|
1231
1231
|
"members": {}, # modname -> MemberEntry
|
|
@@ -26,6 +26,10 @@ from sphinx.errors import SphinxError
|
|
|
26
26
|
from sphinx.util import logging
|
|
27
27
|
from sphinx.util.console import bold, red # type: ignore
|
|
28
28
|
|
|
29
|
+
KNOWN_BROKEN_LUA_LS_RELEASES = ["3.16.0"]
|
|
30
|
+
KNOWN_BROKEN_EMMYLUA_RELEASES = []
|
|
31
|
+
|
|
32
|
+
|
|
29
33
|
_PathLike: _t.TypeAlias = str | os.PathLike[str]
|
|
30
34
|
|
|
31
35
|
|
|
@@ -307,8 +311,9 @@ class SphinxProgressReporter(DefaultProgressReporter):
|
|
|
307
311
|
def resolve(
|
|
308
312
|
*,
|
|
309
313
|
backend: _t.Literal["emmylua", "luals"],
|
|
310
|
-
min_version: str,
|
|
314
|
+
min_version: str | None,
|
|
311
315
|
max_version: str | None,
|
|
316
|
+
skip_versions: list[str] | None,
|
|
312
317
|
cache_path: _PathLike | None = None,
|
|
313
318
|
quiet: bool = True,
|
|
314
319
|
env: dict[str, str] | None = None,
|
|
@@ -332,6 +337,8 @@ def resolve(
|
|
|
332
337
|
minimal LuaLs version required.
|
|
333
338
|
:param max_version:
|
|
334
339
|
maximal LuaLs version required. Version is not limited is `None`.
|
|
340
|
+
:param skip_versions:
|
|
341
|
+
list of known broken versions.
|
|
335
342
|
:param quiet:
|
|
336
343
|
if true (default), any output from the LuaLs binary is hidden.
|
|
337
344
|
:param env:
|
|
@@ -368,12 +375,30 @@ def resolve(
|
|
|
368
375
|
if retry is None:
|
|
369
376
|
retry = urllib3.Retry(10, backoff_factor=0.1)
|
|
370
377
|
|
|
378
|
+
print(min_version, max_version, skip_versions)
|
|
379
|
+
if min_version is None:
|
|
380
|
+
if backend == "luals":
|
|
381
|
+
min_version = "3.0.0"
|
|
382
|
+
else:
|
|
383
|
+
min_version = "0.11.0"
|
|
384
|
+
if max_version == "__auto__":
|
|
385
|
+
if backend == "luals":
|
|
386
|
+
max_version = "4.0.0"
|
|
387
|
+
else:
|
|
388
|
+
max_version = "2.0.0"
|
|
389
|
+
if skip_versions is None:
|
|
390
|
+
if backend == "luals":
|
|
391
|
+
skip_versions = KNOWN_BROKEN_LUA_LS_RELEASES
|
|
392
|
+
else:
|
|
393
|
+
skip_versions = KNOWN_BROKEN_EMMYLUA_RELEASES
|
|
394
|
+
|
|
371
395
|
reporter.start()
|
|
372
396
|
try:
|
|
373
397
|
bin_path, path = _check_and_install(
|
|
374
398
|
backend,
|
|
375
399
|
min_version,
|
|
376
400
|
max_version,
|
|
401
|
+
skip_versions,
|
|
377
402
|
cache_path,
|
|
378
403
|
_get_path(env),
|
|
379
404
|
install,
|
|
@@ -423,9 +448,15 @@ def _get_path(env: dict[str, str] | None) -> str:
|
|
|
423
448
|
|
|
424
449
|
|
|
425
450
|
def _check_version(
|
|
426
|
-
min_version: str,
|
|
451
|
+
min_version: str,
|
|
452
|
+
max_version: str | None,
|
|
453
|
+
skip_versions: list[str],
|
|
454
|
+
bin_path: _PathLike,
|
|
427
455
|
) -> _t.Tuple[bool, _t.Optional[str]]:
|
|
428
456
|
min_version_tuple = tuple(int(c) for c in min_version.split("."))
|
|
457
|
+
skip_version_tuples = [
|
|
458
|
+
tuple(int(c) for c in version.split(".")) for version in skip_versions
|
|
459
|
+
]
|
|
429
460
|
if max_version:
|
|
430
461
|
max_version_tuple = tuple(int(c) for c in max_version.split("."))
|
|
431
462
|
if max_version_tuple <= min_version_tuple:
|
|
@@ -442,15 +473,19 @@ def _check_version(
|
|
|
442
473
|
if match := re.search(r"(\d+\.\d+\.\d+)", system_version_text):
|
|
443
474
|
system_version = match.group(1)
|
|
444
475
|
system_version_tuple = tuple(int(c) for c in system_version.split("."))
|
|
445
|
-
if
|
|
476
|
+
if (
|
|
477
|
+
min_version_tuple <= system_version_tuple < max_version_tuple
|
|
478
|
+
and not _should_skip(system_version_tuple, skip_version_tuples)
|
|
479
|
+
):
|
|
446
480
|
return True, system_version
|
|
447
481
|
else:
|
|
448
482
|
_logger.debug(
|
|
449
|
-
"%s is outdated (got %s, required %s..%s)",
|
|
483
|
+
"%s is outdated (got %s, required %s..%s, skip=%r)",
|
|
450
484
|
bin_path,
|
|
451
485
|
system_version,
|
|
452
486
|
min_version,
|
|
453
487
|
max_version,
|
|
488
|
+
skip_versions,
|
|
454
489
|
type="lua-ls",
|
|
455
490
|
)
|
|
456
491
|
return False, system_version
|
|
@@ -474,6 +509,7 @@ def _check_and_install(
|
|
|
474
509
|
backend: _t.Literal["emmylua", "luals"],
|
|
475
510
|
min_version: str,
|
|
476
511
|
max_version: str | None,
|
|
512
|
+
skip_versions: list[str],
|
|
477
513
|
cache_path: pathlib.Path,
|
|
478
514
|
path: str,
|
|
479
515
|
install: bool,
|
|
@@ -485,6 +521,7 @@ def _check_and_install(
|
|
|
485
521
|
min_version = min_version[1:]
|
|
486
522
|
if max_version and max_version.startswith("v"):
|
|
487
523
|
max_version = max_version[1:]
|
|
524
|
+
skip_versions = [version.removeprefix("v") for version in skip_versions]
|
|
488
525
|
|
|
489
526
|
if backend == "emmylua":
|
|
490
527
|
bin_name = "emmylua_doc_cli"
|
|
@@ -495,7 +532,7 @@ def _check_and_install(
|
|
|
495
532
|
system_version = None
|
|
496
533
|
if system_bin_path:
|
|
497
534
|
can_use_system_lua_ls, system_version = _check_version(
|
|
498
|
-
min_version, max_version, system_bin_path
|
|
535
|
+
min_version, max_version, skip_versions, system_bin_path
|
|
499
536
|
)
|
|
500
537
|
if can_use_system_lua_ls:
|
|
501
538
|
_logger.debug(
|
|
@@ -526,6 +563,7 @@ def _check_and_install(
|
|
|
526
563
|
return _install_emmylua(
|
|
527
564
|
min_version,
|
|
528
565
|
max_version,
|
|
566
|
+
skip_versions,
|
|
529
567
|
cache_path,
|
|
530
568
|
path,
|
|
531
569
|
install,
|
|
@@ -541,6 +579,7 @@ def _check_and_install(
|
|
|
541
579
|
return _install_lua_ls(
|
|
542
580
|
min_version,
|
|
543
581
|
max_version,
|
|
582
|
+
skip_versions,
|
|
544
583
|
cache_path,
|
|
545
584
|
path,
|
|
546
585
|
install,
|
|
@@ -554,16 +593,22 @@ def _check_and_install(
|
|
|
554
593
|
)
|
|
555
594
|
|
|
556
595
|
|
|
557
|
-
def _make_version_message(
|
|
596
|
+
def _make_version_message(
|
|
597
|
+
min_version: str, max_version: str | None, skip_versions: list[str]
|
|
598
|
+
) -> str:
|
|
558
599
|
if max_version:
|
|
559
|
-
|
|
600
|
+
msg = f"a version between {min_version} and {max_version}"
|
|
560
601
|
else:
|
|
561
|
-
|
|
602
|
+
msg = f"version {min_version} or newer"
|
|
603
|
+
if skip_versions:
|
|
604
|
+
msg += ", and not " + ", ".join(skip_versions)
|
|
605
|
+
return msg
|
|
562
606
|
|
|
563
607
|
|
|
564
608
|
def _install_lua_ls(
|
|
565
609
|
min_version: str,
|
|
566
610
|
max_version: str | None,
|
|
611
|
+
skip_versions: list[str],
|
|
567
612
|
cache_path: pathlib.Path,
|
|
568
613
|
path: str,
|
|
569
614
|
install: bool,
|
|
@@ -589,7 +634,7 @@ def _install_lua_ls(
|
|
|
589
634
|
release_name = release_names.get((platform, machine), None)
|
|
590
635
|
if not install or not release_name:
|
|
591
636
|
if system_bin_path:
|
|
592
|
-
version = _make_version_message(min_version, max_version)
|
|
637
|
+
version = _make_version_message(min_version, max_version, skip_versions)
|
|
593
638
|
raise LuaLsError(
|
|
594
639
|
f"you have lua-language-server {system_version}, "
|
|
595
640
|
f"but {version} is required; "
|
|
@@ -613,7 +658,9 @@ def _install_lua_ls(
|
|
|
613
658
|
bin_path = cache_path / "bin/lua-language-server"
|
|
614
659
|
if bin_path.exists():
|
|
615
660
|
bin_path.chmod(bin_path.stat().st_mode | stat.S_IEXEC)
|
|
616
|
-
can_use_cached_binary, _ = _check_version(
|
|
661
|
+
can_use_cached_binary, _ = _check_version(
|
|
662
|
+
min_version, max_version, skip_versions, bin_path
|
|
663
|
+
)
|
|
617
664
|
if can_use_cached_binary:
|
|
618
665
|
_logger.debug("using cached lua-language-server", type="lua-ls")
|
|
619
666
|
return bin_path, path
|
|
@@ -631,6 +678,7 @@ def _install_lua_ls(
|
|
|
631
678
|
tmp_file = _download_release(
|
|
632
679
|
min_version,
|
|
633
680
|
max_version,
|
|
681
|
+
skip_versions,
|
|
634
682
|
api,
|
|
635
683
|
timeout,
|
|
636
684
|
retry,
|
|
@@ -663,15 +711,20 @@ def _install_lua_ls(
|
|
|
663
711
|
|
|
664
712
|
if verify:
|
|
665
713
|
can_use_cached_lua_ls, cached_version = _check_version(
|
|
666
|
-
min_version, max_version, bin_path
|
|
714
|
+
min_version, max_version, skip_versions, bin_path
|
|
667
715
|
)
|
|
668
716
|
if not can_use_cached_lua_ls:
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
717
|
+
if cached_version is not None:
|
|
718
|
+
version = _make_version_message(min_version, max_version, skip_versions)
|
|
719
|
+
raise LuaLsError(
|
|
720
|
+
f"downloaded lua-language-server printed version {cached_version}, "
|
|
721
|
+
f"but {version} is required; are you sure lua_ls_min_version "
|
|
722
|
+
f"and lua_ls_max_version are correct?",
|
|
723
|
+
)
|
|
724
|
+
else:
|
|
725
|
+
raise LuaLsError(
|
|
726
|
+
"downloaded lua-language-server failed to print its version"
|
|
727
|
+
)
|
|
675
728
|
elif not bin_path.exists():
|
|
676
729
|
raise LuaLsError(
|
|
677
730
|
f"downloaded latest lua-language-server is broken: "
|
|
@@ -684,6 +737,7 @@ def _install_lua_ls(
|
|
|
684
737
|
def _install_emmylua(
|
|
685
738
|
min_version: str,
|
|
686
739
|
max_version: str | None,
|
|
740
|
+
skip_versions: list[str],
|
|
687
741
|
cache_path: pathlib.Path,
|
|
688
742
|
path: str,
|
|
689
743
|
install: bool,
|
|
@@ -707,7 +761,7 @@ def _install_emmylua(
|
|
|
707
761
|
release_name = release_names.get((platform, machine), None)
|
|
708
762
|
if not install or not release_name:
|
|
709
763
|
if system_bin_path:
|
|
710
|
-
version = _make_version_message(min_version, max_version)
|
|
764
|
+
version = _make_version_message(min_version, max_version, skip_versions)
|
|
711
765
|
raise LuaLsError(
|
|
712
766
|
f"you have emmylua_doc_cli {system_version}, but {version} is required; "
|
|
713
767
|
f"see upgrade instructions "
|
|
@@ -730,7 +784,9 @@ def _install_emmylua(
|
|
|
730
784
|
bin_path = cache_path / "emmylua_doc_cli"
|
|
731
785
|
if bin_path.exists():
|
|
732
786
|
bin_path.chmod(bin_path.stat().st_mode | stat.S_IEXEC)
|
|
733
|
-
can_use_cached_binary, _ = _check_version(
|
|
787
|
+
can_use_cached_binary, _ = _check_version(
|
|
788
|
+
min_version, max_version, skip_versions, bin_path
|
|
789
|
+
)
|
|
734
790
|
if can_use_cached_binary:
|
|
735
791
|
_logger.debug("using cached emmylua_doc_cli", type="lua-ls")
|
|
736
792
|
return bin_path, path
|
|
@@ -750,6 +806,7 @@ def _install_emmylua(
|
|
|
750
806
|
tmp_file = _download_release(
|
|
751
807
|
min_version,
|
|
752
808
|
max_version,
|
|
809
|
+
skip_versions,
|
|
753
810
|
api,
|
|
754
811
|
timeout,
|
|
755
812
|
retry,
|
|
@@ -782,15 +839,20 @@ def _install_emmylua(
|
|
|
782
839
|
|
|
783
840
|
if verify:
|
|
784
841
|
can_use_cached_lua_ls, cached_version = _check_version(
|
|
785
|
-
min_version, max_version, bin_path
|
|
842
|
+
min_version, max_version, skip_versions, bin_path
|
|
786
843
|
)
|
|
787
844
|
if not can_use_cached_lua_ls:
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
845
|
+
if cached_version is not None:
|
|
846
|
+
version = _make_version_message(min_version, max_version, skip_versions)
|
|
847
|
+
raise LuaLsError(
|
|
848
|
+
f"downloaded emmylua_doc_cli printed version {cached_version}, "
|
|
849
|
+
f"but {version} is required; are you sure lua_ls_min_version "
|
|
850
|
+
f"and lua_ls_max_version are correct?",
|
|
851
|
+
)
|
|
852
|
+
else:
|
|
853
|
+
raise LuaLsError(
|
|
854
|
+
"downloaded emmylua_doc_cli failed to print its version"
|
|
855
|
+
)
|
|
794
856
|
elif not bin_path.exists():
|
|
795
857
|
raise LuaLsError(
|
|
796
858
|
f"downloaded latest emmylua_doc_cli is broken: " f"can't find {bin_path}",
|
|
@@ -802,6 +864,7 @@ def _install_emmylua(
|
|
|
802
864
|
def _download_release(
|
|
803
865
|
min_version: str,
|
|
804
866
|
max_version: str | None,
|
|
867
|
+
skip_versions: list[str],
|
|
805
868
|
api: github.Github,
|
|
806
869
|
timeout: int,
|
|
807
870
|
retry: urllib3.Retry,
|
|
@@ -814,6 +877,9 @@ def _download_release(
|
|
|
814
877
|
machine: str,
|
|
815
878
|
):
|
|
816
879
|
min_version_tuple = tuple(int(c) for c in min_version.split("."))
|
|
880
|
+
skip_version_tuples = [
|
|
881
|
+
tuple(int(c) for c in version.split(".")) for version in skip_versions
|
|
882
|
+
]
|
|
817
883
|
if max_version:
|
|
818
884
|
max_version_tuple = tuple(int(c) for c in max_version.split("."))
|
|
819
885
|
else:
|
|
@@ -832,7 +898,10 @@ def _download_release(
|
|
|
832
898
|
if match := re.search(r"(\d+\.\d+\.\d+)", release.tag_name):
|
|
833
899
|
release_version = match.group(1)
|
|
834
900
|
release_version_tuple = tuple(int(c) for c in release_version.split("."))
|
|
835
|
-
if not (
|
|
901
|
+
if not (
|
|
902
|
+
min_version_tuple <= release_version_tuple < max_version_tuple
|
|
903
|
+
and not _should_skip(release_version_tuple, skip_version_tuples)
|
|
904
|
+
):
|
|
836
905
|
_logger.debug(
|
|
837
906
|
"release is outside of allowed version range", type="lua-ls"
|
|
838
907
|
)
|
|
@@ -853,7 +922,7 @@ def _download_release(
|
|
|
853
922
|
|
|
854
923
|
break
|
|
855
924
|
else:
|
|
856
|
-
version = _make_version_message(min_version, max_version)
|
|
925
|
+
version = _make_version_message(min_version, max_version, skip_versions)
|
|
857
926
|
raise LuaLsError(f"unable to find {name} release for {version}")
|
|
858
927
|
|
|
859
928
|
_logger.debug("downloading %s from %s", name, browser_download_url, type="lua-ls")
|
|
@@ -892,6 +961,15 @@ def _download_release(
|
|
|
892
961
|
return dest / basename
|
|
893
962
|
|
|
894
963
|
|
|
964
|
+
def _should_skip(version: tuple[int, ...], skip_versions: list[tuple[int, ...]]):
|
|
965
|
+
for skip_version in skip_versions:
|
|
966
|
+
if len(version) < len(skip_version):
|
|
967
|
+
version += (0,) * (len(skip_version) - len(version))
|
|
968
|
+
if skip_version == version[: len(skip_version)]:
|
|
969
|
+
return True
|
|
970
|
+
return False
|
|
971
|
+
|
|
972
|
+
|
|
895
973
|
if __name__ == "__main__":
|
|
896
974
|
|
|
897
975
|
def main():
|
|
@@ -903,6 +981,7 @@ if __name__ == "__main__":
|
|
|
903
981
|
parser.add_argument("machine")
|
|
904
982
|
parser.add_argument("--min", default="0.0.0")
|
|
905
983
|
parser.add_argument("--max", default=None)
|
|
984
|
+
parser.add_argument("--skip", action="append", default=None)
|
|
906
985
|
parser.add_argument("path", type=pathlib.Path)
|
|
907
986
|
|
|
908
987
|
_logger.setLevel("DEBUG")
|
|
@@ -912,11 +991,18 @@ if __name__ == "__main__":
|
|
|
912
991
|
|
|
913
992
|
args = parser.parse_args()
|
|
914
993
|
|
|
994
|
+
if args.skip is None:
|
|
995
|
+
if args.runtime == "luals":
|
|
996
|
+
args.skip = KNOWN_BROKEN_LUA_LS_RELEASES
|
|
997
|
+
else:
|
|
998
|
+
args.skip = KNOWN_BROKEN_EMMYLUA_RELEASES
|
|
999
|
+
|
|
915
1000
|
match args.runtime:
|
|
916
1001
|
case "luals":
|
|
917
1002
|
_install_lua_ls(
|
|
918
1003
|
args.min,
|
|
919
1004
|
args.max,
|
|
1005
|
+
args.skip,
|
|
920
1006
|
args.path,
|
|
921
1007
|
_get_path(None),
|
|
922
1008
|
True,
|
|
@@ -933,6 +1019,7 @@ if __name__ == "__main__":
|
|
|
933
1019
|
_install_emmylua(
|
|
934
1020
|
args.min,
|
|
935
1021
|
args.max,
|
|
1022
|
+
args.skip,
|
|
936
1023
|
args.path,
|
|
937
1024
|
_get_path(None),
|
|
938
1025
|
True,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sphinx-lua-ls
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.8.1
|
|
4
4
|
Summary: Automatic documentation generation via EmmyLua/LuaLs
|
|
5
5
|
Author-email: Tamika Nomara <taminomara@gmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -24,7 +24,7 @@ Classifier: Typing :: Typed
|
|
|
24
24
|
Requires-Python: >=3.12
|
|
25
25
|
Description-Content-Type: text/markdown
|
|
26
26
|
License-File: LICENSE
|
|
27
|
-
Requires-Dist: sphinx<
|
|
27
|
+
Requires-Dist: sphinx<10.0,>=8.0
|
|
28
28
|
Requires-Dist: PyGithub<3.0,>=1.59
|
|
29
29
|
Requires-Dist: requests~=2.31
|
|
30
30
|
Dynamic: license-file
|