Revision: 5039
          http://matplotlib.svn.sourceforge.net/matplotlib/?rev=5039&view=rev
Author:   mdboom
Date:     2008-04-11 08:32:03 -0700 (Fri, 11 Apr 2008)

Log Message:
-----------
Merged revisions 5026-5038 via svnmerge from 
https://matplotlib.svn.sourceforge.net/svnroot/matplotlib/branches/v0_91_maint

........
  r5028 | jdh2358 | 2008-04-03 11:24:20 -0400 (Thu, 03 Apr 2008) | 1 line
  
  some small fixes to excel tools
........
  r5032 | jrevans | 2008-04-07 18:26:21 -0400 (Mon, 07 Apr 2008) | 2 lines
  
  Fixed the double draw bug.
........
  r5033 | jdh2358 | 2008-04-09 14:54:54 -0400 (Wed, 09 Apr 2008) | 1 line
  
  small fix for vlines w/ len 1 args
........
  r5038 | mdboom | 2008-04-11 11:24:57 -0400 (Fri, 11 Apr 2008) | 3 lines
  
  Fixing global font rcParam setting after initialization time (thanks
  to Lev Givon and Eric Firing for finding this)
........

Modified Paths:
--------------
    trunk/matplotlib/CHANGELOG
    trunk/matplotlib/examples/rec_groupby_demo.py
    trunk/matplotlib/lib/matplotlib/axes.py
    trunk/matplotlib/lib/matplotlib/backends/backend_qt4agg.py
    trunk/matplotlib/lib/matplotlib/font_manager.py
    trunk/matplotlib/lib/matplotlib/mlab.py

Property Changed:
----------------
    trunk/matplotlib/


Property changes on: trunk/matplotlib
___________________________________________________________________
Name: svnmerge-integrated
   - /branches/v0_91_maint:1-5025
   + /branches/v0_91_maint:1-5038

Modified: trunk/matplotlib/CHANGELOG
===================================================================
--- trunk/matplotlib/CHANGELOG  2008-04-11 15:24:57 UTC (rev 5038)
+++ trunk/matplotlib/CHANGELOG  2008-04-11 15:32:03 UTC (rev 5039)
@@ -1,7 +1,10 @@
-2008-04-11 Revert commits 5002 and 5031, which were intended to 
-           avoid an unnecessary call to draw(). 5002 broke saving 
+2008-04-11 Fix global font rcParam setting after initialization
+           time. - MGD
+
+2008-04-11 Revert commits 5002 and 5031, which were intended to
+           avoid an unnecessary call to draw(). 5002 broke saving
            figures before show(). 5031 fixed the problem created in
-           5002, but broke interactive plotting. Unnecessary call to 
+           5002, but broke interactive plotting. Unnecessary call to
            draw still needs resolution - DSD
 
 2008-04-07 Improve color validation in rc handling, suggested

Modified: trunk/matplotlib/examples/rec_groupby_demo.py
===================================================================
--- trunk/matplotlib/examples/rec_groupby_demo.py       2008-04-11 15:24:57 UTC 
(rev 5038)
+++ trunk/matplotlib/examples/rec_groupby_demo.py       2008-04-11 15:32:03 UTC 
(rev 5039)
@@ -6,14 +6,20 @@
 r.sort()
 
 def daily_return(prices):
+    'an array of daily returns from price array'
     g = np.zeros_like(prices)
     g[1:] = (prices[1:]-prices[:-1])/prices[:-1]
     return g
 
 def volume_code(volume):
+    'code the continuous volume data categorically'
     ind = np.searchsorted([1e5,1e6, 5e6,10e6, 1e7], volume)
     return ind
 
