This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description

mkcode is a system for performing make-style development tasks. It provides execution of dependencies, a console script for calling tasks, and automatic discovery of the distutils commands found in setup.py. It does not provide tools for compiled languages or complex nested builds (look to SCons or zc.buildout for those).

Tasks are defined as plain python functions, decorated with a special @task decorator. The name of the function becomes the name of the task, and that task may be called from the command-line via the mk script.

A file in the project’s root directory named mkfile.py contains all of the task definitions. The mk script, when invoked, imports the tasks.

Here is an example mkfile.py:

from mkcode import *

@task
def clean():
    """ Clean out all .pyc files in sub-directories """
    # This is *great* for getting rid of those stale .pyc files
    # that cause mysterious test failures.
    for pyc in path().relpath().walkfiles('*pyc'):
        print 'Removing:', pyc
        pyc.remove()

setup = namespace('setup')  # the distutils commands from 'setup.py'

# re-define the 'test' target
task('test', [clean, setup.test])

Here is how you run our new test target:

$ mk test

We can still run the original setuptools test target using the setup namepace:

$ mk setup.test

Please see mkfile.py in the distribution’s base directory for more task examples.

Namespaces

Tasks may belong to namespaces. Namespace tasks are called by joining the namespace and task name with a dot, as if you were referencing a Python object attribute:

# call the 'bar' task in the 'foo' namespace
$ mk foo.bar

Please see Jeff Shell’s post for examples of how namespaces are defined and populated.

Setuptools Integration

All of the commands exported by setuptools are available in the setup namespace. However, setuptools’ commands may also be called from the root namespace - invoking them does not require the command to be prefixed with setup. Therefore the following three commands are equivalent:

$ mk develop
$ mk setup.develop
$ python setup.py develop

Other Notes

Extra command-line parameters are passed through to their targets. The following two commands are equivalent:

$ mk rotate --help
$ python setup.py rotate --help

The mk script takes a number of command-line switches, notably -T, which lists all of the registered tasks, -n, which runs a task and its dependencies without executing them, and -f, which allows you to specify an alternative mkfile.

Known Issues

The program fails on vanilla setup.py files that define their own commands. The Python Imaging Library, PIL, is one example of this.

The mk develop command can choke upon first invocation when there is a new package version. In the meantime one can fall back to the setuptools method.

Acknowledgments

This program was heavily inspired by Jeff Shell’s in-house build system. The example targets Jeff provided should work in this system with little modification.

Path support is greatly enhanced by Jason Orendorff’s excellent path module. I highly recommend it for all of your Python work.

Release History

Release History

0.2

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.1dev

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

TODO: Brief introduction on what you do with files - including link to relevant help section.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
mkcode-0.2-py2.4.egg (42.9 kB) Copy SHA256 Checksum SHA256 2.4 Egg Jun 12, 2007
mkcode-0.2.tar.gz (20.5 kB) Copy SHA256 Checksum SHA256 Source Jun 12, 2007
mkcode-0.2.zip (27.1 kB) Copy SHA256 Checksum SHA256 Source Jun 12, 2007

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS HPE HPE Development Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting