Wing IDE 2.1 released

2006-06-21 Thread Wingware Announce
We're happy to announce the release of Wing IDE version 2.1, an
advanced development environment for the Python programming
language.

This is a free upgrade for Wing IDE 2.0 users.  The release can
be downloaded from:

http://wingware.com/downloads

Wing IDE provides powerful debugging, editing, code intelligence,
and search capabilities that reduce development and debugging
time, cut down on coding errors, and make it easier to understand
and navigate Python code.

Highlights of the 2.1 release include:

* Visual Studio, VI/Vim, and Brief key bindings
* Subversion and Perforce support (+)
* Improved performance on Windows
* Redesigned and improved search tools
* Named bookmarks (+)
* Breakpoint manager (+) and call stack as list
* Evaluate file or selection in Python Shell
* Support for Intel Macs

(+) These are available in Wing IDE Pro only

A list of major changes since Wing 2.0 can be found here:

http://wingware.com/news/2006-06-19

This release is available for Windows (2000+), Linux, and Mac OS X
(10.3+ with X11 installed) and can be compiled from sources on *BSD,
Solaris, and other Posix operating systems.

For more information see:

Product Info:   http://wingware.com/products
Sales:  http://wingware.com/store/purchase

Sincerely,

The Wingware Team
-- 
http://mail.python.org/mailman/listinfo/python-announce-list

Support the Python Software Foundation:
http://www.python.org/psf/donations.html


SciPy 2006 Tutorials

2006-06-21 Thread Travis N. Vaught
All,

As part of this year's SciPy 2006 Conference, we've planned Coding 
Sprints on Monday and Tuesday (August 14-15) and a Tutorial Day 
Wednesday (August 16)--the normal conference presentations follow on 
Thursday and Friday (August 17-18).

For this year at least, the Tutorials (and Sprints) are no additional 
charge (you're on your own for food on those days, though).

With regard to Tutorial topics, we've settled on the following:

3D visualization in Python using tvtk and MayaVi
Scientific Data Analysis and Visualization using IPython and Matplotlib.
Building Scientific Applications using the Enthought Tool Suite 
(Envisage, Traits, Chaco, etc.)
NumPy (migration from Numarray  Numeric, overview of NumPy)

These will be in two tracks with two three hour sessions in each track.

If you plan to attend, please send an email to [EMAIL PROTECTED] with 
the two sessions you'd most like to hear and we'll build the schedule 
with a minimum of conflict.

We'll post the schedule of the tracks on the Wiki here: 
http://www.scipy.org/SciPy2006/TutorialSessions

Also, if you haven't registered already, the deadline for early 
registration is July 14.  The abstract submission deadline is July 7.  
More information is here: http://www.scipy.org/SciPy2006

Thanks,

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

Support the Python Software Foundation:
http://www.python.org/psf/donations.html


RELEASED Python 2.5 (beta 1)

2006-06-21 Thread Anthony Baxter
On behalf of the Python development team and the Python community, I'm 
happy to announce the first BETA release of Python 2.5.

This is an *beta* release of Python 2.5. As such, it is not suitable 
for a production environment. It is being released to solicit 
feedback and hopefully discover bugs, as well as allowing you to 
determine how changes in 2.5 might impact you. If you find things 
broken or incorrect, please log a bug on Sourceforge. 

I'd like to really encourage you to try out this version and check 
that your code still works - if not, and you think it's a bug, please 
log a bug. Hopefully this will make it easier for you to upgrade once 
the final release of Python 2.5 is done.

Please note that changes to improve Python's support for 64 bit 
systems might require authors of C extensions to change their code. 
See the website for more, including a link to a posting discussing 
this issue in particular.

More information on the release (as well as source distributions and 
Windows and Mac OSX installers) are available from the 2.5 website:

http://www.python.org/2.5/

Since the alpha releases, a slew of bug fixes and smaller new
features have been added. See the release notes (available from the
2.5 webpage) for more. The first beta also includes the results of the 
Iceland NeedForSpeed sprint, resulting in some significant speedups.

As of this release, Python 2.5 is now in *feature freeze*. No new
features are planned - only bugfixes for the code already in the 
codebase.

The plan from here is for one more beta release followed by one or 
more release candidates as needed, leading to a 2.5 final release 
early August.  PEP 356 includes the schedule and will be updated as 
the schedule evolves.

The new features in Python 2.5 are described in Andrew Kuchling's 
What's New In Python 2.5. It's available from the 2.5 web page.

Amongst the language features added include conditional expressions, 
the with statement, the merge of try/except and try/finally into 
try/except/finally, enhancements to generators to produce a coroutine 
kind of functionality, and a brand new AST-based compiler 
implementation.

New modules added include hashlib, ElementTree, sqlite3, wsgiref and
ctypes. We also have a new profiling module cProfile.

Enjoy this new release (another step on the path to Python 2.5 final)
Anthony

-- 
Anthony Baxter
[EMAIL PROTECTED]
Python Release Manager
(on behalf of the entire python-dev team)


pgpYfjqJg0XxR.pgp
Description: PGP signature
-- 
http://mail.python.org/mailman/listinfo/python-announce-list

Support the Python Software Foundation:
http://www.python.org/psf/donations.html


Initializing a set from a list

2006-06-21 Thread Xiaolei Li
Hi,

I'm trying to initialize a set from a list but am unable to do so.  My
list c, looks like:

[(1.00909, 0.91966, -0.13550388182991072, 0),
(0.874239991, 0.7001, -0.2123048713754, 0)]

So basically a list of 2 tuples, each with 4 elements.  Since tuples
are immutable, I think a set should be able to support them.

Anyway, I then do:

set_c = set(c)

And instead of getting a set, I get None when I try to print out
set_c.  len(set_c) complains TypeError: len() of unsized object.
Help?  

Thank you.

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


Re: Initializing a set from a list

2006-06-21 Thread Robert Kern
Xiaolei Li wrote:
 Hi,
 
 I'm trying to initialize a set from a list but am unable to do so.  My
 list c, looks like:
 
 [(1.00909, 0.91966, -0.13550388182991072, 0),
 (0.874239991, 0.7001, -0.2123048713754, 0)]
 
 So basically a list of 2 tuples, each with 4 elements.  Since tuples
 are immutable, I think a set should be able to support them.
 
 Anyway, I then do:
 
 set_c = set(c)
 
 And instead of getting a set, I get None when I try to print out
 set_c.  len(set_c) complains TypeError: len() of unsized object.
 Help?  

 c = [(1.00909, 0.91966, -0.13550388182991072, 0),
... (0.874239991, 0.7001, -0.2123048713754, 0)]
 set_c = set(c)
 set_c
set([(1.00909, 0.91966, -0.13550388182991072, 0),
(0.874239991, 0.7001, -0.2123048713754, 0)])


Please copy-and-paste the exact code that you wrote and the exact output.

-- 
Robert Kern

I have come to believe that the whole world is an enigma, a harmless enigma
 that is made terrible by our own mad attempt to interpret it as though it had
 an underlying truth.
  -- Umberto Eco

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


separation events

2006-06-21 Thread Ghido
Hi all, i'm writing a software with python and wxpython for manage the
quality/environmental/security system for the my factory. I want to
separate the gui structure from the events and database operations for
obtain a very modular software, for this reason i start to use
sqlalchemy. Unfortunately i don't understand if is possibile to have a
file with only the gui structure and another file with the database
operations and the events of the gui. It is possibile? the use of
sqlalchemy is a good thing?
Thanks a lot

Ghido

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


Re: Python is fun (useless social thread) ;-)

2006-06-21 Thread Terry Hancock
John Salerno wrote:
  Did you have to learn it for a job?

No, for me, programming is primarily a hobby. I worked on scientific
programming in Fortran in the 1980s and in C in the 1990s. Later I
did some sys admin work, and managed to use a bit of Python in that.

  Or did you just like what you saw and decided to learn it for fun?

I became interested in creating a free software graphic adventure
game, and we needed a scripting language. A collaborator heavily
favored Python, and so I checked it out.

I was a stay-at-home Dad at the time, so I had time to work on
projects. But I also had to juggle kids. So a programming language
like C that required me to hold a lot of state in my head was
unworkable.  When you're watching kids, you have maybe 5-10
minutes between interruptions, so you need to be able to
recover your place in seconds. Python makes that more
possible than any other language I've seen.

At first I was suspicious of the significant whitespace. But I
quickly realized the brilliance of it -- it makes the computer queue
on the same thing my eyes use to recognize code-blocks, so it's
virtually impossible to have an ambiguous code-block bug.

In fact, I was stunned at how many common bugs you just can't
have happen in Python (of course, later on I discovered a few that
it specifically enables, but well, there's no such thing as a perfect
solution).

  Also, how did you go about learning it? (i.e., like I described
  above, I started with the main stuff then moved on to the different
  available frameworks)

I picked up a copy of Learning Python from O'Reilly books. I went
through it in three days -- easily record-breaking time for me to
learn a new computer language.  Of course, I didn't learn *everything*
in that time, but I learned enough to write useful stuff in it. That
sold me on it -- it was obviously the right language for me to be
using.

  Was there any necessity in the specifics you learned, or did you just
  dabble in something (e.g. wxPython) for fun?

Well, as I said, I started on a game project. Later on, I spent a lot
of time using Zope and working on a big-concept CMS design. I think
I was way out of my depth actually. I'm considering extending Plone
to do what I need, now, but I haven't really had a chance to look
at it.

  Are there still some things you feel you need to learn or improve?

Of course!

* I am working on combining auto-generated documentation with
   pre-written overview documentation to get the 'best of both worlds'
   documentation for the code.

* I am trying to better understand and use testing methodologies. Testing
  is hard to get in the habit of doing, because it requires forethought --
  testing is work you do now, during early development, that saves you
  tons of time later on, when you are supporting and improving the
  software. So it's requires some discipline to spend that extra up-front
  time (even though you know it's going to save you later).

* There will always be modules you don't know yet (and more are being
   written).  In particular, I'm looking into installing and extending 
Plone.
   I also need to learn more about XML processing and other stuff I'm
   going to need for processing vector graphics.

* I still haven't totally gotten my head around GUIs, nor PyGame (which
   is back to the game project) though I'm getting closer to my goals.

Regrettably, though, it's still a hobby, and I have less time even than
I used to.  Even though I still stay at home, I have a full time writing
workload now, and it's become a little difficult to find enough time
for programming.  Once again, though, Python's ease of readability
really helps me to pick up where I left off when I have to do that (which
is a lot).

Cheers,
Terry


-- 
Terry Hancock ([EMAIL PROTECTED])
Anansi Spaceworks http://www.AnansiSpaceworks.com

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


Re: Simple question regarding module initialization

2006-06-21 Thread Terry Hancock
  On 6/20/06, Patrick M. Nielsen [EMAIL PROTECTED] wrote:
  for module in modules: print Loading %s... % module exec 'import
  %s' % module
 
  Although I like the outcome of writing it like this, I don't feel
  good about it. Is this against standard Python conventions or
  morals? Loading modules this way, that is (instead of just
  importing it all the right way and making a print statement for
  each one).
 
 
Troy Melhase wrote:
  __import__(name, globals, locals, fromlist) - module

  Import a module.

... grumble ... top posting ... grumble ... no text ...  grumble ...

(Probably) Troy's point here is that you'd be better off to use the
built-in __import__ function instead of using exec. This is probably
clearer. There is no fundamental reason why it is more secure,
though (the usual complaint about exec), because you are in
complete control of what exec is being fed.

However, I'd still recommend __import__ for clarity.

Cheers,
Terry


-- 
Terry Hancock ([EMAIL PROTECTED])
Anansi Spaceworks http://www.AnansiSpaceworks.com

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


Re: Problem Py2exe pygtk and Pil

2006-06-21 Thread thomas carpentier
I have already read the py2exe docs. When I come back at home, I  will 
write a message who contains the script and the errors

faulkner a écrit :
 read the py2exe docs. py2exe should put everything a new user should
 need in the dist directory. if it doesn't, copy the libraries [be they
 .pyc or .pyd or .dll] that py2exe missed into dist.
 i know for a fact that py2exe is intelligent with the gtk libraries, so
 check if the PIL libraries are in the dist directory.
 
 thomas carpentier wrote:
 Hello,

 I have created a program with a GUI ( glade). In this script I call the
 Python Imaging Library.

 I have developped this program onto linux, but il would like export it
 on Windows, however I have a problem with py2exe. If the new user has
 not python and library(PIL, GLADE) installed, it doesn't work. I don't
 know how integrate library into my setup.

 Thank you for your help.

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


Re: Initializing a set from a list

2006-06-21 Thread Xiaolei
Robert Kern wrote:
 Xiaolei Li wrote:
  Hi,
 
  I'm trying to initialize a set from a list but am unable to do so.  My
  list c, looks like:
 
  [(1.00909, 0.91966, -0.13550388182991072, 0),
  (0.874239991, 0.7001, -0.2123048713754, 0)]
 
  So basically a list of 2 tuples, each with 4 elements.  Since tuples
  are immutable, I think a set should be able to support them.
 
  Anyway, I then do:
 
  set_c = set(c)
 
  And instead of getting a set, I get None when I try to print out
  set_c.  len(set_c) complains TypeError: len() of unsized object.
  Help?

  c = [(1.00909, 0.91966, -0.13550388182991072, 0),
 ... (0.874239991, 0.7001, -0.2123048713754, 0)]
  set_c = set(c)
  set_c
 set([(1.00909, 0.91966, -0.13550388182991072, 0),
 (0.874239991, 0.7001, -0.2123048713754, 0)])
 

 Please copy-and-paste the exact code that you wrote and the exact output.

