fix(deps): unblock composer resolution under Psalm 6.16.1#579
fix(deps): unblock composer resolution under Psalm 6.16.1#579nickmarden wants to merge 3 commits into
Conversation
PR open-telemetry#543 bumped vimeo/psalm to 6.16.1 across 40 sub-projects but did not adjust the surrounding constraints, causing composer resolution to fail (and breaking the entire CI matrix) for two reasons: - psalm/plugin-phpunit ^0.20.0 pins psalm-plugin-api ^0.1, which conflicts with the plugin-api ^0.2 that ships with Psalm 6.10+. The latest plugin-phpunit release that supports Psalm 6.10+ is 0.19.7, so constrain to ^0.19.7 across all sub-projects. - vimeo/psalm 6.16.1 requires netresearch/jsonmapper ^5.0, but phan/phan 5.x transitively pins it to <=4 via felixfbecker/ advanced-json-rpc 3.2.1. phan 6.0.5 drops that dep and accepts jsonmapper ^5.0, so widen phan/phan to ^5 || ^6 (or ^5.4 || ^6 where the floor was 5.4). Verified locally that composer install --dry-run resolves cleanly for all 45 sub-projects after these changes.
|
@nickmarden - is there a reason this is still in draft? I'd love to get this reviewed and merged! |
Uh...primarily because CI was still super-red. I was working through this with the 🤖 and lost the thread when I traveled from Europe to the USA over the weekend :-) The robot and I are looking at it now. |
Psalm 6.x added MissingOverrideAttribute enforcement and Phan 6.x added PhanCompatibleOverrideAttribute warnings for #[Override] usage below PHP 8.3. Both checks fire across almost every sub-project once composer resolution is unblocked (fixed in the prior commit). - Add <MissingOverrideAttribute errorLevel="suppress" /> to all 46 psalm.xml.dist files. This is a config-level suppression; adding #[Override] everywhere is a separate cleanup task. - Add PhanCompatibleOverrideAttribute to suppress_issue_types in all 38 project-level .phan/config.php files (including root shared config used by Aws and Symfony via symlink). - Add src/Utils/Test/.phan/config.php: the project had no phan config, causing Phan 6 to recursively analyse vendor/ and crash on ramsey/uuid. - Remove deprecated InstrumentationInterface and InstrumentationTrait from AwsSdkInstrumentation; replace with explicit private properties. All methods used by callers and tests are already explicitly defined on the class. - Suppress PhanTypeMismatchArgument on AwsLambdaWrapper OtlpExporter construction (TransportInterface generic type narrowing issue).
Leftover artifact from a symlink repair gone wrong during the prior commit; .phan/.phan should not be tracked.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #579 +/- ##
=============================================
- Coverage 97.43% 85.25% -12.19%
- Complexity 11 787 +776
=============================================
Files 1 53 +52
Lines 39 2997 +2958
=============================================
+ Hits 38 2555 +2517
- Misses 1 442 +441
Flags with carried forward coverage won't be shown. Click here to find out more.
... and 50 files with indirect coverage changes Continue to review full report in Codecov by Sentry.
🚀 New features to boost your workflow:
|
Summary
PR #543 bumped
vimeo/psalmto 6.16.1 across 40 sub-projects but left two surrounding constraints incompatible with the new Psalm, which broke composer resolution and took the entire CI matrix red.This PR is a draft to validate the fix on real CI. It only touches
composer.jsonfiles (no lock files; they're gitignored here anyway).Why CI is currently red on main
psalm/plugin-phpunit ^0.20.0pinspsalm-plugin-api ^0.1, which conflicts with theplugin-api ^0.2that ships with Psalm 6.10+. The latestplugin-phpunitrelease that supports Psalm 6.10+ is0.19.7, so this constrains to^0.19.7across all sub-projects.vimeo/psalm 6.16.1requiresnetresearch/jsonmapper ^5.0, butphan/phan 5.xtransitively pins it to<=4viafelixfbecker/advanced-json-rpc 3.2.1.phan/phan 6.0.5drops that dep and acceptsjsonmapper ^5.0, so this widensphan/phanto^5 || ^6(or^5.4 || ^6where the floor was 5.4).Verified locally that
composer install --dry-runresolves cleanly for all 45 sub-projects after these changes.Test plan