Wing IDE 2.1 released
We're happy to announce the release of Wing IDE version 2.1, an advanced development environment for the Python programming language. This is a free upgrade for Wing IDE 2.0 users. The release can be downloaded from: http://wingware.com/downloads Wing IDE provides powerful debugging, editing, code intelligence, and search capabilities that reduce development and debugging time, cut down on coding errors, and make it easier to understand and navigate Python code. Highlights of the 2.1 release include: * Visual Studio, VI/Vim, and Brief key bindings * Subversion and Perforce support (+) * Improved performance on Windows * Redesigned and improved search tools * Named bookmarks (+) * Breakpoint manager (+) and call stack as list * Evaluate file or selection in Python Shell * Support for Intel Macs (+) These are available in Wing IDE Pro only A list of major changes since Wing 2.0 can be found here: http://wingware.com/news/2006-06-19 This release is available for Windows (2000+), Linux, and Mac OS X (10.3+ with X11 installed) and can be compiled from sources on *BSD, Solaris, and other Posix operating systems. For more information see: Product Info: http://wingware.com/products Sales: http://wingware.com/store/purchase Sincerely, The Wingware Team -- http://mail.python.org/mailman/listinfo/python-announce-list Support the Python Software Foundation: http://www.python.org/psf/donations.html
SciPy 2006 Tutorials
All, As part of this year's SciPy 2006 Conference, we've planned Coding Sprints on Monday and Tuesday (August 14-15) and a Tutorial Day Wednesday (August 16)--the normal conference presentations follow on Thursday and Friday (August 17-18). For this year at least, the Tutorials (and Sprints) are no additional charge (you're on your own for food on those days, though). With regard to Tutorial topics, we've settled on the following: 3D visualization in Python using tvtk and MayaVi Scientific Data Analysis and Visualization using IPython and Matplotlib. Building Scientific Applications using the Enthought Tool Suite (Envisage, Traits, Chaco, etc.) NumPy (migration from Numarray Numeric, overview of NumPy) These will be in two tracks with two three hour sessions in each track. If you plan to attend, please send an email to [EMAIL PROTECTED] with the two sessions you'd most like to hear and we'll build the schedule with a minimum of conflict. We'll post the schedule of the tracks on the Wiki here: http://www.scipy.org/SciPy2006/TutorialSessions Also, if you haven't registered already, the deadline for early registration is July 14. The abstract submission deadline is July 7. More information is here: http://www.scipy.org/SciPy2006 Thanks, Travis -- http://mail.python.org/mailman/listinfo/python-announce-list Support the Python Software Foundation: http://www.python.org/psf/donations.html
RELEASED Python 2.5 (beta 1)
On behalf of the Python development team and the Python community, I'm happy to announce the first BETA release of Python 2.5. This is an *beta* release of Python 2.5. As such, it is not suitable for a production environment. It is being released to solicit feedback and hopefully discover bugs, as well as allowing you to determine how changes in 2.5 might impact you. If you find things broken or incorrect, please log a bug on Sourceforge. I'd like to really encourage you to try out this version and check that your code still works - if not, and you think it's a bug, please log a bug. Hopefully this will make it easier for you to upgrade once the final release of Python 2.5 is done. Please note that changes to improve Python's support for 64 bit systems might require authors of C extensions to change their code. See the website for more, including a link to a posting discussing this issue in particular. More information on the release (as well as source distributions and Windows and Mac OSX installers) are available from the 2.5 website: http://www.python.org/2.5/ Since the alpha releases, a slew of bug fixes and smaller new features have been added. See the release notes (available from the 2.5 webpage) for more. The first beta also includes the results of the Iceland NeedForSpeed sprint, resulting in some significant speedups. As of this release, Python 2.5 is now in *feature freeze*. No new features are planned - only bugfixes for the code already in the codebase. The plan from here is for one more beta release followed by one or more release candidates as needed, leading to a 2.5 final release early August. PEP 356 includes the schedule and will be updated as the schedule evolves. The new features in Python 2.5 are described in Andrew Kuchling's What's New In Python 2.5. It's available from the 2.5 web page. Amongst the language features added include conditional expressions, the with statement, the merge of try/except and try/finally into try/except/finally, enhancements to generators to produce a coroutine kind of functionality, and a brand new AST-based compiler implementation. New modules added include hashlib, ElementTree, sqlite3, wsgiref and ctypes. We also have a new profiling module cProfile. Enjoy this new release (another step on the path to Python 2.5 final) Anthony -- Anthony Baxter [EMAIL PROTECTED] Python Release Manager (on behalf of the entire python-dev team) pgpYfjqJg0XxR.pgp Description: PGP signature -- http://mail.python.org/mailman/listinfo/python-announce-list Support the Python Software Foundation: http://www.python.org/psf/donations.html
Initializing a set from a list
Hi, I'm trying to initialize a set from a list but am unable to do so. My list c, looks like: [(1.00909, 0.91966, -0.13550388182991072, 0), (0.874239991, 0.7001, -0.2123048713754, 0)] So basically a list of 2 tuples, each with 4 elements. Since tuples are immutable, I think a set should be able to support them. Anyway, I then do: set_c = set(c) And instead of getting a set, I get None when I try to print out set_c. len(set_c) complains TypeError: len() of unsized object. Help? Thank you. -- http://mail.python.org/mailman/listinfo/python-list
Re: Initializing a set from a list
Xiaolei Li wrote: Hi, I'm trying to initialize a set from a list but am unable to do so. My list c, looks like: [(1.00909, 0.91966, -0.13550388182991072, 0), (0.874239991, 0.7001, -0.2123048713754, 0)] So basically a list of 2 tuples, each with 4 elements. Since tuples are immutable, I think a set should be able to support them. Anyway, I then do: set_c = set(c) And instead of getting a set, I get None when I try to print out set_c. len(set_c) complains TypeError: len() of unsized object. Help? c = [(1.00909, 0.91966, -0.13550388182991072, 0), ... (0.874239991, 0.7001, -0.2123048713754, 0)] set_c = set(c) set_c set([(1.00909, 0.91966, -0.13550388182991072, 0), (0.874239991, 0.7001, -0.2123048713754, 0)]) Please copy-and-paste the exact code that you wrote and the exact output. -- Robert Kern I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth. -- Umberto Eco -- http://mail.python.org/mailman/listinfo/python-list
separation events
Hi all, i'm writing a software with python and wxpython for manage the quality/environmental/security system for the my factory. I want to separate the gui structure from the events and database operations for obtain a very modular software, for this reason i start to use sqlalchemy. Unfortunately i don't understand if is possibile to have a file with only the gui structure and another file with the database operations and the events of the gui. It is possibile? the use of sqlalchemy is a good thing? Thanks a lot Ghido -- http://mail.python.org/mailman/listinfo/python-list
Re: Python is fun (useless social thread) ;-)
John Salerno wrote: Did you have to learn it for a job? No, for me, programming is primarily a hobby. I worked on scientific programming in Fortran in the 1980s and in C in the 1990s. Later I did some sys admin work, and managed to use a bit of Python in that. Or did you just like what you saw and decided to learn it for fun? I became interested in creating a free software graphic adventure game, and we needed a scripting language. A collaborator heavily favored Python, and so I checked it out. I was a stay-at-home Dad at the time, so I had time to work on projects. But I also had to juggle kids. So a programming language like C that required me to hold a lot of state in my head was unworkable. When you're watching kids, you have maybe 5-10 minutes between interruptions, so you need to be able to recover your place in seconds. Python makes that more possible than any other language I've seen. At first I was suspicious of the significant whitespace. But I quickly realized the brilliance of it -- it makes the computer queue on the same thing my eyes use to recognize code-blocks, so it's virtually impossible to have an ambiguous code-block bug. In fact, I was stunned at how many common bugs you just can't have happen in Python (of course, later on I discovered a few that it specifically enables, but well, there's no such thing as a perfect solution). Also, how did you go about learning it? (i.e., like I described above, I started with the main stuff then moved on to the different available frameworks) I picked up a copy of Learning Python from O'Reilly books. I went through it in three days -- easily record-breaking time for me to learn a new computer language. Of course, I didn't learn *everything* in that time, but I learned enough to write useful stuff in it. That sold me on it -- it was obviously the right language for me to be using. Was there any necessity in the specifics you learned, or did you just dabble in something (e.g. wxPython) for fun? Well, as I said, I started on a game project. Later on, I spent a lot of time using Zope and working on a big-concept CMS design. I think I was way out of my depth actually. I'm considering extending Plone to do what I need, now, but I haven't really had a chance to look at it. Are there still some things you feel you need to learn or improve? Of course! * I am working on combining auto-generated documentation with pre-written overview documentation to get the 'best of both worlds' documentation for the code. * I am trying to better understand and use testing methodologies. Testing is hard to get in the habit of doing, because it requires forethought -- testing is work you do now, during early development, that saves you tons of time later on, when you are supporting and improving the software. So it's requires some discipline to spend that extra up-front time (even though you know it's going to save you later). * There will always be modules you don't know yet (and more are being written). In particular, I'm looking into installing and extending Plone. I also need to learn more about XML processing and other stuff I'm going to need for processing vector graphics. * I still haven't totally gotten my head around GUIs, nor PyGame (which is back to the game project) though I'm getting closer to my goals. Regrettably, though, it's still a hobby, and I have less time even than I used to. Even though I still stay at home, I have a full time writing workload now, and it's become a little difficult to find enough time for programming. Once again, though, Python's ease of readability really helps me to pick up where I left off when I have to do that (which is a lot). Cheers, Terry -- Terry Hancock ([EMAIL PROTECTED]) Anansi Spaceworks http://www.AnansiSpaceworks.com -- http://mail.python.org/mailman/listinfo/python-list
Re: Simple question regarding module initialization
On 6/20/06, Patrick M. Nielsen [EMAIL PROTECTED] wrote: for module in modules: print Loading %s... % module exec 'import %s' % module Although I like the outcome of writing it like this, I don't feel good about it. Is this against standard Python conventions or morals? Loading modules this way, that is (instead of just importing it all the right way and making a print statement for each one). Troy Melhase wrote: __import__(name, globals, locals, fromlist) - module Import a module. ... grumble ... top posting ... grumble ... no text ... grumble ... (Probably) Troy's point here is that you'd be better off to use the built-in __import__ function instead of using exec. This is probably clearer. There is no fundamental reason why it is more secure, though (the usual complaint about exec), because you are in complete control of what exec is being fed. However, I'd still recommend __import__ for clarity. Cheers, Terry -- Terry Hancock ([EMAIL PROTECTED]) Anansi Spaceworks http://www.AnansiSpaceworks.com -- http://mail.python.org/mailman/listinfo/python-list
Re: Problem Py2exe pygtk and Pil
I have already read the py2exe docs. When I come back at home, I will write a message who contains the script and the errors faulkner a écrit : read the py2exe docs. py2exe should put everything a new user should need in the dist directory. if it doesn't, copy the libraries [be they .pyc or .pyd or .dll] that py2exe missed into dist. i know for a fact that py2exe is intelligent with the gtk libraries, so check if the PIL libraries are in the dist directory. thomas carpentier wrote: Hello, I have created a program with a GUI ( glade). In this script I call the Python Imaging Library. I have developped this program onto linux, but il would like export it on Windows, however I have a problem with py2exe. If the new user has not python and library(PIL, GLADE) installed, it doesn't work. I don't know how integrate library into my setup. Thank you for your help. Thomas -- http://mail.python.org/mailman/listinfo/python-list
Re: Initializing a set from a list
Robert Kern wrote: Xiaolei Li wrote: Hi, I'm trying to initialize a set from a list but am unable to do so. My list c, looks like: [(1.00909, 0.91966, -0.13550388182991072, 0), (0.874239991, 0.7001, -0.2123048713754, 0)] So basically a list of 2 tuples, each with 4 elements. Since tuples are immutable, I think a set should be able to support them. Anyway, I then do: set_c = set(c) And instead of getting a set, I get None when I try to print out set_c. len(set_c) complains TypeError: len() of unsized object. Help? c = [(1.00909, 0.91966, -0.13550388182991072, 0), ... (0.874239991, 0.7001, -0.2123048713754, 0)] set_c = set(c) set_c set([(1.00909, 0.91966, -0.13550388182991072, 0), (0.874239991, 0.7001, -0.2123048713754, 0)]) Please copy-and-paste the exact code that you wrote and the exact output. Ok, I've basically found the cause of my problem. I'm including stuff from pylab and that's causing some conflicts? Here's 6 lines of code: from pylab import * c = [1, 2, 3, 3] print c set_c = set(c) print set print set_c When I run that (Python 2.4.2, Pylab 0.80), I get: [1, 2, 3, 3] function set at 0xb751e1b4 None If I remove the first line, I correctly get: [1, 2, 3, 3] type 'set' set([1, 2, 3]) Good news is that I didn't really need pylab in the program. So for now, everything's working just fine. -- http://mail.python.org/mailman/listinfo/python-list
Re: need all python dialog equivalent
dialog binary is 110 KB. Won't it fit ? Eric S. Johansson wrote: I'm creating a dialogue style interface for an application on a dedicated system. All I have is basic Python 2.3. Is there anything like an all Python dialog equivalent floating around? I'm currently hacking away in curses but it's taking me a long way down what I fear to be a wrong path. I've looked at the Python dialog web site but it clearly states that it is a wrapper around dialogue/Xdialog. suggestions would be most welcome. ---eric -- http://mail.python.org/mailman/listinfo/python-list
Re: Iteration over recursion?
You might use a separate prime generator to produce prime factors. The factorize algorithm becomes quite simple and configurable by prime generators. For demonstration purposes I use the eratosthenes sieve. def eratosthenes(): memo = {} q = 2 while True: p = memo.pop(q, None) if p is None: yield q memo[q*q] = q else: x = p + q while x in memo: x += p memo[x] = p q+=1 def factorize(n, sieve = eratosthenes): if n = 1: return [n] factors = [] primes = sieve() for q in primes: while n % q == 0: factors.append(q) n //= q if n == 1: return factors Regards, Kay -- http://mail.python.org/mailman/listinfo/python-list
Python SHA-1 as a method for unique file identification ? [help!]
This inquiry may either turn out to be about the suitability of the SHA-1 (160 bit digest) for file identification, the sha function in Python ... or about some error in my script. Any insight appreciated in advance. I am trying to reduce duplicate files in storage at home - I have a large number files (e.g. MP3s) which have been stored on disk multiple times under different names or on different paths. The using applications will search down from the top path and find the files - so I do not need to worry about keeping track of paths. All seemed to be working until I examined my log files and found files with the same SHA digest had different sizes according to os.stat(fpath).st_size . This is on Windows XP. - Am I expecting too much of SHA-1? - Is it that the os.stat data on Windows cannot be trusted? - Or perhaps there is a silly error in my code I should have seen? Thanks - Eric - - - - - - - - - - - - - - - - - - Log file extract: Dup: noPath: F:\music\mp3s\01125.mp3Hash: 00b3acb529aae11df186ced8424cb189f062fa48Name: 01125.mp3Size: 63006 Dup: YESPath: F:\music\mp3s\0791.mp3Hash: 00b3acb529aae11df186ced8424cb189f062fa48Name: 0791.mp3Size: 50068 Dup: YESPath: F:\music\mp3s\12136.mp3Hash: 00b3acb529aae11df186ced8424cb189f062fa48Name: 12136.mp3Size: 51827 Dup: YESPath: F:\music\mp3s\11137.mp3Hash: 00b3acb529aae11df186ced8424cb189f062fa48Name: 11137.mp3Size: 56417 Dup: YESPath: F:\music\mp3s\0991.mp3Hash: 00b3acb529aae11df186ced8424cb189f062fa48Name: 0991.mp3Size: 59043 Dup: YESPath: F:\music\mp3s\0591.mp3Hash: 00b3acb529aae11df186ced8424cb189f062fa48Name: 0591.mp3Size: 59162 Dup: YESPath: F:\music\mp3s\10140.mp3Hash: 00b3acb529aae11df186ced8424cb189f062fa48Name: 10140.mp3Size: 59545 Dup: YESPath: F:\music\mp3s\0491.mp3Hash: 00b3acb529aae11df186ced8424cb189f062fa48Name: 0491.mp3Size: 63101 Dup: YESPath: F:\music\mp3s\0392.mp3Hash: 00b3acb529aae11df186ced8424cb189f062fa48Name: 0392.mp3Size: 63252 Dup: YESPath: F:\music\mp3s\0891.mp3Hash: 00b3acb529aae11df186ced8424cb189f062fa48Name: 0891.mp3Size: 65808 Dup: YESPath: F:\music\mp3s\0691.mp3Hash: 00b3acb529aae11df186ced8424cb189f062fa48Name: 0691.mp3Size: 67050 Dup: YESPath: F:\music\mp3s\0294.mp3Hash: 00b3acb529aae11df186ced8424cb189f062fa48Name: 0294.mp3Size: 67710 Code: # Dedup_inplace.py # vers .02 # Python 2.4.1 # Create a dictionary consisting of hash:path # Look for 2nd same hash and delete path testpath=rF:\music\mp3s logpath=rC:\testlog6.txt import os, sha def hashit(pth): Takes a file path and returns a SHA hash of its string fs=open(pth,'r').read() sh=sha.new(fs).hexdigest() return sh def logData(d={}, logfile=c://filename999.txt, separator=\n): Takes a dictionary of values and writes them to the provided file path logstring=separator.join([str(key)+: +d[key] for key in d.keys()])+\n f=open(logfile,'a') f.write(logstring) f.close() return def walker(topPath): fDict={} logDict={} limit=1000 freed_space=0 for root, dirs, files in os.walk(topPath): for name in files: fpath=os.path.join(root,name) fsize=os.stat(fpath).st_size fkey=hashit(fpath) logDict[Name]=name logDict[Path]=fpath logDict[Hash]=fkey logDict[Size]=str(fsize) if fkey not in fDict.keys(): fDict[fkey]=fpath logDict[Dup]=no else: #os.remove(fpath) --uncomment only when script proven logDict[Dup]=YES freed_space+=fsize logData(logDict, logpath, \t) items=len(fDict.keys()) print Dict entry: ,items, print Cum freed space: ,freed_space if items limit: break if items limit: break def emptyNests(topPath): Walks downward from the given path and deletes any empty directories for root, dirs, files in os.walk(topPath): for d in dirs: dpath=os.path.join(root,d) if len(os.listdir(dpath))==0: print deleting: , dpath os.rmdir(dpath) walker(testpath) emptyNests(testpath) -- http://mail.python.org/mailman/listinfo/python-list
Re: Initializing a set from a list
Sybren Stuvel wrote: Xiaolei enlightened us with: from pylab import * You'd better not do that. Just use import pylab. If I remove the first line, I correctly get: [1, 2, 3, 3] type 'set' set([1, 2, 3]) Pylab shadows the built-in set name, which is one of the reasons you should generally use import XXX instead of from XXX import *. Ahh. Understood. Thank you very much. -- http://mail.python.org/mailman/listinfo/python-list
Re: Python SHA-1 as a method for unique file identification ? [help!]
EP wrote: This inquiry may either turn out to be about the suitability of the SHA-1 (160 bit digest) for file identification, the sha function in Python ... or about some error in my script. This is on Windows XP. def hashit(pth): fs=open(pth,'r').read() sh=sha.new(fs).hexdigest() return sh cannot comment on the suitability of SHA for your use-case but shouldn't you be opening the file in binary mode? fs=open(pth,'rb').read() -- http://mail.python.org/mailman/listinfo/python-list
Re: What is Expressiveness in a Computer Language
Marshall wrote: Joe Marshall wrote: They *do* have a related meaning. Consider this code fragment: (car a string) [...] Both `static typing' and `dynamic typing' (in the colloquial sense) are strategies to detect this sort of error. The thing is though, that putting it that way makes it seems as if the two approaches are doing the same exact thing, but just at different times: runtime vs. compile time. But they're not the same thing. Passing the static check at compile time is universally quantifying the absence of the class of error; passing the dynamic check at runtime is existentially quantifying the absence of the error. A further difference is the fact that in the dynamically typed language, the error is found during the evaluation of the expression; in a statically typed language, errors are found without attempting to evaluate the expression. I find everything about the differences between static and dynamic to be frustratingly complex and subtle. Let me add another complex subtlety, then: the above description misses an important point, which is that *automated* type checking is not the whole story. I.e. that compile time/runtime distinction is a kind of red herring. In fact, automated type checking is orthogonal to the question of the existence of types. It's perfectly possible to write fully typed programs in a (good) dynamically-checked language. In a statically-checked language, people tend to confuse automated static checking with the existence of types, because they're thinking in a strictly formal sense: they're restricting their world view to what they see within the language. Then they look at programs in a dynamically-checked language, and see checks happening at runtime, and they assume that this means that the program is untyped. It's certainly close enough to say that the *language* is untyped. One could also say that a program, as seen by the language, is untyped. But a program as seen by the programmer has types: the programmer performs (static) type inference when reasoning about the program, and debugs those inferences when debugging the program, finally ending up with a program which has a perfectly good type scheme. It's may be messy compared to say an HM type scheme, and it's usually not proved to be perfect, but that again is an orthogonal issue. Mathematicians operated for thousands of years without automated checking of proofs, so you can't argue that because a dynamically-checked program hasn't had its type scheme proved correct, that it somehow doesn't have types. That would be a bit like arguing that we didn't have Math until automated theorem provers came along. These observations affect the battle over terminology in various ways. I'll enumerate a few. 1. Untyped is really quite a misleading term, unless you're talking about something like the untyped lambda calculus. That, I will agree, can reasonably be called untyped. 2. Type-free as suggested by Chris Smith is equally misleading. It's only correct in a relative sense, in a narrow formal domain which ignores the process of reasoning about types which is inevitably performed by human programmers, in any language. 3. A really natural term to refer to types which programmers reason about, even if they are not statically checked, is latent types. It captures the situation very well intuitively, and it has plenty of precedent -- e.g. it's mentioned in the Scheme reports, R5RS and its predecessors, going back at least a decade or so (haven't dug to check when it first appeared). 4. Type theorists like to say that universal types can be used in a statically-typed language to subsume dynamic types. Those theorists are right, the term dynamic type, with its inextricable association with runtime checks, definitely gets in the way here. It might be enlightening to rephrase this: what's really happening is that universal types allow you to embed a latently-typed program in a statically-checked language. The latent types don't go anywhere, they're still latent in the program with universal types. The program's statically-checked type scheme doesn't capture the latent types. Describing it in these terms clarifies what's actually happening. 5. Dynamic checks are only part of the mechanism used to verify latent types. They shouldn't be focused on as being the primary equivalent to static checks. The closest equivalent to the static checks is a combination of human reasoning and testing, in which dynamic checks play an important but ultimately not a fundamental part. You could debug a program and get the type scheme correct without dynamic checks, it would just be more difficult. So, will y'all just switch from using dynamically typed to latently typed, and stop talking about any real programs in real programming languages as being untyped or type-free, unless you really are talking about situations in which human reasoning
Re: Iteration over recursion?
In article [EMAIL PROTECTED], Kay Schluehr [EMAIL PROTECTED] writes: | | You might use a separate prime generator to produce prime factors. The | factorize algorithm becomes quite simple and configurable by prime | generators. For demonstration purposes I use the eratosthenes sieve. That is a good point. The differences between iteration and recursion are well-understood (by some people, at least), but the difference between those two and generators is not. I have mixed feelings whether they are a good idea or not, largely because I have never seen a language that provides a declaration to guarantee that a generator is 'clean'. And an unclean generator (e.g. one with side-effects) is a most revolting object, from a software engineering (including validation) point of view. One good example of this is streaming input (I/O). Traditional, clean streaming input can be implemented efficiently and with good error diagnostics. The unclean C- and POSIX-like streaming input can't be, or at least only one of the two can be provided at once. Regards, Nick Maclaren. -- http://mail.python.org/mailman/listinfo/python-list
Re: What is Expressiveness in a Computer Language
David Hopwood wrote: Pascal Costanza wrote: Rob Thorpe wrote: Pascal Costanza wrote: Matthias Blume wrote: Pascal Costanza [EMAIL PROTECTED] writes: (slot-value p 'address) is an attempt to access the field 'address in the object p. In many languages, the notation for this is p.address. Although the class definition for person doesn't mention the field address, the call to (eval (read)) allows the user to change the definition of the class person and update its existing instances. Therefore at runtime, the call to (slot-value p 'adress) has a chance to succeed. I am quite comfortable with the thought that this sort of evil would get rejected by a statically typed language. :-) This sort of feature is clearly not meant for you. ;-P To be fair though that kind of thing would only really be used while debugging a program. Its no different than adding a new member to a class while in the debugger. There are other places where you might add a slot to an object at runtime, but they would be done in tidier ways. Yes, but the question remains how a static type system can deal with this kind of updates. It's not difficult in principle: - for each class [*], define a function which converts an 'old' value of that class to a 'new' value (the ability to do this is necessary anyway to support some kinds of upgrade). A default conversion function may be autogenerated if the class definition has changed only in minor ways. Yep, this is more or less exactly how CLOS does it. (The conversion function is called update-instance-for-redefined-class, and you can provide your own methods on it.) - typecheck the new program and the conversion functions, using the old type definitions for the argument of each conversion function, and the new type definitions for its result. The problem here is: The program is already executing, so this typecheck isn't performed at compile-time, in the strict sense of the word (i.e., before the program is deployed). It may still be a syntactic analysis, but you don't get the kind of guarantees anymore that you typically expect from a static type checker _before_ the program is started in the first place. (It's really important to understand that the idea is to use this for deployed programs - albeit hopefully in a more structured fashion - and not only for debugging. The example I have given is an extreme one that you would probably not use as such in a real-world setting, but it shows that there is a boundary beyond which static type systems cannot be used in a meaningful way anymore, at least as far as I can tell.) - have the debugger apply the conversions to all values, and then resume the program. In CLOS, this conversion is defined as part of the language proper, but this is mostly because Common Lisp doesn't make a sharp distinction between debugging capabilities and regular language features. (I think it's a good thing that there is no strong barrier against having debugging capabilities in a deployed program.) [*] or nearest equivalent in a non-OO language. Pascal -- 3rd European Lisp Workshop July 3 - Nantes, France - co-located with ECOOP 2006 http://lisp-ecoop06.bknr.net/ -- http://mail.python.org/mailman/listinfo/python-list
Re: How to truncate/round-off decimal numbers?
Hi, just a thought: if you *always* work with floats with two decimals, you are in fact working with integers, but you represent them as a floats - confusing for the internal representation. So why not work with int(float * 100) instead? This way you only have to take care of roundoffs etc when dividing. int (+|-|*) int = int int / int = int / int + int % int Integers are nice, me like integers. /per9000 -- http://mail.python.org/mailman/listinfo/python-list
Re: How to truncate/round-off decimal numbers?
oops, should be something like this: int / int = int / int, int % int /per9000 -- http://mail.python.org/mailman/listinfo/python-list
wxStyledTextCtrl and sql syntax highlightning
Hi. I use wxPy version 2.4.2 for Python 2.3. Now I wanted to use the wxStyledTextCtrl for viewing (editing) of sql code. I have the following: self.__m_styled_text_ctrl = wxPython.stc.wxStyledTextCtrl( self, wx.NewId(), style=wxPython.wx.wxNO_FULL_REPAINT_ON_RESIZE) self.__m_styled_text_ctrl.SetLexer(wxPython.stc.wxSTC_LEX_SQL) self.__m_styled_text_ctrl.SetProperty(fold, 1) self.__m_styled_text_ctrl.SetMargins(0,0) self.__m_styled_text_ctrl.SetKeyWords(0, SQL_KEYWORDS) Where sql_keywords is string with space separated sql keywords. When i add text to the ctrl i don't get the right highlightning. What do i do wrong and what else do i have to specify? thx in advance -- http://mail.python.org/mailman/listinfo/python-list
Re: dynamic inheritance
alf wrote: I did not think about any particular problem, just thought it would be cool to abstract out the base class. In fact you can do that in C++ (to some extend) using templates and parameterizing the base class. Python is ways cooler than C++. This is a sensible use case where you may want to change the base class at runtime: class Base(object): ... pass class BasePlusDebugMethods(Base): ... pass ... class C(Base): ... pass C.__bases__ = (BasePlusDebugMethods,) C.mro() [class '__main__.C', class '__main__.BasePlusDebugMethods', class '__main__.Base', type 'object'] (i.e. in a running program with a problem you can add debug methods and possibily even fix the problem without restarting the program). Michele Simionato -- http://mail.python.org/mailman/listinfo/python-list
Are any python-LVM bindings available?
I need to execute LVM operations from within python ... are there any packages containing direct bindings available or is forking a shell the only solution? Any thoughts would be much appreciated. cheers. -- http://mail.python.org/mailman/listinfo/python-list
Search substring in a string and get index of all occurances
Hi there, I would like to search for a substring in a string and get the index of all occurances. mystring = 'John has a really nice powerbook.' substr = ' ' # space I would like to get this list: [4, 8, 10, 17, 22] How can I do that without using for i in mystring which might be expensive for large strings? Thanks in advance, Nico -- http://mail.python.org/mailman/listinfo/python-list
Re: Python SHA-1 as a method for unique file identification ? [help!]
[EP [EMAIL PROTECTED]] This inquiry may either turn out to be about the suitability of the SHA-1 (160 bit digest) for file identification, the sha function in Python ... or about some error in my script It's your script. Always open binary files in binary mode. It's a disaster on Windows if you don't (if you open a file in text mode on Windows, the OS pretends that EOF occurs at the first instance of byte chr(26) -- this is an ancient Windows behavior that made an odd kind of sense in the mists of history, and has persisted in worship of Backward Compatibility despite that the original reason for it went away _long_ ago). ... I am trying to reduce duplicate files in storage at home - I have a large number files (e.g. MP3s) which have been stored on disk multiple times under different names or on different paths. ... All seemed to be working until I examined my log files and found files with the same SHA digest had different sizes according to os.stat(fpath).st_size . This is on Windows XP. - Am I expecting too much of SHA-1? No. SHA-1 should work well for this. - Is it that the os.stat data on Windows cannot be trusted? It can be trusted to the extent that anything on Windows can be trusted ;-) ... def hashit(pth): Takes a file path and returns a SHA hash of its string fs=open(pth,'r').read() Make that 'rb' instead of 'r', and your problem will go away. Do note that there are faster ways to go about this. For example, if a particular file has a unique size among the files you're looking at, there's no reason to even open that file (let alone compute its hash). Group the files by size, and within a size group you can find duplicates by, e.g., first comparing their initial 16 bytes, then the next 32, then the next 64 ... etc. If duplicates are uncommon, this can be a huge savings. For example, here's output from an old dup-finding Python program of mine run over a directory tree which happens to contain no duplicates: Files - Total 10,718 Unique 10,718 Duplicate0 # w/ unique size10,053 # w/ unique prefix 665 Bytes - Total 1,401,668,015 Unique 1,401,668,015 Duplicate 0 Read 76,688 Excess76,688 That last two lines mean it actually read a total of only about 77,000 file bytes on its way to proving there were no duplicates among about 11,000 files spanning about 1.4 gigabytes. No hashes are computed by that program. I'd use a hash if instead I were going to save a persistent (across runs) set of known hashes, so that answering here's a new file -- same as one I already have? could be done by computing its hash. While the program above generally reads amazingly few file bytes, it hammers the OS file directory services, and it would go faster to compute a hash of a new file than to run the whole analysis again. -- http://mail.python.org/mailman/listinfo/python-list
Re: How to truncate/round-off decimal numbers?
just a thought: if you *always* work with floats with two decimals, you are in fact working with integers, but you represent them as a floats - confusing for the internal representation. So why not work with int(float * 100) instead? This way you only have to take care of roundoffs etc when dividing. And why won't you work with decimal module ? -- http://mail.python.org/mailman/listinfo/python-list
Re: Search substring in a string and get index of all occurances
mystring = 'John has a really nice powerbook.' substr = ' ' # space pos = 0 indices = [] while True: i = mystring.find(substr,pos) if i==-1: break indices.append(i) pos = i+1 print indices [4, 8, 10, 17, 22] Pierre -- http://mail.python.org/mailman/listinfo/python-list
Re: wxStyledTextCtrl and sql syntax highlightning
I have the following: self.__m_styled_text_ctrl = wxPython.stc.wxStyledTextCtrl( self, wx.NewId(), style=wxPython.wx.wxNO_FULL_REPAINT_ON_RESIZE) self.__m_styled_text_ctrl.SetLexer(wxPython.stc.wxSTC_LEX_SQL) self.__m_styled_text_ctrl.SetProperty(fold, 1) self.__m_styled_text_ctrl.SetMargins(0,0) self.__m_styled_text_ctrl.SetKeyWords(0, SQL_KEYWORDS) Hi Pierre, I'd like to do some tests with your stuff, but I'd appreciate to have a working sample. Would you like to post it ? Regards, jm -- http://mail.python.org/mailman/listinfo/python-list
Re: How to truncate/round-off decimal numbers?
In article [EMAIL PROTECTED], per9000 [EMAIL PROTECTED] writes: | | just a thought: if you *always* work with floats with two decimals, | you are in fact working with integers, but you represent them as a | floats - confusing for the internal representation. No, you aren't - you are working with fixed-point, which is something that is neither integers nor floating-point, but is somewhere in between. I am (just) old enough to remember when it was used for numeric work, and to have used it for that myself, but not old enough to have done any numeric work using fixed-point hardware. | So why not work with int(float * 100) instead? This way you only have | to take care of roundoffs etc when dividing. And multiplying, and calling most mathematical functions. Regards, Nick Maclaren. -- http://mail.python.org/mailman/listinfo/python-list
OT: wxPython GUI designer
Don Taylor [EMAIL PROTECTED] wrote in message news:[EMAIL PROTECTED] I find it easy to use sizers in wxGlade. Just gave is a spin yesterday: How does on fix the size of layout; I can only manage to get sizers to distribute space evently amongst the fields, which is *not* what I want. -- http://mail.python.org/mailman/listinfo/python-list
Re: What is Expressiveness in a Computer Language
Rob Thorpe [EMAIL PROTECTED] writes: Andreas Rossberg wrote: No, variables are insignificant in this context. You can consider a language without variables at all (such languages exist, and they can even be Turing-complete) and still have evaluation, values, and a non-trivial type system. Hmm. You're right, ML is no-where in my definition since it has no variables. That's not true. ML has variables in the mathematical sense of variables -- symbols that can be associated with different values at different times. What it doesn't have is mutable variables (though it can get the effect of those by having variables be immutable references to mutable memory locations). What Andreas was alluding to was presumably FP-style languages where functions or relations are built by composing functions or relations without ever naming values. Torben -- http://mail.python.org/mailman/listinfo/python-list
Re: Specifing arguments type for a function
Paolo Pantaleo wrote: I have a function def f(the_arg): ... and I want to state that the_arg must be only of a certain type (actually a list). Is there a way to do that? I wrote a cool function decorator just for that purpose. It's posted on the Python Decorator Library at: http://wiki.python.org/moin/PythonDecoratorLibrary#head-308f2b3507ca91800def19d813348f78db34303e If you use it, you will be able to simply write: @accepts(list) def f(the_arg): ... and you will get a warning message if the_arg is not a list. Or, if you want an exception raised, then just: @accepts(list, debug=2) def f(the_arg): ... Let me know what you think, if you do end up using it. I'm eager for feedback. -- http://mail.python.org/mailman/listinfo/python-list
Re: separation events
Ghido wrote: Hi all, i'm writing a software with python and wxpython for manage the quality/environmental/security system for the my factory. I want to separate the gui structure from the events and database operations for obtain a very modular software, for this reason i start to use sqlalchemy. Unfortunately i don't understand if is possibile to have a file with only the gui structure and another file with the database operations and the events of the gui. It is possibile? You may want to look for MVC (Model/View/Controller). the use of sqlalchemy is a good thing? Thanks a lot Ghido -- bruno desthuilliers python -c print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in '[EMAIL PROTECTED]'.split('@')]) -- http://mail.python.org/mailman/listinfo/python-list
Re: What is Expressiveness in a Computer Language
David Hopwood wrote: Oh, but it *does* make sense to talk about dynamic tagging in a statically typed language. It even makes perfect sense to talk about dynamic typing in a statically typed language - but keeping the terminology straight, this rather refers to something like described in the well-known paper of the same title (and its numerous follow-ups): Martin Abadi, Luca Cardelli, Benjamin Pierce, Gordon Plotkin Dynamic typing in a statically-typed language. Proc. 16th Symposium on Principles of Programming Languages, 1989 / TOPLAS 13(2), 1991 Note how this is totally different from simple tagging, because it deals with real types at runtime. - Andreas -- http://mail.python.org/mailman/listinfo/python-list
Re: What is Expressiveness in a Computer Language
Matthias Blume wrote: Rob Thorpe [EMAIL PROTECTED] writes: I think we're discussing this at cross-purposes. In a language like C or another statically typed language there is no information passed with values indicating their type. You seem to be confusing does not have a type with no type information is passed at runtime. Have a look in a C compiler if you don't believe me. Believe me, I have. In a C compiler the compiler has no idea what the values are in the program. It knows only their type in that it knows the type of the variable they are contained within. Would you agree with that? No it doesn't. Casting reinterprets a value of one type as a value of another type. There is a difference. If I cast an unsigned integer 20 to a signed integer in C on the machine I'm using then the result I will get will not make any sense. Which result are you getting? What does it mean to make sense? Well the right one actually, bad example. But, if I cast an unsigned int 25 to signed I get -1794967296. -- http://mail.python.org/mailman/listinfo/python-list
help() on stdout.closed
Python 2.4.1 (#1, May 16 2005, 15:19:29) [GCC 4.0.0 20050512 (Red Hat 4.0.0-5)] on linux2 Type help, copyright, credits or license for more information. from sys import stdout help (stdout.closed) If I do this, it gives me help on the bool object. Also: stdout.closed.__doc__ 'bool(x) - bool\n\nReturns True when the argument x is true, False otherwise.\nThe builtins True and False are the only two instances of the class bool.\nThe class bool is a subclass of the class int, and cannot be subclassed.' What's going on here? Other docstrings in sys.stdout work fine. Pekka (uses 2.4.3 on another comp) -- http://mail.python.org/mailman/listinfo/python-list
Re: What is Expressiveness in a Computer Language
Rob Thorpe wrote: I think this should make it clear. If I have a xyz in lisp I know it is a string. If I have xyz in an untyped language like assembler it may be anything, two pointers in binary, an integer, a bitfield. There is no data at compile time or runtime to tell what it is, the programmer has to remember. You have to distinguish between values (at the level of language semantics) and their low-level representation (at the implementation level). In a high-level language, the latter should be completely immaterial to the semantics, and hence not interesting for the discussion. No, variables are insignificant in this context. You can consider a language without variables at all (such languages exist, and they can even be Turing-complete) and still have evaluation, values, and a non-trivial type system. Hmm. You're right, ML is no-where in my definition since it has no variables. Um, it has. Mind you, it has no /mutable/ variables, but that was not even what I was talking about. But the value itself has no type You mean that the type of the value is not represented at runtime? True, but that's simply because the type system is static. It's not the same as saying it has no type. Well, is it even represented at compile time? The compiler doesn't know in general what values will exist at runtime, it knows only what types variables have. Sometimes it only has partial knowledge and sometimes the programmer deliberately overrides it. From what knowledge it you could say it know what types values will have. Again, variables are insignificant. From the structure of an expression the type system derives the type of the resulting value. An expression may contain variables, and then the type system generally must know (or be able to derive) their types too, but that's a separate issue. Most values are anonymous. Nevertheless their types are known. Unfortunately it's often necessary to break static type systems. Your definitely using the wrong static language then. ;-) - Andreas -- http://mail.python.org/mailman/listinfo/python-list
What's the best way to wrap a whole script in try..except?
I want to wrap a whole script in try ... except. What is the best way of doing this? Consider the following: - try: import modules CODE def notifyme(traceback): code to tell me there is a problem except Exception, traceback: notifyme(traceback) Would this code not work because if any part of CODE encounters an exception then it won't reach the notifyme() function definition and therefore the whole thing won't work and I won't get notified when a traceback occurs, in fact the call to notifyme() under except will itself probably trace back as well! Do I have to instead do: import a couple of modules def notifyme(): code to tell me there is a problem try: CODE except Exception, traceback: notifyme(traceback) How you you handle this? Hari -- http://mail.python.org/mailman/listinfo/python-list
Re: help() on stdout.closed
In article [EMAIL PROTECTED], Pekka Karjalainen wrote: from sys import stdout help (stdout.closed) If I do this, it gives me help on the bool object. stdout.closed is a bool. What were you expecting it to show you? -- http://mail.python.org/mailman/listinfo/python-list
Re: help() on stdout.closed
Pekka Karjalainen wrote: from sys import stdout help (stdout.closed) If I do this, it gives me help on the bool object. that's probably because sys.stdout.closed *is* a bool object: sys.stdout.closed False type(sys.stdout.closed) type 'bool' there's no way the reflection system can figure out how a given boolean was created; all it knows is that it gets an object of a given type. Other docstrings in sys.stdout work fine. have you tried things like help(sys.stdout.name) and help(sys.stdout.write(hello)) ? /F -- http://mail.python.org/mailman/listinfo/python-list
Re: What's the best way to wrap a whole script in try..except?
In article [EMAIL PROTECTED], Hari Sekhon wrote: I want to wrap a whole script in try ... except. What is the best way of doing this? You could do this maybe: import sys def excepthook(exc_type, exc_value, tb): import modules_needed_to_notify_exception ... sys.excepthook = excepthook import modules_needed_by_script ... -- http://mail.python.org/mailman/listinfo/python-list
Re: What's the best way to wrap a whole script in try..except?
Hari Sekhon wrote: I want to wrap a whole script in try ... except. What is the best way of doing this? Consider the following: - try: import modules CODE def notifyme(traceback): code to tell me there is a problem except Exception, traceback: notifyme(traceback) Would this code not work because if any part of CODE encounters an exception then it won't reach the notifyme() function definition and therefore the whole thing won't work and I won't get notified when a traceback occurs, in fact the call to notifyme() under except will itself probably trace back as well! Yes. Do I have to instead do: import a couple of modules def notifyme(): code to tell me there is a problem try: CODE except Exception, traceback: notifyme(traceback) Would work, but... How you you handle this? I don't put the main logic at the top level - I use a main() function. import some modules def notifyme(e): # code here... def main(*args): try: # code here return 0 except Exception, e: notifyme(e) return some-non-zero-error-code if __name__ == '__main__': import sys sys.exit(main(*sys.argv)) -- bruno desthuilliers python -c print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in '[EMAIL PROTECTED]'.split('@')]) -- http://mail.python.org/mailman/listinfo/python-list
Re: difference between import from mod.func() and x=mod.func()
I take it that it's not worth listening to that tutorial and just using good old import from, which I suspect is better anyway since it imports less...uneducated premature optimisation - I take it this is insulting a that programmer's progexuality...! import from it is then unless anybody has anything else to say on the matter.ThanksHariOn 20/06/06, Fredrik Lundh [EMAIL PROTECTED] wrote: Hari Sekhon wrote: What is the difference in terms of efficiency and speed between from os import path and import os path=os.paththe only difference is that the former only sets the path variable, while the latter leaves both os and path in your namespace. I would think that the import from would be better, just curious since I read somewhere on the web, some guy's code tutorial where he did the latter and said it was for efficiency/speed.sounds like uneducated premature optimization to me./F-- http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list
Re: Search substring in a string and get index of all occurances
Nico Grubert wrote: I would like to search for a substring in a string and get the index of all occurances. mystring = 'John has a really nice powerbook.' substr = ' ' # space I would like to get this list: [4, 8, 10, 17, 22] the find and index methods take an optional start argument, so the obvious way to do this is to use a simple loop; e.g. result = []; pos = -1 try: while 1: pos = mystring.index(substr, pos+1) result.append(pos) except ValueError: pass # done if you prefer one-liners, you can use the RE engine instead: result = [m.start() for m in re.finditer(re.escape(substr), mystring)] this has a much higher setup overhead, but can be faster than the loop form for some kinds of data (at least in 2.4 and earlier). ...and if you're going to look for the same substring a lot, you can factor out the escape/compile step: substr_scanner = re.compile(re.escape(substr)).finditer result = [m.start() for m in substr_scanner(mystring)] if you're not 100% sure you need all the matches later on, you can use a generator expression instead of the list comprehension: result = (m.start() for m in re.finditer(re.escape(substr), mystring)) ... for pos in result: ... if pos 1000: break # won't need the rest hope this helps! /F -- http://mail.python.org/mailman/listinfo/python-list
Re: WinPops
If you were going to do this you may as well just do something likeif sys.platform='win32': os.system('net send somemachine somemessage')elif sys.platform[:5]='linux' os.system('smblcient -M machine etc...') This would be more portable and simpler than the alternatives I've seen. It would be better if there was just a cross platform library for this protocol so you could justimport winpopwinpop.send (host,message)Too much to ask?HariOn 01/06/06, Peter Gsellmann [EMAIL PROTECTED] wrote:Roger Upole wrote: Hari Sekhon [EMAIL PROTECTED] wrote in message news:[EMAIL PROTECTED] Hi, Is there a way of sending winpops (Windows Pop-Up / Net Send messages) in python? Perhaps some library or something that I can use under both Windows and Linux? Hari On Windows, you can use win32net.NetMessageBufferSend . RogerOn Linux, i use the smbclient binary:from subprocess import *q=Popen(['smbclient','-M','maggy'],stdin=PIPE)q.stdin.write('hello!')q.stdin.close()q.wait ()Peter--http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list
Re: wxStyledTextCtrl and sql syntax highlightning
Hi. Thanks it works now .. i must reset the default styles with StyleClearAll and then set the styles apropriate again. Is there a way that the keyword list isn't case sensitive, as sql isn't. reg, Pierre jean-michel bain-cornu wrote: I have the following: self.__m_styled_text_ctrl = wxPython.stc.wxStyledTextCtrl( self, wx.NewId(), style=wxPython.wx.wxNO_FULL_REPAINT_ON_RESIZE) self.__m_styled_text_ctrl.SetLexer(wxPython.stc.wxSTC_LEX_SQL) self.__m_styled_text_ctrl.SetProperty(fold, 1) self.__m_styled_text_ctrl.SetMargins(0,0) self.__m_styled_text_ctrl.SetKeyWords(0, SQL_KEYWORDS) Hi Pierre, I'd like to do some tests with your stuff, but I'd appreciate to have a working sample. Would you like to post it ? Regards, jm -- http://mail.python.org/mailman/listinfo/python-list
Re: memory error with zipfile module
On 20/05/06, Bruno Desthuilliers [EMAIL PROTECTED] wrote: Roger Miller a écrit : The basic problem is that the zipfile interface only reads and writes whole files, so it may perform poorly or fail on huge files. At one time I implemented a patch to allow reading files in chunks. However I believe that the current interface has too many problems to solve by incremental patching,Yeps, that was the general tone of some thread on python-dev. And fromwhat I saw of the source code, it may effectively not be the cleanest part of the stdlib. But what, it does what it was written for at first :provide working support for zipped packages. and that a zipfile2 module is probably warranted. (Is anyone working on this?) Seems like Bob Ippolito was on the rank, but I guess you'll get betteranswers on python-dev. In the meantime I think the best solution is often to just run an external zip/unzip utility to do the heavy lifting. Indeed !-)But while having zip/unzip installed OOTB on a unix-like system is closeto warrented, it may not be the case on Windows.-- http://mail.python.org/mailman/listinfo/python-listShame, I would like to try to improve this but seeing as Roger Miller has already submitted a patch I don't know how much I can do for this. In the end I resorted to using an external zip utility via os.system().I'll be interested to know if there is any work done on improving this as I'm in favour of native python usage, rather than using os.system() and relying on the operating system having a zip command, which I'm not convinced is the case on all windows machines, and also, I'm sure gentoo installs don't have zip by default, since I had to emerge it on a server for this script to work. Is it me or is having to use os.system() all the time symtomatic of a deficiency/things which are missing from python as a language? Not that I'm complaining, I'm just curious... I'm a fledgeling programmer so I don't mind being gently corrected by any veterans around. Hari -- http://mail.python.org/mailman/listinfo/python-list
embedded Python calling app via COM
I have a C++ app which fires up a Python script using C API calls. That script operates the app via Automation calls, like this: from win32com.client import * from mywrapper import * myapp = Application() myapp.Visible = True mydoc = myapp.Documents.Open(...) My problem is to make sure the instance of myapp is the same one I am calling from. The above code starts up a new instance of the app, which is not what I want. In other words I need something like a GetObject instead of a CreateObject, and I need some way to identify the calling app so I can tell GetObject about it. Before I go and do something hack, I thought I'd see if anyone else is in this situation and knows a good way to do the job. -- Jim -- http://mail.python.org/mailman/listinfo/python-list
Re: What is Expressiveness in a Computer Language
Andreas Rossberg schrieb: Rob Thorpe wrote: Hmm. You're right, ML is no-where in my definition since it has no variables. Um, it has. Mind you, it has no /mutable/ variables, but that was not even what I was talking about. Indeed. A (possibly nonexhaustive) list of program entities that (can) have type would comprise of mutable variables, immutable variables (i.e. constants and parameter names), and functions resp. their results. Regards, Jo -- http://mail.python.org/mailman/listinfo/python-list
Re: What is Expressiveness in a Computer Language
Matthias Blume schrieb: Joachim Durchholz [EMAIL PROTECTED] writes: Matthias Blume schrieb: Perhaps better: A language is statically typed if its definition includes (or ever better: is based on) a static type system, i.e., a static semantics with typing judgments derivable by typing rules. Usually typing judgmets associate program phrases (expressions) with types given a typing environment. This is defining a single term (statically typed) using three undefined terms (typing judgements, typing rules, typing environment). This was not meant to be a rigorous definition. Rigorous or not, introducing additional undefined terms doesn't help with explaining a term. Also, I'm not going to repeat the textbook definitions for those three standard terms here. These terms certainly aren't standard for Perl, Python, Java, or Lisp, and they aren't even standard for topics covered on comp.lang.functional (which includes dynamically-typed languages after all). Regards, Jo -- http://mail.python.org/mailman/listinfo/python-list
Re: How to truncate/round-off decimal numbers?
Nick Maclaren wrote: | just a thought: if you *always* work with floats with two decimals, | you are in fact working with integers, but you represent them as a | floats - confusing for the internal representation. No, you aren't - you are working with fixed-point Nick, your answer has so many layers, I'll try to explain how I think :-D 1) if you use integers you can think of them as having one part bigger than 100 and one part smaller than 100, like so: a = 11122 (a/100,a%100) (111, 22) Here the output 111,22 looks like something else than an integer, but this is just a matter of representation. a *is* an integer, but we represent it *as if it was* a decimal number. (Compare with (minutes,seconds) or (euro,cents) or (feet,inch) or any other arbitrary position system) 2) If we use floats with two decimals b = 222.33 b 222.330001 they look like fix-point numbers (I had to look it up http://en.wikipedia.org/wiki/Fixed-point :-D) but python stores it (correct me if I am wrong) as a float (or double or quad or whatever). If we want to work with fix-point aritmetics we have to invent new functions to do most math. 3) Most decimal numbers cannot be stored exactly as floats - that is why b gave the ugly print. But some can, f.x quart = 0.25 quart 0.25 quart translates to a finite decimal number in binary (0.01 I think). The point is: representing should-be integers as floats makes you loose precision (negligable probalby but still...). 4) | So why not work with int(float * 100) instead? This way you only have | to take care of roundoffs etc when dividing. And multiplying, and calling most mathematical functions. You are correct of course. My mistake. But, the multiplication is exact before you start rounding off - I wont start counting ordos for int*int vs. float*float, but it could have some advantages a 11122 b 22233 a*b 247275426 (a*b/1,a*b%1) (24727, 5426) On the other hand you will quickly loose accuracy if you perform multiple multiplications or divisions or use other mathematical functions. 5) So, when could this way of thinking be useful? Well, rarely, but if you only add/subtract decimals and/or multiply decimals with whole numbers or if you want to use some non-metric system to do scientific stuff (compute square feet when having (feet1,inch1) * (feet2,inch2) assuming that inches are atomic.) This could of course be extended to (feet, inch, quarter_of_afoot, sixteeth_of_a_foot) if you'd like - it is all a matter of representation. Regards, Per It is a gift. A gift to the foes of 'the Terrorists'. Why not use this 'terrorism'? Long has my father, 'George Bush Sr', kept the forces of 'the terrorists' at bay. By the blood of our people are your lands kept safe. Give 'the land of the brave' the weapon of the enemy. Let us use it against him. -- http://mail.python.org/mailman/listinfo/python-list
Re: What is Expressiveness in a Computer Language
Pascal Costanza schrieb: (It's really important to understand that the idea is to use this for deployed programs - albeit hopefully in a more structured fashion - and not only for debugging. The example I have given is an extreme one that you would probably not use as such in a real-world setting, but it shows that there is a boundary beyond which static type systems cannot be used in a meaningful way anymore, at least as far as I can tell.) As soon as the running program can be updated, the distinction between static (compile time) and dynamic (run time) blurs. You can still erect a definition for such a case, but it needs to refer to the update process, and hence becomes language-specific. In other words, language-independent definitions of dynamic and static typing won't give any meaningful results for such languages. I'd say it makes more sense to talk about what advantages of static vs. dynamic typing can be applied in such a situation. E.g. one interesting topic would be the change in trade-offs: making sure that a type error cannot occur becomes much more difficult (particularly if the set of available types can change during an update), so static typing starts to lose some of its appeal; OTOH a good type system can give you a lot of guarantees even in such a situation, even if it might have to revert to the occasional run-time type check, so static checking still has its merits. Regards, Jo -- http://mail.python.org/mailman/listinfo/python-list
Re: What's the best way to wrap a whole script in try..except?
Jon Ribbens wrote: In article [EMAIL PROTECTED], Hari Sekhon wrote: I want to wrap a whole script in try ... except. What is the best way of doing this? You could do this maybe: import sys def excepthook(exc_type, exc_value, tb): import modules_needed_to_notify_exception ... sys.excepthook = excepthook import modules_needed_by_script ... I've been trying this out and your method is by far the best I've seen. This is overriding the default exception handler. I don't know the deep magic yet but it works nicely. Thanks! -- http://mail.python.org/mailman/listinfo/python-list
Re: What is Expressiveness in a Computer Language
Anton van Straaten wrote: But a program as seen by the programmer has types: the programmer performs (static) type inference when reasoning about the program, and debugs those inferences when debugging the program, finally ending up with a program which has a perfectly good type scheme. It's may be messy compared to say an HM type scheme, and it's usually not proved to be perfect, but that again is an orthogonal issue. I like this way of looking at it. -- chris -- http://mail.python.org/mailman/listinfo/python-list
Re: What is Expressiveness in a Computer Language
Darren New wrote: [me:] Personally, I would be quite happy to go there -- I dislike the idea that a value has a specific inherent type. Interestingly, Ada defines a type as a collection of values. It works quite well, when one consistantly applies the definition. I have never been very happy with relating type to sets of values (objects, whatever). I'm not saying that it's formally wrong (but see below), but it doesn't fit with my intuitions very well -- most noticeably in that the sets are generally unbounded so you have to ask where the (intentional) definitions come from. Two other notions of what type means might be interesting, both come from attempts to create type-inference mechanisms for Smalltalk or related languages. Clearly one can't use the set-of-values approach for these purposes ;-) One approach takes type to mean set of classes the other takes a finer-grained approach and takes it to mean set of selectors (where selector is Smalltalk for name of a method -- or, more accurately, name of a message). But I would rather leave the question of what a type is open, and consider that to be merely part of the type system. For instance the hypothetical nullability analysis type system I mentioned might have only three types NULLABLE, ALWAYSNULL, and NEVERNULL. It's worth noting, too, that (in some sense) the type of an object can change over time[*]. That can be handled readily (if not perfectly) in the informal internal type system(s) which programmers run in their heads (pace the very sensible post by Anton van Straaten today in this thread -- several branches away), but cannot be handled by a type system based on sets-of-values (and is also a counter-example to the idea that the dynamic type of an object/value can be identified with its tag). ([*] if the set of operations in which it can legitimately partake changes. That can happen explicitly in Smalltalk (using DNU proxies for instance if the proxied object changes, or even using #becomeA:), but can happen anyway in less free languages -- the State Pattern for instance, or even (arguably) in the difference between an empty list and a non-empty list). -- chris -- http://mail.python.org/mailman/listinfo/python-list
Re: What is Expressiveness in a Computer Language
David Hopwood wrote: When people talk about types being associated with values in a latently typed or dynamically typed language, they really mean *tag*, not type. I don't think that's true. Maybe /some/ people do confuse the two, but I am certainly a counter-example ;-) The tag (if any) is part of the runtime machinery (or, if not, then I don't understand what you mean by the word), and while that is certainly a reasonably approximation to the type of the object/value, it is only an approximation, and -- what's more -- is only an approximation to the type as yielded by one specific (albeit abstract, maybe even hypothetical) type system. If I send #someMessage to a proxy object which has not had its referent set (and assuming the default value, presumably some variant of nil, does not understand #someMessage), then that's just as much a type error as sending #someMessage to a variable holding a nil value. If I then assign the referent of the proxy to some object which does understand #someMessage, then it is not a type error to send #someMessage to the proxy. So the type has changed, but nothing in the tag system of the language implementation has changed. -- chris -- http://mail.python.org/mailman/listinfo/python-list
Re: What is Expressiveness in a Computer Language
Chris Smith wrote: It would be interesting to see what a language designed specifically to support user-defined, pluggable, and perhaps composable, type systems would look like. [...] You mean in terms of a practical programming language? If not, then lambda calculus is used in precisely this way for the static sense of types. Good point. I was actually thinking about what a practical language might look like, but -- hell -- why not start with theory for once ? ;-) I think Marshall got this one right. The two are accomplishing different things. In one case (the dynamic case) I am safeguarding against negative consequences of the program behaving in certain non- sensical ways. In the other (the static case) I am proving theorems about the impossibility of this non-sensical behavior ever happening. And so conflating the two notions of type (-checking) as a kind of category error ? If so then I see what you mean, and it's a useful distinction, but am unconvinced that it's /so/ helpful a perspective that I would want to exclude other perspectives which /do/ see the two as more-or-less trivial variants on the same underlying idea. I acknowledge those questions. I believe they are valid. I don't know the answers. As an intuitive judgement call, I tend to think that knowing the correctness of these things is of considerable benefit to software development, because it means that I don't have as much to think about at any one point in time. I can validly make more assumptions about my code and KNOW that they are correct. I don't have to trace as many things back to their original source in a different module of code, or hunt down as much documentation. I also, as a practical matter, get development tools that are more powerful. Agreed that these are all positive benefits of static declarative (more or less) type systems. But then (slightly tongue-in-cheek) shouldn't you be agitating for Java's type system to be stripped out (we hardly /need/ it since the JVM does latent typing anyway), leaving the field free for more powerful or more specialised static analysis ? (Whether it's possible to create the same for a dynamically typed language is a potentially interesting discussion; but as a practical matter, no matter what's possible, I still have better development tools for Java than for JavaScript when I do my job.) Acknowledged. Contrary-wise, I have better development tools in Smalltalk than I ever expect to have in Java -- in part (only in part) because of the late binding in Smalltalk and it's lack of insistence on declared types from an arbitrarily chosen type system. On the other hand, I do like proving theorems, which means I am interested in type theory; if that type theory relates to programming, then that's great! That's probably not the thing to say to ensure that my thoughts are relevant to the software development industry, but it's nevertheless the truth. Saying it will probably win you more friends in comp.lang.functional than it looses in comp.lang.java.programmer ;-) -- chris -- http://mail.python.org/mailman/listinfo/python-list
Re: Iteration over recursion?
[Kay Schluehr] You might use a separate prime generator to produce prime factors. The factorize algorithm becomes quite simple and configurable by prime generators. Alas, yours was _so_ simple that it always takes time proportional to the largest prime factor of n (which may be n) instead of worst-case time proportional to sqrt(n). Repair that, and it's not quite so simple anymore. The speed of the sieve generator would also benefit a lot by never looking at even integers, beyond an initial yield 2 ... the OP said he was looking for speed more than elegance, and they're not good buddies here ;-) def eratosthenes(): memo = {} q = 2 while True: p = memo.pop(q, None) if p is None: yield q memo[q*q] = q else: x = p + q while x in memo: x += p memo[x] = p q+=1 def factorize(n, sieve = eratosthenes): if n = 1: return [n] factors = [] primes = sieve() for q in primes: while n % q == 0: factors.append(q) n //= q if n == 1: return factors At _some_ point you might think that's bound to be faster than only skipping multiples of 2 and 3, because it does fewer divisions. But to get to a particular prime p, the sieve there has to go around its outer loop about 3x as often as the trial() function goes around its inner loop, and grows a dict with about p/ln(p) entries (while the trial() function's memory use is constant), and those aren't free. Applied to 991**2 (constructed so that both functions take time proportional to sqrt(n)), on my box the factorize() function took 4x longer than trial() (approximately 16 seconds versus 4). Trial division isn't practical for such large inputs, but I picked the square of a large prime to give factorize() maximum advantage in skipping division attempts (by the time we get to a prime p, factorize() tries about p/ln(p) divisions, while trial() does about p/3; so trial() does about ln(p)/3 times as many divisions as factorize(): the larger the p we need, the larger that _factor_ gets). Alas, it appears that made the dict so big that cache faults on dict accesses more than wiped out the division advantage. At the smaller 83**2, factorize() took only about 3.6x longer, despite losing some of its relative division advantage. In short, it's never what you think it is ;-) -- http://mail.python.org/mailman/listinfo/python-list
Re: What's the best way to wrap a whole script in try..except?
Jon Ribbens wrote: In article [EMAIL PROTECTED], Hari Sekhon wrote: I want to wrap a whole script in try ... except. What is the best way of doing this? You could do this maybe: import sys def excepthook(exc_type, exc_value, tb): import modules_needed_to_notify_exception ... sys.excepthook = excepthook import modules_needed_by_script ... having tested this more, I was worried about a recursive call to exception should an exception be raised inside the function but luckily python deals and give you a double traceback. batteries included indeed. Thanks again Hari -- http://mail.python.org/mailman/listinfo/python-list
Re: Search substring in a string and get index of all occurances
Another variant, I feel this one more natural as it doesn't contain a C-looking infinite loop (also I made it a generator but this is not the topic). In [160]: def indices(s, subs) : .: last = 0 .: for ind, part in in enumerate(s.split(subs)[:-1]) : .: yield len(part) + last .: last = len(part) + last + len(subs) .: .: In [161]: list(indices('John has a really nice powerbook.', ' ')) Out[161]: [4, 8, 10, 17, 22] In [162]: list(indices('John has a really nice powerbook. John is my friend', 'John')) Out[162]: [0, 34] In [163]: mystring, substr Out[163]: ('John has a really nice powerbook. John is my friend', 'John') In [164]: for i in list(indices(mystring, substr)) : print mystring[i:i+len(substr)] .: John John Actually it's even more efficient than Lundh's one for smaller strings (less than 1000 characters on my box) and slow down as strings go wider (slowly, seems to be a logarithmic progression) due to the split call resulting in creation of a new list. I'd love str implement a xsplit(sub, start, end) method, so I could have wrote : enumerate(s.xsplit(subs, 0, -1)). Le Mercredi 21 Juin 2006 10:28, Nico Grubert a écrit : Hi there, I would like to search for a substring in a string and get the index of all occurances. mystring = 'John has a really nice powerbook.' substr = ' ' # space I would like to get this list: [4, 8, 10, 17, 22] How can I do that without using for i in mystring which might be expensive for large strings? Thanks in advance, Nico -- _ Maric Michaud _ Aristote - www.aristote.info 3 place des tapis 69004 Lyon Tel: +33 426 880 097 -- http://mail.python.org/mailman/listinfo/python-list
Re: help() on stdout.closed
On 2006-06-21, Fredrik Lundh [EMAIL PROTECTED] wrote: have you tried things like [...] I have now. I'm not sure what the results are supposed to tell me, but I am not going to press the issue. Suppose I had no idea what sys.stdout.closed was and wanted to find out. Where would I look it up? Pekka -- http://mail.python.org/mailman/listinfo/python-list
Re: help() on stdout.closed
Pekka Karjalainen wrote: Suppose I had no idea what sys.stdout.closed was and wanted to find out. Where would I look it up? help(sys.stdout) ... | closed = attribute 'closed' of 'file' objects | True if the file is closed ... in case anyone feels like hacking, support for something like help(sys.stdout, closed) might be useful, I think. /F -- http://mail.python.org/mailman/listinfo/python-list
Re: help() on stdout.closed
In [EMAIL PROTECTED], Pekka Karjalainen wrote: Suppose I had no idea what sys.stdout.closed was and wanted to find out. Where would I look it up? `sys.stdout` is a file (like) object: http://docs.python.org/lib/bltin-file-objects.html Ciao, Marc 'BlackJack' Rintsch -- http://mail.python.org/mailman/listinfo/python-list
Re: Iteration over recursion?
I've been testing my recursive function against your iterative function, and yours is generally a quite steady 50% faster on factorizing 2**n +/- 1 for 0 n 60. I think that, for a challenge, I'll try to make a recursive function that matche or beats the iterative function -- it's worth the experiment! Cheers, MTD -- http://mail.python.org/mailman/listinfo/python-list
Re: Search substring in a string and get index of all occurances
Maric Michaud wrote: Another variant, I feel this one more natural as it doesn't contain a C-looking infinite loop doing things in a convoluted way because you think that non-infinite while- loops are not natural? you can get help for that, you know ;-) Actually it's even more efficient than Lundh's one for smaller strings (less than 1000 characters on my box) and slow down as strings go wider (slowly, seems to be a logarithmic progression) due to the split call resulting in creation of a new list. and a potentially large number of new strings. there's a lot of string copying going on in there... /F -- http://mail.python.org/mailman/listinfo/python-list
Re: What is Expressiveness in a Computer Language
So, will y'all just switch from using dynamically typed to latently typed, and stop talking about any real programs in real programming languages as being untyped or type-free, unless you really are talking about situations in which human reasoning doesn't come into play? I think you'll find it'll help to reason more clearly about this whole issue. I agree with most of what you say except regarding untyped. In machine language or most assembly the type of a variable is something held only in the mind of the programmer writing it, and nowhere else. In latently typed languages though the programmer can ask what they type of a particular value is. There is a vast difference to writing code in the latter kind of language to writing code in assembly. I would suggest that at least assembly should be referred to as untyped. -- http://mail.python.org/mailman/listinfo/python-list
Re: Search substring in a string and get index of all occurances
Maric Michaud wrote: Actually it's even more efficient than Lundh's effbot's solution finds overlapping occurrences, whereas your solution finds non-overlapping occurrences. So efficiency comparisons are not valid. e.g: indices( 'a', 'aa' ) your solution gives: 0,2 effbots's solution: 0,1,2,3 Regards Sreeram signature.asc Description: OpenPGP digital signature -- http://mail.python.org/mailman/listinfo/python-list
urllib2 OpenerDirector question on usage.
Hello all, I am using urllib2 as a part of a web testing tool. One of the things I am testing is the effect of two different people perforing the same actions on the website - do they interfer with each other or not. So to emulate this, I essentially have the following function: def get_opener(): policy = cookielib.DefaultCookiePolicy(rfc2965=True) cj = cookielib.CookieJar(policy) return urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) Now am I right in thinking that since I am creating a separate CookieJar for each opener, then creating two openers and using one for each hypothetical user will achieve this effect - i.e. sessions will be separate from each other in the app, since the openers will return different session cookies back to the server. Cheers, Ant... -- http://mail.python.org/mailman/listinfo/python-list
Re: Search substring in a string and get index of all occurances
I would like to search for a substring in a string and get the index of all occurances. mystring = 'John has a really nice powerbook.' substr = ' ' # space I would like to get this list: [4, 8, 10, 17, 22] How can I do that without using for i in mystring which might be expensive for large strings? mystring = 'John has a really nice powerbook.' substr = ' ' indicies = [i for i in xrange(len(mystring)) if mystring.startswith(substr, i)] indicies [4, 8, 10, 17, 22] is my preferred way of doing this. Theoretically, it doesn't involve copying any bits of the string, as startswith(substring, offset) *should* be smart enough to do the check internally without copying pieces of mystring for comparison, just to return whether a submatch starts there. Whether it *does* do that is another matter for the higher python powers. It also uses xrange which shouldn't create a temporary array of indicies, but rather use an iteratable sequence generator. It should work for finding all 3 instances of aba' in abababa as well, another common query of a similar form here on the list. -tkc -- http://mail.python.org/mailman/listinfo/python-list
Re: Segmentation fault only on Iinux
Unfortunately (i guess), I am not doing any XML. However, I am taking the previous suggestion of putting print lines in every other line of my code and then seeing where it crashes. Hopefully, that will solve the problem. thanks for the suggestions everybody -- Kiran Frank Millman wrote: Kiran wrote: Hello All, In my program, I have a main thread which is the GUI (wxPython) and then a thread which goes and reads data from a socket. The reason this is in a different thread is because the data might take some time to come back, and I want to have the GUI to be responsive during this wait. When I run my program in Linux, a segmentation fault occurs. When I run it in Windows XP, it works just fine. Are you doing any xml processing? If so, it may be the same problem as described in this recent post - http://tinyurl.com/l3nr7 Frank Millman -- http://mail.python.org/mailman/listinfo/python-list
Re: What's the best way to wrap a whole script in try..except?
Hari Sekhon wrote: Jon Ribbens wrote: In article [EMAIL PROTECTED], Hari Sekhon wrote: I want to wrap a whole script in try ... except. What is the best way of doing this? You could do this maybe: import sys def excepthook(exc_type, exc_value, tb): import modules_needed_to_notify_exception ... sys.excepthook = excepthook import modules_needed_by_script ... having tested this more, I was worried about a recursive call to exception should an exception be raised inside the function but luckily python deals and give you a double traceback. batteries included indeed. Thanks again Hari I see that the exceptionhook is handed 3 things, the name of the error, the explanation, and the traceback object. Does anybody know how I can get the linenumber of the error the way it does normally, since this is very useful info when debugging. I think I need the traceback module but I can't see how to extract the extra info from the traceback object passed to excepthook. -- http://mail.python.org/mailman/listinfo/python-list
very strange bug coercing to Unicode: need string or buffer, int found
i truly didn't understand this error :Traceback (most recent call last): File D:\Programmation\FrancePaquet\FrancePaquet.py, line 77, in ? cabtri = zz + chiffrescabtri + clefcTypeError: coercing to Unicode: need string or buffer, int found if someone could help me i will be glad, this program worked yesterday.RegardsBussierehere is my program :import fileinput,stringdef calculclef(nombre): nombre2 = int(nombre)*10 nombre = str(nombre2) taille = len(nombre) compteur = 0 nombrepair = 0 nombreimpair = 0 compteur = taille - 2 while compteur != -1: print 'nombre :' print nombre[compteur] + '\n' if compteur%2 : nombrepair = nombrepair + int(nombre[compteur]) print 'suite pair %d' % nombrepair else: nombreimpair = nombreimpair + int(nombre[compteur]) print 'suite impair %d' % nombreimpair print compteur = compteur - 1 print nombreimpair print nombrepair clef = nombrepair*3+nombreimpair clef = 10-(clef%10) if clef == 10: clef = 0 return clefcompteclient = 8150souscompteclient = 03codeaffranc = 080partielibre = 142391print(LES CODES POSTAUX DOIVENT ETRE A LA FIN DU FICHIER CSV ! \n) fichA=raw_input(Entrez le nom du fichier d'entree : )print (\n)fichC=raw_input(Entrez le nom du fichier de sortie : )print (\n)debutplage = raw_input(Entrez le numero du debut de plage : ) print (\n)finplage = raw_input(Entrez le numero de fin de plage : )print (\n) nbredeplage = int(debutplage) - int(finplage)fiA=open(fichA,r) fiC=open(fichC,w)print calculclef(debutplage)compteur = 0debutplagewhile 1: fileencoding = latin1 ligneA=fiA.readline() ligneA = ligneA.decode(fileencoding) if ligneA == : break if ligneA != : stramettre = ligneA if compteur != 0: taille = len(ligneA) codepostal = ligneA[taille-5] + ligneA[taille-4] + ligneA[taille-3] + ligneA[taille-2]+ ligneA[taille-1] print codepostal clefb = calculclef(debutplage) clefb = str(clefb) print clefb num = str(debutplage) cabsuivis = 8w+ num + clefb stramettre = stramettre + ;* + cabsuivis + * chiffrescabtri = clefb + codepostal + compteclient + souscompteclient + codeaffranc + partielibre clefc = calculclef(chiffrescabtri) cabtri = zz + chiffrescabtri + clefc stramettre = stramettre + ;* + cabtri + * fiC.write(stramettre) compteur += 1 print compteur, \nprint FINITfiA.close()fiC.close() -- http://mail.python.org/mailman/listinfo/python-list
Re: What is Expressiveness in a Computer Language
Chris Uppal wrote: I have never been very happy with relating type to sets of values (objects, whatever). Indeed, this view is much too narrow. In particular, it cannot explain abstract types, which is *the* central aspect of decent type systems. There were papers observing this as early as 1970. A type system should rather be seen as a logic, stating invariants about a program. This can include operations supported by values of certain types, as well as more advanced properties, e.g. whether something can cause a side-effect, can diverge, can have a deadlock, etc. (There are also theoretic problems with the types-as-sets view, because sufficiently rich type systems can no longer be given direct models in standard set theory. For example, first-class polymorphism would run afoul the axiom of foundation.) It's worth noting, too, that (in some sense) the type of an object can change over time[*]. No. Since a type expresses invariants, this is precisely what may *not* happen. If certain properties of an object may change then the type of the object has to reflect that possibility. Otherwise you cannot legitimately call it a type. Taking your example of an uninitialised reference, its type is neither reference to nil nor reference to object that understands message X, it is in fact the union of both (at least). And indeed, languages with slightly more advanced type systems make things like this very explicit (in ML for example you have the option type for that purpose). - Andreas -- http://mail.python.org/mailman/listinfo/python-list
Re: Search substring in a string and get index of all occurances
Maric Michaud: I'd love str implement a xsplit(sub, start, end) method, so I could have wrote : enumerate(s.xsplit(subs, 0, -1)). Some of such str.x-methods (or str.i-methods, etc) can be useful (especially for Py3.0), but keeping APIs simple and compact is very important, otherwise when you program you have to waste some time looking things up in the manuals. Such lists of methods are a compromise between (among other things) completeness and compactness. Bye, bearophile -- http://mail.python.org/mailman/listinfo/python-list
Re: What is Expressiveness in a Computer Language
Joachim Durchholz wrote: Pascal Costanza schrieb: (It's really important to understand that the idea is to use this for deployed programs - albeit hopefully in a more structured fashion - and not only for debugging. The example I have given is an extreme one that you would probably not use as such in a real-world setting, but it shows that there is a boundary beyond which static type systems cannot be used in a meaningful way anymore, at least as far as I can tell.) As soon as the running program can be updated, the distinction between static (compile time) and dynamic (run time) blurs. You can still erect a definition for such a case, but it needs to refer to the update process, and hence becomes language-specific. In other words, language-independent definitions of dynamic and static typing won't give any meaningful results for such languages. I'd say it makes more sense to talk about what advantages of static vs. dynamic typing can be applied in such a situation. E.g. one interesting topic would be the change in trade-offs: making sure that a type error cannot occur becomes much more difficult (particularly if the set of available types can change during an update), so static typing starts to lose some of its appeal; OTOH a good type system can give you a lot of guarantees even in such a situation, even if it might have to revert to the occasional run-time type check, so static checking still has its merits. I am not opposed to this view. The two examples I have given for things that are impossible in static vs. dynamic type systems were intentionally extreme to make the point that you have to make a choice, that you cannot just blindly throw (instances of) both approaches together. Static type systems potentially change the semantics of a language in ways that cannot be captured by dynamically typed languages anymore, and vice versa. There is, of course, room for research on performing static type checks in a running system, for example immediately after or before a software update is applied, or maybe even on separate type checking on software increments such that guarantees for their composition can be derived. However, I am not aware of a lot of work in that area, maybe because the static typing community is too focused on compile-time issues. Personally, I also don't think that's the most interesting issue in that area, but that's of course only a subjective opinion. Pascal -- 3rd European Lisp Workshop July 3 - Nantes, France - co-located with ECOOP 2006 http://lisp-ecoop06.bknr.net/ -- http://mail.python.org/mailman/listinfo/python-list
Re: Search substring in a string and get index of all occurances
Le Mercredi 21 Juin 2006 14:01, Fredrik Lundh a écrit : Another variant, I feel this one more natural as it doesn't contain a C-looking infinite loop doing things in a convoluted way because you think that non-infinite while- loops are not natural? you can get help for that, you know ;-) Hehe, I was looking for a more pythonic solution (one like Tim gave), but not convinced. Sure these loops are common and natural. They're so natural I wonder why I avoid this kind of code : for i in lst : ... if continue_condition : continue ... if break_condition : break ... Maybe I'll vote for a goto statment for Python3000... Really I prefer code like this, when it's possible : for i in [ e for e in lst[:first_breaking_elt] if not e in continue_condition ] : and a potentially large number of new strings. there's a lot of string copying going on in there... Oh, yes, you're right, a xsplit operator would be of minor help as it will copy all the string piece by piece. Le Mercredi 21 Juin 2006 14:27, K.S.Sreeram a écrit : Actually it's even more efficient than Lundh's effbot's solution finds overlapping occurrences, whereas your solution finds non-overlapping occurrences. Missed that. So efficiency comparisons are not valid. Right, but anyway, the problem is more about memory usage. Regards, -- _ Maric Michaud _ Aristote - www.aristote.info 3 place des tapis 69004 Lyon Tel: +33 426 880 097 -- http://mail.python.org/mailman/listinfo/python-list
Delivery reports about your e-mail
-This message contained a computer virus which has been detected and deleted by the BT Business Email Virus Filter to avoid infecting your computer. - -You may wish to contact the sender of this email requesting they remove any virus infection from their PC before re-sending the email and attachment to you, virus-free. - -Attachment: text.scr -Problem: virus infected W32/MyDoom-O -Action taken: deleted - -Any original message will appear as an attachment; if this is blank or absent no text was supplied.The original message was received at Wed, 21 Jun 2006 14:12:13 +0100 from iee.org.uk [71.231.246.114] - The following addresses had permanent fatal errors - python-list@python.org VIRUS WARNING Message (from c2bthomr09.btconnect.com) The virus W32/MyDoom-O was detected in email attachment [2.2] text.scr. The infected attachment has been deleted. -- http://mail.python.org/mailman/listinfo/python-list
Re: need all python dialog equivalent
[EMAIL PROTECTED] wrote: dialog binary is 110 KB. Won't it fit ? missing library. I have ncurses and newt and dialog seems to require something called ncursesw. I've been trying to find the Python newt module as well and that seems to be as invisible as the creature it's named after. -- http://mail.python.org/mailman/listinfo/python-list
How to override the doc of an object instance.
Hi, I'm not really sure about the right terminology, but here is my question, boiled down to this code: class widget (object): This is a widget. def __init__(self): self._x = None def fget(self): return self._x def fset(self, value): self._x = value print self._x, 'Ok' x = property(fget = fget, fset = fset, doc= It prints) print widget.x.__doc__ w = widget() w.x = 5 print w.x.__doc__ I would like the last statement to print the doc string that I specified in property, instead of the docstring for an int. The goal is to have ipython print that string with the command w.x? So the user knows what this attribute does, and how he can set it. Is this possible ? Thanks, David Huard -- http://mail.python.org/mailman/listinfo/python-list
Re: need all python dialog equivalent
Miki wrote: Hello Eric, Is there anything like an all Python dialog equivalent floating around? http://www.pythonware.com/library/tkinter/introduction/ I'm sorry. I should have been more explicit. I need a textbased interface such as the ones you would get with curses and dialogue. ---eric -- http://mail.python.org/mailman/listinfo/python-list
Re: very strange bug coercing to Unicode: need string or buffer, int found
bussiere maillist [EMAIL PROTECTED] wrote: --=_Part_118629_1441854.1150895040355 i truly didn't understand this error : Traceback (most recent call last): File D:\Programmation\FrancePaquet\FrancePaquet.py, line 77, in ? cabtri = zz + chiffrescabtri + clefc TypeError: coercing to Unicode: need string or buffer, int found def calculclef(nombre): if clef == 10: clef = 0 return clef clefb = calculclef(debutplage) clefb = str(clefb) print clefb clefc = calculclef(chiffrescabtri) cabtri = zz + chiffrescabtri + clefc Your calculclef function returns an integer. You explitly convert clefb into a string, but you never convert clefc into a string, hence the TypeError. max -- http://mail.python.org/mailman/listinfo/python-list
Re: OS specific command in Python
I have a question on getpass. Since I am a newbie you might find it a little dumb. By using the getpass, are u trying to retrieve the username and password of remote mahcine or local ? Avell Diroll wrote: [EMAIL PROTECTED] wrote: When you connect (via ssh or telnet) to a remote machine, you need to type (manually) your username and your password. Programming that is never easy. This is really eased by the module getpass (std library) : ### import getpass login = getpass.getuser() password = getpass.getpass() ### If the username is different from your system login this can be changed to : ### import getpass login = raw_input('login: ') password = getpass.getpass() ### Python definitely comes with batteries included ! -- http://mail.python.org/mailman/listinfo/python-list
Re: Search substring in a string and get index of all occurances
K.S.Sreeram wrote: effbot's solution finds overlapping occurrences, whereas your solution finds non-overlapping occurrences. So efficiency comparisons are not valid. oops. my bad. here's a fixed version: result = []; pos = 0 try: while 1: pos = mystring.index(substr, pos) result.append(pos) pos += len(substr) except ValueError: pass # done or, if you prefer the generator variant: def finditer(string, substr): pos = 0 index = string.index try: while 1: pos = index(substr, pos) yield pos pos += len(substr) except ValueError: pass # done /F -- http://mail.python.org/mailman/listinfo/python-list
Re: How to override the doc of an object instance.
Le Mercredi 21 Juin 2006 06:50, David Huard a écrit : class widget (object): This is a widget. def __init__(self): self._x = None def fget(self): return self._x def fset(self, value): self._x = value print self._x, 'Ok' x = property(fget = fget, fset = fset, doc= It prints) print widget.x.__doc__ w = widget() w.x = 5 print w.x.__doc__ This is w.__class__.x.__doc__. w.x return the value you put in self._x, say an int, so w.x.__doc__ will print the docstring of int. -- _ Maric Michaud _ Aristote - www.aristote.info 3 place des tapis 69004 Lyon Tel: +33 426 880 097 -- http://mail.python.org/mailman/listinfo/python-list
Re: What is Expressiveness in a Computer Language
Rob Thorpe [EMAIL PROTECTED] writes: Matthias Blume wrote: Rob Thorpe [EMAIL PROTECTED] writes: I think we're discussing this at cross-purposes. In a language like C or another statically typed language there is no information passed with values indicating their type. You seem to be confusing does not have a type with no type information is passed at runtime. Have a look in a C compiler if you don't believe me. Believe me, I have. In a C compiler the compiler has no idea what the values are in the program. It is no different from any other compiler, really. If the compiler sees the literal 1 in a context that demands type int, then it knows perfectly well what value that is. It knows only their type in that it knows the type of the variable they are contained within. Would you agree with that? No it doesn't. Casting reinterprets a value of one type as a value of another type. There is a difference. If I cast an unsigned integer 20 to a signed integer in C on the machine I'm using then the result I will get will not make any sense. Which result are you getting? What does it mean to make sense? Well the right one actually, bad example. But, if I cast an unsigned int 25 to signed I get -1794967296. So, why do you think this does not make sense? And, as this example illustrates, casting in C maps values to values. Depending on the types of the source and the target, a cast might change the underlying representation, or it might leave it the same. But it does produce a value, and the result value is usually not the same as the argument value, even if the representation is the same. Matthias -- http://mail.python.org/mailman/listinfo/python-list
Re: OS specific command in Python
In article [EMAIL PROTECTED], [EMAIL PROTECTED] wrote: So basically, instead of typing in on the command line argument I want to have it in a python program and let it do the action. Try exec() and execfile() from the standard library (IIRC) Ths os.spawn...() functions are likely to be better suited to what he wants to do. ssh [EMAIL PROTECTED] .etc When you connect (via ssh or telnet) to a remote machine, you need to type (manually) your username and your password. Programming that is never easy. Indeed, so it is much easier to use public-key authentication with an unencrypted private key, that way you don't have to type any passwords. See the AUTHORIZED_KEYS FILE FORMAT section of the 'sshd' man page, and the 'ssh-keygen' command. -- http://mail.python.org/mailman/listinfo/python-list
Re: How to override the doc of an object instance.
On Wed, 21 Jun 2006 15:39:02 +0200, Maric Michaud wrote: This is w.__class__.x.__doc__. Thanks, So in order to implement what I want, I should rather consider an ipython hack to print w.__class__.x.__doc__ when it exists, instead of w.x.__doc_ ? Does this makes sense or it will ruin the standard behaviour? David -- http://mail.python.org/mailman/listinfo/python-list
Re: need all python dialog equivalent
On 2006-06-21, Eric S. Johansson [EMAIL PROTECTED] wrote: [EMAIL PROTECTED] wrote: dialog binary is 110 KB. Won't it fit ? missing library. I have ncurses and newt and dialog seems to require something called ncursesw. I've been trying to find the Python newt module as well and that seems to be as invisible as the creature it's named after. The most recent version of newt I've got is at ftp://ftp.visi.com/users/grante/stuff/newt-0.50.tar.gz The python module is called snack -- Grant Edwards grante Yow! Yow! Am I cleansed at yet?! visi.com -- http://mail.python.org/mailman/listinfo/python-list
Re: Psyco performance
Place all the code in a function. Even without psyco you might get somewhat better performances then. And I doubt psyco can optimise code that isn't in a function anyway. Another thing I wasn't considering is that the first call with psyco enabled might be slower. The 2nd time the psyco-compiled function is called is where the speed improvement may be present. With the code at the bottom, I get these results: without psyco = 0.000421282593179 first call with psyco = 0.000902349320933 with psyco = 5.30793718196e-005 first call with psyco = 114.190981432 % slower 2nd call with psyco = 87.400530504 % faster import time import psyco def test(l): result = 0 for item in l: result += item return result l = list(range(0, 1000)) t1 = time.clock() l2 = test(l) t2 = time.clock() no_psyco = t2 - t1 psyco.log() psyco.bind(test) t1 = time.clock() l2 = test(l) t2 = time.clock() first_call_with_psyco = t2 - t1 t1 = time.clock() l2 = test(l) t2 = time.clock() with_psyco = t2 - t1 print 'without psyco = ',no_psyco print 'first call with psyco = ',first_call_with_psyco print 'with psyco = ',with_psyco first_delta = ((no_psyco - first_call_with_psyco)/no_psyco) * 100 delta = ((no_psyco - with_psyco)/no_psyco) * 100 if(first_delta 0): result = 'faster' else: result = 'slower' print 'first call with psyco = ',abs(first_delta),'% ',result if(delta 0): result = 'faster' else: result = 'slower' print '2nd call with psyco = ',abs(delta),'% ',result -- http://mail.python.org/mailman/listinfo/python-list
Re: OS specific command in Python
Hi Avell, I want to communicate using subprocess module but my task is a little different. May be you can guide me. I have a linux box, from where I remotely execute all the commands. The remote machine is windows machine. I installed an OpenSSH server for windows to send the shutdown command. I setup the public keys in such a way that I could login to SSH server without using password. I used import os os.system('ssh [EMAIL PROTECTED] shutdown -s') I was wondering how can I interact with an application . Since you mentioned about subprocess module, I want a ability that my PYthon script can actually interact with the windows box and launch and close application there remotely. Any suggestions on how to do this ? Every help is appreciated. Thanks for your time Avell Diroll wrote: This is an simple way to proceed if you don't need your python script to know what happens to the launched process ... When you need to : * send some input to the command from the python script after it is launched * get the output of the command in your python script * get the pid associated to your command * wait for your command to finish * pipe some shell commands * ... you should use the subprocess module. Here is a quick example from the Python Reference Library : http://docs.python.org/lib/node242.html ##Shell Script : output=`dmesg | grep hda` ##Python Script : from subprocess import Popen p1 = Popen([dmesg], stdout=PIPE) p2 = Popen([grep, hda], stdin=p1.stdout, stdout=PIPE) output = p2.communicate()[0] -- http://mail.python.org/mailman/listinfo/python-list
Re: What is Expressiveness in a Computer Language
Chris Uppal schrieb: Chris Smith wrote: I think Marshall got this one right. The two are accomplishing different things. In one case (the dynamic case) I am safeguarding against negative consequences of the program behaving in certain non- sensical ways. In the other (the static case) I am proving theorems about the impossibility of this non-sensical behavior ever happening. And so conflating the two notions of type (-checking) as a kind of category error ? If so then I see what you mean, and it's a useful distinction, but am unconvinced that it's /so/ helpful a perspective that I would want to exclude other perspectives which /do/ see the two as more-or-less trivial variants on the same underlying idea. It is indeed helpful. Just think of all the unit tests that you don't have to write. Regards, Jo -- http://mail.python.org/mailman/listinfo/python-list
Re: What is Expressiveness in a Computer Language
Matthias Blume schrieb: Joachim Durchholz [EMAIL PROTECTED] writes: Matthias Blume schrieb: Joachim Durchholz [EMAIL PROTECTED] writes: Matthias Blume schrieb: Perhaps better: A language is statically typed if its definition includes (or ever better: is based on) a static type system, i.e., a static semantics with typing judgments derivable by typing rules. Usually typing judgmets associate program phrases (expressions) with types given a typing environment. This is defining a single term (statically typed) using three undefined terms (typing judgements, typing rules, typing environment). This was not meant to be a rigorous definition. Rigorous or not, introducing additional undefined terms doesn't help with explaining a term. I think you missed my point. My point was that a language is statically typed IF IT IS DEFINED THAT WAY, i.e., if it has a static type system that is PART OF THE LANGUAGE DEFINITION. The details are up to each individual definition. Well, that certainly makes more sense to me. Regards, Jo -- http://mail.python.org/mailman/listinfo/python-list
Re: What is Expressiveness in a Computer Language
Matthias Blume wrote: Rob Thorpe [EMAIL PROTECTED] writes: Matthias Blume wrote: Rob Thorpe [EMAIL PROTECTED] writes: I think we're discussing this at cross-purposes. In a language like C or another statically typed language there is no information passed with values indicating their type. You seem to be confusing does not have a type with no type information is passed at runtime. Have a look in a C compiler if you don't believe me. Believe me, I have. In a C compiler the compiler has no idea what the values are in the program. It is no different from any other compiler, really. If the compiler sees the literal 1 in a context that demands type int, then it knows perfectly well what value that is. Well, with a literal yes. But with the value of some variable x at runtime it only know the type because it knows the type of the variable. Similarly the type of values generated by an expression are only known because the type the expression generates is known. It knows only their type in that it knows the type of the variable they are contained within. Would you agree with that? Would you? No it doesn't. Casting reinterprets a value of one type as a value of another type. There is a difference. If I cast an unsigned integer 20 to a signed integer in C on the machine I'm using then the result I will get will not make any sense. Which result are you getting? What does it mean to make sense? Well the right one actually, bad example. But, if I cast an unsigned int 25 to signed I get -1794967296. So, why do you think this does not make sense? Well, it makes sense in terms of the C spec certainly. It does not make sense in that it does not emit an error. And, as this example illustrates, casting in C maps values to values. Depending on the types of the source and the target, a cast might change the underlying representation, or it might leave it the same. But it does produce a value, and the result value is usually not the same as the argument value, even if the representation is the same. Yes. I'm not arguing with that. -- http://mail.python.org/mailman/listinfo/python-list
Re: [OT] code is data
Bruno Desthuilliers wrote: You mean like 'converting' javascript to python or python to ruby (or converting any home-grown DSL to Python, etc) ? Yes, but also what some other posters mentioned, making Pythons internal parsing tree available to other programs (and to Python itself) by using a widely used standard like XML as its datatype. Then there are some people who keep insisting they don't understand what I'm talking about until I simplify things enough to get them on-board, count me in then :( Sorry about that. but then simply dismiss my ideas with 'you can already do that easily with this standard python construct'. This strategy was also eloquently refuted by some other poster, so I don't need to repeat it :-) I've gotten a lot of things to think about, so thanks all for your thoughts, but since this is getting way above my head I'll just wimp out and leave the rest of the thread to the experts! No way you will escape from your responsabilities so easily !-) Ok, count me back in then too :-) Of course I will be available for further discussion. If more than ten people demand a PEP and no better champion is available (very unlikely) I'll even write a proposal. Anton -- http://mail.python.org/mailman/listinfo/python-list
Re: What is Expressiveness in a Computer Language
Pascal Costanza schrieb: Static type systems potentially change the semantics of a language in ways that cannot be captured by dynamically typed languages anymore, and vice versa. Very true. I also suspect that's also why adding type inference to a dynamically-typed language doesn't give you all the benefits of static typing: the added-on type system is (usually) too weak to express really interesting guarantees, usually because the language's semantics isn't tailored towards making the inference steps easy enough. Conversely, I suspect that adding dynamic typing to statically-typed languages tends to miss the most interesting applications, mostly because all the features that can simply be done in a dynamically-typed language have to be retrofitted to the statically-typed language on a case-by-case basis. In both cases, the language designers often don't know the facilities of the opposed camp well enough to really assess the trade-offs they are doing. There is, of course, room for research on performing static type checks in a running system, for example immediately after or before a software update is applied, or maybe even on separate type checking on software increments such that guarantees for their composition can be derived. However, I am not aware of a lot of work in that area, maybe because the static typing community is too focused on compile-time issues. I think it's mostly because it's intimidating. The core semantics of an ideal language fits on a single sheet of paper, to facilitate proofs of language properties. Type checking dynamically-loaded code probably wouldn't fit on that sheet of paper. (The non-core semantics is then usually a set of transformation rules that map the constructs that the programmer sees to constructs of the core language.) Regards, Jo -- http://mail.python.org/mailman/listinfo/python-list
Remote Boot Manager Scripting (Python)
I just started to write a small project in Python. I was wondering if there can be something like remote boot manager. I have to remotely start a computer. It has dual boot (WinXP and Linux). My remote computer is Linux which will send command to remotely boot the other computer. Can we write python script or some utility which would let us select the Operating System to boot ? For example If we send parameter WIN it boots into Windows and if we send NIX it boots into Linux. Every help is appreciated. Thanks -- http://mail.python.org/mailman/listinfo/python-list
Re: new python icons for windows
Istvan Albert wrote: But these new icons are too large, too blocky and too pastel. Hooray! Glad to see *someone* doesn't like 'em, I'll expect a few more when b1 hits. :-) Although I can't really see 'large', 'blocky' or 'pastel'... they're the same size and shape as other Windows document icons, and I personally find the Python logo colours quite striking. If it's the new-fangled shadey gradienty kind of nonsense you don't like, you could also try the low-colour versions. eg. ICOs compiled with only 16-colour and 16/32 sizes: http://doxdesk.com/file/software/py/pyicons-tiny.zip For example it resembles the icon for text files. This is intentional: to make it obvious that .py files are the readable, editable scripts, contrasting with .pyc's binary gunk - something that wasn't 100% clear before. With the obviousness of the Python-plus and the strong difference between the white and black base document icons, squinting shouldn't really be necessary IMO. can someone point me to a page/link that contains the old icons? Sure, http://svn.python.org/view/python/branches/release24-maint/PC/py.ico http://svn.python.org/view/python/branches/release24-maint/PC/pyc.ico http://svn.python.org/view/python/branches/release24-maint/PC/pycon.ico -- And Clover mailto:[EMAIL PROTECTED] http://www.doxdesk.com/ -- http://mail.python.org/mailman/listinfo/python-list
returning index of minimum in a list of lists
Hi all, Is there a simple python function to return the list index of the minimum entry in a list of lists? ie, for [[3,3,3,3], [3,3,3,1], [3,3,3,3]] to return 2,4. Or, same question but just for a list of numbers, not a list of lists. Thanks, Josh -- http://mail.python.org/mailman/listinfo/python-list
Re: How to override the doc of an object instance.
David Huard [EMAIL PROTECTED] wrote in message news:[EMAIL PROTECTED] On Wed, 21 Jun 2006 15:39:02 +0200, Maric Michaud wrote: This is w.__class__.x.__doc__. Thanks, So in order to implement what I want, I should rather consider an ipython hack to print w.__class__.x.__doc__ when it exists, instead of w.x.__doc_ ? Does this makes sense or it will ruin the standard behaviour? David No need to, just assign your special docstrings to w.x.__doc__, and print w.x.__doc__. Instances that have special docstrings will print their instance-specific versions; instances without instance-specific docstrings will print the class-level version. See below. -- Paul class W(object): ... Class-level docstring for W ... pass ... z = W() z.__doc__ 'Class-level docstring for W' z.__doc__ = instance-level docstring, just for z z.__doc__ 'instance-level docstring, just for z' zz = W() print zz.__doc__ Class-level docstring for W print z.__doc__ instance-level docstring, just for z -- http://mail.python.org/mailman/listinfo/python-list
Re: Search substring in a string and get index of all occurances
Tim Chase wrote: indicies = [i for i in xrange(len(mystring)) if mystring.startswith(substr, i)] indicies [4, 8, 10, 17, 22] is my preferred way of doing this. it's things like this that makes me wonder why I spent a week speeding up the string implementation for Python 2.5 (with special emphasis on find/index-related performance)... /F -- http://mail.python.org/mailman/listinfo/python-list