Ok, I've basically found the cause of my problem.  I'm including stuff
from pylab and that's causing some conflicts?  Here's 6 lines of code:

from pylab import *
c = [1, 2, 3, 3]
print c
set_c = set(c)
print set
print set_c

When I run that (Python 2.4.2, Pylab 0.80), I get:

[1, 2, 3, 3]

function set at 0xb751e1b4
None

If I remove the first line, I correctly get:

[1, 2, 3, 3]
type 'set'
set([1, 2, 3])

Good news is that I didn't really need pylab in the program.  So for
now, everything's working just fine.

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


Re: need all python dialog equivalent

2006-06-21 Thread [EMAIL PROTECTED]
 dialog binary is 110 KB. Won't it fit ?

Eric S. Johansson wrote:
 I'm creating a dialogue style interface for an application on a
 dedicated system.  All I have is basic Python 2.3.  Is there anything
 like an all Python dialog equivalent floating around?  I'm currently
 hacking away in curses but it's taking me a long way down what I fear to
 be a wrong path.

 I've looked at the Python dialog web site but it clearly states that it
 is a wrapper around dialogue/Xdialog.
 
 suggestions would be most welcome.
 
 ---eric

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


Re: Iteration over recursion?

2006-06-21 Thread Kay Schluehr
You might use a separate prime generator to produce prime factors. The
factorize algorithm becomes quite simple and configurable by prime
generators. For demonstration purposes I use the eratosthenes sieve.

def eratosthenes():
memo = {}
q = 2
while True:
p = memo.pop(q, None)
if p is None:
yield q
memo[q*q] = q
else:
x = p + q
while x in memo:
x += p
memo[x] = p
q+=1

def factorize(n, sieve = eratosthenes):
if n = 1:
return [n]
factors = []
primes = sieve()
for q in primes:
while n % q == 0:
factors.append(q)
n //= q
if n == 1:
return factors

Regards,
Kay

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


Python SHA-1 as a method for unique file identification ? [help!]

2006-06-21 Thread EP

This inquiry may either turn out to be about the suitability of the
SHA-1 (160 bit digest) for file identification, the sha function in
Python ... or about some error in my script.  Any insight appreciated
in advance.

I am trying to reduce duplicate files in storage at home - I have a
large number files (e.g. MP3s) which have been stored on disk multiple
times under different names or on different paths.  The using
applications will search down from the top path and find the files - so
I do not need to worry about keeping track of paths.

All seemed to be working until I examined my log files and found files
with the same SHA digest had different sizes according to
os.stat(fpath).st_size .  This is on Windows XP.

-  Am I expecting too much of SHA-1?
-  Is it that the os.stat data on Windows cannot be trusted?
-  Or perhaps there is a silly error in my code I should have seen?

Thanks

- Eric

-  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -

Log file extract:

Dup:  noPath:  F:\music\mp3s\01125.mp3Hash:
00b3acb529aae11df186ced8424cb189f062fa48Name:  01125.mp3Size:
63006
Dup:  YESPath:  F:\music\mp3s\0791.mp3Hash:
00b3acb529aae11df186ced8424cb189f062fa48Name:  0791.mp3Size:
50068
Dup:  YESPath:  F:\music\mp3s\12136.mp3Hash:
00b3acb529aae11df186ced8424cb189f062fa48Name:  12136.mp3Size:
51827
Dup:  YESPath:  F:\music\mp3s\11137.mp3Hash:
00b3acb529aae11df186ced8424cb189f062fa48Name:  11137.mp3Size:
56417
Dup:  YESPath:  F:\music\mp3s\0991.mp3Hash:
00b3acb529aae11df186ced8424cb189f062fa48Name:  0991.mp3Size:
59043
Dup:  YESPath:  F:\music\mp3s\0591.mp3Hash:
00b3acb529aae11df186ced8424cb189f062fa48Name:  0591.mp3Size:
59162
Dup:  YESPath:  F:\music\mp3s\10140.mp3Hash:
00b3acb529aae11df186ced8424cb189f062fa48Name:  10140.mp3Size:
59545
Dup:  YESPath:  F:\music\mp3s\0491.mp3Hash:
00b3acb529aae11df186ced8424cb189f062fa48Name:  0491.mp3Size:
63101
Dup:  YESPath:  F:\music\mp3s\0392.mp3Hash:
00b3acb529aae11df186ced8424cb189f062fa48Name:  0392.mp3Size:
63252
Dup:  YESPath:  F:\music\mp3s\0891.mp3Hash:
00b3acb529aae11df186ced8424cb189f062fa48Name:  0891.mp3Size:
65808
Dup:  YESPath:  F:\music\mp3s\0691.mp3Hash:
00b3acb529aae11df186ced8424cb189f062fa48Name:  0691.mp3Size:
67050
Dup:  YESPath:  F:\music\mp3s\0294.mp3Hash:
00b3acb529aae11df186ced8424cb189f062fa48Name:  0294.mp3Size:
67710


Code:

# Dedup_inplace.py
# vers .02
# Python 2.4.1

# Create a dictionary consisting of hash:path
# Look for 2nd same hash and delete path

testpath=rF:\music\mp3s
logpath=rC:\testlog6.txt

import os, sha

def hashit(pth):
Takes a file path and returns a SHA hash of its string
fs=open(pth,'r').read()
sh=sha.new(fs).hexdigest()
return sh

def logData(d={}, logfile=c://filename999.txt, separator=\n):
Takes a dictionary of values and writes them to the provided
file path
logstring=separator.join([str(key)+:  +d[key] for key in
d.keys()])+\n
f=open(logfile,'a')
f.write(logstring)
f.close()
return

def walker(topPath):
fDict={}
logDict={}
limit=1000
freed_space=0
for root, dirs, files in os.walk(topPath):
for name in files:
fpath=os.path.join(root,name)
fsize=os.stat(fpath).st_size
fkey=hashit(fpath)
logDict[Name]=name
logDict[Path]=fpath
logDict[Hash]=fkey
logDict[Size]=str(fsize)
if fkey not in fDict.keys():
fDict[fkey]=fpath
logDict[Dup]=no
else:
#os.remove(fpath)  --uncomment only when script
proven
logDict[Dup]=YES
freed_space+=fsize
logData(logDict, logpath, \t)
items=len(fDict.keys())
print Dict entry:  ,items,
print Cum freed space:  ,freed_space
if items  limit:
break
if items  limit:
break

def emptyNests(topPath):
Walks downward from the given path and deletes any empty
directories
for root, dirs, files in os.walk(topPath):
for d in dirs:
dpath=os.path.join(root,d)
if len(os.listdir(dpath))==0:
print deleting:  , dpath
os.rmdir(dpath)
   
walker(testpath)
emptyNests(testpath)

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


Re: Initializing a set from a list

2006-06-21 Thread Xiaolei

Sybren Stuvel wrote:
 Xiaolei enlightened us with:
  from pylab import *

 You'd better not do that. Just use import pylab.

  If I remove the first line, I correctly get:
 
  [1, 2, 3, 3]
 type 'set'
  set([1, 2, 3])

 Pylab shadows the built-in set name, which is one of the reasons you
 should generally use import XXX instead of from XXX import *.

Ahh.  Understood.  Thank you very much.

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


Re: Python SHA-1 as a method for unique file identification ? [help!]

2006-06-21 Thread Justin Ezequiel
EP wrote:
 This inquiry may either turn out to be about the suitability of the
 SHA-1 (160 bit digest) for file identification, the sha function in
 Python ... or about some error in my script.

 This is on Windows XP.

 def hashit(pth):
 fs=open(pth,'r').read()
 sh=sha.new(fs).hexdigest()
 return sh


cannot comment on the suitability of SHA for your use-case but
shouldn't you be opening the file in binary mode?

fs=open(pth,'rb').read()

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


Re: What is Expressiveness in a Computer Language

2006-06-21 Thread Anton van Straaten
Marshall wrote:
 Joe Marshall wrote:
 
They *do* have a related meaning.  Consider this code fragment:
(car a string)
[...]
Both `static typing' and `dynamic typing' (in the colloquial sense) are
strategies to detect this sort of error.
 
 
 The thing is though, that putting it that way makes it seems as
 if the two approaches are doing the same exact thing, but
 just at different times: runtime vs. compile time. But they're
 not the same thing. Passing the static check at compile
 time is universally quantifying the absence of the class
 of error; passing the dynamic check at runtime is existentially
 quantifying the absence of the error. A further difference is
 the fact that in the dynamically typed language, the error is
 found during the evaluation of the expression; in a statically
 typed language, errors are found without attempting to evaluate
 the expression.
 
 I find everything about the differences between static and
 dynamic to be frustratingly complex and subtle.

Let me add another complex subtlety, then: the above description misses 
an important point, which is that *automated* type checking is not the 
whole story.  I.e. that compile time/runtime distinction is a kind of 
red herring.

In fact, automated type checking is orthogonal to the question of the 
existence of types.  It's perfectly possible to write fully typed 
programs in a (good) dynamically-checked language.

In a statically-checked language, people tend to confuse automated 
static checking with the existence of types, because they're thinking in 
a strictly formal sense: they're restricting their world view to what 
they see within the language.

Then they look at programs in a dynamically-checked language, and see 
checks happening at runtime, and they assume that this means that the 
program is untyped.

It's certainly close enough to say that the *language* is untyped.  One 
could also say that a program, as seen by the language, is untyped.

But a program as seen by the programmer has types: the programmer 
performs (static) type inference when reasoning about the program, and 
debugs those inferences when debugging the program, finally ending up 
with a program which has a perfectly good type scheme.  It's may be 
messy compared to say an HM type scheme, and it's usually not proved to 
be perfect, but that again is an orthogonal issue.

Mathematicians operated for thousands of years without automated 
checking of proofs, so you can't argue that because a 
dynamically-checked program hasn't had its type scheme proved correct, 
that it somehow doesn't have types.  That would be a bit like arguing 
that we didn't have Math until automated theorem provers came along.

These observations affect the battle over terminology in various ways. 
I'll enumerate a few.

1. Untyped is really quite a misleading term, unless you're talking 
about something like the untyped lambda calculus.  That, I will agree, 
can reasonably be called untyped.

2.  Type-free as suggested by Chris Smith is equally misleading.  It's 
only correct in a relative sense, in a narrow formal domain which 
ignores the process of reasoning about types which is inevitably 
performed by human programmers, in any language.

3.  A really natural term to refer to types which programmers reason 
about, even if they are not statically checked, is latent types.  It 
captures the situation very well intuitively, and it has plenty of 
precedent -- e.g. it's mentioned in the Scheme reports, R5RS and its 
predecessors, going back at least a decade or so (haven't dug to check 
when it first appeared).

4.  Type theorists like to say that universal types can be used in a 
statically-typed language to subsume dynamic types.  Those theorists 
are right, the term dynamic type, with its inextricable association 
with runtime checks, definitely gets in the way here.  It might be 
enlightening to rephrase this: what's really happening is that universal 
types allow you to embed a latently-typed program in a 
statically-checked language.  The latent types don't go anywhere, 
they're still latent in the program with universal types.  The program's 
statically-checked type scheme doesn't capture the latent types. 
Describing it in these terms clarifies what's actually happening.

5.  Dynamic checks are only part of the mechanism used to verify latent 
types.  They shouldn't be focused on as being the primary equivalent to 
  static checks.  The closest equivalent to the static checks is a 
combination of human reasoning and testing, in which dynamic checks play 
an important but ultimately not a fundamental part.  You could debug a 
program and get the type scheme correct without dynamic checks, it would 
just be more difficult.

So, will y'all just switch from using dynamically typed to latently 
typed, and stop talking about any real programs in real programming 
languages as being untyped or type-free, unless you really are 
talking about situations in which human reasoning 

Re: Iteration over recursion?

2006-06-21 Thread Nick Maclaren

In article [EMAIL PROTECTED],
Kay Schluehr [EMAIL PROTECTED] writes:
| 
| You might use a separate prime generator to produce prime factors. The
| factorize algorithm becomes quite simple and configurable by prime
| generators. For demonstration purposes I use the eratosthenes sieve.

That is a good point.  The differences between iteration and recursion
are well-understood (by some people, at least), but the difference
between those two and generators is not.  I have mixed feelings whether
they are a good idea or not, largely because I have never seen a
language that provides a declaration to guarantee that a generator is
'clean'.  And an unclean generator (e.g. one with side-effects) is a
most revolting object, from a software engineering (including validation)
point of view.

One good example of this is streaming input (I/O).  Traditional,
clean streaming input can be implemented efficiently and with good
error diagnostics.  The unclean C- and POSIX-like streaming input can't
be, or at least only one of the two can be provided at once.


Regards,
Nick Maclaren.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: What is Expressiveness in a Computer Language

2006-06-21 Thread Pascal Costanza
David Hopwood wrote:
 Pascal Costanza wrote:
 Rob Thorpe wrote:
 Pascal Costanza wrote:
 Matthias Blume wrote:
 Pascal Costanza [EMAIL PROTECTED] writes:

 (slot-value p 'address) is an attempt to access the field 'address in
 the object p. In many languages, the notation for this is p.address.

 Although the class definition for person doesn't mention the field
 address, the call to (eval (read)) allows the user to change the
 definition of the class person and update its existing
 instances. Therefore at runtime, the call to (slot-value p 'adress)
 has a chance to succeed.
 I am quite comfortable with the thought that this sort of evil would
 get rejected by a statically typed language. :-)
 This sort of feature is clearly not meant for you. ;-P
 To be fair though that kind of thing would only really be used while
 debugging a program.
 Its no different than adding a new member to a class while in the
 debugger.

 There are other places where you might add a slot to an object at
 runtime, but they would be done in tidier ways.
 Yes, but the question remains how a static type system can deal with
 this kind of updates.
 
 It's not difficult in principle:
 
  - for each class [*], define a function which converts an 'old' value of
that class to a 'new' value (the ability to do this is necessary anyway
to support some kinds of upgrade). A default conversion function may be
autogenerated if the class definition has changed only in minor ways.

Yep, this is more or less exactly how CLOS does it. (The conversion 
function is called update-instance-for-redefined-class, and you can 
provide your own methods on it.)

  - typecheck the new program and the conversion functions, using the old
type definitions for the argument of each conversion function, and the
new type definitions for its result.

The problem here is: The program is already executing, so this typecheck 
isn't performed at compile-time, in the strict sense of the word (i.e., 
before the program is deployed). It may still be a syntactic analysis, 
but you don't get the kind of guarantees anymore that you typically 
expect from a static type checker _before_ the program is started in the 
first place.

(It's really important to understand that the idea is to use this for 
deployed programs - albeit hopefully in a more structured fashion - and 
not only for debugging. The example I have given is an extreme one that 
you would probably not use as such in a real-world setting, but it 
shows that there is a boundary beyond which static type systems cannot 
be used in a meaningful way anymore, at least as far as I can tell.)

  - have the debugger apply the conversions to all values, and then resume
the program.

In CLOS, this conversion is defined as part of the language proper, but 
this is mostly because Common Lisp doesn't make a sharp distinction 
between debugging capabilities and regular language features. (I think 
it's a good thing that there is no strong barrier against having 
debugging capabilities in a deployed program.)


 [*] or nearest equivalent in a non-OO language.


Pascal

-- 
3rd European Lisp Workshop
July 3 - Nantes, France - co-located with ECOOP 2006
http://lisp-ecoop06.bknr.net/
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: How to truncate/round-off decimal numbers?

2006-06-21 Thread per9000
Hi,

just a thought: if you *always* work with floats with two decimals,
you are in fact working with integers, but you represent them as a
floats - confusing for the internal representation.

So why not work with int(float * 100) instead? This way you only have
to take care of roundoffs etc when dividing.

int (+|-|*) int = int
int / int = int / int + int % int

Integers are nice, me like integers.

/per9000

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


Re: How to truncate/round-off decimal numbers?

2006-06-21 Thread per9000
oops, should be something like this:

int / int = int / int, int % int

/per9000

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


wxStyledTextCtrl and sql syntax highlightning

2006-06-21 Thread pierre_py
Hi.
I use wxPy version 2.4.2 for Python 2.3.

Now I wanted to use the wxStyledTextCtrl for viewing (editing) of sql
code.

I have the following:
self.__m_styled_text_ctrl = wxPython.stc.wxStyledTextCtrl(
self, wx.NewId(),
style=wxPython.wx.wxNO_FULL_REPAINT_ON_RESIZE)
self.__m_styled_text_ctrl.SetLexer(wxPython.stc.wxSTC_LEX_SQL)
self.__m_styled_text_ctrl.SetProperty(fold, 1)
self.__m_styled_text_ctrl.SetMargins(0,0)
self.__m_styled_text_ctrl.SetKeyWords(0, SQL_KEYWORDS)

Where sql_keywords is string with space separated sql keywords.

When i add text to the ctrl i don't get the right highlightning.

What do i do wrong and what else do i have to specify?

thx in advance

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


Re: dynamic inheritance

2006-06-21 Thread Michele Simionato
alf wrote:
 I did not think about any particular problem, just thought it would be
 cool to abstract out the base class. In fact you can do that in C++ (to
 some extend) using templates and parameterizing the base class.

Python is ways cooler than C++. This is a sensible use case where you
may
want to change the base class at runtime:

 class Base(object):
... pass

 class BasePlusDebugMethods(Base):
... pass
...

 class C(Base):
... pass

 C.__bases__ = (BasePlusDebugMethods,)

 C.mro()
[class '__main__.C',
 class '__main__.BasePlusDebugMethods',
 class '__main__.Base',
 type 'object']

(i.e. in a running program with a problem you can add debug methods and
possibily
even fix the problem without restarting the program).

   Michele Simionato

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


Are any python-LVM bindings available?

2006-06-21 Thread Meta
I need to execute LVM operations from within python ... are there any 
packages containing direct bindings available or is forking a shell the 
only solution? Any thoughts would be much appreciated.

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


Search substring in a string and get index of all occurances

2006-06-21 Thread Nico Grubert
Hi there,

I would like to search for a substring in a string and get the index of 
all occurances.

mystring = 'John has a really nice powerbook.'
substr = ' '  # space

I would like to get this list:
   [4, 8, 10, 17, 22]

How can I do that without using for i in mystring which might be 
expensive for large strings?

Thanks in advance,
  Nico
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Python SHA-1 as a method for unique file identification ? [help!]

2006-06-21 Thread Tim Peters
[EP [EMAIL PROTECTED]]
 This inquiry may either turn out to be about the suitability of the
 SHA-1 (160 bit digest) for file identification, the sha function in
 Python ... or about some error in my script

It's your script.  Always open binary files in binary mode.  It's a
disaster on Windows if you don't (if you open a file in text mode on
Windows, the OS pretends that EOF occurs at the first instance of byte
chr(26) -- this is an ancient Windows behavior that made an odd kind
of sense in the mists of history, and has persisted in worship of
Backward Compatibility despite that the original reason for it went
away _long_ ago).

...

 I am trying to reduce duplicate files in storage at home - I have a
 large number files (e.g. MP3s) which have been stored on disk multiple
 times under different names or on different paths.

...

 All seemed to be working until I examined my log files and found files
 with the same SHA digest had different sizes according to
 os.stat(fpath).st_size .  This is on Windows XP.

 -  Am I expecting too much of SHA-1?

No.  SHA-1 should work well for this.

 -  Is it that the os.stat data on Windows cannot be trusted?

It can be trusted to the extent that anything on Windows can be trusted ;-)

...
 def hashit(pth):
 Takes a file path and returns a SHA hash of its string
 fs=open(pth,'r').read()

Make that 'rb' instead of 'r', and your problem will go away.

Do note that there are faster ways to go about this.  For example, if
a particular file has a unique size among the files you're looking at,
there's no reason to even open that file (let alone compute its hash).
 Group the files by size, and within a size group you can find
duplicates by, e.g., first comparing their initial 16 bytes, then the
next 32, then the next 64 ... etc.  If duplicates are uncommon, this
can be a huge savings.  For example, here's output from an old
dup-finding Python program of mine run over a directory tree which
happens to contain no duplicates:

Files
-
Total   10,718
Unique  10,718
Duplicate0
# w/ unique size10,053
# w/ unique prefix 665

Bytes
-
Total  1,401,668,015
Unique 1,401,668,015
Duplicate  0
Read  76,688
Excess76,688

That last two lines mean it actually read a total of only about 77,000
file bytes on its way to proving there were no duplicates among about
11,000 files spanning about 1.4 gigabytes.

No hashes are computed by that program.  I'd use a hash if instead I
were going to save a persistent (across runs) set of known hashes, so
that answering here's a new file -- same as one I already have?
could be done by computing its hash.  While the program above
generally reads amazingly few file bytes, it hammers the OS file
directory services, and it would go faster to compute a hash of a new
file than to run the whole analysis again.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: How to truncate/round-off decimal numbers?

2006-06-21 Thread jean-michel bain-cornu
 just a thought: if you *always* work with floats with two decimals,
 you are in fact working with integers, but you represent them as a
 floats - confusing for the internal representation.
 
 So why not work with int(float * 100) instead? This way you only have
 to take care of roundoffs etc when dividing.
And why won't you work with decimal module ?
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Search substring in a string and get index of all occurances

2006-06-21 Thread Pierre Quentel
mystring = 'John has a really nice powerbook.'
substr = ' '  # space

pos = 0
indices = []
while True:
i = mystring.find(substr,pos)
if i==-1:
break
indices.append(i)
pos = i+1
print indices
 [4, 8, 10, 17, 22]

Pierre

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


Re: wxStyledTextCtrl and sql syntax highlightning

2006-06-21 Thread jean-michel bain-cornu
 I have the following:
 self.__m_styled_text_ctrl = wxPython.stc.wxStyledTextCtrl(
 self, wx.NewId(),
 style=wxPython.wx.wxNO_FULL_REPAINT_ON_RESIZE)
 self.__m_styled_text_ctrl.SetLexer(wxPython.stc.wxSTC_LEX_SQL)
 self.__m_styled_text_ctrl.SetProperty(fold, 1)
 self.__m_styled_text_ctrl.SetMargins(0,0)
 self.__m_styled_text_ctrl.SetKeyWords(0, SQL_KEYWORDS)
Hi Pierre,
I'd like to do some tests with your stuff, but I'd appreciate to have a 
working sample. Would you like to post it ?
Regards,
jm
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: How to truncate/round-off decimal numbers?

2006-06-21 Thread Nick Maclaren

In article [EMAIL PROTECTED],
per9000 [EMAIL PROTECTED] writes:
| 
| just a thought: if you *always* work with floats with two decimals,
| you are in fact working with integers, but you represent them as a
| floats - confusing for the internal representation.

No, you aren't - you are working with fixed-point, which is something
that is neither integers nor floating-point, but is somewhere in
between.  I am (just) old enough to remember when it was used for
numeric work, and to have used it for that myself, but not old enough
to have done any numeric work using fixed-point hardware.

| So why not work with int(float * 100) instead? This way you only have
| to take care of roundoffs etc when dividing.

And multiplying, and calling most mathematical functions.


Regards,
Nick Maclaren.
-- 
http://mail.python.org/mailman/listinfo/python-list


OT: wxPython GUI designer

2006-06-21 Thread Frithiof Andreas Jensen

Don Taylor [EMAIL PROTECTED] wrote in message
news:[EMAIL PROTECTED]
 I find it easy to use sizers in
 wxGlade.

Just gave is a spin yesterday: How does on fix the size of  layout; I
can only manage to get sizers to distribute space evently amongst the
fields, which is *not* what I want.


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


Re: What is Expressiveness in a Computer Language

2006-06-21 Thread Torben Ægidius Mogensen
Rob Thorpe [EMAIL PROTECTED] writes:

 Andreas Rossberg wrote:

  No, variables are insignificant in this context. You can consider a
  language without variables at all (such languages exist, and they can
  even be Turing-complete) and still have evaluation, values, and a
  non-trivial type system.
 
 Hmm.  You're right, ML is no-where in my definition since it has no
 variables.

That's not true.  ML has variables in the mathematical sense of
variables -- symbols that can be associated with different values at
different times.  What it doesn't have is mutable variables (though it
can get the effect of those by having variables be immutable
references to mutable memory locations).

What Andreas was alluding to was presumably FP-style languages where
functions or relations are built by composing functions or relations
without ever naming values.

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


Re: Specifing arguments type for a function

2006-06-21 Thread Mike Duffy
Paolo Pantaleo wrote:
 I have a function

 def f(the_arg):
 ...

 and I want to state that the_arg must be only of a certain type
 (actually a list). Is there a way to do that?

I wrote a cool function decorator just for that purpose. It's posted on
the Python Decorator Library at:

http://wiki.python.org/moin/PythonDecoratorLibrary#head-308f2b3507ca91800def19d813348f78db34303e


If you use it, you will be able to simply write:

@accepts(list)
def f(the_arg):
...

and you will get a warning message if the_arg is not a list. Or, if you
want an exception raised, then just:

@accepts(list, debug=2)
def f(the_arg):
...

Let me know what you think, if you do end up using it. I'm eager for
feedback.

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


Re: separation events

2006-06-21 Thread Bruno Desthuilliers
Ghido wrote:
 Hi all, i'm writing a software with python and wxpython for manage the
 quality/environmental/security system for the my factory. I want to
 separate the gui structure from the events and database operations for
 obtain a very modular software, for this reason i start to use
 sqlalchemy. Unfortunately i don't understand if is possibile to have a
 file with only the gui structure and another file with the database
 operations and the events of the gui. It is possibile?

You may want to look for MVC (Model/View/Controller).

 the use of
 sqlalchemy is a good thing?
 Thanks a lot
 
 Ghido
 


-- 
bruno desthuilliers
python -c print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in '[EMAIL PROTECTED]'.split('@')])
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: What is Expressiveness in a Computer Language

2006-06-21 Thread Andreas Rossberg
David Hopwood wrote:
 
 Oh, but it *does* make sense to talk about dynamic tagging in a statically
 typed language.

It even makes perfect sense to talk about dynamic typing in a statically 
typed language - but keeping the terminology straight, this rather 
refers to something like described in the well-known paper of the same 
title (and its numerous follow-ups):

   Martin Abadi, Luca Cardelli, Benjamin Pierce, Gordon Plotkin
   Dynamic typing in a statically-typed language.
   Proc. 16th Symposium on Principles of Programming Languages, 1989
   / TOPLAS 13(2), 1991

Note how this is totally different from simple tagging, because it deals 
with real types at runtime.

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


Re: What is Expressiveness in a Computer Language

