Re: Cutting a deck of cards

2013-06-02 Thread Lee Crocker

 and in fact will probably make it worse depending on how you choose
 the cutpoint.
 
 I'm pretty sure it won't. Otherwise you'd be lowering entropy by doing
 a random thing to a random thing.

Doing a random thing to a random thing usually *does* lower entropy when
the random things are actually deterministic algorithms that may have 
unexpected correlations. That's why you don't write your own PRNG unless
you have a very good understanding of the math.

If you are shuffling the deck with, say, numbers from random.org (which uses 
atmospheric noise), then cutting the deck afterward will have precisely 0 
effect, since the (51 * 52!) possible outcomes include 51 copies of each of the 
52! orderings, and so the odds of each end up the same. But if you're choosing 
the cutpoint by getting a value from the same PRNG you used to shuffle, there 
might very well be a correlation that makes some arrangements more likely
than others.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread Νικόλαος Κούρας
Τη Σάββατο, 1 Ιουνίου 2013 6:44:36 μ.μ. UTC+3, ο χρήστης Νικόλαος Κούρας έγραψε:
 /home/nikos/public_html/cgi-bin/metrites.py in ()
 
 217 template = htmldata + counter
 
 218 elif page.endswith('.py'):
 
 =  219 htmldata = subprocess.check_output( 
 '/home/nikos/public_html/cgi-bin/' + page )
 
 220 template = htmldata.decode('utf-8').replace( 
 'Content-type: text/html; charset=utf-8', '' ) + counter
 
 221 
 
 htmldata undefined, subprocess = module 'subprocess' from 
 '/opt/python3/lib/python3.3/subprocess.py', subprocess.check_output = 
 function check_output, page = 'files.py'
 
  /opt/python3/lib/python3.3/subprocess.py in check_output(timeout=None, 
 *popenargs=('/home/nikos/public_html/cgi-bin/files.py',), **kwargs={})
 
 584 retcode = process.poll()
 
 585 if retcode:
 
 =  586 raise CalledProcessError(retcode, process.args, 
 output=output)
 
 587 return output
 
 588 
 
 global CalledProcessError = class 'subprocess.CalledProcessError', retcode 
 = 1, process = subprocess.Popen object, process.args = 
 '/home/nikos/public_html/cgi-bin/files.py', output = b'Content-type: 
 text/html; charset=utf-8\n\nbod...n position 74: surrogates not 
 allowed\n\n--\n\n'
 
 CalledProcessError: Command '/home/nikos/public_html/cgi-bin/files.py' 
 returned non-zero exit status 1 
 
   args = (1, '/home/nikos/public_html/cgi-bin/files.py') 
 
   cmd = '/home/nikos/public_html/cgi-bin/files.py' 
 
   output = b'Content-type: text/html; charset=utf-8\n\nbod...n position 
 74: surrogates not allowed\n\n--\n\n' 
 
   returncode = 1 
 
   with_traceback = built-in method with_traceback of CalledProcessError 
 object
 
 
 
 
 
 The above error message happened when i tried to reanme one of my filenames 
 from
 
 
 
 its greeklish name to greek charcters.
 
 
 
 files.py is a script that allows users to downlaod fiels form my server.
 
 But i wish to presnt filename sin Greek and not in Greeklish
 
 
 
 http://superhost.gr/?page=files.py
 
 as it is now.
 
 
 
 What can i do to make pth script accept greek filenames too?
 
 Why does subprocess is complaining?

i tried encode and decode

elif page.endswith('.py'):
htmldata = subprocess.check_output( '/home/nikos/public_html/cgi-bin/' + 
page )
template = htmldata.decode('utf-8') + counter

bu still same error when i rename a filename with greek letters.

Any ideas? is this a bug?
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread Giorgos Tzampanakis
 The above error message happened when i tried to reanme one of my
 filenames from

 its greeklish name to greek charcters.

 files.py is a script that allows users to downlaod fiels form my server.
 But i wish to presnt filename sin Greek and not in Greeklish

 http://superhost.gr/?page=files.py
 as it is now.

 What can i do to make pth script accept greek filenames too?
 Why does subprocess is complaining?

You are not offering enough information, because you have not posted the
contents of your files.py script. Thus it's difficult to help you. Please
post your code to pastebin or somewhere similar because posting long lines
on usenet is considered bad etiquette.

Also, few here know what greeklish means, and most of us who know would
like to forget.


-- 
Real (i.e. statistical) tennis and snooker player rankings and ratings:
http://www.statsfair.com/ 
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread Mark Lawrence

On 02/06/2013 08:01, Giorgos Tzampanakis wrote:


You are not offering enough information, because you have not posted the
contents of your files.py script. Thus it's difficult to help you. Please
post your code to pastebin or somewhere similar because posting long lines
on usenet is considered bad etiquette.



I would much prefer to have a code snippet that shows the problem 
inline.  Plus, what happens in six months time if someone finds this 
thread but can't find the code online as it's expired?


--
Steve is going for the pink ball - and for those of you who are 
watching in black and white, the pink is next to the green. Snooker 
commentator 'Whispering' Ted Lowe.


Mark Lawrence

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


Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread David
On 02/06/2013, Mark Lawrence breamore...@yahoo.co.uk wrote:
 On 02/06/2013 08:01, Giorgos Tzampanakis wrote:

 You are not offering enough information, because you have not posted the
 contents of your files.py script. Thus it's difficult to help you. Please
 post your code to pastebin or somewhere similar because posting long
 lines
 on usenet is considered bad etiquette.


 I would much prefer to have a code snippet that shows the problem
 inline.  Plus, what happens in six months time if someone finds this
 thread but can't find the code online as it's expired?

I agree, and this is also the policy enforced in freenode #bash.
Please do not encourage people to pastebin entire scripts, because
very few people will bother to read them. The ideal approach is to
post a minimal code snippet that allows us to comprehend or reproduce
the problem. This encourages the question to be well-framed. Otherwise
idiots will dump their entire scripts into a pastebin and write to us
why it not work?.
-- 
http://mail.python.org/mailman/listinfo/python-list


Free Money

2013-06-02 Thread MoneyMaker
Get Free Money here:
http://horrorhorrorhorror.webs.com/free-money
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread Nobody
On Sat, 01 Jun 2013 08:44:36 -0700, Νικόλαος Κούρας wrote:

 CalledProcessError: Command '/home/nikos/public_html/cgi-bin/files.py' 
 returned non-zero exit status 1 
   args = (1, '/home/nikos/public_html/cgi-bin/files.py') 
   cmd = '/home/nikos/public_html/cgi-bin/files.py' 
   output = b'Content-type: text/html; charset=utf-8\n\nbod...n position 
 74: surrogates not allowed\n\n--\n\n' 
   returncode = 1 
   with_traceback = built-in method with_traceback of CalledProcessError 
 object

The traceback indicates that files.py terminated with a non-zero exit
code, indicating an error.

And that's *all* that can be determined from the information which you
have posted.

If you want to solve the problem, you'll need to make files.py generate
useful error messages, then capture them.

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


Getting Error can't find '__main__' module in 'X'

2013-06-02 Thread meakaakka
Hey I am newbie in python.I have installed python 2.7.5 correctly.It is working 
fine but I am having some issues.I have set windows Enviroment variables.
The problem is when I try to save my program in a folder(C:\Users\John\X)it 
shows that module error but when I save it outside this X folder ( 
C:\Users\John ) It runs successfully.How to fix it?
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Getting Error can't find '__main__' module in 'X'

2013-06-02 Thread Dave Angel

On 06/02/2013 07:04 AM, meakaakka wrote:

Hey I am newbie in python.I have installed python 2.7.5 correctly.It is working 
fine but I am having some issues.I have set windows Enviroment variables.


Please be a lot more specific.  Do you have any particular environment 
variables you suspect, and if so, what have you set them to?



The problem is when I try to save my program in a folder(C:\Users\John\X)it 
shows that module error


Then you'd better tell us what program you were using to save it with. 
I've never seen that error from emacs or Notepad++, but perhaps you're 
doing something else.



but when I save it outside this X folder ( C:\Users\John ) It runs 
successfully.How to fix it?



Perhaps you'd better start at the beginning.  Thanks for telling us 
you're using python Version 2.7.5,  Now perhaps you mean not that this 
error occurs during the save, but instead during running of the program.


So let's try again.  Don't try to answer just certain parts of the 
below, but instead make your own problem description that's at least as 
thorough. By the time you're done, you just might solve the problem 
yourself, or you'll have learned something new about the problem.  But 
at least you'll help us help you.



You have saved some program (what is its name?) (why not include it 
here, since it probably only needs about 3 lines, including an import of 
some form?) in the directory  C:\Users\John\X.


You then run it, from a cmd prompt, as follows:

C:\Users\John\X  python  myprog.py

and you get the following error.

(You fill this in.  It's a group of lines called a traceback, and the 
whole thing can be useful.  Don't summarize or retype it, use copy/paste).


You then move the file to directory  C:\Users\John\betterplace, do a cd 
there, and run it again from that directory.  Now it works, no import 
errors, and runs to completion.


So what else is in that first directory?  Are you referencing X 
somewhere in your code?  Are you referencing __name__  (which is a 
reserved term with very specific meaning)?


Have you tried keeping the program in C:\Users\John\X  but running with 
a different current directory?


C:\Users\John\testdir  python  ..\X\myprog.py

If I had to mount my crystal ball, I'd say you've got some form of 
recursive import going on (thus __main__), and that some module or 
package has the name X.  You might also have more than one copy of some 
python source file, or a sys.path that's messed up.


Some general advice for the future:  Avoid using any uppercase in file 
and directory names for source code.  Avoid any single-letter names. 
Avoid doing recursive imports, and NEVER import the script itself from 
some other file.


One more thing.  Before replying, please read this since you're using 
googlegroups:


   http://wiki.python.org/moin/GoogleGroupsPython.


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


Re: Getting Error can't find '__main__' module in 'X'

2013-06-02 Thread Steven D'Aprano
On Sun, 02 Jun 2013 04:04:50 -0700, meakaakka wrote:

 Hey I am newbie in python.I have installed python 2.7.5 correctly.It is
 working fine but I am having some issues.I have set windows Enviroment
 variables. 

Any particular environment variables? Shall we guess which ones?

 The problem is when I try to save my program in a
 folder(C:\Users\John\X)it shows that module error

Are you saying that you cannot save in that folder? Sounds like a 
permission error, or maybe the folder doesn't exist. Have you tried 
saving in that folder with another program? Can you see the folder in 
Windows Explorer?

Or do you mean you CAN save in that folder, but... something else 
happens? What? We could play guessing games all week, but it would be 
better if you actually tell us exactly what is happening. You can see 
exactly what happens, we can only see what you tell us. Tell us:

* Where is the file saved?

* What file name does it have?

* EXACTLY how you are trying to run the file. 

* If you are trying to launch it from the command line, COPY AND PASTE 
the EXACT command you are using.

* If you get an error, and it is in the console, COPY AND PASTE the EXACT 
error message you get. ALL of it. Don't summarise, don't leave out bits 
you think aren't important, don't retype it from memory, and especially 
don't assume that because you know what the error is, we will magically 
know too.

The error message will probably start with:

Traceback (most recent call last):


and then end with an exception type and error message, like:

NameError: name 'foo' is not defined

IndexError: list index out of range

SyntaxError: invalid syntax


or similar. Copy and paste the entire error message.

Once you have shown us these details, we might be able to help you, or at 
least come back to you with more questions.



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


Re: Apache and suexec issue that wont let me run my python script

2013-06-02 Thread Paul Kölle

Am 01.06.2013 07:30, schrieb Νικόλαος Κούρας:
[snipp]



[Thu May 30 15:29:33 2013] [error] [client 46.12.46.11] suexec failure: could 
not open log file
[Thu May 30 15:29:33 2013] [error] [client 46.12.46.11] fopen: Permission denied
[Thu May 30 15:29:33 2013] [error] [client 46.12.46.11] Premature end of script 
headers: koukos.py
[Thu May 30 15:29:33 2013] [error] [client 46.12.46.11] File does not exist: 
/home/nikos/public_html/500.shtml

when i tail -F /usr/local/apache/logs/error_log 

What this error means?

It appears that the effective user of the script does not have permission to 
open the log file
that the suexec call requires.
Yes, so which logfile and what user is suexec using to run your script? 
You should be able to answer all this from your apache configuration.


cheers
 Paul



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


Python 2-3 compatibility

2013-06-02 Thread Jason Swails
Hello Everyone,

I have a Python script that I wrote to support a project that I work on
(that runs primarily on Unix OSes).  Given its support role in this
package, this script should not introduce any other dependencies.  As a
result, I wrote the script in Python 2, since every Linux currently ships
with 2.4--2.7 as its system Python (RHEL 5, still popular in my field,
ships with 2.4).

However, I've heard news that Ubuntu is migrating to Python 3 soon (next
release??), and that's a platform we actively try to support due to its
popularity.  I've tried writing the code to support both 2 and 3 as much as
possible, but with priority put on supporting 2.4 over 3.

Now that Python 3-compatibility is about to become more important, I'm
looking for a way to catch and store exceptions in a compatible way.

Because Python 2.4 and 2.5 don't support the

except Exception as err:

syntax, I've used

except Exception, err:

Is there any way of getting this effect in a way compatible with Py2.4 and
3.x?  Of course I could duplicate every module with 2to3 and do
sys.version_info-conditional imports, but I'd rather avoid duplicating all
of the code if possible.

Any suggestions are appreciated.

Thanks!
Jason

-- 
Jason M. Swails
Quantum Theory Project,
University of Florida
Ph.D. Candidate
352-392-4032
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread Νικόλαος Κούρας
Τη Κυριακή, 2 Ιουνίου 2013 10:01:50 π.μ. UTC+3, ο χρήστης Giorgos Tzampanakis 
έγραψε:

OK George, nd the rest fo the guys here it is the snippet of files.py 
responsible to print the greek filenames:

for row in data:
(url, hits, host, lastvisit) = row
shorturl = url.replace( '/home/nikos/www/data/apps/', '' )
lastvisit = lastvisit.strftime('%A %e %b, %H:%M')

print('''
form method=get action=cgi-bin/files.py
tr
td center input type=submit 
name=shorturl value=%s /td
td center font color=yellow size=5 %s 
/td
td center font color=orange size=4 %s 
/td
td center font color=silver size=4 %s 
/td
/tr
/form
''' % (shorturl, hits, host, lastvisit) )

and here is the the metrites.py snipper that calls files.py via subproccess to 
run:

if page.endswith('.html'):
with open('/home/nikos/public_html/' + page, encoding='utf-8') 
as f:
htmldata = f.read()
htmldata = htmldata % (quote, music)
template = htmldata + counter
elif page.endswith('.py'):
htmldata = subprocess.check_output( 
'/home/nikos/public_html/cgi-bin/' + page )
template = htmldata.decode('utf-8') + counter

print( template )
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread Giorgos Tzampanakis
On 2013-06-02, Νικόλαος Κούρας wrote:

[snip unreadable code]

Okay, this sounds like a homework exercise. Also, it doesn't appear like
you've spent any amount of time researching a solution yourself.

-- 
Real (i.e. statistical) tennis and snooker player rankings and ratings:
http://www.statsfair.com/ 
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread Mark Lawrence

On 02/06/2013 15:36, Giorgos Tzampanakis wrote:

On 2013-06-02, Νικόλαος Κούρας wrote:

[snip unreadable code]

Okay, this sounds like a homework exercise. Also, it doesn't appear like
you've spent any amount of time researching a solution yourself.



You've obviously arrived very late at the party.

--
Steve is going for the pink ball - and for those of you who are 
watching in black and white, the pink is next to the green. Snooker 
commentator 'Whispering' Ted Lowe.


Mark Lawrence

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


Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread Νικόλαος Κούρας
Τη Κυριακή, 2 Ιουνίου 2013 5:36:57 μ.μ. UTC+3, ο χρήστης Giorgos Tzampanakis 
έγραψε:
 On 2013-06-02, Νικόλαος Κούρας wrote:
 
 
 
 [snip unreadable code]
 
 
 
 Okay, this sounds like a homework exercise. Also, it doesn't appear like
 you've spent any amount of time researching a solution yourself.

I have spent days looking for a solution to this.
Why you say it is unreadable?
What is it that you do not understand?

What would you want to be shown?
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread Νικόλαος Κούρας
Τη Κυριακή, 2 Ιουνίου 2013 5:51:31 μ.μ. UTC+3, ο χρήστης Mark Lawrence έγραψε:
 
 You've obviously arrived very late at the party.

Apart from the funny commenting, can you for once contribute towards to an 
actual solution or this is the best you can do to prove yourself smart in here 
by talking down on me?
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread Chris Angelico
On Mon, Jun 3, 2013 at 1:04 AM, Νικόλαος Κούρας nikos.gr...@gmail.com wrote:
 Τη Κυριακή, 2 Ιουνίου 2013 5:51:31 μ.μ. UTC+3, ο χρήστης Mark Lawrence έγραψε:

 You've obviously arrived very late at the party.

 Apart from the funny commenting, can you for once contribute towards to an 
 actual solution or this is the best you can do to prove yourself smart in 
 here by talking down on me?

What makes you think you can demand that we contribute to your problems?

I'm serious. Why do you feel entitled to assistance, when you won't
even put some effort into your posts? You loudly proclaim that you've
spent days looking for a solution to some problem, yet you can't
spend thirty seconds polishing your post before you hit Send?

I call bogus (others may use some other b-word) on the whole spent
days bit. If you had, you'd have found something.

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


Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread Νικόλαος Κούρας
Τη Κυριακή, 2 Ιουνίου 2013 6:15:16 μ.μ. UTC+3, ο χρήστης Chris Angelico έγραψε:

 Apart from the funny commenting, can you for once contribute towards to an 
  actual solution or this is the best you can do to prove yourself smart in 
 here 
 by talking down on me?

 What makes you think you can demand that we contribute to your problems?

I'am an OP like everybody else in here and i don't demand anything.
But ome people instead of being helpfull or even ignore, think its better to 
belittle me. You are a special case, because you do both(you ahve actually 
provided me hits manh times), but that is not the case of some other regulars.

 I'm serious. Why do you feel entitled to assistance, when you won't
 even put some effort into your posts? You loudly proclaim that you've
 spent days looking for a solution to some problem, yet you can't 
 spend thirty seconds polishing your post before you hit Send?

I'm clipping my posts from googles '/n' addition and i'am quoating too.
 
 I call bogus (others may use some other b-word) on the whole spent 
 days bit. If you had, you'd have found something.

Yes i have and i wasn't able to find something other that this maybe be a bug.
If i had i wouldn't be asking here.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread Mark Lawrence

On 02/06/2013 16:04, Νικόλαος Κούρας wrote:

Τη Κυριακή, 2 Ιουνίου 2013 5:51:31 μ.μ. UTC+3, ο χρήστης Mark Lawrence έγραψε:


You've obviously arrived very late at the party.


Apart from the funny commenting, can you for once contribute towards to an 
actual solution or this is the best you can do to prove yourself smart in here by talking 
down on me?



The only thing I'll contribute is that if you're looking to run a 
commercial venture, you wouldn't be the last on my list for services, 
you'd never get on it.


Further I'll point out that you never give any indication at all of ever 
doing any research before you ask a question.  You simply fire off email 
after email in the hope that you'll get a response.  Luckily for you a 
substantial number of people have come to your rescue.  Unfortunately 
for you, you've exhausted the patience of a number who might well have 
been extremely helpful *IF* you'd put in a little effort.  That is just 
too much to ask of course.


--
Steve is going for the pink ball - and for those of you who are 
watching in black and white, the pink is next to the green. Snooker 
commentator 'Whispering' Ted Lowe.


Mark Lawrence

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


Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread Νικόλαος Κούρας
Τη Κυριακή, 2 Ιουνίου 2013 6:24:10 μ.μ. UTC+3, ο χρήστης Mark Lawrence έγραψε:

Nikos wrote:
  Apart from the funny commenting, can you for once contribute towards to 
  an actual solution or this is the best you can do to prove yourself smart 
  in here by talking down on me?


 The only thing I'll contribute is that if you're looking to run a  
 commercial venture, you wouldn't be the last on my list for services,  
 you'd never get on it.

I wouldn't want you as i client either.

 Further I'll point out that you never give any indication at all of ever  
 doing any research before you ask a question.  You simply fire off email  
 after email in the hope that you'll get a response.  Luckily for you a 
 substantial number of people have come to your rescue.  Unfortunately 
 for you, you've exhausted the patience of a number who might well have 
 been extremely helpful *IF* you'd put in a little effort.  That is just 
 too much to ask of course.

*IF* ?
So, you think i'm not putting any effort?

Almost always i post out snippets of what i have tried in my numerous attempts 
to solve some issue i've encountered.

Putting forward effort and being able to actually solve a problem is two 
difeerent things.

Where is your attemps to provide an actual help to me for once
It is not obligatory of course but a matter of good will, but instead of doing 
that, you choose not only to not help or at least ignore, but consistently 
making fun at my expense.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread Mark Lawrence

On 02/06/2013 16:36, Νικόλαος Κούρας wrote


*IF* ?
So, you think i'm not putting any effort?

Almost always i post out snippets of what i have tried in my numerous attempts 
to solve some issue i've encountered.

Putting forward effort and being able to actually solve a problem is two 
difeerent things.

Where is your attemps to provide an actual help to me for once
It is not obligatory of course but a matter of good will, but instead of doing 
that, you choose not only to not help or at least ignore, but consistently 
making fun at my expense.



I don't think, I know.  How can you be putting in any effort when you 
give yourself no thinking time?  When you ask for a response maybe two 
hours after you've first posted?  Basically you're using this group as a 
*FREE* technical support service.  If you want something done to suit 
you, either put the effort in first, show some patience, or *PAY* for 
support.


--
Steve is going for the pink ball - and for those of you who are 
watching in black and white, the pink is next to the green. Snooker 
commentator 'Whispering' Ted Lowe.


Mark Lawrence

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


Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread Νικόλαος Κούρας
Τη Κυριακή, 2 Ιουνίου 2013 6:55:31 μ.μ. UTC+3, ο χρήστης Mark Lawrence έγραψε:

 I don't think, I know.  How can you be putting in any effort when you 
 give yourself no thinking time?  When you ask for a response maybe two 
 hours after you've first posted?  Basically you're using this group as a 
 *FREE* technical support service.  If you want something done to suit 
 you, either put the effort in first, show some patience, or *PAY* for  
 support.

Certainly *not you*, since you not proven yourself knowlengeable to me or in 
the case you are, certainly not helpfull but ironic instead.

This is a a *free* python list.
Everybody receiving help in here does nto have to pay. this might be a simple 
trick like the other issues i had with the pymysql connector where it needed 
'charser='utf8'' instead of 'charser='utf-8'' which is what i was trying. 
Couldn't think of the dash because in any other case i happened to make use of 
'utf-8' in my scripts, it was mentioned with a dash inside the statements like:

print( '''Content-type: text/html; charset=utf-8\n''' 
open('/home/nikos/public_html/' + page, encoding='utf-8') as f:

So i assumed, 'charset=utf-8' too, didn't occured to me an other symbolism.

Paying for someone to just remove a dash to get the script working is too much 
to ask for, but paying for someone from this list to convert my scripts to 
Django, and i will at some point because this site advertises webhosting is 
logically. I want the scripts to user latest versions of python and the best 
code it can be done so, to be quick and functional.

I cannot of course expect someone to do the conversion for me for free.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread Chris Angelico
On Mon, Jun 3, 2013 at 2:21 AM, Νικόλαος Κούρας nikos.gr...@gmail.com wrote:
 Paying for someone to just remove a dash to get the script working is too 
 much to ask for

One dash: 1c
Knowing where to remove it: $99.99
Total bill: $100.00

Knowing that it ought really to be utf8mb4 and giving hints that the
docs should be read rather than just taking this simple example and
plugging it in: Priceless.

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


Re: Python 2-3 compatibility

2013-06-02 Thread Dan Stromberg
From
http://stromberg.dnsalias.org/~dstromberg/Intro-to-Python/Python%202%20and%203.pdf:

Try/Except: both 2.x and 3.x

try:
   print(1/0)
except ZeroDivisionError:
   extra = sys.exc_info()[1]
   print('oops')

HTH



On Sun, Jun 2, 2013 at 7:13 AM, Jason Swails jason.swa...@gmail.com wrote:

 Hello Everyone,

 I have a Python script that I wrote to support a project that I work on
 (that runs primarily on Unix OSes).  Given its support role in this
 package, this script should not introduce any other dependencies.  As a
 result, I wrote the script in Python 2, since every Linux currently ships
 with 2.4--2.7 as its system Python (RHEL 5, still popular in my field,
 ships with 2.4).

 However, I've heard news that Ubuntu is migrating to Python 3 soon (next
 release??), and that's a platform we actively try to support due to its
 popularity.  I've tried writing the code to support both 2 and 3 as much as
 possible, but with priority put on supporting 2.4 over 3.

 Now that Python 3-compatibility is about to become more important, I'm
 looking for a way to catch and store exceptions in a compatible way.

 Because Python 2.4 and 2.5 don't support the

 except Exception as err:

 syntax, I've used

 except Exception, err:

 Is there any way of getting this effect in a way compatible with Py2.4 and
 3.x?  Of course I could duplicate every module with 2to3 and do
 sys.version_info-conditional imports, but I'd rather avoid duplicating all
 of the code if possible.

 Any suggestions are appreciated.

 Thanks!
 Jason

 --
 Jason M. Swails
 Quantum Theory Project,
 University of Florida
 Ph.D. Candidate
 352-392-4032

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


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


Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread Νικόλαος Κούρας
Τη Κυριακή, 2 Ιουνίου 2013 7:31:25 μ.μ. UTC+3, ο χρήστης Chris Angelico έγραψε:
 On Mon, Jun 3, 2013 at 2:21 AM, Νικόλαος Κούρας nikos.gr...@gmail.com wrote:
 
  Paying for someone to just remove a dash to get the script working is too 
  much to ask for

 One dash: 1c
 Knowing where to remove it: $99.99
 Total bill: $100.00

 Knowing that it ought really to be utf8mb4 and giving hints that th 
 docs should be read rather than just taking this simple example and
 plugging it in: Priceless.

I agree.
So how much to solve this issue too Chris?
And would you spare me the charge for the dash(-) problem which you pointed out 
and solved? :-)
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Python 2-3 compatibility

2013-06-02 Thread Terry Jan Reedy

On 6/2/2013 10:13 AM, Jason Swails wrote:


Because Python 2.4 and 2.5 don't support the

except Exception as err:

syntax, I've used

except Exception, err:

Is there any way of getting this effect in a way compatible with Py2.4
and 3.x?


Don't do either. Just catch the exception with 'except Exception:' and 
access the details in the body. I googled 'python 2 to 3 exceptions' and 
the second hit is http://python3porting.com/noconv.html which covers 
what you are doing ;-). From that page


If you need to support Python versions lower than Python 2.6 and you 
need access to the exception that was raised, you can get that in all 
versions through the exc_info() function:


 import sys
 try:
... a = 1/'0'
... except (ZeroDivisionError, TypeError):
... e = sys.exc_info()[1]
... print(e.args[0])
unsupported operand type(s) for /: 'int' and 'str'

There are more tips on that page, a reference to the six module, and 
more hits on the search page. Good luck. You are not the first to 
support the same range of versions (and for the same reasons).


--
Terry Jan Reedy




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


Re: Getting Error can't find '__main__' module in 'X'

