feat(lint): let attributes be functions#112
Merged
xiaoshihou514 merged 1 commit intonvimdev:mainfrom Oct 8, 2023
Merged
Conversation
| or mes[opts.attributes.lnum] | ||
| local col = type(opts.attributes.col) == 'function' and opts.attributes.col(mes) | ||
| or mes[opts.attributes.col] | ||
| local message = type(opts.attributes.message) == 'function' and opts.attributes.message(mes) |
Member
There was a problem hiding this comment.
Maybe separate the logic into a function since it appears many times
Member
xiaoshihou514
left a comment
There was a problem hiding this comment.
Seems great! Makes api more consistent
862b634 to
44742eb
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This change is prompted by a change in the python linter ruff. The json output has changed a bit and the severity no longer simply parsed. Example:
[ { "code": "F401", "message": "`random` imported but unused", "fix": { "applicability": "Unspecified", "message": "Remove unused import: `random`", "edits": [ { "content": "", "location": { "row": 1, "column": 1 }, "end_location": { "row": 2, "column": 1 } } ] }, "location": { "row": 1, "column": 8 }, "end_location": { "row": 1, "column": 14 }, "filename": "/tmp/tmp.zV0Bmo7zZd/tmp.py", "noqa_row": 1 } ]By making all
attributesinfrom_jsona function or a key to the json message table, we can again extract the severity.The new ruff config would be something like this:
{ cmd = "ruff", args = { "-n", "-e", "--format", "json", "-", "--stdin-filename", }, fname = true, stdin = true, parse = lint.from_json({ attributes = { severity = function(js) return string.sub(js["code"], 1, 1) -- first character end, lnum = function(js) return js["location"]["row"] end, col = function(js) return js["location"]["column"] end, }, severities = { E = lint.severities.error, -- pycodestyle errors W = lint.severities.warning, -- pycodestyle warnings F = lint.severities.info, -- pyflakes A = lint.severities.info, -- flake8-builtins B = lint.severities.warning, -- flake8-bugbear C = lint.severities.warning, -- flake8-comprehensions T = lint.severities.info, -- flake8-print U = lint.severities.info, -- pyupgrade D = lint.severities.info, -- pydocstyle M = lint.severities.into, -- Meta }, source = "ruff", }), }I have tested this on my machine, but as this is part of https://github.com/nvimdev/guard-collection I didn't add or alter any test in this repo. Let me know what you think about this change :)