提交 260f7392 authored 作者: gdesjardins's avatar gdesjardins

Re: Ticket #160

Old theano versioning system is deprecated with DWF's latest changes. Versioning is now handled through setup.py and mercurial hooks.
上级 1493864e
......@@ -83,70 +83,6 @@ if config.device.startswith('gpu'):
## import scalar_opt
import subprocess as _subprocess
import imp as _imp
def __src_version__():
"""Return compact identifier of module code.
@return: compact identifier of module code.
@rtype: string
@note: This function tries to establish that the source files and the repo
are synchronized. It raises an Exception if there are un-tracked '.py'
files, or if there are un-committed modifications. This implementation uses
"hg id" to establish this. The code returned by "hg id" is not affected by
hg pull, but pulling might remove the " tip" string which might have
appeared. This implementation ignores the " tip" information, and only
uses the code.
@note: This implementation is assumes that the import directory is under
version control by mercurial.
"""
#
# 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).
#
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))
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'
__src_version__.rval = tokens[0]
return __src_version__.rval
### This is defined here because it is designed to work across symbolic datatypes
# (Sparse and Tensor)
def dot(l, r):
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论