2006-06-21 Thread Rob Thorpe
Matthias Blume wrote:
 Rob Thorpe [EMAIL PROTECTED] writes:

  I think we're discussing this at cross-purposes.  In a language like C
  or another statically typed language there is no information passed
  with values indicating their type.

 You seem to be confusing does not have a type with no type
 information is passed at runtime.

  Have a look in a C compiler if you don't believe me.

 Believe me, I have.

In a C compiler the compiler has no idea what the values are in the
program.
It knows only their type in that it knows the type of the variable they
are contained within.
Would you agree with that?

  No it doesn't. Casting reinterprets a value of one type as a value of
  another type.
  There is a difference.  If I cast an unsigned integer 20 to a
  signed integer in C on the machine I'm using then the result I will get
  will not make any sense.

 Which result are you getting?  What does it mean to make sense?

Well the right one actually, bad example.

But, if I cast an unsigned int 25 to signed I get -1794967296.

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


help() on stdout.closed

2006-06-21 Thread Pekka Karjalainen
Python 2.4.1 (#1, May 16 2005, 15:19:29)
[GCC 4.0.0 20050512 (Red Hat 4.0.0-5)] on linux2
Type help, copyright, credits or license for more information.
 from sys import stdout
 help (stdout.closed) 

If I do this, it gives me help on the bool object. Also:

 stdout.closed.__doc__
'bool(x) - bool\n\nReturns True when the argument x is true, False 
otherwise.\nThe builtins True and False are the only two instances of the 
class bool.\nThe class bool is a subclass of the class int, and cannot be 
subclassed.'

What's going on here? Other docstrings in sys.stdout work fine.

Pekka (uses 2.4.3 on another comp)
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: What is Expressiveness in a Computer Language

2006-06-21 Thread Andreas Rossberg
Rob Thorpe wrote:
 
 I think this should make it clear.  If I have a xyz in lisp I know it
 is a string.
 If I have xyz in an untyped language like assembler it may be
 anything, two pointers in binary, an integer, a bitfield.  There is no
 data at compile time or runtime to tell what it is, the programmer has
 to remember.

You have to distinguish between values (at the level of language 
semantics) and their low-level representation (at the implementation 
level). In a high-level language, the latter should be completely 
immaterial to the semantics, and hence not interesting for the discussion.

No, variables are insignificant in this context. You can consider a
language without variables at all (such languages exist, and they can
even be Turing-complete) and still have evaluation, values, and a
non-trivial type system.
 
 Hmm.  You're right, ML is no-where in my definition since it has no
 variables.

Um, it has. Mind you, it has no /mutable/ variables, but that was not 
even what I was talking about.

But the value itself has no type

You mean that the type of the value is not represented at runtime? True,
but that's simply because the type system is static. It's not the same
as saying it has no type.
 
 Well, is it even represented at compile time?
 The compiler doesn't know in general what values will exist at runtime,
 it knows only what types variables have.  Sometimes it only has partial
 knowledge and sometimes the programmer deliberately overrides it.  From
 what knowledge it you could say it know what types values will have.

Again, variables are insignificant. From the structure of an expression 
the type system derives the type of the resulting value. An expression 
may contain variables, and then the type system generally must know (or 
be able to derive) their types too, but that's a separate issue. Most 
values are anonymous. Nevertheless their types are known.

 Unfortunately it's often necessary to break static type systems.

Your definitely using the wrong static language then. ;-)

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


What's the best way to wrap a whole script in try..except?

2006-06-21 Thread Hari Sekhon
I want to wrap a whole script in try ... except. What is the best way of 
doing this?

Consider the following: -

try:
import modules

CODE

def notifyme(traceback):
   code to tell me there is a problem

except Exception, traceback:
notifyme(traceback)


Would this code not work because if any part of CODE encounters an 
exception then it won't reach the notifyme() function definition and 
therefore the whole thing won't work and I won't get notified when a 
traceback occurs, in fact the call to notifyme() under except will 
itself probably trace back as well!

Do I have to instead do:

import a couple of modules
def notifyme():
code to tell me there is a problem

try:
CODE

except Exception, traceback:
notifyme(traceback)


How you you handle this?


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


Re: help() on stdout.closed

2006-06-21 Thread Jon Ribbens
In article [EMAIL PROTECTED], Pekka Karjalainen wrote:
 from sys import stdout
 help (stdout.closed) 
 
 If I do this, it gives me help on the bool object.

stdout.closed is a bool. What were you expecting it to show you?
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: help() on stdout.closed

2006-06-21 Thread Fredrik Lundh
Pekka Karjalainen wrote:

 from sys import stdout
 help (stdout.closed)

 If I do this, it gives me help on the bool object.

that's probably because sys.stdout.closed *is* a bool object:

 sys.stdout.closed
False
 type(sys.stdout.closed)
type 'bool'

there's no way the reflection system can figure out how a given boolean was
created; all it knows is that it gets an object of a given type.

 Other docstrings in sys.stdout work fine.

have you tried things like

 help(sys.stdout.name)

and

 help(sys.stdout.write(hello))

?

/F 



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


Re: What's the best way to wrap a whole script in try..except?

2006-06-21 Thread Jon Ribbens
In article [EMAIL PROTECTED], Hari Sekhon wrote:
 I want to wrap a whole script in try ... except. What is the best way of 
 doing this?

You could do this maybe:

  import sys

  def excepthook(exc_type, exc_value, tb):
import modules_needed_to_notify_exception
...

  sys.excepthook = excepthook

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


Re: What's the best way to wrap a whole script in try..except?

2006-06-21 Thread Bruno Desthuilliers
Hari Sekhon wrote:
 I want to wrap a whole script in try ... except. What is the best way of
 doing this?
 
 Consider the following: -
 
 try:
import modules
 
CODE
 
def notifyme(traceback):
   code to tell me there is a problem
 
 except Exception, traceback:
notifyme(traceback)
 
 
 Would this code not work because if any part of CODE encounters an
 exception then it won't reach the notifyme() function definition and
 therefore the whole thing won't work and I won't get notified when a
 traceback occurs, in fact the call to notifyme() under except will
 itself probably trace back as well!

Yes.

 Do I have to instead do:
 
 import a couple of modules
 def notifyme():
code to tell me there is a problem
 
 try:
CODE
 
 except Exception, traceback:
notifyme(traceback)
 

Would work, but...

 How you you handle this?

I don't put the main logic at the top level - I use a main() function.

import some modules
def notifyme(e):
  # code here...

def main(*args):
  try:
# code here
return 0

  except Exception, e:
notifyme(e)
return some-non-zero-error-code

if __name__ == '__main__':
  import sys
  sys.exit(main(*sys.argv))

-- 
bruno desthuilliers
python -c print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in '[EMAIL PROTECTED]'.split('@')])
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: difference between import from mod.func() and x=mod.func()

2006-06-21 Thread Hari Sekhon
I take it that it's not worth listening to that tutorial and just using good old import from, which I suspect is better anyway since it imports less...uneducated premature optimisation - I take it this is insulting a that programmer's progexuality...!
import from it is then unless anybody has anything else to say on the matter.ThanksHariOn 20/06/06, Fredrik Lundh
 [EMAIL PROTECTED] wrote:
Hari Sekhon wrote: What is the difference in terms of efficiency and speed between from os import path and import os path=os.paththe only difference is that the former only sets the path variable, while the
latter leaves both os and path in your namespace. I would think that the import from would be better, just curious since I read somewhere on the web, some guy's code tutorial where he did the
 latter and said it was for efficiency/speed.sounds like uneducated premature optimization to me./F--
http://mail.python.org/mailman/listinfo/python-list
-- 
http://mail.python.org/mailman/listinfo/python-list

Re: Search substring in a string and get index of all occurances

2006-06-21 Thread Fredrik Lundh
Nico Grubert wrote:

 I would like to search for a substring in a string and get the index of
 all occurances.

 mystring = 'John has a really nice powerbook.'
 substr = ' '  # space

 I would like to get this list:
   [4, 8, 10, 17, 22]

the find and index methods take an optional start argument, so the obvious
way to do this is to use a simple loop; e.g.

result = []; pos = -1
try:
while 1:
pos = mystring.index(substr, pos+1)
result.append(pos)
except ValueError:
pass # done

if you prefer one-liners, you can use the RE engine instead:

result = [m.start() for m in re.finditer(re.escape(substr), mystring)]

this has a much higher setup overhead, but can be faster than the loop form
for some kinds of data (at least in 2.4 and earlier).

...and if you're going to look for the same substring a lot, you can factor out
the escape/compile step:

substr_scanner = re.compile(re.escape(substr)).finditer

result = [m.start() for m in substr_scanner(mystring)]

if you're not 100% sure you need all the matches later on, you can use a
generator expression instead of the list comprehension:

result = (m.start() for m in re.finditer(re.escape(substr), mystring))

...

for pos in result:
...
if pos  1000:
break # won't need the rest

hope this helps!

/F 



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


Re: WinPops

2006-06-21 Thread Hari Sekhon
If you were going to do this you may as well just do something likeif sys.platform='win32': os.system('net send somemachine somemessage')elif sys.platform[:5]='linux' os.system('smblcient -M machine etc...')
This would be more portable and simpler than the alternatives I've seen. It would be better if there was just a cross platform library for this protocol so you could justimport winpopwinpop.send

(host,message)Too much to ask?HariOn 01/06/06, Peter Gsellmann [EMAIL PROTECTED]
 wrote:Roger Upole wrote: Hari Sekhon 
[EMAIL PROTECTED] wrote in message news:[EMAIL PROTECTED] Hi, Is there a way of sending winpops (Windows Pop-Up / Net Send messages)
 in python? Perhaps some library or something that I can use under both Windows and Linux? Hari On Windows, you can use win32net.NetMessageBufferSend
. RogerOn Linux, i use the smbclient binary:from subprocess import *q=Popen(['smbclient','-M','maggy'],stdin=PIPE)q.stdin.write('hello!')q.stdin.close()q.wait
()Peter--http://mail.python.org/mailman/listinfo/python-list
-- 
http://mail.python.org/mailman/listinfo/python-list

Re: wxStyledTextCtrl and sql syntax highlightning

2006-06-21 Thread pierre_py
Hi.

Thanks it works now .. i must reset the default styles with
StyleClearAll and then set the styles apropriate again.

Is there a way that the keyword list isn't case sensitive, as sql
isn't.

reg,
Pierre

jean-michel bain-cornu wrote:
  I have the following:
  self.__m_styled_text_ctrl = wxPython.stc.wxStyledTextCtrl(
  self, wx.NewId(),
  style=wxPython.wx.wxNO_FULL_REPAINT_ON_RESIZE)
  self.__m_styled_text_ctrl.SetLexer(wxPython.stc.wxSTC_LEX_SQL)
  self.__m_styled_text_ctrl.SetProperty(fold, 1)
  self.__m_styled_text_ctrl.SetMargins(0,0)
  self.__m_styled_text_ctrl.SetKeyWords(0, SQL_KEYWORDS)
 Hi Pierre,
 I'd like to do some tests with your stuff, but I'd appreciate to have a
 working sample. Would you like to post it ?
 Regards,
 jm

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


Re: memory error with zipfile module

2006-06-21 Thread Hari Sekhon
On 20/05/06, Bruno Desthuilliers [EMAIL PROTECTED] wrote:
Roger Miller a écrit : The basic problem is that the zipfile interface only reads and writes whole files, so it may perform poorly or fail on huge files. At one time I implemented a patch to allow reading files in chunks. However I
 believe that the current interface has too many problems to solve by incremental patching,Yeps, that was the general tone of some thread on python-dev. And fromwhat I saw of the source code, it may effectively not be the cleanest
part of the stdlib. But what, it does what it was written for at first :provide working support for zipped packages. and that a zipfile2 module is probably warranted. (Is anyone working on this?)
Seems like Bob Ippolito was on the rank, but I guess you'll get betteranswers on python-dev. In the meantime I think the best solution is often to just run an external zip/unzip utility to do the heavy lifting.
Indeed !-)But while having zip/unzip installed OOTB on a unix-like system is closeto warrented, it may not be the case on Windows.--
http://mail.python.org/mailman/listinfo/python-listShame, I would like to try to improve this but seeing as Roger Miller
has already submitted a patch I don't know how much I can do for this.
In the end I resorted to using an external zip utility via os.system().I'll be interested to know if there is any work
done on improving this as I'm in favour of native python usage, rather
than using os.system() and relying on the operating system having a zip
command, which I'm not convinced is the case on all windows machines,
and also, I'm sure gentoo installs don't have zip by default, since I
had to emerge it on a server for this script to work.
Is it me or is having to use os.system() all the time
symtomatic of a deficiency/things which are missing from python as a
language? Not that I'm complaining, I'm just curious... I'm a
fledgeling programmer so I don't mind being gently corrected by any
veterans around.
Hari
-- 
http://mail.python.org/mailman/listinfo/python-list

embedded Python calling app via COM

2006-06-21 Thread Jim
I have a C++ app which fires up a Python script using C API calls.
That script operates the app via Automation calls, like this:

from win32com.client import *
from mywrapper import *

myapp = Application()
myapp.Visible = True
mydoc = myapp.Documents.Open(...)

My problem is to make sure the instance of myapp is the same one I am
calling from.  The above code starts up a new instance of the app,
which is not what I want.  In other words I need something like a
GetObject instead of a CreateObject, and I need some way to identify
the calling app so I can tell GetObject about it.

Before I go and do something hack, I thought I'd see if anyone else is
in this situation and knows a good way to do the job.

  -- Jim

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


Re: What is Expressiveness in a Computer Language

