Initial revision

This commit is contained in:
Guido van Rossum 1991-11-12 15:38:08 +00:00
parent 5478cc68f8
commit eee9498b71
3 changed files with 190 additions and 0 deletions

79
Lib/lib-old/newdir.py Normal file
View File

@ -0,0 +1,79 @@
# New dir() function and other attribute-related goodies
# This should become a built-in function
#
def getattr(x, name):
return eval('x.'+name)
# This should be the new dir(), except that it should still list
# the current local name space by default
#
def listattrs(x):
try:
dictkeys = x.__dict__.keys()
except (NameError, TypeError):
dictkeys = []
#
try:
methods = x.__methods__
except (NameError, TypeError):
methods = []
#
try:
members = x.__members__
except (NameError, TypeError):
members = []
#
try:
the_class = x.__class__
except (NameError, TypeError):
the_class = None
#
try:
bases = x.__bases__
except (NameError, TypeError):
bases = ()
#
total = dictkeys + methods + members
if the_class:
# It's a class instace; add the class's attributes
# that are functions (methods)...
class_attrs = listattrs(the_class)
class_methods = []
for name in class_attrs:
if is_function(getattr(the_class, name)):
class_methods.append(name)
total = total + class_methods
elif bases:
# It's a derived class; add the base class attributes
for base in bases:
base_attrs = listattrs(base)
total = total + base_attrs
total.sort()
return total
i = 0
while i+1 < len(total):
if total[i] = total[i+1]:
del total[i+1]
else:
i = i+1
return total
# Helper to recognize functions
#
def is_function(x):
return type(x) = type(is_function)
# Approximation of builtin dir(); this lists the user's
# variables by default, not the current local name space.
# Use a class method to make a function that can be called
# with or without arguments.
#
class _dirclass():
def dir(args):
if type(args) = type(()):
return listattrs(args[1])
else:
import __main__
return listattrs(__main__)
dir = _dirclass().dir

79
Lib/newdir.py Normal file
View File

@ -0,0 +1,79 @@
# New dir() function and other attribute-related goodies
# This should become a built-in function
#
def getattr(x, name):
return eval('x.'+name)
# This should be the new dir(), except that it should still list
# the current local name space by default
#
def listattrs(x):
try:
dictkeys = x.__dict__.keys()
except (NameError, TypeError):
dictkeys = []
#
try:
methods = x.__methods__
except (NameError, TypeError):
methods = []
#
try:
members = x.__members__
except (NameError, TypeError):
members = []
#
try:
the_class = x.__class__
except (NameError, TypeError):
the_class = None
#
try:
bases = x.__bases__
except (NameError, TypeError):
bases = ()
#
total = dictkeys + methods + members
if the_class:
# It's a class instace; add the class's attributes
# that are functions (methods)...
class_attrs = listattrs(the_class)
class_methods = []
for name in class_attrs:
if is_function(getattr(the_class, name)):
class_methods.append(name)
total = total + class_methods
elif bases:
# It's a derived class; add the base class attributes
for base in bases:
base_attrs = listattrs(base)
total = total + base_attrs
total.sort()
return total
i = 0
while i+1 < len(total):
if total[i] = total[i+1]:
del total[i+1]
else:
i = i+1
return total
# Helper to recognize functions
#
def is_function(x):
return type(x) = type(is_function)
# Approximation of builtin dir(); this lists the user's
# variables by default, not the current local name space.
# Use a class method to make a function that can be called
# with or without arguments.
#
class _dirclass():
def dir(args):
if type(args) = type(()):
return listattrs(args[1])
else:
import __main__
return listattrs(__main__)
dir = _dirclass().dir

32
Lib/tempfile.py Normal file
View File

@ -0,0 +1,32 @@
# Temporary file name allocation
import posix
import path
# Changeable parameters (by clients!)...
# XXX Should the environment variable $TMPDIR override tempdir?
tempdir = '/usr/tmp'
template = '@'
# Kludge to hold mutable state
class Struct(): pass
G = Struct()
G.i = 0
# User-callable function
# XXX Should this have a parameter, like C's mktemp()?
# XXX Should we instead use the model of Standard C's tempnam()?
# XXX By all means, avoid a mess with four different functions like C...
def mktemp():
while 1:
G.i = G.i+1
file = tempdir +'/'+ template + `posix.getpid()` +'.'+ `G.i`
if not path.exists(file):
break
return file