Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
388e9f87
Commit
388e9f87
authored
Apr 04, 1998
by
Fred Drake
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Relocating file to Lib/lib-old.
parent
f10b7957
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
0 additions
and
274 deletions
+0
-274
Lib/codehack.py
Lib/codehack.py
+0
-81
Lib/lockfile.py
Lib/lockfile.py
+0
-15
Lib/tb.py
Lib/tb.py
+0
-178
No files found.
Lib/codehack.py
deleted
100644 → 0
View file @
f10b7957
# A subroutine for extracting a function name from a code object
# (with cache)
import
sys
from
stat
import
*
import
string
import
os
import
linecache
# XXX The functions getcodename() and getfuncname() are now obsolete
# XXX as code and function objects now have a name attribute --
# XXX co.co_name and f.func_name.
# XXX getlineno() is now also obsolete because of the new attribute
# XXX of code objects, co.co_firstlineno.
# Extract the function or class name from a code object.
# This is a bit of a hack, since a code object doesn't contain
# the name directly. So what do we do:
# - get the filename (which *is* in the code object)
# - look in the code string to find the first SET_LINENO instruction
# (this must be the first instruction)
# - get the line from the file
# - if the line starts with 'class' or 'def' (after possible whitespace),
# extract the following identifier
#
# This breaks apart when the function was read from <stdin>
# or constructed by exec(), when the file is not accessible,
# and also when the file has been modified or when a line is
# continued with a backslash before the function or class name.
#
# Because this is a pretty expensive hack, a cache is kept.
SET_LINENO
=
127
# The opcode (see "opcode.h" in the Python source)
identchars
=
string
.
letters
+
string
.
digits
+
'_'
# Identifier characters
_namecache
=
{}
# The cache
def
getcodename
(
co
):
try
:
return
co
.
co_name
except
AttributeError
:
pass
key
=
`co`
# arbitrary but uniquely identifying string
if
_namecache
.
has_key
(
key
):
return
_namecache
[
key
]
filename
=
co
.
co_filename
code
=
co
.
co_code
name
=
''
if
ord
(
code
[
0
])
==
SET_LINENO
:
lineno
=
ord
(
code
[
1
])
|
ord
(
code
[
2
])
<<
8
line
=
linecache
.
getline
(
filename
,
lineno
)
words
=
string
.
split
(
line
)
if
len
(
words
)
>=
2
and
words
[
0
]
in
(
'def'
,
'class'
):
name
=
words
[
1
]
for
i
in
range
(
len
(
name
)):
if
name
[
i
]
not
in
identchars
:
name
=
name
[:
i
]
break
_namecache
[
key
]
=
name
return
name
# Use the above routine to find a function's name.
def
getfuncname
(
func
):
try
:
return
func
.
func_name
except
AttributeError
:
pass
return
getcodename
(
func
.
func_code
)
# A part of the above code to extract just the line number from a code object.
def
getlineno
(
co
):
try
:
return
co
.
co_firstlineno
except
AttributeError
:
pass
code
=
co
.
co_code
if
ord
(
code
[
0
])
==
SET_LINENO
:
return
ord
(
code
[
1
])
|
ord
(
code
[
2
])
<<
8
else
:
return
-
1
Lib/lockfile.py
deleted
100644 → 0
View file @
f10b7957
import
struct
,
fcntl
,
FCNTL
def
writelock
(
f
):
_lock
(
f
,
FCNTL
.
F_WRLCK
)
def
readlock
(
f
):
_lock
(
f
,
FCNTL
.
F_RDLCK
)
def
unlock
(
f
):
_lock
(
f
,
FCNTL
.
F_UNLCK
)
def
_lock
(
f
,
op
):
dummy
=
fcntl
.
fcntl
(
f
.
fileno
(),
FCNTL
.
F_SETLKW
,
struct
.
pack
(
'2h8l'
,
op
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
))
Lib/tb.py
deleted
100644 → 0
View file @
f10b7957
# Print tracebacks, with a dump of local variables.
# Also an interactive stack trace browser.
# Note -- this module is obsolete -- use pdb.pm() instead.
import
sys
import
os
from
stat
import
*
import
string
import
linecache
def
br
():
browser
(
sys
.
last_traceback
)
def
tb
():
printtb
(
sys
.
last_traceback
)
def
browser
(
tb
):
if
not
tb
:
print
'No traceback.'
return
tblist
=
[]
while
tb
:
tblist
.
append
(
tb
)
tb
=
tb
.
tb_next
ptr
=
len
(
tblist
)
-
1
tb
=
tblist
[
ptr
]
while
1
:
if
tb
<>
tblist
[
ptr
]:
tb
=
tblist
[
ptr
]
print
`ptr`
+
':'
,
printtbheader
(
tb
)
try
:
line
=
raw_input
(
'TB: '
)
except
KeyboardInterrupt
:
print
'
\
n
[Interrupted]'
break
except
EOFError
:
print
'
\
n
[EOF]'
break
cmd
=
string
.
strip
(
line
)
if
cmd
:
if
cmd
==
'quit'
:
break
elif
cmd
==
'list'
:
browserlist
(
tb
)
elif
cmd
==
'up'
:
if
ptr
-
1
>=
0
:
ptr
=
ptr
-
1
else
:
print
'Bottom of stack.'
elif
cmd
==
'down'
:
if
ptr
+
1
<
len
(
tblist
):
ptr
=
ptr
+
1
else
:
print
'Top of stack.'
elif
cmd
==
'locals'
:
printsymbols
(
tb
.
tb_frame
.
f_locals
)
elif
cmd
==
'globals'
:
printsymbols
(
tb
.
tb_frame
.
f_globals
)
elif
cmd
in
(
'?'
,
'help'
):
browserhelp
()
else
:
browserexec
(
tb
,
cmd
)
def
browserlist
(
tb
):
filename
=
tb
.
tb_frame
.
f_code
.
co_filename
lineno
=
tb
.
tb_lineno
last
=
lineno
first
=
max
(
1
,
last
-
10
)
for
i
in
range
(
first
,
last
+
1
):
if
i
==
lineno
:
prefix
=
'***'
+
string
.
rjust
(
`i`
,
4
)
+
':'
else
:
prefix
=
string
.
rjust
(
`i`
,
7
)
+
':'
line
=
linecache
.
getline
(
filename
,
i
)
if
line
[
-
1
:]
==
'
\
n
'
:
line
=
line
[:
-
1
]
print
prefix
+
line
def
browserexec
(
tb
,
cmd
):
locals
=
tb
.
tb_frame
.
f_locals
globals
=
tb
.
tb_frame
.
f_globals
try
:
exec
cmd
+
'
\
n
'
in
globals
,
locals
except
:
t
,
v
=
sys
.
exc_info
()[:
2
]
print
'*** Exception:'
,
if
type
(
t
)
==
type
(
''
):
print
t
,
else
:
print
t
.
__name__
,
if
v
<>
None
:
print
':'
,
v
,
print
print
'Type help to get help.'
def
browserhelp
():
print
print
' This is the traceback browser. Commands are:'
print
' up : move one level up in the call stack'
print
' down : move one level down in the call stack'
print
' locals : print all local variables at this level'
print
' globals : print all global variables at this level'
print
' list : list source code around the failure'
print
' help : print help (what you are reading now)'
print
' quit : back to command interpreter'
print
' Typing any other 1-line statement will execute it'
print
' using the current level
\
'
s symbol tables'
print
def
printtb
(
tb
):
while
tb
:
print1tb
(
tb
)
tb
=
tb
.
tb_next
def
print1tb
(
tb
):
printtbheader
(
tb
)
if
tb
.
tb_frame
.
f_locals
is
not
tb
.
tb_frame
.
f_globals
:
printsymbols
(
tb
.
tb_frame
.
f_locals
)
def
printtbheader
(
tb
):
filename
=
tb
.
tb_frame
.
f_code
.
co_filename
lineno
=
tb
.
tb_lineno
info
=
'"'
+
filename
+
'"('
+
`lineno`
+
')'
line
=
linecache
.
getline
(
filename
,
lineno
)
if
line
:
info
=
info
+
': '
+
string
.
strip
(
line
)
print
info
def
printsymbols
(
d
):
keys
=
d
.
keys
()
keys
.
sort
()
for
name
in
keys
:
print
' '
+
string
.
ljust
(
name
,
12
)
+
':'
,
printobject
(
d
[
name
],
4
)
print
def
printobject
(
v
,
maxlevel
):
if
v
==
None
:
print
'None'
,
elif
type
(
v
)
in
(
type
(
0
),
type
(
0.0
)):
print
v
,
elif
type
(
v
)
==
type
(
''
):
if
len
(
v
)
>
20
:
print
`v[:17] + '...'`
,
else
:
print
`v`
,
elif
type
(
v
)
==
type
(()):
print
'('
,
printlist
(
v
,
maxlevel
)
print
')'
,
elif
type
(
v
)
==
type
([]):
print
'['
,
printlist
(
v
,
maxlevel
)
print
']'
,
elif
type
(
v
)
==
type
({}):
print
'{'
,
printdict
(
v
,
maxlevel
)
print
'}'
,
else
:
print
v
,
def
printlist
(
v
,
maxlevel
):
n
=
len
(
v
)
if
n
==
0
:
return
if
maxlevel
<=
0
:
print
'...'
,
return
for
i
in
range
(
min
(
6
,
n
)):
printobject
(
v
[
i
],
maxlevel
-
1
)
if
i
+
1
<
n
:
print
','
,
if
n
>
6
:
print
'...'
,
def
printdict
(
v
,
maxlevel
):
keys
=
v
.
keys
()
n
=
len
(
keys
)
if
n
==
0
:
return
if
maxlevel
<=
0
:
print
'...'
,
return
keys
.
sort
()
for
i
in
range
(
min
(
6
,
n
)):
key
=
keys
[
i
]
print
`key`
+
':'
,
printobject
(
v
[
key
],
maxlevel
-
1
)
if
i
+
1
<
n
:
print
','
,
if
n
>
6
:
print
'...'
,
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment