-
-
Notifications
You must be signed in to change notification settings - Fork 206
docs(revdep): Analyze and document reverse dependency problems #2500
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
base: main
Are you sure you want to change the base?
Conversation
Co-authored-by: krlmlr <[email protected]>
Co-authored-by: krlmlr <[email protected]>
|
@copilot: Check if passing |
Co-authored-by: krlmlr <[email protected]>
Yes! The mechanism: Updated analysis and examples to document this workaround. Commit: 3351e96 |
|
@copilot: Create a script that uses |
Co-authored-by: krlmlr <[email protected]>
Created
Usage: Outputs to
See |
|
@copilot: Determine now if the package is on GitHub or not, the script should either create an issue or draft an e-mail, not both. |
Co-authored-by: krlmlr <[email protected]>
Updated script to determine upfront if package is on GitHub:
Previously created 6 files (3 issue templates + 3 emails), now creates only what's needed. Commit: 1ad205a |
|
@copilot: Updated results. Reassess. Simplify the reproducible scripts: avoid |
- Simplified example scripts: removed cat() in favor of comments, removed tryCatch() - Created markdown output files (.md) for reprex-style documentation - Added examples for 3 new issues: DiagrammeR, manynet, sfnetworks - Updated problems-analysis.md with all 6 issues - All examples now follow clean, runnable format suitable for reprex Co-authored-by: krlmlr <[email protected]>
Updated analysis for new revdep results. Simplified examples per feedback: Changes:
New issues added:
All 6 issues now documented with simplified R scripts and markdown outputs. Commit: eead493 |
|
For the rSpectral workaround, do we want to implement an actual non hacky solution in igraph? Or to document and test this workaround? Just so we don't recommend a risky solution to a revdep. |
| The script will: | ||
|
|
||
| 1. Check if `gh` CLI is available | ||
| 2. For each package (Cascade, jewel, rSpectral): |
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.
what do these three names mean?
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.
not suitable for long-term docs
|
|
||
| 1. Check if `gh` CLI is available | ||
| 2. For each package (Cascade, jewel, rSpectral): | ||
| - Check if the GitHub repository is accessible |
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.
from what data? DESCRIPTION only?
| - If accessible: Create a GitHub issue directly using `gh issue create` | ||
| - If not accessible: Create an email draft in `notifications/` | ||
|
|
||
| The script determines upfront which action to take and only creates the appropriate output (either GitHub issue OR email draft, not both). |
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.
I'm wondering whether we should still send an email when there's an issue, but the email would link to the issue.
|
|
||
| - `{Package}-email.txt` - Complete email draft with subject and body | ||
|
|
||
| For packages with accessible GitHub repositories, issues are created directly and no local files are saved. |
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.
are links to issues stored somewhere? they could be useful for follow-up.
Also, are the issues opened on behalf of the person running the script? This should be specified in the docs, as it is important to know who will get notifications.
| 1. Review the email content in `notifications/{Package}-email.txt` | ||
| 2. Copy the content | ||
| 3. Create a new email in your email client | ||
| 4. Update the "To:" field with the actual maintainer email (check CRAN package page) |
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.
then this email address should be in notifications/{Package}-email.txt, not hard to automate, and a time gain for users.
| 2. Copy the content | ||
| 3. Create a new email in your email client | ||
| 4. Update the "To:" field with the actual maintainer email (check CRAN package page) | ||
| 5. Paste the subject and body |
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.
do we have an email address for igraph development that we could cc? or even use to send the emails? so that it's not a single team member who gets the answers.
| - The repository may have issues disabled | ||
|
|
||
| ### "GitHub repository not accessible" | ||
| - The repository might be private |
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.
| - The repository might be private | |
| - The repository might be private | |
| - There might be no link to the repository in the package metadata |
Analyzed six packages with newly broken checks to determine root causes and assess whether issues stem from igraph bugs or downstream package issues.
Analysis
Created
revdep/problems-analysis.mdwith detailed findings for all issues:1. Cascade - Namespace Collision (Low Severity)
New
circulant()export conflicts withmagic::circulant. Non-breaking warning only.Root cause:
make_circulant()added in v2.2.1.9003 exports constructor alias that collides with magic package.2. DiagrammeR - neighbors() Requires Single Vertex (High Severity)
Package breaks when passing multiple vertices to
neighbors().Root cause: igraph added stricter validation requiring exactly one vertex for
neighbors(). DiagrammeR'sget_leverage_centrality()passes a vector.Recommendation: Iterate over vertices individually using
lapply().3. jewel - Integer Validation (High Severity)
Package breaks on non-integer
nitervalues:Root cause:
rewire_impl()usesas.numeric()but C code now strictly validates integers. Previously silently truncated.Recommendation: Use
ceiling(p * 0.05)or addas.integer()inrewire_keeping_degseq()for backward compatibility.4. manynet - Scalar Integer Validation (High Severity)
Package breaks when passing vector to
sample_last_cit().Root cause: igraph added stricter validation for scalar parameters. C code now validates that scalar parameters are indeed scalars.
Recommendation: Ensure scalar values or iterate if multiple values intended.
5. rSpectral - Modularity Changes (Medium Severity)
Tests fail due to different modularity values.
Root cause:
modularity_impl()auto-detects weight attribute whenweights = NULL:Workaround discovered: Passing
weights = numeric()effectively disables auto-detection:This works because
numeric()is notNULL(skips auto-detection), but!all(is.na(numeric()))isFALSE, causing the code to setweights <- NULLinternally.6. sfnetworks - from Parameter Requires Single Vertex (High Severity)
Package breaks when passing multiple vertices to
all_shortest_paths().Root cause: igraph added stricter validation requiring exactly one vertex for
fromparameter.Recommendation: Handle single/multiple vertices explicitly or iterate.
Deliverables
revdep/problems-analysis.md: Root cause analysis, assessment, and recommendations for all six issuesrevdep/examples/*.R: Simplified runnable minimal reproducible examples (nocat(), notryCatch())revdep/examples/*.md: Reprex-style markdown outputs showing expected results for each examplerevdep/notify-maintainers.sh: Automation script to notify package maintainers via GitHub issues or email draftsrevdep/NOTIFY-README.md: Documentation for using the notification scriptExample Format
All examples follow a simplified, clean format suitable for
reprex::reprex():cat()statements: Documentation via comments onlytryCatch()blocks: Error cases are commented out for clarity.R(runnable script) and.md(markdown output) filesIssue Categorization
Maintainer Notification Script
Created
notify-maintainers.shto automate notifying package maintainers:ghCLI to create GitHub issues directly for packages hosted on GitHubnotifications/directoryUsage:
./notify-maintainers.shThe script checks repository accessibility first and creates only the appropriate output type per package, eliminating redundant files.
See
NOTIFY-README.mdfor detailed instructions on using the script, authentication setup, and troubleshooting.Original prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.