Re: PyChecker under python's virtualenv

2010-02-04 Thread Diez B. Roggisch

Am 04.02.10 01:52, schrieb Steve Holden:

Diez B. Roggisch wrote:

Am 03.02.10 22:46, schrieb soltys:

Hi Everybody,
I've been doing some test on pythons' virtualenv and recently I've
decided to run PyChecker. But I'm having some difficulties with importing
modules available only on virtualenv by pychecker. As if it was
trying to use systemwide python.
I've googled about it, and found nothing in this area.
I installed pychecker using python setup.py install
from virtualenv. I looked at pychecker script - it uses correct python.


I doubt that it uses the "correct python", because then you wouldn't
have the problems you have.

I don't use pychecker, but pylint. And there, the system-wide command
uses the system's python - which of course doesn't know anything about
virtualenv.

There are two solutions to this problem:

  - install py(lint|checker) into your virtualenv.


See the OP's original assertion:


I installed pychecker using python setup.py install
from virtualenv. I looked at pychecker script - it uses correct python.


Isn't that "installing into his virtualenv"?


You are right, it reads like that. I should have read it better.

All I can say is that even a system-wide pylint with my recipe above 
gives me no troubles.


Diez
--
http://mail.python.org/mailman/listinfo/python-list


Re: Dreaming of new generation IDE

2010-02-04 Thread purui

> This is obvious even in the Python documentation itself where one
> frequently asks oneself "Uhh... so what is parameter X supposed to be...
> a string... a list... ?"
>

That is partially why I created this search engine for python, to see
what parameters other people feed in.
http://nullege.com/

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Passing parameters in URL

2010-02-04 Thread Diez B. Roggisch

I'm not sure what you mean by that.  Obviously if users want to record
their own conversations, then I can't stop them, but that's much
different than a non-participant in the conversation leaving a recorder
running 24/7.  Is that so hard to understand?


Is it so hard to understand that this is not about laws and rights, but 
about technical properties of the HTTP-protocol?


Your web-based chat uses HTTP, no P2P-protocol, and thus the service 
provider *can* log conversations. I don't say he should, I don't say I 
want that, I don't say there are now laws that prevent them from doing 
so, all I say is he *can*.



I certainly didn't feel that saving or not saving client conversations
on the server side was up to my discretion.  When I found that the
default server configuration caused conversations to be logged then I
was appalled.


Then stop logging. Or get a hosting-provider that allows you to 
configure it to strip QUERY_STRINGS from log-entries. And if they refuse 
to, maybe using POST solves the issue.


But wait, there is

http://www.cyberciti.biz/faq/apache-mod_dumpio-log-post-data/

So what if they run that?

So, for the umpteenth time: data sent over the wire can be recorded. 
From the user's POV, your nitpicking of who's the actual culprit - the 
IT-guys, or the programmers - is fruitless. You have a nice anecdote 
where switching from GET to POST allowed you to trick whoever wasn't 
acting to your wishes. Good for you. But John B. and your posts indicate 
that using POST is inherently more secure. It *isn't*.




Do you think the phone company has the right to record all your phone
calls if they feel like it (absent something like a law enforcement
investigation)?  What about coffee shops that you visit with your
friends?  It is not up to their discretion.  They have a positive
obligation to not do it.  If you think they are doing it on purpose
without your authorization, you should notify the FBI or your
equivalent, not just "don't use it".  If they find they are doing it
inadvertently, they have to take measures to make it stop.  That is the
situation I found myself in, because of the difference in how servers
treat GET vs.  POST.


If they have a positive obligation not to do it, it doesn't matter if 
they run their service over GET or POST.


Again, this is not about laws and what service providers should or must 
do. It's about POST vs. GET, and if either of them is more secure or 
not. It isn't.



Diez
--
http://mail.python.org/mailman/listinfo/python-list


Re: How to guard against bugs like this one?

2010-02-04 Thread Tim Golden

On 03/02/2010 16:17, kj wrote:

Boy, that was dumb of me.  The above apology was meant for Stephen
Hansen, not Steve Holden.  I guess this is now a meta-apology...
(Sheesh.)


You see? That's what I like about the Python community:
people even apologise for apologising :)

TJG
--
http://mail.python.org/mailman/listinfo/python-list


Re: test -- please ignore

2010-02-04 Thread tinnews
kj  wrote:
> In <87wryumvff@benfinney.id.au> Ben Finney  
> writes:
> 
> >kj  writes:
> 
> >> (my replies in a different comp.lang.python thread are getting
> >> rejected by the server; i have no problem posting to alt.test; and
> >> i'm trying to toubleshoot the problem further.)
> 
> >Thank you for this explanation. It is important to know that you've
> >tried the less obtrusive diagnostics first. Good hunting.
> 
> I figured out the immediate reason for the failure: when replying
> to *certain posts*, my newsreader omits the Newsgroups header from
> the response.  Why it does this is still a mystery to me, but at
> least now I know what to look out for.  Then again, I use the
> "venerable" (i.e. decrepit) nn as newsreader, so this discovery
> probably won't help many of those reading this...

I used to use nn, now I use tin which is fairly similar and still
being maintained.

-- 
Chris Green

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Passing parameters in URL

2010-02-04 Thread John Bokma
Alan Harris-Reid  writes:

> I have a web-page where each row in a grid has edit/delete buttons to
> enable the user to maintain a selected record on another page.  The
> buttons are in the form of a link with href='/item_edit?id=123', but
> this string appears in the URL and gives clues as to how to bypass the
> correct sequence of events, and could be risky if they entered the URL
> directly (especially when it comes to deleting records).

You should *never* use a GET request to do actions like deleting
records. You already are aware of it being risky, so don't do this. You
should use GET for getting information, and POST for modifying information.

> Is there another way of passing a record-id to a method
> a) without it appearing in the URL?

Use a POST request. Note that the user still has to select something,
and that this information is send by the browser, and hence the user can
see this information (and maybe others), and repeat the action with, for
example, a Python program.

> b) without the user being able to fathom-out how to attach which id to
> which URL?

I am not sure what you want to prevent here. If you're afraid that user
A can delete things that belong user B, than "hiding" things or making
them "hard to guess" are not going to help much. If you have several
users, you must use some login procedure (and sessions).

> As each link contains row-id, I guess there is nothing to stop someone
> from getting the id from the page source-code.  Is it safe to use the
> above href method if I test for authorised credentials (user/password
> stored as session variables, perhaps?) before performing the
> edit/delete action?

Yes. But still make sure that session ids are not easy to guess, and
expire. And make very sure that session ids can't leak to others.

Moreover, each time you modify a database use POST. One could argue to
also use POST for logging out, otherwise another site might be able to
log your users out if they visit that site.

-- 
John Bokma   j3b

Hacking & Hiking in Mexico -  http://johnbokma.com/
http://castleamber.com/ - Perl & Python Development
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Passing parameters in URL

2010-02-04 Thread John Bokma
"Diez B. Roggisch"  writes:

> Am 03.02.10 19:11, schrieb John Bokma:
>> Alan Harris-Reid  writes:
>>
>>> I have a web-page where each row in a grid has edit/delete buttons to
>>> enable the user to maintain a selected record on another page.  The
>>> buttons are in the form of a link with href='/item_edit?id=123', but
>>> this string appears in the URL and gives clues as to how to bypass the
>>> correct sequence of events, and could be risky if they entered the URL
>>> directly (especially when it comes to deleting records).
>>
>> You should *never* use a GET request to do actions like deleting
>> records. You already are aware of it being risky, so don't do this. You
>> should use GET for getting information, and POST for modifying information.
>
> You should *never* say never, because there might be situations where
> exceptions from rules are valid. This is one such cases. Making this a
> post means that you need to resort to javascript to populate & submit
> a hidden HTML-form. Just for the sake of a POST.

Make each edit/delete button a submit button and optionally style it.

> Also, your claim of it being more risky is simply nonsense. GET is a
> tiny bit more prone to tinkering by the average user. But calling this
> less risky is promoting security by obscurity, at most.

Maybe you should think about what happens if someone posts:
http://example.com/item_delete?id=123";> to a popular forum...

-- 
John Bokma   j3b

Hacking & Hiking in Mexico -  http://johnbokma.com/
http://castleamber.com/ - Perl & Python Development
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Passing parameters in URL

2010-02-04 Thread Diez B. Roggisch

Am 03.02.10 19:11, schrieb John Bokma:

Alan Harris-Reid  writes:


I have a web-page where each row in a grid has edit/delete buttons to
enable the user to maintain a selected record on another page.  The
buttons are in the form of a link with href='/item_edit?id=123', but
this string appears in the URL and gives clues as to how to bypass the
correct sequence of events, and could be risky if they entered the URL
directly (especially when it comes to deleting records).


You should *never* use a GET request to do actions like deleting
records. You already are aware of it being risky, so don't do this. You
should use GET for getting information, and POST for modifying information.


You should *never* say never, because there might be situations where 
exceptions from rules are valid. This is one such cases. Making this a 
post means that you need to resort to javascript to populate & submit a 
hidden HTML-form. Just for the sake of a POST.


And there are people who say "you should *never* write web-apps that 
only work with enabled javascript"... catch 22.


Also, your claim of it being more risky is simply nonsense. GET is a 
tiny bit more prone to tinkering by the average user. But calling this 
less risky is promoting security by obscurity, at most.


Diez

--
http://mail.python.org/mailman/listinfo/python-list


Re: Passing parameters in URL

2010-02-04 Thread Diez B. Roggisch

Am 03.02.10 23:09, schrieb Paul Rubin:

"Diez B. Roggisch"  writes:

Also, your claim of it being more risky is simply nonsense. GET is a
tiny bit more prone to tinkering by the average user. But calling this
less risky is promoting security by obscurity, at most.


GET parameters also tend to get recorded in the http logs of web proxies
and web servers while POST parameters usually aren't.  This was an
annoyance in a web chat package I fooled with for a while.  Because the
package sent user messages by GET, if I ran the software the way the
developers set it up, the contents of all the user conversations stayed
in my server logs.  I was unable to convince the chat package
maintainers that this was a bug.  I ended up doing some fairly kludgy
hack to prevent the logging.


If somebody happens to have access to a proxy & it's logs, he can as 
well log the request body.


Don't get me wrong, I don't want to propagate the use of GET as one and 
only method for parameter passing. But whatever is transmitted clear 
text over the wire is subject to inspection of all hops in between. Use 
SSL if you bother.


Diez
--
http://mail.python.org/mailman/listinfo/python-list


Re: Passing parameters in URL

2010-02-04 Thread Diez B. Roggisch

Am 04.02.10 00:39, schrieb Paul Rubin:

"Diez B. Roggisch"  writes:

Of course only information not gathered is really safe
information. But every operation that has side-effects is reproducable
anyway, and if e.g. your chat-app has a history, you can as well log
the parameters.


No I can't.  The chat-app history would be on the client, not the
server, so I'd have no access to it.  Put another way: as server
operator, I'm like the owner of a coffee shop.  I can't stop patrons
from recording their own conversations with each other, and it's not
even really my business whether they do that.  But it would be
outrageous for the shop owner to record the conversations of patrons.


Which is the exact thing that happens when you use an email-provider 
with IMAP. Or google wave. Or groups. Or facebook. Or twitter. Which I 
wouldn't call outrageous.


This discussion moves away from the original question: is there anything 
inherently less secure when using GET vs. POST. There isn't.


Users can forge both kind of requests easy enough, whoever sits in the 
middle can access both, and it's at the discretion of the service 
provider to only save what it needs to. If you don't trust it, don't use it.


Diez
--
http://mail.python.org/mailman/listinfo/python-list


Re: Passing parameters in URL

2010-02-04 Thread Paul Rubin
Alan Harris-Reid  writes:
> As each link contains row-id, I guess there is nothing to stop someone
> from getting the id from the page source-code.  Is it safe to use the
> above href method if I test for authorised credentials (user/password
> stored as session variables, perhaps?) before performing the
> edit/delete action?

Well, if it's really ok for them to delete records programmatically even
if it's ok for them to delete through the web site.  I'd probably
encrypt the post parameters if this was a concern.  
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: simple and fast platform independent IPC

2010-02-04 Thread Paul Rubin
News123  writes:
> Perhaps I'll stick initially with xmlrpc, as it is quite simple,
> though a little heavy.  I just have to see how to deal with servers
> which are not up, no more up, being restarted.

Something wrong wtih nagios?
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Passing parameters in URL

2010-02-04 Thread Paul Rubin
"Diez B. Roggisch"  writes:
> Also, your claim of it being more risky is simply nonsense. GET is a
> tiny bit more prone to tinkering by the average user. But calling this
> less risky is promoting security by obscurity, at most.

GET parameters also tend to get recorded in the http logs of web proxies
and web servers while POST parameters usually aren't.  This was an
annoyance in a web chat package I fooled with for a while.  Because the
package sent user messages by GET, if I ran the software the way the
developers set it up, the contents of all the user conversations stayed
in my server logs.  I was unable to convince the chat package
maintainers that this was a bug.  I ended up doing some fairly kludgy
hack to prevent the logging.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Passing parameters in URL

2010-02-04 Thread Paul Rubin
"Diez B. Roggisch"  writes:
>> But it would be outrageous for the shop owner to record the
>> conversations of patrons.
>
> Which is the exact thing that happens when you use an email-provider
> with IMAP. Or google wave. Or groups. Or facebook. Or twitter. Which I
> wouldn't call outrageous.

Those are not comparable.  IMAP is a storage service, and groups,
facebook, and twitter are publishing systems (ok, I've never understood
quite what Google Wave is).  Yes, by definition, your voice mail
provider (like IMAP) has to save recordings of messages people leave
you, but that's a heck of a lot different than your phone carrier
recording your real-time conversations.  Recording live phone
conversations by a third party is called a "wiretap" and doing it
without suitable authorization can get you in a heck of a lot of
trouble.

> This discussion moves away from the original question: is there
> anything inherently less secure when using GET vs. POST. There isn't.

Well, the extra logging of GET parameters is not inherent to the
protocol, but it's an accidental side effect that server ops may have to
watch out for.

> Users can forge both kind of requests easy enough, whoever sits in the
> middle can access both, 

I'm not sure what you mean by that.  Obviously if users want to record
their own conversations, then I can't stop them, but that's much
different than a non-participant in the conversation leaving a recorder
running 24/7.  Is that so hard to understand?

Interception from the middle is addressed by SSL, though that relies on
the PKI certificate infrastructure, which while somewhat dubious, is
better than nothing.

> and it's at the discretion of the service provider to only save what
> it needs to.  If you don't trust it, don't use it.

I certainly didn't feel that saving or not saving client conversations
on the server side was up to my discretion.  When I found that the
default server configuration caused conversations to be logged then I
was appalled.

