Re: Understanding and dealing with an exception
On 14/10/2012 05:23, Vincent Davis wrote:
I am working on a script to find bad image files. I am using PIL
and specifically image.verify() I have a set of known to be bad image files
to test. I also what to be able to test any file for example a .txt and
deal with the exception.
Currently my code is basically
try:
im = Image.open(ifile)
try:
print(im.verify())
except:
print('Pil image.verify() failed: ' + afile)
except IOError:
print('PIL cannot identify image file: ' + afile)
except:
print(ifile)
print("Unexpected error doing PIL.Image.open():", sys.exc_info()[0])
raise
[snip]
Vincent
You've already had some advice so I'll just point out that a bare except
is a bad idea as you wouldn't even be able to catch a user interrupt.
Try (groan!) catching StandardError instead.
--
Cheers.
Mark Lawrence.
--
http://mail.python.org/mailman/listinfo/python-list
python game develop:framework?
Something good framwork? -- http://mail.python.org/mailman/listinfo/python-list
Re: Understanding and dealing with an exception
On 10/14/2012 4:20 AM, Mark Lawrence wrote: You've already had some advice so I'll just point out that a bare except is a bad idea as you wouldn't even be able to catch a user interrupt. Try (groan!) catching StandardError instead. There are some bare except:s in the stdlib, that adding another is frowned on and removing one is smiled upon. However: >>> StandardError Traceback (most recent call last): File "", line 1, in StandardError NameError: name 'StandardError' is not defined Try: >>> Exception This catches everything except a few things like Keyboard Interrupt that you normally should not catch. >>> BaseException This catches everything, but signals that doing so is probably intentional. -- Terry Jan Reedy -- http://mail.python.org/mailman/listinfo/python-list
Re: python game develop:framework?
On Sun, 14 Oct 2012 01:58:57 -0700, nepaul wrote: > Something good framwork? http://duckduckgo.com/?q=python+%2Bgame+frameworks http://duckduckgo.com/?q=python+%2Bgame+libraries http://blekko.com/ws/?q=python%20game%20framework -- Steven -- http://mail.python.org/mailman/listinfo/python-list
Re: __builtins__ thread-safe / __builtins__ as function?
>> One possible solution is to somehow redirect every __builtins__ to a >> function that returns a different __builtins__ dictionary for each thread >> (such a function already exists). >How exactly does the code reference it? If they're simply referring to >the name __builtins__ at module level, you ought to be able to import >the module, then assign some_module.__builtins__ to your thread-local >object, then call code in it as normal. >An interesting problem, and one where monkeypatching is, imho, justified. >ChrisA Hello, and thanks for your answer. Unfortunately, replacing __builtins__ at import time won't do, because external modules (that is, .py) get imported only once when they are accessed by the first thread, which includes (of course) setting up of __dict__ and __builtins__. When a second thread later accesses this module, it has the same variables in __builtins__ that were added by the same module in first thread And if the second thread then changes the values, I can see these same changes in the first thread. -> The problem is that __builtins__ are global, not thread-safe. The only solution I can see is therfor redirecting __builtins__ to a function which returns a different dictionary for each thread, e.g. by intercepting __builtins__-calls with __readattr__. To do this, I would need my own class to define __readattr__ in since (as far as I know) I can't define __readattr__ in a module, and I can't change metaclass of course. I really don't know how to get around this problem... -- http://mail.python.org/mailman/listinfo/python-list
Re: python game develop:framework?
Pygame is my favorite. It's mature, has good documentation, and has lots of unfinished and finished games on its website. It also supports OpenGL. http://www.pygame.org/ On 10/14/2012 01:58 AM, nepaul wrote: Something good framwork? -- http://mail.python.org/mailman/listinfo/python-list
Re: python game develop:framework?
On 2012-10-14 08:58:57 +, nepaul said: Something good framwork? I just want to sencond PyGame. It's compelling with a good user base and has development activity e.g. patches and improvements etc. are provided. -- http://mail.python.org/mailman/listinfo/python-list
Re: Understanding and dealing with an exception
On 14/10/2012 11:06, Terry Reedy wrote: On 10/14/2012 4:20 AM, Mark Lawrence wrote: You've already had some advice so I'll just point out that a bare except is a bad idea as you wouldn't even be able to catch a user interrupt. Try (groan!) catching StandardError instead. There are some bare except:s in the stdlib, that adding another is frowned on and removing one is smiled upon. However: >>> StandardError Traceback (most recent call last): File "", line 1, in StandardError NameError: name 'StandardError' is not defined Try: >>> Exception This catches everything except a few things like Keyboard Interrupt that you normally should not catch. >>> BaseException This catches everything, but signals that doing so is probably intentional. White Man type with forked fingers? c:\Users\Mark\Cash\Python>python Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> StandardError Perhaps not. c:\Users\Mark\Cash\Python>py -3 Python 3.3.0 (v3.3.0:bd8afb90ebf2, Sep 29 2012, 10:55:48) [MSC v.1600 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> StandardError Traceback (most recent call last): File "", line 1, in NameError: name 'StandardError' is not defined Down to this http://www.python.org/dev/peps/pep-3151/ or was it done earlier? -- Cheers. Mark Lawrence. -- http://mail.python.org/mailman/listinfo/python-list
LinkedIn Python group discussions
I've been sparked into raising the subject as this has just come up "Does Jython/Python fall short of true POSIX thread parallelism?". I'm not qualified to comment and I recognise relatively few names amongst the people who do participate over there. The last thing I'd want would be FUD or worse still complete crap being written in response to any thread and me not being in a position to reply. Is this something for the Python community here to be thinking about? -- Cheers. Mark Lawrence. -- http://mail.python.org/mailman/listinfo/python-list
Re: Feedback on my python framework I'm building.
In article <[email protected]>, Steven D'Aprano wrote: > Remember using PEEK and POKE commands with BASIC back in > 1978? Pretty much impossible in Python. But, trivial to implement as an extension :-) -- http://mail.python.org/mailman/listinfo/python-list
Re: __builtins__ thread-safe / __builtins__ as function?
On Sun, Oct 14, 2012 at 9:36 PM, Juergen Bartholomae wrote: > Unfortunately, replacing __builtins__ at import time won't do, because > external modules (that is, .py) get imported only once when they are > accessed by the first thread, which includes (of course) setting up of > __dict__ and __builtins__. When a second thread later accesses this > module, it has the same variables in __builtins__ that were added by > the same module in first thread Sure. But if they're using __builtins__ by name, then you can simply replace that with something that checks a thread id and responds with that thread's dictionary. There's no particular reason for __builtins__ to be a module (as far as I know!), so you should be able to replace it with an object of your own class. I think DaveA's recommendation is good. Make a "Version 2.0" of your system, with a different way of doing global state. ChrisA -- http://mail.python.org/mailman/listinfo/python-list
Re: Understanding and dealing with an exception
On 2012-10-14 05:23, Vincent Davis wrote:
I am working on a script to find bad image files. I am using PIL
and specifically image.verify() I have a set of known to be bad image
files to test. I also what to be able to test any file for example a
.txt and deal with the exception.
Currently my code is basically
try:
im = Image.open(ifile)
try:
print(im.verify())
except:
print('Pil image.verify() failed: ' + afile)
except IOError:
print('PIL cannot identify image file: ' + afile)
except:
print(ifile)
print("Unexpected error doing PIL.Image.open():", sys.exc_info()[0])
raise
[snip]
I notice that you have both "ifile" and "afile". Is that correct?
--
http://mail.python.org/mailman/listinfo/python-list
pyw program not displaying unicode characters properly
Hi everybody ! Our language lab at INALCO is using a nice language parsing and analysis program written in Python. As you well know a lot of languages use characters that can only be handled by unicode. Here is an example of the problem we have on some Windows computers. In the attached screen-shot (DELETED), the bambara character (a sort of epsilon) is displayed as a square. The fact that it works fine on some computers and fails to display the characters on others suggests that it is a user configuration issue: Recent observations: it's OK on Windows 7 but not on Vista computers, it's OK on some Windows XP computers, it's not on others Windows XP... On the computers where it fails, we've tried to play with options in the International settings, but are not able to fix it. Any idea that would help us go in the right direction, or just fix it, is welcome ! Thanks! I ni ce! (in bambara, a language spoken in Mali, West Africa) -- http://mail.python.org/mailman/listinfo/python-list
Re: pyw program not displaying unicode characters properly
jjmeric writes: > Our language lab at INALCO is using a nice language parsing and analysis > program written in Python. As you well know a lot of languages use > characters that can only be handled by unicode. > > Here is an example of the problem we have on some Windows computers. > In the attached screen-shot (DELETED), Usenet has no attachments. Place your document on some publicly accessible web-servers, if needed. > the bambara character (a sort of epsilon) is displayed as a square. > > The fact that it works fine on some computers and fails to display the > characters on others suggests that it is a user configuration issue: > Recent observations: it's OK on Windows 7 but not on Vista computers, > it's OK on some Windows XP computers, it's not on others Windows XP... You need a font that has glyphs for all unicode characters (at least the ones you use). See http://en.wikipedia.org/wiki/Unicode_font for a start. I don't know enough about Windows to give you a name. Anyone? -- Alain. P/S: and this has not much to do with python, which will happily send out any unicode char, and cannot know which ones your terminal/whatever will be able to display -- http://mail.python.org/mailman/listinfo/python-list
Re: pyw program not displaying unicode characters properly
On 2012-10-14 17:55, jjmeric wrote:
Hi everybody !
Our language lab at INALCO is using a nice language parsing and analysis
program written in Python. As you well know a lot of languages use
characters that can only be handled by unicode.
Here is an example of the problem we have on some Windows computers.
In the attached screen-shot (DELETED),
the bambara character (a sort of epsilon) is displayed as a square.
The fact that it works fine on some computers and fails to display the
characters on others suggests that it is a user configuration issue:
Recent observations: it's OK on Windows 7 but not on Vista computers,
it's OK on some Windows XP computers, it's not on others Windows XP...
On the computers where it fails, we've tried to play with options in the
International settings, but are not able to fix it.
Any idea that would help us go in the right direction, or just fix it,
is welcome !
Thanks!
I ni ce! (in bambara, a language spoken in Mali, West Africa)
A square is shown when the font being used doesn't contain a visible
glyph for the codepoint.
Which codepoint is it? What is the codepoint's name?
Here's how to find out:
>>> hex(ord("Ɛ"))
'0x190'
>>> import unicodedata
>>> unicodedata.name("Ɛ")
'LATIN CAPITAL LETTER OPEN E'
--
http://mail.python.org/mailman/listinfo/python-list
Re: Understanding and dealing with an exception
Yes afile is the file name and extension, ifile is the full file name and
path.
Thanks
Vincent
On Sunday, October 14, 2012, MRAB wrote:
> On 2012-10-14 05:23, Vincent Davis wrote:
>
>> I am working on a script to find bad image files. I am using PIL
>> and specifically image.verify() I have a set of known to be bad image
>> files to test. I also what to be able to test any file for example a
>> .txt and deal with the exception.
>> Currently my code is basically
>>
>> try:
>> im = Image.open(ifile)
>> try:
>> print(im.verify())
>> except:
>> print('Pil image.verify() failed: ' + afile)
>> except IOError:
>> print('PIL cannot identify image file: ' + afile)
>> except:
>> print(ifile)
>> print("Unexpected error doing PIL.Image.open():", sys.exc_info()[0])
>> raise
>>
>> [snip]
> I notice that you have both "ifile" and "afile". Is that correct?
>
> --
> http://mail.python.org/**mailman/listinfo/python-list
>
--
Vincent Davis
720-301-3003
--
http://mail.python.org/mailman/listinfo/python-list
Re: pyw program not displaying unicode characters properly
Alain, MRAB Thank you for prompt responses. What they suggest to me is I should look into what font is being used by this Python for Windows program. I am not the programmer, so not idea where to look for. The program settings do not include a choice for display font. The font that used for display resembles a sort of Helvetica, but no idea how to check this. Is there some sort of defaut font, or is there in Python or Python for Windows any ini file where the font used can be seen, eventually changed to a more appropriate one with all the required glyphs (like Lucida Sans Unicode has). Thanks again... -- http://mail.python.org/mailman/listinfo/python-list
Re: Understanding http proxies
Olive wrote: > >it seems when I read the code above that the proxy acts mostly as an >orinary server with respect to the client except that it is supposed to >receive the full URL instead of just the path. Am I right? Is there any >documentation on what an http proxy is supposed to implement. Consider the ways HTTP could have been implemented. Say we have a request to get http://www.bigsite.com/pictures/index.html . One way HTTP could have been implemented is by sending this request to the server at www.bigsite.com: GET /pictures/index.html HTTP/1.0 If that were how HTTP were done, you could not implement a proxy, because there isn't enough information for any intermediates to know where the request had to end up. Instead, http looks like this: GET /pictures/index.html HTTP/1.1 Host: www.bigsite.com Now, even if this is sent to someone who is not "www.bigsite.com", that receipient can tell exactly who is supposed to get the message. So, a web proxy receives requests intended for other sites, and forwards them on, possibly after restricting or modifying them. That's it. -- Tim Roberts, [email protected] Providenza & Boekelheide, Inc. -- http://mail.python.org/mailman/listinfo/python-list
Tkinter how to access the widget by name
I'm a little teapot ... himself the question: if I want to appeal to the widget, knowing his name... ? # appropriated the name of the widget label = Label(frame, width = 40, text='text', name = 'name') ... name_='name' configure(name_) ... def configure(name_) #And how can that be? # At least let the text you want to change I beg you .. -- http://mail.python.org/mailman/listinfo/python-list
Re: pyw program not displaying unicode characters properly
In article ,
MRAB wrote:
> Which codepoint is it? What is the codepoint's name?
>
> Here's how to find out:
>
> >>> hex(ord("?"))
> '0x190'
> >>> import unicodedata
> >>> unicodedata.name("?")
> 'LATIN CAPITAL LETTER OPEN E'
Wow, I never knew you could do that. I usually just google for "unicode
0190" :-)
--
http://mail.python.org/mailman/listinfo/python-list
Re: pyw program not displaying unicode characters properly
On Sun, 14 Oct 2012 19:19:33 +0200, Alain Ketterlin wrote: > Usenet has no attachments. *snarfle* You almost owed me a new monitor. I nearly sprayed my breakfast all over it. "Usenet has no attachments" -- that's like saying that the Web has no advertisements. Maybe the websites you visit have no advertisements, but there's a *vast* (and often disturbing) part of the WWW that has advertisements, some sites are nothing but advertisements. And so it is with Usenet, there is a vast (and often disturbing) area of Usenet containing attachments, and often nothing but attachments. The vast volume of all these attachments are such that it is getting hard to find ISPs that provide free access to binary newsgroups, but some still do, and dedicated for-fee Usenet providers do too. -- Steven -- http://mail.python.org/mailman/listinfo/python-list
Re: pyw program not displaying unicode characters properly
On Sun, Oct 14, 2012 at 1:36 PM, jjmeric wrote: > Is there some sort of defaut font, or is there in Python or Python for > Windows any ini file where the font used can be seen, eventually changed > to a more appropriate one with all the required glyphs (like Lucida Sans > Unicode has). No, this is up to the program and the GUI framework it uses. Do you have any idea which one that would be (e.g. Tkinter, wxPython, PyQT, etc.)? -- http://mail.python.org/mailman/listinfo/python-list
Use the appropriate forum for recruitment (was: Client Needs Linux Admin position in Pleasanton, CA)
ram dev writes: > Good Day, > We have an urgent Contract Opening in Pleasanton, CA. Please don't use this discussion forum for recruitment. For Python job recruiters and seekers, we have a separate Python Job Board http://www.python.org/community/jobs/>. > Job Title: Linux Admin You should find a Linux job board for that. -- \ “I distrust those people who know so well what God wants them | `\to do to their fellows, because it always coincides with their | _o__) own desires.” —Susan Brownell Anthony, 1896 | Ben Finney -- http://mail.python.org/mailman/listinfo/python-list
Re: pyw program not displaying unicode characters properly
In article , [email protected] says... > > On Sun, Oct 14, 2012 at 1:36 PM, jjmeric wrote: > > Is there some sort of defaut font, or is there in Python or Python for > > Windows any ini file where the font used can be seen, eventually changed > > to a more appropriate one with all the required glyphs (like Lucida Sans > > Unicode has). > > No, this is up to the program and the GUI framework it uses. Do you > have any idea which one that would be (e.g. Tkinter, wxPython, PyQT, > etc.)? Thanks Ian I have no idea, but - thanks to you - I now have an interesting question to ask back to the team who works on this in Russia... more later ! -- http://mail.python.org/mailman/listinfo/python-list
Re: trouble with nested closures: one of my variables is missing...
On 13Oct2012 22:07, Chris Rebert wrote: | On Saturday, October 13, 2012, Cameron Simpson wrote: | > I'm having some trouble with closures when defining a decorator. | | | > However, I can't make my make_file_property function work. I've stripped | > the code down and it does this: | | | > Traceback (most recent call last): | > File "foo.py", line 21, in | > def f(self, foo=1): | > File "foo.py", line 4, in file_property | > return make_file_property()(func) | > File "foo.py", line 10, in made_file_property | > if attr_name is None: | > UnboundLocalError: local variable 'attr_name' referenced before | > assignment | > | > Observe above that 'unset_object' is in locals(), but not 'attr_name'. | > This surprises me. | > | > The stripped back code (missing the internals of the file property | > watcher) looks like this: | > | > import sys | > | > def file_property(func): | > return make_file_property()(func) | > | > def make_file_property(attr_name=None, unset_object=None, poll_rate=1): | > print >>sys.stderr, "make_file_property(attr_name=%r, unset_object=%r, | > poll_rate=%r): locals()=%r" % (attr_name, unset_object, poll_rate,locals()) | > def made_file_property(func): | | You're missing a "nonlocal" declaration here. | | print >>sys.stderr, "made_file_property(func=%r): locals()=%r" % | > (func, locals()) | > if attr_name is None: | > attr_name = '_' + func.__name__ | | | You assign to it, but there's no nonlocal declaration, so Python thinks | it's a local var, hence your error. But 'unset_object' is in locals(). Why one and not the other? Obviously there's something about closures here I'm missing. | Pardon my brevity and some lack of trimming; I'm on a smartphone and in a | rush. No worries. Thansk for the rpely. -- Cameron Simpson A clean desk is the sign of a blank mind. -- http://mail.python.org/mailman/listinfo/python-list
Re: Aggressive language on python-list
Zero Piraeus writes: > I'm a mostly passive subscriber to this list - my posts here over the > years could probably be counted without having to take my socks off - > so perhaps I have no right to comment, but I've noticed a marked > increase in aggressive language here lately, so I'm putting my head > above the parapet to say that I don't appreciate it. Thanks for speaking up, Zero. You are certainly not alone in this. “Ignore the trolls” is not helpful advice if one wants to maintain a useful and friendly environment. If the hostile behaviour you refer to goes unchallenged, the helpful contributors become drowned out and eventually leave from fatigue. So ignoring trolls is not enough if we want the friendly and useful conversations to continue. Ignoring hostile behaviour also sends the wrong signal to newcomers and casual observers: that this is not a community which cares about actively upholding good standards of behaviour. What's needed, IMO, is a difficult balance: there needs to be calm, low-volume, but firm response to instances of hostile behaviour, making clear by demonstration – especially to the people only observing the discussion – that such hostility is unwanted and not to be tolerated in our community. This is difficult to achieve, though, because if *lots* of people do it, the thread turns into a dogpile that is also unhelpful, and usually departs from civil and rational discussion quickly. All of this turns away more good people (again, often people who otherwise weeren't involved in the particular discussion), so is counter-productive. So my request is: Be selective, and be calm. Don't respond deep in an existing exchange, especially one where many others have already responded to that person. Be selective and only respond when yours will be one of the first in the thread. (And that's not a mandate to have a quick trigger :-) Don't keep responding in a series of exchanges; it makes your messages difficult for newcomers to tell apart from the voluminous noise of the troll. When responding to a troll, don't be inflammatory yourself – that is *exactly* what they seek, a continuation and escalation of the conflict. Point out exactly what you think they're doing wrong, simply and calmly, and don't go on at length. Keep the innocent reader in mind, don't care too much about the troll reading your response. To those who feel the need to “fight” the trolls: thank you for caring enough about the Python community to try to defend it. But I'm concerned that you tend to pour fuel on the flames yourself, and I hope you can work to avoid becoming the monster you fight. > And, yes, I know bringing it up could be construed as stoking the > flames ... but, well, "silence = acquiescence" and all that. Agreed. Thanks again. -- \“Intellectual property is to the 21st century what the slave | `\ trade was to the 16th.” —David Mertz | _o__) | Ben Finney -- http://mail.python.org/mailman/listinfo/python-list
Re: Feedback on my python framework I'm building.
On 10/14/2012 08:48 AM, Roy Smith wrote: > In article <[email protected]>, > Steven D'Aprano wrote: > >> Remember using PEEK and POKE commands with BASIC back in >> 1978? Pretty much impossible in Python. > But, trivial to implement as an extension :-) PEEK and POKE were intended to be used with memory mapped devices. Simplest example is the 6502 chip, which had no I/O bus -- it was all memory mapped. Want to change baud rate? poke a byte somewhere. These days, the only device I can think of that's usually memory mapped is the video. And few programs talk to it that way. Now, INP and OUT (or various similar names) were for doing port I/o. But I suspect that modern systems aren't going to let you do much of that either. -- DaveA -- http://mail.python.org/mailman/listinfo/python-list
Re: Feedback on my python framework I'm building.
On 2012-10-14 23:38, Dave Angel wrote: On 10/14/2012 08:48 AM, Roy Smith wrote: In article <[email protected]>, Steven D'Aprano wrote: Remember using PEEK and POKE commands with BASIC back in 1978? Pretty much impossible in Python. But, trivial to implement as an extension :-) PEEK and POKE were intended to be used with memory mapped devices. Simplest example is the 6502 chip, which had no I/O bus -- it was all memory mapped. Want to change baud rate? poke a byte somewhere. These days, the only device I can think of that's usually memory mapped is the video. And few programs talk to it that way. Now, INP and OUT (or various similar names) were for doing port I/o. But I suspect that modern systems aren't going to let you do much of that either. It depends on the CPU. Some have specialised instructions for I/O, others don't. -- http://mail.python.org/mailman/listinfo/python-list
Re: Aggressive language on python-list
On Oct 14, 3:39 pm, Dwight Hutto wrote: > I'm not a know it all, but when attacked personally I defend myself, > and those can turn into flame wars. I'm not wanting this to turn into another round of flames, but I do want to highlight that there's a big difference between being asked to moderate your language on a public list and a personal attack. > Your plonks are irrelevant > These things can get nasty quick. > So if you have virgin eyes, then kill file it > If you want it, bring it Posturing like this doesn't help either and starts to fall into the "aggressive language" territory this thread is concerned with. -- http://mail.python.org/mailman/listinfo/python-list
Re: trouble with nested closures: one of my variables is missing...
On Sun, Oct 14, 2012 at 3:54 PM, Cameron Simpson wrote: > | You assign to it, but there's no nonlocal declaration, so Python thinks > | it's a local var, hence your error. > > But 'unset_object' is in locals(). Why one and not the other? > Obviously there's something about closures here I'm missing. 'unset_object' is in locals because it's a free variable and those are included in locals(), and it has a value. 'attr_name' is not in locals because while it's a local variable, it has not been assigned to yet. It has no value and an attempt to reference it at that point would result in an UnboundLocalError. -- http://mail.python.org/mailman/listinfo/python-list
Re: Understanding http proxies
On 13Oct2012 20:43, Olive wrote: | I am trying to understand how to build an http proxy server in python, | and I have found the following example: | http://www.oki-osk.jp/esc/python/proxy/ | | But I do not have found an exact description of what exactly a proxy | server is suppose to do (all references gice only the basic principe of | proxy that I know). In the following model | | Client <-> Proxy <-> Server | | it seems when I read the code above that the proxy acts mostly as an | orinary server with respect to the client except that it is supposed to | receive the full URL instead of just the path. Am I right? Is there any | documentation on what an http proxy is supposed to implement. As mentioned elsewhere, in HTTP 1.0 you get a full URL in the opening line. In HTTP 1.1 you get the path component in the opening line and the host part in the Host: header of the request. Have a read of RFC2616 (which defines HTTP 1.0): http://tools.ietf.org/html/rfc2616 It has sections on proxies, too, outlining which they must do beyond what a plain HTTP server must do (not much, but a few things, and there are proxy-specific authentication fields available too): Proxy Servers http://tools.ietf.org/html/rfc2616#section-8.1.3 Proxy Authenticate http://tools.ietf.org/html/rfc2616#section-14.33 Cheers, -- Cameron Simpson There's two kinds of climbers...smart ones, and dead ones. - Don Whillans -- http://mail.python.org/mailman/listinfo/python-list
Re: trouble with nested closures: one of my variables is missing...
On 14Oct2012 18:32, Ian Kelly wrote: | On Sun, Oct 14, 2012 at 3:54 PM, Cameron Simpson wrote: | > | You assign to it, but there's no nonlocal declaration, so Python thinks | > | it's a local var, hence your error. | > | > But 'unset_object' is in locals(). Why one and not the other? | > Obviously there's something about closures here I'm missing. | | 'unset_object' is in locals because it's a free variable and those are | included in locals(), and it has a value. | | 'attr_name' is not in locals because while it's a local variable, it | has not been assigned to yet. It has no value and an attempt to | reference it at that point would result in an UnboundLocalError. Can you elaborate a bit on that? The only place in my code that unset_object is set is as a default parameter in make_file_property (snippet): def make_file_property(attr_name=None, unset_object=None, poll_rate=1): print >>sys.stderr, "make_file_property(attr_name=%r, unset_object=%r, poll_rate=%r): locals()=%r" % (attr_name, unset_object, poll_rate,locals()) def made_file_property(func): print >>sys.stderr, "made_file_property(func=%r): locals()=%r" % (func, locals()) if attr_name is None: attr_name = '_' + func.__name__ and attr_name is set there also. Is attr_name omitted from locals() in made_file_property _because_ I have an assignment statement? If that's the case, should I be doing this (using distinct names for the closure variable and the function local variable): def make_file_property(attr_name=None, unset_object=None, poll_rate=1): print >>sys.stderr, "make_file_property(attr_name=%r, unset_object=%r, poll_rate=%r): locals()=%r" % (attr_name, unset_object, poll_rate,locals()) def made_file_property(func): print >>sys.stderr, "made_file_property(func=%r): locals()=%r" % (func, locals()) if attr_name is None: my_attr_name = '_' + func.__name__ else: my_attr_name = attr_name lock_name = my_attr_name + '_lock' def getprop(self): with getattr(self, lock_name): pass return getattr(self, my_attr_name, unset_object) i.e. deliberately _not_ assigning to attr_name as as to _avoid_ masking the outer attr_name from the inner locals()? BTW, doing that works. Is that The True Path for this situation? If so, I think I now understand what's going on: Python has inspected the inner function and not placed the outer 'attr_name' into locals() _because_ the inner function seems to have its own local attr_name in use, which should not be pre-tromped. -- Cameron Simpson Nothing is so smiple that it can't get screwed up. -- http://mail.python.org/mailman/listinfo/python-list
Re: trouble with nested closures: one of my variables is missing...
On Sun, Oct 14, 2012 at 7:08 PM, Cameron Simpson wrote: > On 14Oct2012 18:32, Ian Kelly wrote: > | 'attr_name' is not in locals because while it's a local variable, it > | has not been assigned to yet. It has no value and an attempt to > | reference it at that point would result in an UnboundLocalError. > > Can you elaborate a bit on that? The only place in my code that > unset_object is set is as a default parameter in make_file_property > (snippet): > > def make_file_property(attr_name=None, unset_object=None, poll_rate=1): > print >>sys.stderr, "make_file_property(attr_name=%r, unset_object=%r, > poll_rate=%r): locals()=%r" % (attr_name, unset_object, poll_rate,locals()) > def made_file_property(func): > print >>sys.stderr, "made_file_property(func=%r): locals()=%r" % (func, > locals()) > if attr_name is None: > attr_name = '_' + func.__name__ > > and attr_name is set there also. > > Is attr_name omitted from locals() in made_file_property _because_ I > have an assignment statement? Yes. Syntactically, a variable is treated as local to a function if it is assigned to somewhere in that function and there is no explicit global or nonlocal declaration. > If that's the case, should I be doing this (using distinct names for the > closure variable and the function local variable): > > def make_file_property(attr_name=None, unset_object=None, poll_rate=1): > print >>sys.stderr, "make_file_property(attr_name=%r, unset_object=%r, > poll_rate=%r): locals()=%r" % (attr_name, unset_object, poll_rate,locals()) > def made_file_property(func): > print >>sys.stderr, "made_file_property(func=%r): locals()=%r" % (func, > locals()) > if attr_name is None: > my_attr_name = '_' + func.__name__ > else: > my_attr_name = attr_name > lock_name = my_attr_name + '_lock' > def getprop(self): > with getattr(self, lock_name): > pass > return getattr(self, my_attr_name, unset_object) > > i.e. deliberately _not_ assigning to attr_name as as to _avoid_ masking > the outer attr_name from the inner locals()? > > BTW, doing that works. Is that The True Path for this situation? That's a perfectly good way to do it as long as you don't want to actually change the value of the outer attr_name. If you did, then you would either declare the variable as nonlocal (Python 3.x only) or use a container (e.g. a 1-element list), which would allow you to modify the contents of the container without actually assigning to the variable. > If so, I think I now understand what's going on: Python has inspected > the inner function and not placed the outer 'attr_name' into locals() > _because_ the inner function seems to have its own local attr_name > in use, which should not be pre-tromped. Exactly right. -- http://mail.python.org/mailman/listinfo/python-list
Re: trouble with nested closures: one of my variables is missing...
On 14Oct2012 19:27, Ian Kelly wrote: | On Sun, Oct 14, 2012 at 7:08 PM, Cameron Simpson wrote: | > Is attr_name omitted from locals() in made_file_property _because_ I | > have an assignment statement? | | Yes. Syntactically, a variable is treated as local to a function if | it is assigned to somewhere in that function and there is no explicit | global or nonlocal declaration. Aha. Good. | > If that's the case, should I be doing this (using distinct names for the | > closure variable and the function local variable): | > | > def make_file_property(attr_name=None, unset_object=None, poll_rate=1): [...] | > if attr_name is None: | > my_attr_name = '_' + func.__name__ | > else: | > my_attr_name = attr_name [...] | > i.e. deliberately _not_ assigning to attr_name as as to _avoid_ masking | > the outer attr_name from the inner locals()? | > | > BTW, doing that works. Is that The True Path for this situation? | | That's a perfectly good way to do it as long as you don't want to | actually change the value of the outer attr_name. Well, I don't need to - using a distinct local variable will do the job. I just hadn't realised I needed the extra level of naming. | If you did, then | you would either declare the variable as nonlocal (Python 3.x only) ... which is why I couldn't find such in the 2.7.3 doco ... | or | use a container (e.g. a 1-element list), which would allow you to | modify the contents of the container without actually assigning to the | variable. Ah. Yeah, tacky; I've done that kind of thing in the past on occasion but using a distinct local name is much cleaner here, and probably usually. | > If so, I think I now understand what's going on: Python has inspected | > the inner function and not placed the outer 'attr_name' into locals() | > _because_ the inner function seems to have its own local attr_name | > in use, which should not be pre-tromped. | | Exactly right. Thanks for the explaination. Now I know a New Thing. Cheers, -- Cameron Simpson "Vy can't ve chust climb?" - John Salathe -- http://mail.python.org/mailman/listinfo/python-list
Can't run any script without it failing due to calling tkinter for no reason
Hello All, I'm running python 3.2 on Freebsd 9.0 Release and I must've screwed up my environment somehow, because now I can't run any script without it failing and throwing: ** IDLE can't import Tkinter. Your Python may not be configured for Tk. ** Yet none of my scripts use tkinter nor call that module. They're simple network scraping scripts. I use pydev and eclipse and must've fat fingered something that screwed up my python environment, but I haven't the slightest clue on how to fix it. I can run my scripts in idle no problem, but I've built them as command line apps. I've tried uninstalling python 3 and reinstalling it to no avail. What did I do, and how can I fix it? Thanks, Adam -- http://mail.python.org/mailman/listinfo/python-list
Re: Aggressive language on python-list
: On 14 October 2012 17:58, Ben Finney wrote: > What's needed, IMO, is a difficult balance: there needs to be calm, > low-volume, but firm response to instances of hostile behaviour, making > clear by demonstration – especially to the people only observing the > discussion – that such hostility is unwanted and not to be tolerated in > our community. Yep. I also think such responses are more effective coming from people who already have some weight[1] around here (which was part of the reason I was hesitant to bring it up myself). Good to see a few names I'd put in that bracket appear in this thread :-) -[]z. [1] "Who are you calling fat?" replies in 3, 2 ... -- http://mail.python.org/mailman/listinfo/python-list
Re: Can't run any script without it failing due to calling tkinter for no reason
On Sun, Oct 14, 2012 at 6:47 PM, wrote: > Hello All, > > > I'm running python 3.2 on Freebsd 9.0 Release and I must've screwed up my > environment somehow, because now I can't run any script without it failing > and throwing: > ** IDLE can't import Tkinter. Your Python may not be configured for Tk. ** > > Yet none of my scripts use tkinter nor call that module. They're simple > network scraping scripts. I use pydev and eclipse and must've fat fingered > something that screwed up my python environment, but I haven't the slightest > clue on how to fix it. I can run my scripts in idle no problem, but I've > built them as command line apps. I've tried uninstalling python 3 and > reinstalling it to no avail. What did I do, and how can I fix it? > > Thanks, > Adam > -- IDLE uses Tkinter. If you don't have Tk installed, just run the scripts from the terminal or pick a different IDE. -- http://mail.python.org/mailman/listinfo/python-list
Re: Aggressive language on python-list
On 10/13/2012 09:46 AM, Etienne Robillard wrote: > OT. you obviously has no clue what agressive behavior mean. :-) > > So please continue with the passive tone saying nothing relevant > and login to facebook. There's a saying in English. Hit pigeons flutter. I have not been impressed with your last few posts. In fact your last couple of posts have been irrelevant and unhelpful to say the least. As you are looking for a maintainer to take over your django add-on project, such an attitude is not going to attract developers to take over your baby. Some of this could be the language barrier, but really such posturing isn't necessary. -- http://mail.python.org/mailman/listinfo/python-list
Re: Can't run any script without it failing due to calling tkinter for no reason
On Sunday, October 14, 2012 7:19:24 PM UTC-7, Benjamin Kaplan wrote: > On Sun, Oct 14, 2012 at 6:47 PM, wrote: > > > Hello All, > > > > > > > > > I'm running python 3.2 on Freebsd 9.0 Release and I must've screwed up my > > environment somehow, because now I can't run any script without it failing > > and throwing: > > > ** IDLE can't import Tkinter. Your Python may not be configured for Tk. ** > > > > > > Yet none of my scripts use tkinter nor call that module. They're simple > > network scraping scripts. I use pydev and eclipse and must've fat fingered > > something that screwed up my python environment, but I haven't the > > slightest clue on how to fix it. I can run my scripts in idle no problem, > > but I've built them as command line apps. I've tried uninstalling python 3 > > and reinstalling it to no avail. What did I do, and how can I fix it? > > > > > > Thanks, > > > Adam > > > -- > > > > IDLE uses Tkinter. If you don't have Tk installed, just run the > > scripts from the terminal or pick a different IDE. Hi Ben, Your reply instantly triggered my aha moment and I figured it out. I had an import to idlelib in one of my modules dependencies from an eclipse auto-import. I feel foolish for not seeing it sooner. I use eclipse and pydev and use a module to do all the heavy network code for my front end command line scripts. In that module I used a function variable called host where eclipse, oh so helpfully, gave me the option of resolving an import I never asked for by automatically importing some module from idlelib. It was from idlelib import host as HOST or something to that effect. Damn eclipse does that to me from time to time and it happens so fast I don't even see what it does. Thanks for the reply and helping me see my erroneous ways. Cheers, Adam -- http://mail.python.org/mailman/listinfo/python-list
Re: Aggressive language on python-list
On 10/14/2012 03:58 PM, Ben Finney wrote:> Zero Piraeus writes: >[...] > What's needed, IMO, is a difficult balance: there needs to be calm, > low-volume, but firm response to instances of hostile behaviour, making > clear by demonstration – especially to the people only observing the > discussion – that such hostility is unwanted and not to be tolerated in > our community. >[...] The problem with this is that while there may sometimes be a weak consensus, different people have different ideas about what is "wrong". Thus when a member of this esteemed group was recently attacked as racist, for punning another member's name when responding somewhat heatedly, I, according to your view, should have jumped in to point out unfair accusations of racism are not only wrong, but hurt the cause of anti-racism by devaluing such charges when they are legitimate. No, what you propose will only reduce the signal to noise ratio and increase the amount of off-topic arguments. The old tried-and-true advise is still the best: don't feed the trolls. Experience with three decades of mailing lists and usenet has shown that most of them give up and go somewhere else when they don't get a response. Of course this does not apply when you are the one attacked (or perceive you are) -- in that case your advice for a low-key factual response is quite appropriate. (And then drop it.) > To those who feel the need to “fight” the trolls: thank you for caring > enough about the Python community to try to defend it. But I'm concerned > that you tend to pour fuel on the flames yourself, and I hope you can > work to avoid becoming the monster you fight. > >> And, yes, I know bringing it up could be construed as stoking the >> flames ... but, well, "silence = acquiescence" and all that. > > Agreed. Thanks again. No. Silence != acquiescence as a few minutes of thought will show. The fact that it is often repeated does not make it true. -- http://mail.python.org/mailman/listinfo/python-list
Re: Aggressive language on python-list
On Oct 15, 1:22 pm, [email protected] wrote: > Thus when a member of this esteemed group > was recently attacked as racist, for punning another member's > name when responding somewhat heatedly, Again, there is a difference between "attacking" someone "as racist" and *criticising* their *comments* as *possibly* racist. When the person whose name was being punned said that they themselves were unsure whether it was intended as a racial attack, then the behaviour was worth commenting on. If anything, I initially *joked* about it as a means of trying to point out the issue in a non-offensive way. If there was any "attacking" going on, it was in the criticised party's responses. > hurt the cause of anti-racism My response had nothing to do with "agendas" and "causes" and everything to do with wanting to keep specific forms of discourse off this list. I had identical issues with the same person's use of "bitch" and "whore"; I cannot begin to fathom how stating that they're unacceptable to use here is in any way damaging to the anti-sexism position, or an attack on the person saying them. -- http://mail.python.org/mailman/listinfo/python-list
Re: pyw program not displaying unicode characters properly
Steven D'Aprano writes: > On Sun, 14 Oct 2012 19:19:33 +0200, Alain Ketterlin wrote: > >> Usenet has no attachments. > > *snarfle* > > You almost owed me a new monitor. I nearly sprayed my breakfast all over > it. [...] I owe you nothing, and you can do whatever you want with your breakfast. > "Usenet has no attachments" -- that's like saying that the Web has no > advertisements. Maybe the websites you visit have no advertisements, but > there's a *vast* (and often disturbing) part of the WWW that has > advertisements, some sites are nothing but advertisements.[...] I really don't know what you are ranting about here. See Dennis' response. Any idea about a reasonable complete unicode font on Windows? /That/ would be helpful. -- Alain. -- http://mail.python.org/mailman/listinfo/python-list
Re: Basic JSON question: Do I really need the quotes
On Friday, 12 October 2012 16:09:14 UTC+2, (unknown) wrote:
> Hi,
>
> I need to define some configuration in a file that will be manually created.
>
> Internally, the data will be stored as a dict, which contains various
> properties related to a design
>
> e.g. Design Name, dependencies, lists of files (and associated libraries).
>
> json seemed a quick an easy way of achieving this
>
> Anyway, in simple terms my question - if I know everything is a string, how
> can I omit the quotation marks?
>
>
>
> i.e. I can do
>
>
>
> >>> json.loads('{"mykey":["data0", "data1"]}')
>
> {u'mykey': [u'data0', u'data1']}
>
>
>
> But I would like to do
>
> >>> json.loads('{mykey:[data0, data1]}')
>
> Traceback (most recent call last):
>
>
>
> The problem is that I don't want to make users have to type redundant
> characters.
>
> Is it possible?
>
> Thanks,
>
> Steven
Hi,
Thanks to everyone for the responses. I'll look at YAML and ConfigParser.
Steven
--
http://mail.python.org/mailman/listinfo/python-list