+# a list of (dtype_name, summary_function, output_dtype_name).
+# rec_summarize will call on each function on the indicated recarray
+# attribute, and the result assigned to output name in the return
+# record array.
 summaryfuncs = (
     ('date', lambda x: [thisdate.year for thisdate in x], 'years'),
     ('date', lambda x: [thisdate.month for thisdate in x], 'months'),
@@ -24,6 +30,10 @@
 
 rsum = mlab.rec_summarize(r, summaryfuncs)
 
+# stats is a list of (dtype_name, function, output_dtype_name).
+# rec_groupby will summarize the attribute identified by the
+# dtype_name over the groups in the groupby list, and assign the
+# result to the output_dtype_name
 stats = (
     ('dreturn', len, 'rcnt'),
     ('dreturn', np.mean, 'rmean'),
@@ -31,6 +41,7 @@
     ('dreturn', np.std, 'rsigma'),
     )
 
+# you can summarize over a single variable, like years or months
 print 'summary by years'
 ry = mlab.rec_groupby(rsum, ('years',), stats)
 print mlab. rec2txt(ry)
@@ -39,6 +50,7 @@
 rm = mlab.rec_groupby(rsum, ('months',), stats)
 print mlab.rec2txt(rm)
 
+# or over multiple variables like years and months
 print 'summary by year and month'
 rym = mlab.rec_groupby(rsum, ('years','months'), stats)
 print mlab.rec2txt(rym)

Modified: trunk/matplotlib/lib/matplotlib/axes.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/axes.py     2008-04-11 15:24:57 UTC (rev 
5038)
+++ trunk/matplotlib/lib/matplotlib/axes.py     2008-04-11 15:32:03 UTC (rev 
5039)
@@ -2592,11 +2592,10 @@
         xmax = npy.asarray(xmax)
 
         if len(xmin)==1:
-            xmin = xmin*npy.ones(y.shape, y.dtype)
+            xmin = npy.resize( xmin, y.shape )
         if len(xmax)==1:
-            xmax = xmax*npy.ones(y.shape, y.dtype)
+            xmax = npy.resize( xmax, y.shape )
 
-
         if len(xmin)!=len(y):
             raise ValueError, 'xmin and y are unequal sized sequences'
         if len(xmax)!=len(y):
@@ -2660,9 +2659,9 @@
         ymin = npy.asarray(ymin)
         ymax = npy.asarray(ymax)
         if len(ymin)==1:
-            ymin = ymin*npy.ones(x.shape, x.dtype)
+            ymin = npy.resize( ymin, x.shape )
         if len(ymax)==1:
-            ymax = ymax*npy.ones(x.shape, x.dtype)
+            ymax = npy.resize( ymax, x.shape )
 
         if len(ymin)!=len(x):
             raise ValueError, 'ymin and x are unequal sized sequences'

Modified: trunk/matplotlib/lib/matplotlib/backends/backend_qt4agg.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/backends/backend_qt4agg.py  2008-04-11 
15:24:57 UTC (rev 5038)
+++ trunk/matplotlib/lib/matplotlib/backends/backend_qt4agg.py  2008-04-11 
15:32:03 UTC (rev 5039)
@@ -131,7 +131,6 @@
         if DEBUG: print "FigureCanvasQtAgg.draw", self
         self.replot = True
         FigureCanvasAgg.draw(self)
-        self.update()
 
     def blit(self, bbox=None):
         """

Modified: trunk/matplotlib/lib/matplotlib/font_manager.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/font_manager.py     2008-04-11 15:24:57 UTC 
(rev 5038)
+++ trunk/matplotlib/lib/matplotlib/font_manager.py     2008-04-11 15:32:03 UTC 
(rev 5039)
@@ -625,20 +625,6 @@
     fontconfig.
     """
 
-    class FontPropertiesSet(object):
-        """This class contains all of the default properties at the
-        class level, which are then overridden (only if provided) at
-        the instance level."""
-        family = rcParams['font.' + rcParams['font.family']]
-        if is_string_like(family):
-            family = [family]
-        slant = [rcParams['font.style']]
-        variant = [rcParams['font.variant']]
-        weight = [rcParams['font.weight']]
-        stretch = [rcParams['font.stretch']]
-        size = [rcParams['font.size']]
-        file = None
-
     def __init__(self,
                  family = None,
                  style  = None,
@@ -649,12 +635,17 @@
                  fname  = None, # if this is set, it's a hardcoded filename to 
use
                  _init   = None  # used only by copy()
                  ):
+        self._family = None
+        self._slant = None
+        self._variant = None
+        self._weight = None
+        self._stretch = None
+        self._size = None
+        self._file = None
 
-        self.__props = self.FontPropertiesSet()
-
         # This is used only by copy()
         if _init is not None:
-            self.__props.__dict__.update(_init)
+            self.__dict__.update(_init.__dict__)
             return
 
         if is_string_like(family):
@@ -666,9 +657,8 @@
                 stretch is None and
                 size is None and
                 fname is None):
-                self.__props.__dict__ = self._parse_fontconfig_pattern(family)
+                self.set_fontconfig_pattern(family)
                 return
-            family = [family]
 
         self.set_family(family)
         self.set_style(style)
@@ -682,7 +672,7 @@
         return parse_fontconfig_pattern(pattern)
 
     def __hash__(self):
-        return hash(repr(self.__props.__dict__))
+        return hash(repr(self.__dict__))
 
     def __str__(self):
         return self.get_fontconfig_pattern()
@@ -690,7 +680,12 @@
     def get_family(self):
         """Return a list of font names that comprise the font family.
         """
-        return self.__props.family
+        if self._family is None:
+            family = rcParams['font.family']
+            if is_string_like(family):
+                return [family]
+            return family
+        return self._family
 
     def get_name(self):
         """Return the name of the font that best matches the font 
properties."""
@@ -698,38 +693,45 @@
 
     def get_style(self):
         """Return the font style.  Values are: normal, italic or oblique."""
-        return self.__props.slant[0]
+        if self._slant is None:
+            return rcParams['font.style']
+        return self._slant
 
     def get_variant(self):
         """Return the font variant.  Values are: normal or small-caps."""
-        return self.__props.variant[0]
+        if self._variant is None:
+            return rcParams['font.variant']
+        return self._variant
 
     def get_weight(self):
         """
         Return the font weight.  See the FontProperties class for a
         a list of possible values.
         """
