build / build (push) Successful in 10m53s
twine's --skip-existing is not a client-side flag: it asks the repository whether it supports the feature, and Gitea's PyPI registry does not advertise it, so the upload fails with UnsupportedConfiguration before it starts. Check the simple index for the version instead -- the same check-then-publish shape the npm step already uses.