ANN: mpmath 0.11 released
Hi all, Mpmath version 0.11 is now available from the website: http://code.google.com/p/mpmath/ It can also be downloaded from the Python Package Index: http://pypi.python.org/pypi/mpmath/0.11 Mpmath is a pure-Python library for arbitrary-precision floating-point arithmetic that implements an extensive set of mathematical functions. It can be used as a standalone library or via SymPy (http://code.google.com/p/sympy/). This versions adds speed improvements, many new mathematical functions (Bessel functions, polylogarithms, Fibonacci numbers, the Barnes G-function, generalized Stieltjes constants, inverse error function, generalized incomplete gamma function, etc), a high-precision ODE solver, improved algorithms for infinite sums and products, calculation of Taylor and Fourier series, and multidimensional rootfinding, besides many other improvements and bugfixes. The documentation has also been greatly extended. For a more detailed review of the new features, see the following blog post: http://fredrik-j.blogspot.com/2009/01/mpmath-011-released.html Bug reports and other comments are welcome at the issue tracker at http://code.google.com/p/sympy/issues/list or the mpmath mailing list: http://groups.google.com/group/mpmath Fredrik -- http://mail.python.org/mailman/listinfo/python-announce-list Support the Python Software Foundation: http://www.python.org/psf/donations.html
Elisa Media Center 0.5.25 Release
Dear Python users, The Elisa team is happy to announce the release of Elisa Media Center 0.5.25, code-named The Angry Mob. Elisa is a cross-platform and open-source Media Center written in Python. It uses GStreamer [1] for media playback and pigment [2] to create an appealing and intuitive user interface. This is a bugfix release: among other issues solved, the Youtube plugin now works again. A complete list of the issues fixed can be found at: http://bugs.launchpad.net/elisa/+milestone/0.5.25 Installers and sources can be downloaded from http://elisa.fluendo.com/download/ Bug reports and feature requests are welcome at http://bugs.launchpad.net/elisa/+filebug Have a media-centered evening, The Elisa team [1] http://www.gstreamer.net/ [2] https://code.fluendo.com/pigment/trac Elisa 0.5.25 The Angry Mob This is Elisa 0.5.25, twenty-fifth release of the 0.5 branch. Bugs fixed since 0.5.24: - 318854: Elisa 0.5.24 from PPA packages does not start - 321423: [win32] Elisa core not listed as a plugin - 299016: YouTube Videos does not start from Elisa - 314673: [win32] gstreamer can't play files using http Download You can find source releases of Elisa on the download page: http://elisa.fluendo.com/download Elisa Homepage More details can be found on the project's website: http://elisa.fluendo.com Support and Bugs We use Launchpad for bug reports and feature requests: https://bugs.launchpad.net/elisa/+filebug Developers All code is in a Bazaar branch and can be checked out from there. It is hosted on Launchpad: https://code.launchpad.net/elisa Contributors to this release: - David McLeod - Florian Boucault - Guillaume Emont - Jesús Corrius - Lionel Martin - Maxwell Young - Olivier Tilloy - Philippe Normand -- http://mail.python.org/mailman/listinfo/python-announce-list Support the Python Software Foundation: http://www.python.org/psf/donations.html
unittest, order of test execution
Hello everyone, I've got 2 functions to test, extrfromfile which returns a list of dictionaries, and extrvalues that extracts values from that list. Now I can test them both in one test case, like this: def test_extrfromfile(self): valist = ma.extrfromfile('loadavg_unittest.txt') valist_ut = [ {'day': '08-11-19', 'time': '12:41', 'val': 0.11}, {'day': '08-11-19', 'time': '12:42', 'val': 0.08}, {'day': '08-11-19', 'time': '12:43', 'val': 0.57}, {'day': '08-11-19', 'time': '12:44', 'val': 0.21}, {'day': '08-11-19', 'time': '12:45', 'val': 0.08}, {'day': '08-11-19', 'time': '12:46', 'val': 0.66}, {'day': '08-11-19', 'time': '12:47', 'val': 0.32}, {'day': '08-11-19', 'time': '12:48', 'val': 0.12}, {'day': '08-11-19', 'time': '12:49', 'val': 0.47}, {'day': '08-11-19', 'time': '12:50', 'val': 0.17}] self.assertEqual(valist, valist_ut) vlextr_ut = [0.11, 0.08, 0.57, 0.21, 0.08, 0.66, 0.32, 0.12, 0.47, 0.17] vlextr = ma.extrvalues(valist) self.assertEqual(len(vlextr_ut), len(vlextr)) for (idx, elem) in enumerate(vlextr_ut): self.assertAlmostEqual(elem, vlextr[idx]) But I was wondering, *should* this test be separated into two unit tests, one for each function? On the face of it, it looks that's how it should be done. This, however, raises the question: what's the order of test execution in the unittest? And how to pass values between unit tests? Should I modify 'self' in unit test? Regards, mk -- http://mail.python.org/mailman/listinfo/python-list
Re: v = json.loads({'test':'test'})
Diez wrote: gert schrieb: Single quotes works in every browser that support json so i recommended python should support it too, besides it looks much cleaner {'test': 'test'} {test: test} It can not be that hard to support both notation can it ? It's not hard, but it's not standard-conform. Most browsers even accept something like this: {foo : bar} But all of this is not JSON. By the way, all of this *is* YAML: yaml.load({'test':'test'}) {'test': 'test'} yaml.load({test: test}) {'test': 'test'} If someone needs more forgiving and user-editable format, YAML might be a good choice. -- Ivan -- http://mail.python.org/mailman/listinfo/python-list
Re: USB in python
On Fri, 23 Jan 2009 18:56:38 +1100, Astan Chee wrote: Diez B. Roggisch wrote: If all you need is on-off - why can't you just use a switch? Because I want to control the on-off the device using a computer and write software for it (which I am confident I can do if I had references to how the wrappers to said interface). Cheers Astan. How about (a crazy idea) using the audio jack out? (DISCLAIMER: Little Hardware Experience). High pitched sound (or anything in sound-ology that means high voltage) means the device is on and low pitched sound off. The device will need an additional transistor to separate low voltage from the high voltage. I don't know how much power can be pulled from jack out, but for a home brewn device it is still feasible to draw power from USB and signal from jack out. -- http://mail.python.org/mailman/listinfo/python-list
Re: USB in python
high pitch is == high frequency, no higher amplitude... but the difference can be easily made out and the electronics for this is very well understood and used.point is, the gentleman asking the question might already have a USB controller built into his device, and while most modern computers have anywhere between 2-6 USB ports, you have only 1 audio-out (Mic), so chances of finding a free controller port may be a bit of a challenge. On Mon, Jan 26, 2009 at 1:51 PM, Lie Ryan lie.1...@gmail.com wrote: On Fri, 23 Jan 2009 18:56:38 +1100, Astan Chee wrote: Diez B. Roggisch wrote: If all you need is on-off - why can't you just use a switch? Because I want to control the on-off the device using a computer and write software for it (which I am confident I can do if I had references to how the wrappers to said interface). Cheers Astan. How about (a crazy idea) using the audio jack out? (DISCLAIMER: Little Hardware Experience). High pitched sound (or anything in sound-ology that means high voltage) means the device is on and low pitched sound off. The device will need an additional transistor to separate low voltage from the high voltage. I don't know how much power can be pulled from jack out, but for a home brewn device it is still feasible to draw power from USB and signal from jack out. -- http://mail.python.org/mailman/listinfo/python-list -- regards, Banibrata http://www.linkedin.com/in/bdutta -- http://mail.python.org/mailman/listinfo/python-list
Function arguments
Hello! Is there any way that I can get at all the arguments passed to a function as a map without using keyword arguments? def foo(a, b, c): # Can I access all the arguments in a collection somewhere? I'm mainly curious since I have stumbled on to some cases where it might have been nice to be able to do that. :.:: mattias -- http://mail.python.org/mailman/listinfo/python-list
Re: v = json.loads({'test':'test'})
gert schrieb: On Jan 26, 12:40 am, Diez B. Roggisch de...@nospam.web.de wrote: But all of this is not JSON. Yes it is, you just make it more python dictionary compatible :) No, what you do is to make it more incompatible with other json-implementations. Which defies the meaning of a standard. Besides, {foo : bar} is *not* python dictionary compatible, at least not unless you defined foo beforehand, and then there is no guarantee that foo is actually as string containing 'foo'. What is this json person email address so I can ask that he makes a very small update on his site. Go try your luck -http://www.json.org/ Besides if you can make lightweight versions of standards http://docs.python.org/library/xml.dom.minidom.html minidom is a lightweight version of the DOM-API. But it reads and writes standard-conform XML documents. The same applies for element-tree and lxml. So it does not serve as a counter-example. yes it does because adding ' does not mean replacing so it will still load standard json. Like every browser does and is exactly the same philosofie as No. If minidom would accept XML-documents that contain newlines in attributes (which otherwise are forbidden), e.g. foo bar=some text/ *that* would be like adding single-quote stringliterals to JSON. This is about the *format*, not the API. There are people who say something along the lines of be strict when writing, and tolerant when reading (the exact quote is different, but neither google:~site:mybrain nor any other have helped me here), so one could argue that reading JSON that is not standard-conform would be ok. But IMHO that would increase the amount of interoperability-problems - because some people would *write* json that isn't standard-conform anymore. Diez -- http://mail.python.org/mailman/listinfo/python-list
Re: Does Python really follow its philosophy of Readability counts?
Russ P. a écrit : On Jan 23, 4:57 am, Bruno Desthuilliers bruno. 42.desthuilli...@websiteburo.invalid wrote: Russ P. a écrit : As I said before, if you have the source code you can always change private attributes to public in a pinch if the language enforces encapsulation. And then have to maintain a fork. No, thanks. For crying out loud, how many private attributes do you need to access? May I remind you that this is an hypothetical use case ? If it's a dozen, then you and your library developer are obviously not on the same page. If it's one or two, then it's hardly a fork. Just take note of the one or two places where you needed to remove the access restriction and you're done. Yeah, fine. And doing it each and any release. A fork is a fork is a fork... But if you are working on a team project, you can't change the code that another member of a team checks in. Why on earth couldn't I change the code of another member of my team if that code needs changes ? The code is the whole team's ownership. OK, fine, you can change the code of another member of the team. No. I can change the *team's* code. Please *read*. team's ownership, ok ? Or do I have to spell it out loud ? TEAM'S OWNERSHIP. Uh. You get the message, now ? Are you going to check with him first, or just do it? despairI give up./despair (snip) My my my. If you don't trust your programmers, then indeed, don't use Python. What can I say (and what do I care ?). But once again, relying on the language's access restriction to manage *security* is, well, kind of funny, you know ? Are you seriously saying that if you were managing the production of a major financial software package with hundreds of developers, you would just trust them all to have free access to the most sensitive and critical parts of the program? Now *that's*, well, kind of funny, you know? A remote web service - for example - is a far better blackbox when it comes to this kind of sensitive and critical parts. If I can't trust someone wrt/ this part of the code, then he won't even have it as a binary package. Period. Would you give all those developers your password to get into the system? No? Wait a minute ... you mean you wouldn't trust them with your password? But what about openness? Are you some sort of fascist or what? Goodwin point. You loose. Good bye again, Mr P. -- http://mail.python.org/mailman/listinfo/python-list
Re: Function arguments
brasse wrote: Is there any way that I can get at all the arguments passed to a function as a map without using keyword arguments? def foo(a, b, c): # Can I access all the arguments in a collection somewhere? I'm mainly curious since I have stumbled on to some cases where it might have been nice to be able to do that. Look up the function call syntaxes with * and **: def foo(*args): print args ... def bar(**keywords): print keywords ... foo(1, 2, 3) (1, 2, 3) bar(a=1, b=2, c=3) {'a': 1, 'c': 3, 'b': 2} -- Erik Max Francis m...@alcyone.com http://www.alcyone.com/max/ San Jose, CA, USA 37 18 N 121 57 W AIM, Y!M erikmaxfrancis Custom reconciles us to everything. -- Edmund Burke -- http://mail.python.org/mailman/listinfo/python-list
Re: Function arguments
On Mon, Jan 26, 2009 at 1:03 AM, brasse thebra...@gmail.com wrote: Hello! Is there any way that I can get at all the arguments passed to a function as a map without using keyword arguments? def foo(a, b, c): # Can I access all the arguments in a collection somewhere? You can use positional arguments: def foo(*args): print args foo(a, b, c) #== [a, b, c] Though if you explained your situation more, the newsgroup could probably be of greater help. Cheers, Chris -- Follow the path of the Iguana... http://rebertia.com -- http://mail.python.org/mailman/listinfo/python-list
Re: Function arguments
brasse schrieb: Hello! Is there any way that I can get at all the arguments passed to a function as a map without using keyword arguments? def foo(a, b, c): # Can I access all the arguments in a collection somewhere? I'm mainly curious since I have stumbled on to some cases where it might have been nice to be able to do that. There is the locals()-call that returns the local variables as dictionary. Diez -- http://mail.python.org/mailman/listinfo/python-list
Re: Function arguments
On Jan 26, 10:11 am, Chris Rebert c...@rebertia.com wrote: On Mon, Jan 26, 2009 at 1:03 AM, brasse thebra...@gmail.com wrote: Hello! Is there any way that I can get at all the arguments passed to a function as a map without using keyword arguments? def foo(a, b, c): # Can I access all the arguments in a collection somewhere? You can use positional arguments: def foo(*args): print args foo(a, b, c) #== [a, b, c] Though if you explained your situation more, the newsgroup could probably be of greater help. This is an abbreviated version of what I am doing now: def make_data(**kw): ''' make_data(foo='123', bar=42, time=time.time()) ''' template = '%(foo)s - %(bar)d - %(time)s' kw['time'] = time.strftime('%c', kw['time'] return template % kw This works, but the function signature doesn't say much about arguments I should pass to it. What I would like to do is something like this: def make_data(foo, bar time): template = '%(foo)s - %(bar)d - %(time)s' args = magic_get_args_function() args['time'] = time.strftime('%c', args['time'] return template % args I hope this should clear things up a bit. :-) :.:: mattias -- http://mail.python.org/mailman/listinfo/python-list
Re: Function arguments
On Mon, Jan 26, 2009 at 1:34 AM, brasse thebra...@gmail.com wrote: On Jan 26, 10:11 am, Chris Rebert c...@rebertia.com wrote: On Mon, Jan 26, 2009 at 1:03 AM, brasse thebra...@gmail.com wrote: Hello! Is there any way that I can get at all the arguments passed to a function as a map without using keyword arguments? def foo(a, b, c): # Can I access all the arguments in a collection somewhere? You can use positional arguments: def foo(*args): print args foo(a, b, c) #== [a, b, c] Though if you explained your situation more, the newsgroup could probably be of greater help. This is an abbreviated version of what I am doing now: def make_data(**kw): ''' make_data(foo='123', bar=42, time=time.time()) ''' template = '%(foo)s - %(bar)d - %(time)s' kw['time'] = time.strftime('%c', kw['time'] return template % kw This works, but the function signature doesn't say much about arguments I should pass to it. What I would like to do is something like this: def make_data(foo, bar time): template = '%(foo)s - %(bar)d - %(time)s' args = magic_get_args_function() args['time'] = time.strftime('%c', args['time'] return template % args Just use locals() as was pointed out by Diez: def make_data(foo, bar, time): template = '%(foo)s - %(bar)d - %(time)s' time = time.strftime('%c', time) return template % locals() Cheers, Chris -- Follow the path of the Iguana... http://rebertia.com -- http://mail.python.org/mailman/listinfo/python-list
Re: ob_type in shared memory
Hi Mark, nice to have your comment. On Jan 25, 9:47 pm, Mark Wooding m...@distorted.org.uk wrote: Aaron Brady castiro...@gmail.com writes: snip Object 'A' is of type 'Ta'. When process 'P' is looking at it, it needs to have an 'ob_type' that is 'Ta' as process 'P' sees it. When process 'Q' is looking at it, it needs to have an 'ob_type' that is 'Ta' as process 'Q' sees it. If it referred to 'Ta' in process 'P' when 'Q' was calling it, 'Q' would have to access memory that is in another process. I see. My immediate reaction was to suggest that you just put the PyTypeObject in shared memory -- but then I realised that the shared memory region will probably be in different addresses in the two processes. Yes, exactly. I'll assume that you've got enough synchronization between the processes involved to stop everything from turning to mush. Have at thee, synchronization! Yes, it is possible theoretically. (By the way, did you know you can detect deadlock before it strikes with a simple breadth-first search?) The idea is still not out of the proof-of-concept stage-- the concept not having been proved. Therefore, I need a field and an array. The field indicates which type should be loaded, and the array contains the types. Quick example: PyTypeObject* array_of_types[]= { SharedList, SharedTuple }; Then, when a list is being accessed, it can set its own 'ob_type' field to 'array_of_types[ 0 ]', and similarly for a tuple. However, I'm having trouble getting 'array_of_types' in the right module during compilation. My question is: Where do 'array_of_types' and the forward declarations for the types go? I'm not sure I understand the difficulty. They'll want to go in your C module somewhere, but as long as SharedList and SharedTuple are either in the same source file or not declared `static' you just write the definition you've got somewhere after declaring or defining the actual types in question. The problem I ran into was that different modules (C files) were seeing different versions of the structure. 'SharedList' showed up as different addresses in the debugger! I might be missing something, but I think the forward declaration got interpreted as an actual declaration in the different files that included the header. Mysteriously, it disappeared when I tried it again now. It's still a possibility. The solution I looked at today was declare the array like this: PyTypeObject* keep_types[]; It's even ok in a shared header (multiply included). Then the actual definition just gives it NULLs and a size, which are filled in as the needed modules are loaded. That solves the (additional) problem of not having called the owner module's initialization code. The catch is that if you have an object in a SharedList, you need to have imported its module before you load it. However 'pickle' has that problem too, so I don't feel bad. There's a comment in Extending and Embedding (2.1) about initializing PyTypeObjects: : PyObject_HEAD_INIT(NULL) : : This line is a bit of a wart; what we'd like to write is: : : PyObject_HEAD_INIT(PyType_Type) : : as the type of a type object is type, but this isn't strictly : conforming C and some compilers complain. The comment here is wrong: PyType_Type is a perfectly good constant expression as far as C is concerned, but alas Microsoft's dynamic linking system isn't clever enough to cope with it even so (because it's in a separate link unit). But this isn't a problem in our case: presumably SharedList and SharedTuple are in the same module, so this should all just work. Here is another quote from the docs: Portability therefore requires not to make any assumptions about symbol visibility. This means that all symbols in extension modules should be declared static, except for the module’s initialization function, in order to avoid name clashes with other extension modules (as discussed in section The Module’s Method Table and Initialization Function). All declared static? Dear. So I don't know what to make of it, especially given the need to call 'PyType_Ready'. -- http://mail.python.org/mailman/listinfo/python-list
Ldap Extended Operation python
Hello there, what would be the python implementation for this line in Java: java.util.Hashtable environment = LdapHelper.getEnvironment(url, true); LdapContext ldapContext = new InitialLdapContext(environment, null); Response resp = (Response) ldapContext.extendedOperation(new Request()) how to deal with extended operations in python? thanks for your help! -- http://mail.python.org/mailman/listinfo/python-list
Re: Dynamic methods and lambda functions
Michael Torrie torr...@gmail.com writes: Basically, don't use a lambda. Create a real, local closure with a nested def block. That way the closure is created every time the parent function is called. Nope. I explained the real problem quite clearly, and it's to do with the difference between binding and assignment. What's the difference between these two pieces of code? ## First def __init__(self): for n, v in props: setattr(Person, '_' + n, v) setattr(Person, n, lambda self: getattr(self, '_' + n)) ## Second def __init__(self): for n, v in props: setattr(Person, '_' + n, v) def hack(self): return getattr(self, '_' + n) setattr(Person, n, hack) Lambda expressions are only ever compiled once during execution. The same is true of `def' bodies. -- [mdw] -- http://mail.python.org/mailman/listinfo/python-list
Re: Counting number of objects
On Mon, 26 Jan 2009 02:37:37 + Mark Wooding m...@distorted.org.uk wrote: This looks OK, although I'd suggest using cls.counter += 1 instead of a.counter += 1 in the __new__() method. Just seems clearer to me, esp. when you think about subclassing. I'm not sure about clarity, but that would be semantically different. The code as written counts all instances of a and its subclasses. Your suggestion would count instances of subclasses independently. I don't know which behaviour the OP would prefer, but I don't think choosing between them is a matter of clarity. Oh shoot. I should have known that. I hope I will from now on, at least. :/ /W -- My real email address is constructed by swapping the domain with the recipient (local part). -- http://mail.python.org/mailman/listinfo/python-list
Re: *.python.org broken?
I experienced the same problem here in Brazil. Tweeks ago I could not access any *.python.org site. Today I tried and it worked. The problem seemed to be limited to Python's domain because I could access every other site that I tried the same day. More info: - At least for me I didn't seem to be IPv6 related. - It failed in the same day in more than one PC, using different providers. - The domain name was resolving ok. My guess is that it was some kind of BGP failure. Perhaps the AS that hosts Python's servers injected a wrong route or someone else did, effectively stealing all the traffic for that prefix. That's more common than people realize (specially nowadays when countries such as Pakistan try to block domains by messing with BGP). Carlos Ribeiro On Sun, Jan 25, 2009 at 11:44, Cousin Stanley cousinstan...@gmail.comwrote: Is anybody else having trouble accessing sites (including www, docs, wiki) in the python.org tree, or is it just me? (Or just .au?) Yes, connecting to python.org sites has been problematic for me as well I don't remember when the trouble started, but it's been problematic for at least a week or longer here -- Stanley C. Kitching Human Being Phoenix, Arizona -- http://mail.python.org/mailman/listinfo/python-list -- Carlos Ribeiro Consultoria em Projetos blog: http://rascunhosrotos.blogspot.com blog: http://pythonnotes.blogspot.com mail: carribe...@gmail.com mail: carribe...@yahoo.com -- http://mail.python.org/mailman/listinfo/python-list
Re: Python C API (PyObject_CallMethod clear object)
On 26 Jan., 03:25, Gabriel Genellina gagsl-...@yahoo.com.ar wrote: En Sun, 25 Jan 2009 23:46:01 -0200, googler.1.webmas...@spamgourmet.com escribió: I have a problm with deallocating stuff. I call a function with this command: PyObject *rvalue = PyObject_CallMethod(obj, execute,,NULL); if(rvalue==NULL) PyErr_Print(); else Py_DECREF(rvalue); Can it be, that something is missing here? Imagine I allocate an object of a type: t = MyImage() ,;- syntax_error 129=)/% #is a syntax error How you see I would get a syntaxerror, but an object of the type MyImage() is created. But its deallocated when Py_Finalize() is called. What can I do to deallocate this object after PyObject_CallMethod returns NULL, too? I debug it, so if rvalue!=NULL the object is deallocated, but what can I do if rvalue==NULL= A syntax error is detected *before* the code runs -- so the object isn't created at all. -- Gabriel Genellina Hi! Yes, you are right. I got this issue not in syntax error, I get it on a runtime error like this: t = MyImage() self.test(hallo) #test takes an integer so this would throw an exception. Here you see, an object of the type MyImage() was created but its not deleted. 't' is a local reference so how can I do that? Thanks! -- http://mail.python.org/mailman/listinfo/python-list
Re: Newby: how to transform text into lines of text
2009/1/25 Tim Chase python.l...@tim.thechases.com: (again, a malformed text-file with no terminal '\n' may cause it to be absent from the last line) Ahem. That may be malformed for some specific file specification, but it is only malformed in general if you are using an operating system that treats '\n' as a terminator (eg, Linux) rather than as a separator (eg, MS DOS/Windows). Perhaps what you don't /really/ want to be reminded of is the existence of operating systems other than your preffered one? -- Tim Rowe -- http://mail.python.org/mailman/listinfo/python-list
Re: A java hobbyist programmer learning python
I like the latter two styles, particularly the last one. That way you can see at a glance that those member variables are defined in the super class. I like the second style because it makes it leaves the 2-d implementation hidden, which is the whole point of encapsulation. But then I am a fan of Hungarian notation, which many programmers can't stand. Is it that programmers can't stand it, or is it that they can't stand it when it's imposed when not needed? As a pseudo type system for languages with no typing it's pretty useful. To the extent that a language provides typing it's useless verging on dangerous because it can get out of synch with the actual type. I believe that any case of Hungarian notation being useful is evidence of a flaw in the language being used -- but arguably all languages are flawed in some way or other, so Hungarian /can/ be useful. At this level I don't recognise a difference between System and Applications Hungarian, by the way -- the difference is eliminated if you declare types corresponding to the meanings, which is commonplace in, for example, Ada. -- Tim Rowe -- http://mail.python.org/mailman/listinfo/python-list
Re: Python C API (PyObject_CallMethod clear object)
the hook is, how to delete the locals of this function, maybe thats a workaround? thanks and bye. -- http://mail.python.org/mailman/listinfo/python-list
Re: Does Python really follow its philosophy of Readability counts?
Russ P. a écrit : On Jan 23, 6:36 pm, Luis Zarrabeitia ky...@uh.cu wrote: Makes *no* sense? There's *no* good reason *at all* for the original author to hide or protect internals? My bad, sorry. It makes sense... if the original author is an egotist who believes he must control how I use that library. If the original author provides you with the source code and the right to modify it, he cannot possibly control how you use the library. You can trivially disable any access controls. But for some reason that's not enough for you. Has it occurred to you that some users might actually *want* access controls? Then they'll have to choose a language which provides it. Maybe some users want to actually use the library as the author intended it to be used. And ? Strange enough, that's usually what happens - using the official, documented API. Strange enough, it seems that Python programmers are mostly wise enough to not break encapsulation (nor abuse any of the highly dynamic features of Python) without pretty good reasons, lots of thought and attention, clear documentation of the fact, and possibly exchanges with the library author (or maintainer) to discuss the problem. -- http://mail.python.org/mailman/listinfo/python-list
Re: Newby: how to transform text into lines of text
Diez B. Roggisch de...@nospam.web.de wrote: [ ... ] Your approach of reading the full contents can be used like this: content = a.read() for line in content.split(\n): print line Or if you want the full content in memory but only ever access it on a line-by-line basis: content = a.readlines() (Just because we can now write for line in file doesn't mean that readlines() is *totally* redundant.) -- \S -- si...@chiark.greenend.org.uk -- http://www.chaos.org.uk/~sion/ Frankly I have no feelings towards penguins one way or the other -- Arthur C. Clarke her nu becomeþ se bera eadward ofdun hlæddre heafdes bæce bump bump bump -- http://mail.python.org/mailman/listinfo/python-list
Re: strange error whilst porting to 2.6
I found that this error Exception RuntimeError: 'maximum recursion depth exceeded in __subclasscheck__' in type 'exceptions.AttributeError' ignored occurs when attempting to copy (copy.copy(inst)) an instance of a class that looks like this class LazyParagraph(_LazyMixin,TTParagraph): SUPER=TTParagraph _CLEAN_SPACE=1 however, whilst debugging I found the error disappeared when I tried to determine what accesses were being made on this instance during the copy. If I use this code class _LazyParagraph(_LazyMixin,TTParagraph): SUPER=TTParagraph _CLEAN_SPACE=1 class LazyParagraph(_LazyParagraph): def __getattr__(self,a): return getattr(_LazyParagraph,a) then instances of the new lazy paragraph don't cause a problem. This looks awfully fragile to me, and I haven't really got any closer to understanding what's going on. Anyone got any ideas? I have attempted to abstract the problem, but so far I haven't found the vital bits. -- Robin Becker -- http://mail.python.org/mailman/listinfo/python-list
Re: Ldap Extended Operation python
Benny Fallica wrote: Hello there, what would be the python implementation for this line in Java: java.util.Hashtable environment = LdapHelper.getEnvironment(url, true); LdapContext ldapContext = new InitialLdapContext(environment, null); Response resp = (Response) ldapContext.extendedOperation(new Request()) how to deal with extended operations in python? Which LDAP extended operation do you want to use? In python-ldap the following ext. ops are already implemented: http://python-ldap.sourceforge.net/doc/html/ldap.html#ldap.LDAPObject.whoami_s http://python-ldap.sourceforge.net/doc/html/ldap.html#ldap.LDAPObject.passwd There's no generic interface for ext. ops. yet. Feel free to contribute something like this. Ciao, Michael. -- http://mail.python.org/mailman/listinfo/python-list
Re: var is None vs. var == None
Terry Reedy wrote: Roger wrote: And, just for completeness, the is test is canonical precisely because the interpreter guarantees there is only ever one object of type None, so an identity test is always appropriate. Even the copy module doesn't create copies ... Does the interpreter guarantee the same for False and True bools? Yes. Bool(x) should return one of the two existing instances. In 2.x, the *names* 'True' and 'False' can be rebound because bool is new and people write try: False,True except NameError: False,True = 0,1 to make code back compatible. I would claim that the ability to rebind True and False is a simple bug, though one not likely to be fixed in an 2.x release. The code above doesn't rebind True and False in interpreters that have them ... In 3.0, the names are keywords, just like 'None' and cannot be rebound, so x is True is guaranteed to answer whether x *is* the true object. Back before rebinding 'None' was prohibited, 'is None' was not completely guaranteed either (absent reading the rest of a file to be sure no rebinding would be done). And that was a bug too, in this case one that *was* removed in 2.4, I believe. Don't have 2.3 lying around just now. Python 2.4.3 (#1, May 24 2008, 13:47:28) [GCC 4.1.2 20070626 (Red Hat 4.1.2-14)] on linux2 Type help, copyright, credits or license for more information. None = 3 SyntaxError: assignment to None regards Steve -- Steve Holden+1 571 484 6266 +1 800 494 3119 Holden Web LLC http://www.holdenweb.com/ -- http://mail.python.org/mailman/listinfo/python-list
Re: Counting number of objects
Mark Wooding wrote: Andreas Waldenburger geekm...@usenot.de writes: On Sun, 25 Jan 2009 09:23:35 -0800 (PST) Kottiyath n.kottiy...@gmail.com wrote: class a(object): counter = 0 def __new__(cls, *args, **kwargs): a.counter += 1 return object.__new__(cls, *args, **kwargs) Hmm. Exceptions raised during object creation make this rather precarious. In your code, if object.__new__ raises an exception, the counter will end up too high (the __del__ method won't get called in this case). If object.__new__ raises an exception you have bigger problems to worry about than an object count being wrong. One might try to rewrite it: def __new__(cls, *args, **kw): thing = object.__new__(cls, *args, **kw) a.counter += 1 return thing Now this won't work in subclasses if they also have a __new__ method: again, if the subclass's __new__ raises an exception then __del__ won't be called and the counter will be too high. To make this technique work, I think you need to do the counter increment in __init__ rather than __new__, and to set an attribute so that __del__ knows whether to do the decrement. (If a subclass's __init__ raises an exception before yours gets called, you don't want to do the decrement because that'll leave the counter too low.) Yes, rather better to do it that way and decouple it from __new__(). Of course super() might help here, though not everyone approves of it. This looks OK, although I'd suggest using cls.counter += 1 instead of a.counter += 1 in the __new__() method. Just seems clearer to me, esp. when you think about subclassing. I'm not sure about clarity, but that would be semantically different. The code as written counts all instances of a and its subclasses. Your suggestion would count instances of subclasses independently. I don't know which behaviour the OP would prefer, but I don't think choosing between them is a matter of clarity. Correct, but pointing out the differences has highlighted that is a real design decision to be made in the event that subclassing is used. Another way to go would be to use the weakref module and create a weakref-set (or list) as the counter. That way you would only need to add the objects in the __new__() method and not worry about removing them. I will admit that this is overengineering the problem a bit, but might be a good exercise. This is a better approach, because it avoids the problems with exceptions during object construction that I described above. Another question - unrelated to the major topic: How much time does it take to be proficient in Python? Don't concern yourself with that question at all, is my advice. Indeed. Besides, it varies an awful lot. [...] - or am I just dumb? You're writing programs and you're communicating with like-minded people about your problems (in a socially appropriate way). Not what dumb people do, in my book. Absolutely! Besides, you're asking sensible questions about subtle parts of the language -- I wouldn't say that __new__ was beginner territory, for example. So, no, you certainly don't seem dumb to me. Hear, hear! regards Steve -- Steve Holden+1 571 484 6266 +1 800 494 3119 Holden Web LLC http://www.holdenweb.com/ -- http://mail.python.org/mailman/listinfo/python-list
Re: Does Python really follow its philosophy of Readability counts?
Bruno Desthuilliers wrote: Russ P. a écrit : On Jan 23, 6:36 pm, Luis Zarrabeitia ky...@uh.cu wrote: Makes *no* sense? There's *no* good reason *at all* for the original author to hide or protect internals? My bad, sorry. It makes sense... if the original author is an egotist who believes he must control how I use that library. If the original author provides you with the source code and the right to modify it, he cannot possibly control how you use the library. You can trivially disable any access controls. But for some reason that's not enough for you. Has it occurred to you that some users might actually *want* access controls? Then they'll have to choose a language which provides it. Maybe some users want to actually use the library as the author intended it to be used. And ? Strange enough, that's usually what happens - using the official, documented API. Strange enough, it seems that Python programmers are mostly wise enough to not break encapsulation (nor abuse any of the highly dynamic features of Python) without pretty good reasons, lots of thought and attention, clear documentation of the fact, and possibly exchanges with the library author (or maintainer) to discuss the problem. Quite. Python is a language for consenting adults. It has perceived deficiencies for certain software engineering environments. Can we drop the subject now? This horse was flogged to death long ago, and it's pointless and cruel to keep on beating the remains. regards Steve -- Steve Holden+1 571 484 6266 +1 800 494 3119 Holden Web LLC http://www.holdenweb.com/ -- http://mail.python.org/mailman/listinfo/python-list
Re: Dynamic methods and lambda functions
Mark Wooding wrote: unine...@gmail.com writes: [...] * Assignment stores a new (reference to a) value in the variable. * Binding modifies the mapping between names and variables. I realise I have omitted what was doubtless intended to be explanatory detail, but I am having trouble reconciling those sentences. Would you mind explaining in vacuuo what you see as the difference between assignment and binding? regards Steve -- Steve Holden+1 571 484 6266 +1 800 494 3119 Holden Web LLC http://www.holdenweb.com/ -- http://mail.python.org/mailman/listinfo/python-list
Building matplotlib from source on windows
Hello everyone, I'm trying to get 0.98.5.2 installed on Windows to use Python 2.6 (dependency packages I need to use on that version, long story, etc). When I was trying to build it (python setup.py build), it was finding the VC 9.0 C++ compiler on my comp. However, after adding necessary packages (zlib, png, etc), it was reporting missing 'unistd.h'. Clearly, this means it was meant to be built with GCC for Windows like MinGW ? I have uninstalled the VC compiler, installed GnuWin32 packages and tried using MinGW (passing --compiler=mingw32 to python setup.py build ) but now compilation process fails like this: c:\MinGW\bin\g++.exe -mno-cygwin -shared -s build\temp.win32-2.6\Release\src\ft2font.o build\temp.wi n32-2.6\Release\src\mplutils.o build\temp.win32-2.6\Release\cxx\cxxsupport.o build\temp.win32-2.6\Re lease\cxx\cxx_extensions.o build\temp.win32-2.6\Release\cxx\indirectpythoninterface.o build\temp.win 32-2.6\Release\cxx\cxxextensions.o build\temp.win32-2.6\Release\src\ft2font.def -LC:\Python26\libs - LC:\Python26\PCbuild -lfreetype -lz -lgw32c -lstdc++ -lm -lpython26 -lmsvcr90 -o build\lib.win32-2.6 \matplotlib\ft2font.pyd c:\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: cannot find -lgw32c collect2: ld returned 1 exit status error: command 'g++' failed with exit status 1 What the heck is lgw32c?? Regards, mk -- http://mail.python.org/mailman/listinfo/python-list
Re: USB in python
Lie Ryan wrote: On Fri, 23 Jan 2009 18:56:38 +1100, Astan Chee wrote: Diez B. Roggisch wrote: If all you need is on-off - why can't you just use a switch? Because I want to control the on-off the device using a computer and write software for it (which I am confident I can do if I had references to how the wrappers to said interface). Cheers Astan. How about (a crazy idea) using the audio jack out? (DISCLAIMER: Little Hardware Experience). High pitched sound (or anything in sound-ology that means high voltage) means the device is on and low pitched sound off. The device will need an additional transistor to separate low voltage from the high voltage. I don't know how much power can be pulled from jack out, but for a home brewn device it is still feasible to draw power from USB and signal from jack out. Congratulations. You just invented the modem. regards Steve -- Steve Holden+1 571 484 6266 +1 800 494 3119 Holden Web LLC http://www.holdenweb.com/ -- http://mail.python.org/mailman/listinfo/python-list
Re: USB in python
Astan Chee wrote: Tim Roberts wrote: Sorry, but you have NOT created a USB device, and I sincerely hope you do not try to plug it in to a real USB port. Sorry, by USB device, I meant a device that is powered/activated by a bunch of wires that I want to control using a computer and since I had a spare USB jack lying around, I used that instead. But so far I haven't tried it, nor will try it if it wont work properly. Yes, it is not a proper USB device, because I didnt build it to specifically interface with the USB port; but I had to start somewhere. Also, the device requires more power than the standard parallel port can give. Anyway, it looks like the easiest solution for my case is a microcontroller In which case the Arduino may be a good place to start. The recent duemilanove boards use USB to communicate with the host, and so the USB port should be available to the microcontroller. We areg etting some way away from Python now, of course ... regards Steve -- Steve Holden+1 571 484 6266 +1 800 494 3119 Holden Web LLC http://www.holdenweb.com/ -- http://mail.python.org/mailman/listinfo/python-list
Re: I'm a python addict !
Linuxguy123 linuxguy...@gmail.com writes: I just started using python last week and I'm addicted. I hate Perl. I never did learn to use it with any competence. I has to be the most obfuscated, cryptic language I've ever seen. Making it object oriented only makes it worse ! .. snip .. I program full-time in Python, so I share your excitement and enthusiasm. But bashing Perl like that doesn't make you sound very smart. I'm probably one of the very few Python programmers who came from (and still occassionally) use Perl. I've written non-trivial programs in it and from my experience I can tell you that it's actually a great language. The Moose object system is well beyond Python's class system. But I guess you wouldn't know that. So yay for Python, but don't get in the habit of criticising that which you do not know. -- http://mail.python.org/mailman/listinfo/python-list
Re: I'm a python addict !
J Kenneth King ja...@agentultra.com writes: Linuxguy123 linuxguy...@gmail.com writes: I just started using python last week and I'm addicted. I hate Perl. I never did learn to use it with any competence. I has to be the most obfuscated, cryptic language I've ever seen. Making it object oriented only makes it worse ! .. snip .. I program full-time in Python, so I share your excitement and enthusiasm. But bashing Perl like that doesn't make you sound very smart. I'm probably one of the very few Python programmers who came from (and still occassionally) use Perl. I've written non-trivial programs in it and from my experience I can tell you that it's actually a great language. The Moose object system is well beyond Python's class system. But I guess you wouldn't know that. So yay for Python, but don't get in the habit of criticising that which you do not know. I just realized this might become flame-bait. Please disregard the flamey bits. :( -- http://mail.python.org/mailman/listinfo/python-list
Re: Function arguments
On Jan 26, 10:39 am, Chris Rebert c...@rebertia.com wrote: On Mon, Jan 26, 2009 at 1:34 AM, brasse thebra...@gmail.com wrote: On Jan 26, 10:11 am, Chris Rebert c...@rebertia.com wrote: On Mon, Jan 26, 2009 at 1:03 AM, brasse thebra...@gmail.com wrote: Hello! Is there any way that I can get at all the arguments passed to a function as a map without using keyword arguments? def foo(a, b, c): # Can I access all the arguments in a collection somewhere? You can use positional arguments: def foo(*args): print args foo(a, b, c) #== [a, b, c] Though if you explained your situation more, the newsgroup could probably be of greater help. This is an abbreviated version of what I am doing now: def make_data(**kw): ''' make_data(foo='123', bar=42, time=time.time()) ''' template = '%(foo)s - %(bar)d - %(time)s' kw['time'] = time.strftime('%c', kw['time'] return template % kw This works, but the function signature doesn't say much about arguments I should pass to it. What I would like to do is something like this: def make_data(foo, bar time): template = '%(foo)s - %(bar)d - %(time)s' args = magic_get_args_function() args['time'] = time.strftime('%c', args['time'] return template % args Just use locals() as was pointed out by Diez: def make_data(foo, bar, time): template = '%(foo)s - %(bar)d - %(time)s' time = time.strftime('%c', time) return template % locals() Nice, thank you! :.:: mattias -- http://mail.python.org/mailman/listinfo/python-list
Re: Newby: how to transform text into lines of text
On Mon, 26 Jan 2009 12:22:18 +, Sion Arrowsmith wrote: content = a.readlines() (Just because we can now write for line in file doesn't mean that readlines() is *totally* redundant.) But ``content = list(a)`` is shorter. :-) Ciao, Marc 'BlackJack' Rintsch -- http://mail.python.org/mailman/listinfo/python-list
Re: USB in python
astan.c...@al.com.au wrote: Tim Roberts wrote: Sorry, but you have NOT created a USB device, and I sincerely hope you do not try to plug it in to a real USB port. Sorry, by USB device, I meant a device that is powered/activated by a bunch of wires that I want to control using a computer and since I had a spare USB jack lying around, I used that instead. But so far I haven't tried it, nor will try it if it wont work properly. Yes, it is not a proper USB device, because I didnt build it to specifically interface with the USB port; but I had to start somewhere. Also, the device requires more power than the standard parallel port can give. Anyway, it looks like the easiest solution for my case is a microcontroller -- http://mail.python.org/mailman/listinfo/python-list I've played around in this area a little bit. Microcontrollers still require hardware programming and for simple circuits I think it is overkill. If you want to use USB then you may be able to use the FTDI chips. They have both serial (FT232) and parallel (FT245) chips and are quite cheap. They are surface mount devices though, but you can get a kit that includes USB port, the chip already connected to a board with a DIP plug and some essential circuits. libftdi, which runs on top of libusb, can control both of these and they require no programming (unless you want to change the USB configuration settings such as vendor ID, etc, from the default value) This is the FT245 chip which is basically USB-to-Parallel. Chips: http://www.ftdichip.com/Products/FT245R.htm Kit/Board: http://www.ftdichip.com/Products/EvaluationKits/UM245R.htm The spec sheet for the board seems quite simple. It's pin out is similar to that of a parallel port in that you have your data lines DB0-DB7, etc. It can also be connected in bus-powered configuration (~100mA) or self-powered configuration. The kit is more expensive than the chip itself, but probably easier especially if you don't have any experience with surface mount. You could build it into your device. You could also create a simple switch box out of it to control external devices, maybe connecting each of the data lines to relays to turn on/off eight devices, etc. Brian Vanderburg II -- http://mail.python.org/mailman/listinfo/python-list
Re: Newby: how to transform text into lines of text
On 26 Jan 2009 14:51:33 GMT Marc 'BlackJack' Rintsch bj_...@gmx.net wrote: On Mon, 26 Jan 2009 12:22:18 +, Sion Arrowsmith wrote: content = a.readlines() (Just because we can now write for line in file doesn't mean that readlines() is *totally* redundant.) But ``content = list(a)`` is shorter. :-) But much less clear, wouldn't you say? content is now what? A list of lines? Characters? Bytes? I-Nodes? Dates? Granted, it can be inferred from the fact that a file is its own iterator over its lines, but that is a mental step that readlines() frees you from doing. My ~0.0154 €. /W -- My real email address is constructed by swapping the domain with the recipient (local part). -- http://mail.python.org/mailman/listinfo/python-list
really slow gzip decompress, why?
I've one big (6.9 Gb) .gz file with text inside it. zcat bigfile.gz /dev/null does the job in 4 minutes 50 seconds python code have been doing the same job for 25 minutes and still doesn't finish =( the code is simpliest I could ever imagine: def main(): fh = gzip.open(sys.argv[1]) all(fh) As far as I understand most of the time it executes C code, so pythons no overhead should be noticible. Why is it so slow? -- http://mail.python.org/mailman/listinfo/python-list
Re: Newby: how to transform text into lines of text
On Sun, 2009-01-25 at 18:23 -0800, John Machin wrote: On Jan 26, 1:03 pm, Gabriel Genellina gagsl-...@yahoo.com.ar wrote: En Sun, 25 Jan 2009 23:30:33 -0200, Tim Chase python.l...@tim.thechases.com escribió: Unfortunately, a raw rstrip() eats other whitespace that may be important. I frequently get tab-delimited files, using the following pseudo-code: def clean_line(line): return line.rstrip('\r\n').split('\t') f = file('customer_x.txt') headers = clean_line(f.next()) for line in f: field1, field2, field3 = clean_line(line) do_stuff() if field3 is empty in the source-file, using rstrip(None) as you suggest triggers errors on the tuple assignment because it eats the tab that defined it. I suppose if I were really smart, I'd dig a little deeper in the CSV module to sniff out the right way to parse tab-delimited files. It's so easy that don't doing that is just inexcusable lazyness :) Your own example, written using the csv module: import csv f = csv.reader(open('customer_x.txt','rb'), delimiter='\t') headers = f.next() for line in f: field1, field2, field3 = line do_stuff() And where in all of that do you recommend that .decode(some_encoding) be inserted? If encoding is an issue for your application, then I'd recommend you use codecs.open('customer_x.txt', 'rb', encoding='ebcdic') instead of open() -- http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list
Re: Does Python really follow its philosophy of Readability counts?
Steve Holden st...@holdenweb.com writes: Quite. Python is a language for consenting adults. Shouldn't such a language allow consenting adults to enter a BDSM scene without being moralized at, if that's what they want to do? ;-) -- http://mail.python.org/mailman/listinfo/python-list
Re: strange error whilst porting to 2.6
Robin Becker wrote: I found that this error Exception RuntimeError: 'maximum recursion depth exceeded in __subclasscheck__' in type 'exceptions.AttributeError' ignored occurs when attempting to copy (copy.copy(inst)) an instance of a class that looks like this class LazyParagraph(_LazyMixin,TTParagraph): SUPER=TTParagraph _CLEAN_SPACE=1 I have attempted to abstract the problem, but so far I haven't found the vital bits. OK this turns out to be one of those useful exercises after all. After instrumenting the copy instance copy func my colleague and I found the problem occurs in this innocuous looking example ### import copy class _LazyMixin: don't do any initialization until later def __init__(self,*args): self._args = args self._initialized = 0 def __getattr__(self,a): if not self._initialized: self._Initialize() return getattr(self,a) raise AttributeError(No attribute '%s' % a) def _Initialize(self): if not self._initialized: self._initialized = 1 del self._args l=_LazyMixin() print l._initialized copy.debug=1 copy.copy(l) ### it turns out that in the absence of other info _copy_inst creates a dummy instance and changes its class to the incoming class. It then asks the new unpopulated instance if it has an attribute __setstate__, that triggers the _LazyMixin __getattr__ which fails because there's no _initialize member so __getattr__ gets recalled etc etc. Presumably in earlier pythons this bad behaviour is just hidden. The fix for us is to provide a __setstate__ which does what the no __setstate__ code does ie update __dict__. However, since the _copy_inst code knows there can be no members on the new instance should it not be asking the __class__ for __setstate__? -- Robin Becker -- http://mail.python.org/mailman/listinfo/python-list
Re: really slow gzip decompress, why?
redbaron wrote: I've one big (6.9 Gb) .gz file with text inside it. zcat bigfile.gz /dev/null does the job in 4 minutes 50 seconds python code have been doing the same job for 25 minutes and still doesn't finish =( the code is simpliest I could ever imagine: def main(): fh = gzip.open(sys.argv[1]) all(fh) As far as I understand most of the time it executes C code, so pythons no overhead should be noticible. Why is it so slow? I'm guessing here - but if gzip streams (and AFAIK it does), the commandline will simply stream to /dev/null. OTOH, python is not streaming, it will instead allocate buffers for the whole file. Which for a *zipped* 6.9Gb file might take a while. Diez -- http://mail.python.org/mailman/listinfo/python-list
AttributeError: 'module' object has no attribute 'open_workbook'
Hi, Kindly help, I've got this error when running my script: AttributeError: 'module' object has no attribute 'open_workbook' Here's my code: #!/usr/bin/python import xlrd import sys mySpreadsheet = xlrd.open_workbook(open(sys.argv[1])) firstSheet = wb.sheet_by_index(0) for myRows in range(sh.nrows): print firstSheet.row_values(myRows) Here's the error message: r...@nebuchadnezzar:/home/test/project# ./xlrd.py test.xls Traceback (most recent call last): File ./xlrd.py, line 3, in module import xlrd File /home/jayam/project/xlrd.py, line 6, in module mySpreadsheet = xlrd.open_workbook(open(sys.argv[1])) AttributeError: 'module' object has no attribute 'open_workbook' Thanks, Jay -- http://mail.python.org/mailman/listinfo/python-list
Re: really slow gzip decompress, why?
On Jan 26, 10:22 am, redbaron ivanov.ma...@gmail.com wrote: I've one big (6.9 Gb) .gz file with text inside it. zcat bigfile.gz /dev/null does the job in 4 minutes 50 seconds python code have been doing the same job for 25 minutes and still doesn't finish =( the code is simpliest I could ever imagine: def main(): fh = gzip.open(sys.argv[1]) all(fh) As far as I understand most of the time it executes C code, so pythons no overhead should be noticible. Why is it so slow? Look what's happening in both operations. The zcat operation is simply uncompressing your data and dumping directly to /dev/null. Nothing is done with the data as it's uncompressed. On the other hand, when you call 'all(fh)', you're iterating through every element in in bigfile.gz. In other words, you're reading the file and scanning it for newlines versus simply running the decompression operation. -- http://mail.python.org/mailman/listinfo/python-list
Re: really slow gzip decompress, why?
On Jan 26, 10:51 am, Jeff McNeil j...@jmcneil.net wrote: On Jan 26, 10:22 am, redbaron ivanov.ma...@gmail.com wrote: I've one big (6.9 Gb) .gz file with text inside it. zcat bigfile.gz /dev/null does the job in 4 minutes 50 seconds python code have been doing the same job for 25 minutes and still doesn't finish =( the code is simpliest I could ever imagine: def main(): fh = gzip.open(sys.argv[1]) all(fh) As far as I understand most of the time it executes C code, so pythons no overhead should be noticible. Why is it so slow? Look what's happening in both operations. The zcat operation is simply uncompressing your data and dumping directly to /dev/null. Nothing is done with the data as it's uncompressed. On the other hand, when you call 'all(fh)', you're iterating through every element in in bigfile.gz. In other words, you're reading the file and scanning it for newlines versus simply running the decompression operation. The File: [j...@marvin ~]$ ls -alh junk.gz -rw-rw-r-- 1 jeff jeff 113M 2009-01-26 10:42 junk.gz [j...@marvin ~]$ The 'zcat' time: [j...@marvin ~]$ time zcat junk.gz /dev/null real0m2.390s user0m2.296s sys 0m0.093s [j...@marvin ~]$ Test Script #1: import sys import gzip fs = gzip.open('junk.gz') data = fs.read(8192) while data: sys.stdout.write(data) data = fs.read(8192) Test Script #1 Time: [j...@marvin ~]$ time python test9.py /dev/null real0m3.681s user0m3.201s sys 0m0.478s [j...@marvin ~]$ Test Script #2: import sys import gzip fs = gzip.open('junk.gz') all(fs) Test Script #2 Time: [j...@marvin ~]$ time python test10.py real1m51.764s user1m51.475s sys 0m0.245s [j...@marvin ~]$ -- http://mail.python.org/mailman/listinfo/python-list
Re: AttributeError: 'module' object has no attribute 'open_workbook'
Jay Jesus Amorin wrote: Hi, Kindly help, I've got this error when running my script: AttributeError: 'module' object has no attribute 'open_workbook' Here's my code: #!/usr/bin/python import xlrd import sys mySpreadsheet = xlrd.open_workbook(open(sys.argv[1])) firstSheet = wb.sheet_by_index(0) for myRows in range(sh.nrows): print firstSheet.row_values(myRows) Here's the error message: r...@nebuchadnezzar:/home/test/project# ./xlrd.py test.xls Traceback (most recent call last): File ./xlrd.py, line 3, in module import xlrd File /home/jayam/project/xlrd.py, line 6, in module mySpreadsheet = xlrd.open_workbook(open(sys.argv[1])) AttributeError: 'module' object has no attribute 'open_workbook' From the traceback it looks like your script is called xlrd.py, which is the same name as the module xlrd that it's importing. If that's the case, rename your script. -- http://mail.python.org/mailman/listinfo/python-list
Re: Does Python really follow its philosophy of Readability counts?
2009/1/26 Paul Rubin http://phr.cx@nospam.invalid: Steve Holden st...@holdenweb.com writes: Quite. Python is a language for consenting adults. Shouldn't such a language allow consenting adults to enter a BDSM scene without being moralized at, if that's what they want to do? ;-) The language doesn't stop you. You can shift all of your code over to Ada if you want to, and although /some/ Pythonistas might shake their heads in bewilderment, I don't think there would be any moralising. The question is whether Python has to /provide/ the BDSM scene for you. I don't think it's realistic for a language to provide every possible degree of BDSM from BCPL to Ada, Eiffel and beyond. A language has to be positioned somewhere on the scale, and deciding whether that's the right point on the scale for you and your project is part of what being a grown-up programmer is about. One size does not fit all, one language is not ideal for all applications. -- Tim Rowe -- http://mail.python.org/mailman/listinfo/python-list
Problem with Nose testing until forking process
Hi ! I write application witch sometimes need fork to shell based process (some kind of shell command). I snatch stdin, stdout, stderr and two additional streams and fork process to run command and get results. # -*- encoding: utf-8 -*- import os import sys import subprocess def pipes_function(): global login_r, login_w, password_r, password_w try: os.fdopen(3).close() except OSError: pass try: os.fdopen(4).close() except OSError: pass os.close(login_w) os.close(password_w) os.dup2(login_r, 3) os.dup2(password_r, 4) class BrokerProcess: __slots__ = ['username', 'password', 'command', 'stdout', 'stderr', 'returned'] def run(self): global login_r, login_w, password_r, password_w login_r, login_w = os.pipe() password_r, password_w = os.pipe() wrapper = subprocess.Popen(args=('/usr/bin/special/wrapper'), preexec_fn=pipes_function, bufsize=0, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) os.close(login_r) os.close(password_r) login_w = os.fdopen(login_w, 'w') password_w = os.fdopen(password_w, 'w') login_w.write(self.username) login_w.close() password_w.write(self.password) password_w.close() self.command = self.command.encode() wrapper.stdin.write(self.command) wrapper.stdin.close() self.stdout = wrapper.stdout.read() self.stderr = wrapper.stderr.read() self.returned = wrapper.wait() return self.returned My problem is that when I run nose test for function witch use this broker i get followin errors (I test Pylons app): File /home/users/matrix/johny/Pylons/zhradmin/zhradmin2/zhradmin2/ controllers/account.py, line 51, in login account.login() File /home/users/matrix/johny/Pylons/zhradmin2/zhradmin2/model/ account.py, line 29, in login File /home/users/matrix/johny/Pylons/zhradmin2/zhradmin2/lib/ brokerprocess.py, line 41, in run File /usr/local/lib/python2.5/subprocess.py, line 594, in __init__ errread, errwrite) File /usr/local/lib/python2.5/subprocess.py, line 1091, in _execute_child raise child_exception OSError: [Errno 9] Bad file descriptor Is anyone know why I get error ? -- http://mail.python.org/mailman/listinfo/python-list
Re: Does Python really follow its philosophy of Readability counts?
Paul Rubin wrote: Steve Holden st...@holdenweb.com writes: Quite. Python is a language for consenting adults. Shouldn't such a language allow consenting adults to enter a BDSM scene without being moralized at, if that's what they want to do? ;-) Yes, but you know what moralizers are like ... regards Steve -- Steve Holden+1 571 484 6266 +1 800 494 3119 Holden Web LLC http://www.holdenweb.com/ -- http://mail.python.org/mailman/listinfo/python-list
Re: I'm a python addict !
On Mon, 2009-01-26 at 14:43 -0800, J Kenneth King wrote: Linuxguy123 linuxguy...@gmail.com writes: I just started using python last week and I'm addicted. I hate Perl. I never did learn to use it with any competence. I has to be the most obfuscated, cryptic language I've ever seen. Making it object oriented only makes it worse ! .. snip .. I program full-time in Python, so I share your excitement and enthusiasm. But bashing Perl like that doesn't make you sound very smart. I'm probably one of the very few Python programmers who came from (and still occassionally) use Perl. Really? I think many many python programmers cut their teeth on Perl. I for one. I loved programming in it when I did, but I hate having to try to understand OPP. Now, when I deal with Perl, it's mostly legacy code, and it's a miserable experience. I've written non-trivial programs in it and from my experience I can tell you that it's actually a great language. The Moose object system is well beyond Python's class system. But I guess you wouldn't know that. So yay for Python, but don't get in the habit of criticising that which you do not know. There are legitimate reasons to criticize things even when they are powerful. Cheers, Cliff -- http://mail.python.org/mailman/listinfo/python-list
Web services
I am trying to learn about web services and how to interface with a 3rd party web service from python. Can anyone point me at an idiots guide/tutorial for someone who is new to web services? -- http://mail.python.org/mailman/listinfo/python-list
Method returning an Iterable Object
Is there a way to return an iterable object ? class twoTimes: def __init__(self, n): self.__n = n def getNext(): self.__n *= 2 return self.__n t = twoTimes(5) while (n in t.getNext()): # while (n in t): print (n) -- Anjanesh Lekshmnarayanan -- http://mail.python.org/mailman/listinfo/python-list
Re: Method returning an Iterable Object
Anjanesh Lekshminarayanan wrote: Is there a way to return an iterable object ? class twoTimes: def __init__(self, n): self.__n = n def getNext(): self.__n *= 2 return self.__n t = twoTimes(5) while (n in t.getNext()): # while (n in t): print (n) Sure: class EveryOther: def __init__(self, seq): self.seq = seq self.idx = 0 def next(self): self.idx += 1 if self.idx = len(self.seq): raise StopIteration value = self.seq[self.idx] self.idx += 1 return value def __iter__(self): return self print [x for x in EveryOther(range(10)) [1, 3, 5, 7, 9] regards Steve -- Steve Holden+1 571 484 6266 +1 800 494 3119 Holden Web LLC http://www.holdenweb.com/ -- http://mail.python.org/mailman/listinfo/python-list
Re: I'm a python addict !
On Fri, 2009-01-23 at 20:25 -0800, Paul McGuire wrote: Want to change the type/behavior of an object from class A to class B? How about this: aobj = A() aobj.__class__ = B Try *that* in as simple-looking C++ or Java! Wow. That looks very powerful and fun. But scary. Any thoughts on how you would use that in a way that wouldn't unleash sulphurous code smells? Cheers, Cliff -- http://mail.python.org/mailman/listinfo/python-list
Re: Method returning an Iterable Object
On Mon, 26 Jan 2009 22:01:21 +0530 Anjanesh Lekshminarayanan m...@anjanesh.net wrote: Is there a way to return an iterable object ? class twoTimes: def __init__(self, n): self.__n = n def getNext(): self.__n *= 2 return self.__n Rename getNext() to next() and create another method named __iter__() that just returns self. TwoTimes is now an iterator. You can also replace the whole class with a function thusly: def two_times(n): for k in itertools.count(1): yield n * (2**k) This function is then called a generator (because it generates an iterator). You can now say infinitely_doubling_numbers = two_times(2) for number in in infinitely_doubling_numbers: print number to the same effect as the iterator version above. python.org seems uncooperative at the moment, but look up iterators or the iterator protocol and generators if it works for you. t = twoTimes(5) while (n in t.getNext()): # while (n in t): print (n) You are aware that this is an infinite loop, as is my example above BTW? (Probably just an example, but I ask just in case.) Also, could it be that you mean for n in t? regards /W -- My real email address is constructed by swapping the domain with the recipient (local part). -- http://mail.python.org/mailman/listinfo/python-list
Re: USB in python
On 2009-01-26, Lie Ryan lie.1...@gmail.com wrote: How about (a crazy idea) using the audio jack out? (DISCLAIMER: Little Hardware Experience). High pitched sound (or anything in sound-ology that means high voltage) means the device is on and low pitched sound off. 1) Pitch has nothing to do with voltage. A high-pitch sound and a low pitch sound can have the exact same voltage. 2) The OP's device requires quite a bit of power. There is almost no power available from the line-out jack, and the voltage is limited to about 1V. If his sound card has a power-amp (none do these days), he might be able to get a usable amount of power. The device will need an additional transistor to separate low voltage from the high voltage. He'll need more than a transistor. He needs a power supply, some sort of rectifier/detector, and a comparitor. It would be more interesting to use notch filters to detect different frequencies so that you could have multiple output bits. I don't know how much power can be pulled from jack out, Almost none, and what's there is very low voltage. but for a home brewn device it is still feasible to draw power from USB and signal from jack out. It would probably be easier to buy a USB-parallel port chip. Then he's got power from the USB bus and something like 14 parallel I/O pins he can control. Alternatively A USB-serial chip will provide 2 outputs and 4 inputs. -- Grant Edwards grante Yow! Not SENSUOUS ... only at FROLICSOME ... and in visi.comneed of DENTAL WORK ... in PAIN!!! -- http://mail.python.org/mailman/listinfo/python-list
Re: Does Python really follow its philosophy of Readability counts?
Russ P. a écrit : (snip) You are trying to dictate that the library implementer not be allowed to use enforced access restriction. And, in the larger sense, you are trying to dictate that access restrictions not be enforced in Python. FWIW, it's actually *you* who are trying to dictate that access restrictions should be enforced in Python. -- http://mail.python.org/mailman/listinfo/python-list
Re: What is intvar? [Python Docs]
r wrote: W. eWatson, I contacted the author of New Mexico Techs Introduction to Tkinter a couple of weeks ago. He is going to update the reference material with a few missing widgets and some info on Photo and Bitmap classes. I really love the NMT layout and use it quite often. Fredricks Tkinterbook is more detail but lacking in navigation. I swing back and forth between both sites. Good. Thanks. I think Lundh might have taken his material to book form. I might be repeating myself here, but If anyone has pdf experience, and could provide page numbers and maybe a TOC for some of Lundh's contributions, that would be helpful. -- W. eWatson (121.015 Deg. W, 39.262 Deg. N) GMT-8 hr std. time) Obz Site: 39° 15' 7 N, 121° 2' 32 W, 2700 feet Web Page: www.speckledwithstars.net/ -- http://mail.python.org/mailman/listinfo/python-list
Re: Python C API (PyObject_CallMethod clear object)
En Mon, 26 Jan 2009 08:47:31 -0200, googler.1.webmas...@spamgourmet.com escribió: On 26 Jan., 03:25, Gabriel Genellina gagsl-...@yahoo.com.ar wrote: En Sun, 25 Jan 2009 23:46:01 -0200, googler.1.webmas...@spamgourmet.com escribió: I have a problm with deallocating stuff. I call a function with this command: PyObject *rvalue = PyObject_CallMethod(obj, execute,,NULL); if(rvalue==NULL) PyErr_Print(); else Py_DECREF(rvalue); Yes, you are right. I got this issue not in syntax error, I get it on a runtime error like this: t = MyImage() self.test(hallo) #test takes an integer so this would throw an exception. Here you see, an object of the type MyImage() was created but its not deleted. 't' is a local reference so how can I do that? It will be deleted after the last reference to it is released, as every object in Python. If the above two lines are the whole function code, this will happen when exiting the function. If some other object holds a reference to this MyImage instance (by example, by doing xxx.attribute = t, or inserting it in a list) then that won't happen until all those references are released. Note that, in Python 2.x, the traceback object holds a reference to all local variables -- if you store the traceback somewhere, those objects won't be deleted. -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list
Re: Newby: how to transform text into lines of text
En Mon, 26 Jan 2009 13:35:39 -0200, J. Cliff Dyer j...@sdf.lonestar.org escribió: On Sun, 2009-01-25 at 18:23 -0800, John Machin wrote: On Jan 26, 1:03 pm, Gabriel Genellina gagsl-...@yahoo.com.ar wrote: En Sun, 25 Jan 2009 23:30:33 -0200, Tim Chase python.l...@tim.thechases.com escribió: I suppose if I were really smart, I'd dig a little deeper in the CSV module to sniff out the right way to parse tab-delimited files. It's so easy that don't doing that is just inexcusable lazyness :) Your own example, written using the csv module: import csv f = csv.reader(open('customer_x.txt','rb'), delimiter='\t') headers = f.next() for line in f: field1, field2, field3 = line do_stuff() And where in all of that do you recommend that .decode(some_encoding) be inserted? If encoding is an issue for your application, then I'd recommend you use codecs.open('customer_x.txt', 'rb', encoding='ebcdic') instead of open() This would be the best way *if* the csv module could handle Unicode input, but unfortunately this is not the case. See my other reply. -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list
Re: Newby: how to transform text into lines of text
En Mon, 26 Jan 2009 13:35:39 -0200, J. Cliff Dyer j...@sdf.lonestar.org escribió: On Sun, 2009-01-25 at 18:23 -0800, John Machin wrote: On Jan 26, 1:03 pm, Gabriel Genellina gagsl-...@yahoo.com.ar wrote: En Sun, 25 Jan 2009 23:30:33 -0200, Tim Chase python.l...@tim.thechases.com escribió: I suppose if I were really smart, I'd dig a little deeper in the CSV module to sniff out the right way to parse tab-delimited files. It's so easy that don't doing that is just inexcusable lazyness :) Your own example, written using the csv module: import csv f = csv.reader(open('customer_x.txt','rb'), delimiter='\t') headers = f.next() for line in f: field1, field2, field3 = line do_stuff() And where in all of that do you recommend that .decode(some_encoding) be inserted? If encoding is an issue for your application, then I'd recommend you use codecs.open('customer_x.txt', 'rb', encoding='ebcdic') instead of open() This would be the best way *if* the csv module could handle Unicode input, but unfortunately this is not the case. See my other reply. -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list
Re: Web services
On Mon, Jan 26, 2009 at 8:11 AM, loial jldunn2...@googlemail.com wrote: I am trying to learn about web services and how to interface with a 3rd party web service from python. Can anyone point me at an idiots guide/tutorial for someone who is new to web services? The XML-RPC client module in the std lib (xmlrpclib) includes an example: http://docs.python.org/library/xmlrpclib.html#example-of-client-usage And the XML-RPC server server in the stdlib also includes a full client-server example: http://docs.python.org/library/simplexmlrpcserver.html#simplexmlrpcserver-example Cheers, Chris -- Follow the path of the Iguana... http://rebertia.com -- http://mail.python.org/mailman/listinfo/python-list
Re: I'm a python addict !
On Jan 26, 10:54 am, J. Cliff Dyer j...@sdf.lonestar.org wrote: On Fri, 2009-01-23 at 20:25 -0800, Paul McGuire wrote: Want to change the type/behavior of an object from class A to class B? How about this: aobj = A() aobj.__class__ = B Try *that* in as simple-looking C++ or Java! Wow. That looks very powerful and fun. But scary. Any thoughts on how you would use that in a way that wouldn't unleash sulphurous code smells? This technique is perfect for implementing the GoF State pattern. In the State pattern, you implement behavior for an object's various states using one of several interchangeable classes. The classes are interchangeable in that they all implement a common interface. Here is my favorite State pattern example, a traffic light: import time class TrafficLight(object): pass class RedLight(TrafficLight): cars_can_go = False pedestrians_can_cross = True color = (255,0,0) duration = 20 class YellowLight(TrafficLight): cars_can_go = True pedestrians_can_cross = False color = (255,255,0) duration = 5 class GreenLight(TrafficLight): cars_can_go = True pedestrians_can_cross = False color = (0,255,0) duration = 15 # now add in next_state class vars for state transitions RedLight.next_state = GreenLight YellowLight.next_state = RedLight GreenLight.next_state = YellowLight TrafficLight.initial_state = RedLight # run a traffic light for a while... can_they = lambda cond : (can't,can)[cond] light = TrafficLight.initial_state() while 1: print light.__class__.__name__ print waiting for, light.duration, seconds print Cars, can_they(light.cars_can_go), go print People, can_they(light.pedestrians_can_cross), cross print time.sleep(light.duration) # how you have to do it in C++ and Java # light = light.next_state() # using Python light.__class__ = light.next_state Gives this output: RedLight waiting for 20 seconds Cars can't go People can cross GreenLight waiting for 15 seconds Cars can go People can't cross YellowLight waiting for 5 seconds Cars can't go People can't cross RedLight waiting for 20 seconds Cars can't go People can cross ... and so on ... In Python, the base TrafficLight class isn't even necessary (don't need no stinking interfaces!), although it is a good place to define default behavior, and it helps tie together the other classes from a self-documentation standpoint. But any class that has the necessary attributes would suffice, whether it inherits from TrafficLight or not. class HoldForEmergencyVehiclesLight(object): cars_can_go = False pedestrians_can_cross = False color = (255,0,0) -- Paul -- http://mail.python.org/mailman/listinfo/python-list
Process crash with no reason
Hi All, I'm running a program that is acting as a nice interface to sybase' replication server. The program is using the cherrypy web service for the GUI. The process is crashing every few days with no reason. In the log I can see INFO and DEBUG (No ERROR) log lines and I do not get any TraceBack python's message. This program is running on solaris 9 machine. Where can I see or what can I do in order to find out what causes the process to crash? I have tried simulating a traceBack message and I could see this traceback message in one of the log files I'm using. When the process crashes without my help, I don't have a clue. Let me know if you need any other info Thanks Gil -- http://mail.python.org/mailman/listinfo/python-list
Re: Dynamic methods and lambda functions
On 26 Jan., 15:13, Steve Holden st...@holdenweb.com wrote: Mark Wooding wrote: unine...@gmail.com writes: [...] * Assignment stores a new (reference to a) value in the variable. * Binding modifies the mapping between names and variables. I realise I have omitted what was doubtless intended to be explanatory detail, but I am having trouble reconciling those sentences. Would you mind explaining in vacuuo what you see as the difference between assignment and binding? regards Steve -- Steve Holden+1 571 484 6266 +1 800 494 3119 Holden Web LLC http://www.holdenweb.com/ Assignment is binding values to names whereas binding is binding names to scopes. Marks terminology is a bit more standard than Pythons in this respect. As you know, Python avoids the idea of variables as if those were storage cells having a fixed logical address. -- http://mail.python.org/mailman/listinfo/python-list
unable to print Unicode characters in Python 3
Hi, while checking out Python 3, I read that all text strings are now natively Unicode. In the Python language reference (http://docs.python.org/3.0/reference/ lexical_analysis.html) I read that I can show Unicode character in several ways. \u supposedly allows me to specify the Unicode character by hex number and the format \N{name} allows me to specify by Unicode name. Neither seem to work for me. What am I doing wrong ? Please see error output below where I am trying to show the EURO sign (http://www.fileformat.info/info/unicode/char/20ac/index.htm): Python 3.0 (r30:67507, Dec 3 2008, 20:14:27) [MSC v.1500 32 bit (Intel)] on win32 Type help, copyright, credits or license for more information. print('\u20ac') Traceback (most recent call last): File stdin, line 1, in module File c:\python30\lib\io.py, line 1491, in write b = encoder.encode(s) File c:\python30\lib\encodings\cp437.py, line 19, in encode return codecs.charmap_encode(input,self.errors,encoding_map)[0] UnicodeEncodeError: 'charmap' codec can't encode character '\u20ac' in position 0: character maps to undefined print (\N{EURO SIGN}) Traceback (most recent call last): File stdin, line 1, in module File c:\python30\lib\io.py, line 1491, in write b = encoder.encode(s) File c:\python30\lib\encodings\cp437.py, line 19, in encode return codecs.charmap_encode(input,self.errors,encoding_map)[0] UnicodeEncodeError: 'charmap' codec can't encode character '\u20ac' in position 0: character maps to undefined -- http://mail.python.org/mailman/listinfo/python-list
Re: Method returning an Iterable Object
You can also replace the whole class with a function thusly: def two_times(n): for k in itertools.count(1): yield n * (2**k) This function is then called a generator (because it generates an iterator). You can now say infinitely_doubling_numbers = two_times(2) for number in in infinitely_doubling_numbers: print number Oh..this is new. Will checkup itertools. Thanks. t = twoTimes(5) while (n in t.getNext()): # while (n in t): print (n) You are aware that this is an infinite loop, as is my example above BTW? (Probably just an example, but I ask just in case.) I was aware this was an infinite loop - just didnt want to put more code for an example. -- http://mail.python.org/mailman/listinfo/python-list
Re: unable to print Unicode characters in Python 3
Hmm this works for me, it's a self compiled version: ~ $ python3 Python 3.0 (r30:67503, Dec 29 2008, 21:35:15) [GCC 4.2.4 (Ubuntu 4.2.4-1ubuntu3)] on linux2 Type help, copyright, credits or license for more information. print(\u20ac) € print (\N{EURO SIGN}) € 2009/1/26 jefm jef.mangelsch...@gmail.com: What am I doing wrong ? \N{EURO SIGN}.encode(ISO-8859-15) ## could be something but I'm pretty sure I'm totally wrong on this -- http://soup.alt.delete.co.at http://www.xing.com/profile/Martin_Marcher http://www.linkedin.com/in/martinmarcher You are not free to read this message, by doing so, you have violated my licence and are required to urinate publicly. Thank you. Please avoid sending me Word or PowerPoint attachments. See http://www.gnu.org/philosophy/no-word-attachments.html -- http://mail.python.org/mailman/listinfo/python-list
Re: Process crash with no reason
On Jan 26, 2009, at 1:13 PM, gil.shi...@gmail.com wrote: Hi All, I'm running a program that is acting as a nice interface to sybase' replication server. The program is using the cherrypy web service for the GUI. The process is crashing every few days with no reason. In the log I can see INFO and DEBUG (No ERROR) log lines and I do not get any TraceBack python's message. This program is running on solaris 9 machine. Where can I see or what can I do in order to find out what causes the process to crash? I have tried simulating a traceBack message and I could see this traceback message in one of the log files I'm using. When the process crashes without my help, I don't have a clue. Let me know if you need any other info Although Python isn't immune to fatal errors like you describe, I'd immediately suspect a 3rd-party module instead, esp. one written in C or C++. Are you using anything like that? -- http://mail.python.org/mailman/listinfo/python-list
Re: unable to print Unicode characters in Python 3
On Mon, Jan 26, 2009 at 1:16 PM, jefm jef.mangelsch...@gmail.com wrote: Hi, while checking out Python 3, I read that all text strings are now natively Unicode. In the Python language reference (http://docs.python.org/3.0/reference/ lexical_analysis.htmlhttp://docs.python.org/3.0/reference/lexical_analysis.html) I read that I can show Unicode character in several ways. \u supposedly allows me to specify the Unicode character by hex number and the format \N{name} allows me to specify by Unicode name. Neither seem to work for me. What am I doing wrong ? Please see error output below where I am trying to show the EURO sign (http://www.fileformat.info/info/unicode/char/20ac/index.htm): Python 3.0 (r30:67507, Dec 3 2008, 20:14:27) [MSC v.1500 32 bit (Intel)] on win32 Type help, copyright, credits or license for more information. print('\u20ac') Traceback (most recent call last): File stdin, line 1, in module File c:\python30\lib\io.py, line 1491, in write b = encoder.encode(s) File c:\python30\lib\encodings\cp437.py, line 19, in encode return codecs.charmap_encode(input,self.errors,encoding_map)[0] UnicodeEncodeError: 'charmap' codec can't encode character '\u20ac' in position 0: character maps to undefined print (\N{EURO SIGN}) Traceback (most recent call last): File stdin, line 1, in module File c:\python30\lib\io.py, line 1491, in write b = encoder.encode(s) File c:\python30\lib\encodings\cp437.py, line 19, in encode return codecs.charmap_encode(input,self.errors,encoding_map)[0] UnicodeEncodeError: 'charmap' codec can't encode character '\u20ac' in position 0: character maps to undefined -- http://mail.python.org/mailman/listinfo/python-list The strings are represented internally as Unicode, but you can't print them that way. When you call print(), python needs to turn your string into a sequence of bytes that are then interpreted by the terminal (in your case cmd.exe). On modern Unix-based systems (like Mac and Linux), the console uses UTF-8. Since it uses a unicode-based encoding, everything prints fine. Your Windows machine seems determined to use the old (c. 1980s) CP 437. Code Page 437 doesn't have the Euro symbol, so python throws an error. Try using \N{EURO SIGN}.encode(cp1252). If your console still can't handle it, you'll need to change its encoding. -- http://mail.python.org/mailman/listinfo/python-list
Python and CUDO
Hi! Sorry about the misspelling, it should of course been NIVIDAS CUDA. I also noticed that there wrappers around such as: pycuda which answers my question. -- Fredrik Kant Kant Consulting AB Mobile: +46 70 787 06 01 www.kantconsulting.se -- http://mail.python.org/mailman/listinfo/python-list
Re: v = json.loads({'test':'test'})
On Mon, Jan 26, 2009 at 4:06 AM, Diez B. Roggisch wrote: There are people who say something along the lines of be strict when writing, and tolerant when reading (the exact quote is different, but neither google:~site:mybrain nor any other have helped me here) That's Postel's Law: http://en.wikipedia.org/wiki/Robustness_Principle -Miles -- http://mail.python.org/mailman/listinfo/python-list
Re: Plugin system, RuntimeWarning: Parent module 'ext_abc' not found while handling absolute import
Hello, Basically, this here works but gives a warning: RuntimeWarning: Parent module 'ext_abc' not found while handling absolute import here = os.path.abspath('.') (Unrelated to the main question, but you probably want to use os.path.dirname(os.path.abspath(__file__)) instead - the above just returns the current directory, which might not be the directory containing the module) Thanks, i'll try that. mpath = os.path.abspath('mymodule') epath = os.path.abspath('extension') sys.path.append(here) sys.path.append(mpath) FILE mymodule/__init__.py: So mymodule is actually a package. Packages should *not* appear in sys.path. Oh, how does it find modules then? I thought that would be PYTHONPATH or sys.path ? Best regards, Torsten. -- http://mail.python.org/mailman/listinfo/python-list
Re: unable to print Unicode characters in Python 3
Hmm this works for me, it's a self compiled version: ~ $ python3 Python 3.0 (r30:67503, Dec 29 2008, 21:35:15) [GCC 4.2.4 (Ubuntu 4.2.4-1ubuntu3)] on linux2 You are running on Linux. Mine is on Windows. Anyone else have this issue on Windows ? -- http://mail.python.org/mailman/listinfo/python-list
Re: A java hobbyist programmer learning python
Tim Rowe wrote: ... I like the second style because it makes it leaves the 2-d implementation hidden, which is the whole point of encapsulation. I like the second as well, in that it it allows the parent to update any related data structures (for example, updating a display). However, I am a bit nervous about changing the signature of the move message, and would be more tempted to add a move3d, for multiple inheritance reasons. But then I am a fan of Hungarian notation, which many programmers can't stand. Is it that programmers can't stand it, or is it that they can't stand it when it's imposed when not needed? Well, I tend to be one who hates Hungarian. I spent a long time being a fan of strong typing. Then, I felt the compiler would enforce the typing, and the Hungarian muddied the readability of the expressions. I felt that you should define a type for distance_in_yards, and not have that confusable with distance_in_meters (though you might provide an automatic conversion. Now, I feel strong-typing systems cannot express the type relationships that I want as a programmer in the face of sub-typing, and I hold no hope that (A) such a language will appear, or (B) that the strong majority of the bugs I produce in Python will be caught by a statically typed system. I do however, still find the neddling little text annotations in the variable naming to be irritating noise that distracts from the readability of the expressions. The kinds of type systems that I want(ed) is most closely expressed by F-Bounded polymorphism, and that doesn't manage to be both expressive enough and computationally feasible to use as a production type system. For example, I'd like to type a sort function or a project function, and all I've seen looks like its fit will feel more like a suit of armor than a shirt. --Scott David Daniels scott.dani...@acm.org -- http://mail.python.org/mailman/listinfo/python-list
Re: Method returning an Iterable Object
On Tue, 27 Jan 2009 00:05:53 +0530 Anjanesh Lekshminarayanan m...@anjanesh.net wrote: You can also replace the whole class with a function thusly: def two_times(n): for k in itertools.count(1): yield n * (2**k) This function is then called a generator (because it generates an iterator). You can now say infinitely_doubling_numbers = two_times(2) for number in in infinitely_doubling_numbers: print number Oh..this is new. Will checkup itertools. Thanks. OK, happy I could help. But my point was the yield statement (in case you didn't know about yield). regards /W -- My real email address is constructed by swapping the domain with the recipient (local part). -- http://mail.python.org/mailman/listinfo/python-list
Re: I'm a python addict !
J. Cliff Dyer wrote: On Fri, 2009-01-23 at 20:25 -0800, Paul McGuire wrote: ... How about this: aobj = A() aobj.__class__ = B ... Wow. That looks very powerful and fun. But scary. Any thoughts on how you would use that in a way that wouldn't unleash sulphurous code smells? Seems like a nice way to transition between ActiveAccount: and InActiveAccount or some such. The requirement is that the two classes share memory layout (essentially, class type and all __slots__ involved (including __dict__). It is a bit prickly, so I'd personally only start to use it once my methods were littered with lots of: ... if self.active_flag: self.account.update(... else: raise ValueError('Purchase prohibitted') Could also be useful as the stub for a kept-on-disk structure, where all methods on the inactive one rolled in data switched class, and invoked their corresponding method. --Scott David Daniels scott.dani...@acm.org -- http://mail.python.org/mailman/listinfo/python-list
Re: I'm a python addict !
On Mon, 2009-01-26 at 09:52 -0800, Paul McGuire wrote: On Jan 26, 10:54 am, J. Cliff Dyer j...@sdf.lonestar.org wrote: On Fri, 2009-01-23 at 20:25 -0800, Paul McGuire wrote: Want to change the type/behavior of an object from class A to class B? How about this: aobj = A() aobj.__class__ = B Try *that* in as simple-looking C++ or Java! Wow. That looks very powerful and fun. But scary. Any thoughts on how you would use that in a way that wouldn't unleash sulphurous code smells? This technique is perfect for implementing the GoF State pattern. In the State pattern, you implement behavior for an object's various states using one of several interchangeable classes. The classes are interchangeable in that they all implement a common interface. Here is my favorite State pattern example, a traffic light: import time class TrafficLight(object): pass class RedLight(TrafficLight): cars_can_go = False pedestrians_can_cross = True color = (255,0,0) duration = 20 class YellowLight(TrafficLight): cars_can_go = True pedestrians_can_cross = False color = (255,255,0) duration = 5 class GreenLight(TrafficLight): cars_can_go = True pedestrians_can_cross = False color = (0,255,0) duration = 15 # now add in next_state class vars for state transitions RedLight.next_state = GreenLight YellowLight.next_state = RedLight GreenLight.next_state = YellowLight TrafficLight.initial_state = RedLight # run a traffic light for a while... can_they = lambda cond : (can't,can)[cond] light = TrafficLight.initial_state() while 1: print light.__class__.__name__ print waiting for, light.duration, seconds print Cars, can_they(light.cars_can_go), go print People, can_they(light.pedestrians_can_cross), cross print time.sleep(light.duration) # how you have to do it in C++ and Java # light = light.next_state() # using Python light.__class__ = light.next_state Gives this output: RedLight waiting for 20 seconds Cars can't go People can cross GreenLight waiting for 15 seconds Cars can go People can't cross YellowLight waiting for 5 seconds Cars can't go People can't cross RedLight waiting for 20 seconds Cars can't go People can cross ... and so on ... In Python, the base TrafficLight class isn't even necessary (don't need no stinking interfaces!), although it is a good place to define default behavior, and it helps tie together the other classes from a self-documentation standpoint. But any class that has the necessary attributes would suffice, whether it inherits from TrafficLight or not. class HoldForEmergencyVehiclesLight(object): cars_can_go = False pedestrians_can_cross = False color = (255,0,0) -- Paul Thanks. That makes sense. But your example creates a new instance of the new class each time, rather than changing the class of a persistent instance, as the original example, to which I was responding, did. But perhaps something like: class TrafficLight(object): def change_light(self): self.__class__ = next_state and then you can persist information about the light (bulb_type in set(['led', 'incandescent']), last_maintenance_date, location, etc.) on the instance level, unaffected by the changing color. Interesting stuff. Cheers, Cliff -- http://mail.python.org/mailman/listinfo/python-list
Anoying unicode / str conversion problem
Hi python experts, in the moment I'm struggling with an annoying problem in conjunction with mysql. I'm fetching rows from a database, which the mysql drive returns as a list of tuples. The default coding of the database is utf-8. Unfortunately in the database there are rows with different codings and there is a blob column. In the app. I search for double entries in the database with this code. hash = {} cursor.execute(select * from table) rows = cursor.fetchall() for row in rows: key = |.join([str(x) for x in row]) - here the problem arises if key in hash: print found double entry This code works as expected with python 2.5.2 With 2.5.1 it shows this error: key = |.join(str(x) for x in row) UnicodeEncodeError: 'ascii' codec can't encode character u'\u017e' in position 3: ordinal not in range(128) When I replace the str() call by unicode(), I get this error when a blob column is being processed: key = |.join(unicode(x) for x in row) UnicodeDecodeError: 'ascii' codec can't decode byte 0xfc in position 119: ordinal not in range(128) Please help, how can I convert ANY column data to a string which is usable as a key to a dictionary. The purpose of using a dictionary is to find equal rows in some database tables. Perhaps using a md5 hash from the column data is also an idea ? Thanks a lot in advance, Hans. -- http://mail.python.org/mailman/listinfo/python-list
Re: Does Python really follow its philosophy of Readability counts?
On Jan 26, 1:07 am, Bruno Desthuilliers bruno. 42.desthuilli...@websiteburo.invalid wrote: No. I can change the *team's* code. Please *read*. team's ownership, ok ? Or do I have to spell it out loud ? TEAM'S OWNERSHIP. Uh. You get the message, now ? Team ownership doesn't necessarily mean that you can just change code at will. In industry, teams usually have a leader that you need to check with before you can change an interface. A language with enforced access restriction merely provides language support for such coordination. That was my only point. Would you give all those developers your password to get into the system? No? Wait a minute ... you mean you wouldn't trust them with your password? But what about openness? Are you some sort of fascist or what? Goodwin point. You loose. Good bye again, Mr P. You missed the point once again. In asking if you are a fascist, I was *parodying* your attitude that languages with enforced access restrictions are for fascists who don't trust their co-workers or employees. [I don't recall if you actually used that word or if it was someone else, but you did use BD, which carries the same general impression.] So I parodied your hyperbole, and you dismiss me for it. Without realizing it, you just dismissed yourself, sir. Thanks for saving me the trouble. -- http://mail.python.org/mailman/listinfo/python-list
Re: var is None vs. var == None
Steve Holden wrote: Terry Reedy wrote: In 2.x, the *names* 'True' and 'False' can be rebound because bool is new and people write try: False,True except NameError: False,True = 0,1 to make code back compatible. I would claim that the ability to rebind True and False is a simple bug, though one not likely to be fixed in an 2.x release. The code above doesn't rebind True and False in interpreters that have them ... In pre-bool 2.x, people never wrote the above but sometime wrote False,True = 0,1 To me it is hardly a bug to not gratuitously break substantial amounts of proper code. Back before rebinding 'None' was prohibited, 'is None' was not completely guaranteed either (absent reading the rest of a file to be sure no rebinding would be done). And that was a bug too, in this case one that *was* removed in 2.4, I believe. Don't have 2.3 lying around just now. Unlike with True and False, the devs could not think of or find any proper use case for rebinding None and judged that the new prohibition would break very little if any code. As far as I know, they were correct. tjr -- http://mail.python.org/mailman/listinfo/python-list
Re: I'm a python addict !
On Jan 26, 2:06 pm, J. Cliff Dyer j...@sdf.lonestar.org wrote: Thanks. That makes sense. But your example creates a new instance of the new class each time, rather than changing the class of a persistent instance, as the original example, to which I was responding, did. Look closer. The line that creates a new instance is commented out, with the notation how you have to do it in C++ and Java. The actual Python code is just below, and just assigns a new class to self.__class__, as in the original example. -- Paul -- http://mail.python.org/mailman/listinfo/python-list
Re: Anoying unicode / str conversion problem
On Mon, Jan 26, 2009 at 3:21 PM, Hans Müller heint...@web.de wrote: Hi python experts, in the moment I'm struggling with an annoying problem in conjunction with mysql. I'm fetching rows from a database, which the mysql drive returns as a list of tuples. The default coding of the database is utf-8. Unfortunately in the database there are rows with different codings and there is a blob column. In the app. I search for double entries in the database with this code. hash = {} cursor.execute(select * from table) rows = cursor.fetchall() for row in rows: key = |.join([str(x) for x in row]) - here the problem arises if key in hash: print found double entry This code works as expected with python 2.5.2 With 2.5.1 it shows this error: key = |.join(str(x) for x in row) UnicodeEncodeError: 'ascii' codec can't encode character u'\u017e' in position 3: ordinal not in range(128) When I replace the str() call by unicode(), I get this error when a blob column is being processed: key = |.join(unicode(x) for x in row) UnicodeDecodeError: 'ascii' codec can't decode byte 0xfc in position 119: ordinal not in range(128) Please help, how can I convert ANY column data to a string which is usable as a key to a dictionary. The purpose of using a dictionary is to find equal rows in some database tables. Perhaps using a md5 hash from the column data is also an idea ? unicode takes an optional encoding argument. If you don't specify, it uses ascii. Try using (untested): key = u|.join(unicode(x, encoding=utf-8) for x in row) Thanks a lot in advance, Hans. -- http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list
Re: unable to print Unicode characters in Python 3
jefm wrote: Hmm this works for me, it's a self compiled version: ~ $ python3 Python 3.0 (r30:67503, Dec 29 2008, 21:35:15) [GCC 4.2.4 (Ubuntu 4.2.4-1ubuntu3)] on linux2 You are running on Linux. Mine is on Windows. Anyone else have this issue on Windows ? As Benjamin Kaplin said, Windows terminals use the old cp1252 character set, which cannot display the euro sign. You'll either have to run it in something more modern like the cygwin rxvt terminal, or output some other way, such as through a GUI. -- http://mail.python.org/mailman/listinfo/python-list
Re: Monitor a FTP site for arrival of new/updated files
On 25 Gen, 21:11, Steve Holden st...@holdenweb.com wrote: pyt...@bdurham.com wrote: Any suggestions on a best practice way to monitor a remote FTP site for the arrival of new/updated files? I don't need specific code, just some coaching on technique based on your real-world experience including suggestions for a utility vs. code based solution. My goal is to maintain a local collection of files synced with a remote FTP site and when I download a new/updated file locally, run a script to process it. The arrival and format of the files that I need to sync with are beyond my control (eliminating a rsync solution) ... all I have is a generic FTP connection to a specific FTP address. Note: The remote site I'm monitoring may have multiple uploads occuring at the same time. My basic strategy is to poll the remote directory on a regular basis and compare the new directory listing to a previous snapshot of the directory listing. If a file timestamp or size has changed (or a new file has appeared), then track this file as a changed file. Once a file has been marked as changed, wait N polling cycles for the file timestamp and size to remain stable, then download it, and trigger a local script to process the file. In addition to detecting new or changed files, I would compare remote directory listings to my local sync folder and delete local files that no longer exist on the remote site. My concern about using a utility is the utility's ability to detect when a remote file has finished being updated. I don't want to download files that are still in the process of being updated - I only want to download new/updated files after they've been closed on the remote site. Any ideas appreciated! Well, the ftpmirror will cope with most of what you want to do as it is, but I am unsure how you can determine whether a file is in the process of being written on the server. regards Steve -- Steve Holden +1 571 484 6266 +1 800 494 3119 Holden Web LLC http://www.holdenweb.com/- Nascondi testo citato - Mostra testo citato - If you're going to do that manually through a script, and the server supports it, use MLSD instead of LIST command for listing files and determine their last modification time. My 2 cents --- Giampaolo http://code.google.com/p/pyftpdlib -- http://mail.python.org/mailman/listinfo/python-list
Re: unable to print Unicode characters in Python 3
jefm wrote: Hi, while checking out Python 3, I read that all text strings are now natively Unicode. True In the Python language reference (http://docs.python.org/3.0/reference/ lexical_analysis.html) I read that I can show Unicode character in several ways. \u supposedly allows me to specify the Unicode character by hex number and the format \N{name} allows me to specify by Unicode name. These are ways to *specify* unicode chars on input. Neither seem to work for me. If you separate text creation from text printing, you would see that they do. Try s='\u20ac' print(s) What am I doing wrong ? Using the interactive interpreter running in a Windows console. Please see error output below where I am trying to show the EURO sign (http://www.fileformat.info/info/unicode/char/20ac/index.htm): Python 3.0 (r30:67507, Dec 3 2008, 20:14:27) [MSC v.1500 32 bit (Intel)] on win32 Type help, copyright, credits or license for more information. print('\u20ac') Traceback (most recent call last): File stdin, line 1, in module File c:\python30\lib\io.py, line 1491, in write b = encoder.encode(s) File c:\python30\lib\encodings\cp437.py, line 19, in encode return codecs.charmap_encode(input,self.errors,encoding_map)[0] UnicodeEncodeError: 'charmap' codec can't encode character '\u20ac' in position 0: character maps to undefined With the standard console, I get the same. But with IDLE, using the same Python build but through a different interface s='\u20ac' len(s) 1 str(s) '€' # euro sign I have fiddled with the shortcut to supposed make it work better as claimed by posts found on the web, but to no avail. Very frustrating since I have fonts on the system for at least all of the first 64K chars. Scream at Microsoft or try to find or encourage a console replacement that Python could use. In the meanwhile, use IDLE. Not perfect for Unicode, but better. Terry Jan Reedy -- http://mail.python.org/mailman/listinfo/python-list
Re: Pipe stdout stderr to a TkLabel widget
OK, here is a simple example that will show you what i want to do. Right now if you type print 'hello' in the entry and press enter you will see braces in the label {}. But if you type sys.stdou.write (hello) you will see {hello} in the label. So i got the stdout piping to the widget now, but it will not work with the print statement. AND there are those braces around the string??? Any ideas? from Tkinter import * root = Tk() class NewOut(): def write(self, *arg): v.set(arg) saveout = sys.stdout newout = NewOut() sys.stdout = newout e = StringVar(root) entry = Entry(root, textvariable=e, font=('Courier New', 12)) entry.pack(fill=X, expand=1, padx=5, pady=5) v = StringVar(root) Label(textvariable=v).pack(fill=X, expand=1) def onReturn(event): try: exec(e.get()) e.set('') except: print 'Command Invalid' root.bind('Return', onReturn) entry.focus_set() root.mainloop() -- http://mail.python.org/mailman/listinfo/python-list
Re: var is None vs. var == None
Terry Reedy wrote: Steve Holden wrote: Terry Reedy wrote: In 2.x, the *names* 'True' and 'False' can be rebound because bool is new and people write try: False,True except NameError: False,True = 0,1 to make code back compatible. I would claim that the ability to rebind True and False is a simple bug, though one not likely to be fixed in an 2.x release. The code above doesn't rebind True and False in interpreters that have them ... In pre-bool 2.x, people never wrote the above but sometime wrote False,True = 0,1 Right. This is the use case I overlooked. To me it is hardly a bug to not gratuitously break substantial amounts of proper code. I quite agree. I take it all back! Back before rebinding 'None' was prohibited, 'is None' was not completely guaranteed either (absent reading the rest of a file to be sure no rebinding would be done). And that was a bug too, in this case one that *was* removed in 2.4, I believe. Don't have 2.3 lying around just now. Unlike with True and False, the devs could not think of or find any proper use case for rebinding None and judged that the new prohibition would break very little if any code. As far as I know, they were correct. Indeed they were. regards Steve -- Steve Holden+1 571 484 6266 +1 800 494 3119 Holden Web LLC http://www.holdenweb.com/ -- http://mail.python.org/mailman/listinfo/python-list
Re: Anoying unicode / str conversion problem
Hans Müller wrote: Hi python experts, in the moment I'm struggling with an annoying problem in conjunction with mysql. I'm fetching rows from a database, which the mysql drive returns as a list of tuples. The default coding of the database is utf-8. Unfortunately in the database there are rows with different codings and there is a blob column. In the app. I search for double entries in the database with this code. hash = {} cursor.execute(select * from table) rows = cursor.fetchall() for row in rows: key = |.join([str(x) for x in row]) - here the problem arises if key in hash: print found double entry This code works as expected with python 2.5.2 With 2.5.1 it shows this error: key = |.join(str(x) for x in row) UnicodeEncodeError: 'ascii' codec can't encode character u'\u017e' in position 3: ordinal not in range(128) When I replace the str() call by unicode(), I get this error when a blob column is being processed: key = |.join(unicode(x) for x in row) UnicodeDecodeError: 'ascii' codec can't decode byte 0xfc in position 119: ordinal not in range(128) Please help, how can I convert ANY column data to a string which is usable as a key to a dictionary. The purpose of using a dictionary is to find equal rows in some database tables. Perhaps using a md5 hash from the column data is also an idea ? Thanks a lot in advance, No direct answer, but can't you put the rows into the dict (or a set) without converting them to a string? seen = set() for row in rows: if row in seen: print dupe else: seen.add(row) Or, even better, solve the problem within the db: select fields from table group by fields having count(*) 1 Peter -- http://mail.python.org/mailman/listinfo/python-list
Re: unable to print Unicode characters in Python 3
As Benjamin Kaplin said, Windows terminals use the old cp1252 character set, which cannot display the euro sign. You'll either have to run it in something more modern like the cygwin rxvt terminal, or output some other way, such as through a GUI. With the standard console, I get the same. But with IDLE, using the same Python build but through a different interface Scream at Microsoft or try to find or encourage a console replacement that Python could use. In the meanwhile, use IDLE. Not perfect for Unicode, but better. So, if I understand it correctly, it should work as long as you run your Python code on something that can actually print the Unicode character. Apparently, the Windows command line can not. I mainly program command line tools to be used by Windows users. So I guess I am screwed. Other than converting my tools to have a graphic interface, is there any other solution, other than give Bill Gates a call and bring his command line up to the 21st century ? -- http://mail.python.org/mailman/listinfo/python-list
Re: unable to print Unicode characters in Python 3
On Mon, 26 Jan 2009 13:26:56 -0800 (PST), jefm jef.mangelsch...@gmail.com wrote: As Benjamin Kaplin said, Windows terminals use the old cp1252 character set, which cannot display the euro sign. You'll either have to run it in something more modern like the cygwin rxvt terminal, or output some other way, such as through a GUI. With the standard console, I get the same. But with IDLE, using the same Python build but through a different interface Scream at Microsoft or try to find or encourage a console replacement that Python could use. In the meanwhile, use IDLE. Not perfect for Unicode, but better. So, if I understand it correctly, it should work as long as you run your Python code on something that can actually print the Unicode character. Apparently, the Windows command line can not. I mainly program command line tools to be used by Windows users. So I guess I am screwed. Other than converting my tools to have a graphic interface, is there any other solution, other than give Bill Gates a call and bring his command line up to the 21st century ? cp1252 can represent the euro sign (http://en.wikipedia.org/wiki/Windows-1252). Apparently the chcp command can be used to change the code page active in the console (http://technet.microsoft.com/en-us/library/bb490874.aspx). I've never tried this myself, though. Jean-Paul -- http://mail.python.org/mailman/listinfo/python-list
Re: I'm a python addict !
On Mon, 2009-01-26 at 12:37 -0800, Paul McGuire wrote: On Jan 26, 2:06 pm, J. Cliff Dyer j...@sdf.lonestar.org wrote: Thanks. That makes sense. But your example creates a new instance of the new class each time, rather than changing the class of a persistent instance, as the original example, to which I was responding, did. Look closer. The line that creates a new instance is commented out, with the notation how you have to do it in C++ and Java. The actual Python code is just below, and just assigns a new class to self.__class__, as in the original example. Right. Sorry about that. -- Paul -- http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list
Re: AttributeError: 'module' object has no attribute 'open_workbook'
On Jan 27, 3:07 am, MRAB goo...@mrabarnett.plus.com wrote: Jay Jesus Amorin wrote: [snip] Here's the error message: r...@nebuchadnezzar:/home/test/project# ./xlrd.py test.xls Traceback (most recent call last): File ./xlrd.py, line 3, in module import xlrd File /home/jayam/project/xlrd.py, line 6, in module mySpreadsheet = xlrd.open_workbook(open(sys.argv[1])) I concur with MRAB's diagnosis. To answer the OP's possible next question: the first arg of xlrd.open_workbook() is the path to the file to be opened. It won't work with a string of data. That's what the file_contents arg is for. Manual says: filename The path to the spreadsheet file to be opened. [snip] file_contents ... as a string or an mmap.mmap object or some other behave-alike object. If file_contents is supplied, filename will not be used, except (possibly) in messages. So the above line of code should be: mySpreadsheet = xlrd.open_workbook(sys.argv[1]) Cheers, John -- http://mail.python.org/mailman/listinfo/python-list
Re: unable to print Unicode characters in Python 3
Now that I know the problem, I found the following on Google. Windows uses codepages to display different character sets. (http:// en.wikipedia.org/wiki/Code_page) The Windows chcp command allows you to change the character set from the original 437 set. When you type on the command line: chcp 65001 it sets your console in UTF-8 mode. (http://en.wikipedia.org/wiki/Code_page_65001) Unfortunately, it still doesn't do what I want. Instead of printing the error message above, it prints nothing. -- http://mail.python.org/mailman/listinfo/python-list
Re: Anoying unicode / str conversion problem
Thanks Peter, your answer did the trick. I programed a lot with awk (also a very cool scripting language). So I was focused on the concept a dictionary key has to be string (as in awk). Since it's impossible to use a list as a dictionary key I thought it's also impossible to use a tuple as a key. I was wrong! So my code will become more pythonic, much simpler and even faster! Your suggestion to use the database is also an idea, but the actual task is to see if some rows in (identical) tables across many servers are missing and if so to add the missing rows. In my post I showed a simplified code. Again, thanks for the hint! Greetings Hans -- http://mail.python.org/mailman/listinfo/python-list
Re: unable to print Unicode characters in Python 3
chcp 1252 does allow me to print the EURO sign. Thanks for pointing that out. However, it does not show me some ALL Unicode characters. Very frustrating. I was hoping to find something that allows me to print any Unicode character on the console. -- http://mail.python.org/mailman/listinfo/python-list
Re: Newby: how to transform text into lines of text
On Mon, 26 Jan 2009 16:10:11 +0100, Andreas Waldenburger wrote: On 26 Jan 2009 14:51:33 GMT Marc 'BlackJack' Rintsch bj_...@gmx.net wrote: On Mon, 26 Jan 2009 12:22:18 +, Sion Arrowsmith wrote: content = a.readlines() (Just because we can now write for line in file doesn't mean that readlines() is *totally* redundant.) But ``content = list(a)`` is shorter. :-) But much less clear, wouldn't you say? Okay, so let's make it clearer and even shorter: ``lines = list(a)``. :-) Ciao, Marc 'BlackJack' Rintsch -- http://mail.python.org/mailman/listinfo/python-list