-
Notifications
You must be signed in to change notification settings - Fork 578
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
Caching conflicts when using extra
dependencies
#838
Comments
Hello @Ben-Epstein , I have attempted to reproduce the issue on my end, but was unable to do so. In my test environment, the extras(openai) are not installed in the second job that use poetry install. Here's a screenshot for your reference. Could you assist by sharing a link to a simplified version that reproduces the problem? Thank you! |
Hello @Ben-Epstein |
Hi @Ben-Epstein, Could you please assist by sharing a link to a simplified version that reproduces the problem? |
Hi @gowridurgad sorry about that. I will take a look today to reproduce. Did you use poetry in that example? My project uses poetry so I'll try that. |
Hi @gowridurgad I'm so sorry for the delay in the response. I've reproduced the issue and shared it in this PR Ben-Epstein/poetry-setup-python-bug#2 Here are the critical steps to reproduce:
You can see steps 1 and 2 in the following commits:
|
Hi @Ben-Epstein , The reason for this behavior is that the cache key didn't change between the two jobs and the caching mechanism is designed to reuse the cache if it finds one with the same key. To avoid this situation, you might consider using different cache keys for jobs with different requirements using actions/cache. Here is the screenshot for your reference. we will update the document accordingly. |
Hello @Ben-Epstein , The PR has been merged and the Anti-Goals for caching poetry dependencies are updated in the document . For reference, you may visit the https://github.com/actions/setup-python/blob/main/docs/adrs/0000-caching-dependencies.md. |
Description:
This may relate to #626, and it may also conflict with your stated anti-goals, but i believe it's worth bringing to the surface as a potential bug you may want to investigate, as I can't find a direct issue around it, and it may be impacting many users who rely on this action.
If you build different
extras
with your python project, each containing their own independent dependencies, and you want to test to ensure that each extra has all of its necessary dependencies in a job, while also checking overall lint/type safety/testing, you may run into this issue as I have.When you specify the cache
cache: poetry
orcache: pip
etc, and point to yourrequirements.txt
or more up to datepyproject.toml
, the cache key doens't take into account what you are installing in that job.So, if I have a pyproject like so
And in my first job, i use setup-python and then run
but in another job, I run
One may assume that openai will not be installed in the second job. But if i'm using caching, regardless of what I install with, everything from the first cache creation will be installed.
I would think that the install command itself would generate the hash, rather than the dependency file itself.
Based on your non-goals, I understand if this isn't something you want to pursue, but it might be worth documenting in a overly-clear way for users who may not understand this behavior upfront.
Thank you!
The text was updated successfully, but these errors were encountered: