changeset 306:e2e5157ff044

added src_version cache
author James Bergstra <bergstrj@iro.umontreal.ca>
date Tue, 10 Jun 2008 13:02:04 -0400
parents 410a6ef674ed
children 29c5ad01e9ce
files __init__.py
diffstat 1 files changed, 32 insertions(+), 28 deletions(-) [+]
line wrap: on
line diff
--- a/__init__.py	Tue Jun 10 11:07:20 2008 -0400
+++ b/__init__.py	Tue Jun 10 13:02:04 2008 -0400
@@ -29,38 +29,42 @@
     # NOTE
     #
     # If you find bugs in this function, please update the __src_version__
-    # function in pylearn, and email either theano-dev or pylearn-dev so that
-    # people can update their experiment dirs (the output of this function is
-    # meant to be hard-coded in external files).
+    # function in theano, pylearn, and email either theano-dev or pylearn-dev so
+    # that people can update their experiment dirs (the output of this function
+    # is meant to be hard-coded in external files).
     #
 
-    #print 'name:', __name__
-    location = _imp.find_module(__name__)[1]
-    #print 'location:', location
+    if not hasattr(__src_version__, 'rval'):
+        #print 'name:', __name__
+        location = _imp.find_module(__name__)[1]
+        #print 'location:', location
 
-    status = _subprocess.Popen(('hg','st'),cwd=location,stdout=_subprocess.PIPE).communicate()[0]
-    #status_codes = [line[0] for line in  if line and line[0] != '?']
-    for line in status.split('\n'):
-        if not line: continue
-        if line[0] != '?':
-            raise Exception('Uncommitted modification to "%s" in %s (%s)'
-                    %(line[2:], __name__,location))
-        if line[0] == '?' and line[-3:] == '.py':
-            raise Exception('Untracked file "%s" in %s (%s)'
-                    %(line[2:], __name__, location))
+        status = _subprocess.Popen(('hg','st'),cwd=location,stdout=_subprocess.PIPE).communicate()[0]
+        #status_codes = [line[0] for line in  if line and line[0] != '?']
+        for line in status.split('\n'):
+            if not line: continue
+            if line[0] != '?':
+                raise Exception('Uncommitted modification to "%s" in %s (%s)'
+                        %(line[2:], __name__,location))
+            if line[0] == '?' and line[-3:] == '.py':
+                raise Exception('Untracked file "%s" in %s (%s)'
+                        %(line[2:], __name__, location))
 
-    hg_id = _subprocess.Popen(('hg','id'),cwd=location,stdout=_subprocess.PIPE).communicate()[0]
+        hg_id = _subprocess.Popen(('hg','id'),cwd=location,stdout=_subprocess.PIPE).communicate()[0]
 
-    #This asserts my understanding of hg id return values
-    # There is mention in the doc that it might return two parent hash codes
-    # but I've never seen it, and I dont' know what it means or how it is
-    # formatted.
-    tokens = hg_id.split(' ')
-    assert len(tokens) <= 2
-    assert len(tokens) >= 1
-    assert tokens[0][-1] != '+' # the trailing + indicates uncommitted changes
-    if len(tokens) == 2:
-        assert tokens[1] == 'tip\n'
+        #This asserts my understanding of hg id return values
+        # There is mention in the doc that it might return two parent hash codes
+        # but I've never seen it, and I dont' know what it means or how it is
+        # formatted.
+        tokens = hg_id.split(' ')
+        assert len(tokens) <= 2
+        assert len(tokens) >= 1
+        assert tokens[0][-1] != '+' # the trailing + indicates uncommitted changes
+        if len(tokens) == 2:
+            assert tokens[1] == 'tip\n'
 
-    return tokens[0]
+        __src_version__.rval = tokens[0]
 
+    return __src_version__.rval
+
+