From: Greg N. <no...@di...> - 2005-05-09 18:30:21
|
I find myself typing pyx.graph ten times per minute while using PyX, so I tried doing "from pyx.graph import *" at the top of my source code. Unfortunately pyx.graph.graphxy and pyx.graph.axis failed to make it into the local namespace. Eventually I figured out that this is because they aren't included in the list __all__ in pyx/graph/__init__.py. This isn't on purpose, is it? Seems like a bug to me, so I've fixed it in my local copy. Thanks for the software, I've gotten a lot of mileage out of it. Cheers, Greg |
From: Andre W. <wo...@us...> - 2005-05-10 10:41:45
|
Hi Greg, On 09.05.05, Greg Novak wrote: > I find myself typing pyx.graph ten times per minute while using PyX, > so I tried doing "from pyx.graph import *" at the top of my source > code. Unfortunately pyx.graph.graphxy and pyx.graph.axis failed to > make it into the local namespace. Eventually I figured out that this > is because they aren't included in the list __all__ in > pyx/graph/__init__.py. > > This isn't on purpose, is it? Seems like a bug to me, so I've fixed > it in my local copy. Right, I would call it a bug as well. My fix would be (not yet checked in): andre@pb:~/python/pyx/pyx/graph$ cvs diff -u __init__.py Index: __init__.py =================================================================== RCS file: /cvsroot/pyx/pyx/pyx/graph/__init__.py,v retrieving revision 1.2 diff -u -r1.2 __init__.py --- __init__.py 21 Mar 2004 18:37:58 -0000 1.2 +++ __init__.py 10 May 2005 10:35:13 -0000 @@ -21,10 +21,11 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -__all__ = ["data", "graph", "key", "style"] +__all__ = ["data", "key", "style", "axis"] for module in __all__: __import__(module, globals(), locals(), []) from graph import graphxy +__all__.append("graphxy") Note that I've removed the graph module from __all__. Any objections? BTW: A similar patch should be applied to pyx.graph.axis.__init__.py. André -- by _ _ _ Dr. André Wobst / \ \ / ) wo...@us..., http://www.wobsta.de/ / _ \ \/\/ / PyX - High quality PostScript figures with Python & TeX (_/ \_)_/\_/ visit http://pyx.sourceforge.net/ |
From: Michael S. <m-s...@us...> - 2005-05-10 12:50:29
|
Hello Andre, On 10.05.05, Andre Wobst wrote: > > This isn't on purpose, is it? Seems like a bug to me, so I've fixed > > it in my local copy. > > Right, I would call it a bug as well. My fix would be (not yet checked > in): > > andre@pb:~/python/pyx/pyx/graph$ cvs diff -u __init__.py > Index: __init__.py > =================================================================== > RCS file: /cvsroot/pyx/pyx/pyx/graph/__init__.py,v > retrieving revision 1.2 > diff -u -r1.2 __init__.py > --- __init__.py 21 Mar 2004 18:37:58 -0000 1.2 > +++ __init__.py 10 May 2005 10:35:13 -0000 > @@ -21,10 +21,11 @@ > # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > > > -__all__ = ["data", "graph", "key", "style"] > +__all__ = ["data", "key", "style", "axis"] I expect a name clash with pyx.style and pyx.graph.style which will confuse new PyX users. I wonder that there have been no problem reports due to this. I admit that __all__ should contain ALL of the module, but in this case I would never recommend from pyx.graph import * but from pyx.graph import data, key, axis which is easily written. Michael. -- "A mathematician is a device for turning coffee into theorems" Paul Erdös. |
From: Andre W. <wo...@us...> - 2005-05-11 06:19:39
|
Hi, On 10.05.05, Michael Schindler wrote: > I expect a name clash with pyx.style and pyx.graph.style which will > confuse new PyX users. I wonder that there have been no problem > reports due to this. We had this discussion a long time ago ... and decided to live with those name clashes. (There are others as well ... not on the module level, but for classes. Example: path.line and graph.style.line.) Python allows you to work with it quite well. > I admit that __all__ should contain ALL of the module, Well, that's about the point of the discussion. In the graph directory there is a graph module. Those classes (i.e. graphxy) are made available in the __init__.py module. In some sence, the content of the graph module could have been included to __init__.py instead of having this graph module inside the graph directory. The only thing is, that we do not want to have that much code in __init__.py. It makes sence to insert graphxy into the __all__ attribute. OTOH we should remove the graph module from this list. At least, that's what I suggest and I would like to get some feedback on whether I'm right with my fealing. A similar case are the classes defined in the axis module in pyx/graph/axis. We should handle it the same way. > but in this case I would never recommend > from pyx.graph import * > but > from pyx.graph import data, key, axis > which is easily written. Right, in your examples we stick on "from pyx import *" and might use other imports with explicit names only (from pyx.graph.axis import texter etc.). However, the "from ... import *" statements are always implicit and the only thing we need to think of, is what this should lead to if somebody 's using it. People do know that they are populating their namespace by that ... and might get clashes. Thats not our problem ... ;-) André -- by _ _ _ Dr. André Wobst / \ \ / ) wo...@us..., http://www.wobsta.de/ / _ \ \/\/ / PyX - High quality PostScript figures with Python & TeX (_/ \_)_/\_/ visit http://pyx.sourceforge.net/ |