Comments (11)
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.
Already using it, love it!! ❤️
from flake8-pyproject.
@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.
@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.
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.
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.
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.
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.
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.
A custom command-line option --toml-config
is supported as of version 1.2.0, released today.
from flake8-pyproject.
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)
- Does not support Flake8 6+ HOT 5
- Running via Flake8 pre-commit hook HOT 4
- Remove upper pinning for flake 8 and add test for flake8 main HOT 1
- Support `flake8:local-plugins` HOT 6
- the name case HOT 1
- parse_args() used in hook.py HOT 6
- Alternatives to this project? HOT 12
- Flake8-pyproject doesn't work with flake8 `6.1.0` HOT 2
- Unrecognized argument toml config HOT 2
- Override `flake8` script? HOT 6
- Does not support Flake8 5+ HOT 1
- `flake8p` is only aware of `pyproject.toml` in the current folder HOT 1
- Error with `flake8-mock` HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from flake8-pyproject.