~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/osutils.py

  • Committer: Martin Pool
  • Date: 2009-07-29 03:08:32 UTC
  • mto: This revision was merged to the branch mainline in revision 4688.
  • Revision ID: mbp@sourcefrog.net-20090729030832-by29o7vio76uidhs
Give a warning when failing to load _chunks_to_lines_pyx

Show diffs side-by-side

added added

removed removed

Lines of Context:
881
881
    return parents
882
882
 
883
883
 
 
884
def _failed_to_load_extension(exception):
 
885
    """Handle failing to load a binary extension.
 
886
 
 
887
    This should be called from the ImportError block guarding the attempt to
 
888
    import the native extension.  If this function returns, the pure-Python
 
889
    implementation should be loaded instead::
 
890
 
 
891
    >>> try:
 
892
    >>>     import bzrlib._fictional_extension_pyx
 
893
    >>> except ImportError, e:
 
894
    >>>     bzrlib._failed_to_load_extension(e)
 
895
    >>>     import bzrlib._fictional_extension_py
 
896
    """
 
897
    # NB: This docstring is just an example, not a doctest, because doctest
 
898
    # currently can't cope with the use of lazy imports in this namespace --
 
899
    # mbp 20090729
 
900
   
 
901
    # we can't use trace.warning, because this can happen early in program
 
902
    # startup before the UIFactory etc is loaded and created; we don't use
 
903
    # Python warnings because they unhelpfully include the line where the
 
904
    # exception was reported, and it's not really a code deprecation warning
 
905
    # anyhow.
 
906
    sys.stderr.write(
 
907
            "bzr: warning: Failed to load compiled extension: "
 
908
            "%s\n" 
 
909
            "    Bazaar can run, but performance may be reduced.\n"
 
910
            "    Check Bazaar is correctly installed.\n"
 
911
            % (exception,))
 
912
 
 
913
 
884
914
try:
885
915
    from bzrlib._chunks_to_lines_pyx import chunks_to_lines
886
 
except ImportError:
 
916
except ImportError, e:
 
917
    _failed_to_load_extension(e)
887
918
    from bzrlib._chunks_to_lines_py import chunks_to_lines
888
919
 
889
920