Do you think the phone company has the right to record all your phone
calls if they feel like it (absent something like a law enforcement
investigation)?  What about coffee shops that you visit with your
friends?  It is not up to their discretion.  They have a positive
obligation to not do it.  If you think they are doing it on purpose
without your authorization, you should notify the FBI or your
equivalent, not just "don't use it".  If they find they are doing it
inadvertently, they have to take measures to make it stop.  That is the
situation I found myself in, because of the difference in how servers
treat GET vs.  POST.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Overcoming python performance penalty for multicore CPU

2010-02-04 Thread Paul Rubin
John Nagle  writes:
> Analysis of each domain is
> performed in a separate process, but each process uses multiple
> threads to read process several web pages simultaneously.
>
>Some of the threads go compute-bound for a second or two at a time as
> they parse web pages.  

You're probably better off using separate processes for the different
pages.  If I remember, you were using BeautifulSoup, which while very
cool, is pretty doggone slow for use on large volumes of pages.  I don't
know if there's much that can be done about that without going off on a
fairly messy C or C++ coding adventure.  Maybe someday someone will do
that.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Overcoming python performance penalty for multicore CPU

2010-02-04 Thread Paul Rubin
John Nagle  writes:
>There's enough intercommunication between the threads working on
> a single site that it's a pain to do them as subprocesses. And I
> definitely don't want to launch subprocesses for each page; the
> Python load time would be worse than the actual work.  The
> subprocess module assumes you're willing to launch a subprocess
> for each transaction.

Why not just use socketserver and have something like a fastcgi?
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: test -- please ignore

2010-02-04 Thread kj
In <87wryumvff@benfinney.id.au> Ben Finney  
writes:

>kj  writes:

>> (my replies in a different comp.lang.python thread are getting
>> rejected by the server; i have no problem posting to alt.test; and
>> i'm trying to toubleshoot the problem further.)

>Thank you for this explanation. It is important to know that you've
>tried the less obtrusive diagnostics first. Good hunting.

I figured out the immediate reason for the failure: when replying
to *certain posts*, my newsreader omits the Newsgroups header from
the response.  Why it does this is still a mystery to me, but at
least now I know what to look out for.  Then again, I use the
"venerable" (i.e. decrepit) nn as newsreader, so this discovery
probably won't help many of those reading this...
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Passing parameters in URL

2010-02-04 Thread Diez B. Roggisch

Am 04.02.10 03:52, schrieb Nobody:

On Wed, 03 Feb 2010 14:09:07 -0800, Paul Rubin wrote:


Also, your claim of it being more risky is simply nonsense. GET is a
tiny bit more prone to tinkering by the average user. But calling this
less risky is promoting security by obscurity, at most.


GET parameters also tend to get recorded in the http logs of web proxies
and web servers while POST parameters usually aren't.


More significantly, they'll appear in the Referer: header for any link the
user follows from the page, so they're visible to anyone who can get a
link to their site onto the page (whether,  or
whatever).

Even if this isn't possible at the moment, will you remember to fix it the
first time you allow an off-site link?

You should assume that anything which goes into a GET request is visible
to the entire world. Don't put anything even remotely private in there.


You mean like

  http://www.google.de/search?q=dirty+buttsex

? Which is the key example for when to use GET - non-modifying queries.

I agree though that you have to be cautious about that, and using POST 
makes it easier to do so.


Diez
--
http://mail.python.org/mailman/listinfo/python-list


Re: Dreaming of new generation IDE

2010-02-04 Thread Vladimir Ignatov
> That is partially why I created this search engine for python, to see
> what parameters other people feed in.
> http://nullege.com/

Thank you for excellent effort! I found it very useful and start using
it on almost everyday basis. It's much simple to learn from real live
examples.

Vladimir Ignatov
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Passing parameters in URL

2010-02-04 Thread Bruno Desthuilliers

Alan Harris-Reid a écrit :
I have a web-page where each row in a grid has edit/delete buttons to 
enable the user to maintain a selected record on another page.  The 
buttons are in the form of a link with href='/item_edit?id=123', but 
this string appears in the URL and gives clues as to how to bypass the 
correct sequence of events, and could be risky if they entered the URL 
directly (especially when it comes to deleting records).


Basic HTTP stuff - this is definitely not Python-related.

Do yourself (and your users / customers / etc) a favor and read the HTTP 
rfc. "GET" requests should NOT modify the server state. At least use 
"POST" requests for anything that Create/Update/Delete resources.


For the record, someone once had serious problems with GET requests 
deleting records - turned out to be a very bad idea when a robot started 
following these links...




Is there another way of passing a record-id to a method


href="/item/23/edit"
href="/item/edit/23"

etc


a) without it appearing in the URL?
b) without the user being able to fathom-out how to attach which id to 
which URL?


Wrong solution. The correct solution is to
1/ make correct use of the request method (GET and POST at least).
2/ make sure the user performing the action has the permission to do it.


1/ won't protect your data from malicious users, but will at least avoid 
accidental mistakes.


2/ by checking the user's perms when handling the POST request of course 
- not by hidding "forbidden" urls.


As each link contains row-id, I guess there is nothing to stop someone 
from getting the id from the page source-code.


Nor even from trying any other id (brute-force attack).

 Is it safe to use the 
above href method if I test for authorised credentials (user/password 
stored as session variables, perhaps?) before performing the edit/delete 
action?


cf above.

I am currently using CherryPy 3.2, but I guess the theory could apply to 
any HTTP framework or web app..


Indeed.


--
http://mail.python.org/mailman/listinfo/python-list


Re: Passing parameters in URL

2010-02-04 Thread Paul Rubin
"Diez B. Roggisch"  writes:
> Your web-based chat uses HTTP, no P2P-protocol, and thus the service
> provider *can* log conversations. I don't say he should, I don't say I
> want that, I don't say there are now laws that prevent them from doing
> so, all I say is he *can*.

Sure, my complaint is that the default setup caused this to actually
happen so lots of people using that software were recording user
conversations without realizing it and maybe without caring.  This
is a bad erosion as I see it.

> Then stop logging. Or get a hosting-provider that allows you to
> configure it to strip QUERY_STRINGS from log-entries. And if they
> refuse to, maybe using POST solves the issue.

I did stop logging.  There wasn't an issue with the hosting provider
since I was running the server myself.  But I had to resort to some ugly
software kludge to stop logging those particular strings.  More
frustratingly, I filed a bug report about the issue against the chat
software but the conversation was sort of like the one you and I are
having now.  I just couldn't convince them that there was a problem and
that they should change the default.

> http://www.cyberciti.biz/faq/apache-mod_dumpio-log-post-data/
> So what if they run that?

That sounds like something someone would have to go out of their way to
install and use.  It's not the default.  Of course if someone is
malicious they can do all sorts of nasty stuff.  A coffeeshop that
wanted to mess with me on purpose wouldn't have to do high tech crap
like recording my conversations--they could just poison my coffee.  I
have to trust them to not do this on purpose, but then I see a situation
where their coffee sweetener accidentaly has a harmful chemical, so of
course I'd ask them to do something about it.

> So, for the umpteenth time: data sent over the wire can be recorded. 

And for the umpteenth time, I'm less concerned about "can be" than "is".
POST isn't logged unless you go to some lengths to have it logged.  GET
is logged unless you go to some lengths to prevent it.  It's not enough
in a software deployment to only consider what actions are possible.
It's important to make sure that the default actions are the right ones.

> If they have a positive obligation not to do it, it doesn't matter if
> they run their service over GET or POST.

GET makes it harder for them to fulfill their obligations.  As a
security nerd, I saw what was happening and took measures against it,
but a more typical operator might never notice or care.

There is also the matter of the referer header which an anon mentioned,
though it didn't apply to this particular situation because of how
the application worked.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Passing parameters in URL

2010-02-04 Thread Paul Rubin
Bruno Desthuilliers  writes:
>> The buttons are in the form of a link with href='/item_edit?id=123',
> ...At least use "POST" requests for anything that Create/Update/Delete
> resources.

There's also the issue that a user can change "123" to "125" and
possibly mess with someone else's resource, unless you use some server
side authentication.  Or just seeing how often the numbers change could
reveal patterns about what other users are doing.  I always think it's
best to encrypt anything sensitive like that, to avoid leaking any info.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Dreaming of new generation IDE

2010-02-04 Thread Vladimir Ignatov
> http://sourceforge.net/mailarchive/message.php?msg_name=9c768dc61001121642t5bd1a7ddmd1fe9e088e1d9...@mail.gmail.com

Thanks a lot! That is a great reference (a must read for everybody
interested). Reading just this: "Internally at Google we have a
language-neutral representation shared by all our language analyzers,"
make me jumping ;-)  Googlers can't be wrong.

Vladimir Ignatov
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Passing parameters in URL

2010-02-04 Thread Bruno Desthuilliers

Paul Rubin a écrit :

Bruno Desthuilliers  writes:

The buttons are in the form of a link with href='/item_edit?id=123',

...At least use "POST" requests for anything that Create/Update/Delete
resources.


There's also the issue that a user can change "123" to "125" and
possibly mess with someone else's resource,
unless you use some server
side authentication.


What I said IIRC.


 Or just seeing how often the numbers change could
reveal patterns about what other users are doing.  I always think it's
best to encrypt anything sensitive like that, to avoid leaking any info.


Depends on how "sensitive" it really is.
--
http://mail.python.org/mailman/listinfo/python-list


Common area of circles

2010-02-04 Thread Shashwat Anand
Given 'n' circles and the co-ordinates of their center, and the radius of
all being equal i.e. 'one', How can I take out the intersection of their
area.

hope the picture makes it clear
http://imagebin.us/images/p5qeo7hgc3547pnyrb6.gif
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Overcoming python performance penalty for multicore CPU

2010-02-04 Thread Anh Hai Trinh
On Feb 4, 10:46 am, John Nagle  wrote:
>
>     There's enough intercommunication between the threads working on
> a single site that it's a pain to do them as subprocesses. And I
> definitely don't want to launch subprocesses for each page; the
> Python load time would be worse than the actual work.  The
> subprocess module assumes you're willing to launch a subprocess
> for each transaction.

You could perhaps use a process pool inside each domain worker to work
on the pages?  There is multiprocessing.Pool and other
implementations.

For examples, in this library, you can s/ThreadPool/ProcessPool/g and
this example would work: .

If you want to DIY, with multiprocessing.Lock/Pipe/Queue, I don't
understand why it would be more of a pain to write your threads as
processes.


// aht
http://blog.onideas.ws
-- 
http://mail.python.org/mailman/listinfo/python-list


learn Sql Server 2000 2005 2008

2010-02-04 Thread groups_ads12
www.sqlserver.learn.net.in 

sql server


sql server 2005


sql server 2008


sql server 2000


microsoft sql server


sql server management studio


microsoft sql server 2005


ms sql server


microsoft sql server 2000


sql server 2005 download


sql server hosting


microsoft sql server 2008


sql server jobs


sql server stored procedure


sql server 2005 tutorial


sql server query


sql server reporting services


sql server tutorial


ms sql server 2005


download sql server


microsoft sql server management studio express


sql server 2003


sql server enterprise manager


sql server integration services


sql server backup


sql server data types


sql server dba


sql server management


sql server replication


microsoft sql server 2005 express edition


ms sql server 2000


mssql server


sql server 2005 reporting services


sql server client


sql server cursor


sql server database


sql server performance


sql server profiler


sql server training


ms sql server 2008


sql server 2008 developer edition


sql server developer


sql server manager


sql server trigger


sql server update


sql server2005


micr

Building a multiline string

2010-02-04 Thread lallous
Hello

Maybe that's already documented, but it seems the parser accepts to
build a long string w/o really using the first method:

# Method1
x = "line1" + \ # cannot use comments!
"line2"+ \
"line3"

and instead using a list with one element like this:

# Method2
x = [
"line1" # can use comments
"line2"
"line3"
][0]

Or:
# Method3
x = (
"line1" # can use comments
"line2"
"line3"
)

(Not that I don't want new lines in the strings)

Now should I be using method 2 or 3 in production code?

--
Elias
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Common area of circles

2010-02-04 Thread Chris Rebert
On Thu, Feb 4, 2010 at 2:39 AM, Shashwat Anand  wrote:
> Given 'n' circles and the co-ordinates of their center, and the radius of
> all being equal i.e. 'one', How can I take out the intersection of their
> area.

How is this at all specific to Python?

This also sounds suspiciously like homework, which you should know
this list is unlikely to give direct answers to, though you might be
able to get a few pointers or some general suggestions.

Cheers,
Chris
--
Back to toiling away on CSE 105 HW#3
http://blog.rebertia.com
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Common area of circles

2010-02-04 Thread Shashwat Anand
I wanted some general suggestion/tips only

On Thu, Feb 4, 2010 at 5:11 PM, Chris Rebert  wrote:

> On Thu, Feb 4, 2010 at 2:39 AM, Shashwat Anand 
> wrote:
> > Given 'n' circles and the co-ordinates of their center, and the radius of
> > all being equal i.e. 'one', How can I take out the intersection of their
> > area.
>
> How is this at all specific to Python?
>
> This also sounds suspiciously like homework, which you should know
> this list is unlikely to give direct answers to, though you might be
> able to get a few pointers or some general suggestions.
>
> Cheers,
> Chris
> --
> Back to toiling away on CSE 105 HW#3
> http://blog.rebertia.com
>
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Common area of circles

2010-02-04 Thread Xavier Ho
I'm not sure what you're after. Are you after how to calculate the area? Or
are you trying to graph it? Or an analytical solution?

What do you mean by "take out the intersection"?

-Xav

On Thu, Feb 4, 2010 at 9:47 PM, Shashwat Anand wrote:

> I wanted some general suggestion/tips only
>
>
> On Thu, Feb 4, 2010 at 5:11 PM, Chris Rebert  wrote:
>
>> On Thu, Feb 4, 2010 at 2:39 AM, Shashwat Anand 
>> wrote:
>> > Given 'n' circles and the co-ordinates of their center, and the radius
>> of
>> > all being equal i.e. 'one', How can I take out the intersection of their
>> > area.
>>
>> How is this at all specific to Python?
>>
>> This also sounds suspiciously like homework, which you should know
>> this list is unlikely to give direct answers to, though you might be
>> able to get a few pointers or some general suggestions.
>>
>> Cheers,
>> Chris
>> --
>> Back to toiling away on CSE 105 HW#3
>> http://blog.rebertia.com
>>
>
>
> --
> http://mail.python.org/mailman/listinfo/python-list
>
>
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: How to guard against bugs like this one?

2010-02-04 Thread Steve Holden
Tim Golden wrote:
> On 03/02/2010 16:17, kj wrote:
>> Boy, that was dumb of me.  The above apology was meant for Stephen
>> Hansen, not Steve Holden.  I guess this is now a meta-apology...
>> (Sheesh.)
> 
> You see? That's what I like about the Python community:
> people even apologise for apologising :)
> 
QOTW?

regards
 Steve
