introducing vyupgrade
it automatically rewrites old vyper contracts into modern vyper, then proves the rewrite is safe by checking it compiles under both source and target versions, diffing the abi, method ids and storage layout.
it supports all syntax changes from 0.2.1 to 0.4.3, as well as picking up dependencies and modules like snekmate.
some rewrites are not inherently safe and need your judgement. the tool flags those and shows you exactly what to look at.
$ uvx vyupgrade contracts/