From e61fa0a1e4c6598f286f54772c7e065c49dc17ba Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Fri, 22 Oct 1993 13:56:35 +0000 Subject: [PATCH] * profile.py, pdb.py: added help() function * builtin.py: b/w compat for builtin -> __builtin__ name change * string.py: added atof() and atol() and corresponding exceptions * test_types.py: added test for list sort with user comparison function --- Lib/pdb.py | 12 ++++++++++++ Lib/profile.py | 12 ++++++++++++ Lib/string.py | 34 +++++++++++++++++++++++++++++++++- Lib/stringold.py | 34 +++++++++++++++++++++++++++++++++- Lib/test/test_types.py | 3 +++ 5 files changed, 93 insertions(+), 2 deletions(-) diff --git a/Lib/pdb.py b/Lib/pdb.py index 06f5cf8c7b5..f415e409f1c 100755 --- a/Lib/pdb.py +++ b/Lib/pdb.py @@ -312,3 +312,15 @@ def test(): import linecache linecache.checkcache() run(TESTCMD) + +# print help +def help(): + for dirname in sys.path: + fullname = os.path.join(dirname, 'pdb.doc') + if os.path.exists(fullname): + sts = os.system('${PAGER-more} '+fullname) + if sts: print '*** Pager exit status:', sts + break + else: + print 'Sorry, can\'t find the help file "pdb.doc"', + print 'along the Python search path' diff --git a/Lib/profile.py b/Lib/profile.py index 000e79a090c..19b0476f395 100755 --- a/Lib/profile.py +++ b/Lib/profile.py @@ -377,3 +377,15 @@ def debug(): # test command def test(): run('import x; x.main()') + +# print help +def help(): + for dirname in sys.path: + fullname = os.path.join(dirname, 'profile.doc') + if os.path.exists(fullname): + sts = os.system('${PAGER-more} '+fullname) + if sts: print '*** Pager exit status:', sts + break + else: + print 'Sorry, can\'t find the help file "profile.doc"', + print 'along the Python search path' diff --git a/Lib/string.py b/Lib/string.py index ccc10431e4c..764c396bb07 100644 --- a/Lib/string.py +++ b/Lib/string.py @@ -116,8 +116,26 @@ def find(*args): except index_error: return -1 +# Convert string to float +atof_error = 'non-float argument to string.atof' +def atof(str): + import regex + sign = '' + s = str + if s and s[0] in '+-': + sign = s[0] + s = s[1:] + if not s: raise atof_error, str + while s[0] == '0' and len(s) > 1 and s[1] in digits: s = s[1:] + if regex.match('[0-9]*\(\.[0-9]*\)?\([eE][-+]?[0-9]+\)?', s) != len(s): + raise atof_error, str + try: + return eval(sign + s) + except SyntaxError: + raise atof_error, str + # Convert string to integer -atoi_error = 'non-numeric argument to string.atoi' +atoi_error = 'non-integer argument to string.atoi' def atoi(str): sign = '' s = str @@ -130,6 +148,20 @@ def atoi(str): if c not in digits: raise atoi_error, str return eval(sign + s) +# Convert string to long integer +atol_error = 'non-integer argument to string.atol' +def atol(str): + sign = '' + s = str + if s and s[0] in '+-': + sign = s[0] + s = s[1:] + if not s: raise atoi_error, str + while s[0] == '0' and len(s) > 1: s = s[1:] + for c in s: + if c not in digits: raise atoi_error, str + return eval(sign + s + 'L') + # Left-justify a string def ljust(s, width): n = width - len(s) diff --git a/Lib/stringold.py b/Lib/stringold.py index ccc10431e4c..764c396bb07 100644 --- a/Lib/stringold.py +++ b/Lib/stringold.py @@ -116,8 +116,26 @@ def find(*args): except index_error: return -1 +# Convert string to float +atof_error = 'non-float argument to string.atof' +def atof(str): + import regex + sign = '' + s = str + if s and s[0] in '+-': + sign = s[0] + s = s[1:] + if not s: raise atof_error, str + while s[0] == '0' and len(s) > 1 and s[1] in digits: s = s[1:] + if regex.match('[0-9]*\(\.[0-9]*\)?\([eE][-+]?[0-9]+\)?', s) != len(s): + raise atof_error, str + try: + return eval(sign + s) + except SyntaxError: + raise atof_error, str + # Convert string to integer -atoi_error = 'non-numeric argument to string.atoi' +atoi_error = 'non-integer argument to string.atoi' def atoi(str): sign = '' s = str @@ -130,6 +148,20 @@ def atoi(str): if c not in digits: raise atoi_error, str return eval(sign + s) +# Convert string to long integer +atol_error = 'non-integer argument to string.atol' +def atol(str): + sign = '' + s = str + if s and s[0] in '+-': + sign = s[0] + s = s[1:] + if not s: raise atoi_error, str + while s[0] == '0' and len(s) > 1: s = s[1:] + for c in s: + if c not in digits: raise atoi_error, str + return eval(sign + s + 'L') + # Left-justify a string def ljust(s, width): n = width - len(s) diff --git a/Lib/test/test_types.py b/Lib/test/test_types.py index ec0f84100f0..0a43de32450 100644 --- a/Lib/test/test_types.py +++ b/Lib/test/test_types.py @@ -152,6 +152,9 @@ a.reverse() if a <> [2,1,0,-1,-2]: raise TestFailed, 'list reverse' a.sort() if a <> [-2,-1,0,1,2]: raise TestFailed, 'list sort' +def revcmp(a, b): return cmp(b, a) +a.sort(revcmp) +if a <> [2,1,0,-1,-2]: raise TestFailed, 'list sort with cmp func' print '6.6 Mappings == Dictionaries' d = {}