2006-06-21 Thread Joachim Durchholz
Andreas Rossberg schrieb:
 Rob Thorpe wrote:
 Hmm.  You're right, ML is no-where in my definition since it has no
 variables.
 
 Um, it has. Mind you, it has no /mutable/ variables, but that was not 
 even what I was talking about.

Indeed. A (possibly nonexhaustive) list of program entities that (can) 
have type would comprise of mutable variables, immutable variables (i.e. 
constants and parameter names), and functions resp. their results.

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


Re: What is Expressiveness in a Computer Language

2006-06-21 Thread Joachim Durchholz
Matthias Blume schrieb:
 Joachim Durchholz [EMAIL PROTECTED] writes:
 
 Matthias Blume schrieb:
 Perhaps better: A language is statically typed if its definition
 includes (or ever better: is based on) a static type system, i.e., a
 static semantics with typing judgments derivable by typing rules.
 Usually typing judgmets associate program phrases (expressions) with
 types given a typing environment.
 This is defining a single term (statically typed) using three
 undefined terms (typing judgements, typing rules, typing
 environment).
 
 This was not meant to be a rigorous definition.

Rigorous or not, introducing additional undefined terms doesn't help 
with explaining a term.

 Also, I'm not going to repeat the textbook definitions for those
 three standard terms here.

These terms certainly aren't standard for Perl, Python, Java, or Lisp, 
and they aren't even standard for topics covered on comp.lang.functional 
(which includes dynamically-typed languages after all).

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


Re: How to truncate/round-off decimal numbers?

2006-06-21 Thread per9000
Nick Maclaren wrote:
 | just a thought: if you *always* work with floats with two decimals,
 | you are in fact working with integers, but you represent them as a
 | floats - confusing for the internal representation.

 No, you aren't - you are working with fixed-point

Nick, your answer has so many layers, I'll try to explain how I think
:-D

1) if you use integers you can think of them as having one part bigger
than 100 and one part smaller than 100, like so:
 a = 11122
 (a/100,a%100)
(111, 22)
Here the output 111,22 looks like something else than an integer, but
this is just a matter of representation. a *is* an integer, but we
represent it *as if it was* a decimal number. (Compare with
(minutes,seconds) or (euro,cents) or (feet,inch) or any other
arbitrary position system)

2) If we use floats with two decimals
 b = 222.33
 b
222.330001
they look like fix-point numbers (I had to look it up
http://en.wikipedia.org/wiki/Fixed-point :-D) but python stores it
(correct me if I am wrong) as a float (or double or quad or whatever).
If we want to work with fix-point aritmetics we have to invent new
functions to do most math.

3) Most decimal numbers cannot be stored exactly as floats - that is
why b gave the ugly print. But some can, f.x
 quart = 0.25
 quart
0.25
quart translates to a finite decimal number in binary (0.01 I think).

The point is: representing should-be integers as floats makes you loose
precision (negligable probalby but still...).

4)
 | So why not work with int(float * 100) instead? This way you only have
 | to take care of roundoffs etc when dividing.

 And multiplying, and calling most mathematical functions.
You are correct of course. My mistake.

But, the multiplication is exact before you start rounding off - I wont
start counting ordos for int*int vs. float*float, but it could have
some advantages
 a
11122
 b
22233
 a*b
247275426
 (a*b/1,a*b%1)
(24727, 5426)
On the other hand you will quickly loose accuracy if you perform
multiple multiplications or divisions or use other mathematical
functions.

5) So, when could this way of thinking be useful? Well, rarely, but if
you only add/subtract decimals and/or multiply decimals with whole
numbers or if you want to use some non-metric system to do scientific
stuff (compute square feet when having (feet1,inch1) * (feet2,inch2)
assuming that inches are atomic.)

This could of course be extended to
(feet, inch, quarter_of_afoot, sixteeth_of_a_foot) if you'd like - it
is all a matter of representation.

Regards,
Per

It is a gift. A gift to the foes of 'the Terrorists'. Why not
use this 'terrorism'? Long has my father, 'George Bush Sr',
kept the forces of 'the terrorists' at bay. By the blood of
our people are your lands kept safe. Give 'the land of the
brave' the weapon of the enemy. Let us use it against him.

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


Re: What is Expressiveness in a Computer Language

2006-06-21 Thread Joachim Durchholz
Pascal Costanza schrieb:
 (It's really important to understand that the idea is to use this for 
 deployed programs - albeit hopefully in a more structured fashion - and 
 not only for debugging. The example I have given is an extreme one that 
 you would probably not use as such in a real-world setting, but it 
 shows that there is a boundary beyond which static type systems cannot 
 be used in a meaningful way anymore, at least as far as I can tell.)

As soon as the running program can be updated, the distinction between 
static (compile time) and dynamic (run time) blurs.
You can still erect a definition for such a case, but it needs to refer 
to the update process, and hence becomes language-specific. In other 
words, language-independent definitions of dynamic and static typing 
won't give any meaningful results for such languages.

I'd say it makes more sense to talk about what advantages of static vs. 
dynamic typing can be applied in such a situation.
E.g. one interesting topic would be the change in trade-offs: making 
sure that a type error cannot occur becomes much more difficult 
(particularly if the set of available types can change during an 
update), so static typing starts to lose some of its appeal; OTOH a good 
type system can give you a lot of guarantees even in such a situation, 
even if it might have to revert to the occasional run-time type check, 
so static checking still has its merits.

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


Re: What's the best way to wrap a whole script in try..except?

2006-06-21 Thread Hari Sekhon




Jon Ribbens wrote:

  In article [EMAIL PROTECTED], Hari Sekhon wrote:
  
  
I want to wrap a whole script in try ... except. What is the best way of 
doing this?

  
  
You could do this maybe:

  import sys

  def excepthook(exc_type, exc_value, tb):
import modules_needed_to_notify_exception
...

  sys.excepthook = excepthook

  import modules_needed_by_script
  ...
  

I've been trying this out and your method is by far the best I've seen.
This is overriding the default exception handler. 
I don't know the deep magic yet but it works nicely. Thanks!


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

Re: What is Expressiveness in a Computer Language

2006-06-21 Thread Chris Uppal
Anton van Straaten wrote:

 But a program as seen by the programmer has types: the programmer
 performs (static) type inference when reasoning about the program, and
 debugs those inferences when debugging the program, finally ending up
 with a program which has a perfectly good type scheme.  It's may be
 messy compared to say an HM type scheme, and it's usually not proved to
 be perfect, but that again is an orthogonal issue.

I like this way of looking at it.

-- chris


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


Re: What is Expressiveness in a Computer Language

2006-06-21 Thread Chris Uppal
Darren New wrote:

[me:]
  Personally, I would be quite happy to go there -- I dislike the idea
  that a value has a specific inherent type.

 Interestingly, Ada defines a type as a collection of values. It works
 quite well, when one consistantly applies the definition.

I have never been very happy with relating type to sets of values (objects,
whatever).  I'm not saying that it's formally wrong (but see below), but it
doesn't fit with my intuitions very well -- most noticeably in that the sets
are generally unbounded so you have to ask where the (intentional) definitions
come from.

Two other notions of what type means might be interesting, both come from
attempts to create type-inference mechanisms for Smalltalk or related
languages.  Clearly one can't use the set-of-values approach for these purposes
;-)   One approach takes type to mean set of classes the other takes a
finer-grained approach and takes it to mean set of selectors (where
selector is Smalltalk for name of a method -- or, more accurately, name of
a message).

But I would rather leave the question of what a type is open, and consider
that to be merely part of the type system.  For instance the hypothetical
nullability analysis type system I mentioned might have only three types
NULLABLE, ALWAYSNULL, and NEVERNULL.

It's worth noting, too, that (in some sense) the type of an object can change
over time[*].  That can be handled readily (if not perfectly) in the informal
internal type system(s) which programmers run in their heads (pace the very
sensible post by Anton van Straaten today in this thread -- several branches
away), but cannot be handled by a type system based on sets-of-values (and is
also a counter-example to the idea that the dynamic type of an object/value
can be identified with its tag).

([*] if the set of operations in which it can legitimately partake changes.
That can happen explicitly in Smalltalk (using DNU proxies for instance if the
proxied object changes, or even using #becomeA:), but can happen anyway in less
free languages -- the State Pattern for instance, or even (arguably) in the
difference between an empty list and a non-empty list).

-- chris


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


Re: What is Expressiveness in a Computer Language

2006-06-21 Thread Chris Uppal
David Hopwood wrote:

 When people talk
 about types being associated with values in a latently typed or
 dynamically typed language, they really mean *tag*, not type.

I don't think that's true.  Maybe /some/ people do confuse the two, but I am
certainly a counter-example ;-)

The tag (if any) is part of the runtime machinery (or, if not, then I don't
understand what you mean by the word), and while that is certainly a reasonably
approximation to the type of the object/value, it is only an approximation,
and -- what's more -- is only an approximation to the type as yielded by one
specific (albeit abstract, maybe even hypothetical) type system.

If I send #someMessage to a proxy object which has not had its referent set
(and assuming the default value, presumably some variant of nil, does not
understand #someMessage), then that's just as much a type error as sending
#someMessage to a variable holding a nil value.  If I then assign the referent
of the proxy to some object which does understand #someMessage, then it is not
a type error to send #someMessage to the proxy.  So the type has changed, but
nothing in the tag system of the language implementation has changed.

-- chris


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


Re: What is Expressiveness in a Computer Language

2006-06-21 Thread Chris Uppal
Chris Smith wrote:

  It would be interesting to see what a language designed specifically to
  support user-defined, pluggable, and perhaps composable, type systems
  would look like. [...]

 You mean in terms of a practical programming language?  If not, then
 lambda calculus is used in precisely this way for the static sense of
 types.

Good point.  I was actually thinking about what a practical language might look
like, but -- hell -- why not start with theory for once ? ;-)


 I think Marshall got this one right.  The two are accomplishing
 different things.  In one case (the dynamic case) I am safeguarding
 against negative consequences of the program behaving in certain non-
 sensical ways.  In the other (the static case) I am proving theorems
 about the impossibility of this non-sensical behavior ever happening.

And so conflating the two notions of type (-checking) as a kind of category
error ?  If so then I see what you mean, and it's a useful distinction, but am
unconvinced that it's /so/ helpful a perspective that I would want to exclude
other perspectives which /do/ see the two as more-or-less trivial variants on
the same underlying idea.

 I acknowledge those questions.  I believe they are valid.  I don't know
 the answers.  As an intuitive judgement call, I tend to think that
 knowing the correctness of these things is of considerable benefit to
 software development, because it means that I don't have as much to
 think about at any one point in time.  I can validly make more
 assumptions about my code and KNOW that they are correct.  I don't have
 to trace as many things back to their original source in a different
 module of code, or hunt down as much documentation.  I also, as a
 practical matter, get development tools that are more powerful.

Agreed that these are all positive benefits of static declarative (more or
less) type systems.

But then (slightly tongue-in-cheek) shouldn't you be agitating for Java's type
system to be stripped out (we hardly /need/ it since the JVM does latent typing
anyway), leaving the field free for more powerful or more specialised static
analysis ?


 (Whether it's possible to create the same for a dynamically typed
 language is a potentially interesting discussion; but as a practical
 matter, no matter what's possible, I still have better development tools
 for Java than for JavaScript when I do my job.)

Acknowledged.  Contrary-wise, I have better development tools in Smalltalk than
I ever expect to have in Java -- in part (only in part) because of the late
binding in Smalltalk and it's lack of insistence on declared types from an
arbitrarily chosen type system.


 On
 the other hand, I do like proving theorems, which means I am interested
 in type theory; if that type theory relates to programming, then that's
 great!  That's probably not the thing to say to ensure that my thoughts
 are relevant to the software development industry, but it's
 nevertheless the truth.

Saying it will probably win you more friends in comp.lang.functional than it
looses in comp.lang.java.programmer ;-)

-- chris


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


Re: Iteration over recursion?

2006-06-21 Thread Tim Peters
[Kay Schluehr]
 You might use a separate prime generator to produce prime factors. The
 factorize algorithm becomes quite simple and configurable by prime
 generators.

Alas, yours was _so_ simple that it always takes time proportional to
the largest prime factor of n (which may be n) instead of worst-case
time proportional to sqrt(n).  Repair that, and it's not quite so
simple anymore.  The speed of the sieve generator would also benefit a
lot by never looking at even integers, beyond an initial yield 2 ...
the OP said he was looking for speed more than elegance, and they're
not good buddies here ;-)

 def eratosthenes():
 memo = {}
 q = 2
 while True:
 p = memo.pop(q, None)
 if p is None:
 yield q
 memo[q*q] = q
 else:
 x = p + q
 while x in memo:
 x += p
 memo[x] = p
 q+=1

 def factorize(n, sieve = eratosthenes):
 if n = 1:
 return [n]
 factors = []
 primes = sieve()
 for q in primes:
 while n % q == 0:
 factors.append(q)
 n //= q
 if n == 1:
 return factors

