~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to tools/win32/file_version.py

  • Committer: Martin Pool
  • Date: 2005-06-27 01:36:22 UTC
  • Revision ID: mbp@sourcefrog.net-20050627013622-0d56be3e3105043e
Merge from aaron:

------------------------------------------------------------
revno: 763
committer: Aaron Bentley <abentley@panoramicfeedback.com>
timestamp: Thu 2005-06-23 17:30:28 -0400
message:
  Copy files in immutable stores directly.
------------------------------------------------------------
revno: 762
committer: Aaron Bentley <abentley@panoramicfeedback.com>
timestamp: Thu 2005-06-23 16:12:33 -0400
message:
  Fixed direct call of get_url in RemoteBranch.get_revision
------------------------------------------------------------
revno: 761
committer: Aaron Bentley <abentley@panoramicfeedback.com>
timestamp: Thu 2005-06-23 12:00:31 -0400
message:
  Added prefetch support to update_revisions
------------------------------------------------------------
revno: 760
committer: Aaron Bentley <abentley@panoramicfeedback.com>
timestamp: Thu 2005-06-23 11:57:54 -0400
message:
  Added cache support to branch and pull
------------------------------------------------------------
revno: 759
committer: Aaron Bentley <abentley@panoramicfeedback.com>
timestamp: Thu 2005-06-23 11:21:37 -0400
message:
  Added find_cached_branch to branch
------------------------------------------------------------
revno: 758
committer: Aaron Bentley <abentley@panoramicfeedback.com>
timestamp: Thu 2005-06-23 11:17:10 -0400
message:
  Added CachedStore type to reduce remote downloads

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/usr/bin/python
2
 
 
3
 
"""Get file version.
4
 
Written by Alexander Belchenko, 2006
5
 
"""
6
 
 
7
 
import os
8
 
 
9
 
import pywintypes   # from pywin32 (http://pywin32.sf.net)
10
 
import win32api     # from pywin32 (http://pywin32.sf.net)
11
 
 
12
 
 
13
 
__all__ = ['get_file_version', 'FileNotFound', 'VersionNotAvailable']
14
 
__docformat__ = "restructuredtext"
15
 
 
16
 
 
17
 
class FileNotFound(Exception):
18
 
    pass
19
 
 
20
 
class VersionNotAvailable(Exception):
21
 
    pass
22
 
 
23
 
 
24
 
def get_file_version(filename):
25
 
    """Get file version (windows properties)
26
 
    :param  filename:   path to file
27
 
    :return:            4-tuple with 4 version numbers
28
 
    """
29
 
    if not os.path.isfile(filename):
30
 
        raise FileNotFound
31
 
 
32
 
    try:
33
 
        version_info = win32api.GetFileVersionInfo(filename, '\\')
34
 
    except pywintypes.error:
35
 
        raise VersionNotAvailable
36
 
 
37
 
    return (divmod(version_info['FileVersionMS'], 65536) +
38
 
            divmod(version_info['FileVersionLS'], 65536))