Steps to reproduce the problem
I've reproduced this with the Resolwe project:
git clone https://github.com/genialis/resolwe.git
cd resolwe
mkvirtualenv resolwe
pip install --process-dependency-links -e .[docs,package,test]
For each of the variants, I've made the following common steps:
# bump version in resolwe/__about__.py
python setup.py clean -a
rm dist/*
rm -r *.egg-info
Then I've tested the following 4 variants:
Variant 1: Make sdist and whell and upload with twine
python setup.py sdist
python setup.py bdist_wheel
twine upload -r testpypi dist/*
Result is here -> README not rendered correctly.
Variant 2: Make sdist and whell and upload with setup.py upload
python setup.py sdist bdist_wheel upload -r testpypi
Result is here -> README rendered correctly.
Variant 3: Make sdist and upload with twine
python setup.py sdist
twine upload -r testpypi dist/*
Result is here -> README rendered correctly.
Variant 4: Make wheel and upload with twine
python setup.py bdist_wheel
twine upload -r testpypi dist/*
Result is here -> README not rendered correctly.
Summary
It appears that README is rendered incorrectly if twine upload includes a wheel.
Additional notes
The same problem also occurred when I uploaded the Resolwe 1.4.0 release to the real PyPI using Variant 1 described above. Note that the README is also incorrectly rendered on the new Warehouse-based PyPI frontend.
System information:
Fedora 24 with Python 3.5.2 and twine 1.8.1.
All contents of the virtualenv:
$ pip list --format=columns
Package Version Location
--------------------------- ---------- ----------------------------
alabaster 0.7.9
appdirs 1.4.0
args 0.1.0
astroid 1.4.9
Babel 2.3.4
bleach 1.5.0
check-manifest 0.34
clint 0.5.1
coverage 4.3.4
Django 1.10.5
django-autoslug 1.9.4.dev0
django-filter 0.15.3
django-guardian 1.4.6
django-mathfilters 0.4.0
django-versionfield2 0.5.0
djangorestframework 3.5.3
djangorestframework-filters 0.9.1
docutils 0.13.1
elasticsearch 2.4.1
elasticsearch-dsl 2.2.0
html5lib 0.9999999
imagesize 0.7.1
isort 4.2.5
Jinja2 2.9.4
jsonschema 2.5.1
lazy-object-proxy 1.2.2
MarkupSafe 0.23
mccabe 0.6.0
mock 2.0.0
packaging 16.8
pbr 1.10.0
pip 9.0.1
pkginfo 1.4.1
psycopg2 2.6.2
pycodestyle 2.2.0
pydocstyle 1.1.1
Pygments 2.2.0
pylint 1.6.5
pyparsing 2.1.10
python-dateutil 2.6.0
pytz 2016.10
PyYAML 3.12
readme-renderer 16.0
requests 2.13.0
requests-toolbelt 0.7.0
resolwe 1.4.0.4 /home/tadej/Genialis/resolwe
resolwe-runtime-utils 1.1.0
setuptools 34.0.2
six 1.10.0
snowballstemmer 1.2.1
Sphinx 1.5.2
sphinx-rtd-theme 0.1.9
testfixtures 4.13.3
twine 1.8.1
urllib3 1.20
wheel 0.30.0a0
wrapt 1.10.8