Document makedirs(), removedirs(), renames() -- ESR-inspired super-versions
of mkdir(), rmdir() and rename() that make or remove intermediate
directories as well.
Add makedirs(), removedirs(), renames() -- ESR-inspired super-versions
of mkdir(), rmdir() and rename() that make or remove intermediate
directories as well.
Use 'S' format character for the optional constructor argument, so we
get a decent error message when it's not a string (instead of
confusing errors when trying to use the thing).
Fred Drake [Fri, 24 Jul 1998 15:19:38 +0000 (15:19 +0000)]
Remove use of the avant package; Helvetica isn't as pretty, but works for
acroread. The problem this solves is likely dependent on font availability,
so keeping things simple is a good solution.
Fred Drake [Fri, 24 Jul 1998 13:56:11 +0000 (13:56 +0000)]
Move files around to get the names to match the module names except for
case. Two modules (SocketServer, BaseHTTPServer) still don't match; those
names are just too long!
Fred Drake [Thu, 23 Jul 1998 21:41:02 +0000 (21:41 +0000)]
\textunderscore: Re-define with a width that's more appropriate for the
courier font used in Python code. This still isn't *good*, but
makes the width about right in most cases. (Exception: it's now
a little wide in \var words.)
Fred Drake [Thu, 23 Jul 1998 19:33:08 +0000 (19:33 +0000)]
Use the new module synopsis syntax, even though we don't need a synopsis table
for this chapter. This protects against backend changes for \declaremodule.
Fred Drake [Thu, 23 Jul 1998 19:13:52 +0000 (19:13 +0000)]
use_latex(): Hack to pass .syn files though uniq, so that the last module
in a HOWTO document isn't listed in the synopsis table twice. This
will do until the real bug is found (low priority!).
Fred Drake [Thu, 23 Jul 1998 17:50:45 +0000 (17:50 +0000)]
Lots of new stuff for "module synopsis support." Public interface consists
of three macros, one which replaces some of the current conventions used in
the module sections:
\declaremodule: Requires two parameters: module type (standard, builtin,
extension), and the module name. An optional parameter should be
given as the basis for the module's "key" used for linking to or
referencing the section. The "key" should only be given if the
module's name contains underscores, and should be the name with the
underscore's stripped. This should be the first thing after the
\section used to introduce the module.
\modulesynopsis: Requires a single parameter: a short, one-liner
description of the module that can be used as part of the chapter
introduction. This should probably be placed just after the
\declaremodule, but may be placed anywhere in the same section.
\localmoduletable: No parameters. If a .syn file exists for the current
chapter (or for the entire document in howto docs), a synopsistable
is created with the contents loaded from the .syn file.
Some re-organization due to module synopsis support.
Barry Warsaw [Thu, 23 Jul 1998 16:07:02 +0000 (16:07 +0000)]
PyFile_FromString(): If an exception occurs, pass in the filename that
was used so it's reflected in the IOError. Call
PyErr_SetFromErrnoWithFilename().
Barry Warsaw [Thu, 23 Jul 1998 16:05:56 +0000 (16:05 +0000)]
PyErr_SetFromErrnoWithFilename(): New function which supports setting
an exception from errno, with a supplied filename (primarily used by
IOError and OSError). If class exceptions are used then the exception
is instantiated with a 3-tuple: (errno, strerror, filename). For
backwards compatibility reasons, if string exceptions are used,
filename is ignored.
PyErr_SetFromErrno(): Implement in terms of
PyErr_SetFromErrnoWithFilename().
Barry Warsaw [Thu, 23 Jul 1998 16:03:46 +0000 (16:03 +0000)]
Added support for including the filename in IOErrors and OSErrors that
involve a filesystem path. To that end:
- Changed IOError to EnvironmentError and added a hack which checks
for arg of len 3. When constructed with a 3-tuple, the third item
is the filename and this is squirreled away in the `filename'
attribute. However, for in-place unpacking backwards
compatibility, self.args still only gets the first two items. Added
a __str__() which prints the filename if it is given.
- IOError now inherits from EnvironmentError
- New class OSError which also inherits from EnvironmentError and is
used by the posix module.
Barry Warsaw [Thu, 23 Jul 1998 15:59:57 +0000 (15:59 +0000)]
Added support for two new standard errors: EnvironmentError and
OSError. The EnvironmentError serves primarily as the (common
implementation) base class for IOError and OSError. OSError is used
by posixmodule.c
Also added tuple definition of EnvironmentError when using string
based exceptions.
Jack Jansen [Wed, 22 Jul 1998 13:37:37 +0000 (13:37 +0000)]
- Added a function MoviesTask, which is the same as the method but
with a null movie (giving time to all active movies)
- Made the graphics world parameter to SetMovieGWorld optional.
When comparing objects, always check that tp_compare is not NULL
before calling it. This check was there when the objects were of the
same type *before* coercion, but not if they initially differed but
became the same *after* coercion.
Added support for specifying a filename for a breakpoint, roughly
according to an idea by Harri Pasanen (but with different syntax).
This affects the 'break' and 'clear' commands and their help
functions. Also added a helper method lookupmodule().
Also:
- Try to import readline (important when pdb is used from/as a script).
- Get rid of reference to ancient __privileged__ magic variable.
- Moved all import out of functions to the top.
- When used as a script, check that the script file exists.
Get a 3- to 4-fold speedup for sub()/subn(), split() and findall() by
not calling self.search(); instead, call self.code.match() directly
and interpret the list of registers it returns directly. This saves
the overhead of instantiating a MatchObject for each hit, basically
inlining search() as well as group(). When a MatchObject is still
needed, one is allocated and reused for the duration of the scan.
Avoid using calloc(). This triggered an obscure bug on multiprocessor
Sparc Solaris 2.6 (fully patched!) that I don't want to dig into, but
which I suspect is a bug in the multithreaded malloc library that only
shows up when run on a multiprocessor. (The program wasn't using
threads, it was just using the multithreaded C library.)
Fred Drake [Wed, 15 Jul 1998 04:36:56 +0000 (04:36 +0000)]
Tk.__init__(): In computing baseName, add ".pyo" to list of dropped
extensions, and include the "." in ".pyc". Still need to get
_tkinter.c:Tkapp_New() to use baseName....
Temporarily get rid of the registration of Tcl_Finalize() as a
low-level Python exit handler. This can attempt to call Python code
at a point that the interpreter and thread state have already been
destroyed, causing a Bus Error. Given the intended use of
Py_AtExit(), I'm not convinced that it's a good idea to call it
earlier during Python's finalization sequence... (Although this is
the only use for it in the entire distribution.)
Jack Jansen [Mon, 13 Jul 1998 13:41:02 +0000 (13:41 +0000)]
Added a delete() method to menu entries. Only the last entry of a menu
can be deleted, but that's good enough for things like a "Windows"
menu with the dynamic list of open windows at the end of the menu.
Jack Jansen [Mon, 13 Jul 1998 13:38:29 +0000 (13:38 +0000)]
If the preference filename resource is empty don't try to open or
create the preferences file. This is so that frozen programs don't
interfere with an existing Python installation, or leave turds in the
Preferences folder.
Jack Jansen [Mon, 13 Jul 1998 13:37:12 +0000 (13:37 +0000)]
All import-related code has moved to macimport.c.
There's also new support for importing code fragments: if a file on
sys.path contains a PYD resource with resourcename equal to the name
of the module to be imported this PYD resource should contain a
(pascal) string with the name of a code fragment to load. This allows
freezing Python programs without access to source or a development
environment.
Add special case to PySequence_List() so that list() of a list is
faster (using PyList_GetSlice()). Also added a test for a NULL
argument, as with PySequence_Tuple(). (Hmm... Better names for these
two would be PyList_FromSequence() and PyTuple_FromSequence(). Oh well.)
Changed PySequence_List() and PySequence_Tuple() to support
"indefinite length" sequences. These should still have a length, but
the length is only used as a hint -- the actual length of the sequence
is determined by the item that raises IndexError, which may be either
smaller or larger than what len() returns. (This is a novelty; map(),
filter() and reduce() only allow the actual length to be larger than
what len() returns, not shorter. I'll fix that shortly.)
Jack Jansen [Fri, 10 Jul 1998 15:47:48 +0000 (15:47 +0000)]
Added a function SetUserItemHandler: this takes a function(dialog,
item) as parameter and returns a handle suitable for passing to
SetDialogItem as a user-item redraw routine. Note that you can
only make one of these, for now.
(1) Added a sys.exc_info() emulation. (It returns None for the traceback.)
(2) Made the test script a bit fancier -- you can now use it to run
arbitrary scripts in restricted mode, and it will do the right thing.
(The interactive mode is still pretty lame; should integrate this with
code.interact().)