Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Resolve pylintrc.toml in pylint 3.x #9228

Closed
matejsp opened this issue Nov 10, 2023 · 4 comments · Fixed by #9230 or #9461
Closed

Resolve pylintrc.toml in pylint 3.x #9228

matejsp opened this issue Nov 10, 2023 · 4 comments · Fixed by #9230 or #9461
Labels
Configuration Related to configuration Help wanted 🙏 Outside help would be appreciated, good for new contributors Needs PR This issue is accepted, sufficiently specified and now needs an implementation

Comments

@matejsp
Copy link

matejsp commented Nov 10, 2023

Current problem

We are trying to migrate to toml format for pylintrc however if we use
pylintrc it does not detect toml format.

We don't want to have couple of hundrets of lines in pyproject.toml that's why we would like to preserve the external configuration.

Desired solution

Based on this:
https://pylint.pycqa.org/en/latest/user_guide/usage/run.html

Have an option to resolve pylint.toml or pylintrc.toml in addition to pylintrc and .pylintrc.
One alternative is to have the same toml detection as for argument --rcfile.

Current workaround:
PYLINTRC=pylintrc.toml pylint -v
pylint --rcfile=pylintrc.toml -v

Both options are correctly detecting toml files.

Additional context

No response

@matejsp matejsp added the Needs triage 📥 Just created, needs acknowledgment, triage, and proper labelling label Nov 10, 2023
@DanielNoord DanielNoord added Help wanted 🙏 Outside help would be appreciated, good for new contributors Configuration Related to configuration Needs PR This issue is accepted, sufficiently specified and now needs an implementation and removed Needs triage 📥 Just created, needs acknowledgment, triage, and proper labelling labels Nov 10, 2023
@matejsp
Copy link
Author

matejsp commented Nov 10, 2023

I found and option for rcfile= that from page: https://www.codeac.io/documentation/pylint-configuration.html

I tried adding this to pylintrc

[tool.pylint.main]
rcfile = "pylintrc.toml"

Then I tried adding this to pyproject.toml:

[tool.pylint.main]
rcfile = "pylintrc.toml"

but it is not working ...

@Pierre-Sassoulas
Copy link
Member

Hello, and thank you for opening the issue. Did you consider only porting the non default value to the pyproject.toml or do you actually have a lot of non default value in the pylintrc ? The generated pylintrc contain everything when generated but most of the time disable and load-plgins is the only thing I need. Reading multiple configuration file is a complexity I'd rather avoid to be honest.

@matejsp
Copy link
Author

matejsp commented Nov 11, 2023

Hello, yes and it is still big (a lot of exclusions, rules, pylint plugins and configuration for plugins ...) and would like not to avoid doubling the pyproject.toml file. Even today is is hard to maintain.

From what I saw ...
imagine you would like to move your own https://github.com/pylint-dev/pylint/blob/main/pylintrc to toml format ...
basically rename to pylintrc.toml and migrate data to toml and it should all just work 🥇 .

Basically the logic is already there. If file ends with toml it is parsed as toml:
https://github.com/pylint-dev/pylint/blob/main/pylint/config/config_file_parser.py#L111

So the only change needed is to add new file with toml ext to the list:
https://github.com/pylint-dev/pylint/blob/main/pylint/config/find_default_config_files.py#L18

RC_NAMES = (Path("pylintrc"), Path("pylintrc.toml"), Path(".pylintrc"), Path(".pylintrc.toml"))

Of course if you agree with the solution.

I am still a bit puzzled with rcfile option in configuration file ... What is the use case.

@Pierre-Sassoulas
Copy link
Member

Pierre-Sassoulas commented Nov 11, 2023

I am still a bit puzzled with rcfile option in configuration file ... What is the use case.

We just have parity between command line option and configuration file option. For rcfile if doesn't make sense. This issue is slighlty related to #618 imo (we need to be able to merge new config into already loaded one).

netbsd-srcmastr referenced this issue in NetBSD/pkgsrc Mar 3, 2024
New Features
------------

- Skip ``consider-using-join`` check for non-empty separators if an ``suggest-join-with-non-empty-separator`` option is set to ``no``.

  Closes #8701 (`#8701 <https://github.com/pylint-dev/pylint/issues/8701>`_)

- Discover ``.pyi`` files when linting.

  These can be ignored with the ``ignore-patterns`` setting.

  Closes #9097 (`#9097 <https://github.com/pylint-dev/pylint/issues/9097>`_)

- Check ``TypeAlias`` and ``TypeVar`` (PEP 695) nodes for ``invalid-name``.

  Refs #9196 (`#9196 <https://github.com/pylint-dev/pylint/issues/9196>`_)

- Support for resolving external toml files named pylintrc.toml and .pylintrc.toml.

  Closes #9228 (`#9228 <https://github.com/pylint-dev/pylint/issues/9228>`_)

- Check for `.clear`, `.discard`, `.pop` and `remove` methods being called on a set while it is being iterated over.

  Closes #9334 (`#9334 <https://github.com/pylint-dev/pylint/issues/9334>`_)



New Checks
----------

- New message `use-yield-from` added to the refactoring checker. This message is emitted when yielding from a loop can be replaced by `yield from`.

  Closes #9229. (`#9229 <https://github.com/pylint-dev/pylint/issues/9229>`_)

- Added a ``deprecated-attribute`` message to check deprecated attributes in the stdlib.

  Closes #8855 (`#8855 <https://github.com/pylint-dev/pylint/issues/8855>`_)


False Positives Fixed
---------------------

- Fixed false positive for ``inherit-non-class`` for generic Protocols.

  Closes #9106 (`#9106 <https://github.com/pylint-dev/pylint/issues/9106>`_)

- Exempt ``TypedDict`` from ``typing_extensions`` from ``too-many-ancestor`` checks.

  Refs #9167 (`#9167 <https://github.com/pylint-dev/pylint/issues/9167>`_)



False Negatives Fixed
---------------------

- Extend broad-exception-raised and broad-exception-caught to except*.

  Closes #8827 (`#8827 <https://github.com/pylint-dev/pylint/issues/8827>`_)

- Fix a false-negative for unnecessary if blocks using a different than expected ordering of arguments.

  Closes #8947. (`#8947 <https://github.com/pylint-dev/pylint/issues/8947>`_)



Other Bug Fixes
---------------

- Improve the message provided for wrong-import-order check.  Instead of the import statement ("import x"), the message now specifies the import that is out of order and which imports should come after it.  As reported in the issue, this is particularly helpful if there are multiple imports on a single line that do not follow the PEP8 convention.

  The message will report imports as follows:
  For "import X", it will report "(standard/third party/first party/local) import X"
  For "import X.Y" and "from X import Y", it will report "(standard/third party/first party/local) import X.Y"
  The import category is specified to provide explanation as to why pylint has issued the message and guidence to the developer on how to fix the problem.

  Closes #8808 (`#8808 <https://github.com/pylint-dev/pylint/issues/8808>`_)



Other Changes
-------------

- Print how many files were checked in verbose mode.

  Closes #8935 (`#8935 <https://github.com/pylint-dev/pylint/issues/8935>`_)

- Fix a crash when an enum class which is also decorated with a ``dataclasses.dataclass`` decorator is defined.

  Closes #9100 (`#9100 <https://github.com/pylint-dev/pylint/issues/9100>`_)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Configuration Related to configuration Help wanted 🙏 Outside help would be appreciated, good for new contributors Needs PR This issue is accepted, sufficiently specified and now needs an implementation
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants