Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(2373)

Unified Diff: venv/Lib/site-packages/django/utils/version.py

Issue 554060043: testMe
Patch Set: Created 2 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « venv/Lib/site-packages/django/utils/tree.py ('k') | venv/Lib/site-packages/django/utils/xmlutils.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: venv/Lib/site-packages/django/utils/version.py
===================================================================
new file mode 100644
--- /dev/null
+++ b/venv/Lib/site-packages/django/utils/version.py
@@ -0,0 +1,81 @@
+from __future__ import unicode_literals
+
+import datetime
+import os
+import subprocess
+
+from django.utils.lru_cache import lru_cache
+
+
+def get_version(version=None):
+ "Returns a PEP 440-compliant version number from VERSION."
+ version = get_complete_version(version)
+
+ # Now build the two parts of the version number:
+ # main = X.Y[.Z]
+ # sub = .devN - for pre-alpha releases
+ # | {a|b|rc}N - for alpha, beta, and rc releases
+
+ main = get_main_version(version)
+
+ 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': 'rc'}
+ sub = mapping[version[3]] + str(version[4])
+
+ return str(main + sub)
+
+
+def get_main_version(version=None):
+ "Returns main version (X.Y[.Z]) from VERSION."
+ version = get_complete_version(version)
+ parts = 2 if version[2] == 0 else 3
+ return '.'.join(str(x) for x in version[:parts])
+
+
+def get_complete_version(version=None):
+ """Returns a tuple of the django version. If version argument is non-empty,
+ then checks for correctness of the tuple provided.
+ """
+ if version is None:
+ from django import VERSION as version
+ else:
+ assert len(version) == 5
+ assert version[3] in ('alpha', 'beta', 'rc', 'final')
+
+ return version
+
+
+def get_docs_version(version=None):
+ version = get_complete_version(version)
+ if version[3] != 'final':
+ return 'dev'
+ else:
+ return '%d.%d' % version[:2]
+
+
+@lru_cache()
+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_log = subprocess.Popen(
+ 'git log --pretty=format:%ct --quiet -1 HEAD',
+ stdout=subprocess.PIPE, stderr=subprocess.PIPE,
+ shell=True, cwd=repo_dir, universal_newlines=True,
+ )
+ timestamp = git_log.communicate()[0]
+ try:
+ timestamp = datetime.datetime.utcfromtimestamp(int(timestamp))
+ except ValueError:
+ return None
+ return timestamp.strftime('%Y%m%d%H%M%S')
« no previous file with comments | « venv/Lib/site-packages/django/utils/tree.py ('k') | venv/Lib/site-packages/django/utils/xmlutils.py » ('j') | no next file with comments »

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b