Re: Python API to manipulate CAB files.

2005-06-23 Thread Thomas Heller
Konstantin Veretennicov <[EMAIL PROTECTED]> writes:

> On 6/22/05, Peter Maas <[EMAIL PROTECTED]> wrote:
>> Isaac Rodriguez schrieb:
>> > Does anyone know of a Python API to manipulate CAB files?
>
> I guess you'll have to interface with setupapi.dll
> (SetupIterateCabinet) via ctypes, or with Microsoft Cabinet utilities
> via subprocess module. Neither is what people call fun...
>
> - kv
Probably not what you mean with 'manipulate CAB files', but it may give
a start with ctypes and cab:

http://starship.python.net/crew/theller/moin.cgi/CreateCab

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


Re: Loop until condition is true

2005-06-23 Thread Michael Hoffman
Stelios Xanthakis wrote:
> Magnus Lycka wrote:
 >
>> Right. Silly me. Maybe in some future Python version, True and False
>> will be constants, like None is since Python 2.4.
> 
> Actually, there is support in marshal to write True and False objects so
> I don't understand why this isn't in 2.4

Because it would break existing code.
-- 
Michael Hoffman
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Database recommendations for Windows app

2005-06-23 Thread Joel Rosdahl
Dave Cook <[EMAIL PROTECTED]> writes:

> On 2005-06-22, Will McGugan <[EMAIL PROTECTED]> wrote:
>
> [...]
>> Can anyone recommend a database that runs on Windows, is fast /
>> efficient and can be shipped without restrictions or extra
>> downloads?
>
> http://pysqlite.org

Or APSW .

-- 
Joel Rosdahl <[EMAIL PROTECTED]>
Key BB845E97; fingerprint 9F4B D780 6EF4 5700 778D  8B22 0064 F9FF BB84 5E97
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Does a function like isset() exist in Python?

2005-06-23 Thread Fredrik Lundh
George Sakkis wrote:

> There are no unitialized variables in python; if you try to access an
> undefined  name, a NameError exception is raised:
>
> try:
> print "foo is", foo
> except NameError:
> print "foo is undefined"

note the order of evaluation:

>>> try:
... print "foo is", foo
... except NameError:
... print "foo is undefined"
...
foo is foo is undefined
>>>





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


Where is Word - COM solution

2005-06-23 Thread Guy Lateur
Hi all,

This goes back to my previous post called "Where is Word". In short, I 
wanted to make a temporary file (directory listing), open it in Word to let 
the user edit, layout and print it, and then delete the temp file 
afterwards.

I almost got it to work without using COM, but there was a problem when the 
user runs the script a second time without closing Word after the first 
time. In that case, the temp file could not be deleted (see original post).

Luckily, the following code was provided to me by a good fellow named 
Hughes, Chad O. Thanks again for your time and effort on this, Chad!



import os
from win32com.client import Dispatch

dirlist = os.listdir(os.getcwd())

word = Dispatch('Word.Application')
word.Documents.Add(Visible = True)
word.Visible = True

for line in dirlist:
  word.Selection.TypeText(line + '\r\n')



So the questions 'where is Word' and 'how to delete the temp file' have 
become obsolete. Nice, eh? COM rules!

Cheers,
g






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


Re: Database recommendations for Windows app

2005-06-23 Thread Magnus Lycka
Cameron Laird wrote:
> OK, I'm with you part of the way.  Typical "Access" developers 
> are *always* involved with DLL hell, right?  You're surely not
> saying that Python worsens that frustration, are you?

I think Dan was commenting on flaws in Microsoft's products,
not in Python. As I understand it, he was suggesting to use
something else than Access with Python, not something else
than Python with Access. The O.P. wanted a database for his
Python app, and Thomas Bartkus suggested Access.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: create a pdf file

2005-06-23 Thread Magnus Lycka
Alberto Vera wrote:
> Hello:
> 
> I found a script that convert a file to PDF format , but it was made in PHP
> 
> Do you know any script using Python?

What do you mean by "convert a file to PDF format"? The solution
obviously depends on what the file you start with looks like. If
you want to create PDF yourself via API calls, ReportLab is what
you need. If you want to convert an existing file in a format
such as PS or MS Word, there are a lot of solutions out there,
but I don't know of any Python based, and I don't see a point in
using a Python based solution for that kind of task. The simplest
would probably be to invoke a command line tool such as ps2pdf
from your Python script.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: os.system(cmd) isn't working

2005-06-23 Thread F. Petitjean
Le Thu, 23 Jun 2005 01:19:11 -0500, Paul Watson a écrit :
> "Gregory Piñero" <[EMAIL PROTECTED]> wrote in message 
> news:[EMAIL PROTECTED]
> Hi guys,
>
> I'm trying to run this statement:
>
> os.system(r'"C:\Program Files\Mozilla Firefox\firefox.exe"' + '
> "www.blendedtechnologies.com"')
>
> The goal is to have firefox open to that website.

I suggest to use the subprocess module. You don't have insert " around a
path with embedded spaces and you can give the exact executable
pathname, set the directory for the child process, etc

import os
import os.path
import subprocess
path_exe = r'C:\Program Files\Mozilla Firefox\firefox.exe'
assert os.path.exists(path_exe)
url = "http://www.blendedtechnologies.com";
child = subprocess.Popen( (path_exe, url), executable = path_exe)
rc = child.wait()

> I'm using Python 2.3 on Windows XP pro service pack 2.

I think that subprocess is a new Python2.4 module, but you should be
able to find a 2.3 version (perhaps effbot.org)
>
> I'd greatly appriciate any help.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Optimize a cache

2005-06-23 Thread Tim Williams
- Original Message - 
From: "Florian Lindner" <[EMAIL PROTECTED]>


> Hello,
> I am building a object cache in python, The cache has a maximum size and
the
> items have expiration dates.
> At the moment I'm doing like that:

> What possible you see to optimize this lookup? Or anything else you see to
> make it better?

Have a look at http://py.vaults.ca/apyllo.py/514463245.769244789.92554878
it already has some of your requirements,  and can be used as a building
block.


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


Re: PEP ? os.listdir enhancement

2005-06-23 Thread Riccardo Galli
On Wed, 22 Jun 2005 11:27:06 -0500, Jeff Epler wrote:

> Why not just define the function yourself?  Not every 3-line function
> needs to be built in.

Of course I can code such a function, and I agree with the second
sentence, but I think that obtaining absolutes path is a task so commonly
needed that adding a keyword to an existing function would give a plus to
the library without adding complexity (speaking of number of modules).

Usually when you use os.listdir do you end using os.path.join to obtain
absolutes path? I'm interested to know if the task is so common as I
think, or if I'm wrong.

Thank you,
Riccardo


-- 
Riccardo Galli
Sideralis Programs
http://www.sideralis.net
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: PEP ? os.listdir enhancement

2005-06-23 Thread Andreas Kostyrka
What's wrong with

(os.path.join(d, x) for x in os.listdir(d))

It's short, and easier to understand then some obscure option ;)

Andreas

On Thu, Jun 23, 2005 at 11:05:57AM +0200, Riccardo Galli wrote:
> On Wed, 22 Jun 2005 11:27:06 -0500, Jeff Epler wrote:
> 
> > Why not just define the function yourself?  Not every 3-line function
> > needs to be built in.
> 
> Of course I can code such a function, and I agree with the second
> sentence, but I think that obtaining absolutes path is a task so commonly
> needed that adding a keyword to an existing function would give a plus to
> the library without adding complexity (speaking of number of modules).
> 
> Usually when you use os.listdir do you end using os.path.join to obtain
> absolutes path? I'm interested to know if the task is so common as I
> think, or if I'm wrong.
> 
> Thank you,
> Riccardo
> 
> 
> -- 
> Riccardo Galli
> Sideralis Programs
> http://www.sideralis.net
> -- 
> http://mail.python.org/mailman/listinfo/python-list
-- 
http://mail.python.org/mailman/listinfo/python-list


pydoc - suppressing builtins?

2005-06-23 Thread contact
Is it possible to persuade pydoc not to include documentation for
methods inherited from built-in classes? I have several classes that
inherit from dict, and don't really need documentation thousands of
lines long that consists mostly of dict's methods repeated multiple
times.

I'm sure I could qite easily write something to post-process the HTML
files; just wondering if there might be an easier way.

thanks
Alan

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


Re: Avoiding deadlocks in concurrent programming

2005-06-23 Thread Konstantin Veretennicov
On 22 Jun 2005 17:50:49 -0700, Paul Rubin
<"http://phr.cx"@nospam.invalid> wrote:

> Even on a multiprocessor
> system, CPython (because of the GIL) doesn't allow true parallel
> threads, ... .

Please excuse my ignorance, do you mean that python threads are always
scheduled to run on the same single CPU? Or just that python threads
are often blocked waiting for GIL?

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


Re: PEP ? os.listdir enhancement

2005-06-23 Thread Konstantin Veretennicov
On 6/22/05, Riccardo Galli <[EMAIL PROTECTED]> wrote:

> I propose to add an 'abs' keyword which would make os.listdir return the
> absolute path of files instead of a relative path.

What about os.listdir(dir='relative/path', abs=True)? Should listdir
call abspath on results? Should we add another keyword rel? Would it
complicate listdir unnecessarily?

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


Re: Loop until condition is true

2005-06-23 Thread Antoon Pardon
Op 2005-06-22, Michael Hoffman schreef <[EMAIL PROTECTED]>:
> Remi Villatel wrote:
>> Fredrik Lundh wrote:
>>> checking if a logical expression is true by comparing it to True is bad
>>> style, and comparing values using "is" is also bad style.
>> 
>> I wrote it this way because, first, it's perfectly valid Python code and,
> > second and most important, it's also a valid english sentence.
>
> As others have pointed out, it's not perfectly valid code. In fact it is 
> frequently incorrect.

That the same code would be incorrect in other circumstances doesn't
make it invalid as it was used in a specific situation.

I have written code my self with an "if var is True" statement and
that is exactly what I wanted. Replacing it with "if var" would
have broken the the program.

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


List of all installed applications (XP)?

2005-06-23 Thread Guy Lateur
Hi all,

I'm trying to generate a (exhaustive) list of all the applications that are 
installed on a user's machine. I've written some code that reads the 
registry ('App Paths'):


appKey = win32api.RegOpenKeyEx(win32con.HKEY_LOCAL_MACHINE, 
'SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths', 0, win32con.KEY_READ)
sklist = win32api.RegEnumKeyEx(appKey)

for skey in sklist:
 print skey[0]

 try:
  wPath = win32api.RegQueryValue(appKey, skey[0])
  print '' + wPath
 except pywintypes.error,details:
  print '### Error [pywintypes.error]: ' + details[2]

win32api.RegCloseKey(appKey)


This works, but I was wondering wether that is the best way to go about 
this? Can I be sure it lists *all* the applications? What does it mean when 
a pywintypes.error is thrown (code 13, 'Invalid data')?

Thanks,
g



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


Re: Does a function like isset() exist in Python?

2005-06-23 Thread Steven D'Aprano
On Wed, 22 Jun 2005 23:09:57 -0400, Patrick Fitzsimmons wrote:

> Hi,
> 
> I'm sure I should know this, but I can't find it in the manual.
> 
> Is there a function in Python like the function in PHP isset()?  It
> should take a variable name and return True or False depending on
> whether the variable is initialized.

What would you use such a function for?

The closest thing I can think of is testing whether a particular object
exists. Eg to test whether your program is running under a version of
Python that defines bools, and if not, define your own objects which act
in a similar way, you would say

try:
False
except NameError:
False = 0
True = not False

Note that there is no need to do something with the name "False" in the
try clause -- just use it.


-- 
Steven.

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


Re: pickle broken: can't handle NaN or Infinity under win32

2005-06-23 Thread Steven D'Aprano
On Thu, 23 Jun 2005 00:11:20 -0400, Tim Peters wrote:

> Well, I try, Ivan.  But lest the point be missed , 754 doesn't
> _want_ +0 and -0 to act differently in "almost any" way.  The only
> good rationale I've seen for why it makes the distinction at all is in
> Kahan's paper "Branch Cuts for Complex
> Elementary Functions, or Much Ado About Nothing's Sign Bit".  There
> are examples in that where, when working with complex numbers, you can
> easily stumble into getting real-world dead-wrong results if there's
> only one flavor of 0.  And, of course, atan2 exists primarily to help
> convert complex numbers from rectangular to polar form.

It isn't necessary to look at complex numbers to see the difference
between positive and negative zero. Just look at a graph of y=1/x. In
particular, look at the behaviour of the graph around x=0. Now tell me
that the sign of zero doesn't make a difference.

Signed zeroes also preserve 1/(1/x) == x for all x, admittedly at the cost
of y==x iff 1/y == 1/x (which fails for y=-0 and x=+0). Technically, -0
and +0 are not the same (for some definition of "technically"); but
practicality beats purity and it is more useful to have -0==+0 than the
alternative.

> Odd bit o' trivia:  following "the rules" for signed zeroes in 754
> makes exponeniation c**n ambiguous, where c is a complex number with
> c.real == c.imag == 0.0 (but the zeroes may be signed), and n is a
> positive integer.  The signs on the zeroes coming out can depend on
> the exact order in which multiplications are performed, because the
> underlying multiplication isn't associative despite that it's exact. 

That's an implementation failure. Mathematically, the sign of 0**n should
depend only on whether n is odd or even. If c**n is ambiguous, then that's
a bug in the implementation, not the standard.

> I stumbled into this in the 80's when KSR's Fortran compiler failed a
> federal conformance test, precisely because the test did atan2 on the
> components of an all-zero complex raised to an integer power, and I
> had written one of the few 754-conforming libms at the time.  They
> wanted 0, while my atan2 dutifully returned -pi.  I haven't had much
> personal love for 754 esoterica since then ...

Sounds to me that the Feds wanted something broken and you gave them
something that was working. No wonder they failed you :-)

