mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Moved version code out of __init__.py.
Moved everything except VERSION and a get_version() stub out of the top-level __init__.py, so that we're not importing all that stuff all the time. And because it's cleaner.
This commit is contained in:
		| @@ -1,53 +1,7 @@ | ||||
| import datetime | ||||
| import os | ||||
| import subprocess | ||||
|  | ||||
|  | ||||
| VERSION = (1, 5, 0, 'alpha', 0) | ||||
|  | ||||
|  | ||||
| def get_version(version=None): | ||||
|     """Derives a PEP386-compliant version number from VERSION.""" | ||||
|     if version is None: | ||||
|         version = VERSION | ||||
|     assert len(version) == 5 | ||||
|     assert version[3] in ('alpha', 'beta', 'rc', 'final') | ||||
|  | ||||
|     # Now build the two parts of the version number: | ||||
|     # main = X.Y[.Z] | ||||
|     # sub = .devN - for pre-alpha releases | ||||
|     #     | {a|b|c}N - for alpha, beta and rc releases | ||||
|  | ||||
|     parts = 2 if version[2] == 0 else 3 | ||||
|     main = '.'.join(str(x) for x in version[:parts]) | ||||
|  | ||||
|     sub = '' | ||||
|     if version[3] == 'alpha' and version[4] == 0: | ||||
|         git_changeset = get_git_changeset() | ||||
|         if git_changeset: | ||||
|             sub = '.dev%s' % git_changeset | ||||
|  | ||||
|     elif version[3] != 'final': | ||||
|         mapping = {'alpha': 'a', 'beta': 'b', 'rc': 'c'} | ||||
|         sub = mapping[version[3]] + str(version[4]) | ||||
|  | ||||
|     return main + sub | ||||
|  | ||||
|  | ||||
| def get_git_changeset(): | ||||
|     """Returns a numeric identifier of the latest git changeset. | ||||
|  | ||||
|     The result is the UTC timestamp of the changeset in YYYYMMDDHHMMSS format. | ||||
|     This value isn't guaranteed to be unique but collisions are very unlikely, | ||||
|     so it's sufficient for generating the development version numbers. | ||||
|     """ | ||||
|     repo_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) | ||||
|     git_show = subprocess.Popen('git show --pretty=format:%ct --quiet HEAD', | ||||
|             stdout=subprocess.PIPE, stderr=subprocess.PIPE, | ||||
|             shell=True, cwd=repo_dir, universal_newlines=True) | ||||
|     timestamp = git_show.communicate()[0].partition('\n')[0] | ||||
|     try: | ||||
|         timestamp = datetime.datetime.utcfromtimestamp(int(timestamp)) | ||||
|     except ValueError: | ||||
|         return None | ||||
|     return timestamp.strftime('%Y%m%d%H%M%S') | ||||
| def get_version(*args, **kwargs): | ||||
|     # Don't litter django/__init__.py with all the get_version stuff. | ||||
|     # Only import if it's actually called. | ||||
|     from django.utils.version import get_version | ||||
|     return get_version(*args, **kwargs) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user