At _some_ point you might think that's bound to be faster than only
skipping multiples of 2 and 3, because it does fewer divisions.  But
to get to a particular prime p, the sieve there has to go around its
outer loop about 3x as often as the trial() function goes around its
inner loop, and grows a dict with about p/ln(p) entries (while the
trial() function's memory use is constant), and those aren't free.

Applied to 991**2 (constructed so that both functions take time
proportional to sqrt(n)), on my box the factorize() function took 4x
longer than trial() (approximately 16 seconds versus 4).  Trial
division isn't practical for such large inputs, but I picked the
square of a large prime to give factorize() maximum advantage in
skipping division attempts (by the time we get to a prime p,
factorize() tries about p/ln(p) divisions, while trial() does about
p/3; so trial() does about ln(p)/3 times as many divisions as
factorize():  the larger the p we need, the larger that _factor_
gets).

Alas, it appears that made the dict so big that cache faults on dict
accesses more than wiped out the division advantage.  At the smaller
83**2, factorize() took only about 3.6x longer, despite losing
some of its relative division advantage.

In short, it's never what you think it is ;-)
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: What's the best way to wrap a whole script in try..except?

2006-06-21 Thread Hari Sekhon




Jon Ribbens wrote:

  In article [EMAIL PROTECTED], Hari Sekhon wrote:
  
  
I want to wrap a whole script in try ... except. What is the best way of 
doing this?

  
  
You could do this maybe:

  import sys

  def excepthook(exc_type, exc_value, tb):
import modules_needed_to_notify_exception
...

  sys.excepthook = excepthook

  import modules_needed_by_script
  ...
  

having tested this more, I was worried about a recursive call to
exception should an exception be raised inside the function but luckily
python deals and give you a double traceback.

batteries included indeed.

Thanks again

Hari


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

Re: Search substring in a string and get index of all occurances

2006-06-21 Thread Maric Michaud
Another variant, I feel this one more natural as it doesn't contain a 
C-looking infinite loop (also I made it a generator but this is not the 
topic).

In [160]: def indices(s, subs) :
   .: last = 0
   .: for ind, part in in enumerate(s.split(subs)[:-1]) :
   .: yield len(part) + last
   .: last = len(part) + last + len(subs)
   .:
   .:


In [161]: list(indices('John has a really nice powerbook.', ' '))
Out[161]: [4, 8, 10, 17, 22]

In [162]: list(indices('John has a really nice powerbook. John is my 
friend', 'John'))
Out[162]: [0, 34]

In [163]: mystring, substr
Out[163]: ('John has a really nice powerbook. John is my friend', 'John')

In [164]: for i in list(indices(mystring, substr)) : print 
mystring[i:i+len(substr)]
   .:
John
John

Actually it's even more efficient than Lundh's one for smaller strings (less 
than 1000 characters on my box) and slow down as strings go wider (slowly, 
seems to be a logarithmic progression) due to the split call resulting in 
creation of a new list.

I'd love str implement a xsplit(sub, start, end) method, so I could have 
wrote : enumerate(s.xsplit(subs, 0, -1)).


Le Mercredi 21 Juin 2006 10:28, Nico Grubert a écrit :
 Hi there,

 I would like to search for a substring in a string and get the index of
 all occurances.

 mystring = 'John has a really nice powerbook.'
 substr = ' '  # space

 I would like to get this list:
[4, 8, 10, 17, 22]

 How can I do that without using for i in mystring which might be
 expensive for large strings?

 Thanks in advance,
   Nico

-- 
_

Maric Michaud
_

Aristote - www.aristote.info
3 place des tapis
69004 Lyon
Tel: +33 426 880 097
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: help() on stdout.closed

2006-06-21 Thread Pekka Karjalainen
On 2006-06-21, Fredrik Lundh [EMAIL PROTECTED] wrote:
 have you tried things like
[...]

I have now. I'm not sure what the results are supposed to tell me, but I 
am not going to press the issue.

Suppose I had no idea what sys.stdout.closed was and wanted to find out. 
Where would I look it up?

Pekka


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


Re: help() on stdout.closed

2006-06-21 Thread Fredrik Lundh
Pekka Karjalainen wrote:

 Suppose I had no idea what sys.stdout.closed was and wanted to find out.
 Where would I look it up?

 help(sys.stdout)
...
 |  closed = attribute 'closed' of 'file' objects
 |  True if the file is closed
...

in case anyone feels like hacking, support for something like

 help(sys.stdout, closed)

might be useful, I think.

/F 



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


Re: help() on stdout.closed

2006-06-21 Thread Marc 'BlackJack' Rintsch
In [EMAIL PROTECTED], Pekka Karjalainen wrote:

 Suppose I had no idea what sys.stdout.closed was and wanted to find out. 
 Where would I look it up?

`sys.stdout` is a file (like) object:

http://docs.python.org/lib/bltin-file-objects.html

Ciao,
Marc 'BlackJack' Rintsch
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Iteration over recursion?

2006-06-21 Thread MTD
I've been testing my recursive function against your iterative
function, and yours is generally a quite steady 50% faster on
factorizing 2**n +/- 1 for  0  n  60. I think that, for a challenge,
I'll try to make a recursive function that matche or beats the
iterative function -- it's worth the experiment!

Cheers,
MTD

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


Re: Search substring in a string and get index of all occurances

2006-06-21 Thread Fredrik Lundh
Maric Michaud wrote:

 Another variant, I feel this one more natural as it doesn't contain a
 C-looking infinite loop

doing things in a convoluted way because you think that non-infinite while-
loops are not natural?  you can get help for that, you know ;-)

 Actually it's even more efficient than Lundh's one for smaller strings (less
 than 1000 characters on my box) and slow down as strings go wider (slowly,
 seems to be a logarithmic progression) due to the split call resulting in
 creation of a new list.

and a potentially large number of new strings.  there's a lot of string copying
going on in there...

/F 



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


Re: What is Expressiveness in a Computer Language

2006-06-21 Thread Rob Thorpe
 So, will y'all just switch from using dynamically typed to latently
 typed, and stop talking about any real programs in real programming
 languages as being untyped or type-free, unless you really are
 talking about situations in which human reasoning doesn't come into
 play?  I think you'll find it'll help to reason more clearly about this
 whole issue.

I agree with most of what you say except regarding untyped.

In machine language or most assembly the type of a variable is
something held only in the mind of the programmer writing it, and
nowhere else.  In latently typed languages though the programmer can
ask what they type of a particular value is.  There is a vast
difference to writing code in the latter kind of language to writing
code in assembly.

I would suggest that at least assembly should be referred to as
untyped.

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


Re: Search substring in a string and get index of all occurances

2006-06-21 Thread K.S.Sreeram
Maric Michaud wrote:
 Actually it's even more efficient than Lundh's

effbot's solution finds overlapping occurrences, whereas your solution
finds non-overlapping occurrences. So efficiency comparisons are not valid.

e.g:

indices( 'a', 'aa' )

your solution gives: 0,2
effbots's solution: 0,1,2,3

Regards
Sreeram




signature.asc
Description: OpenPGP digital signature
-- 
http://mail.python.org/mailman/listinfo/python-list

urllib2 OpenerDirector question on usage.

2006-06-21 Thread Ant
Hello all,

I am using urllib2 as a part of a web testing tool. One of the things I
am testing is the effect of two different people perforing the same
actions on the website - do they interfer with each other or not.

So to emulate this, I essentially have the following function:

def get_opener():
policy = cookielib.DefaultCookiePolicy(rfc2965=True)
cj = cookielib.CookieJar(policy)
return urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

Now am I right in thinking that since I am creating a separate
CookieJar for each opener, then creating two openers and using one for
each hypothetical user will achieve this effect - i.e. sessions will be
separate from each other in the app, since the openers will return
different session cookies back to the server.

Cheers,

Ant...

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


Re: Search substring in a string and get index of all occurances

2006-06-21 Thread Tim Chase
 I would like to search for a substring in a string and get the index of 
 all occurances.
 
 mystring = 'John has a really nice powerbook.'
 substr = ' '  # space
 
 I would like to get this list:
[4, 8, 10, 17, 22]
 
 How can I do that without using for i in mystring which might be 
 expensive for large strings?

  mystring = 'John has a really nice powerbook.'
  substr = ' '
  indicies = [i for i in xrange(len(mystring)) if 
mystring.startswith(substr, i)]
  indicies
[4, 8, 10, 17, 22]

is my preferred way of doing this.  Theoretically, it doesn't 
involve copying any bits of the string, as startswith(substring, 
offset) *should* be smart enough to do the check internally 
without copying pieces of mystring for comparison, just to return 
whether a submatch starts there.  Whether it *does* do that is 
another matter for the higher python powers.  It also uses xrange 
which shouldn't create a temporary array of indicies, but rather 
use an iteratable sequence generator.

It should work for finding all 3 instances of aba' in abababa 
as well, another common query of a similar form here on the list.

-tkc



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


Re: Segmentation fault only on Iinux

2006-06-21 Thread Kiran
Unfortunately (i guess), I am not doing any XML.  However, I am taking
the previous suggestion of putting print lines in every other line of
my code and then seeing where it crashes.  Hopefully, that will solve
the problem.

thanks for the suggestions everybody
-- Kiran

Frank Millman wrote:
 Kiran wrote:
  Hello All,
In my program, I have a main thread which is the GUI (wxPython) and
  then a thread which goes and reads data from a socket.  The reason this
  is in a different thread is because the data might take some time to
  come back, and I want to have the GUI to be responsive during this
  wait.
 
   When I run my program in Linux,   a segmentation fault occurs.  When I
  run it in Windows XP, it works just fine.
 

 Are you doing any xml processing? If so, it may be the same problem as
 described in this recent post -
 
 http://tinyurl.com/l3nr7
 
 Frank Millman

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


Re: What's the best way to wrap a whole script in try..except?

2006-06-21 Thread Hari Sekhon




Hari Sekhon wrote:

  
Jon Ribbens wrote:
  
In article [EMAIL PROTECTED], Hari Sekhon wrote:
  

  I want to wrap a whole script in try ... except. What is the best way of 
doing this?



You could do this maybe:

  import sys

  def excepthook(exc_type, exc_value, tb):
import modules_needed_to_notify_exception
...

  sys.excepthook = excepthook

  import modules_needed_by_script
  ...
  
  
having tested this more, I was worried about a recursive call to
exception should an exception be raised inside the function but luckily
python deals and give you a double traceback.
  
batteries included indeed.
  
Thanks again
  
Hari


I see that the exceptionhook is handed 3 things, the name of the error,
the explanation, and the traceback object. 

Does anybody know how I can get the linenumber of the error the way it
does normally, since this is very useful info when debugging. 
I think I need the traceback module but I can't see how to extract the
extra info from the traceback object passed to excepthook.





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

very strange bug coercing to Unicode: need string or buffer, int found

2006-06-21 Thread bussiere maillist
i truly didn't understand this error :Traceback (most recent call last): File D:\Programmation\FrancePaquet\FrancePaquet.py, line 77, in ? cabtri = zz + chiffrescabtri + clefcTypeError: coercing to Unicode: need string or buffer, int found
 if someone could help me i will be glad, this program worked yesterday.RegardsBussierehere is my program :import fileinput,stringdef calculclef(nombre): nombre2 = int(nombre)*10
 nombre = str(nombre2) taille = len(nombre) compteur = 0 nombrepair = 0 nombreimpair = 0 compteur = taille - 2 while compteur != -1: print 'nombre :' print nombre[compteur] + '\n'
 if compteur%2 : nombrepair = nombrepair + int(nombre[compteur]) print 'suite pair %d' % nombrepair else: nombreimpair = nombreimpair + int(nombre[compteur])
 print 'suite impair %d' % nombreimpair print compteur = compteur - 1 print nombreimpair print nombrepair clef = nombrepair*3+nombreimpair clef = 10-(clef%10)
 if clef == 10: clef = 0 return clefcompteclient = 8150souscompteclient = 03codeaffranc = 080partielibre = 142391print(LES CODES POSTAUX DOIVENT ETRE A LA FIN DU FICHIER CSV ! \n)
fichA=raw_input(Entrez le nom du fichier d'entree : )print (\n)fichC=raw_input(Entrez le nom du fichier de sortie : )print (\n)debutplage = raw_input(Entrez le numero du debut de plage : )
print (\n)finplage = raw_input(Entrez le numero de fin de plage : )print (\n) nbredeplage = int(debutplage) - int(finplage)fiA=open(fichA,r)
fiC=open(fichC,w)print calculclef(debutplage)compteur = 0debutplagewhile 1: fileencoding = latin1 ligneA=fiA.readline() ligneA = ligneA.decode(fileencoding)
 if ligneA == : break  if ligneA != : stramettre = ligneA if compteur != 0: taille = len(ligneA) codepostal = ligneA[taille-5] + ligneA[taille-4] + ligneA[taille-3] + ligneA[taille-2]+ ligneA[taille-1]
 print codepostal clefb = calculclef(debutplage) clefb = str(clefb) print clefb num = str(debutplage) cabsuivis = 8w+ num + clefb 
 stramettre = stramettre + ;* + cabsuivis + * chiffrescabtri = clefb + codepostal + compteclient + souscompteclient + codeaffranc + partielibre clefc = calculclef(chiffrescabtri)
 cabtri = zz + chiffrescabtri + clefc stramettre = stramettre + ;* + cabtri + *   fiC.write(stramettre) compteur += 1
  print compteur, \nprint FINITfiA.close()fiC.close()
-- 
http://mail.python.org/mailman/listinfo/python-list

Re: What is Expressiveness in a Computer Language

2006-06-21 Thread Andreas Rossberg
Chris Uppal wrote:
 
 I have never been very happy with relating type to sets of values (objects,
 whatever).

Indeed, this view is much too narrow. In particular, it cannot explain 
abstract types, which is *the* central aspect of decent type systems. 
There were papers observing this as early as 1970. A type system should 
rather be seen as a logic, stating invariants about a program. This can 
include operations supported by values of certain types, as well as more 
advanced properties, e.g. whether something can cause a side-effect, can 
diverge, can have a deadlock, etc.

(There are also theoretic problems with the types-as-sets view, because 
sufficiently rich type systems can no longer be given direct models in 
standard set theory. For example, first-class polymorphism would run 
afoul the axiom of foundation.)

 It's worth noting, too, that (in some sense) the type of an object can change
 over time[*].

No. Since a type expresses invariants, this is precisely what may *not* 
happen. If certain properties of an object may change then the type of 
the object has to reflect that possibility. Otherwise you cannot 
legitimately call it a type.

Taking your example of an uninitialised reference, its type is neither 
reference to nil nor reference to object that understands message X, 
it is in fact the union of both (at least). And indeed, languages with 
slightly more advanced type systems make things like this very explicit 
(in ML for example you have the option type for that purpose).

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


Re: Search substring in a string and get index of all occurances

2006-06-21 Thread bearophileHUGS
Maric Michaud:
 I'd love str implement a xsplit(sub, start, end) method, so I could have
 wrote : enumerate(s.xsplit(subs, 0, -1)).

Some of such str.x-methods (or str.i-methods, etc) can be useful
(especially for Py3.0), but keeping APIs simple and compact is very
important, otherwise when you program you have to waste some time
looking things up in the manuals. Such lists of methods are a
compromise between (among other things) completeness and compactness.

Bye,
bearophile

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


Re: What is Expressiveness in a Computer Language

2006-06-21 Thread Pascal Costanza
Joachim Durchholz wrote:
 Pascal Costanza schrieb:
 (It's really important to understand that the idea is to use this for 
 deployed programs - albeit hopefully in a more structured fashion - 
 and not only for debugging. The example I have given is an extreme one 
 that you would probably not use as such in a real-world setting, but 
 it shows that there is a boundary beyond which static type systems 
 cannot be used in a meaningful way anymore, at least as far as I can 
 tell.)
 
 As soon as the running program can be updated, the distinction between 
 static (compile time) and dynamic (run time) blurs.
 You can still erect a definition for such a case, but it needs to refer 
 to the update process, and hence becomes language-specific. In other 
 words, language-independent definitions of dynamic and static typing 
 won't give any meaningful results for such languages.
 
 I'd say it makes more sense to talk about what advantages of static vs. 
 dynamic typing can be applied in such a situation.
 E.g. one interesting topic would be the change in trade-offs: making 
 sure that a type error cannot occur becomes much more difficult 
 (particularly if the set of available types can change during an 
 update), so static typing starts to lose some of its appeal; OTOH a good 
 type system can give you a lot of guarantees even in such a situation, 
 even if it might have to revert to the occasional run-time type check, 
 so static checking still has its merits.

I am not opposed to this view. The two examples I have given for things 
that are impossible in static vs. dynamic type systems were 
intentionally extreme to make the point that you have to make a choice, 
that you cannot just blindly throw (instances of) both approaches 
together. Static type systems potentially change the semantics of a 
language in ways that cannot be captured by dynamically typed languages 
anymore, and vice versa.

There is, of course, room for research on performing static type checks 
in a running system, for example immediately after or before a software 
update is applied, or maybe even on separate type checking on software 
increments such that guarantees for their composition can be derived. 
However, I am not aware of a lot of work in that area, maybe because the 
static typing community is too focused on compile-time issues.

Personally, I also don't think that's the most interesting issue in that 
area, but that's of course only a subjective opinion.


Pascal

-- 
3rd European Lisp Workshop
July 3 - Nantes, France - co-located with ECOOP 2006
http://lisp-ecoop06.bknr.net/
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Search substring in a string and get index of all occurances

2006-06-21 Thread Maric Michaud
Le Mercredi 21 Juin 2006 14:01, Fredrik Lundh a écrit :
  Another variant, I feel this one more natural as it doesn't contain a
  C-looking infinite loop

 doing things in a convoluted way because you think that non-infinite while-
 loops are not natural?  you can get help for that, you know ;-)

Hehe, I was looking for a more pythonic solution (one like Tim gave), but not 
convinced.

Sure these loops are common and natural. They're so natural I wonder why I 
avoid this kind of code :

for i in lst :
...
if continue_condition : continue
...
if break_condition : break
...

Maybe I'll vote for a goto statment for Python3000...

Really I prefer code like this, when it's possible :

for i in [ e for e in lst[:first_breaking_elt] if not e in 
continue_condition ] :


 and a potentially large number of new strings.  there's a lot of string
 copying going on in there...

Oh, yes, you're right, a xsplit operator would be of minor help as it will 
copy all the string piece by piece.

Le Mercredi 21 Juin 2006 14:27, K.S.Sreeram a écrit :
  Actually it's even more efficient than Lundh's

 effbot's solution finds overlapping occurrences, whereas your solution
 finds non-overlapping occurrences.
Missed that.

 So efficiency comparisons are not valid. 
Right, but anyway, the problem is more about memory usage.

Regards,

-- 
_

Maric Michaud
_

Aristote - www.aristote.info
3 place des tapis
69004 Lyon
Tel: +33 426 880 097
-- 
http://mail.python.org/mailman/listinfo/python-list


Delivery reports about your e-mail

2006-06-21 Thread dpsp2004
-This message contained a computer virus which has been detected and deleted by 
the BT Business Email Virus Filter to avoid infecting your computer.
-
-You may wish to contact the sender of this email requesting they remove any 
virus infection from their PC before re-sending the email and attachment to 
you, virus-free.
-
-Attachment: text.scr
-Problem: virus infected W32/MyDoom-O
-Action taken: deleted
-
-Any original message will appear as an attachment;  if this is blank or absent 
no text was supplied.The original message was received at Wed, 21 Jun 2006 14:12:13 +0100
from iee.org.uk [71.231.246.114]

- The following addresses had permanent fatal errors -
python-list@python.org



VIRUS WARNING Message (from c2bthomr09.btconnect.com)

The virus W32/MyDoom-O was detected in email attachment [2.2] text.scr.  The 
infected attachment has been deleted.
-- 
http://mail.python.org/mailman/listinfo/python-list

Re: need all python dialog equivalent

2006-06-21 Thread Eric S. Johansson
[EMAIL PROTECTED] wrote:
  dialog binary is 110 KB. Won't it fit ?

missing library.  I have ncurses and newt and dialog seems to require 
something called ncursesw.  I've been trying to find the Python newt 
module as well and that seems to be as invisible as the creature it's 
named after.

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


How to override the doc of an object instance.

2006-06-21 Thread David Huard
Hi, 

I'm not really sure about the right terminology, but here is my question, boiled
down to this code:

class widget (object):
This is a widget.
def  __init__(self):
self._x = None
def fget(self):
return self._x
def fset(self, value):
self._x = value
print self._x, 'Ok'
x = property(fget = fget, fset = fset, doc= It prints)


print widget.x.__doc__

w = widget()
w.x = 5
print w.x.__doc__

I would like the last statement to print the doc string that I specified in
property, instead of the docstring for an int. The goal is to have ipython print
that string with the command 
w.x? 
So the user knows what this attribute does, and how he can set it. 

Is this possible ? 

Thanks, 

David Huard

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


Re: need all python dialog equivalent

2006-06-21 Thread Eric S. Johansson
Miki wrote:
 Hello Eric,
 
 Is there anything like an all Python dialog equivalent floating around?
 http://www.pythonware.com/library/tkinter/introduction/

I'm sorry.  I should have been more explicit.  I need a textbased 
interface such as the ones you would get with curses and dialogue.

---eric

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


Re: very strange bug coercing to Unicode: need string or buffer, int found

2006-06-21 Thread Max Erickson
bussiere maillist [EMAIL PROTECTED] wrote:

 --=_Part_118629_1441854.1150895040355
 i truly didn't understand this error :
 Traceback (most recent call last):
   File D:\Programmation\FrancePaquet\FrancePaquet.py, line 77,
   in ? 
 cabtri = zz + chiffrescabtri + clefc
 TypeError: coercing to Unicode: need string or buffer, int found

 
 def calculclef(nombre):
 if clef == 10:
 clef = 0
 return clef
 

 clefb = calculclef(debutplage)
 clefb = str(clefb)
 print clefb

 clefc = calculclef(chiffrescabtri)

 cabtri = zz + chiffrescabtri + clefc


Your calculclef function returns an integer. You explitly convert 
clefb into a string, but you never convert clefc into a string, hence 
the TypeError.

max

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


Re: OS specific command in Python

2006-06-21 Thread diffuser78
I have a question on getpass. Since I am a newbie you might find it a
little dumb.

By using the getpass, are u trying to retrieve the username and
password of remote mahcine or local ?



Avell Diroll wrote:
 [EMAIL PROTECTED] wrote:
  When you connect (via ssh or telnet) to a remote machine, you need to
  type (manually)
  your username and your password. Programming that is never easy.
 

 This is really eased by the module getpass (std library) :

 ###

 import getpass

 login = getpass.getuser()
 password = getpass.getpass()

 ###

 If the username is different from your system login this can be changed to :

 ###

 import getpass

 login = raw_input('login: ')
 password = getpass.getpass()
 
 ###
 
 
 Python definitely comes with batteries included !

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


Re: Search substring in a string and get index of all occurances

2006-06-21 Thread Fredrik Lundh
K.S.Sreeram wrote:

 effbot's solution finds overlapping occurrences, whereas your solution
 finds non-overlapping occurrences. So efficiency comparisons are not valid.

oops.  my bad.  here's a fixed version:

result = []; pos = 0
try:
while 1:
pos = mystring.index(substr, pos)
result.append(pos)
pos += len(substr)
except ValueError:
pass # done

or, if you prefer the generator variant:

def finditer(string, substr):
pos = 0
index = string.index
try:
while 1:
pos = index(substr, pos)
yield pos
pos += len(substr)
except ValueError:
pass # done

/F 



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


Re: How to override the doc of an object instance.

2006-06-21 Thread Maric Michaud
Le Mercredi 21 Juin 2006 06:50, David Huard a écrit :
 class widget (object):
     This is a widget.
     def  __init__(self):
         self._x = None
     def fget(self):
         return self._x
     def fset(self, value):
         self._x = value
         print self._x, 'Ok'
     x = property(fget = fget, fset = fset, doc= It prints)


 print widget.x.__doc__

 w = widget()
 w.x = 5
 print w.x.__doc__
This is w.__class__.x.__doc__.
w.x return the value you put in self._x, say an int, so w.x.__doc__ will print 
the docstring of int.

-- 
_

Maric Michaud
_

Aristote - www.aristote.info
3 place des tapis
69004 Lyon
Tel: +33 426 880 097
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: What is Expressiveness in a Computer Language

2006-06-21 Thread Matthias Blume
Rob Thorpe [EMAIL PROTECTED] writes:

 Matthias Blume wrote:
 Rob Thorpe [EMAIL PROTECTED] writes:

  I think we're discussing this at cross-purposes.  In a language like C
  or another statically typed language there is no information passed
  with values indicating their type.

 You seem to be confusing does not have a type with no type
 information is passed at runtime.

  Have a look in a C compiler if you don't believe me.

 Believe me, I have.

 In a C compiler the compiler has no idea what the values are in the
 program.

It is no different from any other compiler, really.  If the compiler
sees the literal 1 in a context that demands type int, then it knows
perfectly well what value that is.

 It knows only their type in that it knows the type of the variable they
 are contained within.
 Would you agree with that?

  No it doesn't. Casting reinterprets a value of one type as a value of
  another type.
  There is a difference.  If I cast an unsigned integer 20 to a
  signed integer in C on the machine I'm using then the result I will get
  will not make any sense.

 Which result are you getting?  What does it mean to make sense?

 Well the right one actually, bad example.

 But, if I cast an unsigned int 25 to signed I get -1794967296.

So, why do you think this does not make sense?  And, as this example
illustrates, casting in C maps values to values.  Depending on the
types of the source and the target, a cast might change the underlying
representation, or it might leave it the same.  But it does produce a
value, and the result value is usually not the same as the argument
value, even if the representation is the same.

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


Re: OS specific command in Python

2006-06-21 Thread Jon Ribbens
In article [EMAIL PROTECTED], [EMAIL PROTECTED] wrote:
 So basically, instead of typing in on the command line argument I want
 to have it in a python program and let it do the action.
 
 Try exec() and execfile() from the standard library (IIRC)

Ths os.spawn...() functions are likely to be better suited to what he
wants to do.

 ssh [EMAIL PROTECTED]  .etc
 
 When you connect (via ssh or telnet) to a remote machine, you need to
 type (manually) your username and your password. Programming that is
 never easy.

Indeed, so it is much easier to use public-key authentication with an
unencrypted private key, that way you don't have to type any
passwords. See the AUTHORIZED_KEYS FILE FORMAT section of the 'sshd'
man page, and the 'ssh-keygen' command.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: How to override the doc of an object instance.

2006-06-21 Thread David Huard
On Wed, 21 Jun 2006 15:39:02 +0200, Maric Michaud wrote:

 This is w.__class__.x.__doc__.

Thanks, 

So in order to implement what I want, I should rather consider an
ipython hack to print w.__class__.x.__doc__ when it exists, instead of
w.x.__doc_ ? Does this makes sense or it will ruin the standard behaviour?

David

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


Re: need all python dialog equivalent

2006-06-21 Thread Grant Edwards
On 2006-06-21, Eric S. Johansson [EMAIL PROTECTED] wrote:
 [EMAIL PROTECTED] wrote:
  dialog binary is 110 KB. Won't it fit ?

 missing library.  I have ncurses and newt and dialog seems to require 
 something called ncursesw.  I've been trying to find the Python newt 
 module as well and that seems to be as invisible as the creature it's 
 named after.

The most recent version of newt I've got is at

  ftp://ftp.visi.com/users/grante/stuff/newt-0.50.tar.gz

The python module is called snack

-- 
Grant Edwards   grante Yow!  Yow! Am I cleansed
  at   yet?!
   visi.com
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Psyco performance

2006-06-21 Thread [EMAIL PROTECTED]
   Place all the code in a function. Even without psyco you might get
   somewhat better performances then. And I doubt psyco can optimise code
   that isn't in a function anyway.

Another thing I wasn't considering is that the first call with psyco
enabled might be slower. The 2nd time the psyco-compiled function is
called is where the speed improvement may be present. With the code at
the bottom, I get these results:

without psyco =  0.000421282593179
first call with psyco =  0.000902349320933
with psyco =  5.30793718196e-005
first call with psyco =  114.190981432 %  slower
2nd call with psyco =  87.400530504 %  faster


import time
import psyco

def test(l):
result = 0

for item in l:
result += item

return result

l = list(range(0, 1000))

t1 = time.clock()
l2 = test(l)
t2 = time.clock()
no_psyco = t2 - t1

psyco.log()
psyco.bind(test)

t1 = time.clock()
l2 = test(l)
t2 = time.clock()

first_call_with_psyco = t2 - t1

t1 = time.clock()
l2 = test(l)
t2 = time.clock()

with_psyco = t2 - t1

print 'without psyco = ',no_psyco
print 'first call with psyco = ',first_call_with_psyco
print 'with psyco = ',with_psyco
first_delta = ((no_psyco - first_call_with_psyco)/no_psyco) * 100
delta = ((no_psyco - with_psyco)/no_psyco) * 100

if(first_delta  0):
result = 'faster'
else:
result = 'slower'

print 'first call with psyco = ',abs(first_delta),'% ',result

if(delta  0):
result = 'faster'
else:
result = 'slower'

print '2nd call with psyco = ',abs(delta),'% ',result

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


Re: OS specific command in Python

2006-06-21 Thread diffuser78
Hi Avell,

I want to communicate using subprocess module but my task is a little
different. May be you can guide me.

I have a linux box, from where I remotely execute all the commands. The
remote machine is windows machine. I installed an OpenSSH server for
windows to send the shutdown command. I setup the public keys in such a
way that I could login to SSH server without using password.

I used

import os
os.system('ssh [EMAIL PROTECTED] shutdown -s')


I was wondering how can I interact with an application . Since you
mentioned about subprocess module, I want a ability that my PYthon
script can actually interact with the windows box and launch and close
application there remotely.

Any suggestions on how to do this ?

Every help is appreciated.

Thanks for your time

Avell Diroll wrote:

 This is an simple way to proceed if you don't need your python script to
 know what happens to the launched process ...
 When you need to :
 * send some input to the command from the python script after it is launched
 * get the output of the command in your python script
 * get the pid associated to your command
 * wait for your command to finish
 * pipe some shell commands
 * ...
 you should use the subprocess module.

 Here is a quick example from the Python Reference Library :
 http://docs.python.org/lib/node242.html

 ##Shell Script :
 output=`dmesg | grep hda`


 ##Python Script :
 from subprocess import Popen
 p1 = Popen([dmesg], stdout=PIPE)
 p2 = Popen([grep, hda], stdin=p1.stdout, stdout=PIPE)
 output = p2.communicate()[0]

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


Re: What is Expressiveness in a Computer Language

2006-06-21 Thread Joachim Durchholz
Chris Uppal schrieb:
 Chris Smith wrote:
 I think Marshall got this one right.  The two are accomplishing
 different things.  In one case (the dynamic case) I am safeguarding
 against negative consequences of the program behaving in certain non-
 sensical ways.  In the other (the static case) I am proving theorems
 about the impossibility of this non-sensical behavior ever happening.
 
 And so conflating the two notions of type (-checking) as a kind of category
 error ?  If so then I see what you mean, and it's a useful distinction, but am
 unconvinced that it's /so/ helpful a perspective that I would want to exclude
 other perspectives which /do/ see the two as more-or-less trivial variants on
 the same underlying idea.

It is indeed helpful.
Just think of all the unit tests that you don't have to write.

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


Re: What is Expressiveness in a Computer Language

2006-06-21 Thread Joachim Durchholz
Matthias Blume schrieb:
 Joachim Durchholz [EMAIL PROTECTED] writes:
 
 Matthias Blume schrieb:
 Joachim Durchholz [EMAIL PROTECTED] writes:

 Matthias Blume schrieb:
 Perhaps better: A language is statically typed if its definition
 includes (or ever better: is based on) a static type system, i.e., a
 static semantics with typing judgments derivable by typing rules.
 Usually typing judgmets associate program phrases (expressions) with
 types given a typing environment.
 This is defining a single term (statically typed) using three
 undefined terms (typing judgements, typing rules, typing
 environment).
 This was not meant to be a rigorous definition.
 Rigorous or not, introducing additional undefined terms doesn't help
 with explaining a term.
 
 I think you missed my point.  My point was that a language is
 statically typed IF IT IS DEFINED THAT WAY, i.e., if it has a static
 type system that is PART OF THE LANGUAGE DEFINITION.  The details are
 up to each individual definition.

Well, that certainly makes more sense to me.

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


Re: What is Expressiveness in a Computer Language

2006-06-21 Thread Rob Thorpe
Matthias Blume wrote:
 Rob Thorpe [EMAIL PROTECTED] writes:
  Matthias Blume wrote:
  Rob Thorpe [EMAIL PROTECTED] writes:
 
   I think we're discussing this at cross-purposes.  In a language like C
   or another statically typed language there is no information passed
   with values indicating their type.
 
  You seem to be confusing does not have a type with no type
  information is passed at runtime.
 
   Have a look in a C compiler if you don't believe me.
 
  Believe me, I have.
 
  In a C compiler the compiler has no idea what the values are in the
  program.

 It is no different from any other compiler, really.  If the compiler
 sees the literal 1 in a context that demands type int, then it knows
 perfectly well what value that is.

Well, with a literal yes.  But with the value of some variable x at
runtime it only know the type because it knows the type of the
variable.  Similarly the type of values generated by an expression are
only known because the type the expression generates is known.

  It knows only their type in that it knows the type of the variable they
  are contained within.
  Would you agree with that?

Would you?

   No it doesn't. Casting reinterprets a value of one type as a value of
   another type.
   There is a difference.  If I cast an unsigned integer 20 to a
   signed integer in C on the machine I'm using then the result I will get
   will not make any sense.
 
  Which result are you getting?  What does it mean to make sense?
 
  Well the right one actually, bad example.
 
  But, if I cast an unsigned int 25 to signed I get -1794967296.

 So, why do you think this does not make sense?

Well, it makes sense in terms of the C spec certainly.
It does not make sense in that it does not emit an error.

And, as this example
 illustrates, casting in C maps values to values.  Depending on the
 types of the source and the target, a cast might change the underlying
 representation, or it might leave it the same.  But it does produce a
 value, and the result value is usually not the same as the argument
 value, even if the representation is the same.

Yes. I'm not arguing with that.

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


Re: [OT] code is data

2006-06-21 Thread Anton Vredegoor
Bruno Desthuilliers wrote:

 You mean like 'converting' javascript to python or python to ruby (or
 converting any home-grown DSL to Python, etc) ?

Yes, but also what some other posters mentioned, making Pythons internal 
parsing tree available to other programs (and to Python itself) by using 
a widely used standard like XML as its datatype.

 Then there are some people who keep insisting they don't understand what
 I'm talking about until I simplify things enough to get them on-board,
 
 count me in then :(

Sorry about that.

 but then simply dismiss my ideas with 'you can already do that easily
 with this standard python construct'. This strategy was also eloquently
 refuted by some other poster, so I don't need to repeat it :-)

 I've gotten a lot of things to think about, so thanks all for your
 thoughts, but since this is getting way above my head I'll just wimp out
 and leave the rest of the thread to the experts!
 
 No way you will escape from your responsabilities so easily !-)

Ok, count me back in then too :-) Of course I will be available for 
further discussion. If more than ten people demand a PEP and no better 
champion is available (very unlikely) I'll even write a proposal.

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


Re: What is Expressiveness in a Computer Language

2006-06-21 Thread Joachim Durchholz
Pascal Costanza schrieb:
 Static type systems potentially change the semantics of a 
 language in ways that cannot be captured by dynamically typed languages 
 anymore, and vice versa.

Very true.

I also suspect that's also why adding type inference to a 
dynamically-typed language doesn't give you all the benefits of static 
typing: the added-on type system is (usually) too weak to express really 
interesting guarantees, usually because the language's semantics isn't 
tailored towards making the inference steps easy enough.

Conversely, I suspect that adding dynamic typing to statically-typed 
languages tends to miss the most interesting applications, mostly 
because all the features that can simply be done in a 
dynamically-typed language have to be retrofitted to the 
statically-typed language on a case-by-case basis.

In both cases, the language designers often don't know the facilities of 
the opposed camp well enough to really assess the trade-offs they are doing.

 There is, of course, room for research on performing static type checks 
 in a running system, for example immediately after or before a software 
 update is applied, or maybe even on separate type checking on software 
 increments such that guarantees for their composition can be derived. 
 However, I am not aware of a lot of work in that area, maybe because the 
 static typing community is too focused on compile-time issues.

I think it's mostly because it's intimidating.

The core semantics of an ideal language fits on a single sheet of paper, 
to facilitate proofs of language properties. Type checking 
dynamically-loaded code probably wouldn't fit on that sheet of paper.
(The non-core semantics is then usually a set of transformation rules 
that map the constructs that the programmer sees to constructs of the 
core language.)

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


Remote Boot Manager Scripting (Python)

2006-06-21 Thread diffuser78
I just started to write a small project in Python. I was wondering if
there can be something like remote boot manager.

I have to remotely start a computer. It has dual boot (WinXP and
Linux).
My remote computer is Linux which will send command to remotely boot
the other computer.

Can we write python script or some utility which would let us select
the Operating System to boot ? For example If we send parameter WIN
it boots into Windows and if we send NIX it boots into Linux.

Every help is appreciated.

Thanks

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


Re: new python icons for windows

2006-06-21 Thread and-google
Istvan Albert wrote:

 But these new icons are too large, too blocky and too pastel.

Hooray! Glad to see *someone* doesn't like 'em, I'll expect a few more
when b1 hits. :-)

