Skip to main content

Write shell-like python scripts to control continuous builds.

Project description

I used to write small bash scripts that created the virtualenv and executed the python setup.py and nosetests commands using one of several Python versions I keep installed on my build machines. But bash scripts aren’t supported on Windows, so I want to write this script in Python instead.

cish is a set of utility functions to write bash-like python scripts that deal with several installed python interpreters.

Let’s get going!

import cish
cish.rm("build")
cish.default.pip("install", "nose")
cish.default.python("setup.py", "build")
cish.default.nosetests()

This will delete the build directory if it exists with all content, install nose, and build and test the package.

default is an ‘environment’ which consists of a python interpreter, library path, and utilities such as pip. default is the environent of the interpreter executing the script itself.

We can also use a different interpreter:

import cish
env = cish.from_interpreter("path/to/python")
env.python("setup.py", "build")
env.nosetests()

The installation location of the python interpreters is often dependent on the test machine. We can place a simple JSON file in one of several locations, for example in /etc/cish.json, to specifiy their location:

{
    "2.6.9": "/opt/python2.6.9/bin/python",
    "2.7.8": "/opt/python2.7.8/bin/python"
}

We can then choose the interpeter in our script using, say, an environment variable set by jenkins:

import cish, os
env = cish.from_config()[os.environ["PYTHON_VERSION"]]
env.python("setup.py", "build")

virtualenv is very easy too:

import cish
venv = cish.default.virtualenv("optional/location")
venv.pip("install", "package_to_install_inside_virtualenv")

Bug Reports and other contributions

This project is hosted here cish github page.

Alternatives

You might want to look at sh a cool library to run executables without dealing with subprocess directly. It has a far wider scope than cish but lacks the abstraction we offer for different python installations and OS specific file extensions and installation locations.

Project details


Download files

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

Source Distribution

cish-0.1.0.zip (13.8 kB view details)

Uploaded Source

File details

Details for the file cish-0.1.0.zip.

File metadata

  • Download URL: cish-0.1.0.zip
  • Upload date:
  • Size: 13.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for cish-0.1.0.zip
Algorithm Hash digest
SHA256 2b8b8d6ccd1ee1649e7b217d5035862a0ffc5c3734a68a1cc2b90335ad95fb43
MD5 e0746fd845dd59a66189f08d8d699cf2
BLAKE2b-256 773cccd75335cdb158962153cd919c698ec8c039a0c755b4c4c6f402a601fae8

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page