upgrade
-------

	The xix-utils upgrade module contains a useful function `upgrade` that
	can be used in projects that need special operations to take place when
	upgrading from one version to the latest.

	For a dummy example, see tests/doctests/upgrade_example.

		>>> from tests.doctests.upgrade_example import do_upgrade
		>>> do_upgrade('0.0.0')
		upgrading from 0.0.0
		upgrading from 0.0.1
		upgrading from 1.0.2
		upgrading from 1023.2
		>>> do_upgrade('0.0.1')
		upgrading from 0.0.1
		upgrading from 1.0.2
		upgrading from 1023.2
		>>> do_upgrade('0.0.5')
		upgrading from 1.0.2
		upgrading from 1023.2
		>>> do_upgrade('1023.2')
		upgrading from 1023.2

	A module can be passed to the function upgrade instead of a 
    namespace dictionary:

		>>> from xix.utils.upgrade import upgrade
		>>> from tests.doctests import upgrade_example
		>>> upgrade('0.0.5', upgrade_example)
		upgrading from 1.0.2
		upgrading from 1023.2

	Downgrade functions can be applied as well:

		>>> from xix.utils.upgrade import downgrade
		>>> downgrade('0.0.1', upgrade_example) # downgrade back to version 0.0.1
		downgrading to 1023.2
		downgrading to 1.0.2
		downgrading to 0.0.1

	Custom function prefixes can be given if you really so desire:

		>>> upgrade('0.0.2', upgrade_example, func_pfx='foo')
		foo 1.0.2
		foo 1023.2

	Ditto for downgrading

		>>> downgrade('0.0.2', upgrade_example, func_pfx='foo')
		foo 1023.2
		foo 1.0.2

