~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/lazy_import.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2008-04-07 07:52:50 UTC
  • mfrom: (3340.1.1 208418-1.4)
  • Revision ID: pqm@pqm.ubuntu.com-20080407075250-phs53xnslo8boaeo
Return the correct knit serialisation method in _StreamAccess.
        (Andrew Bennetts, Martin Pool, Robert Collins)

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 ')