[Numpy-svn] r4114 - in branches/numpy.scons: . numpy numpy/core numpy/core/code_generators numpy/core/include/numpy numpy/core/src numpy/core/tests numpy/distutils numpy/doc numpy/doc/html numpy/lib numpy/lib/src numpy/lib/tests numpy/linalg numpy/linalg/tests

numpy-svn@scip... numpy-svn@scip...
Mon Sep 24 06:37:50 CDT 2007


Author: cdavid
Date: 2007-09-24 06:36:47 -0500 (Mon, 24 Sep 2007)
New Revision: 4114

Added:
   branches/numpy.scons/numpy/doc/HOWTO_DOCUMENT.txt
   branches/numpy.scons/numpy/doc/example.py
   branches/numpy.scons/numpy/doc/html/
   branches/numpy.scons/numpy/doc/html/api-objects.txt
   branches/numpy.scons/numpy/doc/html/crarr.png
   branches/numpy.scons/numpy/doc/html/epydoc.css
   branches/numpy.scons/numpy/doc/html/epydoc.js
   branches/numpy.scons/numpy/doc/html/example-module.html
   branches/numpy.scons/numpy/doc/html/example-pysrc.html
   branches/numpy.scons/numpy/doc/html/frames.html
   branches/numpy.scons/numpy/doc/html/help.html
   branches/numpy.scons/numpy/doc/html/identifier-index.html
   branches/numpy.scons/numpy/doc/html/index.html
   branches/numpy.scons/numpy/doc/html/module-tree.html
   branches/numpy.scons/numpy/doc/html/redirect.html
   branches/numpy.scons/numpy/doc/html/toc-everything.html
   branches/numpy.scons/numpy/doc/html/toc-example-module.html
   branches/numpy.scons/numpy/doc/html/toc.html
Removed:
   branches/numpy.scons/numpy/doc/HOWTO_DOCUMENT.py
Modified:
   branches/numpy.scons/
   branches/numpy.scons/DEV_README.txt
   branches/numpy.scons/numpy/add_newdocs.py
   branches/numpy.scons/numpy/core/code_generators/generate_ufunc_api.py
   branches/numpy.scons/numpy/core/include/numpy/ufuncobject.h
   branches/numpy.scons/numpy/core/memmap.py
   branches/numpy.scons/numpy/core/src/multiarraymodule.c
   branches/numpy.scons/numpy/core/tests/test_regression.py
   branches/numpy.scons/numpy/distutils/__init__.py
   branches/numpy.scons/numpy/distutils/cpuinfo.py
   branches/numpy.scons/numpy/distutils/misc_util.py
   branches/numpy.scons/numpy/lib/src/_compiled_base.c
   branches/numpy.scons/numpy/lib/tests/test_twodim_base.py
   branches/numpy.scons/numpy/lib/twodim_base.py
   branches/numpy.scons/numpy/linalg/linalg.py
   branches/numpy.scons/numpy/linalg/tests/test_linalg.py
Log:
Apply the merge between main trunk and numpy.scons branch


Property changes on: branches/numpy.scons
___________________________________________________________________
Name: bzr:revision-info
   - timestamp: 2007-09-24 17:29:18.167000055 +0900
committer: David Cournapeau <david@ar.media.kyoto-u.ac.jp>
properties: 
	branch-nick: numpy.scons

   + timestamp: 2007-09-24 17:30:08.612999916 +0900
committer: David Cournapeau <david@ar.media.kyoto-u.ac.jp>
properties: 
	branch-nick: numpy.scons

Name: bzr:file-ids
   - 
   + numpy/doc/example.py	4112@94b884b6-d6fd-0310-90d3-974f1d3f35e1:branches%2Fnumpy.scons:numpy%2Fdoc%2Fexample.py
numpy/doc/HOWTO_DOCUMENT.txt	4112@94b884b6-d6fd-0310-90d3-974f1d3f35e1:branches%2Fnumpy.scons:numpy%2Fdoc%2FHOWTO_DOCUMENT.txt
numpy/doc/html	4112@94b884b6-d6fd-0310-90d3-974f1d3f35e1:branches%2Fnumpy.scons:numpy%2Fdoc%2Fhtml
numpy/doc/html/epydoc.js	4112@94b884b6-d6fd-0310-90d3-974f1d3f35e1:branches%2Fnumpy.scons:numpy%2Fdoc%2Fhtml%2Fepydoc.js
numpy/doc/html/example-pysrc.html	4112@94b884b6-d6fd-0310-90d3-974f1d3f35e1:branches%2Fnumpy.scons:numpy%2Fdoc%2Fhtml%2Fexample-pysrc.html
numpy/doc/html/example-module.html	4112@94b884b6-d6fd-0310-90d3-974f1d3f35e1:branches%2Fnumpy.scons:numpy%2Fdoc%2Fhtml%2Fexample-module.html
numpy/doc/html/toc-everything.html	4112@94b884b6-d6fd-0310-90d3-974f1d3f35e1:branches%2Fnumpy.scons:numpy%2Fdoc%2Fhtml%2Ftoc-everything.html
numpy/doc/html/api-objects.txt	4112@94b884b6-d6fd-0310-90d3-974f1d3f35e1:branches%2Fnumpy.scons:numpy%2Fdoc%2Fhtml%2Fapi-objects.txt
numpy/doc/html/toc-example-module.html	4112@94b884b6-d6fd-0310-90d3-974f1d3f35e1:branches%2Fnumpy.scons:numpy%2Fdoc%2Fhtml%2Ftoc-example-module.html
numpy/doc/html/redirect.html	4112@94b884b6-d6fd-0310-90d3-974f1d3f35e1:branches%2Fnumpy.scons:numpy%2Fdoc%2Fhtml%2Fredirect.html
numpy/doc/html/identifier-index.html	4112@94b884b6-d6fd-0310-90d3-974f1d3f35e1:branches%2Fnumpy.scons:numpy%2Fdoc%2Fhtml%2Fidentifier-index.html
numpy/doc/html/index.html	4112@94b884b6-d6fd-0310-90d3-974f1d3f35e1:branches%2Fnumpy.scons:numpy%2Fdoc%2Fhtml%2Findex.html
numpy/doc/html/help.html	4112@94b884b6-d6fd-0310-90d3-974f1d3f35e1:branches%2Fnumpy.scons:numpy%2Fdoc%2Fhtml%2Fhelp.html
numpy/doc/html/frames.html	4112@94b884b6-d6fd-0310-90d3-974f1d3f35e1:branches%2Fnumpy.scons:numpy%2Fdoc%2Fhtml%2Fframes.html
numpy/doc/html/crarr.png	4112@94b884b6-d6fd-0310-90d3-974f1d3f35e1:branches%2Fnumpy.scons:numpy%2Fdoc%2Fhtml%2Fcrarr.png
numpy/doc/html/epydoc.css	4112@94b884b6-d6fd-0310-90d3-974f1d3f35e1:branches%2Fnumpy.scons:numpy%2Fdoc%2Fhtml%2Fepydoc.css
numpy/doc/html/module-tree.html	4112@94b884b6-d6fd-0310-90d3-974f1d3f35e1:branches%2Fnumpy.scons:numpy%2Fdoc%2Fhtml%2Fmodule-tree.html
numpy/doc/html/toc.html	4112@94b884b6-d6fd-0310-90d3-974f1d3f35e1:branches%2Fnumpy.scons:numpy%2Fdoc%2Fhtml%2Ftoc.html

Name: bzr:revision-id:v3-trunk0
   - 3737 david@david-laptop-20070920080908-n8pj8vmszdir3zoa
3738 david@david-laptop-20070920081509-58kkojgmml3t7jxs
3739 david@david-laptop-20070920081910-phlk1ujthksgpm0z
3740 david@david-laptop-20070920082641-bdhrt6eafeoli50i
3741 david@ar.media.kyoto-u.ac.jp-20070920130730-satdeppbh1k0bq2p
3743 david@ar.media.kyoto-u.ac.jp-20070921073742-vpv8pwv0j8fbd93m
3744 david@david-laptop-20070922101656-61kfi2faucemr2rl
3745 david@david-laptop-20070922113708-ror18thshang1cpu
3747 david@david-laptop-20070922140534-n9xsl096tjrzmct1
3749 david@david-laptop-20070922154007-usit009fr6vp377j
3750 david@david-laptop-20070923070011-leu2ozc2fy1q5cht
3751 david@david-laptop-20070924015925-dhsiao40jp7zsfp9
3752 david@ar.media.kyoto-u.ac.jp-20070924070657-nbw23j0ayan30cli
3753 david@ar.media.kyoto-u.ac.jp-20070924082918-i1lc1zikywi8czj4

   + 3737 david@david-laptop-20070920080908-n8pj8vmszdir3zoa
3738 david@david-laptop-20070920081509-58kkojgmml3t7jxs
3739 david@david-laptop-20070920081910-phlk1ujthksgpm0z
3740 david@david-laptop-20070920082641-bdhrt6eafeoli50i
3741 david@ar.media.kyoto-u.ac.jp-20070920130730-satdeppbh1k0bq2p
3743 david@ar.media.kyoto-u.ac.jp-20070921073742-vpv8pwv0j8fbd93m
3744 david@david-laptop-20070922101656-61kfi2faucemr2rl
3745 david@david-laptop-20070922113708-ror18thshang1cpu
3747 david@david-laptop-20070922140534-n9xsl096tjrzmct1
3749 david@david-laptop-20070922154007-usit009fr6vp377j
3750 david@david-laptop-20070923070011-leu2ozc2fy1q5cht
3751 david@david-laptop-20070924015925-dhsiao40jp7zsfp9
3752 david@ar.media.kyoto-u.ac.jp-20070924070657-nbw23j0ayan30cli
3753 david@ar.media.kyoto-u.ac.jp-20070924082918-i1lc1zikywi8czj4
3754 david@ar.media.kyoto-u.ac.jp-20070924083008-c0edtt8zs31yeh1q

Name: svk:merge
   - 0cecc865-f901-0410-ba8f-b2c75a717db0:/local/scipy_core:1600
0cecc865-f901-0410-ba8f-b2c75a717db0:/local/scipy_core/branches/newcore:723
ad311012-0000-0410-80c7-f29fd8fc08ef:/local/newcore:3539
   + 0cecc865-f901-0410-ba8f-b2c75a717db0:/local/scipy_core:1600
0cecc865-f901-0410-ba8f-b2c75a717db0:/local/scipy_core/branches/newcore:723
ad311012-0000-0410-80c7-f29fd8fc08ef:/local/newcore:353994b884b6-d6fd-0310-90d3-974f1d3f35e1:/branches/numpy.scons:4112

Name: bzr:ancestry:v3-trunk0
   + svn-v3-trunk0:94b884b6-d6fd-0310-90d3-974f1d3f35e1:branches%2Fnumpy.scons:4112


Modified: branches/numpy.scons/DEV_README.txt
===================================================================
--- branches/numpy.scons/DEV_README.txt	2007-09-24 11:36:30 UTC (rev 4113)
+++ branches/numpy.scons/DEV_README.txt	2007-09-24 11:36:47 UTC (rev 4114)
@@ -1,15 +1,15 @@
-
 Thank you for your willingness to help make NumPy the best array system
 available.
 
-The only rules we like to follow are to try hard to keep the SVN 
-repository in a buildable state and to not indiscriminately muck with 
-what others have contributed. 
+The only rules we like to follow are to try hard to keep the SVN
+repository in a buildable state and to not indiscriminately muck with
+what others have contributed.
 
 Simple changes and obvious improvements are always welcome.  Changes
-that fundamentally change behavior need discussion on 
+that fundamentally change behavior need discussion on
 numpy-discussions@scipy.org before anything is done.
 
+
 Please add meaningful comments when you check changes in.  These comments
-form the basis of the change-log.
-
+form the basis of the change-log.  Add unit tests to excercise new
+code, and regression tests whenever you fix a bug.

