Mercurial > pylearn
annotate __init__.py @ 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 | 9ebc960260c5 |
rev | line source |
---|---|
35 | 1 import filetensor |
2 import nnet_ops | |
224
2be51c13b55f
added LookupList to pylearn namespace
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
35
diff
changeset
|
3 |
2be51c13b55f
added LookupList to pylearn namespace
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
35
diff
changeset
|
4 from lookup_list import LookupList |
2be51c13b55f
added LookupList to pylearn namespace
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
35
diff
changeset
|
5 |
301
57c45df381f1
added source-version function, close ticket #44
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
224
diff
changeset
|
6 |
57c45df381f1
added source-version function, close ticket #44
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
224
diff
changeset
|
7 |
57c45df381f1
added source-version function, close ticket #44
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
224
diff
changeset
|
8 import subprocess as _subprocess |
57c45df381f1
added source-version function, close ticket #44
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
224
diff
changeset
|
9 import imp as _imp |
57c45df381f1
added source-version function, close ticket #44
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
224
diff
changeset
|
10 def __src_version__(): |
57c45df381f1
added source-version function, close ticket #44
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
224
diff
changeset
|
11 """Return compact identifier of module code. |
57c45df381f1
added source-version function, close ticket #44
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
224
diff
changeset
|
12 |
57c45df381f1
added source-version function, close ticket #44
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
224
diff
changeset
|
13 @return: compact identifier of module code. |
57c45df381f1
added source-version function, close ticket #44
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
224
diff
changeset
|
14 @rtype: string |
57c45df381f1
added source-version function, close ticket #44
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
224
diff
changeset
|
15 |
57c45df381f1
added source-version function, close ticket #44
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
224
diff
changeset
|
16 @note: This function tries to establish that the source files and the repo |
57c45df381f1
added source-version function, close ticket #44
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
224
diff
changeset
|
17 are syncronized. It raises an Exception if there are un-tracked '.py' |
57c45df381f1
added source-version function, close ticket #44
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
224
diff
changeset
|
18 files, or if there are un-committed modifications. This implementation uses |
57c45df381f1
added source-version function, close ticket #44
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
224
diff
changeset
|
19 "hg id" to establish this. The code returned by "hg id" is not affected by |
57c45df381f1
added source-version function, close ticket #44
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
224
diff
changeset
|
20 hg pull, but pulling might remove the " tip" string which might have |
57c45df381f1
added source-version function, close ticket #44
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
224
diff
changeset
|
21 appeared. This implementation ignores the " tip" information, and only |
57c45df381f1
added source-version function, close ticket #44
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
224
diff
changeset
|
22 uses the code. |
57c45df381f1
added source-version function, close ticket #44
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
224
diff
changeset
|
23 |
57c45df381f1
added source-version function, close ticket #44
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
224
diff
changeset
|
24 @note: This implementation is assumes that the import directory is under |
57c45df381f1
added source-version function, close ticket #44
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
224
diff
changeset
|
25 version control by mercurial. |
57c45df381f1
added source-version function, close ticket #44
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
224
diff
changeset
|
26 |
57c45df381f1
added source-version function, close ticket #44
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
224
diff
changeset
|
27 """ |
303
410a6ef674ed
added comment to source-version function
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
302
diff
changeset
|
28 # |
410a6ef674ed
added comment to source-version function
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
302
diff
changeset
|
29 # NOTE |
410a6ef674ed
added comment to source-version function
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
302
diff
changeset
|
30 # |
410a6ef674ed
added comment to source-version function
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
302
diff
changeset
|
31 # If you find bugs in this function, please update the __src_version__ |
306
e2e5157ff044
added src_version cache
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
303
diff
changeset
|
32 # function in theano, pylearn, and email either theano-dev or pylearn-dev so |
e2e5157ff044
added src_version cache
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
303
diff
changeset
|
33 # that people can update their experiment dirs (the output of this function |
e2e5157ff044
added src_version cache
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
303
diff
changeset
|
34 # is meant to be hard-coded in external files). |
303
410a6ef674ed
added comment to source-version function
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
302
diff
changeset
|
35 # |
410a6ef674ed
added comment to source-version function
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
302
diff
changeset
|
36 |
306
e2e5157ff044
added src_version cache
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
303
diff
changeset
|
37 if not hasattr(__src_version__, 'rval'): |
e2e5157ff044
added src_version cache
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
303
diff
changeset
|
38 #print 'name:', __name__ |
e2e5157ff044
added src_version cache
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
303
diff
changeset
|
39 location = _imp.find_module(__name__)[1] |
e2e5157ff044
added src_version cache
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
303
diff
changeset
|
40 #print 'location:', location |
301
57c45df381f1
added source-version function, close ticket #44
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
224
diff
changeset
|
41 |
306
e2e5157ff044
added src_version cache
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
303
diff
changeset
|
42 status = _subprocess.Popen(('hg','st'),cwd=location,stdout=_subprocess.PIPE).communicate()[0] |
e2e5157ff044
added src_version cache
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
303
diff
changeset
|
43 #status_codes = [line[0] for line in if line and line[0] != '?'] |
e2e5157ff044
added src_version cache
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
303
diff
changeset
|
44 for line in status.split('\n'): |
e2e5157ff044
added src_version cache
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
303
diff
changeset
|
45 if not line: continue |
e2e5157ff044
added src_version cache
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
303
diff
changeset
|
46 if line[0] != '?': |
e2e5157ff044
added src_version cache
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
303
diff
changeset
|
47 raise Exception('Uncommitted modification to "%s" in %s (%s)' |
e2e5157ff044
added src_version cache
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
303
diff
changeset
|
48 %(line[2:], __name__,location)) |
e2e5157ff044
added src_version cache
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
303
diff
changeset
|
49 if line[0] == '?' and line[-3:] == '.py': |
e2e5157ff044
added src_version cache
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
303
diff
changeset
|
50 raise Exception('Untracked file "%s" in %s (%s)' |
e2e5157ff044
added src_version cache
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
303
diff
changeset
|
51 %(line[2:], __name__, location)) |
301
57c45df381f1
added source-version function, close ticket #44
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
224
diff
changeset
|
52 |
306
e2e5157ff044
added src_version cache
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
303
diff
changeset
|
53 hg_id = _subprocess.Popen(('hg','id'),cwd=location,stdout=_subprocess.PIPE).communicate()[0] |
301
57c45df381f1
added source-version function, close ticket #44
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
224
diff
changeset
|
54 |
306
e2e5157ff044
added src_version cache
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
303
diff
changeset
|
55 #This asserts my understanding of hg id return values |
e2e5157ff044
added src_version cache
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
303
diff
changeset
|
56 # There is mention in the doc that it might return two parent hash codes |
e2e5157ff044
added src_version cache
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
303
diff
changeset
|
57 # but I've never seen it, and I dont' know what it means or how it is |
e2e5157ff044
added src_version cache
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
303
diff
changeset
|
58 # formatted. |
e2e5157ff044
added src_version cache
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
303
diff
changeset
|
59 tokens = hg_id.split(' ') |
e2e5157ff044
added src_version cache
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
303
diff
changeset
|
60 assert len(tokens) <= 2 |
e2e5157ff044
added src_version cache
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
303
diff
changeset
|
61 assert len(tokens) >= 1 |
e2e5157ff044
added src_version cache
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
303
diff
changeset
|
62 assert tokens[0][-1] != '+' # the trailing + indicates uncommitted changes |
e2e5157ff044
added src_version cache
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
303
diff
changeset
|
63 if len(tokens) == 2: |
e2e5157ff044
added src_version cache
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
303
diff
changeset
|
64 assert tokens[1] == 'tip\n' |
301
57c45df381f1
added source-version function, close ticket #44
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
224
diff
changeset
|
65 |
306
e2e5157ff044
added src_version cache
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
303
diff
changeset
|
66 __src_version__.rval = tokens[0] |
301
57c45df381f1
added source-version function, close ticket #44
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
224
diff
changeset
|
67 |
306
e2e5157ff044
added src_version cache
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
303
diff
changeset
|
68 return __src_version__.rval |
e2e5157ff044
added src_version cache
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
303
diff
changeset
|
69 |
e2e5157ff044
added src_version cache
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
303
diff
changeset
|
70 |