~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/transport/__init__.py

  • Committer: John Arbash Meinel
  • Date: 2006-04-26 20:52:02 UTC
  • mto: This revision was merged to the branch mainline in revision 1752.
  • Revision ID: john@arbash-meinel.com-20060426205202-3af07a6ffbe53e45
Not all of the registered transports use :// as part of their path, specifically memory:/

Show diffs side-by-side

added added

removed removed

Lines of Context:
262
262
        This function will only be defined for Transports which have a
263
263
        physical local filesystem representation.
264
264
        """
265
 
        # TODO: jam 20060426 Should this raise 
 
265
        # TODO: jam 20060426 Should this raise NotLocalUrl instead?
266
266
        raise errors.TransportNotPossible('This is not a LocalTransport,'
267
267
            ' so there is no local representation for a path')
268
268
 
659
659
    # handler for the scheme?
660
660
    global _protocol_handlers
661
661
    if base is None:
662
 
        base = u'.'
663
 
    else:
664
 
        base = unicode(base)
 
662
        base = '.'
 
663
    
 
664
    for proto, factory_list in _protocol_handlers.iteritems():
 
665
        if proto is not None and base.startswith(proto):
 
666
            t = _try_transport_factories(base, factory_list)
 
667
            if t:
 
668
                return t
665
669
 
666
 
    # Now that we have a unicode string, it really should be a URL string
667
670
    m = _urlRE.match(base)
668
671
    if m:
669
 
        # This is a real URL, so convert it back into a string
670
 
        base = str(base)
 
672
        # This looks like a URL, but we weren't able to 
 
673
        # instantiate it as such raise an appropriate error
 
674
        raise InvalidURL(base, 
 
675
            'Unable to access URL (protocol: %s)' % m.group('proto'))
671
676
    else:
672
677
        # This is a local unicode path, convert it to a url
673
678
        new_base = osutils.local_path_to_url(base)
674
679
        mutter('converting os path %r => url %s' , base, new_base)
675
680
        base = new_base
676
 
    
677
 
    for proto, factory_list in _protocol_handlers.iteritems():
678
 
        if proto is not None and base.startswith(proto):
679
 
            t = _try_transport_factories(base, factory_list)
680
 
            if t:
681
 
                return t
 
681
 
682
682
    # The default handler is the filesystem handler, stored as protocol None
683
683
    return _try_transport_factories(base, _protocol_handlers[None])
684
684