~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to common.py

  • Committer: John Arbash Meinel
  • Date: 2005-06-30 18:06:42 UTC
  • mto: (0.5.85) (1185.82.1 bzr-w-changeset)
  • mto: This revision was merged to the branch mainline in revision 1738.
  • Revision ID: john@arbash-meinel.com-20050630180642-119a64e639d9f7ac
(broken) Working on changing the processing to use a ChangesetTree.

Show diffs side-by-side

added added

removed removed

Lines of Context:
40
40
 
41
41
    return old, new
42
42
 
 
43
class ChangesetTree(object):
 
44
    """This class is designed to take a base tree, and re-create
 
45
    a final tree based on the information contained within a
 
46
    changeset.
 
47
    """
 
48
 
 
49
    def __init__(self, branch, changeset_info):
 
50
        """Initialize this ChangesetTree.
 
51
 
 
52
        :param branch:  This is where information will be acquired
 
53
                        and updated.
 
54
        :param changeset_info:  Information about a given changeset,
 
55
                                so that we can identify the base,
 
56
                                and other information.
 
57
        """
 
58
        self.branch = branch
 
59
        self.changeset_info = changeset_info
 
60
 
 
61
        self._build_tree()
 
62
 
 
63
    def _build_tree(self):
 
64
        """Build the final description of the tree, based on
 
65
        the changeset_info object.
 
66
        """
 
67
        
 
68
def format_highres_date(t, offset=0):
 
69
    """Format a date, such that it includes higher precision in the
 
70
    seconds field.
 
71
 
 
72
    :param t:   UTC time in fractional seconds
 
73
    :type t: float
 
74
    :param offset:  The timezone offset in integer seconds
 
75
    :type offset: int
 
76
 
 
77
    >>> from bzrlib.osutils import format_date
 
78
    >>> format_date(1120153132.350850105, 0)
 
79
    'Thu 2005-06-30 17:38:52 +0000'
 
80
    >>> format_highres_date(1120153132.350850105, 0)
 
81
    'Thu 2005-06-30 17:38:52.350850105 +0000'
 
82
    >>> format_date(1120153132.350850105, -5*3600)
 
83
    'Thu 2005-06-30 12:38:52 -0500'
 
84
    >>> format_highres_date(1120153132.350850105, -5*3600)
 
85
    'Thu 2005-06-30 12:38:52.350850105 -0500'
 
86
    """
 
87
    from bzrlib.errors import BzrError
 
88
    import time
 
89
    assert isinstance(t, float)
 
90
    
 
91
    # This has to be formatted for "original" date, so that the
 
92
    # revision XML entry will be reproduced faithfully.
 
93
    if offset == None:
 
94
        offset = 0
 
95
    tt = time.gmtime(t + offset)
 
96
 
 
97
    return (time.strftime("%a %Y-%m-%d %H:%M:%S", tt)
 
98
            + ('%.9f' % (t - int(t)))[1:] # Get the high-res seconds, but ignore the 0
 
99
            + ' %+03d%02d' % (offset / 3600, (offset / 60) % 60))
 
100
 
 
101
def unpack_highres_date(date):
 
102
    """This takes the high-resolution date stamp, and
 
103
    converts it back into the tuple (timestamp, timezone)
 
104
    Where timestamp is in real seconds, and timezone is an integer
 
105
    number of seconds offset.
 
106
 
 
107
    :param date: A date formated by format_highres_date
 
108
    :type date: string
 
109
 
 
110
    """
 
111
 
 
112
if __name__ == '__main__':
 
113
    import doctest
 
114
    doctest.testmod()