Although I can't really see 'large', 'blocky' or 'pastel'... they're
the same size and shape as other Windows document icons, and I
personally find the Python logo colours quite striking. If it's the
new-fangled shadey gradienty kind of nonsense you don't like, you could
also try the low-colour versions. eg. ICOs compiled with only 16-colour
and 16/32 sizes:

  http://doxdesk.com/file/software/py/pyicons-tiny.zip

 For example it resembles the icon for text files.

This is intentional: to make it obvious that .py files are the
readable, editable scripts, contrasting with .pyc's binary gunk -
something that wasn't 100% clear before. With the obviousness of the
Python-plus and the strong difference between the white and black base
document icons, squinting shouldn't really be necessary IMO.

 can someone point me to a page/link that contains the old icons?

Sure,

  http://svn.python.org/view/python/branches/release24-maint/PC/py.ico
  http://svn.python.org/view/python/branches/release24-maint/PC/pyc.ico

http://svn.python.org/view/python/branches/release24-maint/PC/pycon.ico

-- 
And Clover
mailto:[EMAIL PROTECTED]
http://www.doxdesk.com/

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


returning index of minimum in a list of lists

2006-06-21 Thread JJLaRocque
Hi all,
Is there a simple python function to return the list index of the
minimum entry in a list of lists?
ie, for   [[3,3,3,3], [3,3,3,1], [3,3,3,3]]  to return 2,4.
Or, same question but just for a list of numbers, not a list of lists.
Thanks,
Josh

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


