~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to tools/bzr_epydoc_uid.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2009-05-06 04:07:37 UTC
  • mfrom: (4332.1.1 integration)
  • Revision ID: pqm@pqm.ubuntu.com-20090506040737-tdiqyojy2uia33qb
Make it easier to blackbox test rules (Marius Kruger)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Copyright (C) 2007 Canonical Ltd
 
2
#
 
3
# This program is free software; you can redistribute it and/or modify
 
4
# it under the terms of the GNU General Public License as published by
 
5
# the Free Software Foundation; either version 2 of the License, or
 
6
# (at your option) any later version.
 
7
#
 
8
# This program is distributed in the hope that it will be useful,
 
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
11
# GNU General Public License for more details.
 
12
#
 
13
# You should have received a copy of the GNU General Public License
 
14
# along with this program; if not, write to the Free Software
 
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
16
 
 
17
"""Monkey patch to make epydoc work with bzrlib's lazy imports."""
 
18
 
 
19
import epydoc.uid
 
20
 
 
21
import bzrlib.lazy_import
 
22
 
 
23
 
 
24
_ObjectUID = epydoc.uid.ObjectUID
 
25
_ScopeReplacer = bzrlib.lazy_import.ScopeReplacer
 
26
 
 
27
 
 
28
class ObjectUID(_ObjectUID):
 
29
 
 
30
    def __init__(self, obj):
 
31
        if isinstance(obj, _ScopeReplacer):
 
32
            # The isinstance will trigger a replacement if it is a real
 
33
            # _BzrScopeReplacer, but the local object won't know about it, so
 
34
            # replace it locally.
 
35
            obj = object.__getattribute__(obj, '_real_obj')
 
36
        _ObjectUID.__init__(self, obj)
 
37
 
 
38
 
 
39
epydoc.uid.ObjectUID = ObjectUID
 
40
 
 
41
 
 
42
_ScopeReplacer._should_proxy = True
 
43