-- 
Steve Holden   +1 571 484 6266   +1 800 494 3119
PyCon is coming! Atlanta, Feb 2010  http://us.pycon.org/
Holden Web LLC http://www.holdenweb.com/
UPCOMING EVENTS:http://holdenweb.eventbrite.com/

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Common area of circles

2010-02-04 Thread Shashwat Anand
I want to calculate areas.
like for two circles (0, 0) and (0, 1) : the output is '1.228370'

similarly my aim is to take 'n' co-ordinates, all of radius '1' and
calculate the area common to all.
The best I got was monte-carlo methods which is inefficient. Is there any
other approach possible.

On Thu, Feb 4, 2010 at 5:24 PM, Xavier Ho  wrote:

> I'm not sure what you're after. Are you after how to calculate the area? Or
> are you trying to graph it? Or an analytical solution?
>
> What do you mean by "take out the intersection"?
>
> -Xav
>
> On Thu, Feb 4, 2010 at 9:47 PM, Shashwat Anand 
> wrote:
>
>> I wanted some general suggestion/tips only
>>
>>
>> On Thu, Feb 4, 2010 at 5:11 PM, Chris Rebert  wrote:
>>
>>> On Thu, Feb 4, 2010 at 2:39 AM, Shashwat Anand 
>>> wrote:
>>> > Given 'n' circles and the co-ordinates of their center, and the radius
>>> of
>>> > all being equal i.e. 'one', How can I take out the intersection of
>>> their
>>> > area.
>>>
>>> How is this at all specific to Python?
>>>
>>> This also sounds suspiciously like homework, which you should know
>>> this list is unlikely to give direct answers to, though you might be
>>> able to get a few pointers or some general suggestions.
>>>
>>> Cheers,
>>> Chris
>>> --
>>> Back to toiling away on CSE 105 HW#3
>>> http://blog.rebertia.com
>>>
>>
>>
>> --
>> http://mail.python.org/mailman/listinfo/python-list
>>
>>
>
> --
> http://mail.python.org/mailman/listinfo/python-list
>
>
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Passing parameters in URL

2010-02-04 Thread Steve Holden
Paul Rubin wrote:
> "Diez B. Roggisch"  writes:
>>> But it would be outrageous for the shop owner to record the
>>> conversations of patrons.
>> Which is the exact thing that happens when you use an email-provider
>> with IMAP. Or google wave. Or groups. Or facebook. Or twitter. Which I
>> wouldn't call outrageous.
> 
> Those are not comparable.  IMAP is a storage service, and groups,
> facebook, and twitter are publishing systems (ok, I've never understood
> quite what Google Wave is).  Yes, by definition, your voice mail
> provider (like IMAP) has to save recordings of messages people leave
> you, but that's a heck of a lot different than your phone carrier
> recording your real-time conversations.  Recording live phone
> conversations by a third party is called a "wiretap" and doing it
> without suitable authorization can get you in a heck of a lot of
> trouble.
> 
Unless you happen to be following the illegal instructions of the
President of the United States, in which case Congress will
retro-actively alter the law to void your offenses and provide you with
legal immunity for your wrong-doing. Assuming you are a large telephone
company and not a private individual.

>> This discussion moves away from the original question: is there
>> anything inherently less secure when using GET vs. POST. There isn't.
> 
> Well, the extra logging of GET parameters is not inherent to the
> protocol, but it's an accidental side effect that server ops may have to
> watch out for.
> 
>> Users can forge both kind of requests easy enough, whoever sits in the
>> middle can access both, 
> 
> I'm not sure what you mean by that.  Obviously if users want to record
> their own conversations, then I can't stop them, but that's much
> different than a non-participant in the conversation leaving a recorder
> running 24/7.  Is that so hard to understand?
> 
> Interception from the middle is addressed by SSL, though that relies on
> the PKI certificate infrastructure, which while somewhat dubious, is
> better than nothing.
> 
>> and it's at the discretion of the service provider to only save what
>> it needs to.  If you don't trust it, don't use it.
> 
> I certainly didn't feel that saving or not saving client conversations
> on the server side was up to my discretion.  When I found that the
> default server configuration caused conversations to be logged then I
> was appalled.
> 
> Do you think the phone company has the right to record all your phone
> calls if they feel like it (absent something like a law enforcement
> investigation)?  What about coffee shops that you visit with your
> friends?  It is not up to their discretion.  They have a positive
> obligation to not do it.  If you think they are doing it on purpose
> without your authorization, you should notify the FBI or your
> equivalent, not just "don't use it".  If they find they are doing it
> inadvertently, they have to take measures to make it stop.  That is the
> situation I found myself in, because of the difference in how servers
> treat GET vs.  POST.

A lot will depend on the terms of service of the network supply
contract. Most vendors take pains to ensure that such "innocent" logging
(i.e. the maintenance by their servers of logging information, which may
under subpoena or similar legal coercion be given up to law enforcement
authorities as "business records") is permitted. If you have signed the
contract, then they have the right to log that data.

Caveat emptor.

regards
 Steve
-- 
Steve Holden   +1 571 484 6266   +1 800 494 3119
PyCon is coming! Atlanta, Feb 2010  http://us.pycon.org/
Holden Web LLC http://www.holdenweb.com/
UPCOMING EVENTS:http://holdenweb.eventbrite.com/

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Building a multiline string

2010-02-04 Thread Ulrich Eckhardt
Just for the record: Neither of the below methods actually produce a
multiline string. They only spread a string containing one line over
multiple lines of source code.

lallous wrote:
> Maybe that's already documented, but it seems the parser accepts to
> build a long string w/o really using the first method:
> 
> # Method1
> x = "line1" + \ # cannot use comments!
> "line2"+ \
> "line3"

Well, obviously you can't use comments like that there. The point of the
backslash is that it continues the current logical line over the
_immediately_ _following_ newline. If anything follows, that obviously
doesn't work.

> and instead using a list with one element like this:
> 
> # Method2
> x = [
> "line1" # can use comments
> "line2"
> "line3"
> ][0]

This basically makes use of the fact that "this" "is" "one" "string" and not
four strings.

> # Method3
> x = (
> "line1" # can use comments
> "line2"
> "line3"
> )

This uses the same, only that this time it uses brackets which cause an
expression to extend to multiple lines.

> (Not that I don't want new lines in the strings)

You don't not want or you don't want newlines? Depending on that, you could
also do this:

# method 4
x = "line1"\
"line2"\
"line3"

or maybe

# method 5
x = """line1
line2
line3
"""


> Now should I be using method 2 or 3 in production code?

I'd go for 3 or 4. 2 is basically a hack (you could do the same with a
dictionary, or a tuple, not only a list). 1 will actually create strings
and then concatenate them (unless Python is smart enough to optimize that),
but it allows adding expressions in the middle.

Uli

-- 
Sator Laser GmbH
Geschäftsführer: Thorsten Föcking, Amtsgericht Hamburg HR B62 932

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Common area of circles

2010-02-04 Thread Bearophile
Shashwat Anand:
> > Given 'n' circles and the co-ordinates of their center, and the radius of
> > all being equal i.e. 'one', How can I take out the intersection of their
> > area.

I can see two possible solutions, both approximate. In both solutions
you first look if there are a pair of circles that don't intersect, in
this case the intersect area is zero. You also remove all circles
fully contained in another circle.

The first strategy is easy to do, but it probably leads to a lower
precision. Then you can sample randomly many times the rectangular
area that surely contains all circles. You count how many of those
random points are inside all circles. This gives you an approximate
area of their intersection. Increasing the points numbers slowly
increases the result precision.

The second strategy is more complex. You convert your circles into
polygons with a fixed number of vertices (like 50 or 100 or 1000 or
more. This number is constant even if the circles don't have all the
same radius). So you can turn this circle into a simple mesh of
triangles (all vertices are on the circumference). Then you "subtract"
the second polygonalized circle, this can create a hole and split
triangles in pieces, and so on with successive circles. At the end you
can compute the total area of the triangles left. This is doable, but
you need time to do implement this. The advantage is that the
numerical precision of the result is probably higher. If you implement
this second solution you can implement the first one too, and use it
as a test to avoid bugs. Visualizing the triangles with Pygame or
MatPlotLib can be useful to look for bugs.

Bye,
bearophile
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Common area of circles

2010-02-04 Thread Shashwat Anand
I needed 6 decimal places of accuracy, so first way of solution will not
work for my case. However, your second strategy seems promising. Working on
it. Thanks :D
~l0nwlf

On Thu, Feb 4, 2010 at 5:49 PM, Bearophile  wrote:

> Shashwat Anand:
> > > Given 'n' circles and the co-ordinates of their center, and the radius
> of
> > > all being equal i.e. 'one', How can I take out the intersection of
> their
> > > area.
>
> I can see two possible solutions, both approximate. In both solutions
> you first look if there are a pair of circles that don't intersect, in
> this case the intersect area is zero. You also remove all circles
> fully contained in another circle.
>
> The first strategy is easy to do, but it probably leads to a lower
> precision. Then you can sample randomly many times the rectangular
> area that surely contains all circles. You count how many of those
> random points are inside all circles. This gives you an approximate
> area of their intersection. Increasing the points numbers slowly
> increases the result precision.
>
> The second strategy is more complex. You convert your circles into
> polygons with a fixed number of vertices (like 50 or 100 or 1000 or
> more. This number is constant even if the circles don't have all the
> same radius). So you can turn this circle into a simple mesh of
> triangles (all vertices are on the circumference). Then you "subtract"
> the second polygonalized circle, this can create a hole and split
> triangles in pieces, and so on with successive circles. At the end you
> can compute the total area of the triangles left. This is doable, but
> you need time to do implement this. The advantage is that the
> numerical precision of the result is probably higher. If you implement
> this second solution you can implement the first one too, and use it
> as a test to avoid bugs. Visualizing the triangles with Pygame or
> MatPlotLib can be useful to look for bugs.
>
> Bye,
> bearophile
> --
> http://mail.python.org/mailman/listinfo/python-list
>
-- 
http://mail.python.org/mailman/listinfo/python-list


read a process output with subprocess.Popen

2010-02-04 Thread Ashok Prabhu
Hi,

I m trying a read the output of a process which is running
continuously with subprocess.Popen. However the readline() method
hangs for the process to finish. Please let me know if the following
code can be made to work with subprocess.Popen with threads or queues.
I tried a lot of methods but to no avail. It would be great if someone
can make it work.

import subprocess

p1 = subprocess.Popen('tail -f /var/log/
messages',stdout=subprocess.PIPE,shell=True)
p2 = subprocess.Popen('grep
something',stdin=p1.stdout,stdout=subprocess.PIPE,shell=True)

while 1:
line = p2.stdout.readline()
print line

Thanks,
~Ashok.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Python and Ruby

2010-02-04 Thread Marius Gedminas
On Feb 4, 1:03 am, John Bokma  wrote:
> Jonathan Gardner  writes:
> > I can explain all of Python in an hour;
>
> OK, in that case I would say give it a go. Put it on YouTube, or write a
> blog post about it (or post it here). I am sure you will help a lot of
> people that way.

Someone already did: "Advanced Python or Understanding Python"
http://video.google.com/videoplay?docid=7760178035196894549
(76 minutes).

Worth watching.

Regards,
--
Marius Gedminas
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Building a multiline string

2010-02-04 Thread Steve Holden
lallous wrote:
> Hello
> 
> Maybe that's already documented, but it seems the parser accepts to
> build a long string w/o really using the first method:
> 
> # Method1
> x = "line1" + \ # cannot use comments!
> "line2"+ \
> "line3"
> 
> and instead using a list with one element like this:
> 
> # Method2
> x = [
> "line1" # can use comments
> "line2"
> "line3"
> ][0]
> 
> Or:
> # Method3
> x = (
> "line1" # can use comments
> "line2"
> "line3"
> )
> 
> (Not that I don't want new lines in the strings)
> 
> Now should I be using method 2 or 3 in production code?
> 
I should have thought it was pretty obvious that method 2 creates a list
and then performs an indexing operation on it. These are completely
unnecessary operations, which are avoided in method 3 which is a simple
parenthesised expression.

So why anyone would want to adopt method 2, which is also mess clear as
source code, is beyond me.

regards
 Steve
-- 
Steve Holden   +1 571 484 6266   +1 800 494 3119
PyCon is coming! Atlanta, Feb 2010  http://us.pycon.org/
Holden Web LLC http://www.holdenweb.com/
UPCOMING EVENTS:http://holdenweb.eventbrite.com/

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Repeat an exception

2010-02-04 Thread Jean-Michel Pichavant

MRAB wrote:

In other words:

for attempt in range(2):
try:
spanish_field = translate(english_field, lang_to='es', 
lang_from='en')

break
except TranslationError:
pass
else:
# Didn't break out of the loop, therefore not successful.
print "Translation failed"


What the hell is this 'for else' loop !! :D First time I see this 
statement for years.

I'd never thought I'd still learn something that basic.

My first impression is that the  mechansim is not that obvious. MRAB's 
need for a comment tends to confirm this.

I'll try to remember that anyway. Nice addition.

JM


--
http://mail.python.org/mailman/listinfo/python-list


Re: Building a multiline string

2010-02-04 Thread Marco Mariani
On 02/04/2010 12:34 PM, lallous wrote:

> Now should I be using method 2 or 3 in production code?

Another way... depending on what you are using the string for, of
course. If it's an HTML/XML/SQL/whatever piece of code:

 from textwrap import dedent
 sql = dedent("""
> ...  SELECT *
> ...FROM table
> ...   WHERE foo=bar
> ...  """)
 
 print sql
> 
> SELECT *
>   FROM table
>  WHERE foo=bar
> 


And if you don't want the starting/ending newlines:

 sql = dedent("""\
> ...  SELECT *
> ...FROM table
> ...   WHERE foo=bar\
> ...  """)
 
 print sql
> SELECT *
>   FROM table
>  WHERE foo=bar 
 

I use this sometimes to keep both python and the embedded code readable
while preserving indentation.


-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Common area of circles

2010-02-04 Thread Xavier Ho
It's an interesting problem. Never thought it was this difficult. I can't
account for all geometrical enumerations, but assuming all 4 circles
intersect, here's the solution for this particular senario. It's probably
not going to be useful to you since you're working on geometrical
approximations now, but it is precise to the exact value.

I don't have it worked out here, but it goes like this.

1. Find the area covered by all 4 circles, unioned. Method here:
http://stackoverflow.com/questions/1667310/combined-area-of-overlapping-circles

2: Follow this chart I made up:
http://xavierho.com/media/images/Misc/IntersectionOfFourCircles.png

And there you go. I'm sure there are way better, faster ways, and covers a
lot more senarios, but this is the best I can come up with, without counting
the rasterised pixels ratio =P.

I like Bearophile's solution. Have fun!

Cheers,
Xav

On Thu, Feb 4, 2010 at 10:27 PM, Shashwat Anand wrote:

> I needed 6 decimal places of accuracy, so first way of solution will not
> work for my case. However, your second strategy seems promising. Working on
> it. Thanks :D
> ~l0nwlf
>
>
> On Thu, Feb 4, 2010 at 5:49 PM, Bearophile wrote:
>
>> Shashwat Anand:
>> > > Given 'n' circles and the co-ordinates of their center, and the radius
>> of
>> > > all being equal i.e. 'one', How can I take out the intersection of
>> their
>> > > area.
>>
>> I can see two possible solutions, both approximate. In both solutions
>> you first look if there are a pair of circles that don't intersect, in
>> this case the intersect area is zero. You also remove all circles
>> fully contained in another circle.
>>
>> The first strategy is easy to do, but it probably leads to a lower
>> precision. Then you can sample randomly many times the rectangular
>> area that surely contains all circles. You count how many of those
>> random points are inside all circles. This gives you an approximate
>> area of their intersection. Increasing the points numbers slowly
>> increases the result precision.
>>
>> The second strategy is more complex. You convert your circles into
>> polygons with a fixed number of vertices (like 50 or 100 or 1000 or
>> more. This number is constant even if the circles don't have all the
>> same radius). So you can turn this circle into a simple mesh of
>> triangles (all vertices are on the circumference). Then you "subtract"
>> the second polygonalized circle, this can create a hole and split
>> triangles in pieces, and so on with successive circles. At the end you
>> can compute the total area of the triangles left. This is doable, but
>> you need time to do implement this. The advantage is that the
>> numerical precision of the result is probably higher. If you implement
>> this second solution you can implement the first one too, and use it
>> as a test to avoid bugs. Visualizing the triangles with Pygame or
>> MatPlotLib can be useful to look for bugs.
>>
>> Bye,
>> bearophile
>> --
>> http://mail.python.org/mailman/listinfo/python-list
>>
>
>
> --
> http://mail.python.org/mailman/listinfo/python-list
>
>
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Common area of circles

2010-02-04 Thread Terry Reedy

On 2/4/2010 7:05 AM, Shashwat Anand wrote:

I want to calculate areas.
like for two circles (0, 0) and (0, 1) : the output is '1.228370'

similarly my aim is to take 'n' co-ordinates, all of radius '1' and
calculate the area common to all.
The best I got was monte-carlo methods which is inefficient. Is there
any other approach possible.


There is a method for calculating the area of a polygon by traversing 
its boundary. I forget the formula, but you should be able to find it. 
So *if* you can find the arcs that bound the area, you can approximate 
each by a series of short lines and apply the polygon method.


Terry Jan Reedy

--
http://mail.python.org/mailman/listinfo/python-list


Re: Common area of circles

2010-02-04 Thread Shashwat Anand
thanks, all of you

On Thu, Feb 4, 2010 at 7:31 PM, Terry Reedy  wrote:

> On 2/4/2010 7:05 AM, Shashwat Anand wrote:
>
>> I want to calculate areas.
>> like for two circles (0, 0) and (0, 1) : the output is '1.228370'
>>
>> similarly my aim is to take 'n' co-ordinates, all of radius '1' and
>> calculate the area common to all.
>> The best I got was monte-carlo methods which is inefficient. Is there
>> any other approach possible.
>>
>
> There is a method for calculating the area of a polygon by traversing its
> boundary. I forget the formula, but you should be able to find it. So *if*
> you can find the arcs that bound the area, you can approximate each by a
> series of short lines and apply the polygon method.
>
> Terry Jan Reedy
>
> --
> http://mail.python.org/mailman/listinfo/python-list
>
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: YAML (was: Python and Ruby)

2010-02-04 Thread Lou Pecora
In article <87eil1ddjp.fsf...@castleamber.com>,
 John Bokma  wrote:

> Lou Pecora  writes:
> 
> > That's a pretty accurate description of how I transitioned to Python 
> > from C and Fortran.
> 
> Not C, but C++ (but there are also C implementations): YAML, see:
> http://code.google.com/p/yaml-cpp/wiki/HowToParseADocument
> 
> I use YAML now and then with Perl for both reading/writing data and for
> debugging purposes (YAML is quite human readable, for programmers at least)
> 
> Of course there is also YAML support for Python:
> http://pyyaml.org/.

Well, that looks a bit more complicated than I would like, but maybe 
it's doing more stuff than I can grok.  Here's what I needed and how I 
did it in Python:

# Make some variables
x=1.234e-8
y=2
astr="An output string...whatever"
z=4.5+1j*1.3456  # a complex number

# Output them to a file already opened as fp
outlist=[x, y, astr, z]
repvars= repr(outlist)+"\n"
fp.write(repvars)

# Reading same list in:
instr=fp.readline()
inlist=eval(instr)
x1,y1,astr1,z1= inlist


That's what I needed.  3 lines to write or read a inhomogeneous 
collection of variables. I can add more variables, shuffle the order, 
whatever without messing with formatting, etc. That's pretty easy for me 
and it's easy for anyone to see and understand what's being done.  Not 
trying to start an argument, just showing how the former messasge I was 
replying to made a good point about Python's way of doing things and the 
effort to shake off old habits from other languages.

-- 
-- Lou Pecora
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Python and Ruby

2010-02-04 Thread Lou Pecora
In article <7x8wb9j4r2@ruckus.brouhaha.com>,
 Paul Rubin  wrote:

> Lou Pecora  writes:
> > after much noodling around and reading it hit me that I could just put
> > all that output of different types of variables into a list, hit it
> > with a repr() function to get a string version, and write the string
> > to a file -- no formatting necessary-- three lines of code. Later
> > reading in the string version (no formatting necessary), and hitting
> > it with an eval() function returned all the values I originally had in
> > those variables.  How simple, but beautiful.
> 
> FYI: I do that too sometimes, but in general using repr/eval that way
> is poor style and not very reliable.  It's better to use the pickle
> module, which is intended for that sort of thing, or the json module
> if your datatypes are suitable and you want to follow a semi-standard.

Yeah, I should look into pickle.  Haven't messed with that.  Most of 
what I do is numerical calculations for my consumption/research so quick 
and easy comes first.  Thanks for the hint.

-- 
-- Lou Pecora
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Problem with __init__.py in Python3.1

2010-02-04 Thread Hidura
Thanks, I read it and try to put my code in the correct form, but now give
me another error, inside the Writer Package says:
"ValueError: Attempted relative import in non-package", if somebody knows a
clue of how fix it i will glad to read opinions. [?]

On Thu, Feb 4, 2010 at 2:11 AM, Gabriel Genellina wrote:

> En Thu, 04 Feb 2010 01:00:56 -0300, Hidura  escribió:
>
>
>  Good evening list, I have a really big trouble with the imports in the 3.1
>> version(Notes: In the older 2.64 theres no problems), I have two packages,
>> the first package Utilities who contains Writer the second package,
>> Writers
>> contain the module tagmanip(What is imported in the best way inside the
>> __init__.py of the Writer), when i make  the import inside the writer
>> everything is ok, but from the Utilities package the errors says:
>> "ImportError: No module named tagsmanip".
>> I don't understand why this is happening, if somebody could help me i will
>> glad to hear any suggestion.
>>
>
> In Python 3.x, "absolute" import is enabled by default (2.6 uses a mix of
> relative and absolute imports).
> To import sibling modules in a package, or modules in a subpackage, you
> have to use relative imports:
>
> from . import tagmanip
> from .Writers import tagmanip
>
> See PEP328 http://www.python.org/dev/peps/pep-0328/
>
> --
> Gabriel Genellina
>
> --
> http://mail.python.org/mailman/listinfo/python-list
>



-- 
Hidura
<<330.png>>-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Common area of circles

2010-02-04 Thread Gerard Flanagan



On 2/4/2010 7:05 AM, Shashwat Anand wrote:

I want to calculate areas.
like for two circles (0, 0) and (0, 1) : the output is '1.228370'

similarly my aim is to take 'n' co-ordinates, all of radius '1' and
calculate the area common to all.
The best I got was monte-carlo methods which is inefficient. Is
there
any other approach possible.




A brute force approach - create a grid of small squares and calculate 
which squares are in all circles. I don't know whether it is any better 
than monte-carlo: for two circles, delta=0.001 takes about a minute and 
delta=0.0001 is still running after 30 minutes :-)


1.22
1.2281
1.2283479


--
import math

class Circle:

def __init__(self, x, y, r=1):
self.x = float(x)
self.y = float(y)
self.r = float(r)

def contains(self, a, b):
return math.sqrt((self.x-a)**2 + (self.y-b)**2) <= self.r

class Grid:

def __init__(self, circles):
self.X1 = min(c.x-c.r for c in circles)
self.Y1 = max(c.y+c.r for c in circles)
self.X2 = max(c.x+c.r for c in circles)
self.Y2 = min(c.y-c.r for c in circles)
self.circles = circles

def iter_boxes(self, delta):
X2 = self.X2
Y2 = self.Y2
a = self.X1
while a < X2:
a += delta
b = self.Y1
while b > Y2:
b -= delta
#print a, b
yield a, b

def intersection(self, delta=0.1):
S = 0
s = delta**2 #box area
circles = self.circles
for a, b in self.iter_boxes(delta):
if all(c.contains(a, b) for c in circles):
S += s
return S


c = Circle(0, 1)

assert c.contains(0, 1)
assert c.contains(0, 1.5)
assert c.contains(math.sqrt(2)/2, math.sqrt(2)/2)
assert c.contains(0, 2)
assert not c.contains(0, 2.01)
assert not c.contains(0, 2.1)
assert not c.contains(0, 3)

circles = [
Circle(0, 0),
Circle(0, 1),
]

g = Grid(circles)

print '-'*30
print g.intersection()
print g.intersection(0.01)
print g.intersection(0.001)
print g.intersection(0.0001)

--

--
http://mail.python.org/mailman/listinfo/python-list


Re: Repeat an exception

2010-02-04 Thread MRAB

Jean-Michel Pichavant wrote:

MRAB wrote:

In other words:

for attempt in range(2):
try:
spanish_field = translate(english_field, lang_to='es', 
lang_from='en')

break
except TranslationError:
pass
else:
# Didn't break out of the loop, therefore not successful.
print "Translation failed"


What the hell is this 'for else' loop !! :D First time I see this 
statement for years.

I'd never thought I'd still learn something that basic.

My first impression is that the  mechansim is not that obvious. MRAB's 
need for a comment tends to confirm this.

I'll try to remember that anyway. Nice addition.


The comment is there for the OP. _I_ don't need it! :-)
--
http://mail.python.org/mailman/listinfo/python-list


Re: Repeat an exception

2010-02-04 Thread Stephen Hansen
On Thu, Feb 4, 2010 at 4:59 AM, Jean-Michel Pichavant <
jeanmic...@sequans.com> wrote:

> What the hell is this 'for else' loop !! :D First time I see this statement
> for years.
> I'd never thought I'd still learn something that basic.
>

Its one of the least used constructs in Python, I think, and leads to
periodic statements like this on the list where people who think they know
all about Python suddenly see it and go WTF :)

But in Python, all loops have an "else" clause that is fired when the loop
terminates-- but *only* if it terminates normally, where 'normally' is
basically, 'if you don't use break to exit the loop prematurely'.

It allows you to do certain things in a way which is (arguably, and I so
don't want to start an argument about this) a bit cleaner, where the normal
method would require a flag or some such. For example, if you need want to
loop over a sequence to test to see if they all match some criteria, you can
use a for..else, or some flag variable.


--S
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Common area of circles

2010-02-04 Thread Gary Herron

Gerard Flanagan wrote:



On 2/4/2010 7:05 AM, Shashwat Anand wrote:

I want to calculate areas.
like for two circles (0, 0) and (0, 1) : the output is 
'1.228370'


similarly my aim is to take 'n' co-ordinates, all of radius 
'1' and

calculate the area common to all.
The best I got was monte-carlo methods which is inefficient. Is
there
any other approach possible.




A brute force approach - create a grid of small squares and calculate 
which squares are in all circles. I don't know whether it is any 
better than monte-carlo: 


That's just what the monte-carlo method is -- except the full family of 
monte-carlo methods can be quite sophisticated, including being more 
general (pseudo or quasi random points instead of a regular grid) and 
can provide a theoretical basis for calculating the rate of convergence, 
and so on.


Gary Herron



for two circles, delta=0.001 takes about a minute and delta=0.0001 is 
still running after 30 minutes :-)


1.22
1.2281
1.2283479


--
import math

class Circle:

def __init__(self, x, y, r=1):
self.x = float(x)
self.y = float(y)
self.r = float(r)

def contains(self, a, b):
return math.sqrt((self.x-a)**2 + (self.y-b)**2) <= self.r

class Grid:

def __init__(self, circles):
self.X1 = min(c.x-c.r for c in circles)
self.Y1 = max(c.y+c.r for c in circles)
self.X2 = max(c.x+c.r for c in circles)
self.Y2 = min(c.y-c.r for c in circles)
self.circles = circles

def iter_boxes(self, delta):
X2 = self.X2
Y2 = self.Y2
a = self.X1
while a < X2:
a += delta
b = self.Y1
while b > Y2:
b -= delta
#print a, b
yield a, b

def intersection(self, delta=0.1):
S = 0
s = delta**2 #box area
circles = self.circles
for a, b in self.iter_boxes(delta):
if all(c.contains(a, b) for c in circles):
S += s
return S


c = Circle(0, 1)

assert c.contains(0, 1)
assert c.contains(0, 1.5)
assert c.contains(math.sqrt(2)/2, math.sqrt(2)/2)
assert c.contains(0, 2)
assert not c.contains(0, 2.01)
assert not c.contains(0, 2.1)
assert not c.contains(0, 3)

circles = [
Circle(0, 0),
Circle(0, 1),
]

g = Grid(circles)

print '-'*30
print g.intersection()
print g.intersection(0.01)
print g.intersection(0.001)
print g.intersection(0.0001)

--



--
http://mail.python.org/mailman/listinfo/python-list


Re: Refreshing of urllib.urlopen()

2010-02-04 Thread Nobody
On Wed, 03 Feb 2010 21:33:08 -0600, Michael Gruenstaeudl wrote:

> I am fairly new to Python and need advice on the urllib.urlopen()  
> function. The website I am trying to open automatically refreshes  
> after 5 seconds and remains stable thereafter. With  
> urllib.urlopen().read() I can only read the initial but not the  
> refreshed page. How can I access the refreshed page via  
> urlopen().read()? I have already tried to intermediate with  
> time.sleep() before invoking .read() (see below), but this does not  
> work.

In all probability, the server is instructing the browser to load a
different URL via either a Refresh: header or a 
tag in the page. You will have to retrieve that information then issue a
request for the new URL.

It might even be redirecting via JavaScript, in which case, you lose (it's
possible to handle this case, but it's difficult).

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: read a process output with subprocess.Popen

2010-02-04 Thread Nobody
On Thu, 04 Feb 2010 04:28:20 -0800, Ashok Prabhu wrote:

> I m trying a read the output of a process which is running
> continuously with subprocess.Popen. However the readline() method
> hangs for the process to finish. Please let me know if the following
> code can be made to work with subprocess.Popen with threads or queues.
> I tried a lot of methods but to no avail. It would be great if someone
> can make it work.

This is an issue with grep, not Python per se.

By default, stdout (in the C library) is line-buffered if it refers to a
TTY, and block-buffered otherwise (e.g. if it refers to a pipe). grep
doesn't change the default buffering, so when it's stdout is a pipe, its
output is written in 4K blocks.

If you only need this to work with GNU grep, you can use the
--line-buffered switch to force stdout to be flushed after each line.

If it needs to be portable, you can implement the grep part in Python
(i.e. read p1.stdout and ignore any lines which don't contain a given
string or which don't match a given regex).

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Passing parameters in URL

2010-02-04 Thread John Bokma
"Diez B. Roggisch"  writes:

> Am 04.02.10 01:42, schrieb John Bokma:

[..]

>> Maybe you should think about what happens if someone posts:
>> http://example.com/item_delete?id=123";>  to a popular forum...
>
> And the difference to posting
>
> from urrlib2 import open
> from urllib import encode
>
> open("http://example.com/item_delete";, data=encode([("id", "123")]))
>
> to that same public "hacker" forum is exactly what?

Imagine that a user of example.com, logged in at example.com (i.e. with
a valid session ID in a cookie), visits the aforementioned (by me)
forum, and that he has an item 123. It will be deleted.

> If your webapp happens to allow item_delete to be called without
> authentication & authorization, then *that's* your problem.

You now understand that *with* a & a a GET request can be *still* harmful?

-- 
John Bokma   j3b

Hacking & Hiking in Mexico -  http://johnbokma.com/
http://castleamber.com/ - Perl & Python Development
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Common area of circles

2010-02-04 Thread Gerard Flanagan

Gary Herron wrote:

Gerard Flanagan wrote:


A brute force approach - create a grid of small squares and calculate 
which squares are in all circles. I don't know whether it is any 
better than monte-carlo: 


That's just what the monte-carlo method is -- except the full family of 
monte-carlo methods can be quite sophisticated, including being more 
general (pseudo or quasi random points instead of a regular grid) and 
can provide a theoretical basis for calculating the rate of convergence, 
and so on.




I would have said a Monte Carlo method necessarily involves random 
sampling in some shape or form, no? (Casinos, Chance etc..) And as I've 
previously understood Monte Carlo Integration, the technique involves 
rather the ratio "hits/total sample" rather than the sum of small areas. 
That's how I remember it, at least - it's been a while though.


Regards

G.F

--
http://mail.python.org/mailman/listinfo/python-list


Re: Common area of circles

2010-02-04 Thread Dave Angel

Shashwat Anand wrote:

I want to calculate areas.
like for two circles (0, 0) and (0, 1) : the output is '1.228370'

similarly my aim is to take 'n' co-ordinates, all of radius '1' and
calculate the area common to all.
The best I got was monte-carlo methods which is inefficient. Is there any
other approach possible.

  

You start with a list of circles, each having center (a,b), and radius 
(r).  As you stated the problem, r is always 1, but I'll keep the 
algorithm general.


This is untested, and probably contains typos, at least.

I would do it with successively smaller squares.  A square can be 
described using center coordinates (x,y) , and length (s) of a side.  
Each square can have three states:  not included, partially included, 
and fully included. 

You build a list of squares, starting with one, the bounding square for 
the first circle.


For each square in the list, you go through all the circles (each with 
center a,b, and radius r), and for each circle decide if the square is 
entirely within the circle, or partially.  If it's fully included in all 
of them, you add its area to the the accumulator, and drop it from your 
list.   if it's not included at all in one of them, you just drop it 
from the list.  (Note, be careful about modifying a list you're 
iterating through -- make a copy)


After a pass through the list,  the accumulator is a lower-bound for the 
area, and the accumulator plus the areas of all the squares is an upper 
bound.   If these are close enough together, you terminate.


Otherwise you take the remaining squares in the list, split each into 
four pieces, and end up with a list 4 times as long.  And repeat the 
loop, checking each square against each circle.



The only remaining question is how you decide for a given circle and a 
given square which of the three states it's in.  And it turns out you 
can be pretty approximate in this, and it'll still converge.  So you can 
take a distance between (a,b) and (x,y), and compare it to r-s/2  and to 
r+(s*0.707106781187).  If it's greater than r+s*0.707106781187, no 
intersection.  If it's less than r-s/2, then the square's entirely inside.


Note that I used  0.707106781187 above, but you'd actually use sqr(0.5) 
to whatever precision you needed.  And if it's convenient to round it, 
round it upwards;  again it won't affect the result.  I doubt if it 
would matter in Python code, but you could even do the whole thing in 
integers (avoiding the sqrt for distance calc), if you were careful 
about the bounding formulas.  That's premature optimization, however.


HTH,
DaveA



--
http://mail.python.org/mailman/listinfo/python-list


Re: Python and Ruby

2010-02-04 Thread John Bokma
Marius Gedminas  writes:

> On Feb 4, 1:03 am, John Bokma  wrote:
>> Jonathan Gardner  writes:
>> > I can explain all of Python in an hour;
>>
>> OK, in that case I would say give it a go. Put it on YouTube, or write a
>> blog post about it (or post it here). I am sure you will help a lot of
>> people that way.
>
> Someone already did: "Advanced Python or Understanding Python"
> http://video.google.com/videoplay?docid=7760178035196894549
> (76 minutes).
>
> Worth watching.

Thanks, I will. And let you know if it succeeds at "explain all of
Python in 76 minutes". It's not a fair test, since I am not new to
Python, but let me see first ;-)

-- 
John Bokma   j3b

Hacking & Hiking in Mexico -  http://johnbokma.com/
http://castleamber.com/ - Perl & Python Development
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: YAML

2010-02-04 Thread John Bokma
Lou Pecora  writes:

> In article <87eil1ddjp.fsf...@castleamber.com>,
>  John Bokma  wrote:
>
>> Lou Pecora  writes:
>> 
>> > That's a pretty accurate description of how I transitioned to Python 
>> > from C and Fortran.
>> 
>> Not C, but C++ (but there are also C implementations): YAML, see:
>> http://code.google.com/p/yaml-cpp/wiki/HowToParseADocument
>> 
>> I use YAML now and then with Perl for both reading/writing data and for
>> debugging purposes (YAML is quite human readable, for programmers at least)
>> 
>> Of course there is also YAML support for Python:
>> http://pyyaml.org/.
>
> Well, that looks a bit more complicated than I would like, but maybe 
> it's doing more stuff than I can grok.  Here's what I needed and how I 
> did it in Python:
>
> # Make some variables
> x=1.234e-8
> y=2
> astr="An output string...whatever"
> z=4.5+1j*1.3456  # a complex number
>
> # Output them to a file already opened as fp
> outlist=[x, y, astr, z]
> repvars= repr(outlist)+"\n"
> fp.write(repvars)
>
> # Reading same list in:
> instr=fp.readline()
> inlist=eval(instr)
> x1,y1,astr1,z1= inlist
>
>
> That's what I needed.  3 lines to write or read a inhomogeneous 
> collection of variables. I can add more variables, shuffle the order, 
> whatever without messing with formatting, etc. That's pretty easy for me 
> and it's easy for anyone to see and understand what's being done.  Not 
> trying to start an argument, just showing how the former messasge I was 
> replying to made a good point about Python's way of doing things and the 
> effort to shake off old habits from other languages.

My C++ is rusty to say the least, so I can't give you an example in C++,
and the C++ version will be longer than the Python version for
sure. I use YAML, YAML::Syck to be precise, now and then in Perl. In
Perl, if $data is a reference to an arbitrary (complex) datastructure:

DumpFile( 'filename', $data ); 

writes it out and

$data = LoadFile( 'filename' );

reads it back in.

Since YAML is to some extent human readable, I now and then use it for
debugging purposes over Data::Dumper, also because the output is more
compact, e.g.

die Dump $data;

Personally I think it's good to be aware of YAML, since it's supported
by several languages and it should in general be possible to exchange
the generated YAML between them. 

-- 
John Bokma   j3b

Hacking & Hiking in Mexico -  http://johnbokma.com/
http://castleamber.com/ - Perl & Python Development
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Passing parameters in URL

2010-02-04 Thread Diez B. Roggisch

Am 04.02.10 18:22, schrieb John Bokma:

"Diez B. Roggisch"  writes:


Am 04.02.10 01:42, schrieb John Bokma:


[..]


Maybe you should think about what happens if someone posts:
http://example.com/item_delete?id=123";>   to a popular forum...


And the difference to posting

from urrlib2 import open
from urllib import encode

open("http://example.com/item_delete";, data=encode([("id", "123")]))

to that same public "hacker" forum is exactly what?


Imagine that a user of example.com, logged in at example.com (i.e. with
a valid session ID in a cookie), visits the aforementioned (by me)
forum, and that he has an item 123. It will be deleted.


The webapp must be actually preventing the processing of GET-requests 
for the aciton in question. This isn't the case by default for many of 
them, in fact at least e.g. TurboGears, as well as PHP offer you ways to 
treat GET and POSTvars the exact same way. So unless the programmer is 
aware of this potential problem, it won't help.


And in the same way one can embed a form with a post-action that leads 
to the full http://example.com-url into an external page. So it is 
equally as dangerous. Yes, links are easier, no doubt about that. But 
POST doesn't magically make you safe from those kinds of attacks.


The only way to prevent this are short-lived sessions, or action-tokens 
of some kind, as Paul mentioned before.


Diez
--
http://mail.python.org/mailman/listinfo/python-list


Re: Selenium/SauceLabs OpenSpace at Pycon

2010-02-04 Thread Raymond Hettinger
> >For those who are interested, the Sauce Labs team,
> >http://saucelabs.com/about/team, is hosting two free tutorial open
> >space sessions at Pycon in Atlanta.

[Aahz]
> Congrats on the new job!

Thanks.  I'm really enjoying working with Jim Baker
and Frank Wierzbicki.


Raymond

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Common area of circles

2010-02-04 Thread Mark Dickinson
On 2/4/2010 7:05 AM, Shashwat Anand wrote:
> I want to calculate areas.
> like for two circles (0, 0) and (0, 1) : the output is '1.228370'
>
> similarly my aim is to take 'n' co-ordinates, all of radius '1' and
> calculate the area common to all.
> The best I got was monte-carlo methods which is inefficient. Is there
> any other approach possible.

How much accuracy do you need?  How fast does the algorithm need to
be?  How many circles are typically involved?  Is the intersection
necessarily non-empty for the configurations of circles that you use?
How much code are you prepared to write?  How much mathematics do you
want to use?

Besides the Monte-Carlo and grid-based approaches already mentioned, I
see a couple of other possibilities:

(1) It should be entirely possible to do this analytically.  The hard
part would be identifying the intersection points that form the
vertices of the intersection (and especially, doing this robustly in
the face of numerical errors and triple intersections or near-triple
intersections).  Once you've got the vertices, it should be
straightforward to compute the area:  compute the area of the polygon
given by the convex hull of the vertices, then add on the extra areas
for the segments bounded by the (straight) sides of the polygon and
the corresponding outer arcs.

(2) For a numerical approach that might be slightly better than the 2d
brute-force approaches described by others:  make use of the fact that
the intersection is convex.  Pick a point P in the intersection (if it
exists:  finding such a point is an issue in itself).  For each angle
t, 0 <= t <= 2*pi, define f(t) to be the distance from P to the
boundary of the region, in the direction of the angle t.  We always
have 0 <= f(t) <= 1, so f(t) can be quickly and accurately computed
with a bisection search.  Now find the definite integral of 0.5 *
(f(t))**2, as t goes from 0 to 2*pi, using your favourite quadrature
method (but avoid methods that would be very sensitive to continuity
of derivatives:  f(t) will be continuous, but f'(t) will not).
Simpson's rule is probably good enough.

Good luck!

--
Mark
-- 
http://mail.python.org/mailman/listinfo/python-list


how to run part of my python code as root

2010-02-04 Thread Tomas Pelka
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hey,

is there possibility how to run part of my code (function for example)
as superuser.

Or only way how to do this is create a wrapper and run is with Popen
through sudo (but I have to configure sudo to run "whole" python as root).

Thanks for advice.

- --
Tom

Key fingerprint = 06C0 23C6 9EB7 0761 9807  65F4 7F6F 7EAB 496B 28AA
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAktrGoYACgkQf29+q0lrKKqaNACdEvfg+g0n3DzFr/7R33y2Nesy
hK8An3ZlpUEEibf0Q1wVET/KpXnsv/PO
=JKro
-END PGP SIGNATURE-
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Common area of circles

2010-02-04 Thread Shashwat Anand
maximum number of circles = 10**6
runtime <= 5 sec
center of circles , -1000<=xi,yi<=1000 (float) [for int it was easier]
intersection is there and the area will be non-zero (it can always be
checked if intersection is taking place and if no, then area = 0.00)
This was a programming contest problem, so code will be short
Maths, I'm eager to use. I attempted this problem because I saw scope of
maths in it. (I learnt python while doing ProjectEuler because C/C++ was
cumbersome for PE IMHO). I tried monte-carlo, but the time-limit exceeds if
i go for required accuracy. The same happens with grid approach.


On Fri, Feb 5, 2010 at 12:25 AM, Mark Dickinson  wrote:

> On 2/4/2010 7:05 AM, Shashwat Anand wrote:
> > I want to calculate areas.
> > like for two circles (0, 0) and (0, 1) : the output is '1.228370'
> >
> > similarly my aim is to take 'n' co-ordinates, all of radius '1' and
> > calculate the area common to all.
> > The best I got was monte-carlo methods which is inefficient. Is there
> > any other approach possible.
>
> How much accuracy do you need?  How fast does the algorithm need to
> be?  How many circles are typically involved?  Is the intersection
> necessarily non-empty for the configurations of circles that you use?
> How much code are you prepared to write?  How much mathematics do you
> want to use?
>
> Besides the Monte-Carlo and grid-based approaches already mentioned, I
> see a couple of other possibilities:
>
> (1) It should be entirely possible to do this analytically.  The hard
> part would be identifying the intersection points that form the
> vertices of the intersection (and especially, doing this robustly in
> the face of numerical errors and triple intersections or near-triple
> intersections).  Once you've got the vertices, it should be
> straightforward to compute the area:  compute the area of the polygon
> given by the convex hull of the vertices, then add on the extra areas
> for the segments bounded by the (straight) sides of the polygon and
> the corresponding outer arcs.
>
> (2) For a numerical approach that might be slightly better than the 2d
> brute-force approaches described by others:  make use of the fact that
> the intersection is convex.  Pick a point P in the intersection (if it
> exists:  finding such a point is an issue in itself).  For each angle
> t, 0 <= t <= 2*pi, define f(t) to be the distance from P to the
> boundary of the region, in the direction of the angle t.  We always
> have 0 <= f(t) <= 1, so f(t) can be quickly and accurately computed
> with a bisection search.  Now find the definite integral of 0.5 *
> (f(t))**2, as t goes from 0 to 2*pi, using your favourite quadrature
> method (but avoid methods that would be very sensitive to continuity
> of derivatives:  f(t) will be continuous, but f'(t) will not).
> Simpson's rule is probably good enough.
>
> Good luck!
>
> --
> Mark
> --
> http://mail.python.org/mailman/listinfo/python-list
>
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Problem with __init__.py in Python3.1

2010-02-04 Thread Gabriel Genellina

En Thu, 04 Feb 2010 12:40:41 -0300, Hidura  escribió:

Thanks, I read it and try to put my code in the correct form, but now  
give

me another error, inside the Writer Package says:
"ValueError: Attempted relative import in non-package", if somebody  
knows a

clue of how fix it i will glad to read opinions. [?]


You say that Writer is a package, but apparently Python disagrees. A  
package is not just "a directory containing an __init__.py file", this is  
half the truth. Python must be *aware* of such file, and this happens when  
you import the package.


If you directly run a script from inside a package, Python does not know  
that it belongs to a package, and treats it as a simple, lonely script. In  
that case, relative imports won't work.


Put the "main" script (the one that you directly execute) outside the  
package. It can be as small as this, if you want:


from some.package import main
main()

--
Gabriel Genellina

--
http://mail.python.org/mailman/listinfo/python-list


Re: Selenium/SauceLabs OpenSpace at Pycon

2010-02-04 Thread Paul Rubin
a...@pythoncraft.com (Aahz) writes:
> Raymond Hettinger   wrote:
>>For those who are interested, the Sauce Labs team,
>>http://saucelabs.com/about/team, is hosting two free tutorial open
>>space sessions at Pycon in Atlanta.
>
> Congrats on the new job!

Yes, cool!  I don't recognize several of these logos, but maybe Sauce
can help:

http://aasi.ebm.fi/5742/browsers.jpg

;-)
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: how to run part of my python code as root

2010-02-04 Thread sjdevn...@yahoo.com
On Feb 4, 2:05 pm, Tomas Pelka  wrote:
> -BEGIN PGP SIGNED MESSAGE-
> Hash: SHA1
>
> Hey,
>
> is there possibility how to run part of my code (function for example)
> as superuser.
>
> Or only way how to do this is create a wrapper and run is with Popen
> through sudo (but I have to configure sudo to run "whole" python as root).

In decreasing order of desirability:
1. Find a way to not need root access (e.g. grant another user or
group access to whatever resource you're trying to access).
2. Isolate the stuff that needs root access into a small helper
program that does strict validation of all input (including arguments,
environment, etc); when needed, run that process under sudo or
similar.
2a. Have some sort of well-verified helper daemon that has access to
the resource you need and mediates use of that resource.
3. Run the process as root, using seteuid() to switch between user and
root privs.  The entire program must be heavily verified and do strict
validation of all inputs.  Any attacker who gets control over the
process can easily switch to root privs and do damage.  This is
generally a bad idea.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Python and Ruby

2010-02-04 Thread John Bokma
Marius Gedminas  writes:

> On Feb 4, 1:03 am, John Bokma  wrote:
>> Jonathan Gardner  writes:
>> > I can explain all of Python in an hour;
>>
>> OK, in that case I would say give it a go. Put it on YouTube, or write a
>> blog post about it (or post it here). I am sure you will help a lot of
>> people that way.
>
> Someone already did: "Advanced Python or Understanding Python"
> http://video.google.com/videoplay?docid=7760178035196894549
> (76 minutes).
>
> Worth watching.

Certainly worth watching (I learned some stuff), but in my opinion you
/need to have some Python experience/ to be able to follow so no
(IMO), someone didn't do it already.

-- 
John Bokma   j3b

Hacking & Hiking in Mexico -  http://johnbokma.com/
http://castleamber.com/ - Perl & Python Development
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Python 3 minor irritation

2010-02-04 Thread Gib Bogle

Gabriel Genellina wrote:
But the associated program might change the current directory - that's 
not the case with the default associations created by the Python 
installer, but one should verify this.

To the OP: please create this small test script

import os
print("curdir=", os.getcwd())
print("__file__=", __file__)
input()

and post what you get when you double-click on it.

Also, from the command line, execute:

D:\temp>reg query HKCR\.py

! REG.EXE VERSION 3.0

HKEY_CLASSES_ROOT\.py
REG_SZ  Python.File
Content TypeREG_SZ  text/plain

HKEY_CLASSES_ROOT\.py\PersistentHandler


I'm interested in this, because I'm using Windows XP, and when I execute this 
command I see the first part but not the second (with PersistentHandler).  Is 
this related to the fact that when I double-click on a .py file the command 
window disappears after the execution is completed?

--
http://mail.python.org/mailman/listinfo/python-list


Passing command line argument to program from within IDLE?

2010-02-04 Thread Alan Biddle
Just finishing my first Python (2.6 on Win XP)  program, which is
working fine.  My "Duh?" question is about how to run it from within
IDLE and pass it command line arguments.  No problem using sys.argv
from a Windows command line, but I have missed how you can do that
from within IDLE, which complicates development and debugging.

 

--
Alan
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Python and Ruby

2010-02-04 Thread Jonathan Gardner
On Feb 3, 3:39 pm, Steve Holden  wrote:
> Robert Kern wrote:
> > On 2010-02-03 15:32 PM, Jonathan Gardner wrote:
>
> >> I can explain all of Python in an hour; I doubt anyone will understand
> >> all of Python in an hour.
>
> > With all respect, talking about a subject without a reasonable chance of
> > your audience understanding the subject afterwards is not explaining.
> > It's just exposition.
>
> I agree. If the audience doesn't understand then you haven't explained it.
>

On the contrary, that explanation would have everything you need. It
would take an hour to read or listen to the explanation, but much more
than that time to truly understand everything that was said.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: YAML (was: Python and Ruby)

2010-02-04 Thread Steven D'Aprano
On Thu, 04 Feb 2010 09:57:59 -0500, Lou Pecora wrote:

> Well, that looks a bit more complicated than I would like, but maybe
> it's doing more stuff than I can grok.  Here's what I needed and how I
> did it in Python:
[...]
> # Reading same list in:
> instr=fp.readline()
> inlist=eval(instr)
> x1,y1,astr1,z1= inlist
> 
> 
> That's what I needed.  3 lines to write or read a inhomogeneous
> collection of variables. 

Easy, but also quick and dirty -- good enough for small scripts, but not 
really good enough for production applications.


> I can add more variables, shuffle the order,
> whatever without messing with formatting, etc. 

This is nice and easy. But there are at least four catches:


* you can't safely treat the data file as human-editable
(although a sufficiently careful and Python-aware user could edit it)

* you can't use any data that isn't a built-in, or that contains 
something that is not a built-in

* there may be reliability issues with floats - you're at the mercy of 
changes to the underlying repr of float objects, and it almost certainly 
will blow up in your face if you get an inf or nan (at least prior to 
Python 2.6)

* you're using eval, which is a security risk if you can't trust the 
source of the data file.

However, be aware that neither marshal nor pickle guarantees to be safe 
against malicious data either. The docs for both warn against using them 
on untrusted data. YAML or JSON *might* be safer, I haven't looked.



> That's pretty easy for me
> and it's easy for anyone to see and understand what's being done.  Not
> trying to start an argument, just showing how the former messasge I was
> replying to made a good point about Python's way of doing things and the
> effort to shake off old habits from other languages.

These are all good points. 




-- 
Steven
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Passing command line argument to program from within IDLE?

2010-02-04 Thread Terry Reedy

On 2/4/2010 3:55 PM, Alan Biddle wrote:

Just finishing my first Python (2.6 on Win XP)  program, which is
working fine.  My "Duh?" question is about how to run it from within
IDLE and pass it command line arguments.  No problem using sys.argv
from a Windows command line, but I have missed how you can do that
from within IDLE, which complicates development and debugging.


I presume you mean edit, F5-run, see result in shell window.
Set sys.argv in test function or __name__=='__main__'
In 3.1 idle shell:

>>> import sys
>>> sys.argv
['']
>>> sys.argv = ['abc','dev']
>>> sys.argv
['abc', 'dev']

I did not know it was writable, either, until I tried it.

Terry Jan Reedy

--
http://mail.python.org/mailman/listinfo/python-list


Re: YAML

2010-02-04 Thread John Bokma
Steven D'Aprano  writes:

> However, be aware that neither marshal nor pickle guarantees to be safe 
> against malicious data either. The docs for both warn against using them 
> on untrusted data. YAML or JSON *might* be safer, I haven't looked.

Regarding malicious data, from the Loading YAML section of PyYAML:

   Warning: It is not safe to call yaml.load with any data received from
   an untrusted source! yaml.load is as powerful as pickle.load and so
   may call any Python function. Check the yaml.safe_load function
   though.

http://pyyaml.org/wiki/PyYAMLDocumentation#LoadingYAML

yaml.safe_load however, limits to simple Python objects and Python
objects you mark as safe.

-- 
John Bokma   j3b

Hacking & Hiking in Mexico -  http://johnbokma.com/
http://castleamber.com/ - Perl & Python Development
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Passing command line argument to program from within IDLE?

2010-02-04 Thread Steve Holden
Terry Reedy wrote:
> On 2/4/2010 3:55 PM, Alan Biddle wrote:
>> Just finishing my first Python (2.6 on Win XP)  program, which is
>> working fine.  My "Duh?" question is about how to run it from within
>> IDLE and pass it command line arguments.  No problem using sys.argv
>> from a Windows command line, but I have missed how you can do that
>> from within IDLE, which complicates development and debugging.
> 
> I presume you mean edit, F5-run, see result in shell window.
> Set sys.argv in test function or __name__=='__main__'
> In 3.1 idle shell:
> 
 import sys
 sys.argv
> ['']
 sys.argv = ['abc','dev']
 sys.argv
> ['abc', 'dev']
> 
> I did not know it was writable, either, until I tried it.
> 
As a solution, however, that sucks, wouldn't you agree?

regards
 Steve
-- 
Steve Holden   +1 571 484 6266   +1 800 494 3119
PyCon is coming! Atlanta, Feb 2010  http://us.pycon.org/
Holden Web LLC http://www.holdenweb.com/
UPCOMING EVENTS:http://holdenweb.eventbrite.com/

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: python admin abuse complaint

2010-02-04 Thread Xah Lee
2010-02-04

Hi Steve,

thank you for the reply.

I appreciate that you taking this more seriously than normal
newsgroups postings. In fact, for this complaint, the response you
made is all i asked for.

I have a lot things to say about the various political struggle that
one sees everyday in just about every communication channels that are
predominantly young male groups, of relatively few people, in online
posting forums, ircs, online massive multiplayer games... as you may
know, the quarrels, accusations, bans, happen every hour.

But to be concrete and constructive, i would suggest that in
freenode's python irc channel:

• when a admin bans someone, the admin needs to tell the person the
reason, and not in some rude way. (a single sentence will do.)

• The list of ban'd person's names, the reason for banning, and the
name of admin who ban'd them, should be public. (irc already provides
means for this that allows admins to annotate in the ban list.) In
particular, if you are going to ban someone by ip address, make sure
the person's handle (or preferably real life name), be listed together
with it. (again, this needs not elaborate. A single sentence will do,
e.g. “repeatedly asking same question”, “continously raising
controversial issues”, “refused to use paste bin when requested” will
do. Again, be as precise in description as possible. For example,
“ban'd for trolling”, “annoying others”, are not a meaningful reason.)

• additionally, i would suggest that bans be temporary. The following
period seems a good start: 5 min ban, 1 hour ban, 1 day ban, 1 week
ban, 1 month ban. Each can be executed according to severity per the
admin's judgement. There should be no permanent ban, unless it's
machine generated commercial spam.

Thank you.

For anyone reading this thread and interested in my opinions, i have
written many essays related to this and netiquette. Many of which
detail other similar incidences that i personally experienced, such as
freenode's irc ban in #emacs channel. If you are interested, they can
be found on my website, search for “ban xah lee”.

  Xah
∑ http://xahlee.org/

☄


On Feb 2, 2:23 pm, "Steve Holden, Chairman, PSF" 
wrote:
> Xah Lee wrote:
> > This is a short complaint on admin abuse on #python irc channel on
> > freenode.net.
>
> > Here's a log:
>
> > 2010-02-02
>
> > (12:11:57 PM) The topic for #python is: NO LOL |http://pound-python.org/
> > | It's too early to use Python 3.x | Pasting > 3 lines? Pastebin:
> >http://paste.pocoo.org/| Tutorial:http://docs.python.org/tut/| FAQ:
> >http://effbot.org/pyfaq/| New Programmer? Readhttp://tinyurl.com/thinkcspy
> > | #python.web #wsgi #python-fr #python.de #python-es #python.tw
> > #python.pl #python-br #python-jp #python-nl #python-ir #python-
> > offtopic
> > (12:12:00 PM) _habnabit: pr100, I replaced it with str.startswith,
> > actually.
> > (12:12:01 PM) jarray52: Jarray
> > (12:12:11 PM) _habnabit: jarray52, yes, you are.
> > (12:12:16 PM) xahlee: is hash={} and hash.clean() identical?
> > (12:12:18 PM) eggy_: OhnoesRaptor: getting sockets (and event loops
> > etc) right is quite tricky
> > (12:12:21 PM) OhnoesRaptor: I know how to do sockets right eggy, just
> > wondering whats up with the python verison :D
> > (12:12:24 PM) mode (+o dash) by ChanServ
> > (12:12:30 PM) You have been kicked by dash: (No.)
>
> > ---
>
> > I have not been using irc for the past about 2 year. (possibly perhaps
> > 2 times in i think #web channel) In particular, i have not been in in
> > freenode.net's #python channel. I don't know who is dash.
>
> >   Xah
> > ∑http://xahlee.org/
>
> > ☄
>
> Frankly, Xah Lee, I find it ironic that you see fit to complain about
> abuse of the IRC channel when you have apparently felt free to ignore
> the many complaints about your behavior on this and other newsgroups
> over many years.
>
> "As ye sew, so shall ye reap". I imagine that your reputation has
> preceded you, and that dash (whom I *do* know) is simply looking to keep
> a well-known nuisance from bothering the rest of the users on the channel.
>
> For the present my sympathies are all with him. The PSF will, however,
> investigate this issue and I will report back to you off-list in due course.
>
> regards
>  Steve
> --
> Steve Holden        Chairman, Python Software Foundation
> The Python Community Conference  http://python.org/psf/
> PyCon 2010 Atlanta Feb 19-21        http://us.pycon.org/
> Watch PyCon on video now!          http://pycon.blip.tv/
-- 
http://mail.python.org/mailman/listinfo/python-list


xmlrpc slow in windows 7 if hostnames are used

2010-02-04 Thread News123
Hi,

I wrote a small xmlrpc client on Windows 7 with python 2.6

srv = xmlrpclib.Server('http://localhost:80')

I was able to perform about 1 rpc call per second


After changing to
srv = xmlrpclib.Server('http://127.0.0.1:80')

I was able to perform about 10 to 16 rpc calls per second.

So it seems, that under windows 7 the host name lookup occurs for every
RPC call (which is of course necessary for long running processes, as
the target host might change it's ip during the scripts execution)

For my use cases however I could live with one IP-address lookup at the
beginning of the script.


I wonder now about how I could deal with virtual web servers.

( a web server running with one ip-adress and one port, which behaves
differntly depending on the host name of the url request)

I'm just curious, as currently I don't have to access virtual servers
via xmlrpc,

Is there any way to 'pre-lookup the IP address', and to keep the host
name in the http POST request?


thanks for any ideas



N





-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Problem with __init__.py in Python3.1

2010-02-04 Thread Ben Finney
"Gabriel Genellina"  writes:

> If you directly run a script from inside a package, Python does not
> know that it belongs to a package, and treats it as a simple, lonely
> script. In that case, relative imports won't work.

Which I consider to be a bug. Fortunately, it's already addressed in PEP
366 http://www.python.org/dev/peps/pep-0366/>. Unfortunately, it
involves more hackish boilerplate at the top of the program, and is only
available in Python 2.6+.

-- 
 \  “Ignorance more frequently begets confidence than does |
  `\   knowledge.” —Charles Darwin, _The Descent of Man_, 1871 |
_o__)  |
Ben Finney
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Background Zones in Pylab Plot

2010-02-04 Thread Wanderer
On Feb 3, 10:50 pm, CM  wrote:
> On Feb 3, 10:49 am, Wanderer  wrote:
>
> > I would like to add background zones in pylab plots. Colored sections
> > of the background that the curves pass through. Is this possible? My
> > google searches don't turn up anything but maybe my search terms
> > aren't the right ones.
>
> > Thanks
>
> If you look at the matplotlib gallery, I think there may be some
> images
> that show something like what you want, and then you can look at the
> code.  It's here:
>
> http://matplotlib.sourceforge.net/gallery.html
>
> HTH,
> Che

That helped. There should be something in there I can use.
Thank you
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Python and Ruby

2010-02-04 Thread Robert Kern

On 2010-02-04 14:55 PM, Jonathan Gardner wrote:

On Feb 3, 3:39 pm, Steve Holden  wrote:

Robert Kern wrote:

On 2010-02-03 15:32 PM, Jonathan Gardner wrote:



I can explain all of Python in an hour; I doubt anyone will understand
all of Python in an hour.



With all respect, talking about a subject without a reasonable chance of
your audience understanding the subject afterwards is not explaining.
It's just exposition.


I agree. If the audience doesn't understand then you haven't explained it.


On the contrary, that explanation would have everything you need. It
would take an hour to read or listen to the explanation, but much more
than that time to truly understand everything that was said.


Like I said, that's exposition, not explanation. There is an important 
distinction between the two words. Simply providing information is not 
explanation. If it takes four hours for your audience to understand it, then you 
explained it in four hours no matter when you stopped talking.


--
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


Pixel control

2010-02-04 Thread joao abrantes
Hello everyone. For example i am using a screen resolution of 800x600 is it
possible to make python control the color of the pixels? For example paint
the pixel (100,200) in red! And it would stay red when i am seeing a
webpage, a movie, playing a game... etc.. Regards, João Abrantes.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: PyQt4 designer custom properties - combo box style

2010-02-04 Thread David Boddie
On Tuesday 02 February 2010 22:25, Andrew wrote:

> I am creating custom widgets for the PyQt4 Designer. I can create
> custom properties, but I'm looking for how to create a custom property
> that has a combo box drop down. I've seen them in the example widgets
> and tried following them, but they are using pre-defined items to
> populate their property, so it's not a very clear example of how to
> get the combo box property to work.

Can you explain a bit more about what you have seen and what you are
trying to do. Are you trying to create a property that is treated
specially by Designer or do you want to get the data for the combo
box from somewhere else?

> Is there any other examples or help for this kind of setup?

Have you seen this article?

  http://qt.nokia.com/doc/qq/qq26-pyqtdesigner.html

David
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: python admin abuse complaint

2010-02-04 Thread Steve Holden
Xah Lee wrote:
> 2010-02-04
> 
> Hi Steve,
> 
> thank you for the reply.
> 
> I appreciate that you taking this more seriously than normal
> newsgroups postings. In fact, for this complaint, the response you
> made is all i asked for.
> 
OK, in that case I won't trouble anyone else about it.

> I have a lot things to say about the various political struggle that
> one sees everyday in just about every communication channels that are
> predominantly young male groups, of relatively few people, in online
> posting forums, ircs, online massive multiplayer games... as you may
> know, the quarrels, accusations, bans, happen every hour.
> 
I understand that the diversity of the various channels available to
Python users (and indeed of the Python community overall) is not as high
as it could be. This does from time to time lead to inappropriate behaviors.

I suspect dash kicked you off #python simply because of the reputation
you have established on comp.lang.python, but of course I cannot speak
for him.

> But to be concrete and constructive, i would suggest that in
> freenode's python irc channel:
> 
> • when a admin bans someone, the admin needs to tell the person the
> reason, and not in some rude way. (a single sentence will do.)
> 
That would, I agree, be appropriate.

> • The list of ban'd person's names, the reason for banning, and the
> name of admin who ban'd them, should be public. (irc already provides
> means for this that allows admins to annotate in the ban list.) In
> particular, if you are going to ban someone by ip address, make sure
> the person's handle (or preferably real life name), be listed together
> with it. (again, this needs not elaborate. A single sentence will do,
> e.g. “repeatedly asking same question”, “continously raising
> controversial issues”, “refused to use paste bin when requested” will
> do. Again, be as precise in description as possible. For example,
> “ban'd for trolling”, “annoying others”, are not a meaningful reason.)
> 
This is perhaps a little formal for something that (as far as I know)
happens less than once a month. I am reluctant to start up any kind of
bureaucracy around bannings unless they become too frequent (in which
case your suggestions above seem reasonable).

> • additionally, i would suggest that bans be temporary. The following
> period seems a good start: 5 min ban, 1 hour ban, 1 day ban, 1 week
> ban, 1 month ban. Each can be executed according to severity per the
> admin's judgement. There should be no permanent ban, unless it's
> machine generated commercial spam.
> 
Again, this is probably over-formal for the current levels of banning,
but a reasonable idea in principle.

> Thank you.
> 
> For anyone reading this thread and interested in my opinions, i have
> written many essays related to this and netiquette. Many of which
> detail other similar incidences that i personally experienced, such as
> freenode's irc ban in #emacs channel. If you are interested, they can
> be found on my website, search for “ban xah lee”.
> 
Xah, your opinions are I think pretty well-known around here. I
understand that you consider yourself an authority on netiquette, but as
I mentioned in my last response I have personally observed you on many
occasions indulging in inappropriate behavior such as cross-posting
irrelevant material to many newsgroups at the same time. It is actions
like that, combined with your use of intemperate and abusive language,
that caused you to get banned before you had chance to say much.

It's a bit like the boy who cried 'wolf'. People see you doing these
things, and so when you appear on an IRC channel where this is known
about you get banned as a pre-emptive measure.

I have discussed this matter with dash, and he has agreed not to kick
you off without reason the next time you join #python. This will only
last as long as your behavior remains acceptable, so please don't abuse
the privilege I have won back for you. If you do, that will make me feel
(and look) like a real dick, and get you banned again straight away.

regards
 Steve

>   Xah
> ∑ http://xahlee.org/
> 
> ☄
> 
> 
> On Feb 2, 2:23 pm, "Steve Holden, Chairman, PSF" 
> wrote:
>> Xah Lee wrote:
>>> This is a short complaint on admin abuse on #python irc channel on
>>> freenode.net.
>>> Here's a log:
>>> 2010-02-02
>>> (12:11:57 PM) The topic for #python is: NO LOL |http://pound-python.org/
>>> | It's too early to use Python 3.x | Pasting > 3 lines? Pastebin:
>>> http://paste.pocoo.org/| Tutorial:http://docs.python.org/tut/| FAQ:
>>> http://effbot.org/pyfaq/| New Programmer? Readhttp://tinyurl.com/thinkcspy
>>> | #python.web #wsgi #python-fr #python.de #python-es #python.tw
>>> #python.pl #python-br #python-jp #python-nl #python-ir #python-
>>> offtopic
>>> (12:12:00 PM) _habnabit: pr100, I replaced it with str.startswith,
>>> actually.
>>> (12:12:01 PM) jarray52: Jarray
>>> (12:12:11 PM) _habnabit: jarray52, yes, you are.
>>> (12:12:16 PM) xahlee: is hash={} and hash.clean() ide

Your beloved python features

2010-02-04 Thread Julian
Hello,

I've asked this question at stackoverflow a few weeks ago, and to make
it clear: this should NOT be a copy of the stackoverflow-thread
"hidden features of Python".

I want to design a poster for an open source conference, the local
usergroup will have a table there, and in the past years there were
some people that came to the python-table just to ask "why should I
use python?".

For those guys would be a poster quite cool which describes the most
popular and beloved python features.

So, may you help me please? If there's a similar thread/blogpost/
whatever, please give it to me, google couldn't.

Regards
Julian
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Passing command line argument to program from within IDLE?

2010-02-04 Thread Steven D'Aprano
On Thu, 04 Feb 2010 16:28:17 -0500, Steve Holden wrote:

> Terry Reedy wrote:
>> On 2/4/2010 3:55 PM, Alan Biddle wrote:
>>> Just finishing my first Python (2.6 on Win XP)  program, which is
>>> working fine.  My "Duh?" question is about how to run it from within
>>> IDLE and pass it command line arguments.  No problem using sys.argv
>>> from a Windows command line, but I have missed how you can do that
>>> from within IDLE, which complicates development and debugging.
>> 
>> I presume you mean edit, F5-run, see result in shell window. Set
>> sys.argv in test function or __name__=='__main__' In 3.1 idle shell:
>> 
> import sys
> sys.argv
>> ['']
> sys.argv = ['abc','dev']
> sys.argv
>> ['abc', 'dev']
>> 
>> I did not know it was writable, either, until I tried it.
>> 
> As a solution, however, that sucks, wouldn't you agree?

[scratches head]

Do you mean setting sys.argv as a solution sucks? No, I don't, I think it 
is grand. If sys.argv was unmodifiable, *that* would suck.

Or do you mean that trying it as a solution to the problem of answering 
the OP's question sucks? Well, no, experimentation is good for answering 
these sorts of questions, and I can't assume that the documentation will 
cover every imaginable use-case, or that users will find it. In the 
absence of any documentation stating otherwise, I would have assumed that 
sys.argv was an ordinary list which you can modify at will, but having 
been caught out on faulty assumptions before, I would try it and see 
before commenting publicly.


-- 
Steven
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Your beloved python features

2010-02-04 Thread R Fritz
My favorite feature is its readability.  It's as near to pseudo-code
as any language we have, and that's valuable in open source projects
or when I return to code to modify it.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Passing command line argument to program from within IDLE?

2010-02-04 Thread Steve Holden
Steven D'Aprano wrote:
> On Thu, 04 Feb 2010 16:28:17 -0500, Steve Holden wrote:
> 
>> Terry Reedy wrote:
>>> On 2/4/2010 3:55 PM, Alan Biddle wrote:
 Just finishing my first Python (2.6 on Win XP)  program, which is
 working fine.  My "Duh?" question is about how to run it from within
 IDLE and pass it command line arguments.  No problem using sys.argv
 from a Windows command line, but I have missed how you can do that
 from within IDLE, which complicates development and debugging.
>>> I presume you mean edit, F5-run, see result in shell window. Set
>>> sys.argv in test function or __name__=='__main__' In 3.1 idle shell:
>>>
>> import sys
>> sys.argv
>>> ['']
>> sys.argv = ['abc','dev']
>> sys.argv
>>> ['abc', 'dev']
>>>
>>> I did not know it was writable, either, until I tried it.
>>>
>> As a solution, however, that sucks, wouldn't you agree?
> 
> [scratches head]
> 
> Do you mean setting sys.argv as a solution sucks? No, I don't, I think it 
> is grand. If sys.argv was unmodifiable, *that* would suck.
> 
> Or do you mean that trying it as a solution to the problem of answering 
> the OP's question sucks? Well, no, experimentation is good for answering 
> these sorts of questions, and I can't assume that the documentation will 
> cover every imaginable use-case, or that users will find it. In the 
> absence of any documentation stating otherwise, I would have assumed that 
> sys.argv was an ordinary list which you can modify at will, but having 
> been caught out on faulty assumptions before, I would try it and see 
> before commenting publicly.
> 
> 
What I meant was it sucks that IDLE has no way to fill in sys.argv as a
part of its "Run Module" functionality - something that is present in
both PythonWin and Wing IDE, for example. But then I have come to the
conclusion that IDLE doesn't fit my brain, or my brain doesn't fit it.

That sys.argv is mutable simply reflects the fact that it's a list.

regards
 Steve
-- 
Steve Holden   +1 571 484 6266   +1 800 494 3119
PyCon is coming! Atlanta, Feb 2010  http://us.pycon.org/
Holden Web LLC http://www.holdenweb.com/
UPCOMING EVENTS:http://holdenweb.eventbrite.com/

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Your beloved python features

2010-02-04 Thread Paul Rubin
Julian  writes:
> I want to design a poster for an open source conference, the local
> usergroup will have a table there, and in the past years there were
> some people that came to the python-table just to ask "why should I
> use python?".

It's terrible, but all the alternatives are even worse. ;-)
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Passing command line argument to program from within IDLE?

2010-02-04 Thread John Bokma
Steven D'Aprano  writes:

> On Thu, 04 Feb 2010 16:28:17 -0500, Steve Holden wrote:
>
>> Terry Reedy wrote:
>>> On 2/4/2010 3:55 PM, Alan Biddle wrote:
 Just finishing my first Python (2.6 on Win XP)  program, which is
 working fine.  My "Duh?" question is about how to run it from within
 IDLE and pass it command line arguments.  No problem using sys.argv
 from a Windows command line, but I have missed how you can do that
 from within IDLE, which complicates development and debugging.
>>> 
>>> I presume you mean edit, F5-run, see result in shell window. Set
>>> sys.argv in test function or __name__=='__main__' In 3.1 idle shell:
>>> 
>> import sys
>> sys.argv
>>> ['']
>> sys.argv = ['abc','dev']
>> sys.argv
>>> ['abc', 'dev']
>>> 
>>> I did not know it was writable, either, until I tried it.
>>> 
>> As a solution, however, that sucks, wouldn't you agree?
>
> [scratches head]
>
> Do you mean setting sys.argv as a solution sucks? No, I don't, I think it 
> is grand. If sys.argv was unmodifiable, *that* would suck.
>
> Or do you mean that trying it as a solution to the problem of answering 
> the OP's question sucks? Well, no, experimentation is good for answering 
> these sorts of questions, and I can't assume that the documentation will 
> cover every imaginable use-case, or that users will find it. In the 
> absence of any documentation stating otherwise, I would have assumed that 
> sys.argv was an ordinary list which you can modify at will, but having 
> been caught out on faulty assumptions before, I would try it and see 
> before commenting publicly.

I guess that Terry means that a solution that makes it possible to
specify in IDLE *outside* of the Python code the arguments would be
better. Hardcoding the command line arguments isn't something I would do
for testing.

-- 
John Bokma   j3b

Hacking & Hiking in Mexico -  http://johnbokma.com/
http://castleamber.com/ - Perl & Python Development
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Passing command line argument to program from within IDLE?

2010-02-04 Thread John Bokma
John Bokma  writes:

> Steven D'Aprano  writes:
>
>> On Thu, 04 Feb 2010 16:28:17 -0500, Steve Holden wrote:
>>
>>> Terry Reedy wrote:
 On 2/4/2010 3:55 PM, Alan Biddle wrote:
> Just finishing my first Python (2.6 on Win XP)  program, which is
> working fine.  My "Duh?" question is about how to run it from within
> IDLE and pass it command line arguments.  No problem using sys.argv
> from a Windows command line, but I have missed how you can do that
> from within IDLE, which complicates development and debugging.
 
 I presume you mean edit, F5-run, see result in shell window. Set
 sys.argv in test function or __name__=='__main__' In 3.1 idle shell:
 
>>> import sys
>>> sys.argv
 ['']
>>> sys.argv = ['abc','dev']
>>> sys.argv
 ['abc', 'dev']
 
 I did not know it was writable, either, until I tried it.
 
>>> As a solution, however, that sucks, wouldn't you agree?
>>
>> [scratches head]
>>
>> Do you mean setting sys.argv as a solution sucks? No, I don't, I think it 
>> is grand. If sys.argv was unmodifiable, *that* would suck.
>>
>> Or do you mean that trying it as a solution to the problem of answering 
>> the OP's question sucks? Well, no, experimentation is good for answering 
>> these sorts of questions, and I can't assume that the documentation will 
>> cover every imaginable use-case, or that users will find it. In the 
>> absence of any documentation stating otherwise, I would have assumed that 
>> sys.argv was an ordinary list which you can modify at will, but having 
>> been caught out on faulty assumptions before, I would try it and see 
>> before commenting publicly.
>
> I guess that Terry means that a solution that makes it possible to
> specify in IDLE *outside* of the Python code the arguments would be
> better. Hardcoding the command line arguments isn't something I would do
> for testing.

Oops, that should've been Steve, my apologies.

-- 
John Bokma   j3b

Hacking & Hiking in Mexico -  http://johnbokma.com/
http://castleamber.com/ - Perl & Python Development
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Python 3 minor irritation

2010-02-04 Thread Gabriel Genellina
En Thu, 04 Feb 2010 17:50:29 -0300, Gib Bogle  
 escribió:

Gabriel Genellina wrote:



 Also, from the command line, execute:
 D:\temp>reg query HKCR\.py
 ! REG.EXE VERSION 3.0
 HKEY_CLASSES_ROOT\.py
REG_SZ  Python.File
Content TypeREG_SZ  text/plain
 HKEY_CLASSES_ROOT\.py\PersistentHandler


I'm interested in this, because I'm using Windows XP, and when I execute  
this command I see the first part but not the second (with  
PersistentHandler).


Sorry, I should have removed that line. This is just my setup; a normal  
Python install doesn't create that registry entry. It allows Desktop  
Search (or Windows Search, or whatever it is called nowadays; the F3 key)  
to search inside .py files (default behavior is to just ignore their  
contents).

See http://support.microsoft.com/kb/309173

Is this related to the fact that when I double-click on a .py file the  
command window disappears after the execution is completed?


(I bet the "Persistent" word confused you.) No, as you can see, it's  
completely unrelated. AFAIK, there is no way (on XP and later at least) to  
keep a console window open after the program exited. Three choices:


- Open a cmd window and execute the script there. You may drag&drop the  
file over the window to avoid typing the full path (I think this last part  
does not work on Vista nor Win7)


- Add a raw_input() [2.x] or input() [3.x] line at the end of the script

- Rename it with a '.cmd' extension and add this line at the very top:

@(C:\Python26\Python -x %~f0 %* || pause) && goto:EOF

(see this post by Duncan Booth last month:
http://comments.gmane.org/gmane.comp.python.general/650913 )

--
Gabriel Genellina

--
http://mail.python.org/mailman/listinfo/python-list


Re: Passing command line argument to program from within IDLE?

2010-02-04 Thread Gabriel Genellina
En Thu, 04 Feb 2010 20:46:52 -0300, John Bokma   
escribió:

John Bokma  writes:



On 2/4/2010 3:55 PM, Alan Biddle wrote:

Just finishing my first Python (2.6 on Win XP)  program, which is
working fine.  My "Duh?" question is about how to run it from within
IDLE and pass it command line arguments.



I guess that Terry means that a solution that makes it possible to
specify in IDLE *outside* of the Python code the arguments would be
better. Hardcoding the command line arguments isn't something I would do
for testing.


Oops, that should've been Steve, my apologies.


See http://bugs.python.org/issue5680

--
Gabriel Genellina

--
http://mail.python.org/mailman/listinfo/python-list


Re: Code snippet: dualmethod descriptor

2010-02-04 Thread Steven D'Aprano
On Thu, 04 Feb 2010 00:09:02 -0300, Gabriel Genellina wrote:

> En Sat, 30 Jan 2010 03:06:18 -0300, Steven D'Aprano
>  escribió:
> 
>> class dualmethod(object):
[...]

> Seems useful!
> Perhaps a better place to post it would be
> , at least it's
> easier to search.



Thank you for the encouragement. The recipe is now posted:

http://code.activestate.com/recipes/577030/



-- 
Steven
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Passing command line argument to program from within IDLE?

2010-02-04 Thread Terry Reedy

On 2/4/2010 6:29 PM, Steve Holden wrote:

Steven D'Aprano wrote:

On Thu, 04 Feb 2010 16:28:17 -0500, Steve Holden wrote:


Terry Reedy wrote:

On 2/4/2010 3:55 PM, Alan Biddle wrote:

Just finishing my first Python (2.6 on Win XP)  program, which is
working fine.  My "Duh?" question is about how to run it from within
IDLE and pass it command line arguments.  No problem using sys.argv
from a Windows command line, but I have missed how you can do that
from within IDLE, which complicates development and debugging.

I presume you mean edit, F5-run, see result in shell window. Set
sys.argv in test function or __name__=='__main__' In 3.1 idle shell:


import sys
sys.argv

['']

sys.argv = ['abc','dev']
sys.argv

['abc', 'dev']

I did not know it was writable, either, until I tried it.


As a solution, however, that sucks, wouldn't you agree?


No, see below.


[scratches head]

Do you mean setting sys.argv as a solution sucks? No, I don't, I think it
is grand. If sys.argv was unmodifiable, *that* would suck.

Or do you mean that trying it as a solution to the problem of answering
the OP's question sucks? Well, no, experimentation is good for answering
these sorts of questions, and I can't assume that the documentation will
cover every imaginable use-case, or that users will find it. In the
absence of any documentation stating otherwise, I would have assumed that
sys.argv was an ordinary list which you can modify at will, but having
been caught out on faulty assumptions before, I would try it and see
before commenting publicly.



What I meant was it sucks that IDLE has no way to fill in sys.argv as a
part of its "Run Module" functionality - something that is present in
both PythonWin and Wing IDE, for example.


The first thing I did was to check for such an option on the run tab. 
The second thing I thought of was to suggest to OP that he file a 
feature request (which would likely take years, if ever). But then the 
test line would not be fetched from the file (unless some ##cmdline 
convention were invented), but would have to be hand-entered each time 
the editor were run. Also, a given run of a program can have only one 
command line, and changing the run line for each test case would suck. 
Then I tried sys.argv.


Why that does not suck:

A Python program, as far as I know, cannot process a command lines 
directly, but only processed command line args in the form of a list of 
strings -- sys.argv. Therefore, the need for testing is not to simulate 
a command line but to set sys.argv. I assume the programmer knows the 
mapping from command line to argv since he otherwise cannot sensibly 
proceed.


I believe it is sensible, if not recommended, to put an arg processing 
in a defined function that returns, for instance, a dict, rather than to 
do it at top-level in the main script. So in use, process_args() will be 
called in a context with sys.argv set. So let it be tested. For 
instance, something like:


def _test_arg_processing:
  arg_dict_pairs - (
(['arg1', 'arg2'], {'speed':int('arg1'), 'range':float('arg2'}),
(['-v'], {'verbose': True},
  )
  for args,dic in arg_dict_pairs:
sys.argv = args
assert process_args() == dic

Repeatable automatic testing of multiple test cases.
I just starting doing this a year ago and love it.

Terry Jan Reedy

--
http://mail.python.org/mailman/listinfo/python-list


Re: Your beloved python features

2010-02-04 Thread Terry Reedy

Iterators, and in particular, generators.
A killer feature.

Terry Jan Reedy

--
http://mail.python.org/mailman/listinfo/python-list


Re: Wrap a function

2010-02-04 Thread Aahz
In article ,
Dennis Lee Bieber   wrote:
>On 3 Feb 2010 08:38:47 -0800, a...@pythoncraft.com (Aahz) declaimed the
>following in gmane.comp.python.general:
>> In article ,
>> Dennis Lee Bieber   wrote:
>>>
>>> I shall blaspheme, and suggest that maybe the language you want to
>>>use is REXX (ooREXX or Regina).
>>>
>>> By default, ANY statement that can not be confused for a REXX
>>>language statement is sent to the currently defined command handler
>>>(Which on most OSs is equivalent to Python's os.system() call; the late
>>>Amiga, and IBM's mainframe OS had features that support defining other
>>>applications as command handlers).
>> 
>> How is that different from bash scripting?
>
>   Uhm... Does a bash script support inlining statements from some
>other language?
>
>   Python's shutil library essentially disappears in REXX as one can
>plug in the native command line statement for those functions.


But in bash scripting, you'd just use rsync or cp or rm -- maybe an
example would make clearer how REXX differs from bash.
-- 
Aahz (a...@pythoncraft.com)   <*> http://www.pythoncraft.com/

import antigravity
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Passing command line argument to program from within IDLE?

2010-02-04 Thread Steve Holden
Gabriel Genellina wrote:
> En Thu, 04 Feb 2010 20:46:52 -0300, John Bokma 
> escribió:
>> John Bokma  writes:
> 
>> On 2/4/2010 3:55 PM, Alan Biddle wrote:
>>> Just finishing my first Python (2.6 on Win XP)  program, which is
>>> working fine.  My "Duh?" question is about how to run it from within
>>> IDLE and pass it command line arguments.
> 
>>> I guess that Terry means that a solution that makes it possible to
>>> specify in IDLE *outside* of the Python code the arguments would be
>>> better. Hardcoding the command line arguments isn't something I would do
>>> for testing.
>>
>> Oops, that should've been Steve, my apologies.
> 
> See http://bugs.python.org/issue5680
> 
So we've had a patch since April and it still didn't make it into 3.1?
That's disappointing. I wonder if there's any chance it'll get into 2.7.

regards
 Steve
-- 
Steve Holden   +1 571 484 6266   +1 800 494 3119
PyCon is coming! Atlanta, Feb 2010  http://us.pycon.org/
Holden Web LLC http://www.holdenweb.com/
UPCOMING EVENTS:http://holdenweb.eventbrite.com/

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Python 3 minor irritation

2010-02-04 Thread Gib Bogle

Gabriel Genellina wrote:

Sorry, I should have removed that line. This is just my setup; a normal 
Python install doesn't create that registry entry. It allows Desktop 
Search (or Windows Search, or whatever it is called nowadays; the F3 
key) to search inside .py files (default behavior is to just ignore 
their contents).

See http://support.microsoft.com/kb/309173

Is this related to the fact that when I double-click on a .py file the 
command window disappears after the execution is completed?


(I bet the "Persistent" word confused you.) No, as you can see, it's 
completely unrelated. AFAIK, there is no way (on XP and later at least) 
to keep a console window open after the program exited. Three choices:


- Open a cmd window and execute the script there. You may drag&drop the 
file over the window to avoid typing the full path (I think this last 
part does not work on Vista nor Win7)


- Add a raw_input() [2.x] or input() [3.x] line at the end of the script

- Rename it with a '.cmd' extension and add this line at the very top:

@(C:\Python26\Python -x %~f0 %* || pause) && goto:EOF

(see this post by Duncan Booth last month:
http://comments.gmane.org/gmane.comp.python.general/650913 )



Thanks Gabriel.  I didn't know about the drag&drop capability (learn something 
every day, forget two things).  BTW input() works for me in 2.5.

Cheers
Gib
--
http://mail.python.org/mailman/listinfo/python-list


Re: xmlrpc slow in windows 7 if hostnames are used

2010-02-04 Thread Gabriel Genellina

En Thu, 04 Feb 2010 19:34:20 -0300, News123  escribió:


I wrote a small xmlrpc client on Windows 7 with python 2.6

srv = xmlrpclib.Server('http://localhost:80')

I was able to perform about 1 rpc call per second


After changing to
srv = xmlrpclib.Server('http://127.0.0.1:80')

I was able to perform about 10 to 16 rpc calls per second.

So it seems, that under windows 7 the host name lookup occurs for every
RPC call


Not necesarily. There is another difference: 127.0.0.1 is an IPv4 address,  
localhost maps to both IPv4 and IPv6 addresses (::1)


I vaguely remember a problem with that - IPv6 is tried first, doesn't  
work, only then IPv4, and that slows down the whole process.

Try disabling completely the IPv6 stack, if you don't need it.

--
Gabriel Genellina

--
http://mail.python.org/mailman/listinfo/python-list


Re: python admin abuse complaint

2010-02-04 Thread Stephen Thorne
On Feb 5, 8:26 am, Xah Lee  wrote:
> I appreciate that you taking this more seriously than normal
> newsgroups postings. In fact, for this complaint, the response you
> made is all i asked for.
>
> 

I am taking this as seriously as all the articles you have posted to
usenet.

Stephen.
-- 
http://mail.python.org/mailman/listinfo/python-list


  1   2   >