-        return self.__props.weight[0]
+        if self._weight is None:
+            return rcParams['font.weight']
+        return self._weight
 
     def get_stretch(self):
         """
         Return the font stretch or width.  Options are: normal,
         narrow, condensed, or wide.
         """
-        return self.__props.stretch[0]
+        if self._stretch is None:
+            return rcParams['font.stretch']
+        return self._stretch
 
     def get_size(self):
         """Return the font size."""
-        return float(self.__props.size[0])
+        if self._size is None:
+            return rcParams['font.size']
+        return float(self._size)
 
     def get_file(self):
-        if self.__props.file is not None:
-            return self.__props.file[0]
-        else:
-            return None
+        return self._file
 
     def get_fontconfig_pattern(self):
-        return generate_fontconfig_pattern(self.__props.__dict__)
+        return generate_fontconfig_pattern(self)
 
     def set_family(self, family):
         """
@@ -738,58 +740,49 @@
         fantasy, or monospace, or a real font name.
         """
         if family is None:
-            self.__props.__dict__.pop('family', None)
+            self._family = None
         else:
             if is_string_like(family):
                 family = [family]
-            self.__props.family = family
+            self._family = family
     set_name = set_family
 
     def set_style(self, style):
         """Set the font style.  Values are: normal, italic or oblique."""
-        if style is None:
-            self.__props.__dict__.pop('style', None)
-        else:
-            if style not in ('normal', 'italic', 'oblique'):
-                raise ValueError("style must be normal, italic or oblique")
-            self.__props.slant = [style]
+        if style not in ('normal', 'italic', 'oblique', None):
+            raise ValueError("style must be normal, italic or oblique")
+        self._slant = style
 
     def set_variant(self, variant):
         """Set the font variant.  Values are: normal or small-caps."""
-        if variant is None:
-            self.__props.__dict__.pop('variant', None)
-        else:
-            if variant not in ('normal', 'small-caps'):
-                raise ValueError("variant must be normal or small-caps")
-            self.__props.variant = [variant]
+        if variant not in ('normal', 'small-caps', None):
+            raise ValueError("variant must be normal or small-caps")
+        self._variant = variant
 
     def set_weight(self, weight):
         """
         Set the font weight.  See the FontProperties class for a
         a list of possible values.
         """
-        if weight is None:
-            self.__props.__dict__.pop('weight', None)
-        else:
-            if (weight not in weight_dict and
-                weight not in weight_dict.keys()):
-                raise ValueError("weight is invalid")
-            self.__props.weight = [weight]
+        if (weight is not None and
+            weight not in weight_dict and
+            weight not in weight_dict.keys()):
+            raise ValueError("weight is invalid")
+        self._weight = weight
 
     def set_stretch(self, stretch):
         """
         Set the font stretch or width.  Options are: normal, narrow,
         condensed, or wide.
         """
-        if stretch is None:
-            self.__props.__dict__.pop('stretch', None)
-        else:
-            self.__props.stretch = [stretch]
+        if stretch not in ('normal', 'narrow', 'condensed', 'wide', None):
+            raise ValueError("stretch is invalid")
+        self._stretch = stretch
 
     def set_size(self, size):
         """Set the font size."""
         if size is None:
-            self.__props.__dict__.pop('size', None)
+            self._size = None
         else:
             if is_string_like(size):
                 parent_size = fontManager.get_default_size()
@@ -797,28 +790,25 @@
                 if scaling is not None:
                     size = parent_size * scaling
                 else:
-                    size = parent_size
-            if isinstance(size, (int, float)):
-                size = [size]
-            self.__props.size = size
+                    try:
+                        size = float(size)
+                    except ValueError:
+                        size = parent_size
+            assert(type(size) in (int, float))
+            self._size = size
 
     def set_file(self, file):
-        if file is None:
-            self.__props.__dict__.pop('file', None)
-        else:
-            self.__props.file = [file]
+        self._file = file
 
     get_size_in_points = get_size
 
     def set_fontconfig_pattern(self, pattern):
-        self.__props.__dict__ = self._parse_fontconfig_pattern(pattern)
+        for key, val in self._parse_fontconfig_pattern(pattern).items():
+            getattr(self, "set_" + key)(val)
 
-    def add_property_pair(self, key, val):
-        self.__props.setdefault(key, []).append(val)
-
     def copy(self):
         """Return a deep copy of self"""
-        return FontProperties(_init = self.__props.__dict__)
+        return FontProperties(_init = self)
 
 def ttfdict_to_fnames(d):
     'flatten a ttfdict to all the filenames it contains'

Modified: trunk/matplotlib/lib/matplotlib/mlab.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/mlab.py     2008-04-11 15:24:57 UTC (rev 
5038)
+++ trunk/matplotlib/lib/matplotlib/mlab.py     2008-04-11 15:32:03 UTC (rev 
5039)
@@ -1948,7 +1948,6 @@
     except NotImplementedError: return False
     else: return b
 
-
 def rec_append_field(rec, name, arr, dtype=None):
     'return a new record array with field name populated with data from array 
arr'
     arr = npy.asarray(arr)


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
Matplotlib-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins

Reply via email to