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
974ab9d8
Commit
974ab9d8
authored
Dec 31, 2002
by
Andrew M. Kuchling
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add lots of items.
The only thing missing now is the new date/time stuff.
parent
0146f419
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
192 additions
and
11 deletions
+192
-11
Doc/whatsnew/whatsnew23.tex
Doc/whatsnew/whatsnew23.tex
+192
-11
No files found.
Doc/whatsnew/whatsnew23.tex
View file @
974ab9d8
...
...
@@ -12,13 +12,11 @@
% MacOS framework-related changes (section of its own, probably)
% the new set-next-statement functionality of pdb (SF #643835)
%\section{Introduction \label{intro}}
{
\large
This article is a draft, and is currently up to date for
some
random version of the CVS tree from early November 2002. Please send any
additions, comments or errata to
the author.
}
{
\large
This article is a draft, and is currently up to date for
Python 2.3alpha1. Please send any additions, comments or errata to
the author.
}
This article explains the new features in Python 2.3. The tentative
release date of Python 2.3 is currently scheduled for some undefined
...
...
@@ -646,6 +644,128 @@ Walter D\"orwald.}
\end{seealso}
%======================================================================
\section
{
PEP 273: Importing Modules from Zip Archives
}
The new
\module
{
zipimport
}
module adds support for importing
modules from a ZIP-format archive. You shouldn't need to import the
module explicitly; it will be automatically imported if a ZIP
archive's filename is added to
\code
{
sys.path
}
. For example:
\begin{verbatim}
amk@nyman:~/src/python
$
unzip
-
l
/
tmp
/
example.zip
Archive:
/
tmp
/
example.zip
Length Date Time Name
--------
----
----
----
8467
11
-
26
-
02
22
:
30
jwzthreading.py
--------
-------
8467
1
file
amk@nyman:~
/
src
/
python
$
./python
Python 2.3a0 (#1, Dec 30 2002, 19:54:32)
[GCC 2.96 20000731 (Red Hat Linux 7.3 2.96-113)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path.insert(0, '/tmp/example.zip') # Add .zip file to front of path
>>> import jwzthreading
>>> jwzthreading.
__
file
__
'/tmp/example.zip/jwzthreading.py'
>>>
\end{verbatim}
An entry in
\code
{
sys.path
}
can now be the filename of a ZIP archive.
The ZIP archive can contain any kind of files, but only files named
\code
{
*.py
}
,
\code
{
*.pyc
}
, or
\code
{
*.pyo
}
can be imported. If an
archive only contains
\code
{
*.py
}
files, Python will not attempt to
modify the archive by adding the corresponding
{
*.pyc
}
file.
Therefore, if a ZIP archive doesn't contain
{
*.pyc
}
files, importing
may be rather slow.
A path within the archive can also be specified to only import from a
subdirectory; for example, the path
\file
{
/tmp/example.zip/lib/
}
would only import from the
\file
{
lib/
}
subdirectory within the
archive.
This new feature is implemented using the new import hooks from
\pep
{
302
}
; see section~
\ref
{
section-pep302
}
for a description.
\begin{seealso}
\seepep
{
273
}{
Import Modules from Zip Archives
}{
Written by James C. Ahlstrom,
who also provided an implementation.
Python 2.3 follows the specification in
\pep
{
273
}
,
but uses an implementation written by Just van Rossum
that uses the import hooks described in
\pep
{
302
}
.
}
\end{seealso}
%======================================================================
\section
{
PEP 302: New Import Hooks
\label
{
section-pep302
}}
While it's been possible to write custom import hooks ever since the
\module
{
ihooks
}
module was introduced in Python 1.3, no one has ever
been really happy with it, because writing new import hooks is
difficult and messy. There have been various alternative interfaces
proposed, such as the
\module
{
imputil
}
and
\module
{
iu
}
modules, but
none has ever gained much acceptance, and none was easily usable from
\C
{}
code.
\pep
{
302
}
borrows ideas from its predecessors, especially from
Gordon McMillan's
\module
{
iu
}
module. Three new items
are added to the
\module
{
sys
}
module:
\begin{itemize}
\item
[\code{sys.path_hooks}]
is a list of functions. Each function
takes a string containing a path and returns either
\code
{
None
}
or an
importer object that will handle imports from this path.
\item
[\code{sys.path_importer_cache}]
caches importer objects for
each path, so
\code
{
sys.path
_
hooks
}
will only need to be traversed
once for each path.
\item
[\code{sys.meta_path}]
is a list of importer objects
that will be traversed before
\code
{
sys.path
}
is checked at all.
This list is initially empty, but can be extended. Additional built-in
and frozen modules can be imported by an object added to this list.
\end{itemize}
Importer objects must have a single method,
\method
{
find
_
module(
\var
{
fullname
}
,
\var
{
path
}
=None)
}
.
\var
{
fullname
}
will be a module or package name, e.g.
\samp
{
string
}
or
\samp
{
spam.ham
}
.
\method
{
find
_
module()
}
must return a loader object
that has a single method,
\method
{
load
_
module(
\var
{
fullname
}
)
}
, that
creates and returns the corresponding module object.
Pseudo-code for Python's new import logic, therefore, looks something
like this (simplified a bit; see
\pep
{
302
}
for the full details):
\begin{verbatim}
for mp in sys.meta
_
path:
loader = mp(fullname)
if loader is not None:
<module> = loader(fullname)
for path in sys.path:
for hook in sys.path
_
hooks:
importer = hook(path)
if importer is not None:
loader = importer.find
_
module(fullname)
return loader.load
_
module(fullname)
# Not found!
raise ImportError
\end{verbatim}
\begin{seealso}
\seepep
{
302
}{
New Import Hooks
}{
Written by Just van~Rossum and Paul Moore.
Implemented by Just van Rossum.
% XXX is that credit right?
}
\end{seealso}
%======================================================================
\section
{
Extended Slices
\label
{
section-slices
}}
...
...
@@ -797,7 +917,8 @@ section~\ref{section-bool} of this document.
integer instead of raising an
\exception
{
OverflowError
}
when a string
or floating-point number is too large to fit into an integer. This
can lead to the paradoxical result that
\code
{
isinstance(int(
\var
{
expression
}
), int)
}
is false, but that seems unlikely to cause problems in practice.
\code
{
isinstance(int(
\var
{
expression
}
), int)
}
is false, but that seems
unlikely to cause problems in practice.
\item
Built-in types now support the extended slicing syntax,
as described in section~
\ref
{
section-slices
}
of this document.
...
...
@@ -835,7 +956,7 @@ creates a dictionary with keys taken from the supplied iterator
(Patches contributed by Raymond Hettinger.)
The
\function
{
dict()
}
constructor now also
accepts keyword arguments to
Also, the
\function
{
dict()
}
constructor now
accepts keyword arguments to
simplify creating small dictionaries:
\begin{verbatim}
...
...
@@ -1012,6 +1133,9 @@ Oren Tirosh.)
\begin{itemize}
\item
The creation of new-style class instances has been made much
faster; they're now faster than classic classes!
\item
The
\method
{
sort()
}
method of list objects has been extensively
rewritten by Tim Peters, and the implementation is significantly
faster.
...
...
@@ -1056,7 +1180,7 @@ support using the \code{+=} assignment operator to add another array's
contents, and the
\code
{
*=
}
assignment operator to repeat an array.
(Contributed by Jason Orendorff.)
\item
The
\module
{
bsddb
}
module has been updated to version
3.4.0
\item
The
\module
{
bsddb
}
module has been updated to version
4.1.1
of the
\ulink
{
PyBSDDB
}{
http://pybsddb.sourceforge.net
}
package,
providing a more complete interface to the transactional features of
the BerkeleyDB library.
...
...
@@ -1118,6 +1242,8 @@ now return enhanced tuples:
('amk', 500)
\end{verbatim}
\item
The
\module
{
gzip
}
module can now handle files exceeding 2~Gb.
\item
The new
\module
{
heapq
}
module contains an implementation of a
heap queue algorithm. A heap is an array-like data structure that
keeps items in a partially sorted order such that,
...
...
@@ -1218,13 +1344,21 @@ ValueError: sample larger than population
>>> random.sample(xrange(1,10000,2), 10) # Choose ten odds under 10000
[3407, 3805, 1505, 7023, 2401, 2267, 9733, 3151, 8083, 9195]
\end{verbatim}
(Contributed by Raymond Hettinger.)
The
\module
{
random
}
module now uses a new algorithm, the Mersenne
Twister, implemented in C. It's faster and more extensively studied
than the previous algorithm.
(All changes contributed by Raymond Hettinger.)
\item
The
\module
{
readline
}
module also gained a number of new
functions:
\function
{
get
_
history
_
item()
}
,
\function
{
get
_
current
_
history
_
length()
}
, and
\function
{
redisplay()
}
.
\item
The
\module
{
shutil
}
module gained a
\function
{
move(
\var
{
src
}
,
\var
{
dest
}
)
}
that recursively moves a file or directory to a new
location.
\item
Support for more advanced POSIX signal handling was added
to the
\module
{
signal
}
module by adding the
\function
{
sigpending
}
,
\function
{
sigprocmask
}
and
\function
{
sigsuspend
}
functions, where supported
...
...
@@ -1284,6 +1418,28 @@ documentation for details.
%XXX add a link to the module docs?
(Contributed by Greg Ward.)
\item
The
\module
{
thread
}
and
\module
{
threading
}
modules now have
companion,
\module
{
dummy
_
thread
}
and
\module
{
dummy
_
threading
}
, that
provide a do-nothing implementation of the
\module
{
thread
}
module's
interface, even if threads are not supported. The intention is to
simplify thread-aware modules (that
\emph
{
don't
}
rely on threads to
run) by putting the following code at the top:
% XXX why as _threading?
\begin{verbatim}
try:
import threading as
_
threading
except ImportError:
import dummy
_
threading as
_
threading
\end{verbatim}
Code can then call functions and use classes in
\module
{_
threading
}
whether or not threads are supported, avoiding an
\keyword
{
if
}
statement and making the code slightly clearer. This module will not
magically make multithreaded code run without threads; code that waits
for another thread to return or to do something will simply hang
forever.
\item
The
\module
{
time
}
module's
\function
{
strptime()
}
function has
long been an annoyance because it uses the platform C library's
\function
{
strptime()
}
implementation, and different platforms
...
...
@@ -1610,6 +1766,8 @@ allocate objects, and \cfunction{PyObject_GC_Del} to deallocate them.
\end
{
itemize
}
It's also no longer possible to build Python without the garbage collector.
\item
Python can now optionally be built as a shared library
(
\file
{
libpython
2
.
3
.so
}
)
by supplying
\longprogramopt
{
enable
-
shared
}
when running Python's
\program
{
configure
}
script.
(
Contributed by Ondrej
...
...
@@ -1672,6 +1830,22 @@ Expat.
\end
{
itemize
}
\begin
{
comment
}
%======================================================================
\subsection
{
Date
/
Time Type
}
Date and time types suitable for expressing timestamps were added as
the
\module
{
datetime
}
module. The types don't support different
calendars or many fancy features, and just stick to the basics.
The three primary types are:
\class
{
date
}
, representing a day, month,
and year;
\class
{
time
}
, consisting of hour, minute, and second value;
and
\class
{
datetime
}
, which contains both a date and a time.
XXX finish this section
\end
{
comment
}
%======================================================================
\subsection
{
Port
-
Specific Changes
}
...
...
@@ -1695,7 +1869,8 @@ The RPM spec files, found in the \file{Misc/RPM/} directory in the
Python source distribution, were updated for
2
.
3
.
(
Contributed by
Sean Reifschneider.
)
Python now supports AtheOS
(
\url
{
http:
//
www.atheos.cx
}
)
and GNU
/
Hurd.
Python now supports AtheOS
(
\url
{
http:
//
www.atheos.cx
}
)
, GNU
/
Hurd,
OpenVMS, and OS
/
2
with EMX.
%======================================================================
...
...
@@ -1738,6 +1913,12 @@ should instead call \code{PyCode_Addr2Line(f->f_code, f->f_lasti)}.
This will have the added effect of making the code work as desired
under ``python
-
O'' in earlier versions of Python.
A nifty new feature is that trace functions can now the
\member
{
f
_
lineno
}
attribute of frame objects can now be assigned to,
changing the line that will be executed next. A
\samp
{
jump
}
command
has been added to the
\module
{
pdb
}
debugger taking advantage of this
new feature.
(
Implemented by Richie Hindle.
)
\end
{
itemize
}
...
...
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