Modified: branches/numpy.scons/numpy/add_newdocs.py
===================================================================
--- branches/numpy.scons/numpy/add_newdocs.py	2007-09-24 11:36:30 UTC (rev 4113)
+++ branches/numpy.scons/numpy/add_newdocs.py	2007-09-24 11:36:47 UTC (rev 4114)
@@ -339,19 +339,31 @@
     """)
 
 add_newdoc('numpy.core.multiarray','where',
-    """where(condition, | x, y)
+    """where(condition, x, y) or where(condition)
 
-    The result is shaped like condition and has elements of x and y where
-    condition is respectively true or false.  If x or y are not given,
-    condition.nonzero() is returned.
+    Return elements from `x` or `y`, depending on `condition`.
 
-    To group the indices by element, rather than dimension, use
+    *Parameters*:
+        condition : array of bool
+            When True, yield x, otherwise yield y.
+        x,y : 1-dimensional arrays
+            Values from which to choose.
 
-        transpose(where(condition))
+    *Notes*
+        This is equivalent to
 
-    instead. This always results in a 2d array, with a row of indices for
-    each element that satisfies the condition.
+            [xv if c else yv for (c,xv,yv) in zip(condition,x,y)]
 
+        The result is shaped like `condition` and has elements of `x`
+        or `y` where `condition` is respectively True or False.
+
+        In the special case, where only `condition` is given, the
+        tuple condition.nonzero() is returned, instead.
+
+    *Examples*
+        >>> where([True,False,True],[1,2,3],[4,5,6])
+        array([1, 5, 3])
+
     """)
 
 

Modified: branches/numpy.scons/numpy/core/code_generators/generate_ufunc_api.py
===================================================================
--- branches/numpy.scons/numpy/core/code_generators/generate_ufunc_api.py	2007-09-24 11:36:30 UTC (rev 4113)
+++ branches/numpy.scons/numpy/core/code_generators/generate_ufunc_api.py	2007-09-24 11:36:47 UTC (rev 4114)
@@ -48,13 +48,13 @@
   return 0;
 }
 
-#define import_umath() { if (_import_umath() < 0) {PyErr_Print(); PyErr_SetString(PyExc_ImportError, "numpy.core.umath failed to import"); return; }}
+#define import_umath() { UFUNC_NOFPE if (_import_umath() < 0) {PyErr_Print(); PyErr_SetString(PyExc_ImportError, "numpy.core.umath failed to import"); return; }}
 
-#define import_umath1(ret) { if (_import_umath() < 0) {PyErr_Print(); PyErr_SetString(PyExc_ImportError, "numpy.core.umath failed to import"); return ret; }}
+#define import_umath1(ret) { UFUNC_NOFPE if (_import_umath() < 0) {PyErr_Print(); PyErr_SetString(PyExc_ImportError, "numpy.core.umath failed to import"); return ret; }}
 
-#define import_umath2(msg, ret) { if (_import_umath() < 0) {PyErr_Print(); PyErr_SetString(PyExc_ImportError, msg); return ret; }}
+#define import_umath2(msg, ret) { UFUNC_NOFPE if (_import_umath() < 0) {PyErr_Print(); PyErr_SetString(PyExc_ImportError, msg); return ret; }}
 
-#define import_ufunc() { if (_import_umath() < 0) {PyErr_Print(); PyErr_SetString(PyExc_ImportError, "numpy.core.umath failed to import"); }}
+#define import_ufunc() { UFUNC_NOFPE if (_import_umath() < 0) {PyErr_Print(); PyErr_SetString(PyExc_ImportError, "numpy.core.umath failed to import"); }}
 
 
 #endif

Modified: branches/numpy.scons/numpy/core/include/numpy/ufuncobject.h
===================================================================
--- branches/numpy.scons/numpy/core/include/numpy/ufuncobject.h	2007-09-24 11:36:30 UTC (rev 4113)
+++ branches/numpy.scons/numpy/core/include/numpy/ufuncobject.h	2007-09-24 11:36:47 UTC (rev 4114)
@@ -245,6 +245,11 @@
 
 #include <float.h>
 
+  /* Clear the floating point exception default of Borland C++ */
+#if defined(__BORLANDC__)
+#define UFUNC_NOFPE _control87(MCW_EM, MCW_EM);
+#endif
+
 #define UFUNC_CHECK_STATUS(ret) {		 \
 	int fpstatus = (int) _clearfp();			\
 									\
@@ -358,7 +363,12 @@
 }
 #endif
 
+  /* Make sure it gets defined if it isn't already */
+#ifndef UFUNC_NOFPE
+#define UFUNC_NOFPE
+#endif
 
+
 #ifdef __cplusplus
 }
 #endif

Modified: branches/numpy.scons/numpy/core/memmap.py
===================================================================
--- branches/numpy.scons/numpy/core/memmap.py	2007-09-24 11:36:30 UTC (rev 4113)
+++ branches/numpy.scons/numpy/core/memmap.py	2007-09-24 11:36:47 UTC (rev 4114)
@@ -80,20 +80,25 @@
         if obj is not None:
             if not isinstance(obj, memmap):
                 raise ValueError, "Cannot create a memmap array that way"
-            # it would be nice to carry the along the _mmap name
-            #  but then we might have problems because self could close
-            #  it while obj is still holding it.  So, we don't do
-            #  anything at this point. 
+            self._mmap = obj._mmap
         else:
             self._mmap = None
 
     def sync(self):
-        self._mmap.flush()
+        if self._mmap is not None:
+            self._mmap.flush()
 
     def close(self):
-        self._mmap.close()
+        if (self.base is self._mmap):
+            self._mmap.close()
+        elif self._mmap is not None:
+            raise ValueError, "Cannot close a memmap that is being used " \
+                  "by another object."
 
     def __del__(self):
-        if self._mmap is not None:
-            self._mmap.flush()
-            del self._mmap
+        self.sync()
+        try:
+            self.close()
+        except ValueError:
+            pass            
+        

Modified: branches/numpy.scons/numpy/core/src/multiarraymodule.c
===================================================================
--- branches/numpy.scons/numpy/core/src/multiarraymodule.c	2007-09-24 11:36:30 UTC (rev 4113)
+++ branches/numpy.scons/numpy/core/src/multiarraymodule.c	2007-09-24 11:36:47 UTC (rev 4114)
@@ -3675,9 +3675,11 @@
         op = ap;
     }
 
+    /* Will get native-byte order contiguous copy. 
+     */
     ap = (PyArrayObject *)\
-        PyArray_ContiguousFromAny((PyObject *)op,
-                                  PyArray_NOTYPE, 1, 0);
+        PyArray_ContiguousFromAny((PyObject *)op, 
+                                  op->descr->type_num, 1, 0);
 
     Py_DECREF(op);
     if (ap == NULL) return NULL;
@@ -3693,7 +3695,7 @@
     if (m == 0) {
         PyErr_SetString(MultiArrayError,
                         "attempt to get argmax/argmin "\
-                        "of an empty sequence??");
+                        "of an empty sequence");
         goto fail;
     }
 
@@ -3719,7 +3721,7 @@
     }
 
     NPY_BEGIN_THREADS_DESCR(ap->descr)
-        n = PyArray_SIZE(ap)/m;
+    n = PyArray_SIZE(ap)/m;
     rptr = (intp *)rp->data;
     for (ip = ap->data, i=0; i<n; i++, ip+=elsize*m) {
         arg_func(ip, m, rptr, ap);
@@ -3727,7 +3729,7 @@
     }
     NPY_END_THREADS_DESCR(ap->descr)
 
