Code Monkey home page Code Monkey logo

Comments (11)

justcallmelarry avatar justcallmelarry commented on June 7, 2024 2

I went another way for solving the same issue instead: #11

Currently running for myself, but I would also understand if this is not the way that you would choose to solve it.

Let me know if I can adapt it somehow so that it might also help out others. :)

Great plugin, in any case! I really like not having to run a separate command for having my config in pyproject.toml, and now I can finally drop the tox.ini file for good.

from flake8-pyproject.

jamesbraza avatar jamesbraza commented on June 7, 2024 2

Already using it, love it!! ❤️

from flake8-pyproject.

john-hen avatar john-hen commented on June 7, 2024 1

@justcallmelarry That looks pretty good, thanks! Definitely doesn't add too much complexity, and even comes with a test.

I'll just have to find some time to cut a new release, but I'll merge that eventually.

from flake8-pyproject.

sbor23 avatar sbor23 commented on June 7, 2024 1

@jamesbraza did this work out for you using pre-commit? I tried to use it but somehow the --toml-config is not applied when run using pre-commit

  - repo: https://github.com/pycqa/flake8
    rev: 6.1.0
    hooks:
      - id: flake8
        additional_dependencies:
          - flake8-pyproject
          - flake8-bugbear
        args:
          - --toml-config web/pyproject.toml
        files: ^web/

However running flake8 --toml-config web/pyproject.toml works just fine with the same (latest) versions.


Edit: Just found out what's going on. The following was the output:
--toml-config web/pyproject.toml:0:1: E902 FileNotFoundError: [Errno 2] No such file or directory: '--toml-config web/pyproject.toml'

So I changed the args line to:

          - --toml-config=web/pyproject.toml

Now it works... 👀

I will open a bug report with pre-commit, it seems that it doesn't handle the args correctly.

from flake8-pyproject.

john-hen avatar john-hen commented on June 7, 2024

Hi. And thanks. Yeah, I don't like my repos to be cluttered with a variety of config files, one for each tool, and it seems that many people feel the same.

As for this particular case, I'm not surprised at all it crashes. You're giving Flake8 a .toml file where it expects an .ini file, so it spits it out. This plug-in here doesn't patch Flake8's own --config option. I guess, it could, in principle. But then I'd ask myself what the purpose of that is.

According to Flake8's documentation of the --config=<config>option:

Provide a path to a config file that will be the only config file read and used. This will cause Flake8 to ignore all other config files that exist.

Flake8-pyproject already does just that. It ignores "all other config files that exist" if you run it from the folder that contains pyproject.toml:

It then creates a RawConfigParser instance, converting from the TOML input format, and passes it on to Flake8 while discarding configuration options that would otherwise be sourced from elsewhere.

from flake8-pyproject.

jamesbraza avatar jamesbraza commented on June 7, 2024

I think the detail you're missing is one can have a monorepo-ish repo, with 2+ subpackages inside one repo. Each subpackage has its own unique pyproject.toml, and lives in a subfolder of the repo root. In other words, in my use case I don't have just one pyproject.toml at the repo root, I have many inside subfolders, and thus am forced to use --config.

To add to this, since a pre-commit gets originated from the repo root, I have to do something like this:

repos:
  - repo: https://gitlab.com/pycqa/flake8
    rev: 3.9.2
    hooks:
      - id: flake8
        name: flake8 subfolder 1
        alias: flake8-subfolder1
        files: ^subfolder1/
        args:
          - "--config=subfolder1/setup.cfg"
        additional_dependencies:
          - flake8-bugbear
          - flake8-docstrings

Ideally I can leverage Flake-pyproject and change to this:

        args:
          - "--config=subfolder1/pyproject.toml"

However, without --config supporting pyproject.toml, this isn't possible at the moment

from flake8-pyproject.

john-hen avatar john-hen commented on June 7, 2024

I see. But then the problem is that you cannot set the working directory for the pre-commit command. This seems to be a frequent complaint: pre-commit/pre-commit#1417.

There are also a number of other packages that do the same, or almost the same, as this one here. I've mentioned some (probably not all) of them in #2. Since they each patch Flake8 somewhat differently, you might find one that works for your use case.

from flake8-pyproject.

jamesbraza avatar jamesbraza commented on June 7, 2024

Thanks for sharing the alternatives! And let's just ignore the pre-commit anecdote, I feel it's beside the point.

I will say, given this project's core goal is integrating a new config file type to flake8, imo it's surprising to not support flake8's non-default path to config option. It feels like --config is directly in the core wheelhouse/responsibility of Flake8-pyproject.

Open to answering any follow up questions, thanks for entertaining this nonetheless!

from flake8-pyproject.

john-hen avatar john-hen commented on June 7, 2024

You have a point there. Though I also wrote in the ReadMe that users have to run the flake8 command from the same folder that pyproject.toml is in. So this behavior is as documented, if you will.

The reason for this scope limitation is that it simplifies the code quite a bit. Which is always a good thing. I want to spend as little time as possible maintaining this. I just want to use it in CI, for other projects.

But I'm not against adding this, provided it doesn't complicate things too much. Based on your use case, it looks like it would be easy to test with the fixtures that already exist. So the test suite would only need minor changes.

I may look into this at some point. But if you want to give it a shot, please do. The first step would be to find out where in its code Flake8 parses that --config option. Though if that happens before the plug-ins are loaded (which is likely, actually) then... well, then it's not gonna be an easy fix, I'm afraid. (Then again, hard to say how complicated or easy it is before going down that rabbit hole.)

from flake8-pyproject.

john-hen avatar john-hen commented on June 7, 2024

A custom command-line option --toml-config is supported as of version 1.2.0, released today.

from flake8-pyproject.

jamesbraza avatar jamesbraza commented on June 7, 2024

Glad you figured it out.

I have args: [--toml-config=test/pyproject.toml], which is one line if you wanna be more concise

from flake8-pyproject.

Related Issues (14)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.