Skip to content

xapple/bumphub

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

bumphub version 1.2.1

The project contains scripts to automate distribution and packaging of python modules on PyPI and conda.

pybump

The first utility, pybump, contains a script to automatically publish a package on PyPI. More specifically the following steps are carried out:

  • Bump the version number of a python module (in __init__.py, in setup.py and README.md).
  • Regenerate the documentation with pdoc3.
  • Commit these changes with git.
  • Add a git tag with the new version number to the latest commit.
  • Push these changes upstream.
  • Build the package.
  • Upload the package to PyPI.
  • Bump the version number again.
  • Commit these changes with git.

These other python packages are dependencies:

  • plumbing
  • autopaths
  • sh

These executables are required on the $PATH:

  • gsed
  • twine
  • pdoc

You can use it from the shell like this:

$ pybump myproject

Command line options are:

  • --test to upload to testpypi instead of the real PyPI.
  • --infinite to keep incrementing the minor version number and never increment the major version number.

See https://packaging.python.org/guides/using-testpypi/ for the test option.

To get the dependencies, you can use:

$ conda env create -f environment.yml

anacondabump

The second utility, anacondabump, contains a script to automatically retrieve a package that was previously uploaded to PyPI, and upload an exact copy on a personal anaconda channel.

You can use it from the shell like this:

$ anacondabump myproject

To use this script you first need to install conda and some utilities (see next section).

These executables are required on the $PATH:

  • conda
  • conda-build
  • grayskull
  • anaconda

To get the dependencies, you can use:

$ conda env create -f environment.yml

Setup conda on macOS

To set up conda on macOS do the following:

$ brew install miniconda
$ conda init "$(basename "${SHELL}")"
$ mv ~/.bash_profile ~/.conda/conda_init.sh
$ source ~/.conda/conda_init.sh
$ conda install conda-build
$ conda install anaconda-client

You also need your anaconda credentials to be recorded by running the command:

$ anaconda login

Interesting blog article containing possible improvements to this script:

https://blog.gishub.org/how-to-publish-a-python-package-on-conda-forge

Uploading a package to PyPI manually

If you want to do the steps manually instead, follow this guide. Let's say your project is named myproject.

cd ~/repos/myproject
git init
git add *
git add .gitignore
git commit -m "First commit"

Now create a new empty repository on GitHub, let's say your username is bob. Then push to it:

git remote add origin git@github.com:bob/myproject.git
git push -u origin master

Upgrade the setuptools, and the wheel packages:

pip install --user --upgrade setuptools wheel

Build a wheel:

python setup.py sdist bdist_wheel

Test installation locally:

virtualenv test_env
source ./test_env/bin/activate
pip install dist/myproject-1.0.0-py2-none-any.whl
python -c "import myproject"

Clean up:

deactivate
rm -rf test_env

Upload the universal tar:

twine upload dist/*.tar.gz

Or if you prefer the version specific wheel:

twine upload dist/*.whl

Clean up:

rm -rf *.egg-info
rm -rf build
rm -rf dist

Dependencies

$ mamba install grayskull
$ mamba install conda-build
$ mamba install anaconda-client

Additional resources can be found here.

Uploading a package to anaconda manually

Resources on this topic can be found here.

About

Scripts to automate distribution and packaging of python modules on PyPI and conda

Topics

Resources

License

Stars

Watchers

Forks

Languages