# A script to automatically create and test source and wheel # distributions of Beautiful Soup. # Recommend you run these steps one at a time rather than just running # the script. # If you screwed up on the test server and have to create a "a" or "b" # release the second time, add the '--pre' argument to pip install to # find the 'prerelease'. # Make sure tests pass ./test-all-versions rm -rf build dist # Run this in a Python 2 env and a Python 3 env to make both sdist and # wheels. python setup.py sdist bdist_wheel # Run this in Python 3 env. twine upload --repository-url https://test.pypi.org/legacy/ dist/* twine upload dist/* # Old instructions: # Create the 2.x source distro and wheel python setup.py sdist bdist_wheel # Upload the 2.x source distro and wheel to pypi test # python setup.py register -r test python setup.py sdist bdist_wheel upload -r test # Try 2.x install from pypi test rm -rf ../py2-install-test-virtualenv virtualenv -p /usr/bin/python2.7 ../py2-install-test-virtualenv source ../py2-install-test-virtualenv/bin/activate pip install --pre -i https://pypi.python.org/pypi beautifulsoup4 echo "EXPECT HTML ON LINE BELOW" (cd .. && python -c "from bs4 import _s; print(_s('foo', 'html.parser'))") # That should print 'foo' deactivate rm -rf ../py2-install-test-virtualenv # Try 3.x source install from pypi test rm -rf ../py3-source-install virtualenv -p /usr/bin/python3 ../py3-source-install source ../py3-source-install/bin/activate pip3 install -i https://testpypi.python.org/pypi beautifulsoup4 echo "EXPECT HTML ON LINE BELOW" (cd .. && python -c "from bs4 import _s; print(_s('foo', 'html.parser'))") # That should print 'foo' # Create and upload a Python 3 wheel from within a virtual environment # that has the Python 3 version of the code. pip install wheel python3 setup.py bdist_wheel upload -r test deactivate rm -rf ../py3-source-install # Make sure setup.py works on 2.x rm -rf ../py2-install-test-virtualenv virtualenv -p /usr/bin/python2.7 ../py2-install-test-virtualenv source ../py2-install-test-virtualenv/bin/activate python setup.py install echo "EXPECT HTML ON LINE BELOW" (cd .. && python -c "from bs4 import _s; print(_s('foo', 'html.parser'))") echo # That should print 'foo' deactivate rm -rf ../py2-install-test-virtualenv echo # Make sure setup.py works on 3.x rm -rf ../py3-install-test-virtualenv virtualenv -p /usr/bin/python3 ../py3-install-test-virtualenv source ../py3-install-test-virtualenv/bin/activate python setup.py install echo "EXPECT HTML ON LINE BELOW" (cd .. && python -c "from bs4 import _s; print(_s('foo', 'html.parser'))") # That should print 'foo' deactivate rm -rf ../py3-install-test-virtualenv echo # Make sure the 2.x wheel installs properly rm -rf ../py2-install-test-virtualenv virtualenv -p /usr/bin/python2.7 ../py2-install-test-virtualenv source ../py2-install-test-virtualenv/bin/activate pip install --upgrade setuptools pip install dist/beautifulsoup4-4.*-py2-none-any.whl -e .[html5lib] echo "EXPECT HTML ON LINE BELOW" (cd .. && python -c "from bs4 import _s; print(_s('foo', 'html5lib'))") # That should print 'foo' deactivate rm -rf ../py2-install-test-virtualenv echo # Make sure the 3.x wheel installs properly rm -rf ../py3-install-test-virtualenv virtualenv -p /usr/bin/python3 ../py3-install-test-virtualenv source ../py3-install-test-virtualenv/bin/activate pip3 install --upgrade setuptools pip3 install dist/beautifulsoup4-4.*-py3-none-any.whl -e .[html5lib] echo "EXPECT HTML ON LINE BELOW" (cd .. && python -c "from bs4 import _s; print(_s('foo', 'html5lib'))") # That should print 'foo' deactivate rm -rf ../py3-install-test-virtualenv ################ Do the release for real. twine upload dist/* # Register the project and upload the source distribution and Python 2 wheel. # python setup.py register # python setup.py sdist bdist_wheel upload # Create a Python 3 environment and install Beautiful Soup # from the source distribution that was just uploaded #rm -rf ../py3-source-install #virtualenv -p /usr/bin/python3 ../py3-source-install #source ../py3-source-install/bin/activate #pip install -i https://pypi.python.org/pypi beautifulsoup4 #echo "EXPECT HTML ON LINE BELOW" #(cd .. && python -c "from bs4 import _s; print(_s('foo', 'html.parser'))") # That should print 'foo' # Create and upload a Python 3 wheel from within a virtual environment # that has the Python 3 version of the code. #pip install wheel #python3 setup.py bdist_wheel upload # Remove the Python 3 virtual environment. #deactivate #rm -rf ../py3-source-install ################ To test, after release: rm -rf ../py2-install-test-virtualenv virtualenv -p /usr/bin/python2.7 ../py2-install-test-virtualenv source ../py2-install-test-virtualenv/bin/activate pip install beautifulsoup4 echo "EXPECT HTML ON LINE BELOW" (cd .. && python -c "from bs4 import _s; print(_s('foo', 'html.parser'))") # That should print 'foo' deactivate rm -rf ../py2-install-test-virtualenv rm -rf ../py3-install-test-virtualenv virtualenv -p /usr/bin/python3 ../py3-install-test-virtualenv source ../py3-install-test-virtualenv/bin/activate pip install beautifulsoup4 echo "EXPECT HTML ON LINE BELOW" (cd .. && python -c "from bs4 import _s; print(_s('foo', 'html.parser'))") # That should print 'foo' deactivate rm -rf ../py3-install-test-virtualenv