For every release, the following process is used.
- From the project directory, run
./run-tests.sh
to insure unit tests pass (on python 2 and 3), and that pylint succeeds - Push commit which is the candidate release to Github master
- Wait for tests to pass on TravisCI
- Wait for coverage to complete at 100% on Coveralls
- Wait for docs to complete building successfully at docs.pyfunctional.pedro.ai/en/latest
- Run
docker run -it python bash
for clean python installation - Clone and install
PyFunctional
withpython setup.py install
- Run a python terminal session and insure that
import functional
returns with no errors - Repeat steps 6-9 but instead use a python3 docker image
- Build the source distribution using
python setup.py sdist
- Build the wheel distribution using
python bdist_wheel
- Assuming a
.pypirc
file like below, double check thatdist/
has the source and wheel distributions
- Run
twine upload -r test dist/*
to uploadPyFunctional
to the test PyPi server - Browse to the pypi test server and insure the webpage looks correct and that the upload was done correctly.
- Run
docker run -it python bash
and install the package usingpip install -i https://testpypi.python.org/pypi pyfunctional
. - Install dependencies not on the test PyPI instance:
future
,six
,dill
, andbackports.lzma
- Test that
functional
is importable - Repeat using python 3.
If all these steps run, than the candidate release commit will become the new release which means uploading to live pypi and tagging the commit as a release.
- Run
twine upload -r pypi dist/*
to publishPyFunctional
to the live PyPi server. - Repeat install tests from Test PyPI testing
- Tag the release on git with
git tag -a vX.X.X
. Then rungit push
andgit push --tags
- On Github, create/edit the release page to match the changelog and add discussion
- On readthedocs bump the documentation version number
- Celebrate!
[distutils]
index-servers =
pypi
test
[pypi]
repository: https://pypi.python.org/pypi
[test]
repository: https://testpypi.python.org/pypi