-
Notifications
You must be signed in to change notification settings - Fork 0
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
Make all Coherent System projects have a minimal pyproject.toml
#15
Comments
This issue has a lot of overlap with #8. I do agree, there are some serious downsides to the current experience. I think you're right that as a practical matter, we should, at least for now, require that every coherent project include the boilerplate file. How should we go about implementing the change? I can think of at least a couple places that need to be updated - in the getting started guide, in the builder readme. Probably now we also need a command to write the boilerplate, no? Something like
Yes, possibly. We can consider those concerns later. Are you willing to work on the effort? I'll add some subtasks in the original description. |
What I'm considering out-of-scope for now:
|
Yes. It's been tempting for a while now. Always happy to remove code. |
Thanks, sure! |
I made a change to the coherent.build github workflow in order to allow it to be manually triggered. I'm trying to decide how to keep that in sync with the other projects... and I'm quickly starting to feel like the skeleton approach is needed again. After all, how do I keep track of which projects have gotten which updates (to the boilerplate). Even if we have a |
Why was it necessary? |
When it comes to managing boilerplate--maybe we could somehow not store the boilerplate in repos and force |
Well, it wasn't strictly necessary, but I did want to have the ability to trigger workflows when something changes in the system (such as today, where I added a workaround for the pipx issue, then wanted to run the workflows on the coherent projects with the change). So I added coherent-oss/coherent.build@a95e65d to coherent.build, but I'd like that change to apply to every workflow. I'm 90% sure, though I'd like to be proven wrong, that change needs to be present in every repo.
In the case of github workflows, I don't think we have that option. There are a handful of other people with the same desire not to manage common config across every project. Another option could be to find a CI solution other than GitHub actions that honors coherent principles, but I'm not hopeful. |
I see. I used to re-run workflows ("Re-run all jobs") of HEAD in that case. But I can see
Oh, true, an obvious unsolved problem in my suggestion. Well, that's an open problem then. |
This issue aims to point out problems resulting from not adhering to PEP 517/518, that is storing a minimal
pyproject.toml
file in every Coherent project:At the moment, this file is only supplied temporarily in certain contexts and
coherent.build
has full control over its lifespan. I am thinking this isn't the most optimal approach, because:coherent.build
, it would be easy to figure that out by looking intobuild-system.build-backend
. I think that assuming the presence of__init__.py
or__main__.py
is slightly short-sighted: this definitely isn't the essential layout.coh install
makes assumptions about the preferred way of installing a project. I personally like to develop using virtual environments and that is one of the most popular practices, enabling inline hints and more. It should be possible to simply install Coherent projects using whatever method preferred: for instance, I want to develop 3 coherent projects in my super directory using editable installs..py
files in the root directory, this is often short-sighted too and might not be enough to prove a directory constituing a standalone package. For that reason Starship looks for specific files, withpyproject.toml
being the common part of two enablers (https://starship.rs/config/#package-version, https://starship.rs/config/#python).While the idea of temporarily supplying
pyproject.toml
allows to save some boilerplate, I still do think it comes with much more caveats than benefits. I'd like to suggest every Coherent project has apyproject.toml
so that it is just easier to work with.Now that poses some questions, what about
(meta)/
. If we statically keeppyproject.toml
for every Coherent project, shouldn't we rather let others customize ancillary details insidepyproject.toml
and then, optionally, in(meta)/
?Personally, I think that it would mean even easier migration to the Coherent System from flat/src layouts.
coherent.*
,tempora@experiment/coherent
).The text was updated successfully, but these errors were encountered: