-
Notifications
You must be signed in to change notification settings - Fork 147
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
Clarify that a Pipfile is a tool to generate Pipfle.lock, and not a build description on its own. #7
Comments
I think in general the whole idea and problem space behind Pipfile+Pipfile.lock et al could benefit from a real world narrative with better framing in standard industry terminology. the because resolves against open ended constraints can be heinously non-deterministic, the idea of frozen resolves has emerged as a way to bring sanity into larger production environments. rather than checking in open ended constraints that when resolved lead to non-deterministic behavior at e.g. the same git sha but at different time periods - frozen resolves lead to retrieval of consistent products (assuming an immutable file store) with a consistent installation/bundling result. more importantly, frozen resolves can never spontaneously fail at the resolve phase due to unsatisfiable constraints. this effectively surfaces resolution issues directly to developers at commit time as a first class development step rather than later as package constraints shift due to unpinned versions (or transitive unpinned versions). so effectively, a |
How about renaming |
Why is mirroring C conventions more valuable than mirroring other conventions like Ruby? My gut reaction tells me we should look for crossover with the other interpreted language communities instead of makefiles and other compiled code systems. |
@mekhami Why to mirror other conventions if there is already one that is used by built-in Python library? @lordmauve made a good point when he mentioned |
+1 on following existing conventions: The abstract requirements should come from the Otherwise, it's just https://xkcd.com/927/ all over again. Please, we don't need another way to spell either |
For anyone that's interested, I've implemented the suggested behaviour from my comment above in jazzband/pip-tools#418 - I hope others find it useful. 😉 |
jazzband/pip-tools#418 (comment) sheds some light on this |
Given #47, what's the status of this? |
@defnull please send a pull request to the README with the clarity you're seeking. |
@kennethreitz This issue was an early feedback. Either it is still relevant and you should re-open the issue, or not and it can be closed without a change in README. I am no longer involved in this project and won't spend time on a pull request for a closed issue. |
I think it's pretty clear now. |
If _Pipfile_ is altered manually after running the last series of tests, the generated _requirements.txt_ is not in line with the latest run of the environment against which was tested. The module `pipenv-to-requirements` solves exactly that problem. Remark that this seems to be the thought of people over at the Python Packaging Authority, see the last paragraph of the issue reported in pypa/pipfile#7 (comment) > Tools work with Pipfile.lock exclusively. A build system should never automatically execute a Pipfile to generate a missing or outdated Pipfile.lock
Executable build descriptions are a bad idea. See https://www.reddit.com/r/Python/comments/5e2vci/pipfile_a_new_and_much_better_way_to_declare/da9c2ku/ or uncountable blog posts and articles all over the Internet for very good examples. It should be common knowledge by now, still the same errors are made again and again.
Pipfile has a nice hybrid approach in that it allows developers to generate a static
Pipfile.lock
from a dynamic description. Tools can parse the staticPipfile.lock
and know exactly what to do, while developers can work with the more convenientPipfile
and can be as smart or lazy as they want to. This approach might actually work very well.For this to work, and for others like me to accept this idea, I thing the following point should be stressed out more: Tools work with
Pipfile.lock
exclusively. A build system should never automatically execute aPipfile
to generate a missing or outdatedPipfile.lock
. Thepipfile
module should never be a build requirement.The text was updated successfully, but these errors were encountered: