PyPI compatibility