-
-
Save aniongithub/b4d571c81c7ae459b2066ef6eef3a06b to your computer and use it in GitHub Desktop.
Including git version in setup.py files. (Requires at least _one_ tag in the repo) Normally used to make things like, "python setup.py sdist" give you a predictable name for files. Normally used with tags on the repo like 0.1 or 2.3.0. This fork will tag all non-git working folders as a "dev" version.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from setuptools import setup | |
# from https://gist.github.com/dcreager/300803 with "-dirty" support added | |
from version import get_git_version | |
# From http://bugs.python.org/issue15881 | |
try: | |
import multiprocessing | |
except ImportError: | |
pass | |
""" | |
This is the wopwop package, it does something nifty I'm sure | |
""" | |
setup( | |
name='keypit', | |
url="wop", | |
maintainer="blah", | |
maintainer_email="[email protected]", | |
version=get_git_version(), | |
long_description=__doc__, | |
package_dir={'': 'src'}, | |
packages=[ | |
'rme', | |
], | |
include_package_data=True, | |
setup_requires=['nose>=1.2'], | |
tests_require=[ | |
'coverage', | |
'Flask-Testing' | |
], | |
test_suite='nose.collector', | |
install_requires=[ | |
'Flask', | |
'Jinja2', | |
'Werkzeug', | |
'pycrypto', | |
'gunicorn' | |
] | |
) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf-8 -*- | |
# Author: Douglas Creager <[email protected]> | |
# with motifications by Ani Balasubramaniam <[email protected]> | |
# This file is placed into the public domain. | |
# Calculates the current version number. If possible, this is the | |
# output of “git describe”, modified to conform to the versioning | |
# scheme that setuptools uses. If “git describe” returns an error | |
# (most likely because we're in an unpacked copy of a release tarball, | |
# rather than in a git working copy), then we fall back on reading the | |
# contents of the RELEASE-VERSION file. | |
# | |
# To use this script, simply import it your setup.py file, and use the | |
# results of get_git_version() as your package version: | |
# | |
# from version import * | |
# | |
# setup( | |
# version=get_git_version(), | |
# . | |
# . | |
# . | |
# ) | |
# | |
# | |
__all__ = ("get_git_version") | |
from subprocess import Popen, PIPE | |
def call_git_describe(abbrev): | |
try: | |
p = Popen(['git', 'describe', '--abbrev=%d' % abbrev], | |
stdout=PIPE, stderr=PIPE) | |
p.stderr.close() | |
line = p.stdout.readlines()[0] | |
return line.strip() | |
except: | |
return None | |
def is_dirty(): | |
try: | |
p = Popen(["git", "diff-index", "--name-only", "HEAD"], | |
stdout=PIPE, stderr=PIPE) | |
p.stderr.close() | |
lines = p.stdout.readlines() | |
return len(lines) > 0 | |
except: | |
return False | |
def write_release_version(version): | |
f = open("RELEASE-VERSION", "w") | |
f.write("%s\n" % version) | |
f.close() | |
def get_git_version(abbrev=7): | |
# First try to get the current version using “git describe”. | |
version = call_git_describe(abbrev) | |
# If that doesn't work, call it "dev" | |
if version is None: | |
version = "dev" | |
if is_dirty(): | |
version += "-dirty" | |
return version | |
if __name__ == "__main__": | |
print(get_git_version()) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment