Re: mail sending -- smtplib

2010-09-08 Thread Kurian Thayil
Got it fixed. It was a very silly mistake. mssg variable had each line with
indent. Removed the indent and it worked.

Regards,

Kurian Thayil.

On Tue, Sep 7, 2010 at 9:57 AM, Kurian Thayil kurianmtha...@gmail.comwrote:

 Hi All,

 I am a newbie in python. Just 2-3 days old wanting to learn this amazing
 programming language. I was trying to send mails using smtplib module, so
 did some google and found a code snippet. The mail gets sent, but doesn't
 come in the right format when a for-loop is introduced (Not MIME standard?).
 Without the for-loop the script works fine. Can anyone advice?
 *
 #!/usr/bin/env python

 import smtplib

 for i in range(1,5):
 print I is ,i
 fromaddr='kurianmtha...@gmail.com'
 toaddr='kurianmtha...@gmail.com'
 print toaddr
 mssg=From: Kurian Thayil kurianmtha...@gmail.com
 To: Kurian Thayil kurianmtha...@gmail.com
 MIME-Version: 1.0
 Content-type: text/html
 Subject: 12345 -- Reloaded :)

 bHey dude.. how are you/b

 brbrbrbr
 Regards,
 brbr
 Kurian
 
 print message is ,mssg

 smail=smtplib.SMTP('smtp.gmail.com',587)

 smail.ehlo()
 smail.starttls()
 smail.ehlo()
 smail.login(fromaddr,'***')

 smail.sendmail(fromaddr,toaddr,mssg)
 print Over
 *

 Regards,

 Kurian Thayil.

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


Re: The Samurai Principle

2010-09-08 Thread Ian Kelly
On Tue, Sep 7, 2010 at 9:35 PM, Phlip phlip2...@gmail.com wrote:
 Exceptions are very dangerous by themselves, because if you don't trap
 them just right they can cause side-effects.

And returning None on failure is dangerous, because if the programmer
does not take care to handle that case, the program may attempt to
regard it as actual data.  This in turn results in hard-to-track bugs
elsewhere in the program, a fate much worse than an unhandled
exception.  It's better to fail noisily than to fail silently.

 They are worse than GOTO.

This assertion is questionable at best.  Exceptions are structured;
goto is unstructured, giving you much more rope to hang yourself with.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: another way to sort like l.sort(key=lambda x:(x[0][0], -x[1][0]))

2010-09-08 Thread sajuptpm
Detailed Description
-


l1 = []

l2 = [
 ((3,8),(1,2)),
 ((1,3),(1,7)),
 ((7,0),(1,8)),
 ((4,2),(1,2)),
 ((2,9),(9,1))
]

I need to take each item from l2 and insert into l1 with first
element(column)(3,1,7,4,2) sorted in ascending order and second
element(column)(8,3,0,2,9) sorted in descending order.


#SORTING

for k in l2:
flag=True
for i, v in enumerate(l1):
if v = k:
l1.insert(i,k)
flag = False
break
if flag:
l1.append(k)


for a in l1:
print a

output
---
((7, 0), (1, 8))
((4, 2), (1, 2))
((3, 8), (1, 2))
((2, 9), (9, 1))
((1, 3), (1, 7))

This will not give l1 with first element(column)(3,1,7,4,2) sorted in
ascending order and second element(column)(8,3,0,2,9) sorted in
descending order.

-- I added a -ve signe to all first elements

l2 = [
 ((-3,8),(1,2)),
 ((-1,3),(1,7)),
 ((-7,0),(1,8)),
 ((-4,2),(1,2)),
 ((-2,9),(9,1))
]

#SORTING

for k in l2:
flag=True
for i, v in enumerate(l1):
if v = k:
l1.insert(i,k)
flag = False
break
if flag:
l1.append(k)


for a in l1:
print a

output
---
((-1, 3), (1, 7))
((-2, 9), (9, 1))
((-3, 8), (1, 2))
((-4, 2), (1, 2))
((-7, 0), (1, 8))

Now output is similar to first elements asc and second elements
desc.But the problem is the -ve sign, i dont need that.

Have any other method to do it??
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: list of tuples with dynamic change in position

2010-09-08 Thread Ulrich Eckhardt
sajuptpm wrote:
 i want to find the loaded machine based on cpu and mem and desk
 utilization by changing this order.
 
 I created a UI using that i can change the order of item in the tuple.
 But the problem is asc and desc sorting

How about only changing the order in which the elements are displayed? In
other words, the internal data is fixed, but both the sorting of the list
and the order in which the parts of the records are displayed can be
changed.

Just my 2c

Uli


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

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


LZO decompressing with Python 2.5x on Windows for C dummies

2010-09-08 Thread Kim Hansen
Hi list,

I have some binary data files which contain embedded LZO compressed
payloads mixed with normal C-struct like headers.

I would like to have the ability to LZO decompress these payloads using a
python 2.5.x script.

I was hoping that there was an up-to-date plug-and-play LZO library
available for Windows somewhere. However, I have not managed to find such a
one.

The closest I have gotten is on the official LZO home page:

http://www.oberhumer.com/opensource/lzo/

There is a link to some old LZO 1.08 bindings for Python 2.2 there as a
tar.gz (released back in 2002!)

http://www.oberhumer.com/opensource/lzo/download/LZO-v1/python-lzo-1.08.tar.gz

I managed to unpack that using the python tarfile module (very handy for the
purpose)

In essence, the tarball contains a
setup.py
lzomodule.c
Makefile
and some documentation

It does not contain anything that appears to be binaries for Windows. The
instructions indicate that I am supposed to build it myself using the
Makefile. I do not have make nor a C-compiler installed, and I fear that if
I were to compile it, it would be a very tedious process for me, and I would
rather like to avoid it if at all possible.

Concerning the Windows LZO binaries I have previously struggled with
pytables and using LZO on Windows with HDF5 files, and in relation to that
Francesc Alted was so kind to build Windows LZO ver. 1.08 binaries as
discussed here

http://www.pytables.org/moin/FAQ#A.5BWindows.5DCan.27tfindLZObinariesforWindows

and available here as a zip file

http://www.pytables.org/download/lzo-win

Amongst others, this zip file has a

Gwin32\bin\lzo1.dll

file. By copying that to the ptables filder in my python25 installation I
have managed to get LZO working with pytables.

Getting back to the python bindings, the setup.py does contain a section,
which indicates that it adresses a Windows platform also:

...
if sys.platform == win32:
# Windows users have to configure the LZO_DIR path parameter to match
# their LZO source installation.  The path set here is just an example
# and thus unlikely to match your installation.
LZO_DIR = rc:\src\lzo-1.08
include_dirs.append(os.path.join(CURL_DIR, include))
extra_objects.append(os.path.join(CURL_DIR, lzo.lib))
...

If I were clever enough I now guess I should be able to unpack the pytables
lzo Windows binaries to some suitable place (any recommendations?) and
modify the setup.py such that it
correctly binds the dll (this is black magic to me). One thing, which
concerns me, is that a file lzo.lib is mentioned in the current setup.py,
but there is not a file with that name in the GnuWin32 zip zip file from
Francesc in the lib folder of the zip I do find two lib files.:

liblzo.lib
liblzo-bcc.lib

but are any of these related to the lzo.lib mentioned in the setup.py?

It does not help that I have a very poor understanding of how Python binds
to native libraries, nor how things should be installed manually.

My next question, if somehow someone is able to guide me a little in the
process, then how do I use the library once available.

The README indicates that I should use the internal Python documentation- So
I guess i should just open an IPython shell do an

import lzo?
and then tab on lzo. and see what is available?

Sorry for the long post.

Kind regards,
Kim
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: The Samurai Principle

2010-09-08 Thread Ian Kelly
On Tue, Sep 7, 2010 at 9:38 PM, Phlip phlip2...@gmail.com wrote:
 Everyone gets defensive about the design flaws in their own language.
 But the django.db situation is not even a design flaw; just a
 misinterpretation of the Samurai Principle. int('yo') shall throw an
 exception, but a missing record could be the result you were looking
 for, so it's not exceptional.

I consider it exceptional because it breaks the rule that
Model.objects.get(...) returns an instance of Model.  If it can also
return None, then this needs to be checked for every time the method
is called, because None does not implement the Model interface and
will break if you try to use it like that.  You're still doing
exception handling; you're just doing it with an if instead of a
try-except.  I prefer to do exception handling in a block clearly
marked as an exception handler.

Out of curiosity, would you also regard the case where two matching
records are found instead of one as not exceptional?  After all, it
could be the result you were looking for.  What should QuerySet.get
return in that case, if it doesn't raise an exception?
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: include a file in a python program

2010-09-08 Thread bussiere bussiere
Thanks all for your response i will try out this week, you have give
me sufficient hints.
Thanks again.
Bussiere
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: another way to sort like l.sort(key=lambda x:(x[0][0], -x[1][0]))

2010-09-08 Thread Peter Otten
sajuptpm wrote:

 Now output is similar to first elements asc and second elements
 desc.But the problem is the -ve sign, i dont need that.
 
 Have any other method to do it??

Sort twice:

 for item in items:
... print item
...
('adams', 'anne')
('miller', 'arnold')
('miller', 'bill')
('adams', 'berta')
('adams', 'charlotte')
('miller', 'thomas')
 items.sort(key=lambda x: x[1], reverse=True)
 items.sort(key=lambda x: x[0])
 for item in items:
... print item
...
('adams', 'charlotte')
('adams', 'berta')
('adams', 'anne')
('miller', 'thomas')
('miller', 'bill')
('miller', 'arnold')

See? First column ascending, second column descending within groups of rows 
with equal first column.

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


console-editor written in python

2010-09-08 Thread Tanje Toolate
hi there,


greetings.

i am looking for a small, console-based (opensource) texteditor,
written in python (or as shellscript!), but i'm not finding something
usable.

very find would be emacs-keybindings ...


dank u well,


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


Re: mutate dictionary or list

2010-09-08 Thread Baba
On 7 sep, 16:46, Ben Finney ben+pyt...@benfinney.id.au wrote:
 de...@web.de writes:
  Objects can be mutable or immutable. For example, in Python, integers,
  strings, floats and tuples are immutable. That means that you can't
  change their value.

 Yes. Importantly, wherever you see code that you *think* is changing the
 value of an immutable object, you're thinking incorrectly. (There's no
 shame in that; other languages give us preconceptions that can be hard
 to shake off.)

 The only way to get a different value from an integer object is to ask
 Python for a different integer object; the original is unchanged. The
 same goes for tuples, strings, and all the other immutable types.

  Mutable objects OTOH can be changed.

 […]

 Some good articles to explain Python's object model:

      URL:http://effbot.org/zone/python-objects.htm
      
 URL:http://docs.python.org/reference/datamodel.html#objects-values-and-types

 --
  \             “We can't depend for the long run on distinguishing one |
   `\         bitstream from another in order to figure out which rules |
 _o__)               apply.” —Eben Moglen, _Anarchism Triumphant_, 1999 |
 Ben Finney

Thanks all for feedback!
Baba
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: accessing a text file

2010-09-08 Thread Baba
On 8 sep, 02:07, Ben Finney ben+pyt...@benfinney.id.au wrote:
 Baba raoul...@gmail.com writes:
  However the following Wiki excerpt seems to go in my direction:

 No, it doesn't. It advises that people show kindness; as I've been
 arguing, that's exactly what you were shown. You haven't shown how the
 information being imparted could have been fully imparted in a way
 that's kinder, nor that it would be reasonable to do so.

 To put it another way: if you feel offended by an utterance, then
 insufficient kindness on the part of the speaker is not the only
 explanation.

 --
  \      “Software patents provide one more means of controlling access |
   `\      to information. They are the tool of choice for the internet |
 _o__)                                     highwayman.” —Anthony Taylor |
 Ben Finney

Hi Ben,

Thanks for your feedback. My question is: Who owns this forum? If we
all do then we are allowed to post questions that are simple and that
could otherwise be answered by doing research. It is just unfriendly
to tell someone to go and look it up by themselves. Who is licensed to
judge what can and cannot be posted as a question? A teacher of mine
used to say: There are no stupid questions, there are only stupid
answers. It is arrogant to tell someone in a Forum to look it up
yourself ,this question is too basic. Can you not understand that
accessing a file can seem daunting at first? Believe me, documentation
can be offputting too when you only start with programming. Per se the
beauty of forums like these is that there are human beings willing to
make such tasks as finding out how to access a text file less 'scary'.
Whoever thinks he or she has a license to tell someone to look up the
answer by themselves should think again. I reckon the only license we
have is not to answer at all. I acknowledge that Benjamin pointed me
to the right place to find an answer but somehow the Please do us a
favour sounded bit arrogant, as if he owned the place (same goes for
all those who sided against me here: do you own this forum?)...i'd be
glad if there was a python for beginners forum but in the meantime i
have to say i find it awesome to have this forum to get help. It makes
a BIG difference. So sorry if i upset anyone, we all have our opinions
and get carried away and can be stubborn, i DO respect everyone in
this forum and i think it goes bothways. I've learned a few things in
this post...

So now, to use Benjamin words: Please do me a favour and let's move
on :)

Baba

Baba

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


Re: Bit fields in python?

2010-09-08 Thread Kwan Lai Cheng
Thanks everyone for all the suggestions! New to python, so reading up on the 
struct module  Construct library now, hope to get my problem fixed soon.
  - Original Message - 

  Bitfields are most commonly used for extreme space optimization - i.e. 
