Re: Usefulness of the "not in" operator
Chris Angelico writes: > On Sun, Oct 9, 2011 at 12:07 AM, Jussi Piitulainen wrote: > > But both negations can be avoided by modus tollens. > > > > "If you are able to start the car, the key is in the ignition." > > But this translation implies looking at the result and ascertaining > the state, which is less appropriate to a programming language. It's > more like: > > "If you found that you were able to start the car, the key must have > been in the ignition." > > and is thus quite inappropriate to the imperative style. A > functional language MAY be able to use this style, but Python wants > to have the condition and then the action. This is not in an imperative context. The context is (generalized) Boolean expressions, where there should not be any action, just expressions returning values that are combined to produce a (generalized) Boolean value. Defined order of evaluation and short-circuiting complicate the picture, but as a matter of style, I think there should not be any action part in such an expression. Usually. And "not in" is fine as far as I am concerned. -- http://mail.python.org/mailman/listinfo/python-list
Re: Embedding a "frame" into a movie using python
>> My objective is to have the user put together some images html and embed the >> image as a frame into a video file (any embeddable format e.g. swf). >SWF isn't the easiest format to work with; it's not necessarily a video, but might be a scripted object. Try working with real video formats such as avi, mpg, or ogv. >You may wish to look into PiTiVi, an open source video editor; it's written in Python. I'm not sure if you can achieve what you want by simply driving PiTiVi externally, but at very least, it's worth a peek. >ChrisA Hi Chris, thank you for your response. I am format agnostic for processing so am happy to work with avi etc., however in displaying the final film to the user I think I'd need to convert whatever I've made to swf to make it a little less downloadable. I'll check out PiTiVi - perhaps I can hack it to work on the back of appengine... Cheers, J -- http://mail.python.org/mailman/listinfo/python-list
Reading screen width of a Tkinter widget.
I recently had a problem while trying to set up a Tkinter Canvas widget as a progress bar. Everything seemed to be working, except that at 100% completion the progress bar spanned only about 75% of the canvas width. Eventually I tracked the problem down to the canvas bar 'width' property as read using w=cnvProgess['width']. It turned out the value returned was the original width of the canvas bar, and not the screen width after the canvas had been gridded using 'sticky=W+E'. Once I realised this it was not a show stopper, as I replaced the grid sticky option with a specific width instruction. But this is a bit less flexible than my original method. Is there any Tkinter command which will return the actual dimensions of a widget which has had the grid sticky option applied? Peter -- http://mail.python.org/mailman/listinfo/python-list
Opportunity missed by Python ?
Dart is the very new language created by Google to replace Javascript. So Python was not able to do the job? Or may be they don't know about Python at Google ;) ? -- http://mail.python.org/mailman/listinfo/python-list
Re: Opportunity missed by Python ?
Am 13.10.2011 11:45, schrieb candide: > Dart is the very new language created by Google to replace Javascript. > So Python was not able to do the job? Or may be they don't know about > Python at Google ;) ? What needs to be done to make Python replace JS in Browsers/HTML? (or at least make it a viable alternative to JS) Can the Python community do this without involvment in browser development? Regards Andreas -- http://mail.python.org/mailman/listinfo/python-list
Re: 1/2 evaluates to 0
Wohaw. This means that this behavior is going to be default in a foreseeable future ? It's the default in 3.x. I can't imagine it ever being the default in 2.x. 2.7 is now in "bug-fix only" mode, so no new features, and there won't be a 2.8, so true division will never be the default in 2.x. Thanks all for your ansers. I'll import division from __future__ Most of what I'm using in Python is with Sage[1]. Thus I'm not about to step to 3.x :( Laurent [1] www.sagemath.org -- http://mail.python.org/mailman/listinfo/python-list
Re: Opportunity missed by Python ?
On Thu, Oct 13, 2011 at 8:45 PM, candide wrote: > Dart is the very new language created by Google to replace Javascript. > So Python was not able to do the job? Or may be they don't know about Python > at Google ;) ? > Python, as I found out to my detriment, is practically impossible to sandbox effectively. Any language that hopes to gain full traction in a browser-based environment MUST be secure against scripts gaining too much control over the browser chrome. Also, Dart is looking to support (optional) strict typing, which Python doesn't do. That's a fairly major performance enhancement. ChrisA -- http://mail.python.org/mailman/listinfo/python-list
Re: Embedding a "frame" into a movie using python
On Thu, Oct 13, 2011 at 7:51 PM, J <1jason.whatf...@gmail.com> wrote: > thank you for your response. I am format agnostic for processing so am happy > to work with avi etc., however in displaying the final film to the user I > think I'd need to convert whatever I've made to swf to make it a little less > downloadable. I'll check out PiTiVi - perhaps I can hack it to work on the > back of appengine... SWF is just as downloadable as any other format. I recommend doing the fewest translations you can get away with, to avoid unnecessary loss of quality. ChrisA -- http://mail.python.org/mailman/listinfo/python-list
Re: Opportunity missed by Python ?
On 10/13/2011 6:07 AM, Chris Angelico wrote: On Thu, Oct 13, 2011 at 8:45 PM, candide wrote: Dart is the very new language created by Google to replace Javascript. So Python was not able to do the job? Or may be they don't know about Python at Google ;) ? Python, as I found out to my detriment, is practically impossible to sandbox effectively. Any language that hopes to gain full traction in a browser-based environment MUST be secure against scripts gaining too much control over the browser chrome. I believe there was some idea of translating Dart into Javascript, which can be done with Python also (Pyjamas). Also, Dart is looking to support (optional) strict typing, which Python doesn't do. That's a fairly major performance enhancement. Cython support optional typing. -- Terry Jan Reedy -- http://mail.python.org/mailman/listinfo/python-list
Re: Opportunity missed by Python ?
On Thu, Oct 13, 2011 at 3:07 AM, Chris Angelico wrote: > On Thu, Oct 13, 2011 at 8:45 PM, candide wrote: >> Dart is the very new language created by Google to replace Javascript. >> So Python was not able to do the job? Or may be they don't know about Python >> at Google ;) ? >> > > Python, as I found out to my detriment, is practically impossible to > sandbox effectively. Any language that hopes to gain full traction in > a browser-based environment MUST be secure against scripts gaining too > much control over the browser chrome. > > Also, Dart is looking to support (optional) strict typing, which > Python doesn't do. That's a fairly major performance enhancement. Actually, they can't use it as much more than an optimization hint, per their own spec (see Sec 13.1 of the draft): "Static type annotations are used during static checking and when running programs in checked mode. They have no effect whatsoever in production mode. [...] A Dart implementation must provide a static checker that detects and reports exactly those situations this specification identifies as static warnings. However: • Running the static checker on a program P is not required for compiling and running P. • Running the static checker on a program P must not prevent successful compilation of P nor may it prevent the execution of P, regardless of whether any static warnings occur." Cheers, Chris -- http://rebertia.com -- http://mail.python.org/mailman/listinfo/python-list
Re: Opportunity missed by Python ?
candide wrote: > Dart is the very new language created by Google to replace Javascript. > So Python was not able to do the job? Or may be they don't know about > Python at Google ;) ? I take it you haven't actually looked at the Dart tools then? They're largely written in Python. -- Duncan Booth http://kupuguy.blogspot.com -- http://mail.python.org/mailman/listinfo/python-list
Dynamically altering __init__
Hello all, I am trying to alter the init method of a class by source to AST -> alter AST -> AST back to code -> f = types.FunctionType(code, {}, '__init__') -> mt = types.MethodType(f, None, Foo) -> Foo.__init__ = mt I have two problems, first I haven't yet figured out how to make the AST back to code, so that it will be accepted by types.FunctionType. Also, I can't make the Foo.__init__ be callable with arguments. Here is an example without using AST: class Foo(object): def __init__(self): pass src = """ def my_init_func(self, *args): print "here" """ class Foo(object): pass import parser import types st = parser.suite(src) dyn_func = parser.compilest(st) f = types.FunctionType(dyn_func, {}, '__init__') im = types.MethodType(f, None, Foo) Foo() Foo.__init__ = im Foo(1, 2, 3) The result is: TypeError: () takes no arguments (4 given). I have figured out that when I call f(), I am actually executing the src as is, not the defined function in the src. But I can't figure out how to get a reference to my_init_func. You might be wondering why I am doing this. I am trying to rewrite this: class Foo(object): attrs = ['spam', 'eggs'] def __init__(self, *args): for attname, val in izip(Foo.attrs, args): setattr(self, attname, val) into this: ... def __init__(self, *args): self.spam, self.eggs = args This is done for performance reasons. There is about 2x difference when creating 1 objects. While it is a nice improvement, this is still mostly just for learning purposes. If you can help me it would be great. I am probably doing a lot of things wrong, but there isn't too much information available about these shorts of things. Link to example code would be perfect. - Anssi Kääriäinen -- http://mail.python.org/mailman/listinfo/python-list
Python gp.ListFeatureClasses return only one file
Hi All, I m using the gp.ListFeatureClasses to make a list of file in my directory (containing several hundreds of file) however when I print the variable in which the List is supposed to be stored, the print just return one file name does any one have an idea # Import system modules import sys, string, os, arcgisscripting, glob, arcpy # Create the Geoprocessor object gp = arcgisscripting.create() # define the workspace gp.Workspace = r"F:\front\shp_Files\calving_front" # list the file in the workspace try: shpList = gp.ListFeatureClasses("*.shp") shp = shpList.Next() print shp except: print arcpy.GetMessages() # allows to get error message when they happen -- http://mail.python.org/mailman/listinfo/python-list
Language Enhancement Idea to help with multi-processing (your opinions please)
First of all let me say that I have no authority or knowledge of language design or multi-processing except from a user point of view, having a decade or so experience. I would like your opinion and appreciate any feedback and value any hints to documentation, procedures or related ramblings :-). I was wondering if there could be an advantage to add another control flow statement. For the purpose of this writing let's say "ooo" which stands for 'out of order'. For example; def do_something(): a = 4 b = 2 c = 1 ooo: a += 1 b += 2 c += 3 print(a, b, c) What I would expect to happen that all statements within the ooo block may be executed out of order. The block itself waits till all statements are returned before continuing. What do you think? -- http://mail.python.org/mailman/listinfo/python-list
Re: 1/2 evaluates to 0
On Oct 13, 10:04 am, Laurent Claessens wrote: > Thanks all for your ansers. I'll import division from __future__ > Most of what I'm using in Python is with Sage[1]. Thus I'm not about to > step to 3.x :( You should get in touch with the Sage developers. In the Sage FAQ they say that "until SciPy is ported to run with Python 3.x and Cython supports Python 3.x, Sage will continue to use Python 2.x." However, both SciPy and Cython are currently compatible with Python 3.2. From the Cython FAQ: "As of 0.14, the Cython compiler runs in all Python versions from 2.3 to 3.2 inclusive." NumPy has supported Python 3 since version 1.5.0. From the release notes: "This is the first NumPy release which is compatible with Python 3." SciPy has supported Python 3 since version 0.9.0. From the release notes: "Scipy 0.9.0 is the first SciPy release to support Python 3. The only module that is not yet ported is ``scipy.weave``." So according to the Sage FAQ there is no reason why Sage shouldn't support Python 3. Sigmund -- http://mail.python.org/mailman/listinfo/python-list
Re: Language Enhancement Idea to help with multi-processing (your opinions please)
On Thu, Oct 13, 2011 at 11:35 PM, Martin P. Hellwig wrote: > What I would expect to happen that all statements within the ooo block may > be executed out > of order. The block itself waits till all statements are returned before > continuing. > In a statically-typed language such as C, this can be done by an optimizing compiler, without any hints from the programmer. But in Python, what you're looking for is either a guarantee from the programmer that none of the statements has a side effect that affects any other, or that you're prepared to wear it and have a horrendous debugging job if anyone monkey-patches your code or you do anything that makes a, b, or c into something more complex than an integer. ChrisA -- http://mail.python.org/mailman/listinfo/python-list
Re: Python gp.ListFeatureClasses return only one file
On 2011-10-13 14:00, yo wrote: Hi All, I m using the gp.ListFeatureClasses to make a list of file in my directory (containing several hundreds of file) however when I print the variable in which the List is supposed to be stored, the print just return one file name does any one have an idea Depending on the version you are using, "ListFeatureClasses()" returns either a list or an enumeration object: http://webhelp.esri.com/arcgisdesktop/9.3/index.cfm?TopicName=ListFeatureClasses_method You are just printing the first item. To print all, something like the following should work (assuming you are using version 9.2): shpList = gp.ListFeatureClasses("*.shp") shp = shpList.Next() while shp: print shp shp = shpList.Next() Bye, Andreas -- http://mail.python.org/mailman/listinfo/python-list
Re: Opportunity missed by Python ?
Chris Angelico writes: > On Thu, Oct 13, 2011 at 8:45 PM, candide wrote: >> Dart is the very new language created by Google to replace Javascript. >> So Python was not able to do the job? Or may be they don't know about Python >> at Google ;) ? > > Python, as I found out to my detriment, is practically impossible to > sandbox effectively. Any language that hopes to gain full traction in > a browser-based environment MUST be secure against scripts gaining too > much control over the browser chrome. A first step in that direction would be to have a specification for a python virtual machine. I guess engineers at Google know very well the limitations of Python in its current state. After all, python's inventor works there. Also, they've tried the optimization road with unladden-swallow. And failed. > Also, Dart is looking to support (optional) strict typing, which > Python doesn't do. That's a fairly major performance enhancement. I think you're absolutely right. They've already included a "better DOM". The use of typing will let them provide a very efficient standard library. I am willing to bet that Google's next step will be to provide a plugin/extension/whatever to directly execute Dart programs in the browsers. And then a JIT compiler inside the VM. And then everybody will want to move, for performance reason. All the Javascript compatibility is transitional stuff. -- Alain. -- http://mail.python.org/mailman/listinfo/python-list
Re: Language Enhancement Idea to help with multi-processing (your opinions please)
Martin P. Hellwig, 13.10.2011 14:35: I was wondering if there could be an advantage to add another control flow statement. Changes at that level must be very well justified, are often rejected for the reason of being not too complicated to write in some other form and are close to impossible to get accepted when requiring a new keyword. Also, the right place to discuss (and, more importantly, search for previous) ideas about language changes is the python-ideas mailing list. For the purpose of this writing let's say "ooo" which stands for 'out of order'. For example; def do_something(): a = 4 b = 2 c = 1 ooo: a += 1 b += 2 c += 3 print(a, b, c) What I would expect to happen that all statements within the ooo block may be executed out of order. The block itself waits till all statements are returned before continuing. This looks like a rather special case. What if you need more than one statement to accomplish a single step? What if the number of parallel tasks is not fixed at coding time? I don't think there are many problems that you can solve with this feature. Also: the GIL will not allow you to take a major advantage from the parallel execution of a set of statements, as only one of the statements can use the interpreter at a time. And, on a related note: Cython has freshly gained support for parallel loops based on OpenMP, so you may be able to solve your problem with Cython instead of using plain Python. Stefan -- http://mail.python.org/mailman/listinfo/python-list
Re: MySQLdb on Mac Lion
* Ned Deily [111012 18:12]: > In article <20111013005244.gk6...@johnsons-web.com>, > Tim Johnson wrote: > > I'm most experienced with MySQLdb on ubuntu, which is installed via > > apt-get or synaptic. > > > > I am setting up a mac mini with osX 10.7 (Lion). Macports makes > > py27-mysql 1.2.2 available, but are there any .dmg packages > > available? > > I strongly recommend you stick with MacPorts or Homebrew. There are too > many things that can go wrong on OS X 10.6 or 10.7 if you try to install > MySQL client libraries, MySQLdb, and Python from different places. IME, > the binary installers for OS X provided by the MySQL are inconsistently > built between versions and often need the library paths need to be > tweaked. The only major drawback of using MacPorts is that it will > download (and possibly build) its own version of Python but it's a small > price to pay: search the archives of Stackoverflow to see how > dismayingly often this topic comes up. Thanks for that Ned. -- Tim tim at tee jay forty nine dot com or akwebsoft dot com http://www.akwebsoft.com -- http://mail.python.org/mailman/listinfo/python-list
Re: Opportunity missed by Python ?
On Thu, Oct 13, 2011 at 11:45:06AM +0200, candide wrote: > Dart is the very new language created by Google to replace Javascript. > So Python was not able to do the job? Or may be they don't know > about Python at Google ;) ? Google's a big supporter for Python...I think Guido working being employed there has something to do with it, but I could be conspiring. Python is not an appropriate language for client-side web scripts, it's just too good for such a lowly job. ;) -- http://mail.python.org/mailman/listinfo/python-list
Re: Opportunity missed by Python ?
On Thu, Oct 13, 2011 at 09:07:09PM +1100, Chris Angelico wrote: > On Thu, Oct 13, 2011 at 8:45 PM, candide wrote: > > Dart is the very new language created by Google to replace Javascript. > > So Python was not able to do the job? Or may be they don't know about Python > > at Google ;) ? > > > > Python, as I found out to my detriment, is practically impossible to > sandbox effectively. Any language that hopes to gain full traction in > a browser-based environment MUST be secure against scripts gaining too > much control over the browser chrome. > > Also, Dart is looking to support (optional) strict typing, which > Python doesn't do. That's a fairly major performance enhancement. > > ChrisA You mean static typing? -- http://mail.python.org/mailman/listinfo/python-list
Re: Language Enhancement Idea to help with multi-processing (your opinions please)
FWIW, this looks rather like the 'PAR' construct of Occam to me. http://en.wikipedia.org/wiki/Occam_%28programming_language%29 J^n -- http://mail.python.org/mailman/listinfo/python-list
Re: 1/2 evaluates to 0
You should get in touch with the Sage developers. In the Sage FAQ they say that "until SciPy is ported to run with Python 3.x and Cython supports Python 3.x, Sage will continue to use Python 2.x." ``scipy.weave``." So according to the Sage FAQ there is no reason why Sage shouldn't support Python 3. Maybe the FAQ is not up to date. Nowadays the reason for not stepping to 3.x is "manpower" ;) (this question comes back two or three times a year on the Sages' list. Next time the question arises, I'll point out your remark) Scipy and Cython are just two of the biggest python parts in Sage, but there are many others ... 'till sage itself. Have a good afternoon Laurent -- http://mail.python.org/mailman/listinfo/python-list
Re: Dynamically altering __init__
2011/10/13 Kääriäinen Anssi : > import parser > import types > st = parser.suite(src) > dyn_func = parser.compilest(st) > f = types.FunctionType(dyn_func, {}, '__init__') > im = types.MethodType(f, None, Foo) > Foo() > Foo.__init__ = im > Foo(1, 2, 3) > > The result is: TypeError: () takes no arguments (4 given). I have > figured out that when I call f(), I am actually executing the src as is, not > the defined function in the src. But I can't figure out how to get a > reference to my_init_func. You can either pull the function code object out of the module code object constants: ... st_code = parser.compilest(st) func_code = st_code.co_consts[0] f = types.FunctionType(func_code, {}, '__init__') ... But you should take care to ensure that the function code object actually is the first constant. Or you can just exec your suite and pull the function from its globals. src_globals = {} exec src in src_globals my_init_func = src_globals['my_init_func'] Cheers, Ian -- http://mail.python.org/mailman/listinfo/python-list
RE: Dynamically altering __init__
Ian Kelly wrote: """ You can either pull the function code object out of the module code object constants: ... st_code = parser.compilest(st) func_code = st_code.co_consts[0] f = types.FunctionType(func_code, {}, '__init__') ... But you should take care to ensure that the function code object actually is the first constant. Or you can just exec your suite and pull the function from its globals. src_globals = {} exec src in src_globals my_init_func = src_globals['my_init_func'] """ Thank you very much. I will post a link to a complete example once I have done the AST transformations etc. I hope this will be useful to readers of this list. I didn't find such an example, so maybe the next asker will find it... And when I inevitably do something the wrong way in my example, I am sure you will correct me :) However, this might take some time before ready, I am new to this stuff. If there is already an example somewhere, that would be really helpful to me. Just a quick note, I tested this on Python2.6, and got around 2.3 seconds per million objects. With an init doing the setattr loop, I got around 4.7 seconds. So the speed difference is there, but as expected, it isn't that big. Python3 had similar results. - Anssi Kääriäinen -- http://mail.python.org/mailman/listinfo/python-list
Re: Language Enhancement Idea to help with multi-processing (your opinions please)
On 13/10/2011 15:13, Stefan Behnel wrote: Martin P. Hellwig, 13.10.2011 14:35: I was wondering if there could be an advantage to add another control flow statement. Changes at that level must be very well justified, are often rejected for the reason of being not too complicated to write in some other form and are close to impossible to get accepted when requiring a new keyword. Also, the right place to discuss (and, more importantly, search for previous) ideas about language changes is the python-ideas mailing list. For the purpose of this writing let's say "ooo" which stands for 'out of order'. For example; def do_something(): a = 4 b = 2 c = 1 ooo: a += 1 b += 2 c += 3 print(a, b, c) What I would expect to happen that all statements within the ooo block may be executed out of order. The block itself waits till all statements are returned before continuing. This looks like a rather special case. What if you need more than one statement to accomplish a single step? Aah yes haven't thought about that, was more thinking like wrap multiple steps in a function and put that as one line, but yeah that kind of stuff gets very unpythonic very quickly. What if the number of parallel tasks is not fixed at coding time? I don't think there are many problems that you can solve with this feature. Also: the GIL will not allow you to take a major advantage from the parallel execution of a set of statements, as only one of the statements can use the interpreter at a time. Well I was more or less thinking in the line that the interpreter when parsing such a statement can, if there are multiple cpu's available, fire the appropriate amount of other interpreters and do all the passing and locking of data for you. And, on a related note: Cython has freshly gained support for parallel loops based on OpenMP, so you may be able to solve your problem with Cython instead of using plain Python. Well funny enough I don't really have a problem with it, I am a happy consumer of multiprocessing, but I was just wondering if there would be a way to do it simpler and more pythonic. Stefan Thanks for your feedback it was very enlightening although for what the idea is concerned disappointing as it more or less makes it obvious that such a thing is a no-go. Cheers, Martin -- http://mail.python.org/mailman/listinfo/python-list
Re: Opportunity missed by Python ?
"candide" wrote in message news:4e96b324$0$1007$426a3...@news.free.fr... Dart is the very new language created by Google to replace Javascript. So Python was not able to do the job? Or may be they don't know about Python at Google ;) ? The entire resources of Google available, and they re-invent C! https://code.google.com/p/dart/source/browse/branches/bleeding_edge/dart/client/samples/spirodraw/Spirodraw.dart -- Bartc -- http://mail.python.org/mailman/listinfo/python-list
Re: Opportunity missed by Python ?
On Fri, Oct 14, 2011 at 8:38 AM, BartC wrote: > The entire resources of Google available, and they re-invent C! Syntactically, C has a lot going for it. If you want to invent a new language and have developers grok it easily, borrowing syntax from C will help a lot. But in this case, I think the derivation is from JavaScript (which itself derives from C), making Dart a more-similar replacement. ChrisA -- http://mail.python.org/mailman/listinfo/python-list
Reading a file into a data structure....
This is a continuing to a post I made in August: http://groups.google.com/group/comp.lang.python/browse_thread/thread/b072cfadf998deae/ce6d4d09911e4107?lnk=gst&q=MrPink#ce6d4d09911e4107 I got some free time to work with Python again and have some followup questions. For example, I have a list in a text file like this: Example list of lottery drawings: date,wb,wb,wb,wb,wb,bb 4/1/2011,5,1,45,23,27,27 5/1/2011,15,23,8,48,22,32 6/1/2011,33,49,21,16,34,1 7/1/2011,9,3,13,22,45,41 8/1/2011,54,1,24,39,35,18 Ticket: startdate,enddate,wb,wb,wb,wb,wb,bb 4/1/2011,8/1/2011,5,23,32,21,3,27 I am trying to determine the optimal way to organize the data structure of the drawing list, search the drawing list, and mark the matches in the drawing list. f = open("C:\temp\drawinglist.txt", "r") lines = f.readlines() f.close() drawing = lines[1].split() The results in drawing is this: drawing[0] = '4/1/2011' drawing[1] = '5' drawing[2] = '1' drawing[3] = '45' drawing[4] = '23' drawing[5] = '27' drawing[6] = '27' I need to convert drawing[0] to a date datatype. This works, but I'm sure there is a better way. from datetime import date month, day, year = drawing[0].split('/') drawing[0] = date(int(year), int(month), int(day)) For searching, I need to determine if the date of the drawing is within the date range of the ticket. If yes, then mark which numbers in the drawing match the numbers in the ticket. ticket[0] = '4/1/2011' ticket[0] = '8/1/2011' ticket[0] = '5' ticket[0] = '23' ticket[0] = '32' ticket[0] = '21' ticket[0] = '3' ticket[0] = 27' drawing[0] = '4/1/2011' (match) drawing[1] = '5' (match) drawing[2] = '1' drawing[3] = '45' drawing[4] = '23' (match) drawing[5] = '27' drawing[6] = '27' (match) I'm debating on structuring the drawing list like this: drawing[0] = '4/1/2011' drawing[1][0] = '5' drawing[1][1] = '1' drawing[1][2] = '45' drawing[1][3] = '23' drawing[1][4] = '27' drawing[2] = '27' Sort drawing[1] from low to high drawing[1][0] = '1' drawing[1][1] = '5' drawing[1][2] = '23' drawing[1][3] = '27' drawing[1][4] = '45' I want to keep the drawing list in memory for reuse. Any guidance would be most helpful and appreciated. BTW, I want to learn, so be careful not to do too much of the work for me. I'm using WingIDE to do my work. Thanks, -- http://mail.python.org/mailman/listinfo/python-list
Re: Opportunity missed by Python ?
As long as there are tools to translate scripts or source code between the two languages. More new evolved powerful programming languages arenot problems at all for experienced programmers. -- http://mail.python.org/mailman/listinfo/python-list
Re: Language Enhancement Idea to help with multi-processing (your opinions please)
On Thu, 13 Oct 2011 15:33:27 +0100, jkn wrote: FWIW, this looks rather like the 'PAR' construct of Occam to me. http://en.wikipedia.org/wiki/Occam_%28programming_language%29 I was going to say the same thing. Occam's answer to Stefan's question about what to do if you want more than one statement executed per step was to wrap sequences of statements in a SEQ construct. You end up indenting a long way very fast if you aren't careful. I'm afraid much as I love PAR, Python's dynamicism makes it rather more 'exciting' than it was in occam. -- Rhodri James *-* Wildebeest Herder to the Masses -- http://mail.python.org/mailman/listinfo/python-list
Re: Language Enhancement Idea to help with multi-processing (your opinions please)
jkn: > FWIW, this looks rather like the 'PAR' construct of Occam to me. > > http://en.wikipedia.org/wiki/Occam_%28programming_language%29 Earlier than that, 'par' is from Algol 68: http://en.wikipedia.org/wiki/ALGOL_68#par:_Parallel_processing Neil -- http://mail.python.org/mailman/listinfo/python-list
Re: Reading a file into a data structure....
On Thu, Oct 13, 2011 at 3:59 PM, MrPink wrote: > This is a continuing to a post I made in August: > http://groups.google.com/group/comp.lang.python/browse_thread/thread/b072cfadf998deae/ce6d4d09911e4107?lnk=gst&q=MrPink#ce6d4d09911e4107 > > I got some free time to work with Python again and have some followup > questions. > > For example, I have a list in a text file like this: > Example list of lottery drawings: > date,wb,wb,wb,wb,wb,bb > 4/1/2011,5,1,45,23,27,27 > 5/1/2011,15,23,8,48,22,32 > 6/1/2011,33,49,21,16,34,1 > 7/1/2011,9,3,13,22,45,41 > 8/1/2011,54,1,24,39,35,18 > > > Ticket: > startdate,enddate,wb,wb,wb,wb,wb,bb > 4/1/2011,8/1/2011,5,23,32,21,3,27 > > I am trying to determine the optimal way to organize the data > structure of the drawing list, search the drawing list, and mark the > matches in the drawing list. > > f = open("C:\temp\drawinglist.txt", "r") > lines = f.readlines() > f.close() > drawing = lines[1].split() That looks like a CSV file. If the contents are tightly constrained then it may not matter, but if not then you should consider using the csv module to read the lines, which will handle inconvenient details like quoting and escape characters for you. > I need to convert drawing[0] to a date datatype. This works, but I'm > sure there is a better way. > from datetime import date > month, day, year = drawing[0].split('/') > drawing[0] = date(int(year), int(month), int(day)) If you already know the format: from datetime import datetime drawing[0] = datetime.strptime(drawing[0], '%m/%d/%Y').date() If you can't be sure of the format, then I recommend using the python-dateutil parser.parse() function, which will try to work it out on the fly. -- http://mail.python.org/mailman/listinfo/python-list
Re: Reading a file into a data structure....
On Oct 13, 10:59 pm, MrPink wrote: > This is a continuing to a post I made in > August:http://groups.google.com/group/comp.lang.python/browse_thread/thread/... > > I got some free time to work with Python again and have some followup > questions. > > For example, I have a list in a text file like this: > Example list of lottery drawings: > date,wb,wb,wb,wb,wb,bb > 4/1/2011,5,1,45,23,27,27 > 5/1/2011,15,23,8,48,22,32 > 6/1/2011,33,49,21,16,34,1 > 7/1/2011,9,3,13,22,45,41 > 8/1/2011,54,1,24,39,35,18 > > > Ticket: > startdate,enddate,wb,wb,wb,wb,wb,bb > 4/1/2011,8/1/2011,5,23,32,21,3,27 > > I am trying to determine the optimal way to organize the data > structure of the drawing list, search the drawing list, and mark the > matches in the drawing list. > > f = open("C:\temp\drawinglist.txt", "r") > lines = f.readlines() > f.close() > drawing = lines[1].split() > > The results in drawing is this: > drawing[0] = '4/1/2011' > drawing[1] = '5' > drawing[2] = '1' > drawing[3] = '45' > drawing[4] = '23' > drawing[5] = '27' > drawing[6] = '27' > > I need to convert drawing[0] to a date datatype. This works, but I'm > sure there is a better way. > from datetime import date > month, day, year = drawing[0].split('/') > drawing[0] = date(int(year), int(month), int(day)) > > For searching, I need to determine if the date of the drawing is > within the date range of the ticket. If yes, then mark which numbers > in the drawing match the numbers in the ticket. > > ticket[0] = '4/1/2011' > ticket[0] = '8/1/2011' > ticket[0] = '5' > ticket[0] = '23' > ticket[0] = '32' > ticket[0] = '21' > ticket[0] = '3' > ticket[0] = 27' > > drawing[0] = '4/1/2011' (match) > drawing[1] = '5' (match) > drawing[2] = '1' > drawing[3] = '45' > drawing[4] = '23' (match) > drawing[5] = '27' > drawing[6] = '27' (match) > > I'm debating on structuring the drawing list like this: > drawing[0] = '4/1/2011' > drawing[1][0] = '5' > drawing[1][1] = '1' > drawing[1][2] = '45' > drawing[1][3] = '23' > drawing[1][4] = '27' > drawing[2] = '27' > > Sort drawing[1] from low to high > drawing[1][0] = '1' > drawing[1][1] = '5' > drawing[1][2] = '23' > drawing[1][3] = '27' > drawing[1][4] = '45' > > I want to keep the drawing list in memory for reuse. > > Any guidance would be most helpful and appreciated. > BTW, I want to learn, so be careful not to do too much of the work for > me. > I'm using WingIDE to do my work. > > Thanks, - Use the csv module to read the file - Use strptime to process the date field - Use a set for draw numbers (you'd have to do pure equality on the bb) - Look at persisting in a sqlite3 DB (maybe with a custom convertor) hth, Jon. -- http://mail.python.org/mailman/listinfo/python-list
Re: [Python-ideas] Implement comparison operators for range objects
How about iterable objects supported in python? Is a countable object iterable definitely? Also the tail recursion technique is useful for the same function with few arguments that calls itself. The lisp compiler would emit machine codes with fast jumps and passing arguments in registers or stacks very efficiently. -- http://mail.python.org/mailman/listinfo/python-list
Re: Language Enhancement Idea to help with multi-processing (your opinions please)
Martin P. Hellwig wrote: > I was wondering if there could be an advantage to add another control > flow statement. > For the purpose of this writing let's say "ooo" which stands for 'out of > order'. [...] > What I would expect to happen that all statements within the ooo block > may be executed out > of order. The block itself waits till all statements are returned before > continuing. Why do you think this needs to be a language statement? You can have that functionality *right now*, without waiting for a syntax update, by use of the multiprocessing module, or a third party module. http://docs.python.org/library/multiprocessing.html http://wiki.python.org/moin/ParallelProcessing There's no need for forcing language changes on everyone, whether they need it or not, for features that can easily be implemented as library code. -- Steven -- http://mail.python.org/mailman/listinfo/python-list
Looking for browser emulator
I've got to write some tests in python which simulate getting a page of HTML from an http server, finding a link, clicking on it, and then examining the HTML on the next page to make sure it has certain features. I can use urllib to do the basic fetching, and lxml gives me the tools to find the link I want and extract its href attribute. What's missing is dealing with turning the href into an absolute URL that I can give to urlopen(). Browsers implement all sorts of stateful logic such as "if the URL has no hostname, use the same hostname as the current page". I'm talking about something where I can execute this sequence of calls: urlopen("http://foo.com:/bar";) urlopen("/baz") and have the second one know that it needs to get "http://foo.com:/baz";. Does anything like that exist? I'm really trying to stay away from Selenium and go strictly with something I can run under unittest. -- http://mail.python.org/mailman/listinfo/python-list
Re: Looking for browser emulator
On Oct 14, 3:19 am, Roy Smith wrote: > I've got to write some tests in python which simulate getting a page of > HTML from an http server, finding a link, clicking on it, and then > examining the HTML on the next page to make sure it has certain features. > > I can use urllib to do the basic fetching, and lxml gives me the tools > to find the link I want and extract its href attribute. What's missing > is dealing with turning the href into an absolute URL that I can give to > urlopen(). Browsers implement all sorts of stateful logic such as "if > the URL has no hostname, use the same hostname as the current page". > I'm talking about something where I can execute this sequence of calls: > > urlopen("http://foo.com:/bar";) > urlopen("/baz") > > and have the second one know that it needs to get > "http://foo.com:/baz";. Does anything like that exist? > > I'm really trying to stay away from Selenium and go strictly with > something I can run under unittest. lxml.html.make_links_absolute() ? -- http://mail.python.org/mailman/listinfo/python-list
Re: Looking for browser emulator
On Oct 14, 3:19 am, Roy Smith wrote: > I've got to write some tests in python which simulate getting a page of > HTML from an http server, finding a link, clicking on it, and then > examining the HTML on the next page to make sure it has certain features. > > I can use urllib to do the basic fetching, and lxml gives me the tools > to find the link I want and extract its href attribute. What's missing > is dealing with turning the href into an absolute URL that I can give to > urlopen(). Browsers implement all sorts of stateful logic such as "if > the URL has no hostname, use the same hostname as the current page". > I'm talking about something where I can execute this sequence of calls: > > urlopen("http://foo.com:/bar";) > urlopen("/baz") > > and have the second one know that it needs to get > "http://foo.com:/baz";. Does anything like that exist? > > I'm really trying to stay away from Selenium and go strictly with > something I can run under unittest. lxml.html.make_links_absolute() ? -- http://mail.python.org/mailman/listinfo/python-list
Re: Looking for browser emulator
In article <2323f3d7-42ff-4de5-9006-4741e865f...@a9g2000yqo.googlegroups.com>, Jon Clements wrote: > On Oct 14, 3:19 am, Roy Smith wrote: > > I've got to write some tests in python which simulate getting a page of > > HTML from an http server, finding a link, clicking on it, and then > > examining the HTML on the next page to make sure it has certain features. > > > > I can use urllib to do the basic fetching, and lxml gives me the tools > > to find the link I want and extract its href attribute. What's missing > > is dealing with turning the href into an absolute URL that I can give to > > urlopen(). Browsers implement all sorts of stateful logic such as "if > > the URL has no hostname, use the same hostname as the current page". > > I'm talking about something where I can execute this sequence of calls: > > > > urlopen("http://foo.com:/bar";) > > urlopen("/baz") > > > > and have the second one know that it needs to get > > "http://foo.com:/baz";. Does anything like that exist? > > > > I'm really trying to stay away from Selenium and go strictly with > > something I can run under unittest. > > lxml.html.make_links_absolute() ? Interesting. That might be exactly what I'm looking for. Thanks! -- http://mail.python.org/mailman/listinfo/python-list
Re: Looking for browser emulator
IIRC mechanize can do that. -- http://mail.python.org/mailman/listinfo/python-list
Re: Looking for browser emulator
On 10/13/2011 07:19 PM, Roy Smith wrote: I've got to write some tests in python which simulate getting a page of HTML from an http server, finding a link, clicking on it, and then examining the HTML on the next page to make sure it has certain features. I can use urllib to do the basic fetching, and lxml gives me the tools to find the link I want and extract its href attribute. What's missing is dealing with turning the href into an absolute URL that I can give to urlopen(). Browsers implement all sorts of stateful logic such as "if the URL has no hostname, use the same hostname as the current page". I'm talking about something where I can execute this sequence of calls: urlopen("http://foo.com:/bar";) urlopen("/baz") and have the second one know that it needs to get "http://foo.com:/baz";. Does anything like that exist? I'm really trying to stay away from Selenium and go strictly with something I can run under unittest. Try mechanize http://wwwsearch.sourceforge.net/mechanize/ billed as Stateful programmatic web browsing in Python. I handles clicking on links, cookies, logging in/out, and filling in of forms in the same way as a "real" browser, but it's all under programmatic control from Python. In Ubuntu, it's the python-mechanize package. -- http://mail.python.org/mailman/listinfo/python-list
Re: Looking for browser emulator
In article , Gary Herron wrote: > Try mechanize >http://wwwsearch.sourceforge.net/mechanize/ > billed as >Stateful programmatic web browsing in Python. Wow, this is cool, thanks! It even does cookies! -- http://mail.python.org/mailman/listinfo/python-list
argparse zero-length switch
Is it possible to specify a zero-length switch? Here's what I mean. I have a use case where some users would have to enter a section name on the command line almost every time, whereas other users (the ones using only one section) will never have to enter the section name. I don't want to burden users with only one "section" to always enter the section name as a required argument, but I also want to make it as convenient as possible to enter the section name for those who need to. My thought, on the thinking that practicality beats purity, was to create a zero-length switch using a different prefix character (say, @) to indicate the section name. So instead of typing this: sp subcommand -s abc foo bar they could type this: sp subcommand @abc foo bar Admittedly a small benefit. I tried the following but argparse doesn't seem to do what I'd hoped: p = argparse.ArgumentParser(prefix_chars='-@') p.add_argument('@',type=str,dest='section') ar = p.parse_args(['@abc']) This throws an exception claiming unrecognized arguments. Is there a way (that's not a hack) to do this? Since the current behavior of the above code seems to do nothing useful, it could be added to argparse with very low risk of backwards incompatibility. Carl Banks -- http://mail.python.org/mailman/listinfo/python-list