Skip to main content

library to control placement in a hierarchy

Project description


crush is a library to control placement in a hierarchy

GNU/Linux Installation

  • pip install crush

Other Installation

When using pip versions lower than 8.1 or other operating systems, compilation is necessary and packages must be installed first.

  • apt-get install -y gcc g++ python-pip python-all-dev libpython3-all-dev cmake libboost-all-dev libatomic-ops-dev
  • dnf / yum / zypper install -y gcc gcc-c++ python-pip python-devel python3-devel cmake make boost-devel libatomic_ops-devel
  • pip install crush


  • Get the code:

    git clone
    cd python-crush
  • Set up the development environment:

    deactivate || true ; source bootstrap
  • Run the tests:

    deactivate || true ; bash
  • Sync the libcrush submodule:

    git submodule update --remote libcrush
  • Run a single test:

    tox -e py27 -- -s -k test_one tests/
  • Check the documentation:

    python build_sphinx
    firefox build/html/index.html
  • Update requirements

    rm -fr virtualenv virtualenv virtualenv source virtualenv/bin/activate # update some module in requirements.txt tox # if that works pip install -r requirements.txt pip freeze -r requirements.txt > new-requirements.txt .tox/py3/bin/pip freeze -r requirements-dev.txt > new-requirements-dev.txt diff <(.tox/py27/bin/pip freeze -r requirements-dev.txt) new-requirements-dev.txt # all lines after the first “were added by pip freeze” are indirect dependencies remove pkg-resources==0.0.0

Release management

  • Prepare a new version
  • git checkout master ; git pull
  • version=1.0.0 ; perl -pi -e “s/^version.*/version = $version/” setup.cfg ; for i in 1 2 ; do python sdist ; amend=$(git log -1 –oneline | grep –quiet “version $version” && echo –amend) ; git commit $amend -m “version $version” ChangeLog setup.cfg ; git tag -a -f -m “version $version” $version ; done
  • Publish a new version
  • docker build –tag manylinux manylinux
  • docker run –rm -v $(pwd):/io manylinux /io/manylinux/ OR docker run –rm -v $(pwd):/io manylinux env PYBINS=/opt/python/cp27-cp27mu/bin /io/manylinux/
  • sudo chown -R $(id -u) wheelhouse/
  • twine upload –sign wheelhouse/crush
  • rm -fr dist
  • python sdist
  • twine upload –sign dist/*.tar.gz
  • git push ; git push –tags
  • pypi maintenance

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for crush, version 1.0.35
Filename, size File type Python version Upload date Hashes
Filename, size crush-1.0.35-cp27-cp27mu-manylinux1_x86_64.whl (2.5 MB) File type Wheel Python version cp27 Upload date Hashes View hashes
Filename, size crush-1.0.35-cp34-cp34m-manylinux1_x86_64.whl (2.5 MB) File type Wheel Python version cp34 Upload date Hashes View hashes
Filename, size crush-1.0.35-cp35-cp35m-manylinux1_x86_64.whl (2.6 MB) File type Wheel Python version cp35 Upload date Hashes View hashes
Filename, size crush-1.0.35-cp36-cp36m-manylinux1_x86_64.whl (2.6 MB) File type Wheel Python version cp36 Upload date Hashes View hashes
Filename, size crush-1.0.35.tar.gz (352.1 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page