2013-06-02 Thread meakaakka
I think I am the dumbest guy.I got it.I was running it in a wrong way.
I was running it like python X hello.py and the problem was in C:\Users\John
I should have first gone in C:\Users\John\X then I should run it like python 
hello.py
Dave Angel,Steven D'Aprano-Thank you for the help.
 
-- 
http://mail.python.org/mailman/listinfo/python-list


PyWart: The problem with print

2013-06-02 Thread Rick Johnson

Note to those of you who may be new to Python: I will refer to print as a 
function -- just be aware that print was a statement before Python3000 was 
introduced.


 Introduction:

Many languages provide a function, method, or statement by which users can 
write easily to stdout, and Python is no exception with it's own print 
function. However, whilst writing to stdout via print is slightly less 
verbose than calling the write method of sys.stdout, we don't really gain 
much from this function except a few keystrokes... is this ALL print should be? 
A mere syntactical sugar? For me, i think the print function CAN and SHOULD 
be so much more!


 Print's Role in Debugging:

A print function can be helpful in many ways, and one very important role print 
plays is to inform the programmer of internal states of objects via debug 
messages written to stdout.

Sure, there are fancy debuggers by which internal state and object identity can 
be inspected on the fly, however, print is always going to be there no matter 
what libraries or add-on you have available. And let's face it folks, print is 
the most simplistic and intuitive interface you'll ever find for debugging 
purposes. Sure, print may not be the most productive for large scale 
debugging, but for the majority of debugging tasks, it's a good fit.

I know some of you will cringe at the idea of using print for debugging, 
however, i will argue that using a debugger can weaken your detective skills. 
If an exception message and trackback are not giving you enough information to 
find the bug, well then, the language OR the code you've written is not worth a 
monkey's toss! 

I've found that many subtle bugs are caused by not limiting the inputs to sane 
values (or types). And with Python's duct typing and implicit casting to 
Boolean, you end up with all sorts of misleading things happening! Maybe you're 
testing for truth values and get a string instead; which screws everything 
up!!! 

Anyhoo, i digress...


 Inadequacies of print Debugging.

In it's current implementation, print is helpful, but in many ways, print is 
lacking it's true potential. Many of the problems that propagate up when using 
print as a debugger focus on the fact that you cannot easily switch the debug 
messages on or off.

Sure, you can comment-out all calls to print, but if you need to see the 
messages again you will be forced to uncomment all the lines again... hey 
that's no fun! 

A wise programmer may think he's solved the problem by writing a function 
called debugprint that looks like this:

def debugprint(*args):
if DEBUG == True:
print(*args)

However that solution is at best woefully inadequate and at worse a cycle 
burner!

 * Woefully inadequate because: Switching on or off the debug
   messages is only valid in the current module that the
   function was imported. What if you want to kill all
   debugprint messages EVERYWHERE? Do you really want to edit
   debug = BOOLEAN in every source file OR do something
   stupid like import debugprint and edit the DEBUG constant
   OR even dumber, edit the debugprint source code? GAWD NO!

 * But even if you are willing to cope with all the switch-
   on-and-off nonsense, are you willing to have you code
   slowed by numerous calls to a dead function containing a
   comparison that will always be false?

## START INTERACTIVE SESSION ##
py from __future__ import print_function
py DEBUG = True
py def debugprint(*args):
... if not DEBUG:
... return
... print(*args)
py debugprint(foo, bar)
foo bar
py DEBUG = False
py code = compile('debugprint(foo, bar)', 'string', 'exec')
py import dis
py dis.disassemble(code)
  1   0 LOAD_NAME0 (debugprint)
  3 LOAD_CONST   0 ('foo')
  6 LOAD_CONST   1 ('bar')
  9 CALL_FUNCTION2
 12 POP_TOP
 13 LOAD_CONST   2 (None)
 16 RETURN_VALUE
   ## END INTERACTIVE SESSION ##
   After a few million executions of this superfluous
   comparison your cpu is losing faith in your ability to
   write logical code!

   py function.call() + false_comparison() == 'cycle burner'
   YOU BET YOU A$$ IT DOES!!


 Solution.

This realization has brought me to the conclusion that Python (and other 
languages) need a scoped print function. What is a scoped print function 
anyway?  Well what 

Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread Chris Angelico
On Mon, Jun 3, 2013 at 2:44 AM, Νικόλαος Κούρας nikos.gr...@gmail.com wrote:
 Τη Κυριακή, 2 Ιουνίου 2013 7:31:25 μ.μ. UTC+3, ο χρήστης Chris Angelico 
 έγραψε:
 On Mon, Jun 3, 2013 at 2:21 AM, Νικόλαος Κούρας nikos.gr...@gmail.com 
 wrote:

  Paying for someone to just remove a dash to get the script working is too 
  much to ask for

 One dash: 1c
 Knowing where to remove it: $99.99
 Total bill: $100.00

 Knowing that it ought really to be utf8mb4 and giving hints that th
 docs should be read rather than just taking this simple example and
 plugging it in: Priceless.

 I agree.
 So how much to solve this issue too Chris?
 And would you spare me the charge for the dash(-) problem which you pointed 
 out and solved? :-)

A programmer chooses his own clients, and you are the Atherton Wing to
my Inara Serra.

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


Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread Νικόλαος Κούρας
Τη Κυριακή, 2 Ιουνίου 2013 8:05:32 μ.μ. UTC+3, ο χρήστης Chris Angelico έγραψε:

 A programmer chooses his own clients, and you are the Atherton Wing to 
 my Inara Serra.

You might want to explain this mystique call-name you inprovised for me.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: PyWart: The problem with print

2013-06-02 Thread Chris Angelico
On Mon, Jun 3, 2013 at 3:04 AM, Rick Johnson
rantingrickjohn...@gmail.com wrote:
  * Woefully inadequate because: Switching on or off the debug
messages is only valid in the current module that the
function was imported. What if you want to kill all
debugprint messages EVERYWHERE? Do you really want to edit
debug = BOOLEAN in every source file OR do something
stupid like import debugprint and edit the DEBUG constant
OR even dumber, edit the debugprint source code? GAWD NO!

Easy fix to this one. Instead of copying and pasting debugprint into
everything, have it in a module and import it everywhere. Then the
debug flag will be common to them all.

Oh, and you probably want to add **kwargs to debugprint, because the
print function does a lot more than sys.stdout.write does:

 print(1,2,3,4,sep='#')
1#2#3#4

  * But even if you are willing to cope with all the switch-
on-and-off nonsense, are you willing to have you code
slowed by numerous calls to a dead function containing a
comparison that will always be false?

Hmm. Could be costly. Hey, you know, Python has something for testing that.

 timeit.timeit('debugprint(asdf)','def debugprint(*args):\n\tif not DEBUG: 
 return\n\tprint(*args)\nDEBUG=False',number=100)
0.5838018519113444

That's roughly half a second for a million calls to debugprint().
That's a 580ns cost per call. Rather than fiddle with the language,
I'd rather just take this cost. Oh, and there's another way, too: If
you make the DEBUG flag have effect only on startup, you could write
your module thus:

if DEBUG:
  debugprint=print
else:
  def debugprint(*args,**kwargs):
pass

So you can eliminate part of the cost there, if it matters to you. If
a half-microsecond cost is going to be significant to you, you
probably should be looking at improving other areas, maybe using
ctypes/cython, or possibly playing with the new preprocessor tricks
that have been being discussed recently. There's really no need to
change the language to solve one specific instance of this problem.

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


Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread Michael Torrie
On 06/02/2013 11:12 AM, Νικόλαος Κούρας wrote:
 Τη Κυριακή, 2 Ιουνίου 2013 8:05:32 μ.μ. UTC+3, ο χρήστης Chris Angelico 
 έγραψε:
 
 A programmer chooses his own clients, and you are the Atherton Wing to 
 my Inara Serra.
 
 You might want to explain this mystique call-name you inprovised for me?

Maybe you could research it a bit.

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


Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread Chris Angelico
On Mon, Jun 3, 2013 at 3:12 AM, Νικόλαος Κούρας nikos.gr...@gmail.com wrote:
 Τη Κυριακή, 2 Ιουνίου 2013 8:05:32 μ.μ. UTC+3, ο χρήστης Chris Angelico 
 έγραψε:

 A programmer chooses his own clients, and you are the Atherton Wing to
 my Inara Serra.

 You might want to explain this mystique call-name you inprovised for me.

Or you could do a quick web search, like we keep telling you to do for
other things. I'm pretty sure Google is familiar with both those
names, and will point you to a mighty fine shindig.

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


Re: PyWart: The problem with print

2013-06-02 Thread Andrew Berg
I don't think you go far enough. Obviously we need way more flexibility. A 
simple on/off is okay for some things, but a finer granularity
would be really helpful because some things are more important than others. And 
why stop at stdout/stderr? We need to add a consistent way
to output these messages to files too in case we need to reference them again. 
The messages should have a consistent format as well. Why add
the same information to each message when it would be much simpler to simply 
define a default format and insert the real meat of the message
into it? It really seems like we should already have something like this. 
Hmm.
-- 
CPython 3.3.2 | Windows NT 6.2.9200 / FreeBSD 9.1
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Too many python installations. Should i remove them all and install the latest?

2013-06-02 Thread Michael Torrie
On 06/01/2013 01:51 AM, Νικόλαος Κούρας wrote:
 Τη Σάββατο, 1 Ιουνίου 2013 9:18:26 π.μ. UTC+3, ο χρήστης Chris
 Angelico έγραψε:
 
 That would require that the repo have a 3.3.2 build in it. I don't 
 know the Red Hat / CentOS policies there, but I know Debian stable
  wouldn't have anything so new - it takes time to test things.
 
 Is there a way to change to some repo that contain the latest python
 3.3.2 to yo yum it?

Let me brutally blunt here, nick:  have you googled for the answer or
are you just expecting us to do all your research for you?

I googled for this out of curiousity and found at least one third-party
repo that did have Python 3.3.x in it for CentOS/RHEL 6.4.  I'll give
you a free hint about finding it: sometimes you have to add RHEL to the
search term as well as CentOS, since CentOS is a free clone of RHEL.

From now on, Νικόλαος, before asking a question like this on this list,
please state what google search terms you used, what you found, and why
the google searches did not turn up the information you seek.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: PyWart: The problem with print

2013-06-02 Thread Chris Angelico
On Mon, Jun 3, 2013 at 3:30 AM, Andrew Berg robotsondr...@gmail.com wrote:
 I don't think you go far enough. Obviously we need way more flexibility. A 
 simple on/off is okay for some things, but a finer granularity
 would be really helpful because some things are more important than others. 
 And why stop at stdout/stderr? We need to add a consistent way
 to output these messages to files too in case we need to reference them 
 again. The messages should have a consistent format as well. Why add
 the same information to each message when it would be much simpler to simply 
 define a default format and insert the real meat of the message
 into it? It really seems like we should already have something like this. 
 Hmm.

You have a really good point there. I'm sure I could think of a really
good way to do all this, but I'm stuck... it's like there's a log jam
in my head...

(Okay, maybe I should go to bed now, my puns are getting worse.
Considering how late it is, I'll probably sleep like a log.)

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


Re: PyWart: The problem with print

2013-06-02 Thread Dan Sommers
On Mon, 03 Jun 2013 03:20:52 +1000, Chris Angelico wrote:

 On Mon, Jun 3, 2013 at 3:04 AM, Rick Johnson
 rantingrickjohn...@gmail.com wrote:
  * Woefully inadequate because: Switching on or off the debug
messages is only valid in the current module that the function was
imported. What if you want to kill all debugprint messages
EVERYWHERE? Do you really want to edit debug = BOOLEAN in every
source file OR do something stupid like import debugprint and edit
the DEBUG constant OR even dumber, edit the debugprint source
code? GAWD NO!
 
 Easy fix to this one. Instead of copying and pasting debugprint into
 everything, have it in a module and import it everywhere. Then the
 debug flag will be common to them all.

Or use the logging module.  It's easy to get going quickly (just call
logging.basicConfig at startup time), and with a little care and
feeding, you can control the output in more ways than can fit into the
margin.

Oh, yeah, I'm sure it introduces some overhead.  So does everything
else.

  * But even if you are willing to cope with all the switch-
on-and-off nonsense, are you willing to have you code slowed by
numerous calls to a dead function containing a comparison that
will always be false?
 
 Hmm. Could be costly ...

Yeah, all that time that I have left over and have to find something
else to do instead of debugging my program.  What a waste!  ;-)

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


Re: PyWart: The problem with print

2013-06-02 Thread Rick Johnson
On Jun 2, 12:20 pm, Chris Angelico ros...@gmail.com wrote:
 On Mon, Jun 3, 2013 at 3:04 AM, Rick Johnson
   * Woefully inadequate because: Switching on or off the debug
 messages is only valid in the current module that the
 function was imported. What if you want to kill all
 debugprint messages EVERYWHERE? Do you really want to edit
 debug = BOOLEAN in every source file OR do something
 stupid like import debugprint and edit the DEBUG constant
 OR even dumber, edit the debugprint source code? GAWD NO!
 Easy fix to this one. Instead of copying and pasting debugprint into
 everything, have it in a module and import it everywhere. Then the
 debug flag will be common to them all.

Ignoring the fact that you have import everywhere, what if you want
to stop ALL debug messages? If you import everywhere to get them,
you then have to edit everywhere to stop them.

 Oh, and you probably want to add **kwargs to debugprint, because the
 print function does a lot more than sys.stdout.write does:

