/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/lazy_import.py

  • Committer: John Arbash Meinel
  • Date: 2007-11-30 23:18:15 UTC
  • mto: This revision was merged to the branch mainline in revision 3072.
  • Revision ID: john@arbash-meinel.com-20071130231815-0r6ce70307kmv28r
Use a Graph.heads() check to determine if the ancestries are compatible.
Whether we should do nothing because source is already ahead,
raise an exception because we have diverged,
or move forward because the new revision is a tip revision.

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
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
 
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
17
"""Functionality to create lazy evaluation objects.
18
18
 
149
149
 
150
150
        :param scope: The scope that objects should be imported into.
151
151
            Typically this is globals()
152
 
        :param name: The variable name. Often this is the same as the
 
152
        :param name: The variable name. Often this is the same as the 
153
153
            module_path. 'bzrlib'
154
154
        :param module_path: A list for the fully specified module path
155
155
            ['bzrlib', 'foo', 'bar']
157
157
            None, indicating the module is being imported.
158
158
        :param children: Children entries to be imported later.
159
159
            This should be a map of children specifications.
160
 
            {'foo':(['bzrlib', 'foo'], None,
 
160
            {'foo':(['bzrlib', 'foo'], None, 
161
161
                {'bar':(['bzrlib', 'foo', 'bar'], None {})})
162
162
            }
163
163
        Examples:
170
170
            from foo import bar, baz would get translated into 2 import
171
171
            requests. On for 'name=bar' and one for 'name=baz'
172
172
        """
173
 
        if (member is not None) and children:
174
 
            raise ValueError('Cannot supply both a member and children')
 
173
        if member is not None:
 
174
            assert not children, \
 
175
                'Cannot supply both a member and children'
175
176
 
176
177
        object.__setattr__(self, '_import_replacer_children', children)
177
178
        object.__setattr__(self, '_member', member)
259
260
 
260
261
        :param import_str: The import string to process
261
262
        """
262
 
        if not import_str.startswith('import '):
263
 
            raise ValueError('bad import string %r' % (import_str,))
 
263
        assert import_str.startswith('import ')
264
264
        import_str = import_str[len('import '):]
265
265
 
266
266
        for path in import_str.split(','):
305
305
 
306
306
        :param from_str: The import string to process
307
307
        """
308
 
        if not from_str.startswith('from '):
309
 
            raise ValueError('bad from/import %r' % from_str)
 
308
        assert from_str.startswith('from ')
310
309
        from_str = from_str[len('from '):]
311
310
 
312
311
        from_module, import_list = from_str.split(' import ')