-        Py_DECREF(ap);
+    Py_DECREF(ap);
     if (copyret) {
         PyArrayObject *obj;
         obj = (PyArrayObject *)rp->base;
@@ -5996,8 +5998,8 @@
 {
     PyArrayObject *r;
     intp i;
-    char *dptr, *clean_sep;
-
+    char *dptr, *clean_sep, *tmp;
+    int err = 0;
     intp thisbuf = 0;
     intp size;
     intp bytes, totalbytes;
@@ -6023,19 +6025,29 @@
         dptr += dtype->elsize;
         if (num < 0 && thisbuf == size) {
             totalbytes += bytes;
-            r->data = PyDataMem_RENEW(r->data, totalbytes);
-            dptr = r->data + (totalbytes - bytes);
+            tmp = PyDataMem_RENEW(r->data, totalbytes);
+            if (tmp == NULL) {
+                err = 1;
+                break;
+            }
+	    r->data = tmp;
+            dptr = tmp + (totalbytes - bytes);
             thisbuf = 0;
         }
         if (skip_sep(&stream, clean_sep, stream_data) < 0)
             break;
     }
     if (num < 0) {
-        r->data = PyDataMem_RENEW(r->data, (*nread)*dtype->elsize);
-        PyArray_DIM(r,0) = *nread;
+        tmp = PyDataMem_RENEW(r->data, (*nread)*dtype->elsize);
+	if (tmp == NULL) err=1;
+	else {
+	    PyArray_DIM(r,0) = *nread;
+	    r->data = tmp;
+	}
     }
     NPY_END_ALLOW_THREADS;
     free(clean_sep);
+    if (err == 1) PyErr_NoMemory();
     if (PyErr_Occurred()) {
         Py_DECREF(r);
         return NULL;
@@ -6227,6 +6239,7 @@
 {
     PyArrayObject *ret;
     size_t nread = 0;
+    char *tmp;
 
     if (PyDataType_REFCHK(dtype)) {
         PyErr_SetString(PyExc_ValueError,
@@ -6260,8 +6273,13 @@
     if (((intp) nread) < num) {
         fprintf(stderr, "%ld items requested but only %ld read\n",
                 (long) num, (long) nread);
-        ret->data = PyDataMem_RENEW(ret->data,
-                                    nread * ret->descr->elsize);
+        tmp = PyDataMem_RENEW(ret->data,
+			      nread * ret->descr->elsize);
+	if (tmp == NULL) {
+	    Py_DECREF(ret);
+	    return PyErr_NoMemory();	    
+	}
+	ret->data = tmp;
         PyArray_DIM(ret,0) = nread;
     }
     return (PyObject *)ret;
@@ -6382,11 +6400,12 @@
       (assuming realloc is reasonably good about reusing space...)
     */
     if (i==0) i = 1;
-    ret->data = PyDataMem_RENEW(ret->data, i * elsize);
-    if (ret->data == NULL) {
+    new_data = PyDataMem_RENEW(ret->data, i * elsize);
+    if (new_data == NULL) {
         PyErr_SetString(PyExc_MemoryError, "cannot allocate array memory");
         goto done;
     }
+    ret->data = new_data;
 
  done:
     Py_XDECREF(iter);

Modified: branches/numpy.scons/numpy/core/tests/test_regression.py
===================================================================
--- branches/numpy.scons/numpy/core/tests/test_regression.py	2007-09-24 11:36:30 UTC (rev 4113)
+++ branches/numpy.scons/numpy/core/tests/test_regression.py	2007-09-24 11:36:47 UTC (rev 4114)
@@ -697,6 +697,11 @@
         x = N.array(['a']*32)
         assert_array_equal(x.argsort(kind='m'), N.arange(32))
 
+    def check_argmax_byteorder(self, level=rlevel):
+        """Ticket #546"""
+        a = N.arange(3, dtype='>f')
+        assert a[a.argmax()] == a.max()
+
     def check_numeric_random(self, level=rlevel):
         """Ticket #552"""
         from numpy.oldnumeric.random_array import randint
@@ -716,6 +721,10 @@
         assert x != y
         assert x == x
 
+    def check_mem_insert(self, level=rlevel):
+        """Ticket #572"""
+        N.lib.place(1,1,1)
 
+
 if __name__ == "__main__":
     NumpyTest().run()

Modified: branches/numpy.scons/numpy/distutils/__init__.py
===================================================================
--- branches/numpy.scons/numpy/distutils/__init__.py	2007-09-24 11:36:30 UTC (rev 4113)
+++ branches/numpy.scons/numpy/distutils/__init__.py	2007-09-24 11:36:47 UTC (rev 4114)
@@ -1,5 +1,22 @@
 
 from __version__ import version as __version__
+
+# Check that distutils has not been imported before.
+import sys
+if 'distutils' in sys.modules:
+    sys.stderr.write('''\
+********************************************************
+WARNING!WARNING!WARNING!WARNING!WARNING!WARNING!WARNING!
+
+distutils has been imported before numpy.distutils
+and now numpy.distutils cannot apply all of its
+customizations to distutils effectively.
+
+To avoid this warning, make sure that numpy.distutils
+is imported *before* distutils.
+********************************************************
+''')
+
 # Must import local ccompiler ASAP in order to get
 # customized CCompiler.spawn effective.
 import ccompiler

Modified: branches/numpy.scons/numpy/distutils/cpuinfo.py
===================================================================
--- branches/numpy.scons/numpy/distutils/cpuinfo.py	2007-09-24 11:36:30 UTC (rev 4113)
+++ branches/numpy.scons/numpy/distutils/cpuinfo.py	2007-09-24 11:36:47 UTC (rev 4114)
@@ -524,7 +524,6 @@
                     break
                 else:
                     pnum+=1
-                    print proc
                     info.append({"Processor":proc})
                     phnd=_winreg.OpenKey(chnd,proc)
                     pidx=0

Modified: branches/numpy.scons/numpy/distutils/misc_util.py
===================================================================
--- branches/numpy.scons/numpy/distutils/misc_util.py	2007-09-24 11:36:30 UTC (rev 4113)
+++ branches/numpy.scons/numpy/distutils/misc_util.py	2007-09-24 11:36:47 UTC (rev 4114)
@@ -5,6 +5,7 @@
 import copy
 import glob
 import atexit
+import string
 import tempfile
 
 try:
@@ -22,7 +23,7 @@
            'get_script_files', 'get_lib_source_files', 'get_data_files',
            'dot_join', 'get_frame', 'minrelpath','njoin',
            'is_sequence', 'is_string', 'as_list', 'gpaths', 'get_language',
-           'quote_args']
+           'quote_args', 'get_build_architecture']
 
 def quote_args(args):
     # don't used _nt_quote_args as it does not check if
@@ -321,7 +322,6 @@
 def msvc_on_amd64():
     if not (sys.platform=='win32' or os.name=='nt'):
         return
-    from distutils.msvccompiler import get_build_architecture
     if get_build_architecture() != 'AMD64':
         return
     if os.environ.has_key('DISTUTILS_USE_SDK'):
@@ -1534,3 +1534,21 @@
 
     f.close()
     return target
+
+if sys.version[:3] >= '2.5':
+    def get_build_architecture():
+        from distutils.msvccompiler import get_build_architecture
+        return get_build_architecture()
+else:
+    #copied from python 2.5.1 distutils/msvccompiler.py
+    def get_build_architecture():
+        """Return the processor architecture.
+        
+        Possible results are "Intel", "Itanium", or "AMD64".
+        """
+        prefix = " bit ("
+        i = string.find(sys.version, prefix)
+        if i == -1:
+            return "Intel"
+        j = string.find(sys.version, ")", i)
+        return sys.version[i+len(prefix):j]

Deleted: branches/numpy.scons/numpy/doc/HOWTO_DOCUMENT.py
===================================================================
--- branches/numpy.scons/numpy/doc/HOWTO_DOCUMENT.py	2007-09-24 11:36:30 UTC (rev 4113)
+++ branches/numpy.scons/numpy/doc/HOWTO_DOCUMENT.py	2007-09-24 11:36:47 UTC (rev 4114)
@@ -1,180 +0,0 @@
-# It is desireable that both NumPy and SciPy follow a convention for docstrings
-# that provide for some consistency while also allowing epydoc to produce
-# nicely-formatted reference guides. However, such a convention has not yet
-# been decided on. This is my current thinking on the topic.  If you have
-# suggestions for improvements, post them on the numpy-dev list together with
-# the epydoc output so they may be discussed.
-#
-# The docstring format uses reST syntax as interpreted by epydoc. The markup
-# in this proposal is as basic as possible and in particular avoids the use of
-# epydoc consolidated fields. This is both because there are a limited number
-# of such fields, inadequate to our current needs, and because epydoc moves
-# the fields to the end of the documentation, messing up the ordering. So here
-# standard definition lists are used instead.  Likewise, epydoc moves headings
-# and have an unwelcome size in the default style sheet, hence they have also
-# been avoided.
-#
-# A maximum line width of 79 is suggested, as this will allow the docstrings to
-# display on standard terminals. This convention is a bit old and traces back
-# to IBM punchcard days, but still seems to be the standard.
-#
-# Comments:
-#
-# 1) You can run epydoc on this file like so:
-#
-# $ epydoc HOWTO_DOCUMENT.txt
-#
-# The output will be in a directory named html in the same directory as this
-# document and may be viewed by loading the index.html file into your browser.
-#
-# 2) The developmental version of epydoc, version 3.0 beta or later, is
-# suggested as it is faster and produces better looking output. Epydoc can be
-# downloaded from http://epydoc.sourceforge.net/
-#
-# 3) The appearance of some elements can be changed in the epydoc.css
-# style sheet. The list headings, i.e. *Parameters*:, are emphasized text, so
-# their appearance is controlled by the definition of the <em>
-# tag. For instance, to make them bold, insert
-#
-# em     {font-weight: bold;}
-#
-# The variables' types are in a span of class rst-classifier, hence can be
-# changed by inserting something like:
-#
-# span.rst-classifier     {font-weight: normal;}
-#
-# 4) The first line of the signature should **not** copy the signature unless
-# the function is written in C, in which case it is mandatory.  If the function
-# signature is generic (uses *args or **kwds), then a function signature may be
-# included
-#
-# 5) Use optional in the "type" field for parameters that are non-keyword
-# optional for C-functions.
-#
-# 6) The Other Parameters section is for functions taking a lot of keywords
-# which are not always used or neeeded and whose description would clutter then
-# main purpose of the function. (Comment by Chuck : I think this should be
-# rarely used, if at all)
-#
-# 7) The See Also section can list additional related functions.  The purpose
-# of this section is to direct users to other functions they may not be aware
-# of or have easy means to discover (i.e. by looking at the docstring of the
-# module).  Thus, repeating functions that are in the same module is not useful
-# and can create a cluttered document.  Please use judgement when listing
-# additional functions.  Routines that provide additional information in their
-# docstrings for this function may be useful to include here.
-#
-# 8) The Notes section can contain algorithmic information if that is useful.
-#
-# 9) The Examples section is strongly encouraged.  The examples can provide a
-# mini-tutorial as well as additional regression testing. (Comment by Chuck:
-# blank lines in the numpy output, for instance in multidimensional arrays,
-# will break doctest.) You can run the tests by doing
-#
-# >>> import doctest
-# >>> doctest.testfile('HOWTO_DOCUMENT.txt')
-#
-#
-# Common reST concepts:
-
-# A reST-documented module should define
-#
-#   __docformat__ = 'restructuredtext en'
-#
-# at the top level in accordance with PEP 258.  Note that the __docformat__
-# variable in a package's __init__.py file does not apply to objects defined in
-# subpackages and submodules.
-#
-# For paragraphs, indentation is significant and indicates indentation in the
-# output. New paragraphs are marked with blank line.
-#
-# Use *italics*, **bold**, and ``courier`` if needed in any explanations (but
-# not for variable names and doctest code or multi-line code)
-#
-# Use :lm:`eqn` for in-line math in latex format (remember to use the
-# raw-format for your text string or escape any '\' symbols). Use :m:`eqn` for
-# non-latex math.
-#
-# A more extensive example of reST markup can be found here:
-# http://docutils.sourceforge.net/docs/user/rst/demo.txt
-# An example follows. Line spacing and indentation are significant and should
-# be carefully followed.
-
-__docformat__ = "restructuredtext en"
-
-
-def foo(var1, var2, long_var_name='hi') :
-    """One-line summary or signature.
-
-    Several sentences providing an extended description. You can put
-    text in mono-spaced type like so: ``var``.
-
-    *Parameters*:
-
-        var1 : {array_like}
-            Array_like means all those objects -- lists, nested lists, etc. --
-            that can be converted to an array.
-        var2 : {integer}
-            Write out the full type
-        long_variable_name : {'hi', 'ho'}, optional
-            Choices in brackets, default first when optional.
-
-    *Returns*:
-
-        named : {type}
-            Explanation
-        list
-            Explanation
-        of
-            Explanation
-        outputs
-            even more explaining
-
-    *Other Parameters*:
-
-        only_seldom_used_keywords : type
-            Explanation
-        common_parametrs_listed_above : type
-            Explanation
-
-    *See Also*:
-
-        `otherfunc` : relationship (optional)
-
-        `newfunc` : relationship (optional)
-
-    *Notes*
-
-        Notes about the implementation algorithm (if needed).
-
-        This can have multiple paragraphs as can all sections.
-
-    *Examples*
-
-        examples in doctest format
-
-        >>> a=[1,2,3]
-        >>> [x + 3 for x in a]
-        [4, 5, 6]
-
-    """
-    pass
-
-
-def newfunc() :
-    """Do nothing.
-
-    I never saw a purple cow.
-
-    """
-    pass
-
-
-def otherfunc() :
-    """Do nothing.
-
-    I never hope to see one.
-
-    """
-    pass
-

Added: branches/numpy.scons/numpy/doc/HOWTO_DOCUMENT.txt
===================================================================
--- branches/numpy.scons/numpy/doc/HOWTO_DOCUMENT.txt	2007-09-24 11:36:30 UTC (rev 4113)
+++ branches/numpy.scons/numpy/doc/HOWTO_DOCUMENT.txt	2007-09-24 11:36:47 UTC (rev 4114)
@@ -0,0 +1,173 @@
+=================================
+A Guide to NumPy/SciPy Docstrings
+=================================
+
+.. Contents::
+
+Overview
+--------
+
+A documentation string (docstring) is a string that describes a module,
+function, class, or method definition.  The docstring is a special attribute
+of the object (``object.__doc__``) and, for consistency, is surrounded by
+triple double quotes. 
+
+Obviously, it is highly desireable that both NumPy and SciPy follow a common
+convention for docstrings that provide for consistency while also allowing
+epydoc to produce nicely-formatted reference guides.  This document describes
+the current community consensus for this standard.  If you have suggestions
+for improvements, post them on the numpy-dev list together with the epydoc
+output so they may be discussed.
+
+Our docstring standard uses `reST <http://docutils.sourceforge.net/rst.html>`__
+syntax and is rendered using `epydoc <http://epydoc.sourceforge.net/>`__. The
+markup in this proposal is as basic as possible and in particular avoids the
+use of epydoc consolidated fields. This is both because there are a limited
+number of such fields, inadequate to our current needs, and because epydoc
+moves the fields to the end of the documentation, messing up the ordering. So
+here standard definition lists are used instead.  Likewise, epydoc moves
+headings and have an unwelcome size in the default style sheet, hence they
+have also been avoided.
+
+
+Status
+------
+
+We are currently trying to:
+
+1. Agree on docstring standards.
+
+2. Work with Ed loper to ensure that epydoc provides the functionality we
+need.
+
+3. Convert existing docstrings to the new format and write them for those
+that currently lack docstrings.
+
+
+Sections
+--------
+
+The proposed sections of the docstring are:
+
+1. **Short summary:**
+A one-line summary not using variable names or the function name (unless a
+C-function).
+
+2. **Extended summary:**
+A few sentences giving an extended description.
+
+3. **Parameters:**
+
+4. **Returns:**'
+
+5. **Other parameters:**
+An optional section used to describe little used
+parameters so that functions with a large number of keyword argument can still
+be well documented without cluttering the main parameters' list.
+
+6. **See also:**
+An optional section used to refer to related code.  This section can be
+extremely useful, but needs to be used with caution.  It can be difficult
+to maintain and if not used judiciously this section can quickly loose its
+usefulness.  The purpose of this section is to direct users to other
+functions they may not be aware of or have easy means to discover (i.e.,
+by looking at the docstring of the module).  Thus, repeating functions
+that are in the same module is not useful and can create a cluttered
+document.  Routines that provide additional information in their
+docstrings for this function may be useful to include here.
+
+7. **Notes:**
+An optional section that provides additional information
+about the code possibly including a discussion or presentation of the
+algorithm. This section may include mathematical equations possibly written
+in `LaTeX <http://www.latex-project.org/>`__.
+
+8. **Examples:**
+An optional section for examples using the
+`doctest <http://www.python.org/doc/lib/module-doctest.html>`__ format.  It
+can provide an inline mini-tutorial as well as additional regression testing.
+While optional, this section is strongly encouraged.  (Comment by Chuck:
+blank lines in the numpy output, for instance in multidimensional arrays,
+will break doctest.) You can run the tests by doing::
+
+  >>> import doctest
+  >>> doctest.testfile('example.py')
+
+
+Common reST concepts
+--------------------
+
+A reST-documented module should define::
+
+  __docformat__ = 'restructuredtext en'
+
+at the top level in accordance with
+`PEP 258 <http://www.python.org/dev/peps/pep-0258>`__.  Note that the
+__docformat__ variable in a package's __init__.py file does not apply to
+objects defined in subpackages and submodules.
+
+For paragraphs, indentation is significant and indicates indentation in the
+output. New paragraphs are marked with blank line.
+
+Use *italics*, **bold**, and ``courier`` if needed in any explanations (but
+not for variable names and doctest code or multi-line code)
+
+Use ``:lm:`eqn``` for in-line math in latex format (remember to use the
+raw-format for your text string or escape any '\' symbols). Use ``:m:`eqn```
+for non-latex math.
+
+A more extensive example of reST markup can be found here:
+http://docutils.sourceforge.net/docs/user/rst/demo.txt
+Line spacing and indentation are significant and should
+be carefully followed.
+
+
+
+Using Epydoc
+------------
+
+
+Currently we recommend that you build eydoc from the trunk::
+
+  svn co https://epydoc.svn.sourceforge.net/svnroot/epydoc/trunk/epydoc epydoc
+  cd epydoc/src
+  sudo python setup.py install
+
+The appearance of some elements can be changed in the epydoc.css
+style sheet. The list headings, i.e. *Parameters*:, are emphasized text, so
+their appearance is controlled by the definition of the <em>
+tag. For instance, to make them bold, insert::
+
+  em     {font-weight: bold;}
+
+The variables' types are in a span of class rst-classifier, hence can be
+changed by inserting something like::
+
+  span.rst-classifier     {font-weight: normal;}
+
+The first line of the signature should **not** copy the signature unless
+the function is written in C, in which case it is mandatory.  If the function
+signature is generic (uses ``*args`` or ``**kwds``), then a function signature
+may be included.
+
+Use optional in the "type" field for parameters that are non-keyword
+optional for C-functions.
+
+Example
+-------
+
+Here is a short example module in
+`plain text <http://svn.scipy.org/svn/numpy/trunk/numpy/doc/example.py>`__
+and
+`rendered <http://www.scipy.org/doc/example>`__
+
+To try this yourself, simply download the example.py::
+
+  svn co http://svn.scipy.org/svn/numpy/trunk/numpy/doc/example.py .
+
+You can run epydoc on this file like so::
+
+  $ epydoc example.txt
+
+The output will be in a directory named html in the same directory as this
+document and may be viewed by loading the index.html file into your browser.

Added: branches/numpy.scons/numpy/doc/example.py
===================================================================
--- branches/numpy.scons/numpy/doc/example.py	2007-09-24 11:36:30 UTC (rev 4113)
+++ branches/numpy.scons/numpy/doc/example.py	2007-09-24 11:36:47 UTC (rev 4114)
@@ -0,0 +1,99 @@
+"""This is the docstring for the example.py module.  Modules names should
+have short, all-lowercase names.  The module name may have underscores if
+this improves readability.
+
+Every module should have a docstring at the very top of the file.  The
+module's docstring may extend over multiple lines.  If your docstring does
+extend over multiple lines, the closing three quotation marks must be on
+a line by itself, preferably preceeded by a blank line.
+
+"""
+
+import os                      # standard library imports first
+
+import numpy as np             # related third party imports next
+import scipy as sp             # imports should be at the top of the module
+import matplotlib as mpl       # imports should usually be on separate lines
+
+
+__docformat__ = "restructuredtext en"
+
+
+def foo(var1, var2, long_var_name='hi') :
+    """One-line summary or signature.
+
+    Several sentences providing an extended description. You can put
+    text in mono-spaced type like so: ``var``.
+
+    *Parameters*:
+
+        var1 : {array_like}
+            Array_like means all those objects -- lists, nested lists, etc. --
+            that can be converted to an array.
+        var2 : {integer}
+            Write out the full type
+        long_variable_name : {'hi', 'ho'}, optional
+            Choices in brackets, default first when optional.
+
+    *Returns*:
+
+        named : {type}
+            Explanation
+        list
+            Explanation
+        of
+            Explanation
+        outputs
+            even more explaining
+
+    *Other Parameters*:
+
+        only_seldom_used_keywords : type
+            Explanation
+        common_parametrs_listed_above : type
+            Explanation
+
+    *See Also*:
+
+        `otherfunc` : relationship (optional)
+
+        `newfunc` : relationship (optional)
+
+    *Notes*
+
+        Notes about the implementation algorithm (if needed).
+
+        This can have multiple paragraphs as can all sections.
+
+    *Examples*
+
+        examples in doctest format
+
+        >>> a=[1,2,3]
+        >>> [x + 3 for x in a]
+        [4, 5, 6]
+
+    """
+
+    pass
+
+
+def newfunc() :
+    """Do nothing.
+
+    I never saw a purple cow.
+
+    """
+
+    pass
+
+
+def otherfunc() :
+    """Do nothing.
+
+    I never hope to see one.
+
+    """
+
+    pass
+

Added: branches/numpy.scons/numpy/doc/html/api-objects.txt
===================================================================
--- branches/numpy.scons/numpy/doc/html/api-objects.txt	2007-09-24 11:36:30 UTC (rev 4113)
+++ branches/numpy.scons/numpy/doc/html/api-objects.txt	2007-09-24 11:36:47 UTC (rev 4114)
@@ -0,0 +1,4 @@
+example	example-module.html
+example.otherfunc	example-module.html#otherfunc
+example.foo	example-module.html#foo
+example.newfunc	example-module.html#newfunc

Added: branches/numpy.scons/numpy/doc/html/crarr.png
===================================================================
--- branches/numpy.scons/numpy/doc/html/crarr.png	2007-09-24 11:36:30 UTC (rev 4113)
+++ branches/numpy.scons/numpy/doc/html/crarr.png	2007-09-24 11:36:47 UTC (rev 4114)
@@ -0,0 +1,4 @@
+‰PNG
+
+   
IHDR      
+   e¢E   ,tEXtCreation Time Tue 22 Aug 2006 00:43:10 -0500`X   tIMEÖ)Ó}Ö   	pHYs    ÂnÐu>   gAMA  ±üa   EPLTEÿÿÿÍð×ÏÀ€f4sW áÛЊrD`@ bCÜÕÈéäÜ–X{`,¯Ÿ€lN‡o@õóðª™xdEðí螊dÐÆ´”~TÖwÅv   tRNS @æØf   MIDATxÚc`@¼ì¼0&+š—Šˆ°»(’ˆ€ ;;/ðEXùØ‘?Ðn ƒª†—	b;'ª+˜˜YÐ#œ (r<£"    IEND®B`‚
\ No newline at end of file

Added: branches/numpy.scons/numpy/doc/html/epydoc.css
===================================================================
--- branches/numpy.scons/numpy/doc/html/epydoc.css	2007-09-24 11:36:30 UTC (rev 4113)
+++ branches/numpy.scons/numpy/doc/html/epydoc.css	2007-09-24 11:36:47 UTC (rev 4114)
@@ -0,0 +1,315 @@
+
+
+/* Epydoc CSS Stylesheet
+ *
+ * This stylesheet can be used to customize the appearance of epydoc's
+ * HTML output.
+ *
+ */
+
+/* Default Colors & Styles
+ *   - Set the default foreground & background color with 'body'; and 
+ *     link colors with 'a:link' and 'a:visited'.
+ *   - Use bold for decision list terms.
+ *   - The heading styles defined here are used for headings *within*
+ *     docstring descriptions.  All headings used by epydoc itself use
+ *     either class='epydoc' or class='toc' (CSS styles for both
+ *     defined below).
+ */
+body                        { background: #ffffff; color: #000000; }
+p                           { margin-top: 0.5em; margin-bottom: 0.5em; }
+a:link                      { color: #0000ff; }
+a:visited                   { color: #204080; }
+dt                          { font-weight: bold; }
+h1                          { font-size: +140%; font-style: italic;
+                              font-weight: bold; }
+h2                          { font-size: +125%; font-style: italic;
+                              font-weight: bold; }
+h3                          { font-size: +110%; font-style: italic;
+                              font-weight: normal; }
+code                        { font-size: 100%; }
+ 
+/* Page Header & Footer
+ *   - The standard page header consists of a navigation bar (with
+ *     pointers to standard pages such as 'home' and 'trees'); a
+ *     breadcrumbs list, which can be used to navigate to containing
+ *     classes or modules; options links, to show/hide private
+ *     variables and to show/hide frames; and a page title (using
+ *     <h1>).  The page title may be followed by a link to the
+ *     corresponding source code (using 'span.codelink').
+ *   - The footer consists of a navigation bar, a timestamp, and a
+ *     pointer to epydoc's homepage.
+ */ 
+h1.epydoc                   { margin: 0; font-size: +140%; font-weight: bold; }
+h2.epydoc                   { font-size: +130%; font-weight: bold; }
+h3.epydoc                   { font-size: +115%; font-weight: bold;
+                              margin-top: 0.2em; }
+td h3.epydoc                { font-size: +115%; font-weight: bold;
+                              margin-bottom: 0; }
+table.navbar                { background: #a0c0ff; color: #000000;
+                              border: 2px groove #c0d0d0; }
+table.navbar table          { color: #000000; }
+th.navbar-select            { background: #70b0ff;
+                              color: #000000; } 
+table.navbar a              { text-decoration: none; }  
+table.navbar a:link         { color: #0000ff; }
+table.navbar a:visited      { color: #204080; }
+span.breadcrumbs            { font-size: 85%; font-weight: bold; }
+span.options                { font-size: 70%; }
+span.codelink               { font-size: 85%; }
+td.footer                   { font-size: 85%; }
+
+/* Table Headers
+ *   - Each summary table and details section begins with a 'header'
+ *     row.  This row contains a section title (marked by
+ *     'span.table-header') as well as a show/hide private link
+ *     (marked by 'span.options', defined above).
+ *   - Summary tables that contain user-defined groups mark those
+ *     groups using 'group header' rows.
+ */
+td.table-header             { background: #70b0ff; color: #000000;
+                              border: 1px solid #608090; }
+td.table-header table       { color: #000000; }
+td.table-header table a:link      { color: #0000ff; }
+td.table-header table a:visited   { color: #204080; }
+span.table-header           { font-size: 120%; font-weight: bold; }
+th.group-header             { background: #c0e0f8; color: #000000;
+                              text-align: left; font-style: italic; 
+                              font-size: 115%; 
+                              border: 1px solid #608090; }
+
+/* Summary Tables (functions, variables, etc)
+ *   - Each object is described by a single row of the table with
+ *     two cells.  The left cell gives the object's type, and is
+ *     marked with 'code.summary-type'.  The right cell gives the
+ *     object's name and a summary description.
+ *   - CSS styles for the table's header and group headers are
+ *     defined above, under 'Table Headers'
+ */
+table.summary               { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090;
+                              margin-bottom: 0.5em; }
+td.summary                  { border: 1px solid #608090; }
+code.summary-type           { font-size: 85%; }
+table.summary a:link        { color: #0000ff; }
+table.summary a:visited     { color: #204080; }
+
+
+/* Details Tables (functions, variables, etc)
+ *   - Each object is described in its own div.
+ *   - A single-row summary table w/ table-header is used as
+ *     a header for each details section (CSS style for table-header
+ *     is defined above, under 'Table Headers').
+ */
+table.details               { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090;
+                              margin: .2em 0 0 0; }
+table.details table         { color: #000000; }
+table.details a:link        { color: #0000ff; }
+table.details a:visited     { color: #204080; }
+
+/* Fields */
+dl.fields                   { margin-left: 2em; margin-top: 1em;
+                              margin-bottom: 1em; }
+dl.fields dd ul             { margin-left: 0em; padding-left: 0em; }
+dl.fields dd ul li ul       { margin-left: 2em; padding-left: 0em; }
+div.fields                  { margin-left: 2em; }
+div.fields p                { margin-bottom: 0.5em; }
+
+/* Index tables (identifier index, term index, etc)
+ *   - link-index is used for indices containing lists of links
+ *     (namely, the identifier index & term index).
+ *   - index-where is used in link indices for the text indicating
+ *     the container/source for each link.
+ *   - metadata-index is used for indices containing metadata
+ *     extracted from fields (namely, the bug index & todo index).
+ */
+table.link-index            { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090; }
+td.link-index               { border-width: 0px; }
+table.link-index a:link     { color: #0000ff; }
+table.link-index a:visited  { color: #204080; }
+span.index-where            { font-size: 70%; }
+table.metadata-index        { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090; 
+                              margin: .2em 0 0 0; }
+td.metadata-index           { border-width: 1px; border-style: solid; }
+table.metadata-index a:link { color: #0000ff; }
+table.metadata-index a:visited  { color: #204080; }
+
+/* Function signatures
+ *   - sig* is used for the signature in the details section.
+ *   - .summary-sig* is used for the signature in the summary 
+ *     table, and when listing property accessor functions.
+ * */
+.sig-name                   { color: #006080; }
+.sig-arg                    { color: #008060; }
+.sig-default                { color: #602000; }
+.summary-sig                { font-family: monospace; }
+.summary-sig-name           { color: #006080; font-weight: bold; }
+table.summary a.summary-sig-name:link
+                            { color: #006080; font-weight: bold; }
+table.summary a.summary-sig-name:visited
+                            { color: #006080; font-weight: bold; }
+.summary-sig-arg            { color: #006040; }
+.summary-sig-default        { color: #501800; }
+
+/* To render variables, classes etc. like functions */
+table.summary .summary-name { color: #006080; font-weight: bold;
+                              font-family: monospace; }
+table.summary
+     a.summary-name:link    { color: #006080; font-weight: bold;
+                              font-family: monospace; }
+table.summary
+    a.summary-name:visited  { color: #006080; font-weight: bold;
+                              font-family: monospace; }
+
+/* Variable values
+ *   - In the 'variable details' sections, each varaible's value is
+ *     listed in a 'pre.variable' box.  The width of this box is
+ *     restricted to 80 chars; if the value's repr is longer than
+ *     this it will be wrapped, using a backslash marked with
+ *     class 'variable-linewrap'.  If the value's repr is longer
+ *     than 3 lines, the rest will be ellided; and an ellipsis
+ *     marker ('...' marked with 'variable-ellipsis') will be used.
+ *   - If the value is a string, its quote marks will be marked
+ *     with 'variable-quote'.
+ *   - If the variable is a regexp, it is syntax-highlighted using
+ *     the re* CSS classes.
+ */
+pre.variable                { padding: .5em; margin: 0;
+                              background: #dce4ec; color: #000000;
+                              border: 1px solid #708890; }
+.variable-linewrap          { color: #604000; font-weight: bold; }
+.variable-ellipsis          { color: #604000; font-weight: bold; }
+.variable-quote             { color: #604000; font-weight: bold; }
+.variable-group             { color: #008000; font-weight: bold; }
+.variable-op                { color: #604000; font-weight: bold; }
+.variable-string            { color: #006030; }
+.variable-unknown           { color: #a00000; font-weight: bold; }
+.re                         { color: #000000; }
+.re-char                    { color: #006030; }
+.re-op                      { color: #600000; }
+.re-group                   { color: #003060; }
+.re-ref                     { color: #404040; }
+
+/* Base tree
+ *   - Used by class pages to display the base class hierarchy.
+ */
+pre.base-tree               { font-size: 80%; margin: 0; }
+
+/* Frames-based table of contents headers
+ *   - Consists of two frames: one for selecting modules; and
+ *     the other listing the contents of the selected module.
+ *   - h1.toc is used for each frame's heading
+ *   - h2.toc is used for subheadings within each frame.
+ */
+h1.toc                      { text-align: center; font-size: 105%;
+                              margin: 0; font-weight: bold;
+                              padding: 0; }
+h2.toc                      { font-size: 100%; font-weight: bold; 
+                              margin: 0.5em 0 0 -0.3em; }
+
+/* Syntax Highlighting for Source Code
+ *   - doctest examples are displayed in a 'pre.py-doctest' block.
+ *     If the example is in a details table entry, then it will use
+ *     the colors specified by the 'table pre.py-doctest' line.
+ *   - Source code listings are displayed in a 'pre.py-src' block.
+ *     Each line is marked with 'span.py-line' (used to draw a line
+ *     down the left margin, separating the code from the line
+ *     numbers).  Line numbers are displayed with 'span.py-lineno'.
+ *     The expand/collapse block toggle button is displayed with
+ *     'a.py-toggle' (Note: the CSS style for 'a.py-toggle' should not
+ *     modify the font size of the text.)
+ *   - If a source code page is opened with an anchor, then the
+ *     corresponding code block will be highlighted.  The code
+ *     block's header is highlighted with 'py-highlight-hdr'; and
+ *     the code block's body is highlighted with 'py-highlight'.
+ *   - The remaining py-* classes are used to perform syntax
+ *     highlighting (py-string for string literals, py-name for names,
+ *     etc.)
+ */
+pre.py-doctest              { padding: .5em; margin: 1em;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #708890; }
+table pre.py-doctest        { background: #dce4ec;
+                              color: #000000; }
+pre.py-src                  { border: 2px solid #000000; 
+                              background: #f0f0f0; color: #000000; }
+.py-line                    { border-left: 2px solid #000000; 
+                              margin-left: .2em; padding-left: .4em; }
+.py-lineno                  { font-style: italic; font-size: 90%;
+                              padding-left: .5em; }
+a.py-toggle                 { text-decoration: none; }
+div.py-highlight-hdr        { border-top: 2px solid #000000;
+                              border-bottom: 2px solid #000000;
+                              background: #d8e8e8; }
+div.py-highlight            { border-bottom: 2px solid #000000;
+                              background: #d0e0e0; }
+.py-prompt                  { color: #005050; font-weight: bold;}
+.py-more                    { color: #005050; font-weight: bold;}
+.py-string                  { color: #006030; }
+.py-comment                 { color: #003060; }
+.py-keyword                 { color: #600000; }
+.py-output                  { color: #404040; }
+.py-name                    { color: #000050; }
+.py-name:link               { color: #000050 !important; }
+.py-name:visited            { color: #000050 !important; }
+.py-number                  { color: #005000; }
+.py-defname                 { color: #000060; font-weight: bold; }
+.py-def-name                { color: #000060; font-weight: bold; }
+.py-base-class              { color: #000060; }
+.py-param                   { color: #000060; }
+.py-docstring               { color: #006030; }
+.py-decorator               { color: #804020; }
+/* Use this if you don't want links to names underlined: */
+/*a.py-name                   { text-decoration: none; }*/
+
+/* Graphs & Diagrams
+ *   - These CSS styles are used for graphs & diagrams generated using
+ *     Graphviz dot.  'img.graph-without-title' is used for bare
+ *     diagrams (to remove the border created by making the image
+ *     clickable).
+ */
+img.graph-without-title     { border: none; }
+img.graph-with-title        { border: 1px solid #000000; }
+span.graph-title            { font-weight: bold; }
+span.graph-caption          { }
+
+/* General-purpose classes
+ *   - 'p.indent-wrapped-lines' defines a paragraph whose first line
+ *     is not indented, but whose subsequent lines are.
+ *   - The 'nomargin-top' class is used to remove the top margin (e.g.
+ *     from lists).  The 'nomargin' class is used to remove both the
+ *     top and bottom margin (but not the left or right margin --
+ *     for lists, that would cause the bullets to disappear.)
+ */
+p.indent-wrapped-lines      { padding: 0 0 0 7em; text-indent: -7em; 
+                              margin: 0; }
+.nomargin-top               { margin-top: 0; }
+.nomargin                   { margin-top: 0; margin-bottom: 0; }
+
+/* HTML Log */
+div.log-block               { padding: 0; margin: .5em 0 .5em 0;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #000000; }
+div.log-error               { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: #ffb0b0; color: #000000;
+                              border: 1px solid #000000; }
+div.log-warning             { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: #ffffb0; color: #000000;
+                              border: 1px solid #000000; }
+div.log-info               { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: #b0ffb0; color: #000000;
+                              border: 1px solid #000000; }
+h2.log-hdr                  { background: #70b0ff; color: #000000;
+                              margin: 0; padding: 0em 0.5em 0em 0.5em;
+                              border-bottom: 1px solid #000000; font-size: 110%; }
+p.log                       { font-weight: bold; margin: .5em 0 .5em 0; }
+tr.opt-changed              { color: #000000; font-weight: bold; }
+tr.opt-default              { color: #606060; }
+pre.log                     { margin: 0; padding: 0; padding-left: 1em; }

Added: branches/numpy.scons/numpy/doc/html/epydoc.js
===================================================================
--- branches/numpy.scons/numpy/doc/html/epydoc.js	2007-09-24 11:36:30 UTC (rev 4113)
+++ branches/numpy.scons/numpy/doc/html/epydoc.js	2007-09-24 11:36:47 UTC (rev 4114)
@@ -0,0 +1,280 @@
+function toggle_private() {
+        // Search for any private/public links on this page.  Store
+        // their old text in "cmd," so we will know what action to
+        // take; and change their text to the opposite action.
+        var cmd = "?";
+        var elts = document.getElementsByTagName("a");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "privatelink") {
+            cmd = elts[i].innerHTML;
+            elts[i].innerHTML = ((cmd && cmd.substr(0,4)=="show")?
+                                    "hide&nbsp;private":"show&nbsp;private");
+          }
+        }
+        // Update all DIVs containing private objects.
+        var elts = document.getElementsByTagName("div");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "private") {
+            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");
+          }
+        }
+        // Update all table rowss containing private objects.  Note, we
+        // use "" instead of "block" becaue IE & firefox disagree on what
+        // this should be (block vs table-row), and "" just gives the
+        // default for both browsers.
+        var elts = document.getElementsByTagName("tr");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "private") {
+            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"");
+          }
+        }
+        // Update all list items containing private objects.
+        var elts = document.getElementsByTagName("li");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "private") {
+            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?
+                                        "none":"list-item");
+          }
+        }
+        // Update all list items containing private objects.
+        var elts = document.getElementsByTagName("ul");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "private") {
+            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");
+          }
+        }
+        // Set a cookie to remember the current option.
+        document.cookie = "EpydocPrivate="+cmd;
+      }
+function getCookie(name) {
+        var dc = document.cookie;
+        var prefix = name + "=";
+        var begin = dc.indexOf("; " + prefix);
+        if (begin == -1) {
+          begin = dc.indexOf(prefix);
+          if (begin != 0) return null;
+        } else
+        { begin += 2; }
+        var end = document.cookie.indexOf(";", begin);
+        if (end == -1)
+        { end = dc.length; }
+        return unescape(dc.substring(begin + prefix.length, end));
+      }
+function setFrame(url1, url2) {
+          parent.frames[1].location.href = url1;
+          parent.frames[2].location.href = url2;
+      }
+function checkCookie() {
+        var cmd=getCookie("EpydocPrivate");
+        if (cmd && cmd.substr(0,4)!="show" && location.href.indexOf("#_") < 0)
+            toggle_private();
+      }
+function toggleCallGraph(id) {
+        var elt = document.getElementById(id);
+        if (elt.style.display == "none")
+            elt.style.display = "block";
+        else
+            elt.style.display = "none";
+      }
+function expand(id) {
+  var elt = document.getElementById(id+"-expanded");
+  if (elt) elt.style.display = "block";
+  var elt = document.getElementById(id+"-expanded-linenums");
+  if (elt) elt.style.display = "block";
+  var elt = document.getElementById(id+"-collapsed");
+  if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }
+  var elt = document.getElementById(id+"-collapsed-linenums");
+  if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }
+  var elt = document.getElementById(id+"-toggle");
+  if (elt) { elt.innerHTML = "-"; }
+}
+
+function collapse(id) {
+  var elt = document.getElementById(id+"-expanded");
+  if (elt) elt.style.display = "none";
+  var elt = document.getElementById(id+"-expanded-linenums");
+  if (elt) elt.style.display = "none";
+  var elt = document.getElementById(id+"-collapsed-linenums");
+  if (elt) { elt.innerHTML = "<br />"; elt.style.display="block"; }
+  var elt = document.getElementById(id+"-toggle");
+  if (elt) { elt.innerHTML = "+"; }
+  var elt = document.getElementById(id+"-collapsed");
+  if (elt) {
+    elt.style.display = "block";
+    
+    var indent = elt.getAttribute("indent");
+    var pad = elt.getAttribute("pad");
+    var s = "<tt class='py-lineno'>";
+    for (var i=0; i<pad.length; i++) { s += "&nbsp;" }
+    s += "</tt>";
+    s += "&nbsp;&nbsp;<tt class='py-line'>";
+    for (var i=0; i<indent.length; i++) { s += "&nbsp;" }
+    s += "<a href='#' onclick='expand(\"" + id;
+    s += "\");return false'>...</a></tt><br />";
+    elt.innerHTML = s;
+  }
+}
+
+function toggle(id) {
+  elt = document.getElementById(id+"-toggle");
+  if (elt.innerHTML == "-")
+      collapse(id); 
+  else
+      expand(id);
+  return false;
+}
+
+function highlight(id) {
+  var elt = document.getElementById(id+"-def");
+  if (elt) elt.className = "py-highlight-hdr";
+  var elt = document.getElementById(id+"-expanded");
+  if (elt) elt.className = "py-highlight";
+  var elt = document.getElementById(id+"-collapsed");
+  if (elt) elt.className = "py-highlight";
+}
+
+function num_lines(s) {
+  var n = 1;
+  var pos = s.indexOf("\n");
+  while ( pos > 0) {
+    n += 1;
+    pos = s.indexOf("\n", pos+1);
+  }
+  return n;
+}
+
+// Collapse all blocks that mave more than `min_lines` lines.
+function collapse_all(min_lines) {
+  var elts = document.getElementsByTagName("div");
+  for (var i=0; i<elts.length; i++) {
+    var elt = elts[i];
+    var split = elt.id.indexOf("-");
+    if (split > 0)
+      if (elt.id.substring(split, elt.id.length) == "-expanded")
+        if (num_lines(elt.innerHTML) > min_lines)
+          collapse(elt.id.substring(0, split));
+  }
+}
+
+function expandto(href) {
+  var start = href.indexOf("#")+1;
+  if (start != 0 && start != href.length) {
+    if (href.substring(start, href.length) != "-") {
+      collapse_all(4);
+      pos = href.indexOf(".", start);
+      while (pos != -1) {
+        var id = href.substring(start, pos);
+        expand(id);
+        pos = href.indexOf(".", pos+1);
+      }
+      var id = href.substring(start, href.length);
+      expand(id);
+      highlight(id);
+    }
+  }
+}
+
+function kill_doclink(id) {
+  var parent = document.getElementById(id);
+  parent.removeChild(parent.childNodes.item(0));
+}
+function auto_kill_doclink(ev) {
+  if (!ev) var ev = window.event;
+  if (!this.contains(ev.toElement)) {
+    var parent = document.getElementById(this.parentID);
+    parent.removeChild(parent.childNodes.item(0));
+  }
+}
+
+function doclink(id, name, targets_id) {
+  var elt = document.getElementById(id);
+
+  // If we already opened the box, then destroy it.
+  // (This case should never occur, but leave it in just in case.)
+  if (elt.childNodes.length > 1) {
+    elt.removeChild(elt.childNodes.item(0));
+  }
+  else {
+    // The outer box: relative + inline positioning.
+    var box1 = document.createElement("div");
+    box1.style.position = "relative";
+    box1.style.display = "inline";
+    box1.style.top = 0;
+    box1.style.left = 0;
+  
+    // A shadow for fun
+    var shadow = document.createElement("div");
+    shadow.style.position = "absolute";
+    shadow.style.left = "-1.3em";
+    shadow.style.top = "-1.3em";
+    shadow.style.background = "#404040";
+    
+    // The inner box: absolute positioning.
+    var box2 = document.createElement("div");
+    box2.style.position = "relative";
+    box2.style.border = "1px solid #a0a0a0";
+    box2.style.left = "-.2em";
+    box2.style.top = "-.2em";
+    box2.style.background = "white";
+    box2.style.padding = ".3em .4em .3em .4em";
+    box2.style.fontStyle = "normal";
+    box2.onmouseout=auto_kill_doclink;
+    box2.parentID = id;
+
+    // Get the targets
+    var targets_elt = document.getElementById(targets_id);
+    var targets = targets_elt.getAttribute("targets");
+    var links = "";
+    target_list = targets.split(",");
+    for (var i=0; i<target_list.length; i++) {
+        var target = target_list[i].split("=");
+        links += "<li><a href='" + target[1] + 
+               "' style='text-decoration:none'>" +
+               target[0] + "</a></li>";
+    }
+  
+    // Put it all together.
+    elt.insertBefore(box1, elt.childNodes.item(0));
+    //box1.appendChild(box2);
+    box1.appendChild(shadow);
+    shadow.appendChild(box2);
+    box2.innerHTML =
+        "Which <b>"+name+"</b> do you want to see documentation for?" +
+        "<ul style='margin-bottom: 0;'>" +
+        links + 
+        "<li><a href='#' style='text-decoration:none' " +
+        "onclick='kill_doclink(\""+id+"\");return false;'>"+
+        "<i>None of the above</i></a></li></ul>";
+  }
+  return false;
+}
+
+function get_anchor() {
+          var href = location.href;
+          var start = href.indexOf("#")+1;
+          if ((start != 0) && (start != href.length))
+              return href.substring(start, href.length);
+      }
+function redirect_url(dottedName) {
+          // Scan through each element of the "pages" list, and check
+          // if "name" matches with any of them.
+          for (var i=0; i<pages.length; i++) {
+
+              // Each page has the form "<pagename>-m" or "<pagename>-c";
+              // extract the <pagename> portion & compare it to dottedName.
+              var pagename = pages[i].substring(0, pages[i].length-2);
+              if (pagename == dottedName.substring(0,pagename.length)) {
+
+                  // We've found a page that matches `dottedName`;
+                  // construct its URL, using leftover `dottedName`
+                  // content to form an anchor.
+                  var pagetype = pages[i].charAt(pages[i].length-1);
+                  var url = pagename + ((pagetype=="m")?"-module.html":
+                                                        "-class.html");
+                  if (dottedName.length > pagename.length)
+                      url += "#" + dottedName.substring(pagename.length+1,
+                                                        dottedName.length);
+                  return url;
+              }
+          }
+      }

Added: branches/numpy.scons/numpy/doc/html/example-module.html
===================================================================
--- branches/numpy.scons/numpy/doc/html/example-module.html	2007-09-24 11:36:30 UTC (rev 4113)
+++ branches/numpy.scons/numpy/doc/html/example-module.html	2007-09-24 11:36:47 UTC (rev 4114)
@@ -0,0 +1,316 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>example</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+      <th class="navbar" width="100%"></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        Module&nbsp;example
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="example-module.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module example</h1><p class="nomargin-top"><span class="codelink"><a href="example-pysrc.html">source&nbsp;code</a></span></p>
+<p>This is the docstring for the example.py module.  Modules names should
+have short, all-lowercase names.  The module name may have underscores if
+this improves readability.</p>
+<p>Every module should have a docstring at the very top of the file.  The
+module's docstring may extend over multiple lines.  If your docstring does
+extend over multiple lines, the closing three quotation marks must be on
+a line by itself, preferably preceeded by a blank line.</p>
+
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Functions</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Functions"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="example-module.html#foo" class="summary-sig-name">foo</a>(<span class="summary-sig-arg">var1</span>,
+        <span class="summary-sig-arg">var2</span>,
+        <span class="summary-sig-arg">long_var_name</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">hi</code><code class="variable-quote">'</code></span>)</span><br />
+      One-line summary or signature.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="example-pysrc.html#foo">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="example-module.html#newfunc" class="summary-sig-name">newfunc</a>()</span><br />
+      Do nothing.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="example-pysrc.html#newfunc">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="example-module.html#otherfunc" class="summary-sig-name">otherfunc</a>()</span><br />
+      Do nothing.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="example-pysrc.html#otherfunc">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Function Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-FunctionDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="foo"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">foo</span>(<span class="sig-arg">var1</span>,
+        <span class="sig-arg">var2</span>,
+        <span class="sig-arg">long_var_name</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">hi</code><code class="variable-quote">'</code></span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="example-pysrc.html#foo">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </table>
+  
+  <p>One-line summary or signature.</p>
+<p>Several sentences providing an extended description. You can put
+text in mono-spaced type like so: <tt class="rst-docutils literal"><span class="pre">var</span></tt>.</p>
+<p><em>Parameters</em>:</p>
+<blockquote>
+<dl class="rst-docutils">
+<dt>var1 <span class="classifier-delimiter">:</span> <span class="rst-classifier">{array_like}</span></dt>
+<dd>Array_like means all those objects -- lists, nested lists, etc. --
+that can be converted to an array.</dd>
+<dt>var2 <span class="classifier-delimiter">:</span> <span class="rst-classifier">{integer}</span></dt>
+<dd>Write out the full type</dd>
+<dt>long_variable_name <span class="classifier-delimiter">:</span> <span class="rst-classifier">{'hi', 'ho'}, optional</span></dt>
+<dd>Choices in brackets, default first when optional.</dd>
+</dl>
+</blockquote>
+<p><em>Returns</em>:</p>
+<blockquote>
+<dl class="rst-docutils">
+<dt>named <span class="classifier-delimiter">:</span> <span class="rst-classifier">{type}</span></dt>
+<dd>Explanation</dd>
+<dt>list</dt>
+<dd>Explanation</dd>
+<dt>of</dt>
+<dd>Explanation</dd>
+<dt>outputs</dt>
+<dd>even more explaining</dd>
+</dl>
+</blockquote>
+<p><em>Other Parameters</em>:</p>
+<blockquote>
+<dl class="rst-docutils">
+<dt>only_seldom_used_keywords <span class="classifier-delimiter">:</span> <span class="rst-classifier">type</span></dt>
+<dd>Explanation</dd>
+<dt>common_parametrs_listed_above <span class="classifier-delimiter">:</span> <span class="rst-classifier">type</span></dt>
+<dd>Explanation</dd>
+</dl>
+</blockquote>
+<p><em>See Also</em>:</p>
+<blockquote>
+<p><a href="example-module.html#otherfunc" class="link">otherfunc</a> : relationship (optional)</p>
+<p><a href="example-module.html#newfunc" class="link">newfunc</a> : relationship (optional)</p>
+</blockquote>
+<p><em>Notes</em></p>
+<blockquote>
+<p>Notes about the implementation algorithm (if needed).</p>
+<p>This can have multiple paragraphs as can all sections.</p>
+</blockquote>
+<p><em>Examples</em></p>
+<blockquote>
+<p>examples in doctest format</p>
+<pre class="py-doctest">
+<span class="py-prompt">&gt;&gt;&gt; </span>a=[1,2,3]
+<span class="py-prompt">&gt;&gt;&gt; </span>[x + 3 <span class="py-keyword">for</span> x <span class="py-keyword">in</span> a]
+<span class="py-output">[4, 5, 6]</span></pre>
+</blockquote>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="newfunc"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">newfunc</span>()</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="example-pysrc.html#newfunc">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </table>
+  
+  <p>Do nothing.</p>
+<p>I never saw a purple cow.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="otherfunc"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">otherfunc</span>()</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="example-pysrc.html#otherfunc">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </table>
+  
+  <p>Do nothing.</p>
+<p>I never hope to see one.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+      <th class="navbar" width="100%"></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sun Sep 23 13:30:28 2007
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>

Added: branches/numpy.scons/numpy/doc/html/example-pysrc.html
===================================================================
--- branches/numpy.scons/numpy/doc/html/example-pysrc.html	2007-09-24 11:36:30 UTC (rev 4113)
+++ branches/numpy.scons/numpy/doc/html/example-pysrc.html	2007-09-24 11:36:47 UTC (rev 4114)
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>example</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+      <th class="navbar" width="100%"></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        Module&nbsp;example
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="example-pysrc.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="example-module.html">Module example</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-docstring">"""This is the docstring for the example.py module.  Modules names should</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-docstring">have short, all-lowercase names.  The module name may have underscores if</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-docstring">this improves readability.</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-docstring">Every module should have a docstring at the very top of the file.  The</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-docstring">module's docstring may extend over multiple lines.  If your docstring does</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-docstring">extend over multiple lines, the closing three quotation marks must be on</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-docstring">a line by itself, preferably preceeded by a blank line.</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt>                      <tt class="py-comment"># standard library imports first</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">numpy</tt> <tt class="py-keyword">as</tt> <tt class="py-name">np</tt>             <tt class="py-comment"># related third party imports next</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">scipy</tt> <tt class="py-keyword">as</tt> <tt class="py-name">sp</tt>             <tt class="py-comment"># imports should be at the top of the module</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">matplotlib</tt> <tt class="py-keyword">as</tt> <tt class="py-name">mpl</tt>       <tt class="py-comment"># imports should usually be on separate lines</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt> <tt class="py-op">=</tt> <tt class="py-string">"restructuredtext en"</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"> </tt>
+<a name="foo"></a><div id="foo-def"><a name="L22"></a><tt class="py-lineno"> 22</tt> <a class="py-toggle" href="#" id="foo-toggle" onclick="return toggle('foo');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="example-module.html#foo">foo</a><tt class="py-op">(</tt><tt class="py-param">var1</tt><tt class="py-op">,</tt> <tt class="py-param">var2</tt><tt class="py-op">,</tt> <tt class="py-param">long_var_name</tt><tt class="py-op">=</tt><tt class="py-string">'hi'</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> </tt>
+</div><div id="foo-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="foo-expanded"><a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line">    <tt class="py-docstring">"""One-line summary or signature.</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-docstring">    Several sentences providing an extended description. You can put</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-docstring">    text in mono-spaced type like so: ``var``.</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-docstring">    *Parameters*:</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-docstring">        var1 : {array_like}</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-docstring">            Array_like means all those objects -- lists, nested lists, etc. --</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-docstring">            that can be converted to an array.</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt class="py-docstring">        var2 : {integer}</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt class="py-docstring">            Write out the full type</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-docstring">        long_variable_name : {'hi', 'ho'}, optional</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-docstring">            Choices in brackets, default first when optional.</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"><tt class="py-docstring">    *Returns*:</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-docstring">        named : {type}</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-docstring">            Explanation</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-docstring">        list</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-docstring">            Explanation</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-docstring">        of</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-docstring">            Explanation</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-docstring">        outputs</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-docstring">            even more explaining</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"><tt class="py-docstring">    *Other Parameters*:</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"><tt class="py-docstring">        only_seldom_used_keywords : type</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt class="py-docstring">            Explanation</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"><tt class="py-docstring">        common_parametrs_listed_above : type</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-docstring">            Explanation</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-docstring">    *See Also*:</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-docstring">        `otherfunc` : relationship (optional)</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-docstring">        `newfunc` : relationship (optional)</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line"><tt class="py-docstring">    *Notes*</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"><tt class="py-docstring">        Notes about the implementation algorithm (if needed).</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"><tt class="py-docstring">        This can have multiple paragraphs as can all sections.</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"><tt class="py-docstring">    *Examples*</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"><tt class="py-docstring">        examples in doctest format</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; a=[1,2,3]</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; [x + 3 for x in a]</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt class="py-docstring">        [4, 5, 6]</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"> </tt>
+<a name="newfunc"></a><div id="newfunc-def"><a name="L81"></a><tt class="py-lineno"> 81</tt> <a class="py-toggle" href="#" id="newfunc-toggle" onclick="return toggle('newfunc');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="example-module.html#newfunc">newfunc</a><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> </tt>
+</div><div id="newfunc-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="newfunc-expanded"><a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">    <tt class="py-docstring">"""Do nothing.</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"><tt class="py-docstring">    I never saw a purple cow.</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"> </tt>
+<a name="otherfunc"></a><div id="otherfunc-def"><a name="L91"></a><tt class="py-lineno"> 91</tt> <a class="py-toggle" href="#" id="otherfunc-toggle" onclick="return toggle('otherfunc');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="example-module.html#otherfunc">otherfunc</a><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> </tt>
+</div><div id="otherfunc-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="otherfunc-expanded"><a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">    <tt class="py-docstring">"""Do nothing.</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"><tt class="py-docstring">    I never hope to see one.</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+      <th class="navbar" width="100%"></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sun Sep 23 13:30:28 2007
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>

Added: branches/numpy.scons/numpy/doc/html/frames.html
===================================================================
--- branches/numpy.scons/numpy/doc/html/frames.html	2007-09-24 11:36:30 UTC (rev 4113)
+++ branches/numpy.scons/numpy/doc/html/frames.html	2007-09-24 11:36:47 UTC (rev 4114)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+          "DTD/xhtml1-frameset.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title> API Documentation </title>
+</head>
+<frameset cols="20%,80%">
+  <frameset rows="30%,70%">
+    <frame src="toc.html" name="moduleListFrame"
+           id="moduleListFrame" />
+    <frame src="toc-everything.html" name="moduleFrame"
+           id="moduleFrame" />
+  </frameset>
+  <frame src="example-module.html" name="mainFrame" id="mainFrame" />
+</frameset>
+</html>

Added: branches/numpy.scons/numpy/doc/html/help.html
===================================================================
--- branches/numpy.scons/numpy/doc/html/help.html	2007-09-24 11:36:30 UTC (rev 4113)
+++ branches/numpy.scons/numpy/doc/html/help.html	2007-09-24 11:36:47 UTC (rev 4114)
@@ -0,0 +1,268 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Help</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="example-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Help&nbsp;&nbsp;&nbsp;</th>
+
+      <th class="navbar" width="100%"></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">&nbsp;</td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="help.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+
+<h1 class="epydoc"> API Documentation </h1>
+
+<p> This document contains the API (Application Programming Interface)
+documentation for this project.  Documentation for the Python
+objects defined by the project is divided into separate pages for each
+package, module, and class.  The API documentation also includes two
+pages containing information about the project as a whole: a trees
+page, and an index page.  </p>
+
+<h2> Object Documentation </h2>
+
+  <p>Each <strong>Package Documentation</strong> page contains: </p>
+  <ul>
+    <li> A description of the package. </li>
+    <li> A list of the modules and sub-packages contained by the
+    package.  </li>
+    <li> A summary of the classes defined by the package. </li>
+    <li> A summary of the functions defined by the package. </li>
+    <li> A summary of the variables defined by the package. </li>
+    <li> A detailed description of each function defined by the
+    package. </li>
+    <li> A detailed description of each variable defined by the
+    package. </li>
+  </ul>
+  
+  <p>Each <strong>Module Documentation</strong> page contains:</p>
+  <ul>
+    <li> A description of the module. </li>
+    <li> A summary of the classes defined by the module. </li>
+    <li> A summary of the functions defined by the module. </li>
+    <li> A summary of the variables defined by the module. </li>
+    <li> A detailed description of each function defined by the
+    module. </li>
+    <li> A detailed description of each variable defined by the
+    module. </li>
+  </ul>
+  
+  <p>Each <strong>Class Documentation</strong> page contains: </p>
+  <ul>
+    <li> A class inheritance diagram. </li>
+    <li> A list of known subclasses. </li>
+    <li> A description of the class. </li>
+    <li> A summary of the methods defined by the class. </li>
+    <li> A summary of the instance variables defined by the class. </li>
+    <li> A summary of the class (static) variables defined by the
+    class. </li> 
+    <li> A detailed description of each method defined by the
+    class. </li>
+    <li> A detailed description of each instance variable defined by the
+    class. </li> 
+    <li> A detailed description of each class (static) variable defined
+    by the class. </li> 
+  </ul>
+
+<h2> Project Documentation </h2>
+
+  <p> The <strong>Trees</strong> page contains the module and class hierarchies: </p>
+  <ul>
+    <li> The <em>module hierarchy</em> lists every package and module, with
+    modules grouped into packages.  At the top level, and within each
+    package, modules and sub-packages are listed alphabetically. </li>
+    <li> The <em>class hierarchy</em> lists every class, grouped by base
+    class.  If a class has more than one base class, then it will be
+    listed under each base class.  At the top level, and under each base
+    class, classes are listed alphabetically. </li>
+  </ul>
+  
+  <p> The <strong>Index</strong> page contains indices of terms and
+  identifiers: </p>
+  <ul>
+    <li> The <em>term index</em> lists every term indexed by any object's
+    documentation.  For each term, the index provides links to each
+    place where the term is indexed. </li>
+    <li> The <em>identifier index</em> lists the (short) name of every package,
+    module, class, method, function, variable, and parameter.  For each
+    identifier, the index provides a short description, and a link to
+    its documentation. </li>
+  </ul>
+
+<h2> The Table of Contents </h2>
+
+<p> The table of contents occupies the two frames on the left side of
+the window.  The upper-left frame displays the <em>project
+contents</em>, and the lower-left frame displays the <em>module
+contents</em>: </p>
+
+<table class="help summary" border="1" cellspacing="0" cellpadding="3">
+  <tr style="height: 30%">
+    <td align="center" style="font-size: small">
+       Project<br />Contents<hr />...</td>
+    <td align="center" style="font-size: small" rowspan="2" width="70%">
+      API<br />Documentation<br />Frame<br /><br /><br />
+    </td>
+  </tr>
+  <tr>
+    <td align="center" style="font-size: small">
+      Module<br />Contents<hr />&nbsp;<br />...<br />&nbsp;
+    </td>
+  </tr>
+</table><br />
+
+<p> The <strong>project contents frame</strong> contains a list of all packages
+and modules that are defined by the project.  Clicking on an entry
+will display its contents in the module contents frame.  Clicking on a
+special entry, labeled "Everything," will display the contents of
+the entire project. </p>
+
+<p> The <strong>module contents frame</strong> contains a list of every
+submodule, class, type, exception, function, and variable defined by a
+module or package.  Clicking on an entry will display its
+documentation in the API documentation frame.  Clicking on the name of
+the module, at the top of the frame, will display the documentation
+for the module itself. </p>
+
+<p> The "<strong>frames</strong>" and "<strong>no frames</strong>" buttons below the top
+navigation bar can be used to control whether the table of contents is
+displayed or not. </p>
+
+<h2> The Navigation Bar </h2>
+
+<p> A navigation bar is located at the top and bottom of every page.
+It indicates what type of page you are currently viewing, and allows
+you to go to related pages.  The following table describes the labels
+on the navigation bar.  Note that not some labels (such as
+[Parent]) are not displayed on all pages. </p>
+
+<table class="summary" border="1" cellspacing="0" cellpadding="3" width="100%">
+<tr class="summary">
+  <th>Label</th>
+  <th>Highlighted when...</th>
+  <th>Links to...</th>
+</tr>
+  <tr><td valign="top"><strong>[Parent]</strong></td>
+      <td valign="top"><em>(never highlighted)</em></td>
+      <td valign="top"> the parent of the current package </td></tr>
+  <tr><td valign="top"><strong>[Package]</strong></td>
+      <td valign="top">viewing a package</td>
+      <td valign="top">the package containing the current object
+      </td></tr>
+  <tr><td valign="top"><strong>[Module]</strong></td>
+      <td valign="top">viewing a module</td>
+      <td valign="top">the module containing the current object
+      </td></tr> 
+  <tr><td valign="top"><strong>[Class]</strong></td>
+      <td valign="top">viewing a class </td>
+      <td valign="top">the class containing the current object</td></tr>
+  <tr><td valign="top"><strong>[Trees]</strong></td>
+      <td valign="top">viewing the trees page</td>
+      <td valign="top"> the trees page </td></tr>
+  <tr><td valign="top"><strong>[Index]</strong></td>
+      <td valign="top">viewing the index page</td>
+      <td valign="top"> the index page </td></tr>
+  <tr><td valign="top"><strong>[Help]</strong></td>
+      <td valign="top">viewing the help page</td>
+      <td valign="top"> the help page </td></tr>
+</table>
+
+<p> The "<strong>show private</strong>" and "<strong>hide private</strong>" buttons below
+the top navigation bar can be used to control whether documentation
+for private objects is displayed.  Private objects are usually defined
+as objects whose (short) names begin with a single underscore, but do
+not end with an underscore.  For example, "<code>_x</code>",
+"<code>__pprint</code>", and "<code>epydoc.epytext._tokenize</code>"
+are private objects; but "<code>re.sub</code>",
+"<code>__init__</code>", and "<code>type_</code>" are not.  However,
+if a module defines the "<code>__all__</code>" variable, then its
+contents are used to decide which objects are private. </p>
+
+<p> A timestamp below the bottom navigation bar indicates when each
+page was last updated. </p>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="example-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Help&nbsp;&nbsp;&nbsp;</th>
+
+      <th class="navbar" width="100%"></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sun Sep 23 13:30:28 2007
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>

Added: branches/numpy.scons/numpy/doc/html/identifier-index.html
===================================================================
--- branches/numpy.scons/numpy/doc/html/identifier-index.html	2007-09-24 11:36:30 UTC (rev 4113)
+++ branches/numpy.scons/numpy/doc/html/identifier-index.html	2007-09-24 11:36:47 UTC (rev 4114)
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Identifier Index</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="example-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Indices&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+      <th class="navbar" width="100%"></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">&nbsp;</td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="identifier-index.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table border="0" width="100%">
+<tr valign="bottom"><td>
+<h1 class="epydoc">Identifier Index</h1>
+</td><td>
+[
+  A
+  B
+  C
+  D
+ <a href="#E">E</a>
+ <a href="#F">F</a>
+  G
+  H
+  I
+  J
+  K
+  L
+  M
+ <a href="#N">N</a>
+ <a href="#O">O</a>
+  P
+  Q
+  R
+  S
+  T
+  U
+  V
+  W
+  X
+  Y
+  Z
+  _
+]
+</td></table>
+<table border="0" width="100%">
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="E">E</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="example-module.html">example</a></td>
+<td width="33%" class="link-index">&nbsp;</td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="F">F</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="example-module.html#foo">foo()</a><br />
+<span class="index-where">(in&nbsp;<a href="example-module.html">example</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="N">N</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="example-module.html#newfunc">newfunc()</a><br />
+<span class="index-where">(in&nbsp;<a href="example-module.html">example</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="O">O</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="example-module.html#otherfunc">otherfunc()</a><br />
+<span class="index-where">(in&nbsp;<a href="example-module.html">example</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+</table>
+<br /><br /><!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="example-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Indices&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+      <th class="navbar" width="100%"></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sun Sep 23 13:30:28 2007
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>

Added: branches/numpy.scons/numpy/doc/html/index.html
===================================================================
--- branches/numpy.scons/numpy/doc/html/index.html	2007-09-24 11:36:30 UTC (rev 4113)
+++ branches/numpy.scons/numpy/doc/html/index.html	2007-09-24 11:36:47 UTC (rev 4114)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+          "DTD/xhtml1-frameset.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title> API Documentation </title>
+</head>
+<frameset cols="20%,80%">
+  <frameset rows="30%,70%">
+    <frame src="toc.html" name="moduleListFrame"
+           id="moduleListFrame" />
+    <frame src="toc-everything.html" name="moduleFrame"
+           id="moduleFrame" />
+  </frameset>
+  <frame src="example-module.html" name="mainFrame" id="mainFrame" />
+</frameset>
+</html>

Added: branches/numpy.scons/numpy/doc/html/module-tree.html
===================================================================
--- branches/numpy.scons/numpy/doc/html/module-tree.html	2007-09-24 11:36:30 UTC (rev 4113)
+++ branches/numpy.scons/numpy/doc/html/module-tree.html	2007-09-24 11:36:47 UTC (rev 4114)
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Module Hierarchy</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="example-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+      <th class="navbar" width="100%"></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">&nbsp;</td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="module-tree.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Module Hierarchy</h1>
+<ul class="nomargin-top">
+    <li> <strong class="uidlink"><a href="example-module.html">example</a></strong>: <em class="summary">This is the docstring for the example.py module.</em>    </li>
+</ul>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="example-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+      <th class="navbar" width="100%"></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sun Sep 23 13:30:28 2007
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>

Added: branches/numpy.scons/numpy/doc/html/redirect.html
===================================================================
--- branches/numpy.scons/numpy/doc/html/redirect.html	2007-09-24 11:36:30 UTC (rev 4113)
+++ branches/numpy.scons/numpy/doc/html/redirect.html	2007-09-24 11:36:47 UTC (rev 4114)
@@ -0,0 +1,38 @@
+<html><head><title>Epydoc Redirect Page</title>
+<meta http-equiv="cache-control" content="no-cache" />
+<meta http-equiv="expires" content="0" />
+<meta http-equiv="pragma" content="no-cache" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+<body>
+<script type="text/javascript">
+<!--
+var pages = ["example-m"];
+var dottedName = get_anchor();
+if (dottedName) {
+    var target = redirect_url(dottedName);
+    if (target) window.location.replace(target);
+}
+// -->
+</script>
+
+<h3>Epydoc Auto-redirect page</h3>
+
+<p>When javascript is enabled, this page will redirect URLs of
+the form <tt>redirect.html#<i>dotted.name</i></tt> to the
+documentation for the object with the given fully-qualified
+dotted name.</p>
+<p><a id="message"> &nbsp; </a></p>
+
+<script type="text/javascript">
+<!--
+if (dottedName) {
+    var msg = document.getElementById("message");
+    msg.innerHTML = "No documentation found for <tt>"+
+                    dottedName+"</tt>";
+}
+// -->
+</script>
+
+</body>
+</html>

Added: branches/numpy.scons/numpy/doc/html/toc-everything.html
===================================================================
--- branches/numpy.scons/numpy/doc/html/toc-everything.html	2007-09-24 11:36:30 UTC (rev 4113)
+++ branches/numpy.scons/numpy/doc/html/toc-everything.html	2007-09-24 11:36:47 UTC (rev 4114)
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Everything</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Everything</h1>
+<hr />
+  <h2 class="toc">All Functions</h2>
+    <a target="mainFrame" href="example-module.html#foo"
+     >example.foo</a><br />    <a target="mainFrame" href="example-module.html#newfunc"
+     >example.newfunc</a><br />    <a target="mainFrame" href="example-module.html#otherfunc"
+     >example.otherfunc</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>

Added: branches/numpy.scons/numpy/doc/html/toc-example-module.html
===================================================================
--- branches/numpy.scons/numpy/doc/html/toc-example-module.html	2007-09-24 11:36:30 UTC (rev 4113)
+++ branches/numpy.scons/numpy/doc/html/toc-example-module.html	2007-09-24 11:36:47 UTC (rev 4114)
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>example</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module example</h1>
+<hr />
+  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="example-module.html#foo"
+     >foo</a><br />    <a target="mainFrame" href="example-module.html#newfunc"
+     >newfunc</a><br />    <a target="mainFrame" href="example-module.html#otherfunc"
+     >otherfunc</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>

Added: branches/numpy.scons/numpy/doc/html/toc.html
===================================================================
--- branches/numpy.scons/numpy/doc/html/toc.html	2007-09-24 11:36:30 UTC (rev 4113)
+++ branches/numpy.scons/numpy/doc/html/toc.html	2007-09-24 11:36:47 UTC (rev 4114)
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Table of Contents</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Table&nbsp;of&nbsp;Contents</h1>
+<hr />
+  <a target="moduleFrame" href="toc-everything.html">Everything</a>
+  <br />
+  <h2 class="toc">Modules</h2>
+    <a target="moduleFrame" href="toc-example-module.html"
+     onclick="setFrame('toc-example-module.html','example-module.html');"     >example</a><br /><hr />
+  <span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>

Modified: branches/numpy.scons/numpy/lib/src/_compiled_base.c
===================================================================
--- branches/numpy.scons/numpy/lib/src/_compiled_base.c	2007-09-24 11:36:30 UTC (rev 4113)
+++ branches/numpy.scons/numpy/lib/src/_compiled_base.c	2007-09-24 11:36:47 UTC (rev 4114)
@@ -287,6 +287,7 @@
         Py_DECREF(amask);
         Py_DECREF(avals);
         PyDataMem_FREE(zero);
+        Py_DECREF(ainput);
         Py_INCREF(Py_None);
         return Py_None;
     }

Modified: branches/numpy.scons/numpy/lib/tests/test_twodim_base.py
===================================================================
--- branches/numpy.scons/numpy/lib/tests/test_twodim_base.py	2007-09-24 11:36:30 UTC (rev 4113)
+++ branches/numpy.scons/numpy/lib/tests/test_twodim_base.py	2007-09-24 11:36:47 UTC (rev 4114)
@@ -133,6 +133,9 @@
         for k in range(0,13,4):
             assert_equal(rot90(a,k=k),b4)
 
+    def check_axes(self):
+        a = ones((50,40,3))
+        assert_equal(rot90(a).shape,(40,50,3))
 
 class test_histogram2d(NumpyTestCase):
     def check_simple(self):

Modified: branches/numpy.scons/numpy/lib/twodim_base.py
===================================================================
--- branches/numpy.scons/numpy/lib/twodim_base.py	2007-09-24 11:36:30 UTC (rev 4113)
+++ branches/numpy.scons/numpy/lib/twodim_base.py	2007-09-24 11:36:47 UTC (rev 4114)
@@ -36,9 +36,9 @@
         raise ValueError, "Input must >= 2-d."
     k = k % 4
     if k == 0: return m
-    elif k == 1: return fliplr(m).transpose()
+    elif k == 1: return fliplr(m).swapaxes(0,1)
     elif k == 2: return fliplr(flipud(m))
-    else: return fliplr(m.transpose())  # k==3
+    else: return fliplr(m.swapaxes(0,1))  # k==3
 
 def eye(N, M=None, k=0, dtype=float):
     """ eye returns a N-by-M 2-d array where the  k-th diagonal is all ones,

Modified: branches/numpy.scons/numpy/linalg/linalg.py
===================================================================
--- branches/numpy.scons/numpy/linalg/linalg.py	2007-09-24 11:36:30 UTC (rev 4113)
+++ branches/numpy.scons/numpy/linalg/linalg.py	2007-09-24 11:36:47 UTC (rev 4114)
@@ -20,7 +20,7 @@
         intc, single, double, csingle, cdouble, inexact, complexfloating, \
         newaxis, ravel, all, Inf, dot, add, multiply, identity, sqrt, \
         maximum, flatnonzero, diagonal, arange, fastCopyAndTranspose, sum, \
-        isfinite
+        isfinite, size
 from numpy.lib import triu
 from numpy.linalg import lapack_lite
 
@@ -126,6 +126,11 @@
         if not (isfinite(a).all()):
             raise LinAlgError, "Array must not contain infs or NaNs"
 
+def _assertNonEmpty(*arrays):
+    for a in arrays:
+        if size(a) == 0:
+            raise LinAlgError("Arrays cannot be empty")
+
 # Linear equations
 
 def tensorsolve(a, b, axes=None):
@@ -718,6 +723,7 @@
     """
     a, wrap = _makearray(a)
     _assertRank2(a)
+    _assertNonEmpty(a)
     m, n = a.shape
     t, result_t = _commonType(a)
     real_t = _linalgRealType(t)
@@ -783,6 +789,7 @@
     rcond of the largest.
     """
     a, wrap = _makearray(a)
+    _assertNonEmpty(a)
     a = a.conjugate()
     u, s, vt = svd(a, 0)
     m = u.shape[0]

Modified: branches/numpy.scons/numpy/linalg/tests/test_linalg.py
===================================================================
--- branches/numpy.scons/numpy/linalg/tests/test_linalg.py	2007-09-24 11:36:30 UTC (rev 4113)
+++ branches/numpy.scons/numpy/linalg/tests/test_linalg.py	2007-09-24 11:36:47 UTC (rev 4114)
@@ -4,7 +4,7 @@
 from numpy.testing import *
 set_package_path()
 from numpy import array, single, double, csingle, cdouble, dot, identity, \
-        multiply
+        multiply, atleast_2d
 from numpy import linalg
 restore_path()
 
@@ -37,6 +37,15 @@
         b = array([2.+1j, 1.+2j], dtype=cdouble)
         self.do(a, b)
 
+    def check_empty(self):
+        a = atleast_2d(array([], dtype = double))
+        b = atleast_2d(array([], dtype = double))
+        try:
+            self.do(a, b)
+            raise AssertionError("%s should fail with empty matrices", self.__name__[5:])
+        except linalg.LinAlgError, e:
+            pass
+
 class test_solve(LinalgTestCase):
     def do(self, a, b):
         x = linalg.solve(a, b)



More information about the Numpy-svn mailing list