The kwargs to print are not germane to the issue, however noobs may be
watching so glad you pointed that one out.

 [...]
 py timeit.timeit('debugprint(asdf) [...]
 0.5838018519113444

 That's roughly half a second for a million calls to debugprint().
 That's a 580ns cost per call. Rather than fiddle with the language,
 I'd rather just take this cost.

I never purposely inject ANY superfluous cycles in my code except in
the case of testing or development. To me it's about professionalism.
Let's consider a thought exercise shall we?

  Imagine your an auto mechanic. You customer brings in his
  car and asks you to make some repairs. You make the
  repairs but you also adjust the air/fuel ratio to run
  rich (meaning the vehicle will get less MPG). Do you
  still pat yourself on the back and consider you've done a
  professional job?

I would not! However, you're doing the same thing as the mechanic when
your code executes superflouos calls and burns cycles for no other
reason than pure laziness. CPU's are not immortal you know, they have
a lifetime. Maybe you don't care about destroying someone's CPU,
however, i do!

I just wonder how many of your creations (aka: monstrosities!) are
burning cycles this very minute!

 [...]
 So you can eliminate part of the cost there, if it matters to you. If
 a half-microsecond cost is going to be significant to you, you
 probably should be looking at improving other areas, maybe using
 ctypes/cython, or possibly playing with the new preprocessor tricks
 that have been being discussed recently. There's really no need to
 change the language to solve one specific instance of this problem.

That's like suggesting to the poor fella who's MPG is suffering
(because of your incompetent adjustments!) to buy fuel additives to
compensate for the loss of MPG. Why should he incur costs because you
are incompetent?

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


Re: PyWart: The problem with print

2013-06-02 Thread Rick Johnson
On Sunday, June 2, 2013 12:49:02 PM UTC-5, Dan Sommers wrote:
 On Mon, 03 Jun 2013 03:20:52 +1000, Chris Angelico wrote:
  On Mon, Jun 3, 2013 at 3:04 AM, Rick Johnson
 [...]
 Or use the logging module.  It's easy to get going quickly
 (just call logging.basicConfig at startup time), and with
 a little care and feeding, you can control the output in
 more ways than can fit into the margin. Oh, yeah, I'm sure
 it introduces some overhead.  So does everything else.

I hate log files, at least during development or testing. I prefer to debug on 
the command line or using my IDE. Log files are for release time, not 
development.


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


Arp cache poisoning using scapy

2013-06-02 Thread bakbakinfo123

I am trying to get the arp cache poisoning working with scapy and python but 
having problems

The python script itself is very simple:
root@ubuntu:/home/joker/Downloads/scapy-2.2.0/scripts# cat arp_poison.py 
#!/usr/bin/env python

import sys

from scapy.all import *

arpcachepoison(00:22:fa:98:5e:04, 192.168.1.131)

The error I am getting is illegal IP address. How do I fix it?



root@ubuntu:/home/joker/Downloads/scapy-2.2.0/scripts# python arp_poison.py
WARNING: No route found for IPv6 destination :: (no default route?)
Traceback (most recent call last):
  File arp_poison.py, line 7, in module
arpcachepoison(00:22:fa:98:5e:04, 192.168.1.131)
  File /usr/lib/python2.7/dist-packages/scapy/layers/l2.py, line 440, in 
arpcachepoison
tmac = getmacbyip(target)
  File /usr/lib/python2.7/dist-packages/scapy/layers/l2.py, line 53, in 
getmacbyip
tmp = map(ord, inet_aton(ip))
socket.error: illegal IP address string passed to inet_aton
root@ubuntu:/home/joker/Downloads/scapy-2.2.0/scripts# 
root@ubuntu:/home/joker/Downloads/scapy-2.2.0/scripts# 
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread Νικόλαος Κούρας
Τη Κυριακή, 2 Ιουνίου 2013 8:21:46 μ.μ. UTC+3, ο χρήστης Chris Angelico έγραψε:

 Or you could do a quick web search, like we keep telling you to do for
 other things. I'm pretty sure Google is familiar with both those
 names, and will point you to a mighty fine shindig.


I see, nice one! :)
I though ti was somehtign you invented yourself :)

Now, as yo my initial question, can you suggest anything please?
I dont know what else to try.

The whole subprocess fails when it has to deal with a greek lettered filename.
I just dont get it...
I didn't ask for metrites.py to open via subprocess the greek filename, i just 
told metrites.py to call files.py which in turn tries to open that greek 
filename.

Thats indirectly call...
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: PyWart: The problem with print

2013-06-02 Thread Steven D'Aprano
On Sun, 02 Jun 2013 10:04:00 -0700, Rick Johnson wrote:

 Many
 languages provide a function, method, or statement by which users can
 write easily to stdout, and Python is no exception with it's own print
 function. However, whilst writing to stdout via print is slightly less
 verbose than calling the write method of sys.stdout, we don't really
 gain much from this function except a few keystrokes... is this ALL
 print should be? A mere syntactical sugar?

Perhaps you should read the docs before asking rhetorical questions, 
because the actual answer is, No, print is not mere syntactical sugar 
saving a few keystrokes.


Help on built-in function print in module builtins:

print(...)
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file:  a file-like object (stream); defaults to the current
   sys.stdout.
sep:   string inserted between values, default a space.
end:   string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.


Still not powerful enough for you? Easily fixed:

import builtins

# The higher the verbosity, the more messages are printed.
verbosity = 2

def print(*args, level=1, **kwargs):
if level = verbosity:
builtins.print(*args, **kwargs)


print(debug message, level=4)  # Only prints if verbosity = 4
print(info message, level=3)
print(warning message, level=2)
print(critical message, level=1)  # Only prints if verbosity = 1


Trivial enough to embed in each module that needs it, in which case each 
module can have its own verbosity global variable. Or you can put it in a 
helper module, with a single, application-wide global variable, and use 
it like this:

import verbose_print
print = verbose_print.print
verbose_print.verbosity = 3
print(some message, level=4)

Of course, in practice you would set the verbosity according to a command 
line switch, or an environment variable, or a config file, and not hard 
code it in your source code.


 I've found that many subtle bugs are caused by not limiting the inputs
 to sane values (or types). And with Python's duct typing 

Nothing worse than having pythons roaming through your ducts, eating your 
ducks.


 and implicit
 casting to Boolean, you end up with all sorts of misleading things
 happening! Maybe you're testing for truth values and get a string
 instead; which screws everything up!!!

Only if you're a lousy programmer who doesn't understand Python's truth 
model.


 A wise programmer may think he's solved the problem by writing a
 function called debugprint that looks like this:
 
 def debugprint(*args):
 if DEBUG == True:
 print(*args)

No no no, that's not how you do it. It should be:

if DEBUG == True == True:

Wait, no, I got that wrong. It should be:

if DEBUG == True == True == True:

Hang on, I've nearly got it!

if DEBUG == True == True == True == True:

Or, you could program like a professional, and say:

if DEBUG:

By the way, why is DEBUG a constant? Doesn't that defeat the purpose?


 However that solution is at best woefully inadequate and at worse a
 cycle burner!

Certainly you don't want to be burning cycles. Imagine the pollution from 
the burning rubber tyres!


  * Woefully inadequate because: Switching on or off the debug
messages is only valid in the current module that the function was
imported. What if you want to kill all debugprint messages
EVERYWHERE? 

You start by learning how Python works, and not making woefully incorrect 
assumptions.


Do you really want to edit debug = BOOLEAN in every
source file 

Python does not work that way.


OR do something stupid like import debugprint and edit
the DEBUG constant 

Heaven forbid that people do something that actually works the way Python 
is designed to work.


OR even dumber, edit the debugprint source code?
GAWD NO!

  * But even if you are willing to cope with all the switch-
on-and-off nonsense, are you willing to have you code slowed by
numerous calls to a dead function containing a comparison that will
always be false?

And of course you have profiled your application, and determined that the 
bottleneck in performance is the calls to debugprint, because otherwise 
you are wasting your time and ours with premature optimization.

Life is hard. Sometimes you have to choose between performance and 
debugging.


 This
 realization has brought me to the conclusion that Python (and other
 languages) need a scoped print function. What is a scoped print
 function anyway?  Well what i am proposing is that Python include the
 following debug switches in the language:
 
   --
Switch: __GLOBALDEBUG__
   --
   Global switching allows a programmer to instruct the interpreter to
   IGNORE all print functions or to EVALUATE all 

Re: PyWart: The problem with print

2013-06-02 Thread Steven D'Aprano
On Sun, 02 Jun 2013 11:09:12 -0700, Rick Johnson wrote:

 Maybe you don't care about destroying someone's CPU, however, i do!

And yet here you are, destroying millions of people's CPUs by sending 
them email or usenet messages filled with garbage.


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


Re: Output from to_bytes

2013-06-02 Thread Mok-Kong Shen

Am 28.05.2013 17:35, schrieb Grant Edwards:

On 2013-05-26, Mok-Kong Shen mok-kong.s...@t-online.de wrote:

I don't understand why with the code:

 for k in range(8,12,1):
   print(k.to_bytes(2,byteorder='big'))

one gets the following output:

 b'\x00\x08'
 b'\x00\t'
 b'\x00\n'
 b'\x00\x0b'

I mean the 2nd and 3rd should be b'\x00\x09' and b'x00\x0a'.
Anyway, how could I get the output in the forms I want?


Well, it would help if you told us what output form you want.


As I stated, I like the 2nd and 3rd be b'\x00\x09' and b'\x00\x0a'
respectively. This is what would expeacted to be in a hexadecimal
notation IMHO in other PLs.

M. K. Shen

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


Re: Arp cache poisoning using scapy

2013-06-02 Thread Dan Stromberg
On Sun, Jun 2, 2013 at 11:19 AM, bakbakinfo...@gmail.com wrote:


 I am trying to get the arp cache poisoning working with scapy and python
 but having problems

 The python script itself is very simple:
 root@ubuntu:/home/joker/Downloads/scapy-2.2.0/scripts# cat arp_poison.py
 #!/usr/bin/env python

 import sys

 from scapy.all import *

 arpcachepoison(00:22:fa:98:5e:04, 192.168.1.131)

 The error I am getting is illegal IP address. How do I fix it?


It looks to me like arpcachepoison wants two IP's,  not a MAC and an IP.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: How to get an integer from a sequence of bytes

2013-06-02 Thread Mok-Kong Shen

Am 30.05.2013 21:22, schrieb Ned Batchelder:


On 5/30/2013 2:26 PM, Mok-Kong Shen wrote:

Am 27.05.2013 17:30, schrieb Ned Batchelder:

On 5/27/2013 10:45 AM, Mok-Kong Shen wrote:

From an int one can use to_bytes to get its individual bytes,
but how can one reconstruct the int from the sequence of bytes?


The next thing in the docs after int.to_bytes is int.from_bytes:
http://docs.python.org/3.3/library/stdtypes.html#int.from_bytes


I am sorry to have overlooked that. But one thing I yet wonder is why
there is no direct possibilty of converting a byte to an int in [0,255],
i.e. with a constrct int(b), where b is a byte.



Presumably you want this to work:

  int(b'\x03')
 3

But you also want this to work:

  int(b'7')
 7

These two interpretations are incompatible.  If b'\x03' becomes 3, then
shouldn't b'\x37' become 55?  But b'\x37' is b'7', and you want that to
be 7.


b'7' is the byte with the character 7 in a certain code, so that's
ok. In other PLs one assigns an int to a byte, with that int in either
decimal notation or hexadecimal notation, or else one assigns a
character to it, in which case it gets the value of the character
in a certain code. What I don't yet understand is why Python is
apprently different from other PLs in that point in not allowing direct
coersion of a byte to an int.

M. K. Shen


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


RE: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread Carlos Nepomuceno
Hey guys! Come on!!!

Repeat with me: Googsfraba!

http://www.youtube.com/watch?v=Fscuv4PIjws

lol


 To: python-list@python.org
 From: breamore...@yahoo.co.uk
 Subject: Re: Changing filenames from Greeklish = Greek (subprocess complain)
 Date: Sun, 2 Jun 2013 16:24:10 +0100

 On 02/06/2013 16:04, Νικόλαος Κούρας wrote:
 Τη Κυριακή, 2 Ιουνίου 2013 5:51:31 μ.μ. UTC+3, ο χρήστης Mark Lawrence 
 έγραψε:

 You've obviously arrived very late at the party.

 Apart from the funny commenting, can you for once contribute towards to an 
 actual solution or this is the best you can do to prove yourself smart in 
 here by talking down on me?


 The only thing I'll contribute is that if you're looking to run a
 commercial venture, you wouldn't be the last on my list for services,
 you'd never get on it.

 Further I'll point out that you never give any indication at all of ever
 doing any research before you ask a question. You simply fire off email
 after email in the hope that you'll get a response. Luckily for you a
 substantial number of people have come to your rescue. Unfortunately
 for you, you've exhausted the patience of a number who might well have
 been extremely helpful *IF* you'd put in a little effort. That is just
 too much to ask of course.

 --
 Steve is going for the pink ball - and for those of you who are
 watching in black and white, the pink is next to the green. Snooker
 commentator 'Whispering' Ted Lowe.

 Mark Lawrence

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


Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread nagia . retsina
Τη Κυριακή, 2 Ιουνίου 2013 10:44:05 μ.μ. UTC+3, ο χρήστης Carlos Nepomuceno 
έγραψε:

 Hey guys! Come on!!!
 Repeat with me: Googsfraba!

You are not and Jack Nicholson and this is not an Anger Management lesson 
(which was a great movie btw).

I'am the one that i should chant that mantra because instead of receiving 
helpfull replies i get that kind of responses.

Now, is anyone willing to help me on this please?
I also accept hints on how to solve this!
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: How to get an integer from a sequence of bytes

2013-06-02 Thread Chris Angelico
On Mon, Jun 3, 2013 at 5:25 AM, Mok-Kong Shen mok-kong.s...@t-online.de wrote:
 b'7' is the byte with the character 7 in a certain code, so that's
 ok. In other PLs one assigns an int to a byte, with that int in either
 decimal notation or hexadecimal notation, or else one assigns a
 character to it, in which case it gets the value of the character
 in a certain code. What I don't yet understand is why Python is
 apprently different from other PLs in that point in not allowing direct
 coersion of a byte to an int.

It does. Just subscript it:

 b'7'[0]
55

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


Re: PyWart: The problem with print

2013-06-02 Thread Chris Angelico
On Mon, Jun 3, 2013 at 4:09 AM, Rick Johnson
rantingrickjohn...@gmail.com wrote:
 On Jun 2, 12:20 pm, Chris Angelico ros...@gmail.com wrote:
 On Mon, Jun 3, 2013 at 3:04 AM, Rick Johnson
   * Woefully inadequate because: Switching on or off the debug
 messages is only valid in the current module that the
 function was imported. What if you want to kill all
 debugprint messages EVERYWHERE? Do you really want to edit
 debug = BOOLEAN in every source file OR do something
 stupid like import debugprint and edit the DEBUG constant
 OR even dumber, edit the debugprint source code? GAWD NO!
 Easy fix to this one. Instead of copying and pasting debugprint into
 everything, have it in a module and import it everywhere. Then the
 debug flag will be common to them all.

 Ignoring the fact that you have import everywhere, what if you want
 to stop ALL debug messages? If you import everywhere to get them,
 you then have to edit everywhere to stop them.

Example:

## debugprint.py
DEBUG = True
def debugprint(*a,**kw):
  if DEBUG:
return print(*a,**kw)

## every other module
from debugprint import debugprint
debugprint(I got imported!)
def foo():
  debugprint(I got foo'd!)

See how many places you need to edit to change the DEBUG flag? You can
even do it at run time with this version of the code:

## toggle debugging
import debugprint
debugprint.DEBUG = not debugprint.DEBUG

And, as several others have pointed out, this is kinda sorta what the
logging module does, only it does it better. Same method; you import
the same module everywhere. It is THE SAME module.

 That's roughly half a second for a million calls to debugprint().
 That's a 580ns cost per call. Rather than fiddle with the language,
 I'd rather just take this cost.

 I never purposely inject ANY superfluous cycles in my code except in
 the case of testing or development. To me it's about professionalism.

Why do you use Python? Clearly the only professional option is to use
raw assembler. Or possibly you could justify C on the grounds of
portability.

 Let's consider a thought exercise shall we?

   Imagine your an auto mechanic. You customer brings in his
   car and asks you to make some repairs. You make the
   repairs but you also adjust the air/fuel ratio to run
   rich (meaning the vehicle will get less MPG). Do you
   still pat yourself on the back and consider you've done a
   professional job?

 I would not! However, you're doing the same thing as the mechanic when
 your code executes superflouos calls and burns cycles for no other
 reason than pure laziness. CPU's are not immortal you know, they have
 a lifetime. Maybe you don't care about destroying someone's CPU,
 however, i do!

Better analogy: When you build a car, you incorporate a whole bunch of
gauges and indicators. They clutter things up, and they're extra
weight to carry; wouldn't the car get more MPG (side point: can I have
my car get more OGG instead? I like open formats) if you omit them?

 I just wonder how many of your creations (aka: monstrosities!) are
 burning cycles this very minute!

Every one that's written in a high level language. So that's Yosemite,
Minstrel Hall, Tisroc, KokoD, RapidSend/RapidRecv, and Vizier. And
that's just the ones that I've personally created and that I *know*
are currently running (and that I can think of off-hand). They're
wasting CPU cycles dealing with stuff that I, the programmer, now
don't have to. Now let's see. According to my server, right now, load
average is 0.21 - of a single-core Intel processor that was mid-range
back in 2009. And that's somewhat higher-than-normal load, caused by
some sort of usage spike a few minutes ago (and is dropping);
normally, load average is below 0.10.

At what point would it be worth my effort to rewrite all that code to
eliminate waste? Considering that I could build a new server for a few
hundred (let's say $1000 to be generous, though the exact price will
depend on where you are), or rent one in a top-quality data center for
$40-$55/month and not have to pay for electricity or internet, any
rewrite would need to take less than two days of my time to be
worthwhile. Let 'em burn cycles; we can always get more.

 So you can eliminate part of the cost there, if it matters to you. If
 a half-microsecond cost is going to be significant to you, you
 probably should be looking at improving other areas, maybe using
 ctypes/cython, or possibly playing with the new preprocessor tricks
 that have been being discussed recently. There's really no need to
 change the language to solve one specific instance of this problem.

 That's like suggesting to the poor fella who's MPG is suffering
 (because of your incompetent adjustments!) to buy fuel additives to
 compensate for the loss of MPG. Why should he incur costs because you
 are incompetent?

He's welcome to push a wheelbarrow if he doesn't want the overhead of
a car. The car offers convenience, but at a cost. This is an eternal
tradeoff.


Re: PyWart: The problem with print

2013-06-02 Thread Chris Angelico
On Mon, Jun 3, 2013 at 4:58 AM, Steven D'Aprano
steve+comp.lang.pyt...@pearwood.info wrote:
 I've found that many subtle bugs are caused by not limiting the inputs
 to sane values (or types). And with Python's duct typing

 Nothing worse than having pythons roaming through your ducts, eating your
 ducks.

Steven, you misunderstand. It's more about using your ducts to type
code. Have you seen the Mythbusters episode where they're trying to
enter a building surreptitiously? (Crimes and Mythdemeanors 1, I
think, if you want to look it up.) At one point, we can CLEARLY hear
one of the hosts, moving along a duct, *typing*. We can hear the
click-click-click of giant keys.

Hah. Knew I could trust Youtube. http://www.youtube.com/watch?v=5LovGVrrIuk

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


Re: PyWart: The problem with print

2013-06-02 Thread Ned Batchelder


On 6/2/2013 2:18 PM, Rick Johnson wrote:

On Sunday, June 2, 2013 12:49:02 PM UTC-5, Dan Sommers wrote:

On Mon, 03 Jun 2013 03:20:52 +1000, Chris Angelico wrote:

On Mon, Jun 3, 2013 at 3:04 AM, Rick Johnson

[...]
Or use the logging module.  It's easy to get going quickly
(just call logging.basicConfig at startup time), and with
a little care and feeding, you can control the output in
more ways than can fit into the margin. Oh, yeah, I'm sure
it introduces some overhead.  So does everything else.

I hate log files, at least during development or testing. I prefer to debug on 
the command line or using my IDE. Log files are for release time, not 
development.

Rick, you should give the logging module a try.  The default 
configuration from basicConfig is that the messages all go to stderr, so 
no log files to deal with.  And it's configurable in the ways you want, 
plus a lot more.


--Ned.


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


Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread Chris Angelico
On Mon, Jun 3, 2013 at 5:51 AM,  nagia.rets...@gmail.com wrote:
 Now, is anyone willing to help me on this please?
 I also accept hints on how to solve this!

Hints I can do. Here, I've set up a scavenger hunt for you. You'll go
to a number of web sites that I nominate, type in keywords, and hit
enter.

The first web site is Google: www.google.com
Type in: suexec

The second web site is DuckDuckGo: www.duckduckgo.com
Type in: paid apache technical support

The third web site is ESR Question (not its official name):
http://www.catb.org/esr/faqs/smart-questions.html
Unlike the other two, this one is so smart (it says it right in the
URL!) that it doesn't need you to type anything in!

Read through these pages. You will find clues scattered throughout;
some of them will be solved by typing them into one of the first two
web sites. When you complete the scavenger hunt, you will find your
prize.

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


Re: Arp cache poisoning using scapy

2013-06-02 Thread bakbakinfo123
On Sunday, June 2, 2013 11:19:46 AM UTC-7, bakbak...@gmail.com wrote:
 I am trying to get the arp cache poisoning working with scapy and python but 
 having problems
 
 
 
 The python script itself is very simple:
 
 root@ubuntu:/home/joker/Downloads/scapy-2.2.0/scripts# cat arp_poison.py 
 
 #!/usr/bin/env python
 
 
 
 import sys
 
 
 
 from scapy.all import *
 
 
 
 arpcachepoison(00:22:fa:98:5e:04, 192.168.1.131)
 
 
 
 The error I am getting is illegal IP address. How do I fix it?
 
 
 
 
 
 
 
 root@ubuntu:/home/joker/Downloads/scapy-2.2.0/scripts# python arp_poison.py
 
 WARNING: No route found for IPv6 destination :: (no default route?)
 
 Traceback (most recent call last):
 
   File arp_poison.py, line 7, in module
 
 arpcachepoison(00:22:fa:98:5e:04, 192.168.1.131)
 
   File /usr/lib/python2.7/dist-packages/scapy/layers/l2.py, line 440, in 
 arpcachepoison
 
 tmac = getmacbyip(target)
 
   File /usr/lib/python2.7/dist-packages/scapy/layers/l2.py, line 53, in 
 getmacbyip
 
 tmp = map(ord, inet_aton(ip))
 
 socket.error: illegal IP address string passed to inet_aton
 
 root@ubuntu:/home/joker/Downloads/scapy-2.2.0/scripts# 
 
 root@ubuntu:/home/joker/Downloads/scapy-2.2.0/scripts#

This works. Although it shouldn't.

The documentation should be changed to reflect this. As per document:

arpcachepoison
arpcachepoison(target,victim,interval=60)
Poison target’s cache with (your MAC,victim’s IP)

It makes more sense to assign a MAC to the vitim ip to falsly claim and poison 
the network so ideally the documentation is correct the the command does not 
work as such. However the command with 2 IPs does the thing correctly. So 
change documentation? How do one go about it?

Also all the items in () need to have  or it gives syntax error. Is that how 
it should work?
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Arp cache poisoning using scapy

2013-06-02 Thread bakbakinfo123
On Sunday, June 2, 2013 11:19:46 AM UTC-7, bakbak...@gmail.com wrote:
 I am trying to get the arp cache poisoning working with scapy and python but 
 having problems
 
 
 
 The python script itself is very simple:
 
 root@ubuntu:/home/joker/Downloads/scapy-2.2.0/scripts# cat arp_poison.py 
 
 #!/usr/bin/env python
 
 
 
 import sys
 
 
 
 from scapy.all import *
 
 
 
 arpcachepoison(00:22:fa:98:5e:04, 192.168.1.131)
 
 
 
 The error I am getting is illegal IP address. How do I fix it?
 
 
 
 
 
 
 
 root@ubuntu:/home/joker/Downloads/scapy-2.2.0/scripts# python arp_poison.py
 
 WARNING: No route found for IPv6 destination :: (no default route?)
 
 Traceback (most recent call last):
 
   File arp_poison.py, line 7, in module
 
 arpcachepoison(00:22:fa:98:5e:04, 192.168.1.131)
 
   File /usr/lib/python2.7/dist-packages/scapy/layers/l2.py, line 440, in 
 arpcachepoison
 
 tmac = getmacbyip(target)
 
   File /usr/lib/python2.7/dist-packages/scapy/layers/l2.py, line 53, in 
 getmacbyip
 
 tmp = map(ord, inet_aton(ip))
 
 socket.error: illegal IP address string passed to inet_aton
 
 root@ubuntu:/home/joker/Downloads/scapy-2.2.0/scripts# 
 
 root@ubuntu:/home/joker/Downloads/scapy-2.2.0/scripts#

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


Re: Output from to_bytes

2013-06-02 Thread Ned Batchelder

On 6/2/2013 3:09 PM, Mok-Kong Shen wrote:

Am 28.05.2013 17:35, schrieb Grant Edwards:

On 2013-05-26, Mok-Kong Shen mok-kong.s...@t-online.de wrote:

I don't understand why with the code:

 for k in range(8,12,1):
   print(k.to_bytes(2,byteorder='big'))

one gets the following output:

 b'\x00\x08'
 b'\x00\t'
 b'\x00\n'
 b'\x00\x0b'

I mean the 2nd and 3rd should be b'\x00\x09' and b'x00\x0a'.
Anyway, how could I get the output in the forms I want?


Well, it would help if you told us what output form you want.


As I stated, I like the 2nd and 3rd be b'\x00\x09' and b'\x00\x0a'
respectively. This is what would expeacted to be in a hexadecimal
notation IMHO in other PLs.



When you print bytes, Python doesn't use hexadecimal notation.  It 
prints a Python bytes literal.  That literal will use printable 
characters like 'Q', or hex escapes like '\x00', or other escapes like 
'\n', depending on the character.   If you want hex output, you have to 
create it yourself, for example with the binascii module.


--Ned.


M. K. Shen



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


Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread Tim Delaney

 A programmer chooses his own clients, and you are the Atherton Wing to
 my Inara Serra.


I've just been watching this train wreck (so glad I didn't get involved at
the start) but I have to say - that's brilliant Chris. Thank you for
starting my week off so well.

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


Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread Tim Delaney
On 3 June 2013 09:10, Tim Delaney timothy.c.dela...@gmail.com wrote:

 A programmer chooses his own clients, and you are the Atherton Wing to
 my Inara Serra.


 I've just been watching this train wreck (so glad I didn't get involved at
 the start) but I have to say - that's brilliant Chris. Thank you for
 starting my week off so well.


And I just realised I missed a shiny opportunity to wrangle train job in
there ...

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


Re: Python #ifdef

2013-06-02 Thread Erik Max Francis

On 05/29/2013 08:05 AM, Chris Angelico wrote:

It's not a bad tool. I used it as a sort of PHP preprocessor, because
requirements at work had me wanting to have a source file defining a
PHP class and having an autogenerated section in the middle of that
class. PHP's 'include' directive doesn't work for that. Of course, had
we been using a better language, that wouldn't have been an issue (and
it stopped being an issue when we improved the design and stopped
using that class system, too, though I retained the makefile
directives about building .php.m4 - .php files). But still, GNU M4 is
a decent piece of technology.


Agreed.  The terror that most people feel when hearing m4 is because 
m4 was associated with sendmail, not because m4 was inherently awful. 
It has problems, but you'd only encounter them when doing something 
_very_ abstract.


--
Erik Max Francis  m...@alcyone.com  http://www.alcyone.com/max/
 San Jose, CA, USA  37 18 N 121 57 W  AIM/Y!M/Jabber erikmaxfrancis
  Substance is one of the greatest of our illusions.
   -- Sir Arthur Eddington
--
http://mail.python.org/mailman/listinfo/python-list


Re: PyWart: The problem with print

2013-06-02 Thread Jason Swails
On Sun, Jun 2, 2013 at 1:20 PM, Chris Angelico ros...@gmail.com wrote:


 Hmm. Could be costly. Hey, you know, Python has something for testing that.

  timeit.timeit('debugprint(asdf)','def debugprint(*args):\n\tif not
 DEBUG: return\n\tprint(*args)\nDEBUG=False',number=100)
 0.5838018519113444

 That's roughly half a second for a million calls to debugprint().
 That's a 580ns cost per call. Rather than fiddle with the language,
 I'd rather just take this cost. Oh, and there's another way, too: If
 you make the DEBUG flag have effect only on startup, you could write
 your module thus:


This is a slightly contrived demonstration... The time lost in a function
call is not just the time it takes to execute that function.  If it
consistently increases the frequency of cache misses then the cost is much
greater -- possibly by orders of magnitude if the application is truly
bound by the bandwidth of the memory bus and the CPU pipeline is almost
always saturated.

I'm actually with RR in terms of eliminating the overhead involved with
'dead' function calls, since there are instances when optimizing in Python
is desirable.  I actually recently adjusted one of my own scripts to
eliminate branching and improve data layout to achieve a 1000-fold
improvement in efficiency (~45 minutes to 0.42 s. for one example) --- all
in pure Python.  The first approach was unacceptable, the second is fine.
 For comparison, if I add a 'deactivated' debugprint call into the inner
loop (executed 243K times in this particular test), then the time of the
double-loop step that I optimized takes 0.73 seconds (nearly doubling the
duration of the whole step).  The whole program is too large to post here,
but the relevant code portion is shown below:

 i = 0
 begin = time.time()
 for mol in owner:
for atm in mol:
   blankfunc(Print i %d % i)
   new_atoms[i] = self.atom_list[atm]
   i += 1
 self.atom_list = new_atoms
 print Done in %f seconds. % (time.time() - begin)

from another module:

DEBUG = False

[snip]

def blankfunc(instring):
   if DEBUG:
  print instring

Also, you're often not passing a constant literal to the debug print --
you're doing some type of string formatting or substitution if you're
really inspecting the value of a particular variable, and this also takes
time.  In the test I gave the timings for above, I passed a string the
counter substituted to the 'dead' debug function.  Copy-and-pasting your
timeit experiment on my machine yields different timings (Python 2.7):

 import sys
 timeit.timeit('debugprint(asdf)','def debugprint(*args):\n\tif not
DEBUG: return\n\tsys.stdout.write(*args)\nDEBUG=False',number=100)
0.15644001960754395

which is ~150 ns/function call, versus ~1300 ns/function call.  And there
may be even more extreme examples, this is just one I was able to cook up
quickly.

This is, I'm sad to say, where my alignment with RR ends.  While I use
prints in debugging all the time, it can also become a 'crutch', just like
reliance on valgrind or gdb.  If you don't believe me, you've never hit a
bug that 'magically' disappears when you add a debugging print statement
;-).

The easiest way to eliminate these 'dead' calls is to simply comment-out
the print call, but I would be quite upset if the interpreter tried to
outsmart me and do it automagically as RR seems to be suggesting.  And if
you're actually debugging, then you typically only add a few targeted print
statements -- not too hard to comment-out.  If it is, and you're really
that lazy, then by all means add a new, greppable function call and use a
sed command to comment those lines out for you.

BTW: *you* in the above message refers to a generic person -- none of my
comments were aimed at anybody in particular

All the best,
Jason

P.S. All that said, I would agree with ChrisA's suggestion that the
overhead is negligible is most cases...
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Python #ifdef

2013-06-02 Thread Roy Smith
In article n4mdnzkiorrtrjbmnz2dnuvz5godn...@giganews.com,
 Erik Max Francis m...@alcyone.com wrote:

 On 05/29/2013 08:05 AM, Chris Angelico wrote:
  It's not a bad tool. I used it as a sort of PHP preprocessor, because
  requirements at work had me wanting to have a source file defining a
  PHP class and having an autogenerated section in the middle of that
  class. PHP's 'include' directive doesn't work for that. Of course, had
  we been using a better language, that wouldn't have been an issue (and
  it stopped being an issue when we improved the design and stopped
  using that class system, too, though I retained the makefile
  directives about building .php.m4 - .php files). But still, GNU M4 is
  a decent piece of technology.
 
 Agreed.  The terror that most people feel when hearing m4 is because 
 m4 was associated with sendmail

Aggghhh.  You had to go and dredge up those bad memories?  I hadn't 
thought about sendmail config files in years.  I'll probably never be 
able to get to sleep tonight.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Python #ifdef

2013-06-02 Thread Skip Montanaro
 The terror that most people feel when hearing m4 is because m4 was
associated with sendmail, not because m4 was inherently awful.

In fact, m4 made sendmail configs easier to maintain.

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


Issue converting to string to integer.

2013-06-02 Thread Fdama
Hi,

I was following an exercise in a book when I edited the code and came across 
something I did not get. Here is the relevant part of the code that works:

start=None  #initialise  
while start !=:  
start=input(\nStart: )

if start:
start=int(start)
finish=int(input(Finish: ))

print(word[,start,:,finish,] is, word[start:finish])

I then changed the code to this:

start=None  #initialise  
while start !=:  
start=int(input(\nStart: ))

if start:

finish=int(input(Finish: ))

print(word[,start,:,finish,] is, word[start:finish])

I combined the int conversion and the input on the same line, rather than to 
have two different statements. But  got an error message:

Traceback (most recent call last):
  File C:\Users\Faisal\Documents\python\pizza_slicer.py, line 23, in module
start=int(input(\nStart: ))
ValueError: invalid literal for int() with base 10: ''


Could someone tell me why I got this error message?

Thanks

 

  





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


Re: Issue converting to string to integer.

2013-06-02 Thread Dan Stromberg
On Sun, Jun 2, 2013 at 6:12 PM, Fdama fsd...@gmail.com wrote:

 Hi,

 I was following an exercise in a book when I edited the code and came
 across something I did not get. Here is the relevant part of the code that
 works:

 start=None  #initialise
 while start !=:
 start=input(\nStart: )

 if start:
 start=int(start)
 finish=int(input(Finish: ))

 print(word[,start,:,finish,] is, word[start:finish])

 I then changed the code to this:

 start=None  #initialise
 while start !=:
 start=int(input(\nStart: ))

 if start:

 finish=int(input(Finish: ))

 print(word[,start,:,finish,] is, word[start:finish])

 I combined the int conversion and the input on the same line, rather than
 to have two different statements. But  got an error message:

 Traceback (most recent call last):
   File C:\Users\Faisal\Documents\python\pizza_slicer.py, line 23, in
 module
 start=int(input(\nStart: ))
 ValueError: invalid literal for int() with base 10: ''


Converting an empty string to base 10 doesn't fly, so if you hit a blank
line on the input(), you get a bad conversion.  In the first version,
you're only converting to base 10 if the string is non-empty.  In the
second, you're attempting to convert irrespective.

BTW, I'm partial to:

if not start:
   continue

...but that's a stylistic thing.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Please help with Threading

2013-06-02 Thread Jurgens de Bruin
On Saturday, 18 May 2013 10:58:13 UTC+2, Jurgens de Bruin  wrote:
 This is my first script where I want to use the python threading module. I 
 have a large dataset which is a list of dict this can be as much as 200 
 dictionaries in the list. The final goal is a  histogram for each dict 16 
 histograms on a page ( 4x4 ) - this already works. 
 
 What I currently do is a create a nested list [ [ {}  ], [ {} ] ] each inner 
 list contains 16 dictionaries, thus each inner list is a single page of 16 
 histograms. Iterating over the outer-list  and creating the graphs takes to 
 long. So I would like multiple inner-list to be processes simultaneously and 
 creating the graphs in parallel. 
 
 I am trying to use the python threading for this. I create 4 threads loop 
 over the outer-list and send a inner-list to the thread. This seems to work 
 if my nested lists only contains 2 elements - thus less elements than 
 threads. Currently the scripts runs and then seems to get hung up. I monitor 
 the resource  on my mac and python starts off good using 80% and when the 
 4-thread is created the CPU usages drops to 0%. 
 
 
 
 My thread creating is based on the following : 
 http://www.tutorialspoint.com/python/python_multithreading.htm
 
 
 
 Any help would be create!!!

Thanks to all for the discussion/comments on threading, although I have not 
been commenting I have been following.  I have learnt a lot and I am still 
reading up on everything mentioned. Thanks again
Will see how I am going to solve my senario. 
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Issue converting to string to integer.

2013-06-02 Thread Dan Sommers
On Sun, 02 Jun 2013 18:12:33 -0700, Fdama wrote:

 I combined the int conversion and the input on the same line, rather
 than to have two different statements. But got an error message:

 Traceback (most recent call last):
   File C:\Users\Faisal\Documents\python\pizza_slicer.py, line 23, in 
 module
 start=int(input(\nStart: ))
 ValueError: invalid literal for int() with base 10: ''
 
 Could someone tell me why I got this error message?

The difference is what used to happen in between the input and the
conversion.  In the first version, the if statement prevents the
conversion from happening when there is no input.  In the second
version, though, python tries to do the conversion with no input, and
fails.

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


Re: PyWart: The problem with print

2013-06-02 Thread Chris Angelico
On Mon, Jun 3, 2013 at 10:16 AM, Jason Swails jason.swa...@gmail.com wrote:
 Copy-and-pasting your timeit experiment on my machine yields different
 timings (Python 2.7):

 import sys
 timeit.timeit('debugprint(asdf)','def debugprint(*args):\n\tif not
 DEBUG: return\n\tsys.stdout.write(*args)\nDEBUG=False',number=100)
 0.15644001960754395

 which is ~150 ns/function call, versus ~1300 ns/function call.  And there
 may be even more extreme examples, this is just one I was able to cook up
 quickly.

The exact time will of course vary enormously. My point still would
stand at 1300ns; it's still extremely low compared to many other
overheads.

 This is, I'm sad to say, where my alignment with RR ends.  While I use
 prints in debugging all the time, it can also become a 'crutch', just like
 reliance on valgrind or gdb.  If you don't believe me, you've never hit a
 bug that 'magically' disappears when you add a debugging print statement
 ;-).

Yes, I've had situations like that. They are, however, EXTREMELY rare
compared to the times when a bug magically becomes shallow when you
add a debugging print!

 The easiest way to eliminate these 'dead' calls is to simply comment-out the
 print call, but I would be quite upset if the interpreter tried to outsmart
 me and do it automagically as RR seems to be suggesting.  And if you're
 actually debugging, then you typically only add a few targeted print
 statements -- not too hard to comment-out.  If it is, and you're really that
 lazy, then by all means add a new, greppable function call and use a sed
 command to comment those lines out for you.

Yes. I also have high hopes for some of the cool AST manipulation
that's being developed at the moment; it should be relatively easy to
have a simple flag that controls whether debugprint (btw, I'd shorten
the name) represents code or no-code.

But consider all the other things that you probably do in your Python
programs. Every time you reference something as module.name, you
require a lookup into the current module's  namespace to find the
module name, then into that module's namespace to find the object you
want. Snagging names as locals is a common optimization, but is far
from universally applied. Why? Because the readability cost just isn't
worth it. We use Python because it is fast enough, not because it
lets us squeeze every CPU cycle out of the code.

That said, I can often smoke Python with Pike, thanks to a few rather
cool optimizations (including looking up module names at compile time,
which reduces what I just said above). Maybe in the future some of
these optimizations will be done, I don't know. But for 99.9% of
Python scripts, you will *never* see the performance difference.

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


Re: Issue converting to string to integer.

2013-06-02 Thread alex23
On Jun 3, 11:12 am, Fdama fsd...@gmail.com wrote:
 I combined the int conversion and the input on the same line, rather than to 
 have two different statements. But  got an error message:

 Traceback (most recent call last):
   File C:\Users\Faisal\Documents\python\pizza_slicer.py, line 23, in 
 module
     start=int(input(\nStart: ))
 ValueError: invalid literal for int() with base 10: ''

 Could someone tell me why I got this error message?

When you were presented the 'Start' prompt, you hit Enter, which
causes `input` to return an empty string.  As it's passed directly
into `int`, which requires a valid string-representing-a-number, you
get the ValueError traceback, which shows you the failing input it
received: '' This doesn't happen in your original code, because your
condition `if start:` will fail on an empty string, and not try to
turn it into an int.

You don't want to wrap your `input` with an `int`. You want to test
the return result from `input` to ensure it can be coerced:

start = input(\nStart: ))
if start and start.isdigit():
start=int(start)
...
else:
start='' # set start to empty string so the while loop repeats

Here we check that all of the characters in the string `start` are
actually numbers before coercing. This is known as the Look Before
You Leap (LBYL) approach. Another approach is to catch the ValueError
exception:

start = input(\nStart: ))
try:
start = int(start)
except ValueError:
start = ''
if start:


This is known as Easier to for Ask Forgiveness than
Permission (EAFP). They both have their advantages. try/excepts tends
to be quicker if few exceptions are called, while an if/else will test
every time, although at this point it's not something you need to
overly concern yourself with. Go with whichever is easiest for you to
understand  extend.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Issue converting to string to integer.

2013-06-02 Thread Chris Angelico
On Mon, Jun 3, 2013 at 11:52 AM, Dan Sommers d...@tombstonezero.net wrote:
 On Sun, 02 Jun 2013 18:12:33 -0700, Fdama wrote:

 I combined the int conversion and the input on the same line, rather
 than to have two different statements. But got an error message:

 Traceback (most recent call last):
   File C:\Users\Faisal\Documents\python\pizza_slicer.py, line 23, in 
 module
 start=int(input(\nStart: ))
 ValueError: invalid literal for int() with base 10: ''

 Could someone tell me why I got this error message?

 The difference is what used to happen in between the input and the
 conversion.  In the first version, the if statement prevents the
 conversion from happening when there is no input.  In the second
 version, though, python tries to do the conversion with no input, and
 fails.

You could combine them in, as long as you're okay with blank input and
input of '0' being folded to the same:

start = int(input(\nStart: ) or 0)

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


Re: Python #ifdef

2013-06-02 Thread Chris Angelico
On Mon, Jun 3, 2013 at 9:57 AM, Erik Max Francis m...@alcyone.com wrote:
 On 05/29/2013 08:05 AM, Chris Angelico wrote:

 It's not a bad tool. I used it as a sort of PHP preprocessor, because
 requirements at work had me wanting to have a source file defining a
 PHP class and having an autogenerated section in the middle of that
 class. PHP's 'include' directive doesn't work for that. Of course, had
 we been using a better language, that wouldn't have been an issue (and
 it stopped being an issue when we improved the design and stopped
 using that class system, too, though I retained the makefile
 directives about building .php.m4 - .php files). But still, GNU M4 is

 a decent piece of technology.


 Agreed.  The terror that most people feel when hearing m4 is because m4
 was associated with sendmail, not because m4 was inherently awful. It has
 problems, but you'd only encounter them when doing something _very_
 abstract.

Ah. I actually wasn't aware of m4's use with sendmail. I first met it
as the aforementioned PHP preprocessor, simply by Googling for
something along the lines of generic preprocessor. First hit solved
my problems.

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


Re: Too many python installations. Should i remove them all and install the latest?

2013-06-02 Thread alex23
On Jun 1, 1:20 am, Νικόλαος Κούρας nikos.gr...@gmail.com wrote:
 Why so many pythons in my system.

Because _you_ installed them. And we _know_ this because you've posted
multiple threads relating to your problems with _your_ installations
of Python 3. Even more entertainingly:

 root@nikos [~]# which python3
 /root/.local/lib/python2.7/bin/python3

You seem to have installed python3 inside of a local copy of
python2.7. Awesomely professional webhosting service you're providing
here.

 root@nikos [~]# python3
 Python 3.3.0 (default, Apr  6 2013, 01:53:31)
 [GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux
 Type help, copyright, credits or license for more information.
  exit()

 root@nikos [~]# python3.3
 Python 3.3.0 (default, Apr  6 2013, 01:53:31)
 [GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux
 Type help, copyright, credits or license for more information.
  exit()

Did you _really_ need to post this? Was it to have us confirm they
_are_ the same versions?

 did i screwed up my remote VPS which i host 10 peoples webpages?

STOP EXPERIMENTING ON YOUR PRODUCTION SERVER. You should have a test
server that is a mirror of your production on which you can _safely_
flail around ignorantly without _costing your customers_ in lost time
or data. They're sure as hell should _not_ be paying you to learn
Python badly.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: xsd:anyType parameter in suds!

2013-06-02 Thread alex23
On Jun 2, 12:56 pm, Tamer Higazi th9...@googlemail.com wrote:
 The original sample is an application, where a PHP Array is being
 passed for the remoted method. What is the same type in python to
 accomplish the task?!

In this case, you probably want to use a dict().

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


Re: How to Begin Web Development with Python ?

2013-06-02 Thread alex23
On Jun 1, 11:23 pm, Giorgos Tzampanakis
giorgos.tzampana...@gmail.com wrote:
 Modulok suggested using ORM software. ORM should not really be needed if
 you are aiming at scientific content for your application, you should
 be fine with straight SQL (many consider ORM a hindrance rather than
 help for any project  [1], [2]). But if you do find the need for ORM
 then SQLAlchemy is very good and is considered pretty much a de facto
 standard in the Python world.

SQLAlchemy isn't just an ORM, though. Even more compelling, to me, is
its SQL Expression Language, which allows you to programmatically
write SQL expressions in a cross-database compatible way. It makes it
a lot easier to port your application to another database backend
should it require it. I tend to start projects with a local instance
of sqlite, for example, before migrating to PostGres/Oracle for
production.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: PyWart: The problem with print

2013-06-02 Thread Dan Sommers
On Sun, 02 Jun 2013 20:16:21 -0400, Jason Swails wrote:

 ... If you don't believe me, you've never hit a bug that 'magically'
 disappears when you add a debugging print statement ;-).

Ah, yes.  The Heisenbug.  ;-)

We used to run into those back in the days of C and assembly language.
They're much harder to see in the wild with Python.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Too many python installations. Should i remove them all and install the latest?

2013-06-02 Thread Chris Angelico
On Mon, Jun 3, 2013 at 12:30 PM, alex23 wuwe...@gmail.com wrote:
 On Jun 1, 10:24 am, Chris Angelico ros...@gmail.com wrote:
 Hmm. What other MUD commands have obvious Unix equivalents?

 say -- echo
 emote -- python -c
 attack -- sudo rm -f

 who -- who
 tell -- write
 alias -- ln
 look -- cat
 go -- cd
 teleport -- pushd/popd ?

I don't use an explicit 'go' though, I usually just type 'n' to go
north, or 'booth1' to go booth1. Unfortunately that doesn't translate
well into a simple alias :)

Hey, if you like MUDs, why not come play DD with us? minstrelhall.com
port 221 - always looking for new players!

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


Re: PyWart: The problem with print

2013-06-02 Thread Jason Swails
On Sun, Jun 2, 2013 at 11:10 PM, Dan Sommers d...@tombstonezero.net wrote:

 On Sun, 02 Jun 2013 20:16:21 -0400, Jason Swails wrote:

  ... If you don't believe me, you've never hit a bug that 'magically'
  disappears when you add a debugging print statement ;-).

 Ah, yes.  The Heisenbug.  ;-)


Indeed.  Being in the field of computational chemistry/physics, I was
almost happy to have found one just to say I was hunting a Heisenbug.  It
seems to be a term geared more toward the physics-oriented programming
crowd.


 We used to run into those back in the days of C and assembly langua
 
 ge.
 
 They're much harder to see in the wild with Python.
 


Yea, I've only run into Heisenbugs with Fortran or C/C++.  Every time I've
seen one it's been due to an uninitialized variable somewhere -- something
valgrind is quite good at pinpointing.  (And yes, a good portion of our
code is -still- in Fortran -- but at least it's F90+ :).
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: PyWart: The problem with print

2013-06-02 Thread Tim Delaney
On 3 June 2013 13:23, Jason Swails jason.swa...@gmail.com wrote:

 Yea, I've only run into Heisenbugs with Fortran or C/C++.  Every time I've
 seen one it's been due to an uninitialized variable somewhere -- something
 valgrind is quite good at pinpointing.  (And yes, a good portion of our
 code is -still- in Fortran -- but at least it's F90+ :).


With the increase in use of higher-level languages, these days Heisenbugs
most often appear with multithreaded code that doesn't properly protect
critical sections, but as you say, with lower-level languages uninitialised
memory is a common source of them.

I had a fun one once (in C++, but could have happened in any language)
where a semaphore was being acquired twice on the one thread. There were 10
semaphore slots available, and very occasionally the timings would result
in one of the threads deadlocking. Fortunately, by reducing to a single
thread + single semaphore slot I was able to turn it from a Heisenbug to a
100% replicable bug.

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


Re: PyWart: The problem with print

2013-06-02 Thread Dan Sommers
On Sun, 02 Jun 2013 23:23:42 -0400, Jason Swails wrote:

 On Sun, Jun 2, 2013 at 11:10 PM, Dan Sommers d...@tombstonezero.net
 wrote:

 Ah, yes.  The Heisenbug.  ;-)
 
 Indeed.  Being in the field of computational chemistry/physics, I was
 almost happy to have found one just to say I was hunting a Heisenbug.
 It seems to be a term geared more toward the physics-oriented
 programming crowd.

I'd been using the word Heisenbug for years with only a pop-culture clue
as to what it meant.  Many years later, I went to college, studied
physics (and math), and had one self-study semester of computational
physics on my way to my undergraduate degree.  After a career in
software development, including a few years in the financial industry,
with lots of floating point economic models, I must say that it was very
enlightening.

 They're much harder to see in the wild with Python.
 
 Yea, I've only run into Heisenbugs with Fortran or C/C++.  Every time
 I've seen one it's been due to an uninitialized variable somewhere --
 something valgrind is quite good at pinpointing ...

Uninitialized variables and off-by-one pointer operations.  Little can
screw up a calculation like mistaking a stack frame link for a floating
point number.  :-)

 ... (And yes, a good portion of our code is -still- in Fortran -- but
 at least it's F90+ :).

I am a huge proponent of using the right tool for the job.  There is
nothing wrong with some well-placed FORTRAN, as long as the PSF
-- 
http://mail.python.org/mailman/listinfo/python-list


Python Heisenbugs? (was: Re: PyWart: The problem with print)

2013-06-02 Thread Dan Sommers
On Mon, 03 Jun 2013 13:37:27 +1000, Tim Delaney wrote:

 With the increase in use of higher-level languages, these days
 Heisenbugs most often appear with multithreaded code that doesn't
 properly protect critical sections, but as you say, with lower-level
 languages uninitialised memory is a common source of them.

Aside from an I/O caching bug directly affected by calling print or
somefile.write (where somefile is stdout), how else could I create a
Heisenbug in pure Python?

To bring this thread back around full circle:  I suppose that if I had a
local function called print, and decided that I needed some debugging
output, I could be in for a surprise; or a local module called logging,
and decided to use the logging module instead of calling print directly.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread Νικόλαος Κούρας
I did all the google searh i could, but iwht no luxk, this is no suexec issue.
Why you say it is one?
The other problem i had was 'suexec' related, not this one, this is a 
subprocess issue.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread Chris Angelico
On Mon, Jun 3, 2013 at 9:10 AM, Tim Delaney timothy.c.dela...@gmail.com wrote:
 A programmer chooses his own clients, and you are the Atherton Wing to
 my Inara Serra.


 I've just been watching this train wreck (so glad I didn't get involved at
 the start) but I have to say - that's brilliant Chris. Thank you for
 starting my week off so well.

That went well.

*sighs happily*

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


Re: Python Heisenbugs? (was: Re: PyWart: The problem with print)

2013-06-02 Thread Chris Angelico
On Mon, Jun 3, 2013 at 2:34 PM, Dan Sommers d...@tombstonezero.net wrote:
 On Mon, 03 Jun 2013 13:37:27 +1000, Tim Delaney wrote:

 With the increase in use of higher-level languages, these days
 Heisenbugs most often appear with multithreaded code that doesn't
 properly protect critical sections, but as you say, with lower-level
 languages uninitialised memory is a common source of them.

 Aside from an I/O caching bug directly affected by calling print or
 somefile.write (where somefile is stdout), how else could I create a
 Heisenbug in pure Python?

If you have a @property, merely retrieving it could affect things. It
shouldn't happen, but bugs can be anywhere. Basically, ANY Python code
can trigger ANY Python code.

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


Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread Νικόλαος Κούρας
Chris can you please help me solve this problem?

Why subprocess fails when it has to deal with a greek flename? and that an 
indirect call too
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread Νικόλαος Κούρας
Ok, this email is something of a recital of how I approached this.

The apache error log:

I restarted the apache:
  /etc/init.d/httpd restart

Then a:
  ps axf
gave me the PID of a running httpd. Examining its open files:
  lsof -p 9287

shows me:
  httpd   9287 nobody2w   REG0,192 12719609  56510510 
/usr/local/apache/logs/error_log
  httpd   9287 nobody7w   REG0,192  7702310  56510512 
/usr/local/apache/logs/access_log
among many others.

So, to monitor these logs:

  tail -F /usr/local/apache/logs/error_log /usr/local/apache/logs/access_log 

placing the tail in the background so I can still use that shell.

Watching the log while fetching the page:

  http://superhost.gr/

says:

  == /usr/local/apache/logs/error_log ==
  [Tue Apr 23 12:11:40 2013] [error] [client 54.252.27.86] suexec policy 
violation: see suexec log for more details
  [Tue Apr 23 12:11:40 2013] [error] [client 54.252.27.86] Premature end of 
script headers: metrites.py
  [Tue Apr 23 12:11:40 2013] [error] [client 54.252.27.86] File does not exist: 
/home/nikos/public_html/500.shtml
  [Tue Apr 23 12:11:43 2013] [error] [client 107.22.40.41] suexec policy 
violation: see suexec log for more details
  [Tue Apr 23 12:11:43 2013] [error] [client 107.22.40.41] Premature end of 
script headers: metrites.py
  [Tue Apr 23 12:11:43 2013] [error] [client 107.22.40.41] File does not exist: 
/home/nikos/public_html/500.shtml
  [Tue Apr 23 12:11:45 2013] [error] [client 79.125.63.121] suexec policy 
violation: see suexec log for more details
  [Tue Apr 23 12:11:45 2013] [error] [client 79.125.63.121] Premature end of 
script headers: metrites.py
  [Tue Apr 23 12:11:45 2013] [error] [client 79.125.63.121] File does not 
exist: /home/nikos/public_html/500.shtml

So:

You're using suexec in your Apache. This greatly complicates your debugging.

Suexec seems to be a facility for arranging that CGI script run as the user
who owns them. Because that has a lot of potential for ghastly
security holes, suexec performs a large number of strict checks on
CGI script locations, permissions and locations before running a
CGI script.  At a guess the first hurdle would be that metrites.py
is owned by root. Suexec is very picky about what users it is
prepared to become. root is not one of them, as you might imagine.

I've chowned metrites.py to nikos:nikos. Suexec not lets it run, producing this:

Traceback (most recent call last):
  File metrites.py, line 9, in module
sys.stderr = open('/home/nikos/public_html/cgi.err.out', 'a')
PermissionError: [Errno 13] Permission denied: 
'/home/nikos/public_html/cgi.err.out'

That file is owned by root. metrites.py is being run as nikos.

So:

  chown nikos:nikos /home/nikos/public_html/cgi.err.out


A page reload now shows this:

Error in sys.excepthook:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 
2334-2342: ordinal not in range(128)

  Original exception was:
  Traceback (most recent call last):
File metrites.py, line 226, in module
  print( template )
  UnicodeEncodeError: 'ascii' codec can't encode characters in position 30-38: 
ordinal not in range(128)

This shows you writing the string in template to stdout. The default
encoding for stdout is 'ascii', accepting only characters of values
0..127. I expect template contains more than this, since the ASCII
range is very US Anglocentric; Greek characters for example won't
encode into ascii.

As mentioned in the thread on python-list, python will adopt your
terminal's encoding it used interactively but will be pretty
conservation if the output is not a terminal; ascii as you see
above.

What you want is probably UTF-8 in the output byte stream.  But
let's check what the HTTP headers are saying, because _they_ tell
the browser the byte stream encoding. The headers and your program's
encoding must match. So:

% wget -S -O - http://superhost.gr/
  --2013-04-23 19:34:38--  http://superhost.gr/
  Resolving superhost.gr (superhost.gr)... 82.211.30.133
  Connecting to superhost.gr (superhost.gr)|82.211.30.133|:80... connected.
  HTTP request sent, awaiting response...
HTTP/1.1 200 OK
Date: Tue, 23 Apr 2013 09:34:46 GMT
Server: Apache/2.2.24 (Unix) mod_ssl/2.2.24 OpenSSL/1.0.0-fips 
mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=utf-8
  Length: unspecified [text/html]
  Saving to: ‘STDOUT’

  !--: spam
  Content-Type: text/html

  body bgcolor=#f0f0f8font color=#f0f0f8 size=-5 --
  body bgcolor=#f0f0f8font color=#f0f0f8 size=-5 -- --
  /font /font /font /script /object /blockquote /pre

So, the Content-Type: header says: text/html; charset=utf-8. So that's good.

So I've imported codecs and added this line:

  sys.stdout = os.fdopen(1, 'w', encoding='utf-8')

under the setting of sys.stderr. If the cgi libraries run under
python 3 there is probably a cleaner way to 

Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread Νικόλαος Κούρας
But still when it comes to subprocess trying to call files.py which in turn 
tries to call a greek filename i get the same response i posted at my initial 
post.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread Michael Torrie
On 06/02/2013 12:34 PM, Νικόλαος Κούρας wrote:
 The whole subprocess fails when it has to deal with a greek lettered
 filename.

No it doesn't.  subprocess is working correctly.  It's the program
subprocess is running that is erring out.  subprocess is merely
reporting to you that it erred out, just as it should.

 I just dont get it... I didn't ask for metrites.py to open via
 subprocess the greek filename, i just told metrites.py to call
 files.py which in turn tries to open that greek filename.

Seems to me, then it's clear how you should go about debugging this.
Have to run each layer separately, and see where the error occurs.
Start with files.py.

that's what any of us would do if the code were ours.  But we can't do
the debugging for you.  It's not possible!  We don't have access to your
code nor to your server environment.  Nor is it appropriate for any of
us who have no contractual relationship with you to have such access to
your server.

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


Re: Changing filenames from Greeklish = Greek (subprocess complain)

2013-06-02 Thread Michael Torrie
On 06/02/2013 11:22 PM, Νικόλαος Κούρας wrote:
 Ok, this email is something of a recital of how I approached this.

Excellent.  You're making progress.  Keep doing research, and learn how
to debug your python programs.

One thing I've done as a last resort when I just can't get good error
reporting because of subprocess or something else, is to have my script
open a file in /tmp and write messages to it as the program executes.
Sometimes I write out what the standard input was so I know for doing a
standalone run.  There's your free hint for the day.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: PyWart: The problem with print

2013-06-02 Thread Michael Torrie
On 06/02/2013 12:18 PM, Rick Johnson wrote:
 On Sunday, June 2, 2013 12:49:02 PM UTC-5, Dan Sommers wrote:
 On Mon, 03 Jun 2013 03:20:52 +1000, Chris Angelico wrote:
 On Mon, Jun 3, 2013 at 3:04 AM, Rick Johnson
 [...] Or use the logging module.  It's easy to get going quickly 
 (just call logging.basicConfig at startup time), and with a little
 care and feeding, you can control the output in more ways than can
 fit into the margin. Oh, yeah, I'm sure it introduces some
 overhead.  So does everything else.
 
 I hate log files, at least during development or testing. I prefer to
 debug on the command line or using my IDE. Log files are for release
 time, not development.

Except that it's not.  Have you even looked at what the logging module
is?  It most certainly can log to stderr if you provide no logging
handler to write to a file.
-- 
http://mail.python.org/mailman/listinfo/python-list


[issue18116] getpass.getpass() triggers ResourceWarning

2013-06-02 Thread Vajrasky Kok

Vajrasky Kok added the comment:

I isolate the bug. It happens in these lines:

# Always try reading and writing directly on the tty first.
fd = os.open('/dev/tty', os.O_RDWR|os.O_NOCTTY)
tty = os.fdopen(fd, 'w+', 1)

So to produce the bug more specifically, you can try this python file:

# bugme2.py
import os

fd = os.open('/dev/tty', os.O_RDWR|os.O_NOCTTY)
os.fdopen(fd, 'w+', 1)
# end of bugme2.py

In Linux Fedora 18, I would get this error:

/home/sky/Code/python/programming_language/cpython/Lib/os.py:1025: 
ResourceWarning: unclosed file _io.FileIO name=3 mode='rb+'
  return io.open(fd, *args, **kwargs)
Traceback (most recent call last):
  File /tmp/bugme2.py, line 4, in module
os.fdopen(fd, 'w+', 1)
  File /home/sky/Code/python/programming_language/cpython/Lib/os.py, line 
1025, in fdopen
return io.open(fd, *args, **kwargs)
io.UnsupportedOperation: File or stream is not seekable.

--

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



[issue18116] getpass.getpass() triggers ResourceWarning

2013-06-02 Thread Vajrasky Kok

Vajrasky Kok added the comment:

I have investigated this problem and come up with the patch to fix the problem. 
This patch does the job. Caution: only for Python 3.4. But translating this 
patch to Python 3.3 should be straightforward.

I hope this patch could be the foundation for better programmers to create 
better patch.

Some of the issues with this patch are: I am not sure how to handle encoding 
and where the best place to close tty is.

Reference:
https://github.com/stefanholek/term/issues/1
http://stackoverflow.com/questions/5471158/typeerror-str-does-not-support-the-buffer-interface

--
Added file: http://bugs.python.org/file30444/getpass_fix_resourcewarning.patch

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



[issue18116] getpass.getpass() triggers ResourceWarning

2013-06-02 Thread Vajrasky Kok

Vajrasky Kok added the comment:

Sorry,

My previous patch breaks the test. This one should pass the test and fix the 
bug.

Still, there are ugly code in the patch that I hope better programmers could 
fix.

--
Added file: 
http://bugs.python.org/file30445/getpass_fix_resourcewarning_pass_the_test.patch

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



[issue18117] Missing symlink:Currnet after Mac OS X 3.3.2 package installation

2013-06-02 Thread Gavan Schneider

New submission from Gavan Schneider:

There is a missing symlink.

Context:
Installed package:
http://www.python.org/ftp/python/3.3.2/python-3.3.2-macosx10.6.dmg
with no apparent problems onto a 'clean' system, i.e., no other python packages 
other than OS X 10.8.3 defaults.

Found the following in /Library/Frameworks/Python.framework:
pendari:Python.framework postgres$ ls -las
total 24
0 drwxr-xr-x  3 root  wheel  204 14 May 06:49 .
0 drwxr-xr-x  8 root  wheel  374  2 Jun 17:06 ..
8 lrwxr-xr-x  1 root  wheel   24  2 Jun 17:06 Headers - 
Versions/Current/Headers
8 lrwxr-xr-x  1 root  wheel   23  2 Jun 17:06 Python - Versions/Current/Python
8 lrwxr-xr-x  1 root  wheel   26  2 Jun 17:06 Resources - 
Versions/Current/Resources
0 drwxr-xr-x  3 root  wheel  102 14 May 06:54 Versions

However:
pendari:Versions postgres$ ls -las
total 0
0 drwxr-xr-x  3 root  wheel  102 14 May 06:54 .
0 drwxr-xr-x  3 root  wheel  204 14 May 06:49 ..
0 drwxrwxr-x  7 root  admin  306 14 May 06:54 3.3

Specifically we are missing the following from .../Versions:
8 lrwxr-xr-x  1 root  wheel3  2 Jun 17:27 Current - 3.3

to make all the other symlinks work as intended.

This also implies the ~/.bash_profile patch would be improved if the existing:
PATH=/Library/Frameworks/Python.framework/Versions/3.3/bin:${PATH}
was replaced by:
PATH=/Library/Frameworks/Python.framework/Versions/Current/bin:${PATH}

Apologies if this has already been reported. It is my first report so I could 
easily have missed something: I searched with terms installer mac.

Regards
Gavan Schneider

--
assignee: ronaldoussoren
components: Installation, Macintosh
messages: 190474
nosy: gavan, ronaldoussoren
priority: normal
severity: normal
status: open
title: Missing symlink:Currnet after Mac OS X 3.3.2 package installation
type: behavior
versions: Python 3.3

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



[issue18117] Missing symlink:Current after Mac OS X 3.3.2 package installation

2013-06-02 Thread Gavan Schneider

Changes by Gavan Schneider pythonbug-...@snkmail.com:


--
title: Missing symlink:Currnet after Mac OS X 3.3.2 package installation - 
Missing symlink:Current after Mac OS X 3.3.2 package installation

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



[issue16427] Faster hash implementation

2013-06-02 Thread Lukas Lueg

Lukas Lueg added the comment:

I was investigating a callgrind dump of my code, showing how badly 
unicode_hash() was affecting my performance. Using google's cityhash  instead 
of the builtin algorithm to hash unicode objects improves overall performance 
by about 15 to 20 percent for my case - that is quite a thing.
Valgrind shows that the number of instructions spent by unicode_hash() drops 
from ~20% to ~11%. Amdahl crunches the two-fold performance increase to the 
mentioned 15 percent.

Cityhash was chosen because of it's MIT license and advertisement for 
performance on short strings.

I've now found this bug and attached a log for haypo's benchmark which compares 
native vs. cityhash. Caching was disabled during the test. Cityhash was 
compiled using -O3 -msse4.2 (cityhash uses cpu-native crc instructions). 
CPython's unittests fail due to known_hash and gdb output; besides that, 
everything else seems to work fine.

Cityhash is advertised for it's performance with short strings, which does not 
seem to show in the benchmark. However, longer strings perform *much* better.

If people are insterested, i can repeat the test on a armv7l

--
nosy: +ebfe
Added file: http://bugs.python.org/file30446/cityhash.txt

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



[issue16427] Faster hash implementation

2013-06-02 Thread Antoine Pitrou

Antoine Pitrou added the comment:

 I was investigating a callgrind dump of my code, showing how badly
 unicode_hash() was affecting my performance.

Can you tell us about your use case?
There are several CityHash variants, which one did you use? CityHash64?

--

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



[issue18111] Add a default argument to min max

2013-06-02 Thread Raymond Hettinger

Raymond Hettinger added the comment:

I'm -1 on expanding this API further.  It already is pushing the limits with 
the dual signature and with the key-function.

Many languages have min/max functions.  AFAICT, none of them have an API with a 
default argument.  This suggests that this isn't an essential capability.

--
nosy: +rhettinger

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



[issue16427] Faster hash implementation

2013-06-02 Thread Lukas Lueg

Lukas Lueg added the comment:

It's a cache sitting between an informix db and and an internal web service. 
Stuff comes out of db, processed, json'ifed, cached and put on the wire. 10**6s 
of strings pass this process per request if uncached...

I use CityHash64WithSeed, the seed being cpython's hash prefix (which I don't 
care about but found reassuring to put in anyway)

--

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



[issue18118] curses utf8 output broken

2013-06-02 Thread helmut

New submission from helmut:

Consider the test case below.


#!/usr/bin/python
# -*- encoding: utf8 -*-

import curses

def wrapped(screen):
screen.addstr(0, 0, ä)
screen.addstr(0, 1, ö)
screen.addstr(0, 2, ü)
screen.getch()

if __name__ == __main__:
curses.wrapper(wrapped)


Expected output: äöü
Output on py3.3: as expected
Output on py2.7.3: ?ü
The actual bytes (as determined by strace) were \303\303\303\274. Observe the 
inclusion of broken utf8 sequences.

This issue was initially discovered on Debian sid, but independently confirmed 
on Arch Linux and two more unknown.

--
components: Library (Lib)
messages: 190479
nosy: helmut
priority: normal
severity: normal
status: open
title: curses utf8 output broken
type: behavior
versions: Python 2.7

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



[issue18119] urllib.FancyURLopener does not treat URL fragments correctly

2013-06-02 Thread Shuhei Takahashi

New submission from Shuhei Takahashi:

When urllib.FancyURLopener encounters 302 redirection to a URL with fragments, 
it sends wrong URL to servers.

For example, if we run:
  urllib.urlopen('http://example.com/foo')
and the server responds like following.
  HTTP/1.1 302 Found
  Location: /bar#test
Then urllib tries next to fetch http://example.com/bar#test, instead of 
http://example.com/bar.

Correctly, urllib should strip fragment part of URL before issuing requests.

--
components: Library (Lib)
messages: 190480
nosy: takahashi.shuhei
priority: normal
severity: normal
status: open
title: urllib.FancyURLopener does not treat URL fragments correctly
type: behavior
versions: Python 2.7

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



  1   2   >