Re: How to override the doc of an object instance.

2006-06-21 Thread Paul McGuire
David Huard [EMAIL PROTECTED] wrote in message
news:[EMAIL PROTECTED]
 On Wed, 21 Jun 2006 15:39:02 +0200, Maric Michaud wrote:

  This is w.__class__.x.__doc__.

 Thanks,

 So in order to implement what I want, I should rather consider an
 ipython hack to print w.__class__.x.__doc__ when it exists, instead of
 w.x.__doc_ ? Does this makes sense or it will ruin the standard behaviour?

 David

No need to, just assign your special docstrings to w.x.__doc__, and print
w.x.__doc__.  Instances that have special docstrings will print their
instance-specific versions; instances without instance-specific docstrings
will print the class-level version.  See below.

-- Paul


 class W(object):
...   Class-level docstring for W
...   pass
...
 z = W()
 z.__doc__
'Class-level docstring for W'
 z.__doc__  = instance-level docstring, just for z
 z.__doc__
'instance-level docstring, just for z'
 zz = W()
 print zz.__doc__
Class-level docstring for W
 print z.__doc__
instance-level docstring, just for z




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


Re: Search substring in a string and get index of all occurances

2006-06-21 Thread Fredrik Lundh
Tim Chase wrote:

   indicies = [i for i in xrange(len(mystring)) if 
 mystring.startswith(substr, i)]
   indicies
 [4, 8, 10, 17, 22]
 
 is my preferred way of doing this.

it's things like this that makes me wonder why I spent a week speeding 
up the string implementation for Python 2.5 (with special emphasis on 
find/index-related performance)...

/F

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


  1   2   3   >