mirror of
https://github.com/boostorg/python.git
synced 2026-01-19 04:22:16 +00:00
https://svn.boost.org/svn/boost/trunk ........ r43417 | danieljames | 2008-02-26 22:04:55 +0000 (Tue, 26 Feb 2008) | 2 lines Fix a link to Boost.Bimap. ........ r43418 | danieljames | 2008-02-26 22:07:25 +0000 (Tue, 26 Feb 2008) | 2 lines Change another link that's no longer in the repository to link to the website. ........ r43422 | danieljames | 2008-02-27 18:51:14 +0000 (Wed, 27 Feb 2008) | 1 line Fix broken copyright urls. Fixes #1573. ........ r43423 | danieljames | 2008-02-27 19:22:01 +0000 (Wed, 27 Feb 2008) | 1 line Fix incorrect links to copyright of the form 'http:#www.boost.org ........ [SVN r43425]
79 lines
2.6 KiB
Python
79 lines
2.6 KiB
Python
# Copyright Bruno da Silva de Oliveira 2003. Use, modification and
|
|
# distribution is subject to the Boost Software License, Version 1.0.
|
|
# (See accompanying file LICENSE_1_0.txt or copy at
|
|
# http://www.boost.org/LICENSE_1_0.txt)
|
|
|
|
from __future__ import generators
|
|
import string
|
|
import sys
|
|
|
|
#==============================================================================
|
|
# enumerate
|
|
#==============================================================================
|
|
def enumerate(seq):
|
|
i = 0
|
|
for x in seq:
|
|
yield i, x
|
|
i += 1
|
|
|
|
|
|
#==============================================================================
|
|
# makeid
|
|
#==============================================================================
|
|
_valid_chars = string.ascii_letters + string.digits + '_'
|
|
_valid_chars = dict(zip(_valid_chars, _valid_chars))
|
|
|
|
def makeid(name):
|
|
'Returns the name as a valid identifier'
|
|
if type(name) != str:
|
|
print type(name), name
|
|
newname = []
|
|
for char in name:
|
|
if char not in _valid_chars:
|
|
char = '_'
|
|
newname.append(char)
|
|
newname = ''.join(newname)
|
|
# avoid duplications of '_' chars
|
|
names = [x for x in newname.split('_') if x]
|
|
return '_'.join(names)
|
|
|
|
|
|
#==============================================================================
|
|
# remove_duplicated_lines
|
|
#==============================================================================
|
|
def remove_duplicated_lines(text):
|
|
includes = text.splitlines()
|
|
d = dict([(include, 0) for include in includes])
|
|
includes = d.keys()
|
|
includes.sort()
|
|
return '\n'.join(includes)
|
|
|
|
|
|
#==============================================================================
|
|
# left_equals
|
|
#==============================================================================
|
|
def left_equals(s):
|
|
s = '// %s ' % s
|
|
return s + ('='*(80-len(s))) + '\n'
|
|
|
|
|
|
#==============================================================================
|
|
# post_mortem
|
|
#==============================================================================
|
|
def post_mortem():
|
|
|
|
def info(type, value, tb):
|
|
if hasattr(sys, 'ps1') or not sys.stderr.isatty():
|
|
# we are in interactive mode or we don't have a tty-like
|
|
# device, so we call the default hook
|
|
sys.__excepthook__(type, value, tb)
|
|
else:
|
|
import traceback, pdb
|
|
# we are NOT in interactive mode, print the exception...
|
|
traceback.print_exception(type, value, tb)
|
|
print
|
|
# ...then start the debugger in post-mortem mode.
|
|
pdb.pm()
|
|
|
|
sys.excepthook = info
|