Revision: 5265
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=5265&view=rev
Author: jdh2358
Date: 2008-05-25 13:58:06 -0700 (Sun, 25 May 2008)
Log Message:
-----------
updated default dir names for svn checkouts
Modified Paths:
--------------
trunk/matplotlib/docs/devel/coding_guide.rst
trunk/matplotlib/examples/api/logo2.py
Removed Paths:
-------------
trunk/matplotlib/CODING_GUIDE
Deleted: trunk/matplotlib/CODING_GUIDE
===================================================================
--- trunk/matplotlib/CODING_GUIDE 2008-05-25 16:57:31 UTC (rev 5264)
+++ trunk/matplotlib/CODING_GUIDE 2008-05-25 20:58:06 UTC (rev 5265)
@@ -1,320 +0,0 @@
-= The matplotlib developer's guide =
-
-This is meant to be a guide to developers on the mpl coding practices
-and standards. Please edit and extend this document.
-
-== svn checkouts ==
-
-# checking out everything (toolkits, user's guide, htdocs, etc..)
-svn co https://matplotlib.svn.sourceforge.net/svnroot/matplotlib/trunk
matplotlib --username=youruser --password=yourpass
-
-
-# checking out the main src
-svn co
https://matplotlib.svn.sourceforge.net/svnroot/matplotlib/trunk/matplotlib
matplotlib --username=youruser --password=yourpass
-
-# branch checkouts, eg the transforms branch
-svn co
https://matplotlib.svn.sourceforge.net/svnroot/matplotlib/branches/transforms
transbranch
-
-== Committing changes ==
-
-When committing changes to matplotlib, there are a few things to bear
-in mind.
-
- * if your changes are non-trivial, please make an entry in the
- CHANGELOG
-
- * if you change the API, please document it in API_CHANGES, and
- consider posting to mpl-devel
-
- * Are your changes python2.3 compatible? We are still trying to
- support 2.3, so avoid 2.4 only features like decorators until we
- remove 2.3 support
-
- * Can you pass examples/backend_driver.py? This is our poor man's
- unit test.
-
- * If you have altered extension code, do you pass
- unit/memleak_hawaii.py?
-
- * if you have added new files or directories, or reorganized
- existing ones, are the new files included in the match patterns in
- MANIFEST.in. This file determines what goes into the src
- distribution of the mpl build.
-
- * Keep the maintenance branch and trunk in sync where it makes sense.
- If there is a bug on both that needs fixing, use svnmerge.py to
- keep them in sync. http://www.orcaware.com/svn/wiki/Svnmerge.py. The
- basic procedure is:
-
- - install svnmerge.py in your PATH:
- wget
http://svn.collab.net/repos/svn/trunk/contrib/client-side/svnmerge/svnmerge.py
-
- - get a svn copy of the branch (svn co
-
https://matplotlib.svn.sourceforge.net/svnroot/matplotlib/branches/v0_91_maint)
- and the trunk (svn co
-
https://matplotlib.svn.sourceforge.net/svnroot/matplotlib/trunk/matplotlib)
-
- - Michael advises making the change on the branch and committing
- it. Make sure you svn upped on the trunk and have no local
- modifications, and then from the svn trunk do
-
- # where the NNN are the revision numbers. ranges also acceptable
- > svnmerge.py merge -rNNN1,NNN2
-
- # this file is automatically created by the merge command
- > svn commit -F svnmerge-commit-message.txt
-
-== Importing and name spaces ==
-
-For numpy, use:
-
-
- import numpy as np
- a = np.array([1,2,3])
-
-
-For masked arrays, use:
- from numpy import ma
-
- (The earlier recommendation, 'import matplotlib.numerix.npyma as ma',
- was needed temporarily during the development of the maskedarray
- implementation as a separate package. As of numpy 1.05, it
- replaces the old implementation.
- Note: "from numpy import ma" works with numpy < 1.05 *and* with
- numpy >= 1.05. "import numpy.ma as ma" works *only* with
- numpy >= 1.05, so for now we must not use it.)
-
-For matplotlib main module, use:
-
- import matplotlib as mpl
- mpl.rcParams['xtick.major.pad'] = 6
-
-For matplotlib modules (or any other modules), use:
-
- import matplotlib.cbook as cbook
-
- if cbook.iterable(z):
- pass
-
- We prefer this over the equivalent 'from matplotlib import cbook'
- because the latter is ambiguous whether cbook is a module or a
- function to the new developer. The former makes it explcit that
- you are importing a module or package.
-
-== Naming, spacing, and formatting conventions ==
-
-In general, we want to hew as closely as possible to the standard
-coding guidelines for python written by Guido in
-http://www.python.org/dev/peps/pep-0008, though we do not do this
-throughout.
-
- functions and class methods : lower or lower_underscore_separated
-
- attributes and variables : lower or lowerUpper
-
- classes : Upper or MixedCase
-
-Personally, I prefer the shortest names that are still readable.
-
-Also, use an editor that does not put tabs in files. Four spaces
-should be used for indentation everywhere and if there is a file with
-tabs or more or less spaces it is a bug -- please fix it.
-
-Please avoid spurious invisible spaces at the ends of lines.
-(Tell your editor to strip whitespace from line ends when saving
-a file.)
-
-Keep docstrings uniformly indented as in the example below, with
-nothing to the left of the triple quotes. The dedent() function
-is needed to remove excess indentation only if something will be
-interpolated into the docstring, again as in the example above.
-
-Limit line length to 80 characters. If a logical line needs to be
-longer, use parentheses to break it; do not use an escaped
-newline. It may be preferable to use a temporary variable
-to replace a single long line with two shorter and more
-readable lines.
-
-Please do not commit lines with trailing white space, as it causes
-noise in svn diffs. If you are an emacs user, the following in your
-.emacs will cause emacs to strip trailing white space on save for
-python, C and C++
-
-
-; and similarly for c++-mode-hook and c-mode-hook
-(add-hook 'python-mode-hook
- (lambda ()
- (add-hook 'write-file-functions 'delete-trailing-whitespace)))
-
-
-
-for older versions of emacs (emacs<22) you need to do
-
-(add-hook 'python-mode-hook
- (lambda ()
- (add-hook 'local-write-file-hooks 'delete-trailing-whitespace)))
-
-
-
-
-== Licenses ==
-
-matplotlib only uses BSD compatible code. If you bring in code from
-another project make sure it has a PSF, BSD, MIT or compatible
-license. If not, you may consider contacting the author and asking
-them to relicense it. GPL and LGPL code are not acceptible in the
-main code base, though we are considering an alternative way of
-distributing L/GPL code through an separate channel, possibly a
-toolkit. If you include code, make sure you include a copy of that
-code's license in the license directory if the code's license requires
-you to distribute the license with it.
-
-
-== Keyword argument processing ==
-
-Matplotlib makes extensive use of **kwargs for pass through
-customizations from one function to another. A typical example is in
-pylab.text, The definition of the pylab text function is a simple
-pass-through to axes.Axes.text
-
- # in pylab.py
- def text(*args, **kwargs):
- ret = gca().text(*args, **kwargs)
- draw_if_interactive()
- return ret
-
-
-axes.Axes.text in simplified form looks like this, ie it just passes
-them on to text.Text.__init__
- # in axes.py
- def text(self, x, y, s, fontdict=None, withdash=False, **kwargs):
- t = Text(x=x, y=y, text=s, **kwargs)
-
-
-and Text.__init__ (again with liberties for illustration) just passes
-them on to the artist.Artist.update method
-
- # in text.py
- def __init__(self, x=0, y=0, text='', **kwargs):
- Artist.__init__(self)
- self.update(kwargs)
-
-'update' does the work looking for methods named like 'set_property'
-if 'property' is a keyword argument. Ie, noone looks at the keywords,
-they just get passed through the API to the artist constructor which
-looks for suitably named methods and calls them with the value.
-
-As a general rule, the use of **kwargs should be reserved for
-pass-through keyword arguments, as in the examaple above. If I intend
-for all the keyword args to be used in some function and not passed
-on, I just use the key/value keyword args in the function definition
-rather than the **kwargs idiom.
-
-In some cases I want to consume some keys and pass through the others,
-in which case I pop the ones I want to use locally and pass on the
-rest, eg I pop scalex and scaley in Axes.plot and assume the rest are
-Line2D keyword arguments. As an example of a pop, passthrough
-usage, see Axes.plot:
-
- # in axes.py
- def plot(self, *args, **kwargs):
- scalex = kwargs.pop('scalex', True)
- scaley = kwargs.pop('scaley', True)
- if not self._hold: self.cla()
- lines = []
- for line in self._get_lines(*args, **kwargs):
- self.add_line(line)
- lines.append(line)
-
-The matplotlib.cbook function popd() is rendered
-obsolete by the pop() dictionary method introduced in Python 2.3,
-so it should not be used for new code.
-
-Note there is a use case when kwargs are meant to be used locally in
-the function (not passed on), but you still need the **kwargs idiom.
-That is when you want to use *args to allow variable numbers of
-non-keyword args. In this case, python will not allow you to use
-named keyword args after the *args usage, so you will be forced to use
-**kwargs. An example is matplotlib.contour.ContourLabeler.clabel
-
- # in contour.py
- def clabel(self, *args, **kwargs):
- fontsize = kwargs.get('fontsize', None)
- inline = kwargs.get('inline', 1)
- self.fmt = kwargs.get('fmt', '%1.3f')
- colors = kwargs.get('colors', None)
- if len(args) == 0:
- levels = self.levels
- indices = range(len(self.levels))
- elif len(args) == 1:
- ...etc...
-
-== Class documentation ==
-
-matplotlib uses artist instrospection of docstrings to support
-properties. All properties that you want to support through setp and
-getp should have a set_property and get_property method in the Artist
-class. Yes, this is not ideal given python properties or enthought
-traits, but it is a historical legacy for now. The setter methods use
-the docstring with the ACCEPTS token to indicate the type of argument
-the method accepts. Eg in matplotlib.lines.Line2D
-
- # in lines.py
- def set_linestyle(self, linestyle):
- """
- Set the linestyle of the line
-
- ACCEPTS: [ '-' | '--' | '-.' | ':' | 'steps' | 'None' | ' ' | '' ]
- """
-
-
-Since matplotlib uses a lot of pass through kwargs, eg in every
-function that creates a line (plot, semilogx, semilogy, etc...), it
-can be difficult for the new user to know which kwargs are supported.
-I have developed a docstring interpolation scheme to support
-documentation of every function that takes a **kwargs. The
-requirements are:
-
- 1) single point of configuration so changes to the properties don't
- require multiple docstring edits
-
- 2) as automated as possible so that as properties change the docs
- are updated automagically.
-
-I have added a matplotlib.artist.kwdocd and kwdoc() to faciliate this.
-They combines python string interpolation in the docstring with the
-matplotlib artist introspection facility that underlies setp and getp.
-The kwdocd is a single dictionary that maps class name to a docstring
-of kwargs. Here is an example from matplotlib.lines
-
- # in lines.py
- artist.kwdocd['Line2D'] = artist.kwdoc(Line2D)
-
-Then in any function accepting Line2D passthrough kwargs, eg
-matplotlib.axes.Axes.plot
-
- # in axes.py
-...
- def plot(self, *args, **kwargs):
- """
- Some stuff omitted
-
- The kwargs are Line2D properties:
- %(Line2D)s
-
- kwargs scalex and scaley, if defined, are passed on
- to autoscale_view to determine whether the x and y axes are
- autoscaled; default True. See Axes.autoscale_view for more
- information
- """
- pass
- plot.__doc__ = cbook.dedent(plot.__doc__) % artist.kwdocd
-
-Note there is a problem for Artist __init__ methods, eg Patch.__init__
-which supports Patch kwargs, since the artist inspector cannot work
-until the class is fully defined and we can't modify the
-Patch.__init__.__doc__ docstring outside the class definition. I have
-made some manual hacks in this case which violates the "single entry
-point" requirement above; hopefully we'll find a more elegant solution
-before too long
-
Modified: trunk/matplotlib/docs/devel/coding_guide.rst
===================================================================
--- trunk/matplotlib/docs/devel/coding_guide.rst 2008-05-25 16:57:31 UTC
(rev 5264)
+++ trunk/matplotlib/docs/devel/coding_guide.rst 2008-05-25 20:58:06 UTC
(rev 5265)
@@ -13,12 +13,12 @@
Checking out the main source::
svn co https://matplotlib.svn.sourceforge.net/svnroot/matplotlib/trunk/\
- matplotlib matplotlib --username=youruser --password=yourpass
+ matplotlib mpl --username=youruser --password=yourpass
Branch checkouts, eg the maintenance branch::
svn co https://matplotlib.svn.sourceforge.net/svnroot/matplotlib/branches/\
- v0_91_maint mplv0_91_maint
+ v0_91_maint mpl91
Committing changes
==================
Modified: trunk/matplotlib/examples/api/logo2.py
===================================================================
--- trunk/matplotlib/examples/api/logo2.py 2008-05-25 16:57:31 UTC (rev
5264)
+++ trunk/matplotlib/examples/api/logo2.py 2008-05-25 20:58:06 UTC (rev
5265)
@@ -14,9 +14,12 @@
ax = fig.add_axes([0.05, 0.05, 0.2, 01], polar=True)
ax.axesPatch.set_alpha(axalpha)
N = 20
-theta = np.arange(0.0, 2*np.pi, 2*np.pi/N)
+theta = np.arange(0.0, 2*np.pi, 2*np.pi/N) + np.pi
radii = 10*np.random.rand(N)
-width = np.pi/4*np.random.rand(N)
+width = np.pi/6*np.random.rand(N)
+#radii = np.log(np.arange(1,N+1))
+#width = np.arange(N, dtype=float)/N*np.pi/8
+
bars = ax.bar(theta, radii, width=width, bottom=0.0)
for r,bar in zip(radii, bars):
bar.set_facecolor( cm.jet(r/10.))
@@ -33,7 +36,8 @@
x = mu + sigma*np.random.randn(10000)
# the histogram of the data
-n, bins, patches = axhist.hist(x, 50, normed=1, facecolor='green',
edgecolor='green', alpha=0.75)
+n, bins, patches = axhist.hist(x, 50, normed=1,
+ facecolor='green', edgecolor='green', alpha=0.75)
y = mlab.normpdf( bins, mu, sigma)
@@ -51,8 +55,10 @@
#the math background
tex = r"$W^{3\beta}_{\delta_1 \rho_1 \sigma_2} = U^{3\beta}_{\delta_1 \rho_1}
+ \frac{1}{8 \pi 2} \int^{\alpha_2}_{\alpha_2} d \alpha^\prime_2 \left[\frac{
U^{2\beta}_{\delta_1 \rho_1} - \alpha^\prime_2U^{1\beta}_{\rho_1 \sigma_2}
}{U^{0\beta}_{\rho_1 \sigma_2}}\right]$"
+radargreen = '#d5de9c'
+orange = '#ee8d18'
axback.text(0.5, 0.5, tex,
- transform=axback.transAxes, color="0.5", alpha=0.5, fontsize=40,
+ transform=axback.transAxes, color='black', alpha=0.25, fontsize=40,
ha='center', va='center')
axback.set_axis_off()
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: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Matplotlib-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins