-
Notifications
You must be signed in to change notification settings - Fork 2
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
Dependency filters for production #26
Conversation
I have a couple of updates to the tests, but it seems I can't push to the branch on your fork. I think we can probably branch off the repo directly in future. |
Hmm... looks like your fork is at version 0.1.4, which is from 2 weeks ago: shikokuchuo@1c58a2a. I only see the |
Oh, you meant on my fork. Yeah, branching off the main repo would let us edit each other's PRs. |
what i mean is I've pulled this PR using the GH client. in the past it's let me push edits directly to the PR, but I think as this is on your fork it doesn't let me. Unless I'm not doing it correctly... |
Nothing major I was really just re-verifying the mock data vs. the real pulled data |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just one suggestion. I can add my minor test updates later.
Just so I can understand it fully, if we add |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks! Just pending my question on what it looks like when the dependency graph is deeper than 3 nodes.
EDIT: I'm just adding crew
to R-Multiverse to check . Hope you don't mind!
FYI I just did some profiling and pushed optimizations. Now, |
Thanks. I now have the mental model for this. Looks good. Can I suggest that you set the 'verbose' default to FALSE? Once the repo gets larger I think it will be too verbose to have this stuff in the log files. |
Here's what the graph looks like: And supposing there is an issue in list(
nanonext = list(later = character(0)),
mirai = list(later = "nanonext"),
crew = list(later = c("mirai", "nanonext")),
crew.aws.batch = list(later = "crew"),
crew.cluster = list(later = "crew"),
) Interpretation:
|
Done in e41b66d, though we may need it for log files if we notice too much slowness for some reason. |
@shikokuchuo, this PR flags packages whose upstream dependencies have issues. There is a new
issues_dependencies()
function called fromrecord_versions()
, and it works like this. As an example, let's take ourmirai
/crew
ecosystem and add a packagex
with dependenciesnanonext
andmirai
and reverse dependencycrew.aws.batch
:If
mirai
has a check error, thenissues_dependencies()
flags everything that depends on it. Specifically, it returns a nested list:The list says:
crew
,x
,crew.aws.batch
, andcrew.cluster
cannot stay in production because of the issue withmirai
.mirai
.mirai
impactscrew.aws.batch
via packagescrew
andx
.mirai
impactscrew.cluster
via packagecrew
.A downstream package can be impacted by more than one upstream one. For example, if both
mirai
andcrew
directly cause issues in some way, thenissues_dependencies(packages = c("mirai", "crew"), ...)
returns:This choice of output format may seem complicated, but we can have downstream code interpret it (e.g. the RSS feed) and explain to the user that e.g. "there is an issue in package A which impacts your package B through strong direct dependencies C and D".
Also in this PR: wherever an issue is flagged in a package for any reason, the JSON file includes the version and remote SHA of the problematic release.
Lastly, an FYI:
issues_dependencies()
computes on a large dependency graph, andigraph
is the best tool for the job. Unfortunately, it is quite a heavy dependency formultiverse.internals
.