-- 
Steven.


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


RE: List of all installed applications (XP)?

2005-06-23 Thread Tim Golden
[Guy Lateur]
| I'm trying to generate a (exhaustive) list of all the 
| applications that are 
| installed on a user's machine. I've written some code that reads the 
| registry ('App Paths'):

[.. snip code ..]

| Can I be sure it lists *all* the applications?

What -- from your point of view -- is an "application"? I can pretty
much guarantee that by no means does every app install an AppPath: it's
merely a convenience. Neither does every app have an Add/Remove Program
entry. (And some things have entries which aren't apps). And where do
you draw the line between some arbitrary executable and an app?

Just asking, because I don't think you can do anything exhaustive
until you know the scope you're trying to exhaust.

TJG


This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk

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


Re: PEP ? os.listdir enhancement

2005-06-23 Thread Riccardo Galli
On Thu, 23 Jun 2005 11:34:02 +0200, Andreas Kostyrka wrote:

> What's wrong with
> 
> (os.path.join(d, x) for x in os.listdir(d))
> 
> It's short, and easier to understand then some obscure option ;)
> 
> Andreas

how does it help in using list comprehension, as the ones in the first
post?


-- 
Riccardo Galli
Sideralis Programs
http://www.sideralis.net
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: PEP ? os.listdir enhancement

2005-06-23 Thread Riccardo Galli
On Thu, 23 Jun 2005 12:56:08 +0300, Konstantin Veretennicov wrote:

> On 6/22/05, Riccardo Galli <[EMAIL PROTECTED]> wrote:
> 
>> I propose to add an 'abs' keyword which would make os.listdir return the
>> absolute path of files instead of a relative path.
> 
> What about os.listdir(dir='relative/path', abs=True)? Should listdir call
> abspath on results? Should we add another keyword rel? Would it complicate
> listdir unnecessarily?
> 
> - kv

keyword dir not exists (don't know if you added as example or not) and
abs set to true would return abspath on result. What else could it do ?


-- 
Riccardo Galli
Sideralis Programs
http://www.sideralis.net
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: case/switch statement?

2005-06-23 Thread NickC
Andrew Durdin wrote:
> In this case the dictionary is obviously a better and clearer choice.
> I've generally found for other circumstances where I've used switch
> statements that the code ends up more readable if it's reorganised so
> that the switch statements are all of the form above, or are
> eliminated entirely--so I don't miss a switch/case statement in
> Python.

I find the lack of a switch statement encourages me to write
data-driven programs (which is a god-send when I have to enhance them
later to deal with additional cases).

The thing I love most about Python is the fact that callables can be
slung around at run-time, just like any other object. So, I set up
(usually for command-line options) mappings from options to callables
which define "how to perform action x".

Then as the options are translated, I query the lookup tables, and
store the results in appropriately named variables (e.g
"create_connection", "connect_link" for a program I use to test serial
data circuits with a variety of connections and links running over
different hardware).

The main body of the program is then comparatively trivial, because it
just calls methods whose names describe (in a high-level way) what they
do. A new connection or link type can be handled just by adding an
entry to the appropriate dictionary.

Basically, it's the GoF Strategy pattern, without all the pain that's
required to set it up in static languages.

Cheers,
Nick.

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


Re: Database recommendations for Windows app

2005-06-23 Thread Dave Cook
On 2005-06-23, Joel Rosdahl <[EMAIL PROTECTED]> wrote:

> Or APSW .

Interesting.  I was hoping it would not have one pysqlite2 limitation: if
you have an empty database, cursor.description always returns None, even if
you have "pragma empty_result_callbacks=1" (pysqlite 1.x doesn't have the
problem).  But apsw also requires data to be avaliable before you can get
column descriptions.

However, the tracing stuff and the various hooks you can set look really
interesting.

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


Re: PEP ? os.listdir enhancement

2005-06-23 Thread Daniel Dittmar
Riccardo Galli wrote:
> On Thu, 23 Jun 2005 12:56:08 +0300, Konstantin Veretennicov wrote:
>>What about os.listdir(dir='relative/path', abs=True)? Should listdir call
>>abspath on results? Should we add another keyword rel? Would it complicate
>>listdir unnecessarily?
> 
> keyword dir not exists (don't know if you added as example or not) and
> abs set to true would return abspath on result. What else could it do ?

He probably meant that a 'join' option would be more natural than an 
'abs' option. After all, your examples use os.path.join to create a 
valid path that can be used as the argument to other module os 
functions. Whether the results are absolute or relative should depend on 
the initial argument to os.listdir.

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


re:Single Application Instance Example

2005-06-23 Thread DeRRudi
Whit this mutex is it possible when an instance is running in
background and you try to open a new instance. you cancel it and show
the first? 

Greetz

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


Re: List of all installed applications (XP)?

2005-06-23 Thread Guy Lateur
| What -- from your point of view -- is an "application"?

Good question. Let me try to elaborate: I would like to know if people in 
our company (building techniques) are using non-licensed software (eg 
Photoshop, Office, AutoCad). So I guess by 'application' I mean commercial 
software packages like those.

Is it safe to assume those apps get listed in AppPath? I don't think my 
users are cunning enough to mess with the registry, so I guess we're talking 
about the 'standard' installation.



| Neither does every app have an Add/Remove Program
| entry. (And some things have entries which aren't apps).

Just out of curiosity: can one read the info/list one gets in Add/Remove 
Programs? It's not a problem I get results that aren't actually apps, but it 
is important I get all apps.



Thanks,
g




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


Re: PEP ? os.listdir enhancement

2005-06-23 Thread Peter Otten
Konstantin Veretennicov wrote:

> On 6/22/05, Riccardo Galli <[EMAIL PROTECTED]> wrote:
> 
>> I propose to add an 'abs' keyword which would make os.listdir return the
>> absolute path of files instead of a relative path.
> 
> What about os.listdir(dir='relative/path', abs=True)? Should listdir
> call abspath on results? Should we add another keyword rel? Would it
> complicate listdir unnecessarily?
> 
> - kv

I'm in favour of Riccardo's suggestion, but I think he's got the name of the
keyword wrong. The signature should be

listdir(path, with_path=False)

and cater absolute and relative paths alike. 

The need for such an enhancement is not particularly pressing, as
workarounds abound. Here's another one:

>>> glob.glob("/usr/lib/games/../games/*")
['/usr/lib/games/../games/schwarzerpeter']


Peter

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


RE: List of all installed applications (XP)?

2005-06-23 Thread Tim Golden
[Guy Lateur]
| 
| | [TJG]
| | What -- from your point of view -- is an "application"?
| 
| Good question. Let me try to elaborate: I would like to know 
| if people in 
| our company (building techniques) are using non-licensed software (eg 
| Photoshop, Office, AutoCad). So I guess by 'application' I 
| mean commercial software packages like those.

Hmmm. While I understand your requirement, it's not as
thought there's some easily-discernible charactersistics
of "commercial software packages which should have licenses
but which don't" unless you're prepared to compile a list
and to add to it over time.

| Is it safe to assume those apps get listed in AppPath? 

I wouldn't have said so: AppPaths is basically useful if
you want to be able to go Start > Run > blah.exe without
having to hunt through "Program Files" etc. Since many
apps simply set up a Start Menu shortcut, there's no
need for this.

| Just out of curiosity: can one read the info/list one gets in 
| Add/Remove 
| Programs? It's not a problem I get results that aren't 
| actually apps, but it 
| is important I get all apps.

I honestly don't know: I imagine Googling around will
give some hits (for the question in general and for
Add/Remove in particular): it can hardly be an unheard
of issue. If someone's solved it in one way, it's
almost certainly possible to translate that to Python
(or to use their tool, if it's accessible).
I have an idea it's held in the registry, but I'm not sure.
You could try running up regedit and searching for likely
strings.

By the sound of it, you're almost better off compiling
a list of .exe from machines and building up a blacklist
from those.

TJG


This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk

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


Re: os.system(cmd) isn't working

2005-06-23 Thread Michael P. Soulier
On 23/06/05 Tim Golden said:

> This is only half an answer, but I personally find faffing
> about with the double-quote / double-backslash stuff between
> Python and Windows a pain in the neck, so where I can I avoid it.

Indeed. I believe this is why Python has os.sep. 

Mike

-- 
Michael P. Soulier <[EMAIL PROTECTED]>
http://www.digitaltorque.ca
http://opag.ca  python -c 'import this'
Jabber: [EMAIL PROTECTED]


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

RE: os.system(cmd) isn't working

2005-06-23 Thread Tim Golden
[Michael P. Soulier]
| On 23/06/05 Tim Golden said:
| 
| > This is only half an answer, but I personally find faffing
| > about with the double-quote / double-backslash stuff between
| > Python and Windows a pain in the neck, so where I can I avoid it.
| 
| Indeed. I believe this is why Python has os.sep. 
| 
| Mike

Well, true, but if you were trying to enter a
particular file path as the OP was (c:\program files\ etc.)
would you really want to have "c:" + os.sep + "program files"...
or os.path.join ("c:", "program files"...)? And where do the
double-quotes go etc?

I'm not saying all these things aren't possible; my only
point is that rather than try to remember / work it out,
I generally try to avoid the issue.

TJG


This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk

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


Re: PEP ? os.listdir enhancement

2005-06-23 Thread Daniel Dittmar
Riccardo Galli wrote:
> On Thu, 23 Jun 2005 11:34:02 +0200, Andreas Kostyrka wrote:
> 
> 
>>What's wrong with
>>
>>(os.path.join(d, x) for x in os.listdir(d))
>>
>>It's short, and easier to understand then some obscure option ;)
>>
>>Andreas
> 
> 
> how does it help in using list comprehension, as the ones in the first
> post?

You can nest list comprehension
[ e
 for e in (os.path.join(d, x) for x in os.listdir(d))
 if os.path.isdir (e)]

You might also want to look at module itertools, which has better 
support for transforming and filtering in multiple steps.

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


Re: Does a function like isset() exist in Python?

2005-06-23 Thread Roy Smith
In article <[EMAIL PROTECTED]>,
 Patrick Fitzsimmons <[EMAIL PROTECTED]> wrote:

> Hi,
> 
> I'm sure I should know this, but I can't find it in the manual.
> 
> Is there a function in Python like the function in PHP isset()?  It
> should take a variable name and return True or False depending on
> whether the variable is initialized.
> 
> Thanks for any help,
> Patrick

The straight-forward thing would be to simply access the variable and catch 
any resulting NameError exception that's raised if it's not defined:

try:
   x
   print "x is defined"
except NameError:
   print "no it's not"

Next question, why do you want to do this?  I suspect for most idioms where 
you would something like this, the more pythonic way would be to set the 
variable to None at some point, then test to see if it's still None later 
on:

x = None
while foo:
   if blah:
  x = baz

if x != None:
   print "x was assigned a value"
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: python create WMI instances

2005-06-23 Thread future_retro
I've got as far as this.  I don't get any errors but still no
printer

>>> import win32com.client
>>> WBEM = 
>>> win32com.client.GetObject(r"winmgmts:{impersonationLevel=impersonate}!\\" + 
>>> "." + r"\root\cimv2")
>>> printer = WBEM.Get("Win32_Printer").SpawnInstance_()
>>> printer.Properties_('DeviceID').Value = 'myprinter'
>>> printer.Properties_('DriverName').Value = 'HP 2000C'
>>> printer.Properties_('Location').Value = 'myoffice'
>>> printer.Properties_('Network').Value = 'True'
>>> printer.Properties_('Shared').Value = 'True'
>>> printer.Properties_('ShareName').Value = 'myprintershare'
>>> printer.Put_

Do I need to specify any flags with Put_  ?

Thanks for all your help, I can almost taste victory!

MW.

Tim Golden wrote:
> [EMAIL PROTECTED]
> | Win32_Printer doesn't work with the Create method and
> | AddPrinterConnection only lets me add a connection to a share.  I'll
> | try and work out how to set the printer object properties in
> | the format
> | suggested;
> |
> | oPrinter.Properties_ ("DriverName").Value = strDriver
> |
> | Cheers, MW.
>
> I'm sorry my module won't have been much use to you
> in this, but it would be *really* helpful if you
> could post [a fragment of] the code you come up with
> so I can see what changes I need to make to help our
> future instance-spawners. It's just that I've never
> had the need to do this, and don't have any time to
> experiment at present.
>
> Thanks
> TJG
>
> 
> This e-mail has been scanned for all viruses by Star. The
> service is powered by MessageLabs. For more information on a proactive
> anti-virus service working around the clock, around the globe, visit:
> http://www.star.net.uk
> 

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


Re: case/switch statement?

2005-06-23 Thread Roy Smith
"NickC" <[EMAIL PROTECTED]> wrote:
> The thing I love most about Python is the fact that callables can be
> slung around at run-time, just like any other object.

Yup.  A while ago, I was doing a lot of file parsing with state machines.  
Each state was a function.  The main loop of the state machine was just:

state = start
while state != end:
   state, output = state (input)

Each function was responsible for returning a (nextState, output) tuple.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re:

2005-06-23 Thread Adriaan Renting
I'm using Eric3 and realy like it.
http://www.die-offenbachs.de/detlev/eric3.html

Adriaan Renting| Email: [EMAIL PROTECTED]
ASTRON | Phone: +31 521 595 217
P.O. Box 2 | GSM:   +31 6 24 25 17 28
NL-7990 AA Dwingeloo   | FAX:   +31 521 597 332
The Netherlands| Web: http://www.astron.nl/~renting/
>>> "Doug Ly" <[EMAIL PROTECTED]> 06/22/05 4:37 PM >>>
Is there a good IDE for Python? I have heard that Eclipse has a plugin
for Jython only.

Thanks

 

--Doug

 


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


User interfaces in console (dialog like)

2005-06-23 Thread Negroup
Hi all.

I need to provide to my users a graphical interface to be used from
os' command line.
Initially I thought something equivalent to Unix dialog, and googling
around I have found Python Dialog
(http://pythondialog.sourceforge.net/). This would be the perfect
solution for me if it could be cross platform. However, it doesn't
work on Windows, just on Linux/Unix.

Do you guys know an alternative that fits my needings without moving
from Python?

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


RE: python create WMI instances

2005-06-23 Thread Tim Golden
[EMAIL PROTECTED]
| I've got as far as this.  I don't get any errors but still no
| printer
| 
| >>> import win32com.client
| >>> WBEM = 
| win32com.client.GetObject(r"winmgmts:{impersonationLevel=imper
| sonate}!\\" + "." + r"\root\cimv2")
| >>> printer = WBEM.Get("Win32_Printer").SpawnInstance_()
| >>> printer.Properties_('DeviceID').Value = 'myprinter'
| >>> printer.Properties_('DriverName').Value = 'HP 2000C'
| >>> printer.Properties_('Location').Value = 'myoffice'
| >>> printer.Properties_('Network').Value = 'True'
| >>> printer.Properties_('Shared').Value = 'True'
| >>> printer.Properties_('ShareName').Value = 'myprintershare'
| >>> printer.Put_
| 
| Do I need to specify any flags with Put_  ?


Well you certainly need to call it -- printer.Put_ () --
and not just refer to it. But maybe that's just a cut-and-paste
problem. In theory (according to the docs) you could pass a
CREATE_ONLY flag (or something like that) but I don't think
it's strictly necessary. I'd imagine that it would create if
it didn't exist. Check out msdn for more details than you
want to know.

TJG


This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk

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


Swig wrapping C++ Polymorphism

2005-06-23 Thread James Carroll
Hi, I asked this on the SWIG mailing list, but it's pretty dead over there...
I'm trying to get Python to pass a subclass of a C++ object to another
C++ object...

I have three C++ classes,

TiledImageSource

ZoomifyReaderWx  which ISA  TiledImageSource

TiffWriter which has a method which takes a TiledImageSource

reader = bright.ZoomifyReaderWx()
writer = bright.TiledTiffWriter()
writer.SetImageSource(reader)  <- doesn't work, error below.

TiffWriter has a SetImageSource method that takes a pointer to a
TiledImageSource.
When I try to pass an instance of ZoomifyReaderWx to TiffWriter, SWIG
can't hook the two up.

How can I fix this?  I think I need a typemap, but I'm not sure of the syntax.

Thanks!
-Jim


Test script


reader = bright.ZoomifyReaderWx()
reader.Open("C:/Slides/test.pff")

writer = bright.TiledTiffWriter()
writer.SetImageSource(reader)
writer.CreateFile("C:/Slides/test.tif")

while not writer.IsFinished():
   writer.ProcessABit()
   print ".",

Exception

C:\jimc\prj\bright\scripts\vsEdit>python piplineTest.py
Traceback (most recent call last):
 File "piplineTest.py", line 11, in ?
   writer.SetImageSource(reader)
 File "C:\jimc\prj\bright\scripts\vsEdit\bright.py", line 88, in SetImageSource

   def SetImageSource(*args): return _bright.TiledTiffWriter_SetImageSource(*ar
gs)
TypeError: argument number 2: a 'TiledImageSource *' is expected, 'PySwigObject(
_p_ZoomifyReaderWx)' is received


Interface files (exceprts)


class ZoomifyReaderWx: public TiledImageSource
{
public:
   bool Open(wxString filename);
   void Close();

   ZoomifyReaderWx();
   //%pragma(python) addtomethod = "__init__:self._setOORInfo(self)"

   // necessary for ZoomableImageReader
   virtual int GetWidth(int reduction = 0);
   virtual int GetHeight(int reduction = 0);
...


class TiledTiffWriter
{
public:
   TiledTiffWriter();
   //%pragma(python) addtomethod = "__init__:self._setOORInfo(self)"

   void SetImageSource(TiledImageSource *source);
   void SetJpegQuality(int quality) { m_iJpegQuality = quality; }
   void CreateFile(char *filename);
...

class TiledImageSource
{
public:
   //%pragma(python) addtomethod = "__init__:self._setOORInfo(self)"

   virtual int GetWidth(int reduction = 0);
   virtual int GetHeight(int reduction = 0);
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: PEP ? os.listdir enhancement

2005-06-23 Thread Riccardo Galli
On Thu, 23 Jun 2005 13:25:06 +0200, Daniel Dittmar wrote:

> He probably meant that a 'join' option would be more natural than an 'abs'
> option. After all, your examples use os.path.join to create a valid path
> that can be used as the argument to other module os functions. Whether the
> results are absolute or relative should depend on the initial argument to
> os.listdir.
> 
> Daniel

I got the point, and you're right. I didn't though about that and 'abs' as
keyword becomes nonsense. Needing a more general kewyword, as pointed out
by Peter Otten


-- 
Riccardo Galli
Sideralis Programs
http://www.sideralis.net
-- 
http://mail.python.org/mailman/listinfo/python-list


Python 2.1 / 2.3: xreadlines not working with codecs.open

2005-06-23 Thread Eric Brunel
Hi all,

I just found a problem in the xreadlines method/module when used with 
codecs.open: the codec specified in the open does not seem to be taken into 
account by xreadlines which also returns byte-strings instead of unicode 
strings.

For example, if a file foo.txt contains some text encoded in latin1:

>>> import codecs
>>> f = codecs.open('foo.txt', 'r', 'utf-8', 'replace')
>>> [l for l in f.xreadlines()]
['\xe9\xe0\xe7\xf9\n']

But:

>>> import codecs
>>> f = codecs.open('foo.txt', 'r', 'utf-8', 'replace')
>>> f.readlines()
[u'\ufffd\ufffd']

The characters in latin1 are correctly "dumped" with readlines, but are still 
in latin1 encoding in byte-strings with xreadlines.

I tested with Python 2.1 and 2.3 on Linux and Windows: same result (I haven't 
Python 2.4 installed here)

Can anybody confirm the problem? Is this a bug? I searched this usegroup and 
the known Python bugs, but the problem did not seem to be reported yet.

TIA
-- 
python -c "print ''.join([chr(154 - ord(c)) for c in 
'U(17zX(%,5.zmz5(17;8(%,5.Z65\'*9--56l7+-'])"
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: List of all installed applications (XP)?

2005-06-23 Thread Thomas Heller
"Guy Lateur" <[EMAIL PROTECTED]> writes:

> | What -- from your point of view -- is an "application"?
>
> Good question. Let me try to elaborate: I would like to know if people in 
> our company (building techniques) are using non-licensed software (eg 
> Photoshop, Office, AutoCad). So I guess by 'application' I mean commercial 
> software packages like those.
>
> Is it safe to assume those apps get listed in AppPath? I don't think my 
> users are cunning enough to mess with the registry, so I guess we're talking 
> about the 'standard' installation.
>
>
>
> | Neither does every app have an Add/Remove Program
> | entry. (And some things have entries which aren't apps).
>
> Just out of curiosity: can one read the info/list one gets in Add/Remove 
> Programs? It's not a problem I get results that aren't actually apps, but it 
> is important I get all apps.
>

I think it's this registry key:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

Maybe you should try HKEY_CURRENT_USER\.. or HKEY_USERS\..\.. as well.

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


Re: Looking For Geodetic Python Software

2005-06-23 Thread Diez B. Roggisch
Tim Daneliuk wrote:
> Casey Hawthorne wrote:
>>
>> Do your planes fly over the earth's surface or through the ground?
> 
> 
> Why do you presume this has anything to do with airplanes?
> 

That was supposed to be a funny remark regarding that  your 
"straight-line-distance" makes no sense at all - because that would mean 
that you'd have to go underground. So it has no real-world-application - 
unless you actually have underground-planes ;)

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


Re: Looking For Geodetic Python Software

2005-06-23 Thread Diez B. Roggisch
> For spherical earth, this is easy, just treat the 2 locations as
> vectors whose origin is at the center of the earth and whose length is
> the radius of the earth.  Convert the lat-long to 3-D rectangular
> coordinates and now the angle between the vectors is 
> arccos(x dotproduct y).  The over-ground distance is then just R*theta
> where theta is the angle.

It's a bit more complicated in the real world - usually one takes a 
spheroid as defined by the wgs84 standard:

http://www.codeguru.com/Cpp/Cpp/algorithms/article.php/c5115/

Maybe for python, this is enteresting (haven't used it myself though):

http://pyogclib.sourceforge.net/


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


Re: Database recommendations for Windows app

2005-06-23 Thread Jussi Jumppanen
Dennis Lee Bieber wrote:

> Firebird might be a contender... 

I recently completed a 5 user Java based Windows reporting
system that used Firebird as the SQL server based database. 

I found Firebird performed very well and I would not hesitate
to use it again.

Jussi Jumppanen
Author of: Zeus for Windows Editor (New version 3.94 out now)
"The C/C++, Cobol, Java, HTML, Python, PHP, Perl folding editor"
Home Page: http://www.zeusedit.com
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Allowing only one instance of a script?

2005-06-23 Thread utabintarbo
... lock file?

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


Re: Allowing only one instance of a script?

2005-06-23 Thread Grant Edwards
On 2005-06-23, Tim Golden <[EMAIL PROTECTED]> wrote:
> [Ali]
>| 
>| I have a script which I double-click to run. If i double-click it
>| again, it will launch another instance of the script.
>| 
>| Is there a way to allow only one instance of a script, so that if
>| another instance of the script is launched, it will just 
>| return with an
>| error.
>
> If you're on Windows, have a look at this recent thread:
>
> http://groups-beta.google.com/group/comp.lang.python/msg/2a4fadfd3d6e3d4b?hl=en

If you're on Unix/Linux, the usual way to do this is with a
lockfile.

-- 
Grant Edwards   grante Yow!  I'd like MY data-base
  at   JULIENNED and stir-fried!
   visi.com
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Python internals and parser

2005-06-23 Thread harold fellermann
Hi,

On 22.06.2005, at 23:18, Michael Barkholt wrote:
> Is there any detailed documentation on the structure of Pythons 
> internals,
> besides the source code itself?
>
> More specifically I am looking for information regarding the C parser, 
> since
> I am looking into the viability of using it in another project that 
> needs
> to parse python code (and I would like the code to be written in C).


maybe this link might help you: http://wiki.cs.uiuc.edu/cs427/PYTHON


--
"Wahrheit ist die Erfindung eines Lügners"
-- Heinz von Foerster

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


RE: Single Application Instance Example

2005-06-23 Thread Tim Golden
[DeRRudi]
| 
| Whit this mutex is it possible when an instance is running in
| background and you try to open a new instance. you cancel it and show
| the first? 
| 
| Greetz

All the Mutex is doing is providing a single token
which only one instance of the app can hold at a
time. Of itself, it doesn't provide any facility to
awake background applications or do anything at all
except exclude other apps from holding the same
token.

What you describe could be achieved a number of ways.
(He says, sounding knowledegeable, but having little
real experience to back himself up). Once the Mutex 
check proves that you're not the only instance running, 
you could, for example, find the top-level window of your 
app and activate it (assuming it has a window). You could 
embed some sort of mini-messaging within the application, 
say a small Pyro class, or a socket server, or a Windows
pipe, or whatever, which will let your second instance
send a message to the first which will then activate
(whatever that means).

In fact, you could probably combine the two by using a 
private Windows pipe which would both serve as a "anyone
else here?" check and as a signal to an existing instance
to wake up and dance.

It all depends on what the app is doing, and how
hard you want to try.

TJG


This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk

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


Re: how to use more than 1 __init__ constructor in a class ?

2005-06-23 Thread Rocco Moretti
Steven D'Aprano wrote:
> On Wed, 22 Jun 2005 12:34:21 -0500, Rocco Moretti wrote:
>
> 
>>You could also turn __init__ into a dispatch fuction:
>>
>>#--
>>class myPointClass:
>>   def __init__(self, *args):
>> if len(args) <= 2:
>>   self.__init_two(*args)
>> if len(args) == 3:
>>   self.__init_three(*args)
> 
> 
> Oh wow, so that's what I've been doing for years. Dispatching.
> 
> And I thought I was just calling other functions :-)

I think the distinction between just calling other functions and 
dispatching is that with dispatching, the function doesn't do any actual 
work by itself, but just hands off the work to a different function.

http://www.c2.com/cgi/wiki?DispatchingForDummies

> That's the joys of a mostly self-taught programming knowledge: you miss
> out on all the buzzwords.

Being mostly self taught myself, I have a tendancy to use infrequently 
encountered terms in related but technically inappropriate contexts, 
confusing the better informed people I deal with. ;-)
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: pydoc - suppressing builtins?

2005-06-23 Thread Skip Montanaro

Alan> Is it possible to persuade pydoc not to include documentation for
Alan> methods inherited from built-in classes? 

Alan> I'm sure I could qite easily write something to post-process the
Alan> HTML files; just wondering if there might be an easier way.

If you're going to go to the trouble of writing something to post-process
the HTML, maybe it would be no more difficult to simply patch pydoc, then
everyone wins.

Skip

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


Re: Database recommendations for Windows app

2005-06-23 Thread Thomas Bartkus

"Magnus Lycka" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
> Cameron Laird wrote:
> > OK, I'm with you part of the way.  Typical "Access" developers
> > are *always* involved with DLL hell, right?  You're surely not
> > saying that Python worsens that frustration, are you?
>
> I think Dan was commenting on flaws in Microsoft's products,
> not in Python. As I understand it, he was suggesting to use
> something else than Access with Python, not something else
> than Python with Access.

  > The O.P. wanted a database for his
  > Python app, and Thomas Bartkus suggested Access.

Not exactly!

I suggested the built in Microsoft DAO or ADO database libraries which he
could use without need to distribute with his app.  The Access application
is simply another client app that sits on top of DAO/ADO and would be quite
unnecessary here.  Any Python/DB application you wished to distribute for MS
Windows would do best talk to the ADO library directly - end of distribution
problems.

* Everyone with WindowsXP already has the DAO and ADO libraries.

* Not everyone has (or needs) MS Access which one would have to pay for and
could not distribute freely with ones Python app.

* Python has no need of MS Access in order to create, maintain, and
manipulate databases using Microsofts built in ADO database facilities -
although a developer *might* find Access useful as an inspection/debugging
tool on his own workstation.

All of which used to confuse the hell out of me :-)
Thomas Bartkus




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


Reraise exception with modified stack

2005-06-23 Thread Nicolas Fleury
Hi,
I've made a small utility to re-raise an exception with the same stack 
as before with additional information in it.  Since I want to keep the 
same exception type and that some types have very specific constructors 
(which take, for example, more than one parameter), the only safe way I 
have found to made it is by hacking the str representation:


import sys

class ExceptionStr:
 def __init__(self, content):
 self.content = content
 self.infos = []
 def addinfo(self, info):
 self.infos.insert(0, info)
 def __call__(self):
 return '\n' + '\n'.join(self.infos + [self.content])

def reraise(exception, additionalInfo):
 strFunc = getattr(exception, "__str__", None)
 if not isinstance(strFunc, ExceptionStr):
 strFunc = ExceptionStr(str(exception))
 exception.__str__ = strFunc
 strFunc.addinfo(additionalInfo)
 raise exception, None, sys.exc_info()[-1]

if __name__ == '__main__':
 def foo():
 raise AttributeError('Test')
 def bar():
 foo()
 try:
 try:
 try:
 bar()
 except Exception, exception:
 reraise(exception, "While doing x:")
 except Exception, exception:
 reraise(exception, "While doing y:")
 except Exception, exception:
 reraise(exception, "While doing z:")


Suppose the resulted traceback is:

Traceback (most recent call last):
   File "somefile.py", line 52, in ?
 reraise(exception, "While doing z:", MyException)
   File "somefile.py", line 50, in ?
 reraise(exception, "While doing y:", Exception)
   File "somefile.py", line 48, in ?
 reraise(exception, "While doing x:")
   File "somefile.py", line 46, in ?
 bar()
   File "somefile.py", line 40, in bar
 foo()
   File "somefile.py", line 38, in foo
 raise AttributeError('Test')
AttributeError:
While doing z:
While doing y:
While doing x:
Test

I would like to know how to code the reraise function so that the lines 
48, 50 and 52 don't appear in the stack.  Is it possible?

Thx and regards,
Nicolas
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Database recommendations for Windows app

2005-06-23 Thread Cameron Laird
In article <[EMAIL PROTECTED]>,
Dave Cook  <[EMAIL PROTECTED]> wrote:
>On 2005-06-23, Peter Hansen <[EMAIL PROTECTED]> wrote:
.
.
.
>>Type checking?  SQLite currently supports 
>> neither.  
>
>sqlite3 has a "strict affinity" mode, but I'm not exactly sure how one sets
>it.
>
>http://www.sqlite.org/datatype3.html
.
.
.
While I'm still learning SQLite3, I already know enough to
reinforce Mr. Cook's point, and report that Version 3 re-
tains the data manager's yummy lightness, while
significantly enhancing its functionality in such regards
as type correctness.
-- 
http://mail.python.org/mailman/listinfo/python-list


newbie - modules for jython (under grinder 3) ?

2005-06-23 Thread bugbear
I'm just trying to use Grinder 3 to beat
up my http-app.

Grinder 3 comes with its own jython.jar.

Some of the sample scripts:
http://grinder.sourceforge.net/g3/script-gallery.html
use import statements that don't work for me.

Reading around, these are reference to modules.

Do I need a "proper" jython instead of the one
that grinder ships with?

Or...

Do I need to get and install some modules?

If the latter, where from and how?
I note that not all Python modules
can be used as Jython modules.

My most urgent need is for the threading module, although
I've faked my way round that by using Doug Lea's
concurrent library in java, which I can call
from Jython.
http://gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/intro.html

But I'd like to know how to do it "right"

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


Re: Database recommendations for Windows app

2005-06-23 Thread Thomas Bartkus
"Magnus Lycka" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
> Cameron Laird wrote:
> > OK, I'm with you part of the way.  Typical "Access" developers
> > are *always* involved with DLL hell, right?  You're surely not
> > saying that Python worsens that frustration, are you?
>
> I think Dan was commenting on flaws in Microsoft's products,
> not in Python. As I understand it, he was suggesting to use
> something else than Access with Python, not something else
> than Python with Access. The O.P. wanted a database for his
> Python app, and Thomas Bartkus suggested Access.

Not exactly!

I suggested the built in Microsoft DAO or ADO database libraries which he
could use without need to distribute with his app.  The Access application
is simply another client app that sits on top of DAO/ADO and would be quite
unnecessary here.  Any Python/DB application you wished to distribute for MS
Windows would do best talk to the ADO library directly - end of distribution
problems.

* Everyone with WindowsXP already has the DAO and ADO libraries.

* Not everyone has (or needs) MS Access which one would have to pay for and
could not distribute freely with ones Python app.

* Python has no need of MS Access in order to create, maintain, and
manipulate databases using Microsofts built in ADO database facilities -
although a developer *might* find Access useful as an inspection/debugging
tool on his own workstation.

All of which used to confuse the hell out of me :-)
Thomas Bartkus





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


Re: List of all installed applications (XP)?

2005-06-23 Thread Paul McGuire
Get Tim Golden's wmi module
(http://tgolden.sc.sabren.com/python/wmi.html).  I recently had to help
my brother remove some spyware, and so I used some of the example that
came with WMI to read through the registry to extract startup keys,
services, etc.

Even if your users aren't sophisticated enough to mess with the
registry, rest assured that the software installation programs are.
You should be able to find traces of any installed commercial program
that was released in the past 5 years - I suspect they *all* leave
traces in the registry at this point.  Go to
HKEY_LOCAL_MACHINE\SOFTWARE and you will get a list of software
vendors, and you can enumerate keys from there.

Good luck!
-- Paul

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


Re: Allowing only one instance of a script?

2005-06-23 Thread Thomas Guettler
Am Wed, 22 Jun 2005 23:49:21 -0700 schrieb Ali:

> Hi,
> 
> I have a script which I double-click to run. If i double-click it
> again, it will launch another instance of the script.
> 
> Is there a way to allow only one instance of a script, so that if
> another instance of the script is launched, it will just return with an
> error.

Hi,

Create a file which contains the PID (process ID) of
the current process in a directory. If the file
already exists, the file is running.

If your script dies without removing the pid-file, you
need to look during the start if the PID which is in the
file is sill alive.

There is a small race condition between os.path.exists()
and writing the file. If you want to be 100% sure you need
to use file locking.

 HTH,
   Thomas


-- 
Thomas Güttler, http://www.thomas-guettler.de/


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


Re: python create WMI instances

2005-06-23 Thread future_retro
Right I got it working.  I had to put a printer port in aswell.  I'll
now look at a script to create printer ports.  My goal is being able to
query the printers on print server x and then recreate the printers
(shares and ports) on print server y.

Thanks, for all your help Tim, much appreciated. MW

import win32com.client
WBEM =
win32com.client.GetObject(r"winmgmts:{impersonationLevel=impersonate}!\\"
+ "." + r"\root\cimv2")
printer = WBEM.Get("Win32_Printer").SpawnInstance_()
printer.Properties_('DeviceID').Value = 'myprinter'
printer.Properties_('DriverName').Value = 'HP 2000C'
printer.Properties_('Location').Value = 'myoffice'
printer.Properties_('Network').Value = 'True'
printer.Properties_('Shared').Value = 'True'
printer.Properties_('ShareName').Value = 'myprintershare'
printer.Properties_('PortName').Value = 'IP_169.254.110.14'
printer.Put_()

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


Re: os.system(cmd) isn't working

2005-06-23 Thread Tjarko de Jong
On Thu, 23 Jun 2005 00:02:55 -0400, Gregory Piñero
<[EMAIL PROTECTED]> wrote:

>Hi guys,
>
>I'm trying to run this statement:
>
>os.system(r'"C:\Program Files\Mozilla Firefox\firefox.exe"' + '
>"www.blendedtechnologies.com"')
>
>The goal is to have firefox open to that website.
>
>When I type r'"C:\Program Files\Mozilla Firefox\firefox.exe"' + '
>"www.blendedtechnologies.com"' in the python interpreter I get:
>
>'"C:\\Program Files\\Mozilla Firefox\\firefox.exe"
>"www.blendedtechnologies.com"'
>
>And when I copy this into my command prompt (less outermost ' )
>firefox opens up to that page like I would expect.  However in python
>nothing happens and I get exit status 1.
>
>I'm using Python 2.3 on Windows XP pro service pack 2.

What is wrong with:
os.startfile("www.blendedtechnologies.com")
-- 
http://mail.python.org/mailman/listinfo/python-list

Re: Loop until condition is true

2005-06-23 Thread Stelios Xanthakis
Michael Hoffman wrote:
> Stelios Xanthakis wrote:
> 
>> Magnus Lycka wrote:
> 
>  >
> 
>>> Right. Silly me. Maybe in some future Python version, True and False
>>> will be constants, like None is since Python 2.4.
>>
>>
>> Actually, there is support in marshal to write True and False objects so
>> I don't understand why this isn't in 2.4
> 
> 
> Because it would break existing code.

Yes.  Code that has variables named 'True' and 'False'.


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


Re: PEP 304 - is anyone really interested?

2005-06-23 Thread Thomas Guettler
Am Wed, 22 Jun 2005 18:01:51 -0500 schrieb Skip Montanaro:

> 
> I wrote PEP 304, "Controlling Generation of Bytecode Files":
> 
> http://www.python.org/peps/pep-0304.html
> 

...

Hi,

I am interested in a small subset: I want to import a file without
a '.pyc' being generated. 

Background: I sometimes missuse python for config files. For example
there is a file $MYAPP/etc/debuglog.py. This file contains simple
assignments

search=0
indexing=1


In the code I use it like this:

sys.path.append(...) # Put $MYAPP/etc into the path
import debuglog

...
if debuglog.search:
print "Searching for "

I don't want pyc files in the etc directory.

Up to now I do it like this:

import debuglog
try:
os.unlink("...debuglog.pyc")
except:
pass


 Thomas

-- 
Thomas Güttler, http://www.thomas-guettler.de/


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


Re: PEP ? os.listdir enhancement

2005-06-23 Thread Thomas Guettler
Am Wed, 22 Jun 2005 17:57:14 +0200 schrieb Riccardo Galli:

> Hi,
> I noticed that when I use os.listdir I need to work with absolute paths
> 90% of times.
> While I can use a for cycle, I'd prefere to use a list comprehension,
>  but it becomes too long.

Hi,

I like it. But as you noticed, too, "join" would be better than "abs".

Example:

# mylistdir.py
import os
import sys

def mylistdir(dir, join=False):
for file in os.listdir(dir):
yield os.path.join(dir, file)


print list(mylistdir(sys.argv[1]))


 Thomas

-- 
Thomas Güttler, http://www.thomas-guettler.de/


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


Re: newbie - modules for jython (under grinder 3) ?

2005-06-23 Thread Diez B. Roggisch
bugbear wrote:
> I'm just trying to use Grinder 3 to beat
> up my http-app.
> 
> Grinder 3 comes with its own jython.jar.
> 
> Some of the sample scripts:
> http://grinder.sourceforge.net/g3/script-gallery.html
> use import statements that don't work for me.
> 
> Reading around, these are reference to modules.
> 
> Do I need a "proper" jython instead of the one
> that grinder ships with?

I guess so - at least there are jython-modules written as *py-files in 
my jython installation, including the threading.py module. Now - I don't 
exactly remember how to specify where to find those, but AFAIK there is 
a system property that you have to set to that path.

So - go, fetch jython from jython.org, install it and try to proceed.

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


Re: Allowing only one instance of a script?

2005-06-23 Thread Grant Edwards
On 2005-06-23, Thomas Guettler <[EMAIL PROTECTED]> wrote:

> Create a file which contains the PID (process ID) of
> the current process in a directory. If the file
> already exists, the file is running.

That's how it's usually done.

> If your script dies without removing the pid-file, you need to
> look during the start if the PID which is in the file is sill
> alive.


> There is a small race condition between os.path.exists()
> and writing the file.

That's why it's pointless to call os.path.exists().

> If you want to be 100% sure you need to use file locking.

I've never seen it done that way.

The standard method is to use open() with flags O_CREAT|O_EXCL.
If the open() is sucessful, then you have the lock.  If it
fails, somebody else already has the lock.

Another method is to create a temp file containing the PID and
then call link() to rename it. 

Both open() and link() are atomic operations, so there's no
race condition.

-- 
Grant Edwards   grante Yow!  I don't know WHY I
  at   said that... I think it
   visi.comcame from the FILLINGS inmy
   read molars...
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Database recommendations for Windows app

2005-06-23 Thread Magnus Lycka
Thomas Bartkus wrote:
> "Magnus Lycka" <[EMAIL PROTECTED]> wrote in message
>   > The O.P. wanted a database for his
>   > Python app, and Thomas Bartkus suggested Access.
> 
> Not exactly!

Sorty, I meant Jet or whatever the backend is called these days.

> I suggested the built in Microsoft DAO or ADO database libraries which he
> could use without need to distribute with his app.  The Access application
> is simply another client app that sits on top of DAO/ADO and would be quite
> unnecessary here.  Any Python/DB application you wished to distribute for MS
> Windows would do best talk to the ADO library directly - end of distribution
> problems.

If we start with vanilla Python, we need just the tiny PySqlite module
and DB-API compliant Python code to get a SQLite solution to work. One
small 3rd party module which is trivial to bundle. There is no way you
can access ADO with less 3rd party stuff bundled than that. The minimum
is to bundle win32all or ctypes, but then you need to work much harder.
You probably want a 3rd party python ADO library as well. Then it's
much more stuff to bundle.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Allowing only one instance of a script?

2005-06-23 Thread Grant Edwards
On 2005-06-23, Grant Edwards <[EMAIL PROTECTED]> wrote:
> On 2005-06-23, Tim Golden <[EMAIL PROTECTED]> wrote:
>> [Ali]
>>| 
>>| I have a script which I double-click to run. If i double-click it
>>| again, it will launch another instance of the script.
>>| 
>>| Is there a way to allow only one instance of a script, so that if
>>| another instance of the script is launched, it will just 
>>| return with an
>>| error.
>>
>> If you're on Windows, have a look at this recent thread:
>>
>> http://groups-beta.google.com/group/comp.lang.python/msg/2a4fadfd3d6e3d4b?hl=en
>
> If you're on Unix/Linux, the usual way to do this is with a
> lockfile.

You can also use a network port instead of a file.  Binding a
socket to a port is an exclusive and atomic operation.  An
advantage to the network port scheme is that the "lock"
automatically goes away if the program dies.  A disadvantiage is
that it can't contain information (date/time/PID) like a file
can.

-- 
Grant Edwards   grante Yow!  I want DUSTIN
  at   HOFFMAN!! ... I want
   visi.comLIBRACE!! YOW!!
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: python create WMI instances

2005-06-23 Thread future_retro
Heres a script for creating printer ports

import win32com.client
WBEM =
win32com.client.GetObject(r"winmgmts:{impersonationLevel=impersonate}!\\"
+ "." + r"\root\cimv2")
printer = WBEM.Get("Win32_Printer").SpawnInstance_()
printer.Properties_('DeviceID').Value = 'myprinter'
printer.Properties_('DriverName').Value = 'HP 2000C'
printer.Properties_('Location').Value = 'myoffice'
printer.Properties_('Network').Value = 'True'
printer.Properties_('Shared').Value = 'True'
printer.Properties_('ShareName').Value = 'myprintershare'
printer.Properties_('PortName').Value = 'IP_169.254.110.14'
printer.Put_()

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


Re: PEP ? os.listdir enhancement

2005-06-23 Thread Ivan Van Laningham
Hi All--

Thomas Guettler wrote:
> 
> I like it. But as you noticed, too, "join" would be better than "abs".
> 
> Example:
> 
> # mylistdir.py
> import os
> import sys
> 
> def mylistdir(dir, join=False):
> for file in os.listdir(dir):
> yield os.path.join(dir, file)
> 
> print list(mylistdir(sys.argv[1]))
> 

Mmmm, how about:

# mylistdir.py
import os, os.path
import sys

def mylistdir(dir, join=False):
for file in os.listdir(dir):
if join:
yield join(dir, file)
else:
yield file

print list(mylistdir(sys.argv[1]))

or

print list(mylistdir(sys.argv[1],os.path.join))

That way I could def my own join and call it as

print list(mylistdir(sys.argv[1],myjoin))

(Note that in your version the join argument isn't used at all.)

Metta,
Ivan
--
Ivan Van Laningham
God N Locomotive Works
http://www.andi-holmes.com/
http://www.foretec.com/python/workshops/1998-11/proceedings.html
Army Signal Corps:  Cu Chi, Class of '70
Author:  Teach Yourself Python in 24 Hours
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: PEP 304 - is anyone really interested?

2005-06-23 Thread Thomas Heller
Thomas Guettler <[EMAIL PROTECTED]> writes:

> Am Wed, 22 Jun 2005 18:01:51 -0500 schrieb Skip Montanaro:
>
>> 
>> I wrote PEP 304, "Controlling Generation of Bytecode Files":
>> 
>> http://www.python.org/peps/pep-0304.html
>> 
>
> ...
>
> Hi,
>
> I am interested in a small subset: I want to import a file without
> a '.pyc' being generated. 
>
> Background: I sometimes missuse python for config files. For example

Although I was not interested originally, I think that's a use case I
also have.  Optional config files, which should not be compiled to .pyc
or .pyo.  Only removing the .py file doesn't have the expected effect
if a .pyc and/or .pyo if is left.

I don't think the PEP supports such a use case.

BTW: While I'me reading the PEP to check the above, I encountered this:

  Add a new environment variable, PYTHONBYTECODEBASE, to the mix of
  environment variables which Python understands. PYTHONBYTECODEBASE is
  interpreted as follows:

  If not defined, Python bytecode is generated in exactly the same
  way as is currently done. sys.bytecodebase is set to the root
  directory (either / on Unix and Mac OSX or the root directory of
  the startup (installation???) drive -- typically C:\ -- on
  Windows).

  If defined and it refers to an existing directory to which the
  user has write permission, sys.bytecodebase is set to that
  directory and bytecode files are written into a directory
  structure rooted at that location.

  If defined but empty, sys.bytecodebase is set to None and
  generation of bytecode files is suppressed altogether.

AFAIK, it is not possible to define empty env vars on Windows.

  c:\>set PYTHONCODEBASE=

would remove this env var instead of setting it to an empty value.

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


Re: how to use more than 1 __init__ constructor in a class ?

2005-06-23 Thread Singletoned
Rocco Moretti wrote:
> Steven D'Aprano wrote:

> > That's the joys of a mostly self-taught programming knowledge: you miss
> > out on all the buzzwords.
>
> Being mostly self taught myself, I have a tendancy to use infrequently
> encountered terms in related but technically inappropriate contexts,
> confusing the better informed people I deal with. ;-)

Indeed.  I find I use even more buzzwords because I can just make up as
many as I want.

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


Re: Loop until condition is true

2005-06-23 Thread Mike Meyer
Stelios Xanthakis <[EMAIL PROTECTED]> writes:

> Michael Hoffman wrote:
>> Stelios Xanthakis wrote:
>>
>>> Magnus Lycka wrote:
>>  >
>>
 Right. Silly me. Maybe in some future Python version, True and False
 will be constants, like None is since Python 2.4.
>>>
>>>
>>> Actually, there is support in marshal to write True and False objects so
>>> I don't understand why this isn't in 2.4
>> Because it would break existing code.
>
> Yes.  Code that has variables named 'True' and 'False'.

Making None a constant broke existing code (and I just saw old code
that assigned to None). Are True and False that much more common as
variable names than None?

   http://www.mired.org/home/mwm/
Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Database recommendations for Windows app

2005-06-23 Thread Thomas Bartkus

"Magnus Lycka" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
> Thomas Bartkus wrote:
> > "Magnus Lycka" <[EMAIL PROTECTED]> wrote in message
> >   > The O.P. wanted a database for his
> >   > Python app, and Thomas Bartkus suggested Access.
> >
> > Not exactly!
>
> Sorty, I meant Jet or whatever the backend is called these days.

Hey! Even MS is confused these days.

>
> If we start with vanilla Python, we need just the tiny PySqlite module
> and DB-API compliant Python code to get a SQLite solution to work. One
> small 3rd party module which is trivial to bundle. There is no way you
> can access ADO with less 3rd party stuff bundled than that. The minimum
> is to bundle win32all or ctypes, but then you need to work much harder.
> You probably want a 3rd party python ADO library as well. Then it's
> much more stuff to bundle.

I was thinking of Win32com which I expect lets you put a wrapper around ADO
and work the ADO (or any other ActiveX) object model from within Python.

   However

I must confess that while I am quite familiar with ADO,  I haven't used it
with Python.

I do know that the ADO (or DAO) libraries are complete, SQL oriented,
database systems that are available on every WinXP desktop.  I *think* "Jet"
refers to the underlying, .mdb file based storage engine that ADO rides on
top of by default.  All WinXP platforms have this and do not need another db
platform - IOW we don't need to distribute a db platform here!

Unless one simply prefers something else ;-)
Thomas Bartkus




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


Re: Database recommendations for Windows app

2005-06-23 Thread Dan
On 6/22/2005 3:08 PM, Cameron Laird wrote:
> In article <[EMAIL PROTECTED]>, Dan  <[EMAIL PROTECTED]> wrote:
> 
>>On 6/22/2005 1:14 PM, Dave Cook wrote:
>>
>>>On 2005-06-22, Cameron Laird <[EMAIL PROTECTED]> wrote:
>>>
>>>
>>>
Are you saying that Python-based applications are particularly
vulnerable in this all-too-common scenario?  If so, I'm not
getting it; why is the architecture described more fragile than
more traditional Windows-oriented development patterns?  If not,
then, ... well then I truly don't get your point.
>>>
>>>
>>>Maybe the point is the downside of depending on installed DLLs rather than
>>>shipping your own.
>>>
>>>Dave Cook
>>
>>Yes, DLL hell.
> 
> 
> ?
> 
> OK, I'm with you part of the way.  Typical "Access" developers 
> are *always* involved with DLL hell, right?  You're surely not
> saying that Python worsens that frustration, are you?

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


Re: Database recommendations for Windows app

2005-06-23 Thread Dan
On 6/22/2005 9:51 PM, Peter Hansen wrote:
> Will McGugan wrote:
> 
>> Thanks for the replies. I think I'm going to go with sqllite for now.
> 
> 
> Your list didn't mention a few things that might be critical. 
> Referential integrity?  Type checking?  SQLite currently supports 
> neither.  Just make sure you check the list of supported features to see 
> that it really does what you need.
> 
> -Peter

So in SQLLite, what happens of you try to store XYZ in an integer field?
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Loop until condition is true

2005-06-23 Thread Benji York
Mike Meyer wrote:
> Making None a constant broke existing code (and I just saw old code
> that assigned to None). Are True and False that much more common as
> variable names than None?

I would think so.  I know that my pre-booleans-in-Python code routinely 
did something like "from booleans import True, False".  Of course the 
fix is easy, but it still must be applied before the code will run.
--
Benji York
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: User interfaces in console (dialog like)

2005-06-23 Thread erinhouston
Do you only need to work on windows? if so you could use
http://newcenturycomputers.net/projects/wconio.html  to build your own
gui.

We used this for our inhouse ldap admin script.

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


don't understand MRO

2005-06-23 Thread Uwe Mayer
Hi,

I have a subclassed PyQt class: 

class Node(object):
def move(self, x,y): pass

class CRhomb(QCanvasPolygon, Node): pass

$ python
v2.4.1
>>> CRhomb.mro()
[, , , , , , , ]

>>> a = CRhomb()
>>> a.move(1,2)

This executes also Node.move(a, 1,2)
Why?

Because even QCanvasItem.move delegates the call to the derived object? But
qt.Qt does not have a move() method... how does it get passed on to Node?

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


Re: pickle broken: can't handle NaN or Infinity under win32

2005-06-23 Thread Tim Peters
[Tim Peters']
>> Well, I try, Ivan.  But lest the point be missed , 754 doesn't
>> _want_ +0 and -0 to act differently in "almost any" way.  The only
>> good rationale I've seen for why it makes the distinction at all is in
>> Kahan's paper "Branch Cuts for Complex
>> Elementary Functions, or Much Ado About Nothing's Sign Bit".  There
>> are examples in that where, when working with complex numbers, you can
>> easily stumble into getting real-world dead-wrong results if there's
>> only one flavor of 0.  And, of course, atan2 exists primarily to help
>> convert complex numbers from rectangular to polar form.

[Steven D'Aprano]
> It isn't necessary to look at complex numbers to see the difference
> between positive and negative zero. Just look at a graph of y=1/x. In
> particular, look at the behaviour of the graph around x=0. Now tell me
> that the sign of zero doesn't make a difference.

OK, I looked, and it made no difference to me.  Really.  If I had an
infinitely tall monitor, maybe I could see a difference, but I don't
-- the sign of 0 on the nose makes no difference to the behavior of
1/x for any x other than 0.  On my finite monitor, I see it looks like
the line x=0 is an asymptote, and the graph approaches minus infinity
on that line from the left and positive infinity from the right; the
value of 1/0 doesn't matter to that.

> Signed zeroes also preserve 1/(1/x) == x for all x,

No, signed zeros "preverse" that identity for exactly the set {+Inf,
-Inf}, and that's all.  That's worth something, but 1/(1/x) == x isn't
generally true in 754 anyway.  Most obviously, when x is subnormal,
1/x overflows to an infinity (the 754 exponent range isn't symmetric
around 0 -- subnormals make it "heavy" on the negative side), and then
1/(1/x) is a zero, not x.  1/(1/x) == x doesn't hold for a great many
normal x either (pick a pile at random and check -- you'll find
counterexamples quickly).

> admittedly at the cost of y==x iff 1/y == 1/x (which fails for y=-0 and x=+0).
>
> Technically, -0 and +0 are not the same (for some definition of 
> "technically"); but
> practicality beats purity and it is more useful to have -0==+0 than the 
> alternative.

Can just repeat that the only good rationale I've seen is in Kahan's
paper (previously referenced).

>> Odd bit o' trivia:  following "the rules" for signed zeroes in 754
>> makes exponeniation c**n ambiguous, where c is a complex number with
>> c.real == c.imag == 0.0 (but the zeroes may be signed), and n is a
>> positive integer.  The signs on the zeroes coming out can depend on
>> the exact order in which multiplications are performed, because the
>> underlying multiplication isn't associative despite that it's exact.

> That's an implementation failure. Mathematically, the sign of 0**n should
> depend only on whether n is odd or even. If c**n is ambiguous, then that's
> a bug in the implementation, not the standard.

As I said, these are complex zeroes, not real zeroes.  The 754
standard doesn't say anything about complex numbers.  In rectangular
form, a complex zero contains two real zeroes.  There are 4
possiblities for a complex zero if the components are 754
floats/doubles:

+0+0i
+0-0i
-0+0i
-0-0i

Implement Cartesian complex multiplication in the obvious way:

(a+bi)(c+di) = (ac-bd) + (ad+bc)i

Now use that to raise the four complex zeroes above to various integer
powers, trying different ways of grouping the multiplications.  For
example, x**4 can be computed as

  ((xx)x)x

or

  (xx)(xx)

or

  x((xx)x)

etc.  You'll discover that, in some cases, for fixed x and n, the
signs of the zeroes in the result depend how the multiplications were
grouped.  The 754 standard says nothing about any of this, _except_
for the results of multiplying and adding 754 zeroes.  Multiplication
of signed zeroes in 754 is associative.  The problem is that the
extension to Cartesian complex multiplication isn't associative under
these rules in some all-zero cases, mostly because the sum of two
signed zeroes is (under 3 of the rounding modes) +0 unless both
addends are -0.  Try examples and you'll discover this for yourself.

I was part of NCEG (the Numerical C Extension Group) at the time I
stumbled into this, and they didn't have any trouble following it
.  It was a surprise to everyone at the time that Cartesian
multiplication of complex zeroes lost associativity when applying 754
rules in the obvious way, and no resolution was reached at that time.

>> I stumbled into this in the 80's when KSR's Fortran compiler failed a
>> federal conformance test, precisely because the test did atan2 on the
>> components of an all-zero complex raised to an integer power, and I
>> had written one of the few 754-conforming libms at the time.  They
>> wanted 0, while my atan2 dutifully returned -pi.  I haven't had much
>> personal love for 754 esoterica since then ...

> Sounds to me that the Feds wanted something broken and you gave them
> something that was working. No w

Re: pickle broken: can't handle NaN or Infinity under win32

2005-06-23 Thread Ivan Van Laningham
Hi All--

Tim Peters wrote:
> Fortran is so
> eager to allow optimizations that failure due to numeric differences
> in conformance tests rarely withstood challenge.

+1 QOTW

Metta,
Ivan
--
Ivan Van Laningham
God N Locomotive Works
http://www.andi-holmes.com/
http://www.foretec.com/python/workshops/1998-11/proceedings.html
Army Signal Corps:  Cu Chi, Class of '70
Author:  Teach Yourself Python in 24 Hours
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: how to use more than 1 __init__ constructor in a class ?

2005-06-23 Thread jean-marc


Singletoned wrote:
> Rocco Moretti wrote:
> > Steven D'Aprano wrote:
> 
> > > That's the joys of a mostly self-taught programming knowledge: you miss
> > > out on all the buzzwords.
> >
> > Being mostly self taught myself, I have a tendancy to use infrequently
> > encountered terms in related but technically inappropriate contexts,
> > confusing the better informed people I deal with. ;-)
>
> Indeed.  I find I use even more buzzwords because I can just make up as
> many as I want.
This thread 'branch' (humm, is this an appropriate term for the last
few quotes, going to Steven's?) is soothing in reminding us we are not
alone. That there is a sort of distributed 'Alma Mater' of the
'Teach-It-Yourself School of Computing', producing a virtual FOAF group
(Is FOAF, Friend Of A Friend or Flock Of A Feather?)

jm

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


Re: Using PAMIE to upload and download files...is it possible?

2005-06-23 Thread calfdog
If you go into the PAMIE users group
and go to the files Section you will see
modalPopupTest.py this will handles Uploads, pop-ups, alerts using
PAMIE

PAMIE will include this feature in the next release

http://groups.yahoo.com/group/Pamie_UsersGroup/files/

RLM

scrimp wrote:
> Well, thanx to Erin I got everything I needed to do to work.
>
> I basically used 2 classes and wrote a driver using PAMIE
> 1 for the two File Download windows and 1 for the Save As window
>
> Here are the classes I used. I took out the comments, but its really
> not too hard to understand
> class FileDownloadDialog (threading.Thread):
>def __init__(self):
>   threading.Thread.__init__(self)
>   self.windowName = "File Download"
>   self.hwnd = None
>
>def fetchWindows (self,attempts=20):
>   tries = 0
>   while tries  tries = tries + 1
>  try:
> self.hwnd = winGuiAuto.findTopWindows(self.windowName)
> return
>  except:
> print 'Checking for window named "'+ self.windowName + '"',
> print 'Attempt #',tries
> time.sleep(1)
>
>def run (self):
>   self.fetchWindows()
>   oButton = []
>   for hw in self.hwnd:
>   tButton = winGuiAuto.findControls(hw,"&Save","Button")
>   if len(tButton) <> 0:
>   wHwnd = hw
>   self.hwnd = wHwnd
>   oButtons = winGuiAuto.findControls(self.hwnd,"&Save","Button")
>
>   time.sleep(0.5)
>   for oButton in oButtons:
>  winGuiAuto.clickButton(oButton)
>
> Heres the 2nd class I used
> class SaveAsZipDialog (threading.Thread):
> def __init__(self, docPath):
> threading.Thread.__init__(self)
> self.windowName = "Save As"
> self.hwnd = None
> self.document = docPath
>
> def fetchWindow (self,attempts=20):
> tries = 0
> while tries < attempts:
> tries = tries + 1
> try:
> self.hwnd = winGuiAuto.findTopWindow(self.windowName)
> return
> except:
> print 'Checking for window named "'+ self.windowName +
> '"',
> print 'Attempt ',tries
> time.sleep(1)
> def run (self):
> self.fetchWindow()
> fText = winGuiAuto.findControl(self.hwnd, None, "Edit")
> winGuiAuto.setEditText(fText,self.document)
> oButtons = winGuiAuto.findControls(self.hwnd,"Save")
> time.sleep(0.5)
> for oButton in oButtons:
>winGuiAuto.clickButton(oButton)
>
> I used PAMIE to get me through the web stuff and when it clicked on the
> link to download the zip file I wanted these two classes would kick in
> and take over from there. If anyone needs help feel free to email me or
> post up on here. Thanks again Erin!
> 
> --Barry

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


Urgent problem: Embedding Python questions....

2005-06-23 Thread adsheehan
Hi,


I am embedding Python into a multi-threaded C++ application runnig on
Solaris and need urgent clarification on the embedding architecture and

its correct usage (as I am experience weird behaviors).


Can anyone clarify:


- if Python correctly supports multiple sub-interpreters
(Py_NewInterpreter) ?


- if Python correctly supports multiple thread states per
sub-interpreter (PyThreadState_New) ?


and the "real" question:


- what is the rationale for choosing one of:


[a] one sub-interpreter with many thread states
[b] many sub-interpreters with one thread state each
[c] many sub-interpreters with many threas states each


Thanks for helping 
Alan

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


Re: User interfaces in console (dialog like)

2005-06-23 Thread Riccardo Galli
On Thu, 23 Jun 2005 05:45:07 -0700, Negroup wrote:

> Hi all.
> 
> I need to provide to my users a graphical interface to be used from os'
> command line.
> Initially I thought something equivalent to Unix dialog, and googling
> around I have found Python Dialog
> (http://pythondialog.sourceforge.net/). This would be the perfect solution
> for me if it could be cross platform. However, it doesn't work on Windows,
> just on Linux/Unix.
> 
> Do you guys know an alternative that fits my needings without moving from
> Python?
> 
> Thanks,
> -ng

It doesn't depend on the language. There aren't truely portable graphic
interface libraries, which show more than a coloured rectangle.
For *nix, there is also curses-extra, which offers various widgets
(textview,combobox,radio and checkbuttons and so on).
http://www.sideralis.net/index.php?action=4&pjid=20

Bye,
Riccardo

-- 
Riccardo Galli
Sideralis Programs
http://www.sideralis.net
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Loop until condition is true

2005-06-23 Thread Michael Hoffman
Mike Meyer wrote:

> Making None a constant broke existing code (and I just saw old code
> that assigned to None). Are True and False that much more common as
> variable names than None?

Yes. In fact, I count at least 4 different modules in the Python 2.4 
standard library that assign to True or False, mainly as a 
compatibility measure for the days before they were built-ins. If you 
try assigning None, CPython will refuse to compile the module, even if 
the code where None is assigned is unreachable.

If there was ever a good reason to assign to None, I don't know it.
-- 
Michael Hoffman
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Loop until condition is true

2005-06-23 Thread Michael Hoffman
Antoon Pardon wrote:
> Op 2005-06-22, Michael Hoffman schreef <[EMAIL PROTECTED]>:
> 
>>Remi Villatel wrote:
>>
>>>Fredrik Lundh wrote:
>>>
checking if a logical expression is true by comparing it to True is bad
style, and comparing values using "is" is also bad style.
>>>
>>>I wrote it this way because, first, it's perfectly valid Python code and,
>>>second and most important, it's also a valid english sentence.
>>
>>As others have pointed out, it's not perfectly valid code. In fact it is 
>>frequently incorrect.
> 
> 
> That the same code would be incorrect in other circumstances doesn't
> make it invalid as it was used in a specific situation.
> 
> I have written code my self with an "if var is True" statement and
> that is exactly what I wanted. Replacing it with "if var" would
> have broken the the program.

That point was not lost on me (which is why I said it was frequently 
incorrect). I think it was lost on the OP though.
-- 
Michael Hoffman
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Reraise exception with modified stack

2005-06-23 Thread Scott David Daniels
Nicolas Fleury wrote:
> Hi,
> I've made a small utility to re-raise an exception with the same stack 
> as before with additional information in it.  Since I want to keep the 
> same exception type and that some types have very specific constructors 
> (which take, for example, more than one parameter), the only safe way I 
> have found to made it is by hacking the str representation:
> 
> 
> import sys
> 
> class ExceptionStr:
> def __init__(self, content):
> self.content = content
> self.infos = []
> def addinfo(self, info):
> self.infos.insert(0, info)
> def __call__(self):
> return '\n' + '\n'.join(self.infos + [self.content])
> 
> def reraise(exception, additionalInfo):
> strFunc = getattr(exception, "__str__", None)
> if not isinstance(strFunc, ExceptionStr):
> strFunc = ExceptionStr(str(exception))
> exception.__str__ = strFunc
> strFunc.addinfo(additionalInfo)
> raise exception, None, sys.exc_info()[-1]
> 
How about dropping reraise and changing:
   reraise(...)
to:
   addinfo(...)
   raise

Where addinfo looks like:
 def addinfo(exception, additionalInfo):
 strFunc = getattr(exception, "__str__", None)
 if not isinstance(strFunc, ExceptionStr):
 strFunc = ExceptionStr(str(exception))
 exception.__str__ = strFunc
 strFunc.addinfo(additionalInfo)


So you finale would be:
if __name__ == '__main__':
def foo():
raise AttributeError('Test')
def bar():
foo()
try:
try:
try:
bar()
except Exception, exception:
addinfo(exception, "While doing x:")
raise
except Exception, exception:
addinfo(exception, "While doing y:")
raise
except Exception, exception:
addinfo(exception, "While doing z:")
raise

--Scott David Daniels
[EMAIL PROTECTED]
-- 
http://mail.python.org/mailman/listinfo/python-list


pass an event up to parent widget

2005-06-23 Thread William Gill
I have a Tkinter (frame) widget that contains several other frame 
widgets, each containing entry widgets.  In the parent frame I have a 
'save' button that is initially disabled.  As it is now, each widget has 
a hasChanged property that I can poll to see if updates to the source 
data need to be made.  hasChanged is set to True by an event routine in 
each frame widget, and this works fine for my exit routine which knows 
to poll each widget for hasChanged.  What I don't know how to do is send 
an event up the chain to the top so it can change the 'save' button to 
NORMAL (telling the user 'The data has been changed and can be saved if 
wanted') .  I don’t think bind_class() to all entry widgets is the way 
to go.  I could create an after() alarm callback to poll hasChanged, but 
again this seems to awkward.  I have looked at widget.event_add() but, 
don't know if this is viable. I am thinking a virtual event without any 
SEQUENCE, and then triggering it programmatically (from within the 
sub-widget event handlers).  Is that doable? Isn't there a better way?


Any suggestions?


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


Re: newbie - modules for jython (under grinder 3) ?

2005-06-23 Thread bugbear
Diez B. Roggisch wrote:
> bugbear wrote:
> 
>> I'm just trying to use Grinder 3 to beat
>> up my http-app.
>>
>> Grinder 3 comes with its own jython.jar.
>>
>> Some of the sample scripts:
>> http://grinder.sourceforge.net/g3/script-gallery.html
>> use import statements that don't work for me.
>>
>> Reading around, these are reference to modules.
>>
>> Do I need a "proper" jython instead of the one
>> that grinder ships with?
> 
> 
> I guess so - at least there are jython-modules written as *py-files in 
> my jython installation, including the threading.py module. Now - I don't 
> exactly remember how to specify where to find those, but AFAIK there is 
> a system property that you have to set to that path.
> 
> So - go, fetch jython from jython.org, install it and try to proceed.
> 

OK - of course this means I'll have to tell Grinder to
use "my" Jython, not "its" Jython.

Hopefully that's well documented :-)

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


Re: suggestions invited

2005-06-23 Thread gry
Aditi wrote:
> hi all...i m a software engg. student completed my 2nd yr...i have been
> asked to make a project during these summer vacations...and hereby i
> would like to invite some ideas bout the design and implementation of
> an APPLICATION MONITORING SYSTEMi have to start from scrach so
> please tell me how to go bout it rite from the beggining this is the
> first time i m making a project of this complexity...
> i have to make a system used by the IT department of a company which
> contains 31 applications and their details which are being used in a
> company ...the details are...
> Application   sub application catagoryplatform
> languageversion IT
> owner functional ownerremarks source code documentation   
> last updated
> dates
> i want to design a system such that it lets the it employee enter the
> name of the application and gives him all the details about it...please
> suggest an appropriate design and the language which you think would be
> best to use...as i have enouf time with me and i can learn a new
> language as well...i currently know c and c++...your advise is welcomed
> Aditi

I suggest you first learn a bit of python: go to www.python.org and
download/install the current release; go through the online tutorial:
http://docs.python.org/tut/tut.html .

Then you might look at xml as a means for storing the data.  Xml is
structured, readable without special software(very helpful for
debugging), and easy to use for simple data.  Try the xml module from
http://pyxml.sourceforge.net/topics/download.html
[look at the demos for simple usage]   Don't be intimidated by complex
formal definitions of XML, what you need is not hard to use.

-- George

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


Re: PEP ? os.listdir enhancement

2005-06-23 Thread Riccardo Galli
On Thu, 23 Jun 2005 09:21:55 -0600, Ivan Van Laningham wrote:

> Mmmm, how about:
> 
> # mylistdir.py
> import os, os.path
> import sys
> 
> def mylistdir(dir, join=False):
> for file in os.listdir(dir):
>   if join:
> yield join(dir, file)
>   else:
>   yield file
> 
> print list(mylistdir(sys.argv[1]))
> 
> or
> 
> print list(mylistdir(sys.argv[1],os.path.join))
> 
> That way I could def my own join and call it as
> 
> print list(mylistdir(sys.argv[1],myjoin))

I think that the implementation of listdir is done in C, so the
functionality would be added in C too.
by the way, I think 'join' (cute keyword) should be a boolean and not a
callable: the obvious way is that we join path using os.path.join, and not
some sophisticated function. With a boolean keyword code is smaller and if
we want to use our special join function we can do it simply.

e.g
def func(dir,join=False):
  return (join and join(dir,x) or x for x in os.listdir(dir))

os.listdir is actually supposed not to be a generator, like you suggested.
Are there known future changes ?

Bye,
Riccardo

-- 
Riccardo Galli
Sideralis Programs
http://www.sideralis.net
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Avoiding deadlocks in concurrent programming

2005-06-23 Thread Donn Cave
In article <[EMAIL PROTECTED]>,
 Konstantin Veretennicov <[EMAIL PROTECTED]> wrote:

> On 22 Jun 2005 17:50:49 -0700, Paul Rubin
> <"http://phr.cx"@nospam.invalid> wrote:
> 
> > Even on a multiprocessor
> > system, CPython (because of the GIL) doesn't allow true parallel
> > threads, ... .
> 
> Please excuse my ignorance, do you mean that python threads are always
> scheduled to run on the same single CPU? Or just that python threads
> are often blocked waiting for GIL?

Any thread may execute "inside" the interpreter, but not
concurrently with another.

I don't see the original point, though.  If you have a C application
with no GIL, the queueing model is just as useful -- more, because
a GIL avoids the same kind of concurrency problems in your application
that it intends to avoid in the interpreter.

Rigorous application of the model can be a little awkward, though,
if you're trying to adapt it to a basically procedural application.
The original Stackless Python implementation had some interesting
options along those lines.

   Donn Cave, [EMAIL PROTECTED]
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: os.system(cmd) isn't working

2005-06-23 Thread drobinow
 If firefox is not your default browser,
os.system(r'"cd c:\Program Files\Mozilla Firefox & firefox "' +
'"www.blendertechnologies.com"')

works for me.

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


Re: User interfaces in console (dialog like)

2005-06-23 Thread Jeremy Sanders
Negroup wrote:

> Do you guys know an alternative that fits my needings without moving
> from Python?

Turbo Vision in dos used to be really good. There's a python binding to the
free version here:

http://tvision.sourceforge.net/

(I haven't tried it)

-- 
Jeremy Sanders
http://www.jeremysanders.net/
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: don't understand MRO

2005-06-23 Thread Terry Reedy

"Uwe Mayer" <[EMAIL PROTECTED]> wrote in message 
news:[EMAIL PROTECTED]
> I have a subclassed PyQt class:
>
> class Node(object):
>def move(self, x,y): pass
>
> class CRhomb(QCanvasPolygon, Node): pass
>
> $ python
> v2.4.1
 CRhomb.mro()
> [, ,  'qtcanvas.QCanvasPolygonalItem'>, ,  'qt.Qt'>, , , ]

For those who don't know, 'mro' stands for 'method resolution order'.  The 
method returns a list of classes (all except the first are base or super 
classes of the first) in the order in which their dictionaries are searched 
for method (or other attribute) names.

>
 a = CRhomb()
 a.move(1,2)
>
> This executes also Node.move(a, 1,2)
> Why?

In the absence of other information, I would presume that none of the other 
classes have a move() method.

> Because even QCanvasItem.move delegates the call to the derived object? 
> But
> qt.Qt does not have a move() method... how does it get passed on to Node?

Are you sure that QCanvasItem has a move method?  What results from
>>> print qtcanvas.QCanvasItem.move # ?
If so, I would need to see its code to try to answer.

Terry J. Reedy



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


Re: Database recommendations for Windows app

2005-06-23 Thread Peter Hansen
Dan wrote:
> So in SQLLite, what happens of you try to store XYZ in an integer field?

Without your having enabled any of the "affinity" options mentioned by 
Dave Cook, SQLite will happily store 'XYZ' in that column, and return it 
to you when you query that row.  The types are either ignored, or 
advisory, or meaningful in various ways, depending on the settings you pick.

Note that this is considered something as a desirable feature in the 
SQLite community, in a similar fashion (it appears to me) to how dynamic 
typing is considered in the Python community, so don't consider it 
outright to be a Bad Thing.  I'd say more on the issue, if I knew 
anything that I hadn't just read in the documentation. ;-)

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


Re: Reraise exception with modified stack

2005-06-23 Thread Nicolas Fleury
Scott David Daniels wrote:
> How about dropping reraise and changing:
>   reraise(...)
> to:
>   addinfo(...)
>   raise

It doesn't work, or at least it doesn't do what I want.  I want to keep 
the same exception stack to be able to identify the original error.  I 
would like to avoid also writing in the caller something like 
sys.exc_info()[-1].

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


connecting to an exsisting COM server

2005-06-23 Thread jelle
Hi,

I'm using
win32com.client.GetObject(Class='Rhino3.Application')
to connect to an existing COM server. However when doing so:

Traceback (most recent call last):
  File "", line 1, in ?
  File "C:\Python24\lib\site-packages\win32com\client\__init__.py",
line 80, in GetActiveObject
dispatch = pythoncom.GetActiveObject(resultCLSID)
com_error: (-2147221021, 'Operation unavailable', None, None)

A com_error is raised. This problem has come up a few times on this
list, however that didn't help me to find a way of connecting to it.
What else could I try?

Cheers,

Jelle

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


Re: Loop until condition is true

2005-06-23 Thread Roy Smith
Michael Hoffman  <[EMAIL PROTECTED]> wrote:
> I count at least 4 different modules in the Python 2.4 standard
> library that assign to True or False, mainly as a compatibility
> measure for the days before they were built-ins.

Hopefully, none of them as creative as
http://thedailywtf.com/forums/36067/ShowPost.aspx
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: newbie - modules for jython (under grinder 3) ?

2005-06-23 Thread Diez B. Roggisch
  OK - of course this means I'll have to tell Grinder to
> use "my" Jython, not "its" Jython.
> 
> Hopefully that's well documented :-)

If they use 2.1 - which you should hope :) - teaching it shouldn't be 
much more as issuing

-Dpython.home=

as argument to the VM.

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


Re: Allowing only one instance of a script?

2005-06-23 Thread Cameron Laird
In article <[EMAIL PROTECTED]>,
Grant Edwards  <[EMAIL PROTECTED]> wrote:
.
.
.
>You can also use a network port instead of a file.  Binding a
>socket to a port is an exclusive and atomic operation.  An
>advantage to the network port scheme is that the "lock"
>automatically goes away if the program dies.  A disadvantiage is
>that it can't contain information (date/time/PID) like a file
>can.
.
.
.
While you write elsewhere in this thread, Grant, that 
pid-in-a-file is the "usual" way, I much prefer this
technique of opening a simple TCP/IP server.  While I
recognize the disadvantage you describe, I choose to
regard it as an opportunity--since I have launched the
server anyway, I simply have it report to me (that is,
any connecting client) all the information I might want
want.
-- 
http://mail.python.org/mailman/listinfo/python-list


  1   2   >