shoving several variables and flags with carefully limited ranges into a single 
work. In Python you rarely work this way (where such an optimization is 
warranted, Python isn't the best tool for the job). However, as in your use 
case, it is sometimes needed in Python in order to communicate with other 
devices over the network or some other link.

  In my work with Python and embedded devices I've found the construct library 
(http://construct.wikispaces.com/) very useful. It allows to you very easily 
define complex formats for frames/messages on the bit and byte level. The idea 
is to use construct to encode and decode messages being sent to an embedded 
device. It works great.

  If you have further questions about this approach, feel free to ask.

  Eli







--


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


Re: accessing a text file

2010-09-08 Thread Paul Rubin
Baba raoul...@gmail.com writes:
 It is just unfriendly
 to tell someone to go and look it up by themselves.

Someone seeing too many unthoughtful questions from you might tell you
to look it up yourself, in the hopes of getting you to change your
questioning style, so that your future questions will be more thoughtful
and worth answering.  But according to you that would be unfriendly.

Another thing they could do is say nothing, but quietly configure their
news-reading software to ignore your questions completely.  Then none of
your future questions would have any hope of being answered.  Would that
be less unfriendly, or more unfriendly?
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Bit fields in python?

2010-09-08 Thread geremy condra
On Tue, Sep 7, 2010 at 9:53 PM, Eli Bendersky eli...@gmail.com wrote:

 I'm trying to rewrite a c program in python  encountered several
 problems. I have some data structures in my c program like below:

 typedef struct
 {
     unsigned short size;

     unsigned short reserved:8;
     unsigned short var_a1:2;
     unsigned short var_a2:2;
     unsigned short var_a3:2;
     unsigned short var_a4:2;

     unsigned int var_a5;
 }structa;

  typedef struct
 {
     unsigned short size;

     unsigned char reserved:4;
     unsigned char var_b1:1;
     unsigned char var_b2:1;
     unsigned char var_b3:1;
     unsigned char var_b4:1;

 structa var_structa;
 }structb;

 I tried to code the above in python but only got this far:

 class StructA(object):
     def __init__(self, size=0)
     self.size = size

 class StructB(object):
     def __init__(self, size=0)

 Any equivalent for c data structures  bit fields in python? And how do I
 define var_structa (in structb) in python?


 Bitfields are most commonly used for extreme space optimization - i.e.
 shoving several variables and flags with carefully limited ranges into a
 single work. In Python you rarely work this way (where such an optimization
 is warranted, Python isn't the best tool for the job). However, as in your
 use case, it is sometimes needed in Python in order to communicate with
 other devices over the network or some other link.

 In my work with Python and embedded devices I've found the construct library
 (http://construct.wikispaces.com/) very useful. It allows to you very easily
 define complex formats for frames/messages on the bit and byte level. The
 idea is to use construct to encode and decode messages being sent to an
 embedded device. It works great.

 If you have further questions about this approach, feel free to ask.

 Eli

That's really an excellent find. Thanks for bringing it up.

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


Re: Speed-up for loops

2010-09-08 Thread Ulrich Eckhardt
BartC wrote:
 So 'range' is just a class like any other. And that a class is something
 you can blithely copy from one variable to another. And whenever you see
 'range' anywhere, you can't always be certain that someone hasn't done:
 
 range = 42
 
 at some point.

True. I read an explanation here that IMHO pretty well explains what's going
on: The range above is a label, attached with a piece of string to an
object. The object in this case is the integer 42. The same object can have
multiple labels attached to it, so foo = bar will just create a new
label foo and attach it to the object that the label bar is already
attached to.

Note that I said object, which includes class instances like the int 42
above, but also the classes themselves, functions (or bound functions[1])
and modules (I hope I didn't miss any).

 That explains a lot about the difficulties of implementing Python
 efficiently.

Yes, range is not a keyword or something intrinsic to the interpreter. It
is just a name that is looked up whenever it is encountered, and that costs
time. However, you also get some nice flexibility at that cost.

Cheers!

Uli

[1] bound function = class function where the instance parameter is bound.
Example:

  x = []
  a = x.append
  a(42) # calls x.append(42)

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

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


Re: accessing a text file

2010-09-08 Thread Baba
On 8 sep, 12:46, Paul Rubin no.em...@nospam.invalid wrote:
 Baba raoul...@gmail.com writes:
  It is just unfriendly
  to tell someone to go and look it up by themselves.

 Someone seeing too many unthoughtful questions from you might tell you
 to look it up yourself, in the hopes of getting you to change your
 questioning style, so that your future questions will be more thoughtful
 and worth answering.  But according to you that would be unfriendly.

 Another thing they could do is say nothing, but quietly configure their
 news-reading software to ignore your questions completely.  Then none of
 your future questions would have any hope of being answered.  Would that
 be less unfriendly, or more unfriendly?

Hi Paul

I would support option 1 but phrased more thoughtfully than Benjamin
did (that way no feelings will be hurt):

Dear xyz,
Your question can easily be researched online. We suggest you give it
a try and to look it up yourself. This will be beneficial both to you
and to us. We do encourage to ask questions only when they have been
researched first. We care about the quality of posts but we also
understand that as a beginner one can tend to look for an easy or
quick way to find answers. So in the meantime here's something to
get you started: link

But where do you draw the line? Can we not just let people ask
questions regardless? And let those answer who want to and those who
don't just ignore the question? That seems so much easier to me.


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


Re: console-editor written in python

2010-09-08 Thread Colin J. Williams

On 08-Sep-10 04:51 AM, Tanje Toolate wrote:

hi there,


greetings.

i am looking for a small, console-based (opensource) texteditor,
written in python (or as shellscript!), but i'm not finding something
usable.

very find would be emacs-keybindings ...


dank u well,


tanja

What operating system do you use?

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


Re: console-editor written in python

2010-09-08 Thread Tanje Toolate


 What operating system do you use?

 Colin W.

usually linux. sometimes bsd.

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


Re: console-editor written in python

2010-09-08 Thread Tanje Toolate


 What operating system do you use?

 Colin W.

usually linux. sometimes bsd.

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


Why Insulation is a Good Investment

2010-09-08 Thread ......
Why Insulation is a Good Investment

Investing in products to make homes more energy efficient pays
significant dividends over a lifetime — with none of the wild
fluctuations of Wall Street.  Insulation contributes to:

- Greater comfort
- Even temperature distribution
- Improved acoustics
- Better moisture control, which can reduce floor squeaks, drywall
cracks, structure damage and condensation
- Potential for increased resale value: Installing proper insulation
levels can also make your home more attractive to potential buyers.
In fact, most buyers list energy-efficiency as a prime consideration.
The reason? Buyers know they can buy a more expensive home if heating
and cooling bills can be kept down.
- A more environmentally friendly home
- Lower energy bills* Unless your home was constructed with special
attention to energy efficiency, adding insulation will probably reduce
your utility bills.
- 60% of the existing homes in the United States are not insulated to
the best level.
- According toa study done by Harvard University's School of Public
Health, 60% of the exising homes are likely to use more energy than
newer homes, leading to very high heating and air-conditioning bills.
- Even if you own a new home, adding insulation may save enough money
in reduced utility bills to pay for itself within a few years and will
continue to save you money for as long as you own the home.*

Source: http://www.simplyinsulate.com/content/why/benefits.html
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: accessing a text file

2010-09-08 Thread Paul Rubin
Baba raoul...@gmail.com writes:
 But where do you draw the line? Can we not just let people ask
 questions regardless? And let those answer who want to and those who
 don't just ignore the question? That seems so much easier to me.

The first few times, it's easy to ignore the questions.  After a few
more times, it becomes easier to ignore the person asking the questions,
and not even look at the questions.

The answer to many of your questions also is not research it online,
but rather, figure it out with your own creativity.  That's what being
a programmer is about--figuring out solutions that don't already exist
elsewhere.
-- 
http://mail.python.org/mailman/listinfo/python-list


One Jew RASPUTIN hires another gentile RASPUTIN - to look good in comparison - always, profligate white led by a misleader jew - roman polansky, bernard madoff, moshe katsav, Craigslist Killer Philip

2010-09-08 Thread Ann Thracs
One Jew RASPUTIN hires another gentile RASPUTIN - to look good in
comparison - always, profligate white led by a misleader jew - roman
polansky, bernard madoff, moshe katsav, Craigslist Killer Philip
Markoff jew

HP CEO Mark Hurd Resigns After Sexual-Harassment Probe

JORDAN ROBERTSON and RACHEL METZ | 08/ 6/10 11:53 PM | AP

Resignation

On August 6, 2010, he resigned from all of his positions at HP,
following discovery of inappropriate conduct in an investigation into
a claim of sexual harassment made by former reality TV actress Jodie
Fisher.

THE ZIONIST JEW LARRY ELLISON WHOSE COMPANY STOLE SAUDI MONEY TO
DEVELOP ARABIC SUPPORT OF ORACLE TO HELP ISRAEL MONITOR THE
PALESTINIAN PRISON AND LABOR CAMP - ONE NEEDS TO DO INVESTIGATION TO
FIND THE BONES - A LOT OF BONES IN HIS CLOSET .  A thorough good
investigation into oracle's past should prove this. There should be a
wikileaks on corporate crimes as well.

http://www.zpub.com/un/un-le.html

Hi there, can I buy you a car? According to accusations from an
ongoing trial, that's the approach the Oracle CEO used to convince
company secretaries to, ahem, date the boss. The case involves a 33-
year-old former employee [FALSELY AND WRONGLY] accused of forging an
email message. The woman [Adelyn Lee], who was fired shortly after an
affair with Ellison, obtained a $100,000 settlement from him. Larry
Ellison's All-Time Top Pickup Line

http://www.thesmokinggun.com/documents/crime/polanski-predator

jew roman polanski raped 13 year old girl semantha geimer, orally,
vaginally and anally without any mercy

jew roman polanski raped 13 year old girl semantha geimer, orally,
vaginally and anally without any mercy

SAN FRANCISCO — Hewlett-Packard Co. ousted its CEO on Friday for
allegedly falsifying documents to conceal a relationship with a former
contractor and help her get paid for work she didn't do.

News of Mark Hurd's abrupt departure sent HP's stock tumbling. Shares
of the world's biggest maker of personal computers and printers have
doubled in value during his five-year stewardship, and HP became the
world's No. 1 technology company by revenue in that time.

The company said it learned about the relationship several weeks ago,
when the woman, who did marketing work for HP, sent a letter accusing
Hurd, 53, and the company of sexual harassment. An investigation found
that Hurd falsified expense reports and other financial documents to
conceal the relationship. The company said it found that its sexual
harassment policy wasn't violated but that its standards of business
conduct were.

Hurd's systematic pattern of submitting falsified financial reports
to hide the relationship


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


Re: Speed-up for loops

2010-09-08 Thread Steven D'Aprano
On Tue, 07 Sep 2010 11:00:03 +0100, BartC wrote:

 for i in xrange(1):
a = a + f(i)

 then unrolling the loop is even less useful. The overhead of the loop
 itself is likely to be trivial compared to the cost of calling f() 100
 million times -- the added complexity to shave 3 seconds off a four
 minute calculation simply isn't worth it.
 
 With Python 3 and def f(x): return x+1, unrolling this loop 4x improved
 speed by 15%; 4.00 minutes reduces to 3.30 minutes.


I'm afraid that I can't replicate those figures. In my test, unrolling 
the loop causes a massive SLOWDOWN of 37%, not a speed up. Here is my 
test code:


def f(x):
return x+1

def test_loop(n):
a = 0
for i in range(n):
a += f(i)
return a

def test_unrolled(n):
a = 0
for i in range(n//4):
a += f(4*i)
a += f(4*i+1)
a += f(4*i+2)
a += f(4*i+3)
return a


from timeit import Timer
n = 1000
assert test_loop(n) == test_unrolled(n)
t1 = Timer('test_loop(n)', 
  'from __main__ import test_loop; n=%d' % n)
t2 = Timer('test_unrolled(n)', 
  'from __main__ import test_unrolled; n=%d' % n)

And here are the results using Python 3.1. Times are the best of 5 for 10 
calls each to the loop_* functions, results given in seconds:

 min(t1.repeat(number=10, repeat=5))/10
5.9740923209
 min(t2.repeat(number=10, repeat=5))/10
8.25656900405883


I repeated it with a larger loop variable. Since the time per test was so 
large (over ten minutes per call on my machine!), I didn't see the need 
to run multiple trials:

n *= 100
assert test_loop(n) == test_unrolled(n)
t3 = Timer('test_loop(n)', 
  'from __main__ import test_loop; n=%d' % n)
t4 = Timer('test_unrolled(n)', 
  'from __main__ import test_unrolled; n=%d' % n)

And the results:

 t3.timeit(number=1)
653.3572518825531
 t4.timeit(number=1)
864.6454808712006

That's slightly better (32% slower instead of 37% slower), but still a 
massive performance hit. Given these results, I'm prepared to say that 
loop unrolling in Python is almost certainly going to be a pessimation, 
not an optimization, no matter what you have inside the loop.



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


Re: Speed-up for loops

2010-09-08 Thread Alain Ketterlin
Steven D'Aprano st...@remove-this-cybersource.com.au writes:

 With Python 3 and def f(x): return x+1, unrolling this loop 4x improved
 speed by 15%; 4.00 minutes reduces to 3.30 minutes.

 I'm afraid that I can't replicate those figures. In my test, unrolling 
 the loop causes a massive SLOWDOWN of 37%, not a speed up. Here is my 
 test code:

 def f(x):
 return x+1

 def test_loop(n):
 a = 0
 for i in range(n):
 a += f(i)
 return a

 def test_unrolled(n):
 a = 0
 for i in range(n//4):
 a += f(4*i)
 a += f(4*i+1)
 a += f(4*i+2)
 a += f(4*i+3)
 return a

 from timeit import Timer
 n = 1000
 assert test_loop(n) == test_unrolled(n)
 t1 = Timer('test_loop(n)', 
   'from __main__ import test_loop; n=%d' % n)
 t2 = Timer('test_unrolled(n)', 
   'from __main__ import test_unrolled; n=%d' % n)

 And here are the results using Python 3.1. Times are the best of 5 for 10 
 calls each to the loop_* functions, results given in seconds:

 min(t1.repeat(number=10, repeat=5))/10
 5.9740923209
 min(t2.repeat(number=10, repeat=5))/10
 8.25656900405883

Running this test with python 2.6 (on my laptop) led to:

 min(t1.repeat(number=10, repeat=5))/10
2.10715539455
 min(t2.repeat(number=10, repeat=5))/10
2.43037149906

That's a 15% slowdown. Which is reasonable since you add four multiplies
in the loop body. Changing your unrolled loop to:

def test_unrolled(n):
a = 0
for i in range(n//4):
b = 4*i
a += f(b)
a += f(b+1)
a += f(b+2)
a += f(b+3)
return a

makes both versions run in approximately the same time (2.135 vs.
2.136).

 That's slightly better (32% slower instead of 37% slower), but still a 
 massive performance hit. Given these results, I'm prepared to say that 
 loop unrolling in Python is almost certainly going to be a pessimation, 
 not an optimization, no matter what you have inside the loop.

I don't really see why it should be the case. Do you have any idea?

I don't think either that it should speed things up significantly. Loop
unrolling in binary code is relevant mostly because it allows better
instruction scheduling (i.e., scheduling has fewer constraints in
longer instruction sequences). Python programs are way too far from
binary code for scheduling opts to apply.

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


Automatic delegation in Python 3

2010-09-08 Thread Steven D'Aprano
Delegation in old-style classes worked fine:

# Python 2.6
 class Delegate:
... def __init__(self, x):
... self.__dict__['x'] = x
... def __getattr__(self, name):
... return getattr(self.x, name)
... def __setattr__(self, name, value):
... setattr(self.x, name, value)
...
 obj = Delegate({})
 obj[1] = None
 obj
{1: None}



But when I try the equivalent recipe with a new-style class, it behaves 
differently:

 class Delegate2(object):
... def __init__(self, x):
... self.__dict__['x'] = x
... def __getattr__(self, name):
... return getattr(self.x, name)
... def __setattr__(self, name, value):
... setattr(self.x, name, value)
...
 obj = Delegate2({})
 obj
__main__.Delegate2 object at 0x8f6130c


Okay, I get that one... because I'm inheriting from object, __getattr__ 
picks up object's __str__ method and uses that.

But then there's this:


 obj[1] = 0
Traceback (most recent call last):
  File stdin, line 1, in module
TypeError: 'Delegate2' object does not support item assignment


But these work:

 obj.__setitem__
method-wrapper '__setitem__' of dict object at 0xb7c6902c
 obj.__setitem__(1, None)
 obj.x
{1: None}


What's going on here? I *think* this has something to do with special 
double-underscore methods being looked up on the class, not the instance, 
for new-style classes, but I'm not entirely sure.

Unfortunately, I need to use delegation, not inheritance, and I need to 
use a new-style class, since I will be using Python 3. How can I do 
automatic delegation in Python 3? Is my only hope to give up on the 
elegance of automatic delegation, and code all the special methods as 
manual delegation?

class Delegate2(object):
def __setitem__(self, key, value):
self.x[key] = value
# and so on for everything else I care about...


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


Re: The Samurai Principle

2010-09-08 Thread Steven D'Aprano
On Tue, 07 Sep 2010 20:35:45 -0700, Phlip wrote:

 Exceptions are very dangerous by themselves, because if you don't trap
 them just right they can cause side-effects.

Huh?

If you don't trap them just right, the cause a stack trace, which is a 
side-effect I suppose. But it's an *intended* side-effect, since the 
alternative would be a core dump (or worse, an incorrect program that 
*doesn't* crash). This is a good thing!


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


Re: The Samurai Principle

2010-09-08 Thread Steven D'Aprano
On Tue, 07 Sep 2010 20:38:14 -0700, Phlip wrote:

 On Sep 7, 5:51 pm, Terry Reedy tjre...@udel.edu wrote:
 On 9/7/2010 2:53 PM, Phlip wrote:

  They are for situations which the caller should care not to handle.

 Python is simply not designed that way. Exception raising and catching
 is a common flow-control method in Python. If you cannot stand that,
 Python is not for you.
 
 While I'm at it, I'm going to log into comp.lang.java.misc and explain
 to everyone why static typing is overkill, and implementation
 inheritance is good for you.
 
 Everyone gets defensive about the design flaws in their own language.
 But the django.db situation is not even a design flaw; just a
 misinterpretation of the Samurai Principle. int('yo') shall throw an
 exception, but a missing record could be the result you were looking
 for, so it's not exceptional.

I think you've misunderstood the meaning of exception if you think 
that. It doesn't mean error. Nor does it mean rare. (Although, given 
that exceptions in Python are expensive, one would hope they're not *too* 
common.)

The unexceptional case of looking up a record is to find it. That, after 
all, is the purpose of the lookup function -- to find the given record. 
That's what it is designed to do, and anything else is considered 
exceptional.

Whether the lookup function returns a special not found result, or 
raises an exception, or sets some magic global error code somewhere, it's 
still an exceptional case.


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


Re: problem with simple multiprocessing script on OS X

2010-09-08 Thread Aahz
In article e4fd2b01-bfde-4614-a2df-50a8de980...@f6g2000yqa.googlegroups.com,
Darren Dale  dsdal...@gmail.com wrote:

About a year ago, I contributed a patch to h5py which checks to see if
h5py is being imported into an active IPython session. If so, then a
custom tab completer is loaded to make it easier to navigate hdf5
files. In the development version of IPython, a function that used to
return None if there was no instance of an IPython interactive shell
now creates and returns a new instance. This was the cause of the
error I was reporting. 

Hoist on your own petard, eh?  ;-)  Thanks for reporting the solution.
-- 
Aahz (a...@pythoncraft.com)   * http://www.pythoncraft.com/

...if I were on life-support, I'd rather have it run by a Gameboy than a
Windows box.  --Cliff Wells
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: The Samurai Principle

2010-09-08 Thread Grant Edwards
On 2010-09-08, Steven D'Aprano st...@remove-this-cybersource.com.au wrote:
 On Tue, 07 Sep 2010 20:35:45 -0700, Phlip wrote:

 Exceptions are very dangerous by themselves, because if you don't trap
 them just right they can cause side-effects.

 Huh?

 If you don't trap them just right, they cause a stack trace,

Not always.  That is the effect of not trapping them at all. 
However, you can trap them incorrectly -- which can result in
hard-to-track down problems.

The main example of this is a bare except clause that not only
catches and handles the expected exception but also catches (and
mishandles/ignores) an unexpected one.

 which is a side-effect I suppose. But it's an *intended* side-effect,
 since the alternative would be a core dump (or worse, an incorrect
 program that *doesn't* crash). This is a good thing!

-- 
Grant Edwards   grant.b.edwardsYow! -- I have seen the
  at   FUN --
  gmail.com
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: console-editor written in python

2010-09-08 Thread Thomas Jollans
On Wednesday 08 September 2010, it occurred to Tanje Toolate to exclaim:
 hi there,
 
 
 greetings.
 
 i am looking for a small, console-based (opensource) texteditor,
 written in python (or as shellscript!), but i'm not finding something
 usable.

Why?
(Also, I can't imagine anyone writing a shell script that deserves, or even 
aspires to deserve, the name text editor).

 
 very find would be emacs-keybindings ...

Why not just use a real emacs ?
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: accessing a text file

2010-09-08 Thread Grant Edwards
On 2010-09-08, Baba raoul...@gmail.com wrote:

 Thanks for your feedback. My question is: Who owns this forum? If we
 all do then we are allowed to post questions that are simple and that
 could otherwise be answered by doing research.

Of course you're allowed to post such questions.

And people are allowed to ignore you, to answer your question
sarcastically, to attempt to teach you how to answer your own
questions, or to respond in other ways.

It's up to _you_ to make the effort to try to insure that you get a
useful response.  To that end here is how that is accomplished:

  http://catb.org/esr/faqs/smart-questions.html

Maybe you don't _like_ the fact that you are expected to show just a
tiny bit of inititiative and care in researching and posting your
question, but that's pretty much the way it it works.  I'm sure you'd
prefer that everything was handed to you for free on a silver platter
with a side order of beer and cookies.  I'd prefer I was 20 years
younger and 30 pounds lighter.  Life's tough that way.

 It is just unfriendly to tell someone to go and look it up by
 themselves.

 1) It isn't if give them a hint on where to look it up.

 2) Posting questions like yours is considered unfriendly.

 Who is licensed to judge what can and cannot be posted as a question?

Nobody.  Post whatever questions you want however you want in whatever
language you want.  If you don't care about actually _answering_ your
question, feel free to continue in the same vein in which you started.

If you _do_ care about getting a prompt, accurate answer, then:

  http://catb.org/esr/faqs/smart-questions.html

 A teacher of mine used to say: There are no stupid questions, there
 are only stupid answers.

Ask that teacher for help then.

 It is arrogant to tell someone in a Forum to look it up yourself,
 this question is too basic.

Perhaps it is. But remember you're the one asking strangers for a free
service, so it's up to you to play by the rules in return for that
free service.  One of the rules is that you first try to answer the
question yourself.

 Can you not understand that accessing a file can seem daunting at
 first?

Maybe so, but reading a tutorial isn't.

-- 
Grant Edwards   grant.b.edwardsYow! I need to discuss
  at   BUY-BACK PROVISIONS
  gmail.comwith at least six studio
   SLEAZEBALLS!!
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: The Samurai Principle

2010-09-08 Thread Steven D'Aprano
On Wed, 08 Sep 2010 14:44:12 +, Grant Edwards wrote:

 On 2010-09-08, Steven D'Aprano st...@remove-this-cybersource.com.au
 wrote:
 On Tue, 07 Sep 2010 20:35:45 -0700, Phlip wrote:

 Exceptions are very dangerous by themselves, because if you don't trap
 them just right they can cause side-effects.

 Huh?

 If you don't trap them just right, they cause a stack trace,
 
 Not always.  That is the effect of not trapping them at all. However,
 you can trap them incorrectly -- which can result in hard-to-track down
 problems.
 
 The main example of this is a bare except clause that not only catches
 and handles the expected exception but also catches (and
 mishandles/ignores) an unexpected one.

Ah, fair enough. That would be a false positive error -- catching too 
much rather than too little.

Still, that's no better, or worse, than misinterpreting special error 
codes that are returned by functions. The main error mode there is 
catching too little -- people neglect to check the error code, and 
therefore have buggy code:

p = some_string.find('#')
print some_string[:p]

And who hasn't done this more than once?

re.search(pattern, some_string).group()



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


Re: console-editor written in python

2010-09-08 Thread mex
On 8 Sep., 16:49, Thomas Jollans tho...@jollybox.de wrote:
 On Wednesday 08 September 2010, it occurred to Tanje Toolate to exclaim:

  hi there,

  greetings.

  i am looking for a small, console-based (opensource) texteditor,
  written in python (or as shellscript!), but i'm not finding something
  usable.

 Why?
 (Also, I can't imagine anyone writing a shell script that deserves, or even
 aspires to deserve, the name text editor).



  very find would be emacs-keybindings ...

 Why not just use a real emacs ?

why? because!

ok, the part with the shellscript was a joke ...

we usually use joe/jmacs but run into issues lately on customer-
environments
with precompiled versions of this editor. a python-based console-
editor would
be perfekt.



tanja

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


Re: accessing a text file

2010-09-08 Thread Bruno Desthuilliers

Baba a écrit :


Dear xyz,
Your question can easily be researched online. We suggest you give it
a try and to look it up yourself. This will be beneficial both to you
and to us. We do encourage to ask questions only when they have been
researched first.


On usenet - as well as on most technical forums / mailing lists / etc -, 
this usually condensed in a well-known four letters acronym : RTFM


Hopefully c.l.py is an unusually friendly and polite place, so we tend 
to say it a bit more elegantly and most of the time we do indeed provide 
a link.


This being said and given your attitude - you may not realize it, but by 
now you would have been flamed to hell and back on quite a few other 
newsgroups -, I'm very tempted to switch to option 2.

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


listening socket

2010-09-08 Thread cerr
Hi,

I'm trying to create a listening socket connection on port 1514.
I tried to follow the documentation at:
http://docs.python.org/release/2.5.2/lib/socket-example.html
and came up with following lines:
import socket

host = '' # Symbolic name meaning all available
interfaces
port = 1514   # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host, port))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
while 1:
data = conn.recv(1024)
if not data: break
conn.send(data)
conn.close()
but that is not working, i'm getting this:
import: unable to open X server `' @ error/import.c/ImportImageCommand/
362.
./sockettest.py: line 4: host: command not found
./sockettest.py: line 5: port: command not found
./sockettest.py: line 6: syntax error near unexpected token `('
./sockettest.py: line 6: `s = socket.socket(socket.AF_INET,
socket.SOCK_STREAM)'

now why would it try to open an x server??? :o
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: listening socket

2010-09-08 Thread Benjamin Kaplan
On Wed, Sep 8, 2010 at 12:59 PM, cerr ron.egg...@gmail.com wrote:
 Hi,

 I'm trying to create a listening socket connection on port 1514.
 I tried to follow the documentation at:
 http://docs.python.org/release/2.5.2/lib/socket-example.html
 and came up with following lines:
 import socket

 host = ''                 # Symbolic name meaning all available
 interfaces
 port = 1514               # Arbitrary non-privileged port
 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 s.bind((host, port))
 s.listen(1)
 conn, addr = s.accept()
 print 'Connected by', addr
 while 1:
    data = conn.recv(1024)
    if not data: break
    conn.send(data)
 conn.close()
 but that is not working, i'm getting this:
 import: unable to open X server `' @ error/import.c/ImportImageCommand/
 362.
 ./sockettest.py: line 4: host: command not found
 ./sockettest.py: line 5: port: command not found
 ./sockettest.py: line 6: syntax error near unexpected token `('
 ./sockettest.py: line 6: `s = socket.socket(socket.AF_INET,
 socket.SOCK_STREAM)'

 now why would it try to open an x server??? :o
 --

Because it's not executing it as a Python program. It's trying to
execute it as a shell script. If you want to run a script as a Python
program, either call the interpreter directly
python sockettest.py

or include a Shebang line as the first line of the file that tells the
computer what interpreter to use
#!/usr/bin/env python

The file extension itself is meaningless to a Unix shell- it's just a
part of the file name.
-- 
http://mail.python.org/mailman/listinfo/python-list


are there pros or contras, keeping a connection to a (sqlite) database ?

2010-09-08 Thread Stef Mientki
 hello,

I wrap my database in some class, and on creation of the instance, a connection 
to the database is
created,
and will stay connected until the program exists, something like this:

self.conn = sqlite3.connect ( self.filename )

Now I wonder if there are pros or contras to keep the connection to the 
database continuously  open ?

thanks,
Stef Mientki

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


Re: listening socket

2010-09-08 Thread cerr
On Sep 8, 10:06 am, Benjamin Kaplan benjamin.kap...@case.edu wrote:
 On Wed, Sep 8, 2010 at 12:59 PM, cerr ron.egg...@gmail.com wrote:
  Hi,

  I'm trying to create a listening socket connection on port 1514.
  I tried to follow the documentation at:
 http://docs.python.org/release/2.5.2/lib/socket-example.html
  and came up with following lines:
  import socket

  host = ''                 # Symbolic name meaning all available
  interfaces
  port = 1514               # Arbitrary non-privileged port
  s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  s.bind((host, port))
  s.listen(1)
  conn, addr = s.accept()
  print 'Connected by', addr
  while 1:
     data = conn.recv(1024)
     if not data: break
     conn.send(data)
  conn.close()
  but that is not working, i'm getting this:
  import: unable to open X server `' @ error/import.c/ImportImageCommand/
  362.
  ./sockettest.py: line 4: host: command not found
  ./sockettest.py: line 5: port: command not found
  ./sockettest.py: line 6: syntax error near unexpected token `('
  ./sockettest.py: line 6: `s = socket.socket(socket.AF_INET,
  socket.SOCK_STREAM)'

  now why would it try to open an x server??? :o
  --

 Because it's not executing it as a Python program. It's trying to
 execute it as a shell script. If you want to run a script as a Python
 program, either call the interpreter directly
 python sockettest.py

 or include a Shebang line as the first line of the file that tells the
 computer what interpreter to use
 #!/usr/bin/env python

 The file extension itself is meaningless to a Unix shell- it's just a
 part of the file name.

hoops right... heh, thanks... :$ clearly doing too many things at the
same time...
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: mutate dictionary or list

2010-09-08 Thread Paul McGuire
On Sep 7, 7:05 am, Baba raoul...@gmail.com wrote:
 Hi

 I am working on an exercise which requires me to write a funtion that
 will check if a given word can be found in a given dictionary (the
 hand).

 def is_valid_word(word, hand, word_list):
     
     Returns True if word is in the word_list and is entirely
     composed of letters in the hand. Otherwise, returns False.
     Does not mutate hand or word_list.

 I don't understand this part: Does not mutate hand or word_list


I would re-read your exercise description.  hand is *not* a
dictionary, but is most likely a list of individual letters.
word_list too is probably *not* a dictionary, but a list of valid
words (although this does bear a resemblance to what people in
everyday life call a dictionary).  Where did you get the idea that
there was a dictionary in this problem?

The Does not mutate hand or word_list. is a constraint that you are
not allowed to update the hand or word_list arguments.  For instance,
you must not call word_list.sort() in order to search for the given
word using some sort of binary search.  You must not determine if all
the letters in word come from hand by modifying the hand list (like
dropping letters from hand as they are found in word).  There are ways
to copy arguments if you use a destructive process on their contents,
so that the original stays unmodified - but that sounds like part of
the exercise for you to learn about.

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


Re: The Samurai Principle

2010-09-08 Thread Grant Edwards
On 2010-09-08, Steven D'Aprano st...@remove-this-cybersource.com.au wrote:
 On Wed, 08 Sep 2010 14:44:12 +, Grant Edwards wrote:

 If you don't trap them just right, they cause a stack trace,
 
 Not always.  That is the effect of not trapping them at all. However,
 you can trap them incorrectly -- which can result in hard-to-track down
 problems.
 
 The main example of this is a bare except clause that not only catches
 and handles the expected exception but also catches (and
 mishandles/ignores) an unexpected one.

 Ah, fair enough. That would be a false positive error -- catching too 
 much rather than too little.

 Still, that's no better, or worse, than misinterpreting special error 
 codes that are returned by functions.

No, I didn't mean to imply that was the case.  I agree with your
conclusion.  I find it much easier to screw things up using the
exceptional return value method than the exception raise method.

-- 
Grant Edwards   grant.b.edwardsYow! Psychoanalysis??
  at   I thought this was a nude
  gmail.comrap session!!!
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: listening socket

2010-09-08 Thread Grant Edwards
On 2010-09-08, Benjamin Kaplan benjamin.kap...@case.edu wrote:
 On Wed, Sep 8, 2010 at 12:59 PM, cerr ron.egg...@gmail.com wrote:

 but that is not working, i'm getting this:
 import: unable to open X server `' @ error/import.c/ImportImageCommand/
[...]
 now why would it try to open an x server??? :o

 Because it's not executing it as a Python program. It's trying to
 execute it as a shell script.

What's even more fun is if you do have an X server, and the shell is
able to run the import program, and it does open the X server, and so
on...

[Not that things like that ever happen to _me_]

-- 
Grant Edwards   grant.b.edwardsYow! I feel partially
  at   hydrogenated!
  gmail.com
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: are there pros or contras, keeping a connection to a (sqlite) database ?

2010-09-08 Thread John Nagle

On 9/8/2010 10:09 AM, Stef Mientki wrote:

  hello,

I wrap my database in some class, and on creation of the instance, a connection 
to the database is
created,
and will stay connected until the program exists, something like this:

 self.conn = sqlite3.connect ( self.filename )

Now I wonder if there are pros or contras to keep the connection to the database 
continuously  open ?

thanks,
Stef Mientki


Open is OK.  Open is good, because the database system
gets to cache some data.  Open with an uncommitted transaction
may leave the file locked, preventing access by other processes.
So make sure you commit before you go idle.

John Nagle

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


executing script in fork

2010-09-08 Thread cerr
Hi There,

I want to trigger another script and having it running forked to my
mother process.
I googled around and came up with following:

  commandlist=['./GPSsim.pl',proto,'files/gps.txt']
  subprocess.Popen(commandlist)
  print GPS simulator started

This however doesn't seem disconnect stdout but it still throws me
back to the shell.
How can I launch it with disconnected stdout and still continue
running further code in my mother script?

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


Re: Speed-up for loops

2010-09-08 Thread BartC

Steven D'Aprano st...@remove-this-cybersource.com.au wrote in message
news:4c878be5$0$3$c3e8...@news.astraweb.com...

On Tue, 07 Sep 2010 11:00:03 +0100, BartC wrote:


for i in xrange(1):
   a = a + f(i)



With Python 3 and def f(x): return x+1, unrolling this loop 4x improved
speed by 15%; 4.00 minutes reduces to 3.30 minutes.



I'm afraid that I can't replicate those figures. In my test, unrolling
the loop causes a massive SLOWDOWN of 37%, not a speed up. Here is my
test code:


You're absolutely right. I completely forgot about modulating the i index
for each duplicated line.


def test_unrolled(n):
   a = 0
   for i in range(n//4):
   a += f(4*i)
   a += f(4*i+1)
   a += f(4*i+2)
   a += f(4*i+3)
   return a


Although tidying up your calculations (as already posted) gives code that is
neither faster nor slower.

I'd hoped that using the following would help, but did nothing in Python 3,
and gave only 8-10% speedup in Python 2:

for i in xrange(0,n,4):
   a=a+f(i)
   a=a+f(i+1)
   a=a+f(i+2)
   a=a+f(i+3)

(On my other example of setting list elements to 0, this did improve speed
by some 10% in Python 3, and 28% in '2'.)

So using manual unrolling for an indexed loop is not going to be the right
approach (it's also fiddly, and there is the problem of N not being a 
multiple of 4 or whatever).


We're trying to avoid the iteration overhead, yet we're adding it in the
code anyway, and as user-level code. But, I still think that internal
support for such a thing might be worthwhile, when it can make certain
assumptions about the loop range and index type.

--
Bartc 


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


Re: another way to sort like l.sort(key=lambda x:(x[0][0], -x[1][0]))

2010-09-08 Thread Terry Reedy
I believe I answered your question a day ago. If it has not reached you 
yet, try the gmane.org archives.


--
Terry Jan Reedy

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


Slice a list of lists?

2010-09-08 Thread Jonno
I know that I can index into a list of lists like this:
a=[[1,2,3],[4,5,6],[7,8,9]]
a[0][2]=3
a[2][0]=7

but when I try to use fancy indexing to select the first item in each
list I get:
a[0][:]=[1,2,3]
a[:][0]=[1,2,3]

Why is this and is there a way to select [1,4,7]?
-- 
http://mail.python.org/mailman/listinfo/python-list


cPickle segfault with nested dicts in threaded env

2010-09-08 Thread Kenneth Dombrowski
Hi all,

Before creating an issue @ bugs.python.org I wanted to run the
following by everyone

We are having a difficult time with what looks like a cPickle issue
when given a data structure containing 15 nested dictionaries, but
only when threading is involved

Environment is FreeBSD 8, Python 2.5.5

The following diff contains an addition for
/usr/ports/lang/python25/work/Python-2.5.5/Lib/test/test_cpickle.py
which reproduces the issue

kenn...@kenneth0 Python-2.5.5 $ cat
/tmp/test_cpickle.nested_dicts_in_threaded_env.diff
1a2
 import copy
2a4
 import threading
93a96,105
 def test_nested_dicts_in_threaded_env(self):
 # segfaults on python2.5.5/FreeBSD 8.0-RELEASE-p2
 def threadloop():
 x = {}
 for i in range(16):
 x = {i:copy.copy(x)}
 cPickle.dumps(x, 2)
 t = threading.Thread(target=threadloop)
 t.start()


Any thoughts will be appreciated, thanks for looking,
Kenneth
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Slice a list of lists?

2010-09-08 Thread Andreas Waldenburger
On Wed, 8 Sep 2010 13:55:50 -0500 Jonno jonnojohn...@gmail.com wrote:

 I know that I can index into a list of lists like this:
 a=[[1,2,3],[4,5,6],[7,8,9]]
 a[0][2]=3
 a[2][0]=7
 
 but when I try to use fancy indexing to select the first item in each
 list I get:
Let me write out in words what you're doing, and it should become clear:

 a[0][:]=[1,2,3]
Here you're making a list of all elements of the first element of a.

 a[:][0]=[1,2,3]
 
And here you're selecting the first element of all elements of a.

Huh. Not quite as clear as I hoped. But ponder on this for a few
moments. It'll dawn on you eventually.


 Why is this and is there a way to select [1,4,7]?

zip(*a)[0]

(or rather list(zip(*a)[0]), if you definitely need a list and not a
tuple)


/W

-- 
INVALID? DE!

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


Re: Slice a list of lists?

2010-09-08 Thread Benjamin Kaplan
On Wed, Sep 8, 2010 at 2:55 PM, Jonno jonnojohn...@gmail.com wrote:
 I know that I can index into a list of lists like this:
 a=[[1,2,3],[4,5,6],[7,8,9]]
 a[0][2]=3
 a[2][0]=7

 but when I try to use fancy indexing to select the first item in each
 list I get:
 a[0][:]=[1,2,3]
 a[:][0]=[1,2,3]

 Why is this and is there a way to select [1,4,7]?
 --

It's not fancy indexing. It's called taking a slice of the existing
list. Look at it this way
a[0] means take the first element of a. The first element of a is [1,2,3]
a[0][:] means take all the elements in that first element of a. All
the elements of [1,2,3] are [1,2,3].

a[:] means take all the elements of a. So a[:] is [[1,2,3],[4,5,6],[7,8,9]].
a[:][0] means take the first element of all the elements of a. The
first element of a[:] is [1,2,3].

There is no simple way to get [1,4,7] because it is just a list of
lists and not an actual matrix. You have to extract the elements
yourself.

col = []
for row in a:
col.append(row[0])


You can do this in one line using a list comprehension:
[ row[0] for row in a ]


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

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


Re: Slice a list of lists?

2010-09-08 Thread Andreas Waldenburger
Let me rephrase what I wrote a bit.

On Wed, 8 Sep 2010 15:08:11 -0400 Andreas Waldenburger
use...@geekmail.invalid wrote:

  a[0][:]=[1,2,3]  
 Here you're making a list of all elements of the first element of a.
 
That is, you're making a copy of the first element of a.


  a[:][0]=[1,2,3]

 And here you're selecting the first element of all elements of a.

That is, you're taking the first element of a copy of a.

I hope this is a little less confusing.

/W

-- 
INVALID? DE!

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


Re: Slice a list of lists?

2010-09-08 Thread Andreas Waldenburger
On Wed, 8 Sep 2010 15:11:51 -0400 Benjamin Kaplan
benjamin.kap...@case.edu wrote:

 There is no simple way to get [1,4,7] because it is just a list of
 lists and not an actual matrix. You have to extract the elements
 yourself.
 
 col = []
 for row in a:
 col.append(row[0])
 
 
 You can do this in one line using a list comprehension:
 [ row[0] for row in a ]

I would suggest this (esp. the list comprehension version) over my
suggestion of zip(). WAAA more readable. Apparently I'm getting
rusty.

/W

-- 
INVALID? DE!

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


Re: [Python-ideas] with statement syntax forces ugly line breaks?

2010-09-08 Thread MRAB

On 08/09/2010 19:07, Georg Brandl wrote:

Thus spake the Lord: Thou shalt indent with four spaces. No more, no
less. Four shall be the number of spaces thou shalt indent, and the
number of thy indenting shall be four. Eight shalt thou not indent,
nor either indent thou two, excepting that thou then proceed to four.
Tabs are right out.


FYI, that should be thine indenting.

My/thy before a consonant, mine/thine before a vowel. Compare with
a/an, which we still do.
--
http://mail.python.org/mailman/listinfo/python-list


Re: Automatic delegation in Python 3

2010-09-08 Thread Terry Reedy

On 9/8/2010 9:58 AM, Steven D'Aprano wrote:

Delegation in old-style classes worked fine:

# Python 2.6

class Delegate:

... def __init__(self, x):
... self.__dict__['x'] = x
... def __getattr__(self, name):
... return getattr(self.x, name)
... def __setattr__(self, name, value):
... setattr(self.x, name, value)
...

obj = Delegate({})
obj[1] = None


Since you are not setting a attribute, I was initially surprised that 
this worked. Then I remembered that this is executed for old-style 
classes as

obj.__getattr__('__setitem__')(1,None)
and that __setattr__ above is not involved.

This is possible because old-style user classes were a world apart form 
builtin types. Once user-classes were integrated into the builting 
class/type hierarchy, they had to follow the same rules as the latter. 
One problem is that classes are also instances of their metaclass. This 
is somewhat explained in 3.3.8 'Special method lookup' (which I have 
read at least 3 times before understanding).


As you discovered, this is not a complete win. The bottom line of 3.3.8:

Bypassing the __getattribute__() machinery in this fashion provides 
significant scope for speed optimisations within the interpreter, at the 
cost of some flexibility in the handling of special methods (the special 
method must be set on the class object itself in order to be 
consistently invoked by the interpreter).


You are seeing the cost.


Unfortunately, I need to use delegation, not inheritance, and I need to
use a new-style class, since I will be using Python 3. How can I do
automatic delegation in Python 3? Is my only hope to give up on the
elegance of automatic delegation, and code all the special methods as
manual delegation?


Based on the above, it seems so. But I would search a bit more for 
delegation and proxy object and python 3 to see what others have done.


--
Terry Jan Reedy

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


Re: Slice a list of lists?

2010-09-08 Thread Emile van Sebille

On 9/8/2010 12:17 PM Andreas Waldenburger said...

On Wed, 8 Sep 2010 15:11:51 -0400 Benjamin Kaplan
benjamin.kap...@case.edu  wrote:


There is no simple way to get [1,4,7] because it is just a list of
lists and not an actual matrix. You have to extract the elements
yourself.

col = []
for row in a:
 col.append(row[0])


You can do this in one line using a list comprehension:
[ row[0] for row in a ]


I would suggest this (esp. the list comprehension version) over my
suggestion of zip(). WAAA more readable. Apparently I'm getting
rusty.



zip is very handy for inverting rows and cols (x's and y's, whatever)

 a = [(1,2),(3,4),(5,6),(7,8),(9,10)]
 zip(*a)
[(1, 3, 5, 7, 9), (2, 4, 6, 8, 10)]

So, I like zip if you're dealing with a in a matrix-ish manner, and list 
comps for picking selected items out of a list.


Emile



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


Re: cPickle segfault with nested dicts in threaded env

2010-09-08 Thread Thomas Jollans
On Wednesday 08 September 2010, it occurred to Kenneth Dombrowski to exclaim:
 Environment is FreeBSD 8, Python 2.5.5

Which architecture?

Also, Python 2.5 is frightfully old. There's not really any problem with still 
using it, but nobody's maintaining it upstream, so don't bother reporting a 
bug with Python 2.5, as you'll just be told to test a newer version. Check if 
this still occurs in Python 2.7 and/or Python 3.1, and, if it does, then 
please do report the bug.

Chances are this was actually fixed a couple of years ago. See:
http://bugs.python.org/issue3640
(and http://bugs.python.org/issue3338)
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: cPickle segfault with nested dicts in threaded env

2010-09-08 Thread Carl Banks
On Sep 8, 11:58 am, Kenneth Dombrowski kdombrow...@gmail.com wrote:
 Hi all,

 Before creating an issue @ bugs.python.org I wanted to run the
 following by everyone

 We are having a difficult time with what looks like a cPickle issue
 when given a data structure containing 15 nested dictionaries, but
 only when threading is involved

 Environment is FreeBSD 8, Python 2.5.5

Since Python 2.7 is released, Python 2.5 is no longer accepting bug
fixes, only security fixes.  So be aware.


 The following diff contains an addition for
 /usr/ports/lang/python25/work/Python-2.5.5/Lib/test/test_cpickle.py
 which reproduces the issue

 kenn...@kenneth0 Python-2.5.5 $ cat
 /tmp/test_cpickle.nested_dicts_in_threaded_env.diff
 1a2

  import copy
 2a4
  import threading
 93a96,105
      def test_nested_dicts_in_threaded_env(self):
          # segfaults on python2.5.5/FreeBSD 8.0-RELEASE-p2
          def threadloop():
              x = {}
              for i in range(16):
                  x = {i:copy.copy(x)}
              cPickle.dumps(x, 2)
          t = threading.Thread(target=threadloop)
          t.start()

 Any thoughts will be appreciated, thanks for looking,

Bug.  Python should never segfault (unless you're doing bad things
with ctypes).  Even if threading isn't supported in this case, it
should fail with an exception or have undefined behavior, not
segfault.  I would check to see if the same problem exists on 2.7, and
file a bug report if so.  If they fix it in 2.7 maybe you could apply
the same fix to your own 2.5.


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


Re: Slice a list of lists?

2010-09-08 Thread Jonno
On Wed, Sep 8, 2010 at 2:11 PM, Benjamin Kaplan
benjamin.kap...@case.edu wrote:
 On Wed, Sep 8, 2010 at 2:55 PM, Jonno jonnojohn...@gmail.com wrote:
 I know that I can index into a list of lists like this:
 a=[[1,2,3],[4,5,6],[7,8,9]]
 a[0][2]=3
 a[2][0]=7

 but when I try to use fancy indexing to select the first item in each
 list I get:
 a[0][:]=[1,2,3]
 a[:][0]=[1,2,3]

 Why is this and is there a way to select [1,4,7]?
 --

 It's not fancy indexing. It's called taking a slice of the existing
 list. Look at it this way
 a[0] means take the first element of a. The first element of a is [1,2,3]
 a[0][:] means take all the elements in that first element of a. All
 the elements of [1,2,3] are [1,2,3].

 a[:] means take all the elements of a. So a[:] is [[1,2,3],[4,5,6],[7,8,9]].
 a[:][0] means take the first element of all the elements of a. The
 first element of a[:] is [1,2,3].

 There is no simple way to get [1,4,7] because it is just a list of
 lists and not an actual matrix. You have to extract the elements
 yourself.

 col = []
 for row in a:
    col.append(row[0])


 You can do this in one line using a list comprehension:
 [ row[0] for row in a ]

Thanks! (to Andreas too). Totally makes sense now.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: what should __iter__ return?

2010-09-08 Thread Terry Reedy

On 9/7/2010 9:40 PM, Gregory Ewing wrote:

Thomas Jollans wrote:


Hmm. Modifying an object while iterating over it isn't a great idea,
ever:


I wouldn't say never.


How about Modifying a collection while iterating over it without 
understanding the dangers is a bad idea.


 Algorithms that calculate some kind of

transitive closure can be expressed rather neatly by appending
items to a list being iterated over.


Which is one reason list modification while iterating is not prohibited.
Deleting items while forward iterating and adding items while backward 
iterating may miss items unexpectedly. Adding items ahead of forward 
iteration and deleting items behind backward iterating are ok. The most 
common example of the latter is successively popping item off a stack.


--
Terry Jan Reedy

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


Re: Slice a list of lists?

2010-09-08 Thread Jonno
On Wed, Sep 8, 2010 at 3:06 PM, Jonno jonnojohn...@gmail.com wrote:
 On Wed, Sep 8, 2010 at 2:11 PM, Benjamin Kaplan
 benjamin.kap...@case.edu wrote:
 On Wed, Sep 8, 2010 at 2:55 PM, Jonno jonnojohn...@gmail.com wrote:
 I know that I can index into a list of lists like this:
 a=[[1,2,3],[4,5,6],[7,8,9]]
 a[0][2]=3
 a[2][0]=7

 but when I try to use fancy indexing to select the first item in each
 list I get:
 a[0][:]=[1,2,3]
 a[:][0]=[1,2,3]

 Why is this and is there a way to select [1,4,7]?
 --

 It's not fancy indexing. It's called taking a slice of the existing
 list. Look at it this way
 a[0] means take the first element of a. The first element of a is [1,2,3]
 a[0][:] means take all the elements in that first element of a. All
 the elements of [1,2,3] are [1,2,3].

 a[:] means take all the elements of a. So a[:] is [[1,2,3],[4,5,6],[7,8,9]].
 a[:][0] means take the first element of all the elements of a. The
 first element of a[:] is [1,2,3].

 There is no simple way to get [1,4,7] because it is just a list of
 lists and not an actual matrix. You have to extract the elements
 yourself.

 col = []
 for row in a:
    col.append(row[0])


 You can do this in one line using a list comprehension:
 [ row[0] for row in a ]

 Thanks! (to Andreas too). Totally makes sense now.


Now if I want to select the first item in every 2nd item of list a
(ie: [1,7]) can I use ::2 anywhere or do I need to create a list of
indices to use in a more complex for loop?
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Slice a list of lists?

2010-09-08 Thread Jonno
On Wed, Sep 8, 2010 at 3:18 PM, Jonno jonnojohn...@gmail.com wrote:
 On Wed, Sep 8, 2010 at 3:06 PM, Jonno jonnojohn...@gmail.com wrote:
 On Wed, Sep 8, 2010 at 2:11 PM, Benjamin Kaplan
 benjamin.kap...@case.edu wrote:
 On Wed, Sep 8, 2010 at 2:55 PM, Jonno jonnojohn...@gmail.com wrote:
 I know that I can index into a list of lists like this:
 a=[[1,2,3],[4,5,6],[7,8,9]]
 a[0][2]=3
 a[2][0]=7

 but when I try to use fancy indexing to select the first item in each
 list I get:
 a[0][:]=[1,2,3]
 a[:][0]=[1,2,3]

 Why is this and is there a way to select [1,4,7]?
 --

 It's not fancy indexing. It's called taking a slice of the existing
 list. Look at it this way
 a[0] means take the first element of a. The first element of a is [1,2,3]
 a[0][:] means take all the elements in that first element of a. All
 the elements of [1,2,3] are [1,2,3].

 a[:] means take all the elements of a. So a[:] is [[1,2,3],[4,5,6],[7,8,9]].
 a[:][0] means take the first element of all the elements of a. The
 first element of a[:] is [1,2,3].

 There is no simple way to get [1,4,7] because it is just a list of
 lists and not an actual matrix. You have to extract the elements
 yourself.

 col = []
 for row in a:
    col.append(row[0])


 You can do this in one line using a list comprehension:
 [ row[0] for row in a ]

 Thanks! (to Andreas too). Totally makes sense now.


 Now if I want to select the first item in every 2nd item of list a
 (ie: [1,7]) can I use ::2 anywhere or do I need to create a list of
 indices to use in a more complex for loop?

Seems like the simplest way would be:
[row[0] for row in a][::2]
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Slice a list of lists?

2010-09-08 Thread Terry Reedy

On 9/8/2010 2:55 PM, Jonno wrote:

I know that I can index into a list of lists like this:
a=[[1,2,3],[4,5,6],[7,8,9]]
a[0][2]=3
a[2][0]=7

but when I try to use fancy indexing to select the first item in each
list I get:
a[0][:]=[1,2,3]
a[:][0]=[1,2,3]

Why is this and is there a way to select [1,4,7]?


You are trying to look at a list of lists as an array and have 
discovered where the asymmetry of the former makes the two 
non-equivalent. To slice multi-dimensional arrays any which way, you 
need an appropriate package, such as numpy.


--
Terry Jan Reedy

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


Re: Slice a list of lists?

2010-09-08 Thread Benjamin Kaplan
On Wed, Sep 8, 2010 at 4:23 PM, Jonno jonnojohn...@gmail.com wrote:
 On Wed, Sep 8, 2010 at 3:18 PM, Jonno jonnojohn...@gmail.com wrote:
 On Wed, Sep 8, 2010 at 3:06 PM, Jonno jonnojohn...@gmail.com wrote:
 On Wed, Sep 8, 2010 at 2:11 PM, Benjamin Kaplan
 benjamin.kap...@case.edu wrote:
 On Wed, Sep 8, 2010 at 2:55 PM, Jonno jonnojohn...@gmail.com wrote:
 I know that I can index into a list of lists like this:
 a=[[1,2,3],[4,5,6],[7,8,9]]
 a[0][2]=3
 a[2][0]=7

 but when I try to use fancy indexing to select the first item in each
 list I get:
 a[0][:]=[1,2,3]
 a[:][0]=[1,2,3]

 Why is this and is there a way to select [1,4,7]?
 --

 It's not fancy indexing. It's called taking a slice of the existing
 list. Look at it this way
 a[0] means take the first element of a. The first element of a is [1,2,3]
 a[0][:] means take all the elements in that first element of a. All
 the elements of [1,2,3] are [1,2,3].

 a[:] means take all the elements of a. So a[:] is 
 [[1,2,3],[4,5,6],[7,8,9]].
 a[:][0] means take the first element of all the elements of a. The
 first element of a[:] is [1,2,3].

 There is no simple way to get [1,4,7] because it is just a list of
 lists and not an actual matrix. You have to extract the elements
 yourself.

 col = []
 for row in a:
    col.append(row[0])


 You can do this in one line using a list comprehension:
 [ row[0] for row in a ]

 Thanks! (to Andreas too). Totally makes sense now.


 Now if I want to select the first item in every 2nd item of list a
 (ie: [1,7]) can I use ::2 anywhere or do I need to create a list of
 indices to use in a more complex for loop?

 Seems like the simplest way would be:
 [row[0] for row in a][::2]

Yes. You could either do that, or do
[row[0] for row in a[::2]]. It doesn't make that much of a difference,
unless memory is really tight (doing the ::2 first means your list is
smaller to begin with)

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

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


Re: Slice a list of lists?

2010-09-08 Thread Andreas Waldenburger
On Wed, 8 Sep 2010 15:23:35 -0500 Jonno jonnojohn...@gmail.com wrote:

 On Wed, Sep 8, 2010 at 3:18 PM, Jonno jonnojohn...@gmail.com wrote:
 [snip]
  Now if I want to select the first item in every 2nd item of list a
  (ie: [1,7]) can I use ::2 anywhere or do I need to create a list of
  indices to use in a more complex for loop?
 
 Seems like the simplest way would be:
 [row[0] for row in a][::2]

What you're doing here is selecting every second item of the list of
first items of the items in a, not the first items of every second item
in a (head spinning yet?).

If I'm not completely mindbent right now, these are logically
equivalent, but not computationally.

Compare
[row[0] for row in a][::2]  # (your Python code)
with
[row[0] for row in a[::2]]  # (as per your description)

The first one is more work for your computer, because it'll pick out
the first elements of *all* of the items in a, whereas the second only
picks out the first elements of every second item in a (which is only
half the amount of picks compared to the former).

I just thought I'd mention it. Because it might make a difference in
one of your programs some day. And because I'm a pedant ;).

/W

-- 
INVALID? DE!

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


Re: Automatic delegation in Python 3

2010-09-08 Thread Thomas Jollans
On Wednesday 08 September 2010, it occurred to Steven D'Aprano to exclaim:
 What's going on here? I *think* this has something to do with special
 double-underscore methods being looked up on the class, not the instance,
 for new-style classes, but I'm not entirely sure.

Yes, special methods are looked up on the type. So you have to make sure the 
type has the methods. 

 
 Unfortunately, I need to use delegation, not inheritance, and I need to
 use a new-style class, since I will be using Python 3. How can I do
 automatic delegation in Python 3? Is my only hope to give up on the
 elegance of automatic delegation, and code all the special methods as
 manual delegation?
 
Well, yes, you have to implement all the required special methods in the 
Delegate class. But there's no reason you have to do it manually. (I've never 
actually used this in the wild, but it looks like it works)

 def makeDelegate(o):
... T = type(o)
... class Delegate:
... def __getattr__(self, name):
... return getattr(o, name)
... def __setattr__(self, name, value):
... setattr(self, name, value)
... def makewrapper(method):
... def wrapper(self, *args, **kwargs):
... return method(o, *args, **kwargs)
... return wrapper
... for methodname in dir(T):
... method = getattr(T, methodname)
... if methodname not in ('__getattr__', '__setattr__',
...   '__init__', '__new__', '__class__'):
... try:
... setattr(Delegate, methodname, makewrapper(method))
... except: pass
... return Delegate()
... 
 D = makeDelegate({'a': 1})
 D
{'a': 1}
 D['a']
1
 D['a'] = 2
 D
{'a': 2}
 D.get('b')
 D['b'] = True
 D.get('b')
True
 

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


Re: Slice a list of lists?

2010-09-08 Thread Jonno
On Wed, Sep 8, 2010 at 3:44 PM, Andreas Waldenburger
use...@geekmail.invalid wrote:
 On Wed, 8 Sep 2010 15:23:35 -0500 Jonno jonnojohn...@gmail.com wrote:

 On Wed, Sep 8, 2010 at 3:18 PM, Jonno jonnojohn...@gmail.com wrote:
 [snip]
  Now if I want to select the first item in every 2nd item of list a
  (ie: [1,7]) can I use ::2 anywhere or do I need to create a list of
  indices to use in a more complex for loop?
 
 Seems like the simplest way would be:
 [row[0] for row in a][::2]

 What you're doing here is selecting every second item of the list of
 first items of the items in a, not the first items of every second item
 in a (head spinning yet?).

 If I'm not completely mindbent right now, these are logically
 equivalent, but not computationally.

 Compare
    [row[0] for row in a][::2]  # (your Python code)
 with
    [row[0] for row in a[::2]]  # (as per your description)

 The first one is more work for your computer, because it'll pick out
 the first elements of *all* of the items in a, whereas the second only
 picks out the first elements of every second item in a (which is only
 half the amount of picks compared to the former).

 I just thought I'd mention it. Because it might make a difference in
 one of your programs some day. And because I'm a pedant ;).

Thanks again. It is nice to know how to do things properly even though
in my case it probably won't make much difference.

Terry, I would have used numpy arrays (I actually use them later in
the code) except the lists in my list aren't all of the same length.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: accessing a text file

2010-09-08 Thread Baba
On 8 sep, 14:39, Paul Rubin no.em...@nospam.invalid wrote:
 Baba raoul...@gmail.com writes:
  But where do you draw the line? Can we not just let people ask
  questions regardless? And let those answer who want to and those who
  don't just ignore the question? That seems so much easier to me.

 The first few times, it's easy to ignore the questions.  After a few
 more times, it becomes easier to ignore the person asking the questions,
 and not even look at the questions.

 The answer to many of your questions also is not research it online,
 but rather, figure it out with your own creativity.  That's what being
 a programmer is about--figuring out solutions that don't already exist
 elsewhere.

Hi Paul

If i look where i was 4 weeks ago and the progress i made in learning
Python i am quite delighted. This forum has helped me and i appreciate
it. I don't think i will ever tell a beginner to do me a favour and
to look things up by himself nor will i use the RTFM line (refering to
Bruno's post), i'd just be nice and helpful as everyone here is.
Didn't realise ego's were that big but so is mine i suppose...

kind regards
Baba
-- 
http://mail.python.org/mailman/listinfo/python-list


Confused about nested scopes and when names get added to namespaces

2010-09-08 Thread Russell Warren
I'm having trouble understanding when variables are added to
namespaces.  I thought I understood it, but my nested function
examples below have me very confused.

In each test function below I have an x variable (so x is in the
namespace of each test function).  I also have a nested function in
each (innerFunc) that has different flavors of trying to access or
assign a variable named x.

---
def test1():
print running test1...
x = 1
def innerFunc():
print inner locals():,
print %s % locals()  # x not present (yet)
x = 2
print x
innerFunc()
print x left as %s\n % x

def test2():
print running test2...
x = 1
def innerFunc():
print inner locals():,
print %s % locals()  # x not present
innerFunc()
print x left as %s\n % x

def test3():
print running test3...
x = 1
def innerFunc():
print inner locals():,
print %s % locals()  # how is x in locals in this case??
print x
innerFunc()
print x left as %s\n % x

test1()
test2()
test3()

---

With the nested scope rules, I thought that *at the time of* trying to
access an object with a given name, if the name was not available in
the namespace of the local function python would then check the
namespace of the parent function.  My tests above don't seem to match
this.  Specifically my at the time of assumption.

What is happening in test3?  How is it that x ends up in the local
namespace before it is ever referenced?  It seems that, prior to
execution time, the python compiler is magically determining that
I'm referencing a particular name before assignment and shoving it
into the local namespace so it can be used.  I did not think the
compiler went into function bodies, aside from basic syntax checking.

Further confusing me (or confirming the compiler behavior) is adding a
4th test with only one added line...

def test4():
print running test4...
x = 1
def innerFunc():
print inner locals():,
print %s % locals()  # how is x in locals in this case??
print x
x = 2  #ONLY ADDED LINE TO TEST3
innerFunc()
print x left as %s\n % x

In this case I get UnboundLocalError: local variable 'x' referenced
before assignment.  I think this means that the compiler (prior to
runtime) inspected the code, determined I will do an assignment,
decided _not_ to bring the parent's x into the local namespace, and as
a result caused the unbound name problem at runtime.

It seems that the parent's x is brought directly into the local
namespace (when appropriate), rather than the namespace lookup just
moving up the hierarchy when not found.  This is confusing to me and
is making me question my understanding of namespace lookups.  Are
nested scopes a special case where the lookup is handled differently?

What if I want to change the value of the parent's x?  test4 implies
that I can't.

Have I got this right?  Can someone please clarify what is going on?

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


Re: Confused about nested scopes and when names get added to namespaces

2010-09-08 Thread Russell Warren
My tests were run in python 2.6.5.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Slice a list of lists?

2010-09-08 Thread Robert Kern

On 9/8/10 3:27 PM, Terry Reedy wrote:

On 9/8/2010 2:55 PM, Jonno wrote:

I know that I can index into a list of lists like this:
a=[[1,2,3],[4,5,6],[7,8,9]]
a[0][2]=3
a[2][0]=7

but when I try to use fancy indexing to select the first item in each
list I get:
a[0][:]=[1,2,3]
a[:][0]=[1,2,3]

Why is this and is there a way to select [1,4,7]?


You are trying to look at a list of lists as an array and have discovered where
the asymmetry of the former makes the two non-equivalent. To slice
multi-dimensional arrays any which way, you need an appropriate package, such as
numpy.


A motivating example:

[~]
|1 import numpy

[~]
|2 a = numpy.array([[1,2,3],[4,5,6],[7,8,9]])

[~]
|3 a

array([[1, 2, 3],
   [4, 5, 6],
   [7, 8, 9]])

[~]
|4 a[0,2]
3

[~]
|5 a[2,0]
7

[~]
|6 a[0,:]
array([1, 2, 3])

[~]
|7 a[:,0]
array([1, 4, 7])


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


Re: what should __iter__ return?

2010-09-08 Thread Steven D'Aprano
On Wed, 08 Sep 2010 16:17:02 -0400, Terry Reedy wrote:

 On 9/7/2010 9:40 PM, Gregory Ewing wrote:
 Thomas Jollans wrote:

 Hmm. Modifying an object while iterating over it isn't a great idea,
 ever:

 I wouldn't say never.
 
 How about Modifying a collection while iterating over it without
 understanding the dangers is a bad idea.

... unless you're being paid by the hour for debugging your code.

*wink*



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


Re: Automatic delegation in Python 3

2010-09-08 Thread Steven D'Aprano
On Wed, 08 Sep 2010 15:45:46 -0400, Terry Reedy wrote:
[...]
 Unfortunately, I need to use delegation, not inheritance, and I need to
 use a new-style class, since I will be using Python 3. How can I do
 automatic delegation in Python 3? Is my only hope to give up on the
 elegance of automatic delegation, and code all the special methods as
 manual delegation?
 
 Based on the above, it seems so. But I would search a bit more for
 delegation and proxy object and python 3 to see what others have done.


That's what I was afraid of. Oh well.

Thanks to those who answered.



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


Re: are there pros or contras, keeping a connection to a (sqlite) database ?

2010-09-08 Thread CM
On Sep 8, 1:09 pm, Stef Mientki stef.mien...@gmail.com wrote:
  hello,

 I wrap my database in some class, and on creation of the instance, a 
 connection to the database is
 created,
 and will stay connected until the program exists, something like this:

     self.conn = sqlite3.connect ( self.filename )

 Now I wonder if there are pros or contras to keep the connection to the 
 database continuously  open ?

 thanks,
 Stef Mientki

I do the same thing--good to hear from John that keeping it open is
OK.

But another question that this provokes, at least for me is:  what
happens when you call .connect() on the same database multiple times
from within different parts of the same app?  Is that bad?  And is it
that there now multiple connections to the database, or one connection
that has multiple names in different namespaces within the app?

I'm not even sure what a connection really is; I assumed it was
nothing more than a rule that says to write to the database with the
file named in the parentheses.

Further elaboration from the community would be helpful.

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


Re: accessing a text file

2010-09-08 Thread Bar Shirtcliff
| Hi Paul
| 
| If i look where i was 4 weeks ago and the progress i made in learning
| Python i am quite delighted. This forum has helped me and i appreciate
| it. I don't think i will ever tell a beginner to do me a favour and
| to look things up by himself nor will i use the RTFM line (refering to
| Bruno's post), i'd just be nice and helpful as everyone here is.
| Didn't realise ego's were that big but so is mine i suppose...
| 

HEREow can you be learning so much python if you're constantly expressing
your personal tastes and generally posturing on the Python forum?

I know how words can capture one into a realm of pretended meaning and
significance.  The nice thing about programming, as opposed to the
humanities, is that it's about actually doing things, or rather,
actually building things that do things for you.

Let's get to it!

Best,
Bar


-- 


--
All men are born mad.  Some remain so.

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


Re: Confused about nested scopes and when names get added to namespaces

2010-09-08 Thread Emile van Sebille

On 9/8/2010 2:18 PM Russell Warren said...

I'm having trouble understanding when variables are added to
namespaces.  I thought I understood it, but my nested function
examples below have me very confused.


Take a look at PEP 227 where nested scopes are introduced.

http://www.python.org/dev/peps/pep-0227/

From the PEP:

If a name is used within a code block, but it is not bound there
and is not declared global, the use is treated as a reference to
the nearest enclosing function region.



In each test function below I have an x variable (so x is in the
namespace of each test function).  I also have a nested function in
each (innerFunc) that has different flavors of trying to access or
assign a variable named x.

---
def test1():
 print running test1...
 x = 1
 def innerFunc():
 print inner locals():,
 print %s % locals()  # x not present (yet)
 x = 2
 print x
 innerFunc()
 print x left as %s\n % x

def test2():
 print running test2...
 x = 1
 def innerFunc():
 print inner locals():,
 print %s % locals()  # x not present
 innerFunc()
 print x left as %s\n % x

def test3():
 print running test3...
 x = 1
 def innerFunc():
 print inner locals():,
 print %s % locals()  # how is x in locals in this case??
 print x
 innerFunc()
 print x left as %s\n % x

test1()
test2()
test3()

---

With the nested scope rules, I thought that *at the time of* trying to
access an object with a given name, if the name was not available in
the namespace of the local function python would then check the
namespace of the parent function.  My tests above don't seem to match
this.  Specifically my at the time of assumption.

What is happening in test3?  How is it that x ends up in the local
namespace before it is ever referenced?  It seems that, prior to
execution time, the python compiler is magically determining that
I'm referencing a particular name before assignment and shoving it
into the local namespace so it can be used.  I did not think the
compiler went into function bodies, aside from basic syntax checking.

Further confusing me (or confirming the compiler behavior) is adding a
4th test with only one added line...

def test4():
 print running test4...
 x = 1
 def innerFunc():
 print inner locals():,
 print %s % locals()  # how is x in locals in this case??
 print x
 x = 2  #ONLY ADDED LINE TO TEST3
 innerFunc()
 print x left as %s\n % x

In this case I get UnboundLocalError: local variable 'x' referenced
before assignment.  I think this means that the compiler (prior to
runtime) inspected the code, determined I will do an assignment,


x is local by virtue of being assigned to within the function.


decided _not_ to bring the parent's x into the local namespace, and as
a result caused the unbound name problem at runtime.

It seems that the parent's x is brought directly into the local
namespace (when appropriate), rather than the namespace lookup just
moving up the hierarchy when not found.  This is confusing to me and
is making me question my understanding of namespace lookups.  Are
nested scopes a special case where the lookup is handled differently?

What if I want to change the value of the parent's x?  test4 implies
that I can't.


You can't ever unless x is mutable.



Have I got this right?  Can someone please clarify what is going on?




I don't have time to go into further details at the moment.

HTH,

Emile


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


Re: Confused about nested scopes and when names get added to namespaces

2010-09-08 Thread Aahz
In article d020e332-f2f2-4a82-ae1b-2ae071211...@n3g2000yqb.googlegroups.com,
Russell Warren  russandheat...@gmail.com wrote:

def test4():
print running test4...
x = 1
def innerFunc():
print inner locals():,
print %s % locals()  # how is x in locals in this case??
print x
x = 2  #ONLY ADDED LINE TO TEST3
innerFunc()
print x left as %s\n % x

In this case I get UnboundLocalError: local variable 'x' referenced
before assignment.  I think this means that the compiler (prior to
runtime) inspected the code, determined I will do an assignment,
decided _not_ to bring the parent's x into the local namespace, and as
a result caused the unbound name problem at runtime.

Bingo!

It seems that the parent's x is brought directly into the local
namespace (when appropriate), rather than the namespace lookup just
moving up the hierarchy when not found.  This is confusing to me and
is making me question my understanding of namespace lookups.  Are
nested scopes a special case where the lookup is handled differently?

What if I want to change the value of the parent's x?  test4 implies
that I can't.

You need Python 3.x and the nonlocal keyword.
-- 
Aahz (a...@pythoncraft.com)   * http://www.pythoncraft.com/

[on old computer technologies and programmers]  Fancy tail fins on a
brand new '59 Cadillac didn't mean throwing out a whole generation of
mechanics who started with model As.  --Andrew Dalke
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: The Samurai Principle

2010-09-08 Thread Paul Rubin
Grant Edwards inva...@invalid.invalid writes:
 I find it much easier to screw things up using the
 exceptional return value method than the exception raise method.

That may be partly due to Python's not-so-good facilities for
implementing the exceptional return value method.  To be fair, plenty
of other languages have similar shortcomings and it's mostly in more
recent languages that the problem has really been recognized, and
addressed with features like option types.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: accessing a text file

2010-09-08 Thread Bar Shirtcliff
| HEREow can you be learning so much python if you're constantly expressing

typo there.  I'm not sure how that happens, sometimes, but it's an
untimely abbrev-expansion, in emacs VM.

I meant to say, How can you...

Cheers,
Bar


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


Re: cPickle segfault with nested dicts in threaded env

2010-09-08 Thread Paul Rubin
Carl Banks pavlovevide...@gmail.com writes:
 Since Python 2.7 is released, Python 2.5 is no longer accepting bug
 fixes, only security fixes.  So be aware.

Segfaults should be treated as security holes unless there's convincing
reasons that no exploit is possible.  So the bug should be reported
against 2.5 as well as later versions.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Bit fields in python?

2010-09-08 Thread Justin Mayfield
Instead of rewriting your code you might consider wrapping it with the 
C-API.  I prefer this approach (over ctypes) for anything low level.


http://docs.python.org/c-api/

On 09/06/2010 10:06 PM, Kwan Lai Cheng wrote:

Hi,
I'm trying to rewrite a c program in python  encountered several 
problems. I have some data structures in my c program like below:

typedef struct
{
unsigned short size;
unsigned short reserved:8;
unsigned short var_a1:2;
unsigned short var_a2:2;
unsigned short var_a3:2;
unsigned short var_a4:2;
unsigned int var_a5;
}structa;
typedef struct
{
unsigned short size;
unsigned char reserved:4;
unsigned char var_b1:1;
unsigned char var_b2:1;
unsigned char var_b3:1;
unsigned char var_b4:1;
structa var_structa;
}structb;
I tried to code the above in python but only got this far:
class StructA(object):
def __init__(self, size=0)
self.size = size
class StructB(object):
def __init__(self, size=0)
Any equivalent for c data structures  bit fields in python? And how 
do I define var_structa (in structb) in python?

Regards,
Kwan.
!SIG:4c85bc4844361237431282! 
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: accessing a text file

2010-09-08 Thread MRAB

On 08/09/2010 23:56, Bar Shirtcliff wrote:

| HEREow can you be learning so much python if you're constantly expressing

typo there.  I'm not sure how that happens, sometimes, but it's an
untimely abbrev-expansion, in emacs VM.

I meant to say, How can you...


An unkind soul would say that it's a poor workman who blames his
tools, but as it's emacs... ;-)
--
http://mail.python.org/mailman/listinfo/python-list


Re: Class changes in circular imports when __name__ == '__main__'

2010-09-08 Thread Spencer Pearson
All right, thank you for helping! I'd had a little voice in the back
of my mind nagging me that it might not be logical to include a bunch
of classes and function definitions in my startup file, but I never
got around to splitting it up. The module/script distinction makes
sense, and it seems more elegant, too. Also, my program works now that
I've rearranged things, which is a plus. Thanks!
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: [Tutor] Arguments from the command line

2010-09-08 Thread Lawrence D'Oliveiro
In message mailman.501.1283789339.29448.python-l...@python.org, Hugo Arts 
wrote:

 sys.argv is a list of all arguments from the command line ...

Interesting that Python didn’t bother to mimic the underlying POSIX 
convention of passing the command line as arguments to the mainline routine.

I always felt it was more useful to have command arguments directly 
accessible as globals, rather than having to pass them from the mainline.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Queue cleanup

2010-09-08 Thread Lawrence D'Oliveiro
In message 7xeid9gtuq@ruckus.brouhaha.com, Paul Rubin wrote:

 Lawrence D'Oliveiro l...@geek-central.gen.new_zealand writes:

 That reinforces my point, about how easy it was to check the correctness
 of the code. In this case one simple fix, like this ...
 would render the code watertight. See how easy it is?
 
 Well, no, it's irrelevant how easy it is to fix the issue after it's
 pointed out.

In that case, I can similarly discount your attempts to fix up issues with 
garbage collectors after they’re pointed out, can I not?

 Part of the problem is C itself.

And yet, what are these complicated garbage collectors, that you intend 
relying on to work correctly with all their layers of tricks upon tricks, 
written in? C.

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


Re: Queue cleanup

2010-09-08 Thread Paul Rubin
Lawrence D'Oliveiro l...@geek-central.gen.new_zealand writes:
 In that case, I can similarly discount your attempts to fix up issues with 
 garbage collectors after they’re pointed out, can I not?

Adapting GC algorithms to improve their performance or better use the
capabilities of new hardware is much different than saying they didn't
work in the first place.  They've been around for 5 decades, they (like
Python programs) work fine if you don't mind the performance cost, and
for many applications that cost is acceptable even for quite simple and
naive GC's.  The continued work is to get that cost down even further.
(And before criticizing GC performance, Have you ever profiled CPython
to see how much time it's spending messing with reference counts?  I
didn't think so).

 Part of the problem is C itself.
 And yet, what are these complicated garbage collectors, that you intend 
 relying on to work correctly with all their layers of tricks upon tricks, 
 written in? C.

What tricks on tricks?  Even the fanciest GC's are orders of magnitude
less complicated than any serious database, optimizing compiler, OS
kernel, file system, etc.  Real-world software is complicated.  Get used
to that fact, and look for ways to manage the complexity and keep
complex programs safe.  Choosing to program with unsafe methods because
you wish the complexity didn't exist is just deluded.


It actually seems pretty crazy to me to write a garbage collector in C
today even though it a GC needs unsafe pointer operations in a few
places.  C made some sense in the 1980's when computers were smaller and
people didn't know better.  A lot of the C code around today is legacy
code from that era.  These days it makes more sense to use a safe
language with a few isolated jailbreaks (like an OS kernel that has a
few lines of assembly code) than to write the whole thing in a language
whose unsafety is everywhere.

Here's a good paper by R. Fateman (criticizing C) that I just came across:

   
http://www.franz.com/resources/educational_resources/white_papers/fault.prevention.pdf

He suggests using Lisp instead, but one can't have everything ;-).

FWIW, here are a couple pages about verifying GC's:

  http://flint.cs.yale.edu/flint/publications/hgc.html
  http://www.cs.technion.ac.il/~erez/Papers/verified-gc-popl09.pdf 
  etc.

I just don't understand that weird agenda you seem to have. But
whatever.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: accessing a text file

2010-09-08 Thread Ben Finney
Baba raoul...@gmail.com writes:

 Thanks for your feedback. My question is: Who owns this forum? If we
 all do then we are allowed to post questions that are simple and that
 could otherwise be answered by doing research.

That's a rather subservient perspective. Why are you seeking permission
to ask questions? Why do you raise the issue of whether one is *allowed*
to ask questions?

If you take advice and requests as commandments, then I think that's
pretty close to the root of the communication failures here.

When someone asks you to change your behaviour, or describes the
possible consequences that your behaviour entails, they're treating you
as a responsible adult, not as a slave or infant.

 It is just unfriendly to tell someone to go and look it up by
 themselves.

Yes, to *tell* them to do it would be unfriendly. You, however, received
*requests* that you do so, with reasons why. Please help us all — and
you are included in “us all” — by learning the difference between a
command and a request.

-- 
 \  “It is difficult to get a man to understand something when his |
  `\   salary depends upon his not understanding it.” —Upton Sinclair, |
_o__) 1935 |
Ben Finney
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: accessing a text file

2010-09-08 Thread Ben Finney
Grant Edwards inva...@invalid.invalid writes:

 I'm sure you'd prefer that everything was handed to you for free on a
 silver platter with a side order of beer and cookies. I'd prefer I was
 20 years younger and 30 pounds lighter. Life's tough that way.

Hell no. I'd prefer to have the total of my life experience and just
have my *body* be twenty years younger :-)

-- 
 \“The greatest tragedy in mankind's entire history may be the |
  `\   hijacking of morality by religion.” —Arthur C. Clarke, 1991 |
_o__)  |
Ben Finney
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: accessing a text file

2010-09-08 Thread Grant Edwards
On 2010-09-09, Ben Finney ben+pyt...@benfinney.id.au wrote:
 Grant Edwards inva...@invalid.invalid writes:

 I'm sure you'd prefer that everything was handed to you for free on a
 silver platter with a side order of beer and cookies. I'd prefer I was
 20 years younger and 30 pounds lighter. Life's tough that way.

 Hell no. I'd prefer to have the total of my life experience and just
 have my *body* be twenty years younger :-)

I'd have to think about that for a while.  A little bit of innocent
optimism might be nice...

-- 
Grant

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


Re: [Tutor] Arguments from the command line

2010-09-08 Thread Robert Kern

On 9/8/10 7:38 PM, Lawrence D'Oliveiro wrote:

In messagemailman.501.1283789339.29448.python-l...@python.org, Hugo Arts
wrote:


sys.argv is a list of all arguments from the command line ...


Interesting that Python didn’t bother to mimic the underlying POSIX
convention of passing the command line as arguments to the mainline routine.


There *is* no mainline routine in Python.

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


Re: cPickle segfault with nested dicts in threaded env

2010-09-08 Thread Aahz
In article mailman.583.1283975836.29448.python-l...@python.org,
Thomas Jollans  tho...@jollybox.de wrote:

Also, Python 2.5 is frightfully old.  [...]

Frightfully???  I'm sure plenty of people are still using Python 2.3
in production environments (certainly my last job did as of 1.5 years
ago, and I would be mildly surprised if they upgraded by now).
-- 
Aahz (a...@pythoncraft.com)   * http://www.pythoncraft.com/

[on old computer technologies and programmers]  Fancy tail fins on a
brand new '59 Cadillac didn't mean throwing out a whole generation of
mechanics who started with model As.  --Andrew Dalke
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Queue cleanup

2010-09-08 Thread Steven D'Aprano
On Thu, 09 Sep 2010 12:41:20 +1200, Lawrence D'Oliveiro wrote:

 Part of the problem is C itself.
 
 And yet, what are these complicated garbage collectors, that you intend
 relying on to work correctly with all their layers of tricks upon
 tricks, written in? C.

Not necessarily.

Pascal, despite the contempt it is held in by university computer science 
departments, isn't quite dead, and some Pascal compilers use garbage 
collectors written in Pascal. FreePascal, I believe, is one of them.

Likewise for other not-dead-yet low-level languages like Ada and Forth. 
As surprising as it seems to many, C is not the only low-level language 
around suitable for writing high-quality, efficient code. Just ask the 
Lisp community, which is thriving. For some definition of thriving.

Admittedly C has far more attention to it than the others, so [insert 
weasel words here] the best C compilers tend to produce more efficient 
code than the best of the others, but Pascal, Ada and similar give you 
more security than C.

I believe that when computer scientists of the future look back at the 
last few decades, they will judge that on balance C did more harm than 
good. Not that C is the only language that people can write buggy or 
insecure code, but C does tend to give the bugs so much help... :)



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


Re: [Tutor] Arguments from the command line

2010-09-08 Thread Steven D'Aprano
On Thu, 09 Sep 2010 12:38:04 +1200, Lawrence D'Oliveiro wrote:

 In message mailman.501.1283789339.29448.python-l...@python.org, Hugo
 Arts wrote:
 
 sys.argv is a list of all arguments from the command line ...
 
 Interesting that Python didn’t bother to mimic the underlying POSIX
 convention of passing the command line as arguments to the mainline
 routine.

What mainline routine?


 I always felt it was more useful to have command arguments directly
 accessible as globals, rather than having to pass them from the
 mainline.

http://c2.com/cgi/wiki?GlobalVariablesAreBad

That's why we have namespaces. If you need the command line arguments, 
you just import sys and you have access to them.



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


Re: [Tutor] Arguments from the command line

2010-09-08 Thread Lawrence D'Oliveiro
In message mailman.599.1284008342.29448.python-l...@python.org, Dennis Lee 
Bieber wrote:

 None of them have command line arguments passed in to some
 starting point -- all had to use some runtime library function to ask
 for the command line contents.

It’s always a language-specific routine, since at the underlying POSIX level 
(exposed by C), the command line is passed as arguments to the mainline 
routine.
-- 
http://mail.python.org/mailman/listinfo/python-list


[issue9786] Native TLS support for pthreads

2010-09-08 Thread Kristján Valur Jónsson

Kristján Valur Jónsson krist...@ccpgames.com added the comment:

Hm, both the test you mention are using the (non-recursive) lock to synchronize 
threads.  I can't see anything wrong there.

Could you please try to replace the cod in pthread_getspecific() with this:

int err = errno
void *result = pthread_getspecific(key);
errno = err;
return result;

If this fixes those cases, then there is code somewhere that relies on errno 
being maintained across these calls.

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9786
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue9796] Add summary tables for unittest API

2010-09-08 Thread Raymond Hettinger

Raymond Hettinger rhettin...@users.sourceforge.net added the comment:

Just focus on the table for assert* methods.  This is the one category that 
users will need to look-up over and over again.  The goal is to make the docs 
more usable, not more voluminous.

Also, I suggest finding meaningful groupings (don't stick with alpha order) and 
including a short plain assert-statement equivalents to show what the methods 
actual do (this is important because many are new, some are obscure, and not 
all have obvious semantics):

 | assertEqual(x, y)  | assert x == y  |
 | assertGreaterThan(x, y)| assert x  y   |
 | assertItemsEqual(act, exp) | assert sorted(exp) == sorted(act)  |

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9796
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue6114] distutils build_ext path comparison only based on strings

2010-09-08 Thread Sven Rebhan

Sven Rebhan odinsho...@googlemail.com added the comment:

Of course there is a secret distutils comunity using git! ;-) The three ppl 
mentioned there found and fixed the problem, that's why.

But back to the issue: Can we use a switch or wrapper function to change the 
test method for this path dependent on the OS? I'm asking because in windows 
there might be no symlink either and everything just works(tm).

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue6114
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue9632] Remove sys.setfilesystemencoding()

2010-09-08 Thread Marc-Andre Lemburg

Marc-Andre Lemburg m...@egenix.com added the comment:

STINNER Victor wrote:
 
 STINNER Victor victor.stin...@haypocalc.com added the comment:
 
 keep the C function
 
 Hum, currently, Python3 only has a *private* function called 
 _Py_SetFileSystemEncoding() which can only be called after _Py_InitializeEx() 
 (because it relies on the codecs API). If you consider that there is a real 
 use case, we should create a function to set the filesystem encoding, 
 function that should (have to?) be called before Py_InitializeEx().
 
 I still think that Python knows better than the application how to set the 
 encoding (when, how to choose it, etc.).

If you embed Python into another application, say as scripting
language for that application, that other application may have
completely different requirements for the user setup than Python
expects, e.g. for a Windows GUI application it's not feasible to
ask the user to change the environment variables via the registry
in order for Python to pick up the right encoding information.

What we'd need is a way for the embedding application to provide this
information in a way that doesn't require setting up the environment
in some special way. The application will likely have its own way
of configuring things like file system or I/O stream encodings. Think
of e.g. GTK or Qt applications as example.

The Py_InitializeEx() function sounds like a good idea to pass the
information about such important extra parameters to Python. This
could take arguments for setting the file system encoding as
well as the I/O encoding. The arguments would then override the env var
settings.

So you can remove the function, but have to keep a backdoor open
for use cases like the one I described above.

The Py_InitializeEx()
function approach would also avoid all the issues that you have
with calling _Py_SetFileSystemEncoding() after the interpreter
has been initialized.

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9632
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue2745] Add support for IsWow64Process

2010-09-08 Thread Pete Bartlett

Pete Bartlett peter.bartl...@nomura.com added the comment:

Hi,

I am a Python user seeking an implementation of iswow64 and found this tracker. 
Unfortunately I don't think Martin's suggested alternative approach works.

os.environ[PROCESSOR_ARCHITECTURE]

returns x86 on my system when run from a 32-bit python, even though if I look 
at my real environment I see 

D:\echo %PROCESSOR_ARCHITECTURE%
AMD64

i.e it appears that Windows is passing false information, if you will, to 
whatever populates os.environ in 32-bit windows.

Perhaps Mark's patch should be resurrected. Or is there a further way to get 
this information?

[My Python version information:
D:\python
ActivePython 2.6.5.12 (ActiveState Software Inc.) based on
Python 2.6.5 (r265:79063, Mar 20 2010, 14:22:52) [MSC v.1500 32 bit (Intel)] on 
win32
]

--
nosy: +pcb21

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue2745
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue3871] cross and native build of python for mingw32 with distutils

2010-09-08 Thread Luke Kenneth Casson Leighton

Luke Kenneth Casson Leighton l...@lkcl.net added the comment:

sorry to have to ask, but could we get some feedback please so that this issue 
may move forward?  currently there is a conflict between what is required and 
what is stated as being absolute law.

let's imagine that it is reasonable to expect distutils2 to be used.  python 
proceeds with the mingw32 patches using distutils2, python 2.N is compiled and 
released.  an average user installs python 2.N mingw32 and they run python 
setup.py install on a package - what happens?

they get a compile error, don't they?

why do they get a compile error?

because the setup.py tries to build some c code, and at the top of *their* 
setup.py is import distutils.

so you now force thousands of developers to patch a their setup.py scripts 
- scripts which have worked for years - _just_ so that those packages can cope 
with the use of distutils2 for the mingw32 platform?

so we have another reducto ad absurdum which demonstrates that it is 
impractical to expect distutils to be frozen.

thus, we are forced to consider alternative options, such as monkey-patching 
of distutils, to satisfy the requirements.

would the following be acceptable, to be inserted somewhere in the path so that 
it is guaranteed to work at all times?

import mingw32_distutils_compiler
import sys
if distutils.compiler in sys.modules:
sys.modules['distutils.compiler'] = mingw32_distutils_compiler


where mingw32_distutils_compiler performs an import of distutils.compiler and 
performs a monkey-patch mish-mash to combine and replace various parts of the 
compiler module at run-time, to get round the freeze objections.

would that be acceptable?  please say no, because the long-term viability and 
maintainability of such practices is virtually nil.

basically i'm pointing out to you, eric, that the freeze on distutils is 
unworkable and impractical and unnecessary.

this isn't bug-fixing of distutils, it's absolutely necessary and critically 
required because this is an entirely new platform.

* it's not cygwin: cygwin uses standard gcc but with weird outputs and quirks.

* it's not standard unix gcc: you need to output .dll not .so

* it's not msvc: mingw32-gcc doesn't accept /this /that for options.

therefore i'm very sorry to have to spell it out but a new compiler and linker 
type - a NEW compiler and linker type - an ADDITIONAL compiler and linker type 
- IS required in order to cater for this platform, and there's no getting away 
from that fact.

please could we have some acknowledgement of this fact, and acceptance of this 
fact, and a plan for moving forward with careful review of this patch, so that 
LRN and others do not have their time spent pursuing a direction involving 
distutils2 which will be completely fruitless?

many many thanks,

l.

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue3871
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue4947] sys.stdout fails to use default encoding as advertised

2010-09-08 Thread STINNER Victor

STINNER Victor victor.stin...@haypocalc.com added the comment:

I commited my patch (with a new test, iso-8859-1:replace) to 2.7: r84621. I 
will no backport to 2.6 because this branch now only accept security fixes.

--
resolution:  - fixed
status: open - closed

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue4947
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue9797] wrong assumption in pystate.c

2010-09-08 Thread Antoine Pitrou

New submission from Antoine Pitrou pit...@free.fr:

pystate.c assumes that when autoTLSkey is 0, it hasn't been created yet. 
However, some TLS implementations can return 0 as a valid key value. Lots of 
interesting things then happen.

Here is a patch.

--
files: autotlskey.patch
keywords: patch
messages: 115858
nosy: amaury.forgeotdarc, krisvale, pitrou
priority: normal
severity: normal
stage: patch review
status: open
title: wrong assumption in pystate.c
type: crash
versions: Python 2.7, Python 3.1, Python 3.2
Added file: http://bugs.python.org/file18794/autotlskey.patch

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9797
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



  1   2   >