[ANN] pylint 0.13 / astng 0.17

2007-03-01 Thread Sylvain Thénault
Hi there!

I'm very pleased to announce new releases of pylint (0.13) and its underlying
library astng (0.17). 

The PyLint release contains a bunch of bugs fixes, some new checks and command
line changes, and a new checker dedicated to Restricted Python checking. If this
doesn't sound familiar to you, visit the PyPy_ project web site for more
information.

The astng release contains a lot of inference fixes and enhancement, so even if
pylint should still works with the old version you're strongly encouraged to
upgrade.

.. _PyPy: http://codespeak.net/pypy/

What is pylint ?


Pylint is a python tool that checks if a module satisfy a coding
standard. Pylint can be seen as another pychecker since nearly all
tests you can do with pychecker can also be done with Pylint. But
Pylint offers some more features, like checking line-code's length,
checking if variable names are well-formed according to your coding
standard, or checking if declared interfaces are truly implemented,
and much more (see http://www.logilab.org/projects/pylint/ for the
complete check list). The big advantage with Pylint is that it is
highly configurable, customizable, and you can easily write a small
plugin to add a personal feature.

The usage it quite simple :

$ pylint mypackage.mymodule


This command will output all the errors and warnings related to the
tested code (here : mypackage.mymodule), will dump a little summary at
the end, and will give a mark to the tested code.

Pylint is free software distributed under the GNU Public Licence.


Home page
-
http://www.logilab.org/project/name/pylint
http://www.logilab.org/project/name/logilab-astng

Download

ftp://ftp.logilab.org/pub/pylint
ftp://ftp.logilab.org/pub/astng

Mailing list

mailto://[EMAIL PROTECTED]


Enjoy !
-- 
Sylvain Thénault   LOGILAB, Paris (France)
Formations Python, Zope, Plone, Debian:  http://www.logilab.fr/formations
Développement logiciel sur mesure:   http://www.logilab.fr/services
Python et calcul scientifique:   http://www.logilab.fr/science

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

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


wxTayLayout 00.00.12 i

2007-03-01 Thread [EMAIL PROTECTED]
wxTayLayout 00.00.12 is now available for download! This brings the
wxPython version of TayLayout very close to feature parity with the
IronPython version. Just compound controls to go (e.g. File browser,
colour picker).

http://code.google.com/p/taylayout/downloads/list

Thanks,
Davy

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

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


Pydev 1.2.8 Released

2007-03-01 Thread Fabio Zadrozny

Hi All,

Pydev and Pydev Extensions 1.2.8 have been released

Details on Pydev Extensions: http://www.fabioz.com/pydev
Details on Pydev: http://pydev.sf.net
Details on its development: http://pydev.blogspot.com

Release Highlights in Pydev Extensions:
-

* Code-analysis: when a compare statement is found out of a test scope,
that's reported as a warning
* Mark Occurrences: new option to choose whether strings and comments
should be highlighted
* Simple Completions: some keywords were removed from the default list (the
2-letter ones because they're barely worth it and those related to 'try', as
there's already an assistant that creates 'try' blocks)
* Rename refactoring / Mark Occurrences: matches in multi-line strings are
now correct


Release Highlights in Pydev:
--

* Refactoring: integration of the PEPTIC refactoring engine
* Package Explorer: many fixes (special thanks for Don Taylor for the bug
reports)
* Debugger: a number of small optimizations
* Code-completion: works in emacs mode
* Code-completion: added the possibility of auto-completing for all letter
chars and '_' (so, it starts completing once you start writing)
* Code-completion: code-completion for epydoc inside strings
* Code-completion: assigns after global statement considered added to the
global namespace
* Code-completion: now works when a class is declared in a nested scope
* Code-completion: if multiple assigns are found to some variable, the
completion will be a merge of them
* Code-completion: functions are analyzed for their return values for
code-completion purposes
* Code-completion: working on multi-line imports
* Code-completion: can discover instance variables not declared in the
class (in the scope where the class was instanced)
* Auto-edit: adds 'self', 'cls' or no parameter based on the @clasmethod,
@staticmethod declaration on previous line
* Auto-edit: doesn't add 'self' if a method is declared in a method inner
scope
* Fix: BRM Refactoring: wrong column was being passed to the BRM
refactoring engine
* Code-folding: added for comments and strings
* Fix: sometimes the 'create docstring' assistant was not recognizing
method definitons



What is PyDev?
---

PyDev is a plugin that enables users to use Eclipse for Python and Jython
development -- making Eclipse a first class Python IDE -- It comes with many
goodies such as code completion, syntax highlighting, syntax analysis,
refactor, debug and many others.


Cheers,

--
Fabio Zadrozny
--
Software Developer

ESSS - Engineering Simulation and Scientific Software
http://www.esss.com.br

Pydev Extensions
http://www.fabioz.com/pydev

Pydev - Python Development Enviroment for Eclipse
http://pydev.sf.net
http://pydev.blogspot.com
-- 
http://mail.python.org/mailman/listinfo/python-announce-list

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


quickly read a formated file?

2007-03-01 Thread lialie
Hi,
Is there a fine way to read a formated file like:
%HEADER
title = Untilted
username = User

%DATA
..
..
The formated file may be very popularly, but the module ConfigPaser
doesn't handle it. Is there a way to process it freely?



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

PyQt4: Clickable links in QLabel?

2007-03-01 Thread Tina I
Hi everyone,

A short and sweet question: Is it possible to put a clickable link in a 
QLabel that will open in the systems default browser?
I tried to put in some HTML but it did (of course?) simply display the 
code instead of a link. I also tried to set openExternalLinks 'true' but 
then pyuic4 bombed.
I see that QLabel does not have a html text format but I'm still hoping 
it's possible. I really need a link on my main window form.

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


Re: Question about raise and exceptions.

2007-03-01 Thread [EMAIL PROTECTED]
On 1 mar, 04:46, Daniel Klein [EMAIL PROTECTED] wrote:
 On Wed, 28 Feb 2007 22:03:13 +0100, Bruno Desthuilliers



 [EMAIL PROTECTED] wrote:
 Daniel Klein a écrit :
  The arguments for TransitionError must be a tuple,

 Err...

  eg:

  msg = Going to error state %d from state %d % (self.curr_state,
  newstate)
  raise TransitionError(self, curr_state, newstate, msg)

 Where did you see a tuple here ? You're code is *calling*
 TransitionError, passing it the needed arguments.

 Note that it's the correct syntax - but not the correct explanation !-)

 My bad :-(

 Thanks for setting me straight. I had (wrongly) thought that the stuff
 inside of () was a tuple.

For the record, it's the ',' that makes the tuple.  The () are  (in
this context) the call operator.


 t = 1, 2, 3
 t
(1, 2, 3)
 type(t)
type 'tuple'
 t2 = 1,
 t2
(1,)
 def toto():
 return it's me
...
 toto
function toto at 0xb7d18c34
 toto()
it's me




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


Re: Curious UnboundLocalError Behavior

2007-03-01 Thread [EMAIL PROTECTED]
On 28 fév, 18:15, Matthew Franz [EMAIL PROTECTED] wrote:
 I'm probably fundamentally misunderstanding the way the interpreter
 works with regard to scope, but is this the intended behavior...

(snip traceback)

 import os,sys

 SOMEGLOBAL=1

 def foo():
 dome=False
 if dome:
 SOMEGLOBAL = 0


This makes SOMEGLOBAL local !-)

Look for the 'global' statement. Or better, try to avoid rebinding
globals from within a function.

As as side note: by convention, ALL_UPPER names denote constants.

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


Fwd: gmpy moving to code.google.com

2007-03-01 Thread Daniel Nogradi
  Could you please tell me, on that 64-bit build, what happens with:

   importgmpy, sys, operator
   sys.maxint
  ???
  gmpy.mpz(sys.maxint)
  ???
   operator.index(gmpy.mpz(sys.maxint))
  ???
   sys.maxint+1
  ???
  gmpy.mpz(sys.maxint+1)
  ???
   operator.index(gmpy.mpz(sys.maxint)+1)
  ???

  i.e., what are the values correspondiing to the ??? occurrences when
  you actually do that...?

 Here it goes (python 2.5 - 64bit):

  importgmpy, sys, operator
  sys.maxint
 9223372036854775807
 gmpy.mpz(sys.maxint)
 mpz(-1)
  operator.index(gmpy.mpz(sys.maxint))
 -1
  sys.maxint+1

 9223372036854775808Lgmpy.mpz(sys.maxint+1)

 mpz(9223372036854775808L) operator.index(gmpy.mpz(sys.maxint)+1)

 0

 I don't pretent to fully understand what's going on,
 butgmpy.mpz(sys.maxint)==gmpy.mpz(-1) is more than suspicious :)


[directing Alex's message back to the list]


Yes, clearly there is some 32-vs-64 bit assumption around.  When I
create an mpz from a Python int (a PyObject* i which passes Python's
int typecheck) I do that by calling mpz_from_c_long(PyInt_AsLong(i))
-- depending on what long means in C, I guess that might be the root
of the problem.  There might be similar problems in creating mpq and
mpf from Python ints  2**31-1 on 64-bit platforms, I guess.

I could try flailing around in the dark to fix it, but, without access
to a 64-bit Python platform, I don't really see any chance of me
fixing this.

If somebody can give me ssh access to such a platform, I'll be glad to
work to give it a try; of course, if anybody who does have access to
such a platform wants to send me patches or join the gmpy project,
that would also be great; failing either of these options, I don't see
much that I could do beyond pointing out in the docs that gmpy does
not correctly support 64-bits builds of Python, checking for them in
the unittests, etc.


Thanks,

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


Re: class declaration shortcut

2007-03-01 Thread Marc 'BlackJack' Rintsch
In [EMAIL PROTECTED], Bjoern Schliessmann wrote:

 Bruno Desthuilliers wrote:
 
 class Toto(object):
  pass
 
 print Toto.__name__
 
 Okay, I revoke my statement and assert the opposite.
 
 But what's it (__name__) good for?

As objects don't know to which name they are bound, that's a good way to
give some information in stack traces or when doing introspection.

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


Re: Vector, matrix, normalize, rotate. What package?

2007-03-01 Thread greg
Mattias Brändström wrote:

 1. Create 3d vectors.
 2. Normalize those vectors.
 3. Create a 3x3 rotation matrix from a unit 3-d vector and an angle in
 radians.
 4. Perform matrix multiplication.
 
 Meybe someone knows a way to use numpy for 2 and 3?

Here's some code I wrote recently to do normalisation
of vectors using Numeric:

   from Numeric import add, sqrt

   def dots(u, v):
 Return array of dot products of arrays of vectors.
 return add.reduce(u * v, -1)

   def units(v):
 Array of unit vectors from array of vectors.
 ds = 1.0 / sqrt(dots(v, v))
 return ds * v

These work best if you give them multiple vectors to
work on at once, otherwise you don't get much advantage
from using Numeric.

I don't have anything to hand for rotation about a
vector, but if you can find a formula, you should be
able to use similar techniques to vectorize it
using Numeric.

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


Re: quickly read a formated file?

2007-03-01 Thread bearophileHUGS
lialie:
 The formated file may be very popularly, but the module ConfigPaser
 doesn't handle it. Is there a way to process it freely?

First try, assuming the input file can be read whole. The code isn't
much readable, it needs better variable names (name names?), comments,
etc.

data = 
%HEADER
title1 = Untilted1
username = User1

%DATA
title2 = Untilted2
username2 = User2


l1 = (p.strip().splitlines() for p in data.split(%) if p.strip())
result = {}
for part in l1:
pairs1 = (pair.split('=') for pair in part[1:])
pairs2 = ((k.strip(), v.strip().strip('')) for k,v in pairs1)
result[part[0]] = dict(pairs2)
print result


All done lazily for your better comfort :-)

Bye,
bearophile

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


Re: design question: no new attributes

2007-03-01 Thread greg
Alan Isaac wrote:

 class NothingNew:
 a = 0
 def __init__(self):
 self.b = 1
 self.initialized = True

There's a problem with that when you want to subclass:

   class NothingElseNew(NothingNew):

 def __init__(self):
   NothingNew.__init__(self)
   self.c = 42 # --- Not allowed!

You could get around this by temporarily de-initializing
it, i.e.

 def __init__(self):
   NothingNew.__init__(self)
   del self.__dict__['initialized']
   self.c = 42
   self.initialized = True

but that's not very elegant.

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


Re: How to check for remaining hard drive space in Windows?

2007-03-01 Thread Tim Golden
kevinliu23 wrote:
 Just tried your solution Tim, worked like a charm. :)
 
 It's great because I don't even have to worry about the computer name.
 A question regarding the rootPath parameter...how would I be passing
 it? Would I be passing it as...
 
tuple = win32api.GetDiskFreeSpace(r'C:')
 or just leave it blank and the function will automatically use the
 rootPath of where the .py file resides?
 
 Both have returned the correct result.

The simple answer is: I'm not sure. If you experiment and find
something which works, just use it!

Something which SickMonkey made me return to your question.
Are you trying to find the disk space available on a
different machine (possibly on several different machines)?
If so, then WMI is definitely your answer. You can
run -- from your machine -- one piece of code which
will attach to several different machines to give
you the answer. (as per Sick Monkey's later post).

If I've read too much into your question, well nothing's
ever wasted on the internet. Here's some sample code
which uses the wmi module from:

   http://timgolden.me.uk/python/wmi.html

code
machines = ['mycomp', 'othercomp']

for machine in machines:
   print Machine:, machine
   c = wmi.WMI (machine)
   # only consider local fixed disks
   for disk in c.Win32_LogicalDisk (DriveType=3):
 print disk.Name, disk.FreeSpace
   print

/code

Yes, you could even write:

   for disk in wmi.WMI (machine).Win32_LogicaDisk (DriveType=3):

but I'd find it a touch unwieldy. YMMV.

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


[ANN] pylint 0.13 / astng 0.17

2007-03-01 Thread Sylvain Thénault
Hi there!

I'm very pleased to announce new releases of pylint (0.13) and its underlying
library astng (0.17). 

The PyLint release contains a bunch of bugs fixes, some new checks and command
line changes, and a new checker dedicated to Restricted Python checking. If this
doesn't sound familiar to you, visit the PyPy_ project web site for more
information.

The astng release contains a lot of inference fixes and enhancement, so even if
pylint should still works with the old version you're strongly encouraged to
upgrade.

.. _PyPy: http://codespeak.net/pypy/

What is pylint ?


Pylint is a python tool that checks if a module satisfy a coding
standard. Pylint can be seen as another pychecker since nearly all
tests you can do with pychecker can also be done with Pylint. But
Pylint offers some more features, like checking line-code's length,
checking if variable names are well-formed according to your coding
standard, or checking if declared interfaces are truly implemented,
and much more (see http://www.logilab.org/projects/pylint/ for the
complete check list). The big advantage with Pylint is that it is
highly configurable, customizable, and you can easily write a small
plugin to add a personal feature.

The usage it quite simple :

$ pylint mypackage.mymodule


This command will output all the errors and warnings related to the
tested code (here : mypackage.mymodule), will dump a little summary at
the end, and will give a mark to the tested code.

Pylint is free software distributed under the GNU Public Licence.


Home page
-
http://www.logilab.org/project/name/pylint
http://www.logilab.org/project/name/logilab-astng

Download

ftp://ftp.logilab.org/pub/pylint
ftp://ftp.logilab.org/pub/astng

Mailing list

mailto://[EMAIL PROTECTED]


Enjoy !
-- 
Sylvain Thénault   LOGILAB, Paris (France)
Formations Python, Zope, Plone, Debian:  http://www.logilab.fr/formations
Développement logiciel sur mesure:   http://www.logilab.fr/services
Python et calcul scientifique:   http://www.logilab.fr/science

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


Re: design question: no new attributes

2007-03-01 Thread Michele Simionato
On Feb 26, 10:48 pm, Alan Isaac [EMAIL PROTECTED] wrote:
 I have a class whose instances should only receive attribute
 assignments for attributes that were created at inititialization.
 If slots are not appropriate, what is the Pythonic design for this?

 Thanks,
 Alan Isaac

There is a Cookbook recipe for that:
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/252158

 Michele Simionato

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


Re: class declaration shortcut

2007-03-01 Thread Michele Simionato
On Mar 1, 9:40 am, Marc 'BlackJack' Rintsch [EMAIL PROTECTED] wrote:
 In [EMAIL PROTECTED], Bjoern Schliessmann wrote:

  But what's it (__name__) good for?

 As objects don't know to which name they are bound, that's a good way to
 give some information in stack traces or when doing introspection.

Also, the name is used by pickle to find the class of pickled
instances.

 Michele Simionato

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


Re: Reading csv files using SQL

2007-03-01 Thread Pablo was Paolo
Paul McGuire ha scritto:
 Sqlite has an in-memory option, so that you can read in your csv, then
 load into actual tables.

Thanks, this could be the perfect solution.

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


splitting perl-style find/replace regexp using python

2007-03-01 Thread John Pye
Hi all

I have a file with a bunch of perl regular expressions like so:

/(^|[\s\(])\*([^ ].*?[^ ])\*([\s\)\.\,\:\;\!\?]|$)/$1'''$2'''$3/ #
bold
/(^|[\s\(])\_\_([^ ].*?[^ ])\_\_([\s\)\.\,\:\;\!\?]|$)/$1''b$2\/
b''$3/ # italic bold
/(^|[\s\(])\_([^ ].*?[^ ])\_([\s\)\.\,\:\;\!\?]|$)/$1''$2''$3/ #
italic

These are all find/replace expressions delimited as '/search/replace/
# comment' where 'search' is the regular expression we're searching
for and 'replace' is the replacement expression.

Is there an easy and general way that I can split these perl-style
find-and-replace expressions into something I can use with Python, eg
re.sub('search','replace',str) ?

I though generally it would be good enough to split on '/' but as you
see the \/b messes that up. I really don't want to learn perl
here :-)

Cheers
JP

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


Re: How to update DNS record

2007-03-01 Thread Bjoern Schliessmann
Andi Clemens wrote:

 I want to change the A-Record for some IPs, this shouldn't be too
 hard. I looked at dnspython and twisted, but I really don't have a
 clue how to do this.
 Has anyone done this before?

Read RFC 2136 (Dynamic updates in the DNS) and see if your server
can be configured to do this. If not, you'll have to change the
zone files manually and reload the DNS config.

Regards,


Björn

-- 
BOFH excuse #203:

Write-only-memory subsystem too slow for this machine. Contact your
local dealer.

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


Converting a c array to python list

2007-03-01 Thread zefciu
Hi!

I want to embed a function in my python application, that creates a
two-dimensional array of integers and passes it as a list (preferably a
list of lists, but that is not necessary, as the python function knows
the dimensions of this array).  As I read the reference, I see, that I
must first initialize a list object and then item-by-item put the values
to the list.  Is there any faster way to do it?  And is it worth to
implement?  The same problem is resolved in the current version by
calling a smaller c function (that counts just one element of the array)
many times.  Will it add much performance to the process?

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


Re: installing pysqlite

2007-03-01 Thread Nader
On Feb 28, 12:51 pm, Paul Boddie [EMAIL PROTECTED] wrote:
 On 28 Feb, 12:07, Nader Emami [EMAIL PROTECTED] wrote:



  I am back with another problem. I suppose that I can tell it!
  I have installed both, 'sqlite' and 'pysqlite' without any problem. But
  If I try to test whether the 'pysqlite' interface works, I get the next
  error message:

 [...]

  /usr/people/emami/lib/python2.4/site-packages/pysqlite2/_sqlite.so:
  undefined symbol: sqlite3_set_authorizer

  I don't understand it. Could you tell me how I can solve this last
  point? I hope so!

 It looks like Python (although it's really the dynamic linker) can't
 locate the SQLite libraries. If you have installed SQLite into a non-
 standard place, which I'm guessing is the case, then you will need to
 set your LD_LIBRARY_PATH environment variable to refer to the
 directory where the libraries were installed.

 So, if you installed SQLite into /usr/people/emami and you see files
 like libsqlite3.so in /usr/people/emami/lib, then you need to change
 your LD_LIBRARY_PATH as follows:

 export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/people/emami/lib

 (The actual directory should be the same as the one you specified for
 library_dirs in the setup.cfg file for pysqlite.)

 If you're not using bash as your shell, the syntax for the command may
 be different. Don't forget to add this command to your shell
 configuration file (eg. .bashrc) so that your system remembers this
 information.

 Paul

Hello

I have expanded the LD_LIBRARY_PATH to my home lib (export
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/people/emami/lib).
I have built and installed the 'pysqlite-2.3.3' with the next
'setup.cfg' :

[build_ext]
define=
include_dirs=/usr/people/emami/include
library_dirs=/usr/people/emami/lib
#libraries=/usr/people/emami/lib/libsqlite3.so  (this line as a
comment)

The resutl of this process was:

running install_lib
copying build/lib.linux-i686-2.4/pysqlite2/_sqlite.so - /usr/people/
emami/lib/python2.4/site-packages/pysqlite2
running install_data

This message had given after installing. I have controll the '/usr/
people/emami/lib/python2.4/site-packages/pysqlite2' whether the
'_sqlite.so' has copied there. Yes it has. Okay!
I go to python and I give the next command:
 from pysqlite import test

and Unfortunately I get the next error message:

Traceback (most recent call last):
  File stdin, line 1, in ?
  File /usr/people/emami/lib/python2.4/site-packages/pysqlite2/test/
__init__.py, line 25, in ?
from pysqlite2.test import dbapi, types, userfunctions, factory,
transactions,\
  File /usr/people/emami/lib/python2.4/site-packages/pysqlite2/test/
dbapi.py, line 26, in ?
import pysqlite2.dbapi2 as sqlite
  File /usr/people/emami/lib/python2.4/site-packages/pysqlite2/
dbapi2.py, line 27, in ?
from pysqlite2._sqlite import *
ImportError: /usr/people/emami/lib/python2.4/site-packages/pysqlite2/
_sqlite.so: undefined symbol: sqlite3_set_authorizer

Do you know what option I have to give to if I want to use the
'easy_install tool?
%easy_install pysqlite (with some optione with which it cab find the
installed 'libsqlite.so')

Nader

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


Re: Dialog with a process via subprocess.Popen blocks forever

2007-03-01 Thread bayer . justin
Hi,

Thanks for your answer. I had a look into the fcntl module and tried
to unlock the output-file, but

 fcntl.lockf(x.stdout, fcntl.LOCK_UN)
Traceback (most recent call last):
  File stdin, line 1, in module
IOError: [Errno 9] Bad file descriptor

I wonder why it does work with the sys.stdin It's really a pity, it's
the first time python does not work as expected. =/

Flushing the stdin did not help, too.

Regards,
-Justin

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


Re: Tuples vs Lists: Semantic difference

2007-03-01 Thread Bjoern Schliessmann
Ben Finney wrote:
 Bjoern Schliessmann [EMAIL PROTECTED]

 Explain.
 
 Well, since you ask so politely :-)

I admit, sometimes I'm a little short-spoken ;)
 
 I know tuples as immutable lists ...
 
 That's a common misconception.
 [...]

Thanks for pointers, there's more to it than I suspected.

Regards,


Björn

-- 
BOFH excuse #384:

it's an ID-10-T error

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


Re: class declaration shortcut

2007-03-01 Thread Bjoern Schliessmann
Michele Simionato wrote:
 On Mar 1, 9:40 am, Marc 'BlackJack' Rintsch [EMAIL PROTECTED]
 In [EMAIL PROTECTED], Bjoern Schliessmann

 But what's it (__name__) good for?

 As objects don't know to which name they are bound, that's a good
 way to give some information in stack traces or when doing
 introspection.
 
 Also, the name is used by pickle to find the class of pickled
 instances.

Mh. I suspect there's also more to it than I see now, but this
__name__ seems quite useless to me. What if I rebind the class'
name after definition? Or is it really just for some manual
introspection? If it is, it seems a bit of an overkill to me.

 class Spam(object):
... pass
... 
 Ham = Spam
 Spam = 0
 test = Ham()
 test.__class__
class '__main__.Spam'
 test.__class__.__name__
'Spam'
 Spam
0
 

Regards,


Björn

-- 
BOFH excuse #137:

User was distributing pornography on server; system seized by FBI.

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


Re: splitting perl-style find/replace regexp using python

2007-03-01 Thread James Stroud
John Pye wrote:
 Hi all
 
 I have a file with a bunch of perl regular expressions like so:
 
 /(^|[\s\(])\*([^ ].*?[^ ])\*([\s\)\.\,\:\;\!\?]|$)/$1'''$2'''$3/ #
 bold
 /(^|[\s\(])\_\_([^ ].*?[^ ])\_\_([\s\)\.\,\:\;\!\?]|$)/$1''b$2\/
 b''$3/ # italic bold
 /(^|[\s\(])\_([^ ].*?[^ ])\_([\s\)\.\,\:\;\!\?]|$)/$1''$2''$3/ #
 italic
 
 These are all find/replace expressions delimited as '/search/replace/
 # comment' where 'search' is the regular expression we're searching
 for and 'replace' is the replacement expression.
 
 Is there an easy and general way that I can split these perl-style
 find-and-replace expressions into something I can use with Python, eg
 re.sub('search','replace',str) ?
 
 I though generally it would be good enough to split on '/' but as you
 see the \/b messes that up. I really don't want to learn perl
 here :-)
 
 Cheers
 JP
 

This could be more general, in principal a perl regex could end with a 
\, e.g. \\/, but I'm guessing that won't happen here.

py for p in perlish:
...   print p
...
/(^|[\s\(])\*([^ ].*?[^ ])\*([\s\)\.\,\:\;\!\?]|$)/$1'''$2'''$3/
/(^|[\s\(])\_\_([^ ].*?[^ ])\_\_([\s\)\.\,\:\;\!\?]|$)/$1''b$2\/b''$3/
/(^|[\s\(])\_([^ ].*?[^ ])\_([\s\)\.\,\:\;\!\?]|$)/$1''$2''$3/
py import re
py splitter = re.compile(r'[^\\]/')
py for p in perlish:
...   print splitter.split(p)
...
['/(^|[\\s\\(])\\*([^ ].*?[^ ])\\*([\\s\\)\\.\\,\\:\\;\\!\\?]|$', 
$1'''$2'''$, '']
['/(^|[\\s\\(])\\_\\_([^ ].*?[^ ])\\_\\_([\\s\\)\\.\\,\\:\\;\\!\\?]|$', 
$1''b$2\\/b''$, '']
['/(^|[\\s\\(])\\_([^ ].*?[^ ])\\_([\\s\\)\\.\\,\\:\\;\\!\\?]|$', 
$1''$2''$, '']

(I'm hoping this doesn't wrap!)

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


Re: splitting perl-style find/replace regexp using python

2007-03-01 Thread Peter Otten
John Pye wrote:

 I have a file with a bunch of perl regular expressions like so:
 
 /(^|[\s\(])\*([^ ].*?[^ ])\*([\s\)\.\,\:\;\!\?]|$)/$1'''$2'''$3/ #
 bold
 /(^|[\s\(])\_\_([^ ].*?[^ ])\_\_([\s\)\.\,\:\;\!\?]|$)/$1''b$2\/
 b''$3/ # italic bold
 /(^|[\s\(])\_([^ ].*?[^ ])\_([\s\)\.\,\:\;\!\?]|$)/$1''$2''$3/ #
 italic
 
 These are all find/replace expressions delimited as '/search/replace/
 # comment' where 'search' is the regular expression we're searching
 for and 'replace' is the replacement expression.
 
 Is there an easy and general way that I can split these perl-style
 find-and-replace expressions into something I can use with Python, eg
 re.sub('search','replace',str) ?
 
 I though generally it would be good enough to split on '/' but as you
 see the \/b messes that up. I really don't want to learn perl
 here :-)

How about matching all escaped chars and '/', and then throwing away the
former:

def split(s):
breaks = re.compile(r(\\.)|(/)).finditer(s)
left, mid, right = [b.start() for b in breaks if b.group(2)]
return s[left+1:mid], s[mid+1:right]

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


Re: splitting perl-style find/replace regexp using python

2007-03-01 Thread James Stroud
James Stroud wrote:
 John Pye wrote:
 Hi all

 I have a file with a bunch of perl regular expressions like so:

 /(^|[\s\(])\*([^ ].*?[^ ])\*([\s\)\.\,\:\;\!\?]|$)/$1'''$2'''$3/ #
 bold
 /(^|[\s\(])\_\_([^ ].*?[^ ])\_\_([\s\)\.\,\:\;\!\?]|$)/$1''b$2\/
 b''$3/ # italic bold
 /(^|[\s\(])\_([^ ].*?[^ ])\_([\s\)\.\,\:\;\!\?]|$)/$1''$2''$3/ #
 italic

 These are all find/replace expressions delimited as '/search/replace/
 # comment' where 'search' is the regular expression we're searching
 for and 'replace' is the replacement expression.

 Is there an easy and general way that I can split these perl-style
 find-and-replace expressions into something I can use with Python, eg
 re.sub('search','replace',str) ?

 I though generally it would be good enough to split on '/' but as you
 see the \/b messes that up. I really don't want to learn perl
 here :-)

 Cheers
 JP

 
 This could be more general, in principal a perl regex could end with a 
 \, e.g. \\/, but I'm guessing that won't happen here.
 
 py for p in perlish:
 ...   print p
 ...
 /(^|[\s\(])\*([^ ].*?[^ ])\*([\s\)\.\,\:\;\!\?]|$)/$1'''$2'''$3/
 /(^|[\s\(])\_\_([^ ].*?[^ ])\_\_([\s\)\.\,\:\;\!\?]|$)/$1''b$2\/b''$3/
 /(^|[\s\(])\_([^ ].*?[^ ])\_([\s\)\.\,\:\;\!\?]|$)/$1''$2''$3/
 py import re
 py splitter = re.compile(r'[^\\]/')
 py for p in perlish:
 ...   print splitter.split(p)
 ...
 ['/(^|[\\s\\(])\\*([^ ].*?[^ ])\\*([\\s\\)\\.\\,\\:\\;\\!\\?]|$', 
 $1'''$2'''$, '']
 ['/(^|[\\s\\(])\\_\\_([^ ].*?[^ ])\\_\\_([\\s\\)\\.\\,\\:\\;\\!\\?]|$', 
 $1''b$2\\/b''$, '']
 ['/(^|[\\s\\(])\\_([^ ].*?[^ ])\\_([\\s\\)\\.\\,\\:\\;\\!\\?]|$', 
 $1''$2''$, '']
 
 (I'm hoping this doesn't wrap!)
 
 James

I realized that threw away the closing parentheses. This is the correct 
version:

py splitter = re.compile(r'(?!\\)/')
py for p in perlish:
...   print splitter.split(p)
...
['', '(^|[\\s\\(])\\*([^ ].*?[^ ])\\*([\\s\\)\\.\\,\\:\\;\\!\\?]|$)', 
$1'''$2'''$3, '']
['', '(^|[\\s\\(])\\_\\_([^ ].*?[^ 
])\\_\\_([\\s\\)\\.\\,\\:\\;\\!\\?]|$)', $1''b$2\\/b''$3, '']
['', '(^|[\\s\\(])\\_([^ ].*?[^ ])\\_([\\s\\)\\.\\,\\:\\;\\!\\?]|$)', 
$1''$2''$3, '']

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


Re: Python Source Code Beautifier

2007-03-01 Thread Gabriel Genellina
En Wed, 28 Feb 2007 19:09:09 -0300, [EMAIL PROTECTED]  
[EMAIL PROTECTED] escribió:

 On Feb 28, 11:24 am, Alan Franzoni
 [EMAIL PROTECTED] wrote:
 Il 27 Feb 2007 16:14:20 -0800, [EMAIL PROTECTED] ha scritto:

  Those mean different things:

  a=[1]
  b=a
  a += [2]
  a
  [1, 2]
  b
  [1, 2]
  a=[1]
  b=a
  a = a + [2]
  a
  [1, 2]
  b
  [1]

 This is a really nasty one! I just answered to Tim above here, and then  
 I
 saw your example... I had never realized that kind of list behaviour.
 That's probably because i never use + and += on lists (i prefer the more
 explicit append() or extend() and i do copy list explictly when I want  
 to)
 , BTW I think this behaviour is tricky!

 Seems obvious and desirable to me.  Bare = is the way you assign a
 name to an object; saying NAME = will rebind the name, breaking the
 connection between a and b.  Without it, they continue to refer to the
 same object; extending the list (via += or .extend) mutates the
 object, but doesn't change which objects a and b are referencing.

 It would be very counterintuitive to me if = didn't change the
 name's binding, or if other operators did.

Note that a += b first tries to use __iadd__ if it is available, if not,  
behaves like a = a + b.
And even if __iadd__ exists, there is no restriction on it to mutate the  
object in place; it may return a new instance if desired.
So, a += b may involve a name rebinding anyway. Try the example above  
using immutable objects like tuples or strings.

-- 
Gabriel Genellina

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


Re: splitting perl-style find/replace regexp using python

2007-03-01 Thread Peter Otten
James Stroud wrote:

 James Stroud wrote:
 John Pye wrote:
 Hi all

 I have a file with a bunch of perl regular expressions like so:

 /(^|[\s\(])\*([^ ].*?[^ ])\*([\s\)\.\,\:\;\!\?]|$)/$1'''$2'''$3/ #
 bold
 /(^|[\s\(])\_\_([^ ].*?[^ ])\_\_([\s\)\.\,\:\;\!\?]|$)/$1''b$2\/
 b''$3/ # italic bold
 /(^|[\s\(])\_([^ ].*?[^ ])\_([\s\)\.\,\:\;\!\?]|$)/$1''$2''$3/ #
 italic

 These are all find/replace expressions delimited as '/search/replace/
 # comment' where 'search' is the regular expression we're searching
 for and 'replace' is the replacement expression.

 Is there an easy and general way that I can split these perl-style
 find-and-replace expressions into something I can use with Python, eg
 re.sub('search','replace',str) ?

 I though generally it would be good enough to split on '/' but as you
 see the \/b messes that up. I really don't want to learn perl
 here :-)

 Cheers
 JP

 
 This could be more general, in principal a perl regex could end with a
 \, e.g. \\/, but I'm guessing that won't happen here.
 
 py for p in perlish:
 ...   print p
 ...
 /(^|[\s\(])\*([^ ].*?[^ ])\*([\s\)\.\,\:\;\!\?]|$)/$1'''$2'''$3/
 /(^|[\s\(])\_\_([^ ].*?[^
 ])\_\_([\s\)\.\,\:\;\!\?]|$)/$1''b$2\/b''$3/ /(^|[\s\(])\_([^ ].*?[^
 ])\_([\s\)\.\,\:\;\!\?]|$)/$1''$2''$3/ py import re
 py splitter = re.compile(r'[^\\]/')
 py for p in perlish:
 ...   print splitter.split(p)
 ...
 ['/(^|[\\s\\(])\\*([^ ].*?[^ ])\\*([\\s\\)\\.\\,\\:\\;\\!\\?]|$',
 $1'''$2'''$, '']
 ['/(^|[\\s\\(])\\_\\_([^ ].*?[^ ])\\_\\_([\\s\\)\\.\\,\\:\\;\\!\\?]|$',
 $1''b$2\\/b''$, '']
 ['/(^|[\\s\\(])\\_([^ ].*?[^ ])\\_([\\s\\)\\.\\,\\:\\;\\!\\?]|$',
 $1''$2''$, '']
 
 (I'm hoping this doesn't wrap!)
 
 James
 
 I realized that threw away the closing parentheses. This is the correct
 version:
 
 py splitter = re.compile(r'(?!\\)/')
 py for p in perlish:
 ...   print splitter.split(p)
 ...
 ['', '(^|[\\s\\(])\\*([^ ].*?[^ ])\\*([\\s\\)\\.\\,\\:\\;\\!\\?]|$)',
 $1'''$2'''$3, '']
 ['', '(^|[\\s\\(])\\_\\_([^ ].*?[^
 ])\\_\\_([\\s\\)\\.\\,\\:\\;\\!\\?]|$)', $1''b$2\\/b''$3, '']
 ['', '(^|[\\s\\(])\\_([^ ].*?[^ ])\\_([\\s\\)\\.\\,\\:\\;\\!\\?]|$)',
 $1''$2''$3, '']

There is another problem with escaped backslashes:

 re.compile(r'(?!\\)/').split(r/abc\\/def/)
['', 'abc/def', '']

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


Re: finding out the precision of floats

2007-03-01 Thread Bart Ogryczak
On Feb 28, 10:29 pm, John Machin [EMAIL PROTECTED] wrote:
 On Mar 1, 4:19 am, BartOgryczak [EMAIL PROTECTED] wrote:



  On Feb 28, 3:53 pm, John Machin [EMAIL PROTECTED] wrote:

   On Feb 28, 10:38 pm, BartOgryczak [EMAIL PROTECTED] wrote:

[1] eg. consider calculating interests rate, which often is defined as
math.pow(anualRate,days/365.0).

   More importantly, the formula you give is dead wrong. The correct
   formula for converting an annual rate of interest to the rate of
   interest to be used for n days (on the basis of 365 days per year) is:

   (1 + annual_rate) ** (n / 365.0) - 1.0
   or
   math.pow(1 + annual_rate, n / 365.0) - 1.0
   if you prefer.

  YPB? Anyone with half a brain knows, that you can either express rate
  as 0.07 and do all those ridiculous conversions above, or express it
  as 1.07 and apply it directly.

 A conversion involving an exponentiation is necessary. All those?? I
 see only two.

 Please re-read your original post, and note that there are *TWO* plus-
 or-minus 1.0 differences between your formula and mine. For an annual
 rate of 10%, yours would calculate the rate for 6 months (expressed as
 182.5 days) as:
 math.pow(0.10, 0.5) = 0.316... i.e. 31.6%

You're assuming that I'd store annual rate as 0.1, while actually it'd
stored as 1.1.
Which is logical and applicable directly.






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


Re: splitting perl-style find/replace regexp using python

2007-03-01 Thread James Stroud
Peter Otten wrote:
 James Stroud wrote:
 
 James Stroud wrote:
 John Pye wrote:
 Hi all

 I have a file with a bunch of perl regular expressions like so:

 /(^|[\s\(])\*([^ ].*?[^ ])\*([\s\)\.\,\:\;\!\?]|$)/$1'''$2'''$3/ #
 bold
 /(^|[\s\(])\_\_([^ ].*?[^ ])\_\_([\s\)\.\,\:\;\!\?]|$)/$1''b$2\/
 b''$3/ # italic bold
 /(^|[\s\(])\_([^ ].*?[^ ])\_([\s\)\.\,\:\;\!\?]|$)/$1''$2''$3/ #
 italic

 These are all find/replace expressions delimited as '/search/replace/
 # comment' where 'search' is the regular expression we're searching
 for and 'replace' is the replacement expression.

 Is there an easy and general way that I can split these perl-style
 find-and-replace expressions into something I can use with Python, eg
 re.sub('search','replace',str) ?

 I though generally it would be good enough to split on '/' but as you
 see the \/b messes that up. I really don't want to learn perl
 here :-)

 Cheers
 JP

 This could be more general, in principal a perl regex could end with a
 \, e.g. \\/, but I'm guessing that won't happen here.

 py for p in perlish:
 ...   print p
 ...
 /(^|[\s\(])\*([^ ].*?[^ ])\*([\s\)\.\,\:\;\!\?]|$)/$1'''$2'''$3/
 /(^|[\s\(])\_\_([^ ].*?[^
 ])\_\_([\s\)\.\,\:\;\!\?]|$)/$1''b$2\/b''$3/ /(^|[\s\(])\_([^ ].*?[^
 ])\_([\s\)\.\,\:\;\!\?]|$)/$1''$2''$3/ py import re
 py splitter = re.compile(r'[^\\]/')
 py for p in perlish:
 ...   print splitter.split(p)
 ...
 ['/(^|[\\s\\(])\\*([^ ].*?[^ ])\\*([\\s\\)\\.\\,\\:\\;\\!\\?]|$',
 $1'''$2'''$, '']
 ['/(^|[\\s\\(])\\_\\_([^ ].*?[^ ])\\_\\_([\\s\\)\\.\\,\\:\\;\\!\\?]|$',
 $1''b$2\\/b''$, '']
 ['/(^|[\\s\\(])\\_([^ ].*?[^ ])\\_([\\s\\)\\.\\,\\:\\;\\!\\?]|$',
 $1''$2''$, '']

 (I'm hoping this doesn't wrap!)

 James
 I realized that threw away the closing parentheses. This is the correct
 version:

 py splitter = re.compile(r'(?!\\)/')
 py for p in perlish:
 ...   print splitter.split(p)
 ...
 ['', '(^|[\\s\\(])\\*([^ ].*?[^ ])\\*([\\s\\)\\.\\,\\:\\;\\!\\?]|$)',
 $1'''$2'''$3, '']
 ['', '(^|[\\s\\(])\\_\\_([^ ].*?[^
 ])\\_\\_([\\s\\)\\.\\,\\:\\;\\!\\?]|$)', $1''b$2\\/b''$3, '']
 ['', '(^|[\\s\\(])\\_([^ ].*?[^ ])\\_([\\s\\)\\.\\,\\:\\;\\!\\?]|$)',
 $1''$2''$3, '']
 
 There is another problem with escaped backslashes:
 
 re.compile(r'(?!\\)/').split(r/abc\\/def/)
 ['', 'abc/def', '']
 
 Peter

Yes, this would be a case of the expression (left side) ending with a 
\ as I mentioned above.

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


Re: Eric on XP for Newbie

2007-03-01 Thread jeffwatkins2000
Thanks guys

Found this on another blog and it seems to work - you need to run the
SPE.pyo file ...

 Stani said...

In order to run SPE you need to install python from www.python.org
and wxpython 2.6 from wxpython.org.



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


Re: installing pysqlite

2007-03-01 Thread Paul Boddie
On 1 Mar, 10:34, Nader [EMAIL PROTECTED] wrote:

 I have expanded the LD_LIBRARY_PATH to my home lib (export
 LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/people/emami/lib).
 I have built and installed the 'pysqlite-2.3.3' with the next
 'setup.cfg' :

 [build_ext]
 define=
 include_dirs=/usr/people/emami/include
 library_dirs=/usr/people/emami/lib
 #libraries=/usr/people/emami/lib/libsqlite3.so  (this line as a
 comment)

This looks alright. Be sure to verify that libsqlite3.so is in /usr/
people/emami/lib, although I suppose you've done this, looking at your
comment.

 The resutl of this process was:

 running install_lib
 copying build/lib.linux-i686-2.4/pysqlite2/_sqlite.so - /usr/people/
 emami/lib/python2.4/site-packages/pysqlite2
 running install_data

 This message had given after installing. I have controll the '/usr/
 people/emami/lib/python2.4/site-packages/pysqlite2' whether the
 '_sqlite.so' has copied there. Yes it has. Okay!

So pysqlite2 has installed properly at least.

 I go to python and I give the next command:

  from pysqlite import test

 and Unfortunately I get the next error message:

[...]

 ImportError: /usr/people/emami/lib/python2.4/site-packages/pysqlite2/
 _sqlite.so: undefined symbol: sqlite3_set_authorizer

I'm running out of ideas here, but you could try doing this:

ldd /usr/people/emami/lib/python2.4/site-packages/pysqlite2/_sqlite.so

This should show a list of references to libraries, but if one of them
is missing in some way then it means that it isn't found by the linker
and it's not on the LD_LIBRARY_PATH. Another thought is that
sqlite3_set_authorizer isn't found in the SQLite library - you can
test this by doing the following:

nm /usr/people/emami/lib/libsqlite3.so

I get something like this in response:

000110b0 T sqlite3_set_authorizer

If you don't get anything in response or if you see U instead of
T, then this might indicate an problem with the way SQLite has been
configured.

 Do you know what option I have to give to if I want to use the
 'easy_install tool?
 %easy_install pysqlite (with some optione with which it cab find the
 installed 'libsqlite.so')

I'm no easy_install expert, I'm afraid. You might want to talk to the
pysqlite people directly if what I've suggested doesn't help you
further:

http://www.initd.org/tracker/pysqlite/wiki/pysqlite

Paul

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


Re: class declaration shortcut

2007-03-01 Thread Marc 'BlackJack' Rintsch
In [EMAIL PROTECTED], Bjoern Schliessmann wrote:

 Michele Simionato wrote:
 On Mar 1, 9:40 am, Marc 'BlackJack' Rintsch [EMAIL PROTECTED]
 In [EMAIL PROTECTED], Bjoern Schliessmann
 
 But what's it (__name__) good for?

 As objects don't know to which name they are bound, that's a good
 way to give some information in stack traces or when doing
 introspection.
 
 Also, the name is used by pickle to find the class of pickled
 instances.
 
 Mh. I suspect there's also more to it than I see now, but this
 __name__ seems quite useless to me. What if I rebind the class'
 name after definition?

Then it's a way to still get the name of the definition via `__name__`. 
Together with the name of the module where the definition took place which
is also available as attribute on the objects it is very useful to find
out where to look for the source code.  Just see the default `repr()` of
class objects.

 Or is it really just for some manual introspection? If it is, it seems a
 bit of an overkill to me.

 class Spam(object):
 ... pass
 ...
 Ham = Spam
 Spam = 0
 test = Ham()
 test.__class__
 class '__main__.Spam'

What would you expect this to look like if there weren't a __name__
attribute?

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


Importing binary modules

2007-03-01 Thread andre . dos . anjos
How can I, in python (linux, python version = 2.4.2), dynamically set
the path and import a binary module that depends on libraries which
are not declared in LD_LIBRARY_PATH or any other automated linker path
when python starts?

This is a an example:

Suppose I have a new python module, called MyNewModule.py. It resides
in '/my/module/dir'. Internally, it loads libMyNewModule.so, which
implements most of the functionality for MyNewModule, so the user can
say:

import sys
sys.path.append('/my/module/dir')
import MyNewModule

And everything works fine.

The problem appears when libMyNewModule.so depends on another library,
say libfoo.so, which sits also in /my/module/dir. In that case, '/my/
module/dir', needs to be preset in the LD_LIBRARY_PATH *before* the
python interpreter is set.

In this case, the snippet of code above will not work as one would
expect. It will normally give an ImportError saying it cannot find
libfoo.so. That happens, apparently, because the dynamic linker cannot
rescan LD_LIBRARY_PATH after the python interpreter has started.

So is there any other way to circumvent this?

import sys
sys.path.append('/my/module/dir')
#black magic to get the linker to reload the LD_LIBRARY_PATH
import MyNewModule

So this succeeds?

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


Re: Tuples vs Lists: Semantic difference (was: Extract String From Enclosing Tuple)

2007-03-01 Thread bearophileHUGS
George Sakkis, I agree with the things you say.
Sometimes you may have a sequence of uniform data with unknown len (so
its index doesn't have semantic meaning). You may want to use it as
dict key, so you probably use a tuple meant as just an immutable list.
I don't know Ruby, but I think it allows such purposes with a freezing
function.

Bye,
bearophile

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


Re: splitting perl-style find/replace regexp using python

2007-03-01 Thread Peter Otten
James Stroud wrote:

 Yes, this would be a case of the expression (left side) ending with a
 \ as I mentioned above.

Sorry for not tracking the context.

Peter

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


Re: splitting perl-style find/replace regexp using python

2007-03-01 Thread Peter Otten
John Pye wrote:

 Is there an easy and general way that I can split these perl-style
 find-and-replace expressions into something I can use with Python, eg
 re.sub('search','replace',str) ?

Another candidate:

 re.compile(r(?:/((?:\\.|[^/])*))).findall(r/abc\\/def\/ghi//jkl)
['abc', 'def\\/ghi', '', 'jkl']

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


Re: class declaration shortcut

2007-03-01 Thread BJörn Lindqvist
On 28 Feb 2007 13:53:37 -0800, Luis M. González [EMAIL PROTECTED] wrote:
 Hmmm... not really.
 The code above is supposed to be a shorter way of writing this:

 class Person:
 def __init__(self, name, birthday, children):
 self.name = name
 self.birthday = birthday
 self.children = children

 So the purpose of this question is finding a way to emulate this with
 a single line and minimal typing.

I believe this is what you are looking for:
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/361668

olle = attrdict(name = Olle, birthday = date(, 12, 1), children = 329)
print olle.name, olle.birthday, olle.children

It is not identical to the Ruby recipe, but is IMHO better. Being able
to instantiate objects on the fly, without having to explicitly
declare the class, is a big advantage.

-- 
mvh Björn
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Is there a technic to avoid this bug

2007-03-01 Thread Fabio Zadrozny

On 2/27/07, hg [EMAIL PROTECTED] wrote:


Michele Simionato wrote:

 pychecker

Thanks all ... pydev extension does not however ... will have to install
pychecker also.



Just as a note: pydev extensions 1.2.8 supports that... (just released)

Cheers,

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

Re: newbie question(file-delete trailing comma)

2007-03-01 Thread kavitha thankaian
thanks,,,
   
  i tried another way and it works,,,
   
  f.writelines(','.join([('\%s\' % some[field]) for field in field_order]))

  thanks a lot,,,
   
  
Gabriel Genellina [EMAIL PROTECTED] wrote:
  En Wed, 28 Feb 2007 08:34:29 -0300, kavitha thankaian 
escribió:

 thanks,,
 now i have one more problem,,,
 the strings should be seperated in an order,,,
 some={1:'a', 2:7, 3:'c', 4:'d'}
 i need the output to be a,c,d,7
 before my code was:
 field_order = [1,3,4,2]
 for field in field_order:
 f.writelines('\%s\,' % someprt[field] )
 do you have an idea now how should it look like???

Proceed in small steps. First get the data you need to write, then, format 
them and build a single line, then write the new line onto the file.

some = {1:'a', 2:7, 3:'c', 4:'d'}
# i need the output to be a,c,d,7
field_order = [1,3,4,2]
row = []
for field in field_order:
row.append(some[field])
# row contains ['a', 'c', 'd', 7]
# convert to string
row = ['%s' % item for item in row]
### alternative: convert to string, with  around each value
##row = ['%s' % item for item in row]
# make a single line, using , as separator
line = ','.join(row)
# write to file
f.write('%s\n' % line)

-- 
Gabriel Genellina

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



-
 Here’s a new way to find what you're looking for - Yahoo! Answers -- 
http://mail.python.org/mailman/listinfo/python-list

Re: Importing binary modules

2007-03-01 Thread Thinker
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

[EMAIL PROTECTED] wrote:
cut ..

 The problem appears when libMyNewModule.so depends on another
 library, say libfoo.so, which sits also in /my/module/dir. In that
 case, '/my/ module/dir', needs to be preset in the LD_LIBRARY_PATH
 *before* the python interpreter is set.

 In this case, the snippet of code above will not work as one would
 expect. It will normally give an ImportError saying it cannot find
 libfoo.so. That happens, apparently, because the dynamic linker
 cannot rescan LD_LIBRARY_PATH after the python interpreter has
 started.
Since you create a new module, you should try to link your module with
- -rpath-link option.
You can specify a path searched by linker when finding shared object
required.



- --
Thinker Li - [EMAIL PROTECTED] [EMAIL PROTECTED]
http://heaven.branda.to/~thinker/GinGin_CGI.py
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.6 (FreeBSD)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFF5rcp1LDUVnWfY8gRAmLcAKCobvo06x84L0pj66amTBspTJ9nUwCg5sA+
MP7tLF/i8zqoZHl5Fxw2YsQ=
=BNQy
-END PGP SIGNATURE-

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

Re: class declaration shortcut

2007-03-01 Thread Arnaud Delobelle
On Feb 28, 7:26 pm, Luis M. González [EMAIL PROTECTED] wrote:
 I've come across a code snippet inwww.rubyclr.comwhere they show how
 easy it is to declare a class compared to equivalent code in c#.
 I wonder if there is any way to emulate this in Python.

 The code is as follows:

 Person = struct.new( :name, :birthday, :children)

 I tried something like this, but it's nothing close to what I'd like:

 def klass(table, *args):
 cls = new.classobj(table, (), {})
 for i in args:
 setattr(cls, i, i)
 return cls

 But this above is not what I want.
 I guess I should find a way to include the constructor code inside
 this function, but I don't know if this is possible.
 Also, I wonder if there is a way to use the variable name in order to
 create a class with the same name (as in Personabove).

 Well, if anyone has an idea, I'd like to know...

 Luis

Perhaps something like:

class Struct(object):
def __init__(self, **vals):
for slot, val in vals.iteritems():
setattr(self, slot, val)
def __repr__(self):
return %s(%s) % (type(self).__name__,
, .join(%s=%s % (slot, repr(getattr(self, slot))) for
slot in self.__slots__ if hasattr(self, slot)))

def new_struct(name, *slots):
return type(name, (Struct,), {'__slots__': slots})


Then you can do:

 Point = new_struct('Point', 'x', 'y')
 p=Point(x=1, y=2)
 p
Point(x=1, y=2)
 p.x
1
 p.y
2
 p.x=7
 p
Point(x=7, y=2)
 Person = new_struct('Person', 'name', 'tel', 'email')
 jack = Person(name='Jack')
 jack
Person(name='Jack')
 jack.tel='555-132'
 jack
Person(name='Jack', tel='555-132')


etc...

Of course that's if you want a c-like struct. Otherwise there's not
much point at all!

--
Arnaud


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


Re: How to check for remaining hard drive space in Windows?

2007-03-01 Thread Gabriel Genellina
En Wed, 28 Feb 2007 18:54:53 -0300, kevinliu23 [EMAIL PROTECTED]  
escribió:

 It's great because I don't even have to worry about the computer name.
 A question regarding the rootPath parameter...how would I be passing
 it? Would I be passing it as...

tuple = win32api.GetDiskFreeSpace(r'C:')
 or just leave it blank and the function will automatically use the
 rootPath of where the .py file resides?

For GetDiskFreeSpace, the argument *must* end in \, so you should use  
GetDiskFreeSpace('C:\\')
Using GetDiskFreeSpaceEx, it can be any directory. If you leave it, the  
current directory (or current disk) is used - this may or may not be the  
directory where the .py resides.
About the 2GB limit, it only applies to Win98 and earlier. Since the ...Ex  
function works on 98 too, unless you need to support Win95, it's easier to  
use that function.
And you can use UNC paths too, so it may even be used for querying  
available space on remote machines, but I've never tried it that way.

-- 
Gabriel Genellina

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


Re: How to Read Bytes from a file

2007-03-01 Thread Leif K-Brooks
Alex Martelli wrote:
 You should probaby prepare before the loop a mapping from char to number
 of 1 bits in that char:
 
 m = {}
 for c in range(256):
   m[c] = countones(c)

Wouldn't a list be more efficient?

m = [countones(c) for c in xrange(256)]
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: How to check for remaining hard drive space in Windows?

2007-03-01 Thread Tim Golden
[EMAIL PROTECTED] wrote:
 HI,
 
 I am new to Python and wanted to know how to check for the remaining
 disk space on my Windows machine using Python? I was thinking of using
 the command line dir and trying to extract the output from there.
 But I'm not sure how to extract command line strings using Python
 either.

And, just for the record, there's even a few other
techniques outlined here:

http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/66455

TJG

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


Re: installing pysqlite

2007-03-01 Thread Nader
On Mar 1, 11:46 am, Paul Boddie [EMAIL PROTECTED] wrote:
 On 1 Mar, 10:34, Nader [EMAIL PROTECTED] wrote:



  I have expanded the LD_LIBRARY_PATH to my home lib (export
  LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/people/emami/lib).
  I have built and installed the 'pysqlite-2.3.3' with the next
  'setup.cfg' :

  [build_ext]
  define=
  include_dirs=/usr/people/emami/include
  library_dirs=/usr/people/emami/lib
  #libraries=/usr/people/emami/lib/libsqlite3.so  (this line as a
  comment)

 This looks alright. Be sure to verify that libsqlite3.so is in /usr/
 people/emami/lib, although I suppose you've done this, looking at your
 comment.

  The resutl of this process was:

  running install_lib
  copying build/lib.linux-i686-2.4/pysqlite2/_sqlite.so - /usr/people/
  emami/lib/python2.4/site-packages/pysqlite2
  running install_data

  This message had given after installing. I have controll the '/usr/
  people/emami/lib/python2.4/site-packages/pysqlite2' whether the
  '_sqlite.so' has copied there. Yes it has. Okay!

 So pysqlite2 has installed properly at least.

  I go to python and I give the next command:

   from pysqlite import test

  and Unfortunately I get the next error message:

 [...]

  ImportError: /usr/people/emami/lib/python2.4/site-packages/pysqlite2/
  _sqlite.so: undefined symbol: sqlite3_set_authorizer

 I'm running out of ideas here, but you could try doing this:

 ldd /usr/people/emami/lib/python2.4/site-packages/pysqlite2/_sqlite.so

 This should show a list of references to libraries, but if one of them
 is missing in some way then it means that it isn't found by the linker
 and it's not on the LD_LIBRARY_PATH. Another thought is that
 sqlite3_set_authorizer isn't found in the SQLite library - you can
 test this by doing the following:

 nm /usr/people/emami/lib/libsqlite3.so

 I get something like this in response:

 000110b0 T sqlite3_set_authorizer

 If you don't get anything in response or if you see U instead of
 T, then this might indicate an problem with the way SQLite has been
 configured.

  Do you know what option I have to give to if I want to use the
  'easy_install tool?
  %easy_install pysqlite (with some optione with which it cab find the
  installed 'libsqlite.so')

 I'm no easy_install expert, I'm afraid. You might want to talk to the
 pysqlite people directly if what I've suggested doesn't help you
 further:

 http://www.initd.org/tracker/pysqlite/wiki/pysqlite

 Paul

Hello

ldd returens the next result:
ldd /usr/people/emami/lib/python2.4/site-packages/pysqlite2/_sqlite.so
linux-gate.so.1 =  (0xe000)
libpthread.so.0 = /lib/tls/libpthread.so.0 (0x4004)
libc.so.6 = /lib/tls/libc.so.6 (0x4005)

and the 'nm' gives this:

nm usr/people/emami/lib/libsqlite3.so | grep  sqlite3_set_authorize
ce40 T sqlite3_set_authorizer


/lib/ld-linux.so.2 = /lib/ld-linux.so.2 (0x8000)


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


Re: quickly read a formated file?

2007-03-01 Thread rzed
[EMAIL PROTECTED] wrote in
news:[EMAIL PROTECTED]: 

 lialie:
 The formated file may be very popularly, but the module
 ConfigPaser doesn't handle it. Is there a way to process it
 freely? 
 
 First try, assuming the input file can be read whole. The code
 isn't much readable, it needs better variable names (name
 names?), comments, etc.
 
 data = 
 %HEADER
 title1 = Untilted1
 username = User1
 
 %DATA
 title2 = Untilted2
 username2 = User2
 
 
 l1 = (p.strip().splitlines() for p in data.split(%) if
 p.strip()) result = {}
 for part in l1:
 pairs1 = (pair.split('=') for pair in part[1:])
 pairs2 = ((k.strip(), v.strip().strip('')) for k,v in 
pairs1) result[part[0]] = dict(pairs2)
 print result
 
 

If there could be embedded perecent signs in the data, that will 
produce some unexpected results, though. Here's another shot:

data = 
%HEADER
title1 = Untilted1
username = User1

%DATA
title2 = The 7% Solution
username2 = User2


# Assumes there may be embedded percent signs in data
# and all data lines are of the form key = value
def parseData(data):
pd = {}
idata = iter(data)
for line in idata:
line = line.strip()
if line.startswith('%'):
tname = line[1:]
cd = pd[tname] = {}
line = idata.next().strip()
while line != '':
if line.find('=')  0:
id,val = line.split('=',1)
cd[id.strip()] = val.strip().strip('')
line = idata.next().strip()
return pd


print parseData(data.split('\n'))

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


Re: Reading csv files using SQL

2007-03-01 Thread skip

 You could maybe use SQLite to load the CSV file and process in an
 actual DBMS...

Pablo Ok, this is the solution I'm using actually (with PostGres).  My
Pablo hope is to find a way to do the same thing without using a DBMS
Pablo but working directly with the files.

If you want to work directly with the files why not just use Python's csv
module?

Skip

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


Re: How to update DNS record

2007-03-01 Thread andi . clemens
On Mar 1, 10:33 am, Bjoern Schliessmann usenet-
[EMAIL PROTECTED] wrote:
 Read RFC 2136 (Dynamic updates in the DNS) and see if your server
 can be configured to do this. If not, you'll have to change the
 zone files manually and reload the DNS config.

It worked before with a perl script, but now I'm using django for all
our web services so I want to implement this update function in Python
as well.
I don't know how to do this in Python, right now I'm trying it with
twisted, but I don't what to do exactly. It would be nice if somebody
has an example for doing this.

Andi

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


Re: Dialog with a process via subprocess.Popen blocks forever

2007-03-01 Thread Gabriel Genellina
En Wed, 28 Feb 2007 18:27:43 -0300, [EMAIL PROTECTED] escribió:

 Hi,

 I am trying to communicate with a subprocess via the subprocess
 module. Consider the following example:

 from subprocess import Popen, PIPE
 Popen(python -c 'input(hey)', shell=True)
 subprocess.Popen object at 0x729f0
 hey

 Here hey is immediately print to stdout of my interpreter, I did not
 type in the hey. But I want to read from the output into a string,
 so I do

 x = Popen(python -c 'input(hey\n)', shell=True, stdout=PIPE,  
 bufsize=2**10)
 x.stdout.read(1)
 # blocks forever
Blocks, or is the child process waiting for you to input something in  
response?

 Is it possible to read to and write to the std streams of a
 subprocess? What am I doing wrong?

This works for me on Windows XP. Note that I'm using a tuple with  
arguments, and raw_input instead of input (just to avoid a traceback on  
stderr)

py x=Popen((python, -c, raw_input('hey')), shell=True, stdout=PIPE)
py x.stdout.read(1)
1234
'h'
py x.stdout.read()
'ey'

I typed that 1234 (response to raw_input).

You may need to use python -u, or redirect stderr too, but what your real  
problem is?

-- 
Gabriel Genellina

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


Re: urlDecode()

2007-03-01 Thread Gabriel Genellina
En Wed, 28 Feb 2007 22:45:40 -0300, gert [EMAIL PROTECTED] escribió:

 import re

 def htc(m):
 return chr(int(m.group(1),16))

 def urldecode(url):
 rex=re.compile('%([0-9a-hA-H][0-9a-hA-H])',re.M)
 return rex.sub(htc,url)

 if  __name__ == '__main__':
 print urldecode('adasasdasd%20asdasdasdas')

 Ok thats it enough googeling around i make one my self :)

You reinvented urllib.unquote

-- 
Gabriel Genellina

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


Re: Python installation problem (sorry if this is a dup)

2007-03-01 Thread [EMAIL PROTECTED]
On 1 mar, 06:22, Ray Buck [EMAIL PROTECTED] wrote:
 I've been trying to install Mailman, which requires a newer version
 of the Python language compiler (p-code generator?)

It's actually the whole thing : (byte-code) compiler, virtual machine,
and stdlib.

 than the one I
 currently have on my linux webserver/gateway box.

 It's running a ClarkConnect 2.01 package based on Red Hat 7.2 linux.

 I downloaded the zipped tarball (Python-2.4.4.tgz), ran gunzip, then
 un-tarred it in /usr/local.  Then (logged in as root) from
 /usr/local/Python-2.4.4 I ran the configure script which appeared to
 run properly.  At least there were no error messages that I
 saw.  Then I attempted to run make install and ended up with an
 error make *** Error 1.  It was right at the libinstall section
 of the make, so I did some googling and came up with the following command:
 [EMAIL PROTECTED] Python-2.4.4]# make libinstall inclinstall

 After thrashing for about 5 minutes, I got basically the same message:
 Compiling /usr/local/lib/python2.4/zipfile.py ...
 make: *** [libinstall] Error 1

Nothing else between these two lines ?

 I dunno if this is relevant, but I have Python 2.2.2 in the
 /usr/Python-2.2.2 directory.  Do I have to blow this away in order to
 install the newer distro?

I don't know your distrib, but it may depend on this specific python
version.
wild-guess
You may want to specify the --prefix before running configure, and use
make altinstall instead of make install.
/wild-guess

 Or do I need to install the new one in/usr
 instead of /usr/local?

The old one is in /usr/local ? If so, it may not be part of your linux
distro.

FWIW, you should perhaps post the same question on your linux distro's
mailing list.

 Although I'm a retired programmer (mainframes), I'm still learning
 this linux stuff.  I guess that makes me a noob...I hope you'll take
 that into consideration.

We're all newbies one way or another !-)

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


Pydev 1.2.8 Released

2007-03-01 Thread Fabio Zadrozny

Hi All,

Pydev and Pydev Extensions 1.2.8 have been released

Details on Pydev Extensions: http://www.fabioz.com/pydev
Details on Pydev: http://pydev.sf.net
Details on its development: http://pydev.blogspot.com

Release Highlights in Pydev Extensions:
-

* Code-analysis: when a compare statement is found out of a test scope,
that's reported as a warning
* Mark Occurrences: new option to choose whether strings and comments
should be highlighted
* Simple Completions: some keywords were removed from the default list (the
2-letter ones because they're barely worth it and those related to 'try', as
there's already an assistant that creates 'try' blocks)
* Rename refactoring / Mark Occurrences: matches in multi-line strings are
now correct


Release Highlights in Pydev:
--

* Refactoring: integration of the PEPTIC refactoring engine
* Package Explorer: many fixes (special thanks for Don Taylor for the bug
reports)
* Debugger: a number of small optimizations
* Code-completion: works in emacs mode
* Code-completion: added the possibility of auto-completing for all letter
chars and '_' (so, it starts completing once you start writing)
* Code-completion: code-completion for epydoc inside strings
* Code-completion: assigns after global statement considered added to the
global namespace
* Code-completion: now works when a class is declared in a nested scope
* Code-completion: if multiple assigns are found to some variable, the
completion will be a merge of them
* Code-completion: functions are analyzed for their return values for
code-completion purposes
* Code-completion: working on multi-line imports
* Code-completion: can discover instance variables not declared in the
class (in the scope where the class was instanced)
* Auto-edit: adds 'self', 'cls' or no parameter based on the @clasmethod,
@staticmethod declaration on previous line
* Auto-edit: doesn't add 'self' if a method is declared in a method inner
scope
* Fix: BRM Refactoring: wrong column was being passed to the BRM
refactoring engine
* Code-folding: added for comments and strings
* Fix: sometimes the 'create docstring' assistant was not recognizing
method definitons



What is PyDev?
---

PyDev is a plugin that enables users to use Eclipse for Python and Jython
development -- making Eclipse a first class Python IDE -- It comes with many
goodies such as code completion, syntax highlighting, syntax analysis,
refactor, debug and many others.


Cheers,

--
Fabio Zadrozny
--
Software Developer

ESSS - Engineering Simulation and Scientific Software
http://www.esss.com.br

Pydev Extensions
http://www.fabioz.com/pydev

Pydev - Python Development Enviroment for Eclipse
http://pydev.sf.net
http://pydev.blogspot.com
-- 
http://mail.python.org/mailman/listinfo/python-list

Re: Importing binary modules

2007-03-01 Thread André
On 1 mar, 12:21, Thinker [EMAIL PROTECTED] wrote:
 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1

 [EMAIL PROTECTED] wrote:

 cut ..

  The problem appears when libMyNewModule.so depends on another
  library, say libfoo.so, which sits also in /my/module/dir. In that
  case, '/my/ module/dir', needs to be preset in the LD_LIBRARY_PATH
  *before* the python interpreter is set.

  In this case, the snippet of code above will not work as one would
  expect. It will normally give an ImportError saying it cannot find
  libfoo.so. That happens, apparently, because the dynamic linker
  cannot rescan LD_LIBRARY_PATH after the python interpreter has
  started.

 Since you create a new module, you should try to link your module with
 - -rpath-link option.
 You can specify a path searched by linker when finding shared object
 required.

 - --
 Thinker Li - [EMAIL PROTECTED] [EMAIL 
 PROTECTED]://heaven.branda.to/~thinker/GinGin_CGI.py
 -BEGIN PGP SIGNATURE-
 Version: GnuPG v1.4.6 (FreeBSD)
 Comment: Using GnuPG with Mozilla -http://enigmail.mozdev.org

 iD8DBQFF5rcp1LDUVnWfY8gRAmLcAKCobvo06x84L0pj66amTBspTJ9nUwCg5sA+
 MP7tLF/i8zqoZHl5Fxw2YsQ=
 =BNQy
 -END PGP SIGNATURE-

Well, unfortunately I don't have access to the binary like that. It is
given me, I just wanted to use it the way it was compiled. What could
be done then?

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


pattern matching

2007-03-01 Thread azrael
can someone give me good links for pattern matching in images using
python

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


Questions about app design - OOP with python classes

2007-03-01 Thread adriancico
Hi

I am working on a python app, an outliner(a window with a TreeCtrl
on the
left to select a document, and a RichTextBox at the right to edit the
current
doc).

I am familiarized with OOP concepts and terms but I lack practical
experience
, so any comment/tip/pointer to docs will be welcome.

So far, I have created a separated class for each important
element of my app
- the main Frame (cFrmMain)
- the TreeCtrl
- the TextCtrl at the right
- a cDocument class that contains the entire file with all
docs
  and manages creation/deletion/saving to disk, etc
- classes for the toolbar, the menubar, etc

With this design, pretty much everything is encapsulated in it
respective
class. However, that means that the main program logic is in the Frame
class.
From there, it instantiates the other classes and is responsable of
the
communication between them.

For example, the user deletes a node on the Tree, this raises an
event
on cFrmMain (the main Frame class). In the event handler, cFrmMain
notifies
cDocument that a node (and the associated text) has been deleted so
the master
file is modified accordingly.

The problem is, I have been implementing some funcionalities to
test this
design, I have less than a dozen operations implemented and cFrmMain
has grown
more than acceptable, starting to get confusing.

This design feels not quite right to me, I've been considering
allowing
the different classes to know of the existence of each other and pass
messages
between them. I would lose encapsulation (I think), and I don't know
if that would be
(very) bad... and I'm not sure if with this design I will gain or lose
clarity on the code.

My questions ( at last :-) ) are:

¿Should I stick to my first design idea, eventually moving code
from the
main Frame to modules to gain clarity?

¿Is the second idea I present correct (I know it'll work, what I
want to
know is the clearest way of organize my code)?

¿Am I doing this wrong from the start and have to use another
design?

Thanks for reading this long post. Any comment, hint or pointer to
docs will
be greatly appreciated.

Regards
Adrián Garrido

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


Python Tutorial

2007-03-01 Thread Timm Florian Gloger
Hi,

is Guido van Rossum's Python Tutorial in non-HTML formats (e.g. PDF
or PS) avaiable for free?

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


django learn

2007-03-01 Thread Gigs_
HI folks!

I want to learn to make web pages with django.
I dont know nothing about HTML.

How much of HTML I need to know to be able to learn django well?


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


Re: installing pysqlite

2007-03-01 Thread Paul Boddie
On 1 Mar, 12:46, Nader [EMAIL PROTECTED] wrote:

 ldd returens the next result:
 ldd /usr/people/emami/lib/python2.4/site-packages/pysqlite2/_sqlite.so
 linux-gate.so.1 =  (0xe000)
 libpthread.so.0 = /lib/tls/libpthread.so.0 (0x4004)
 libc.so.6 = /lib/tls/libc.so.6 (0x4005)

I think you pasted the nm result in here, but you seem to be missing
libsqlite3.so.0 (from what I see myself). From what I've just read
about linux-gate.so, the linker can't seem to find the SQLite
libraries. More on linux-gate.so here:

http://www.trilithium.com/johan/2005/08/linux-gate/

 and the 'nm' gives this:

 nm usr/people/emami/lib/libsqlite3.so | grep  sqlite3_set_authorize
 ce40 T sqlite3_set_authorizer

That looks alright.

 /lib/ld-linux.so.2 = /lib/ld-linux.so.2 (0x8000)

I guess this was the end of the ldd result.

I'm out of ideas, unfortunately. I think you should experiment with
LD_LIBRARY_PATH and run ldd again to see if you can get it to show
libsqlite3.so.0. The pysqlite mailing list might be the best place to
ask for help if that doesn't work. Sorry!

Paul

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


Re: How to Read Bytes from a file

2007-03-01 Thread Bart Ogryczak
On Mar 1, 7:52 am, [EMAIL PROTECTED] [EMAIL PROTECTED]
wrote:
 It seems like this would be easy but I'm drawing a blank.

 What I want to do is be able to open any file in binary mode, and read
 in one byte (8 bits) at a time and then count the number of 1 bits in
 that byte.

 I got as far as this but it is giving me strings and I'm not sure how
 to accurately get to the byte/bit level.

 f1=file('somefile','rb')
 while 1:
 abyte=f1.read(1)

import struct
buf = open('somefile','rb').read()
count1 = lambda x: (x1)+(x20)+(x40)+(x80)+(x160)+(x320)+
(x640)+(x1280)
byteOnes = map(count1,struct.unpack('B'*len(buf),buf))

byteOnes[n] is number is number of ones in byte n.



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


Re: Python Tutorial

2007-03-01 Thread Jerry Hill
On 3/1/07, Timm Florian Gloger [EMAIL PROTECTED] wrote:
 is Guido van Rossum's Python Tutorial in non-HTML formats (e.g. PDF
 or PS) avaiable for free?

Yes.  Download one of the PDF documentation zips from here:
http://docs.python.org/download and extract the tut.pdf file.  AFAIK
it's not available as a seperate download.

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


Re: django learn

2007-03-01 Thread René Fleschenberg
Hi

Gigs_ schrieb:
 I want to learn to make web pages with django.
 I dont know nothing about HTML.
 
 How much of HTML I need to know to be able to learn django well?

You need to get a profound knowledge of it, unless you have someone else
who does the HTML/Templating for your project. In that case, you could
probably get away with learning just the basics.

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


Re: How do I Color a QTableView row in PyQt4

2007-03-01 Thread Mel
On Feb 28, 5:08 pm, David Boddie [EMAIL PROTECTED] wrote:
 On Wednesday 28 February 2007 18:55, Mel wrote:



  I am currently porting an SQL centered Visual Basic application to run
  on Linux, Python, and Qt4.  Currently I am stumped on changing row
  colors in the QTableView widget.  My test code is based on code from
  the PyQt4  examples and looks like this:

  *** Start Code ***

  import sys
  from PyQt4 import QtCore, QtGui, QtSql

  import connection

  class CustomSqlModel(QtSql.QSqlQueryModel):
  def data(self, index, role):
  value = QtSql.QSqlQueryModel.data(self, index, role)
  if value.isValid() and role == QtCore.Qt.DisplayRole:
  if index.column() == 0:
  return QtCore.QVariant(value.toString().prepend(#))
  elif index.column() == 2:
  return QtCore.QVariant(value.toString().toUpper())
  if role == QtCore.Qt.TextColorRole and index.column() == 1:
  return QtCore.QVariant(QtGui.QColor(QtCore.Qt.blue))
  return value

 [Snipping the rest of the code to keep this post short.]

  Column 18 in the table shows a number from 1 to 3.  I would like to
  change the color of the row based on the value in column 18 but I have
  not been able to find any resources that show me how.  Can anyone lend
  a hand?

 It's interesting to see that you subclassed QSqlQueryModel instead of
 using a custom delegate to display the data. It's usually recommended
 that you subclass QItemDelegate if you want to customize the way items
 are represented, but you can also customize the model if you want.

 What you can do is to check to see if the requested role is the
 Qt.BackgroundRole and, if so, query the base class for the data in
 column 18 in the same row. Then you can supply a different colour
 (as a brush, actually) depending on the value you obtained.

 if role == QtCore.Qt.BackgroundRole:
 # Get the data from column 18.
 column18_data = index.sibling(index.row(), 18).data()
 # The data is stored in a QVariant, so we unpack it.
 integer_value = column18_data.toInt()[0] # just the value
 # Look up the associated color in a dictionary which you
 # have already defined, and return it.
 color = self.colors.get(integer_value, self.default_color)
 return QtCore.QVariant(QtGui.QBrush(color))

 You might also find the following pages useful:

 http://www.riverbankcomputing.com/Docs/PyQt4/html/qt.html#ItemDataRol...http://doc.trolltech.com/4.2/model-view-model.html

 Good luck!

 David

Thanks David, that did work as I had hoped.  I just need to work on
the colors a bit and make them more appealing.

Here is my final code that works for the custom Sql Model.

class CustomSqlModel(QtSql.QSqlQueryModel):
def data(self, index, role):
value = QtSql.QSqlQueryModel.data(self, index, role)
if value.isValid() and role == QtCore.Qt.DisplayRole:
if index.column() == 0:
return QtCore.QVariant(value.toString().prepend(#))
elif index.column() == 2:
return QtCore.QVariant(value.toString().toUpper())
if role == QtCore.Qt.TextColorRole and index.column() == 1:
return QtCore.QVariant(QtGui.QColor(QtCore.Qt.blue))
if role == QtCore.Qt.BackgroundRole:

# Get the data from column 18.

column18_data = index.sibling(index.row(), 18).data()

# The data is stored in a QVariant, so we unpack it.

integer_value = column18_data.toInt()[0] # just the value

# Look up the associated color in a dictionary which you

# have already defined, and return it.
if integer_value == 1:

return
QtCore.QVariant(QtGui.QBrush(QtGui.QColor(QtCore.Qt.red)))
if integer_value == 2:

return
QtCore.QVariant(QtGui.QBrush(QtGui.QColor(QtCore.Qt.yellow)))
if integer_value == 3:

return
QtCore.QVariant(QtGui.QBrush(QtGui.QColor(QtCore.Qt.green)))
return value


Mel

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


Re: quickly read a formated file?

2007-03-01 Thread Jussi Salmela
rzed kirjoitti:
 [EMAIL PROTECTED] wrote in
 news:[EMAIL PROTECTED]: 
 
 lialie:
 The formated file may be very popularly, but the module
 ConfigPaser doesn't handle it. Is there a way to process it
 freely? 
 First try, assuming the input file can be read whole. The code
 isn't much readable, it needs better variable names (name
 names?), comments, etc.

 data = 
 %HEADER
 title1 = Untilted1
 username = User1

 %DATA
 title2 = Untilted2
 username2 = User2
 

 l1 = (p.strip().splitlines() for p in data.split(%) if
 p.strip()) result = {}
 for part in l1:
 pairs1 = (pair.split('=') for pair in part[1:])
 pairs2 = ((k.strip(), v.strip().strip('')) for k,v in 
 pairs1) result[part[0]] = dict(pairs2)
 print result


 
 If there could be embedded perecent signs in the data, that will 
 produce some unexpected results, though. Here's another shot:
 
 
 snip
 
 

The solution of bearophile only needs 2 small modifications to handle this:

#=
data = 
%HEADER
title1 = Untilted1
username = User1 20 %

%DATA
title2 = Untilted2
username2 = User2 10 %


# Ensure data starts with a newline
data = '\n' + data

# Split using '\n%' instead of '%'
l1 = (p.strip().splitlines() for p in data.split(\n%) if p.strip())
result = {}
for part in l1:
 pairs1 = (pair.split('=') for pair in part[1:])
 pairs2 = ((k.strip(), v.strip().strip('')) for k,v in pairs1)
 result[part[0]] = dict(pairs2)
print result
#=



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


Re: installing pysqlite

2007-03-01 Thread Nader
On Mar 1, 2:40 pm, Paul Boddie [EMAIL PROTECTED] wrote:
 On 1 Mar, 12:46, Nader [EMAIL PROTECTED] wrote:



  ldd returens the next result:
  ldd /usr/people/emami/lib/python2.4/site-packages/pysqlite2/_sqlite.so
  linux-gate.so.1 =  (0xe000)
  libpthread.so.0 = /lib/tls/libpthread.so.0 (0x4004)
  libc.so.6 = /lib/tls/libc.so.6 (0x4005)

 I think you pasted the nm result in here, but you seem to be missing
 libsqlite3.so.0 (from what I see myself). From what I've just read
 about linux-gate.so, the linker can't seem to find the SQLite
 libraries. More on linux-gate.so here:

 http://www.trilithium.com/johan/2005/08/linux-gate/

  and the 'nm' gives this:

  nm usr/people/emami/lib/libsqlite3.so | grep  sqlite3_set_authorize
  ce40 T sqlite3_set_authorizer

 That looks alright.

  /lib/ld-linux.so.2 = /lib/ld-linux.so.2 (0x8000)

 I guess this was the end of the ldd result.

 I'm out of ideas, unfortunately. I think you should experiment with
 LD_LIBRARY_PATH and run ldd again to see if you can get it to show
 libsqlite3.so.0. The pysqlite mailing list might be the best place to
 ask for help if that doesn't work. Sorry!

 Paul

Hello Paul,

I have returnd to the begining and have installed everthing again.
Fortunately now I have the 'pysqlite2' module, because the test.test()
workd after importing of 'pysqlite2'

  from pysqlite2 import test
 test.test
function test at 0x404727d4
 test.test()
.
--
Ran 173 tests in 0.585s

OK


And the result of running of 'ldd' is :
[EMAIL PROTECTED]:~ ldd lib/python2.4/site-packages/pysqlite2/_sqlite.so
linux-gate.so.1 =  (0xe000)
libsqlite3.so.0 = /usr/people/emami/lib/libsqlite3.so.0
(0x4001)
libpthread.so.0 = /lib/tls/libpthread.so.0 (0x40096000)
libc.so.6 = /lib/tls/libc.so.6 (0x400a7000)

Now I can ggo on with TurboGears! I have at home a Laptop and I have
installed the 'gentoo' on it, and have no problem. But I would like to
experiment with TurboGears at my work and It was a problem that I had
no 'root' password.
However I appreciate well your help in this case. I you like Indian or
oriental music I can send you some!

With regards,

Nader

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


Re: design question: no new attributes

2007-03-01 Thread Alan Isaac

Bruno Desthuilliers [EMAIL PROTECTED] wrote in
message news:[EMAIL PROTECTED]
 I don't share your definition of reasonable. But you should have
 guessed by now

My view may be shaped by a different experience.
I have found dynamic attribute creation convenient
when doing something quick and dirty, but I have
never wanted it as a design feature in a more serious
project.

Can you give me an example where design considerations
make dynamic attribute creation particularly desirable?

Thank you,
Alan Isaac


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


Re: How to update DNS record

2007-03-01 Thread Bjoern Schliessmann
[EMAIL PROTECTED] wrote:

 It worked before with a perl script, but now I'm using django for
 all our web services so I want to implement this update function
 in Python as well.
 I don't know how to do this in Python, right now I'm trying it
 with twisted, but I don't what to do exactly. It would be nice if
 somebody has an example for doing this.

No one here knows how the server is configured or how the perl
script did it before, so there's little chance someone will have an
example that works for you.

Regards,


Björn

-- 
BOFH excuse #280:

Traceroute says that there is a routing problem in the backbone. 
It's not our problem.

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


Re: How to update DNS record

2007-03-01 Thread Jean-Paul Calderone
On 1 Mar 2007 04:14:23 -0800, [EMAIL PROTECTED] wrote:
On Mar 1, 10:33 am, Bjoern Schliessmann usenet-
[EMAIL PROTECTED] wrote:
 Read RFC 2136 (Dynamic updates in the DNS) and see if your server
 can be configured to do this. If not, you'll have to change the
 zone files manually and reload the DNS config.

It worked before with a perl script, but now I'm using django for all
our web services so I want to implement this update function in Python
as well.
I don't know how to do this in Python, right now I'm trying it with
twisted, but I don't what to do exactly. It would be nice if somebody
has an example for doing this.


You need to provide more details.  There is no one way to change the
configuration of a DNS server.  Different servers have different features
and different interfaces.  A start would be to specify which DNS server
software needs to be reconfigured.  You might also want to include an example
of what kind of change you want to make.  For example, do you want to add
and delete records?  Do you want to change the address of associated with
an existing A record?  Are all your changes in a single zone?  etc.

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


imagemagick

2007-03-01 Thread azrael
Hy
did anyone manage to work with imahemagick through python. I've been
googling like a crazy for some instalation instructions, but i cant
find anything. please help.

thnx

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


Re: Extract String From Enclosing Tuple

2007-03-01 Thread rshepard
On 2007-02-28, [EMAIL PROTECTED] [EMAIL PROTECTED] wrote:

 import itertools
 tuple(itertools.chain((t[0], t2[0].encode('ascii')), t[2:]))
 ('eco', 'Roads', 0.073969887301348305)

Steven,

  As suggested in the previous article, I handled it where the values are
read from the list retrieved from the database. By adding an additional
index of [0] the format is correct.

Thank you all very much,

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


Re: design question: no new attributes

2007-03-01 Thread Alan Isaac

greg [EMAIL PROTECTED] wrote in message
news:[EMAIL PROTECTED]
 There's a problem with that when you want to subclass:

Agreed.  The following addresses that and, I think, some
of the other objections that have been raised.
Alan

class Lockable:
a = 0
def __init__(self, lock=False):
self.b = 1
self.lock = lock
def __setattr__(self, attr, val):
if not hasattr(self,attr) and hasattr(self,'lock') and self.lock:
raise ValueError(This object accepts no new attributes.)
self.__dict__[attr] = val


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


Re: django learn

2007-03-01 Thread [EMAIL PROTECTED]
On 1 mar, 14:36, Gigs_ [EMAIL PROTECTED] wrote:
 HI folks!

 I want to learn to make web pages with django.
 I dont know nothing about HTML.

 How much of HTML I need to know to be able to learn django well?


OT
Anyway :
1/ you'll obviously need to have a good knowledge of html (plus css
and possibly javascript too) to 'make web pages'.
2/ you'll also need to have a good knowledge of the HTTP protocol to
write web apps
3/ and since Django is using Python, you'll need to know Python
too !-)
/OT


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


Re: How to check for remaining hard drive space in Windows?

2007-03-01 Thread kevinliu23
Thanks Tim,

I only need to run the get hard drive space function on one drive for
one machine so I'll stick to GetDiskFreeSpace. If I need to expand
this feature to multiple harddrives/machines, I'll be sure to come
back to this thread. :)

Kevin

On Mar 1, 4:17 am, Tim Golden [EMAIL PROTECTED] wrote:
 kevinliu23 wrote:
  Just tried your solution Tim, worked like a charm. :)

  It's great because I don't even have to worry about the computer name.
  A question regarding the rootPath parameter...how would I be passing
  it? Would I be passing it as...

 tuple = win32api.GetDiskFreeSpace(r'C:')
  or just leave it blank and the function will automatically use the
  rootPath of where the .py file resides?

  Both have returned the correct result.

 The simple answer is: I'm not sure. If you experiment and find
 something which works, just use it!

 Something which SickMonkey made me return to your question.
 Are you trying to find the disk space available on a
 different machine (possibly on several different machines)?
 If so, then WMI is definitely your answer. You can
 run -- from your machine -- one piece of code which
 will attach to several different machines to give
 you the answer. (as per Sick Monkey's later post).

 If I've read too much into your question, well nothing's
 ever wasted on the internet. Here's some sample code
 which uses the wmi module from:

http://timgolden.me.uk/python/wmi.html

 code
 machines = ['mycomp', 'othercomp']

 for machine in machines:
print Machine:, machine
c = wmi.WMI (machine)
# only consider local fixed disks
for disk in c.Win32_LogicalDisk (DriveType=3):
  print disk.Name, disk.FreeSpace
print

 /code

 Yes, you could even write:

for disk in wmi.WMI (machine).Win32_LogicaDisk (DriveType=3):

 but I'd find it a touch unwieldy. YMMV.

 HTH
 TJG


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


Re: imagemagick

2007-03-01 Thread Terry Hancock
azrael wrote:
 Hy
 did anyone manage to work with imahemagick through python. I've been
 googling like a crazy for some instalation instructions, but i cant
 find anything. please help.

There have been a few wrappers for ImageMagick over the last few years.

There was once something called PythonMagick, for example. However
AFAIK, they are all currently defunct. There was a later version using
Boost, but it apparently required a lot of system resources to compile
for some reason, and I don't think I was able to.

Apparently ImageMagick has gone through a lot of API changes and people
get disgusted with supporting it (?). There is also, of course the
Python Imaging Library (PIL) that competes with it pretty effectively
for most use cases (of course ImageMagick has unparalleled image
conversion support).

If you really want ImageMagick, though, you might want to consider
writing your own wrapper (perhaps using ctypes, now that it is included
in the standard library).

I have used 'popen' to run it as a separate process in the past. The
'subprocess' module would be the smart way to do that today, and that
might be your fastest solution.

Cheers,
Terry


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

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


Re: design question: no new attributes

2007-03-01 Thread Paul Boddie
On 28 Feb, 15:39, Diez B. Roggisch [EMAIL PROTECTED] wrote:
  However I will observe that
  - entire languages are structured on the premise that dynamic
  attribute creation can be hazardous

 Yup, and you are free to use one of them. And as an additional benefit, they
 will be more performant because you then can optimize the code further.

I think that's something many people miss: it can be desirable to
declare the range of attributes on instances up front for
optimisation purposes (in various languages other than Python), but
the advantages of not risking the occasional AttributeError shouldn't
be too readily discarded either. I'm not sure where the different
tools stand on this front, but second-guessing invalid accesses to
attributes is a completely different level to just identifying dodgy
accesses to globals or locals, along with dubious imports and bad
practice programming styles consisting of one or more of those more
detectable things.

Paul

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


Re: Importing binary modules

2007-03-01 Thread Thinker
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1


 Well, unfortunately I don't have access to the binary like that. It
 is given me, I just wanted to use it the way it was compiled. What
 could be done then?
You have better set LD_LIBRARY_PATH environment variable, or use
ldconfig (plz, man ldconfig)
to add the directory, where you shared object is in, to the search
path of dynamic linker.

- --
Thinker Li - [EMAIL PROTECTED] [EMAIL PROTECTED]
http://heaven.branda.to/~thinker/GinGin_CGI.py
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.6 (FreeBSD)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFF5uWt1LDUVnWfY8gRAs52AKDLkGkNaPo2NgjdjFelNOx5KWG0KQCfT1RN
l6WqAWcutwPtmJPleSdkrr4=
=Ov/a
-END PGP SIGNATURE-

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

Re: Eric on XP for Newbie

2007-03-01 Thread Larry Bates
[EMAIL PROTECTED] wrote:
 I'm starting on the path of freeing myself from proprietory software
 but I need to migrate, not make one huge jump.
 
 I'm looking at using Python and Eric for programming
 
 I've got Python up and running but can someone please point me to a
 simple step by step guide for installing Eric? I've downloaded the tar
 files, but what do I do with them?
 
 Thanks
 

Take a look at PyScripter also.  I REALLY like it a lot on Windows:

http://mmm-experts.com/Products.aspx?ProductId=4

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


Re: How to Read Bytes from a file

2007-03-01 Thread Jussi Salmela
Bart Ogryczak kirjoitti:
 On Mar 1, 7:52 am, [EMAIL PROTECTED] [EMAIL PROTECTED]
 wrote:
 It seems like this would be easy but I'm drawing a blank.

 What I want to do is be able to open any file in binary mode, and read
 in one byte (8 bits) at a time and then count the number of 1 bits in
 that byte.

 I got as far as this but it is giving me strings and I'm not sure how
 to accurately get to the byte/bit level.

 f1=file('somefile','rb')
 while 1:
 abyte=f1.read(1)
 
 import struct
 buf = open('somefile','rb').read()
 count1 = lambda x: (x1)+(x20)+(x40)+(x80)+(x160)+(x320)+
 (x640)+(x1280)
 byteOnes = map(count1,struct.unpack('B'*len(buf),buf))
 
 byteOnes[n] is number is number of ones in byte n.
 
 
 

I guess struct.unpack is not necessary, because:

byteOnes2 = map(count1, (ord(ch) for ch in buf))

seems to do the trick also.

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


Re: starship.python.net is down

2007-03-01 Thread Matthew . Cahn
On Feb 26, 3:46 pm, Tom Bryan [EMAIL PROTECTED] wrote:
 [EMAIL PROTECTED] wrote:
  Any news onstarship.python.net?  It still seems to bedown.

 Yes.  Unfortunately, there may be a hardware problem.  Stefan, the admin
 who owns the hosted machine, is working with the host company to
 determine what's going on.  I think that they are still in the
 investigation stage at the moment, so it's hard to give an estimate of
 when the problem will be fixed.

 Thanks for your patience,
 ---Tom

I appreciate the update.

Thanks,
Matthew

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


Re: How to update DNS record

2007-03-01 Thread andi . clemens
Hi,
I'm just a trainee working here and I don't really know how the old
Perl script worked.
But I can post the function, maybe you can recognize what is going on
there:

my $domain = wiv-dom.com;
my $nameserver = bldc01.wiv-dom.com;

sub makeDNSEntry {
my $res = new Net::DNS::Resolver;
my $query = $res-query($domain, NS);
if ($query) {
print \nMaking entries into nameserver...\nSearching for
nameservers...\n\n if $opt{d};
foreach my $rr ($query-answer) {
next unless $rr-type eq NS;
print $rr-nsdname, \n if $opt{d};
}
}
else {
print query for Nameserver for $domain failed: , $res-
errorstring, \n;
}
my $update = new Net::DNS::Update($domain);
$update-push(pre, yxrrset($snmpHostName.$domain. A));
$update-push(update, rr_del($snmpHostName.$domain. A));
$update-push(update, rr_add($snmpHostName.$domain. 3600 A
$outbound));
$res = new Net::DNS::Resolver;

$res-nameservers($nameserver);
print \nNameserver for $domain : . $nameserver, \n if $opt{d};
my $reply = $res-send($update);

if (defined $reply) {
if ($reply-header-rcode eq NOERROR) {
print Update for $snmpHostName.$domain. OK\n if $opt{d};
} else {
print Update for $snmpHostName.$domain. ERROR : . $reply-
header-rcode. \n if $opt{d};
}
} else {
print RESERROR : No reply: . $res-errorstring. \n;
}
}

What I want to do is change the A-Record of existing entries in the
DNS server.

I'm getting all the IPs from a django database and ask them via SNMP
what their outbound address is, then I want to change those settings
in our DNS server like in the perl script above.

Sorry for my bad explanation, but I never worked with DNS before...

Andi

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


Re: Python Tutorial

2007-03-01 Thread Timm Florian Gloger
Thanks.
And excuse this now so obviously foolish question. It seems that my
so-called brain was not able to recognise Downloads as a valueable
possibility to dive into when searching some non-HTML content.
Sorry for wasting your time, and thanks even more for answering nevertheless.

Regards,
Timm (ashamed)

On 3/1/07, Jerry Hill [EMAIL PROTECTED] wrote:
 On 3/1/07, Timm Florian Gloger [EMAIL PROTECTED] wrote:
  is Guido van Rossum's Python Tutorial in non-HTML formats (e.g. PDF
  or PS) avaiable for free?

 Yes.  Download one of the PDF documentation zips from here:
 http://docs.python.org/download and extract the tut.pdf file.  AFAIK
 it's not available as a seperate download.

 --
 Jerry

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


Re: imagemagick

2007-03-01 Thread azrael
i need to use some common filters lik the edge, blur. it was pretty
easy and fast to use python magick. but now as I want to use it with
python, it is impossible. there is the PIL_usm, but also no
installation instrucions.
Is there a way to blur the image using the PIL by a specific radius.



On Mar 1, 4:12 pm, Terry Hancock [EMAIL PROTECTED] wrote:
 azrael wrote:
  Hy
  did anyone manage to work with imahemagick through python. I've been
  googling like a crazy for some instalation instructions, but i cant
  find anything. please help.

 There have been a few wrappers for ImageMagick over the last few years.

 There was once something called PythonMagick, for example. However
 AFAIK, they are all currently defunct. There was a later version using
 Boost, but it apparently required a lot of system resources to compile
 for some reason, and I don't think I was able to.

 Apparently ImageMagick has gone through a lot of API changes and people
 get disgusted with supporting it (?). There is also, of course the
 Python Imaging Library (PIL) that competes with it pretty effectively
 for most use cases (of course ImageMagick has unparalleled image
 conversion support).

 If you really want ImageMagick, though, you might want to consider
 writing your own wrapper (perhaps using ctypes, now that it is included
 in the standard library).

 I have used 'popen' to run it as a separate process in the past. The
 'subprocess' module would be the smart way to do that today, and that
 might be your fastest solution.

 Cheers,
 Terry

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


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


Re: How to Read Bytes from a file

2007-03-01 Thread Alex Martelli
Leif K-Brooks [EMAIL PROTECTED] wrote:

 Alex Martelli wrote:
  You should probaby prepare before the loop a mapping from char to number
  of 1 bits in that char:
  
  m = {}
  for c in range(256):
m[c] = countones(c)
 
 Wouldn't a list be more efficient?
 
 m = [countones(c) for c in xrange(256)]

Yes, or an array.array -- actually I meant to use m[chr(c)] above (so
you could use the character you're reading directly to index m, rather
than calling ord(byte) a bazillion times for each byte you're reading),
but if you're using the numbers (as I did before) a list or array is
better.


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


Re: How to Read Bytes from a file

2007-03-01 Thread [EMAIL PROTECTED]
On Mar 1, 8:53 am, Bart Ogryczak [EMAIL PROTECTED] wrote:
 On Mar 1, 7:52 am, [EMAIL PROTECTED] [EMAIL PROTECTED]
 wrote:

  It seems like this would be easy but I'm drawing a blank.

  What I want to do is be able to open any file in binary mode, and read
  in one byte (8 bits) at a time and then count the number of 1 bits in
  that byte.

  I got as far as this but it is giving me strings and I'm not sure how
  to accurately get to the byte/bit level.

  f1=file('somefile','rb')
  while 1:
  abyte=f1.read(1)

 import struct
 buf = open('somefile','rb').read()
 count1 = lambda x: (x1)+(x20)+(x40)+(x80)+(x160)+(x320)+
 (x640)+(x1280)
 byteOnes = map(count1,struct.unpack('B'*len(buf),buf))

 byteOnes[n] is number is number of ones in byte n.


This solution looks nice, but how does it work?  I'm guessing
struct.unpack will provide me with 8 bit bytes (will this work on any
system?)

How does count1 work exactly?

Thanks for the help.

-Greg

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


Re: class declaration shortcut

2007-03-01 Thread Steven Bethard
Arnaud Delobelle wrote:
 On Feb 28, 7:26 pm, Luis M. González [EMAIL PROTECTED] wrote:
 I've come across a code snippet inwww.rubyclr.comwhere they show how
 easy it is to declare a class compared to equivalent code in c#.
 I wonder if there is any way to emulate this in Python.

 The code is as follows:

 Person = struct.new( :name, :birthday, :children)

 I tried something like this, but it's nothing close to what I'd like:

 def klass(table, *args):
 cls = new.classobj(table, (), {})
 for i in args:
 setattr(cls, i, i)
 return cls

 But this above is not what I want.
 I guess I should find a way to include the constructor code inside
 this function, but I don't know if this is possible.
 Also, I wonder if there is a way to use the variable name in order to
 create a class with the same name (as in Personabove).

 Well, if anyone has an idea, I'd like to know...

 Luis
 
 Perhaps something like:
 
 class Struct(object):
 def __init__(self, **vals):
 for slot, val in vals.iteritems():
 setattr(self, slot, val)
 def __repr__(self):
 return %s(%s) % (type(self).__name__,
 , .join(%s=%s % (slot, repr(getattr(self, slot))) for
 slot in self.__slots__ if hasattr(self, slot)))
 
 def new_struct(name, *slots):
 return type(name, (Struct,), {'__slots__': slots})
 
 
 Then you can do:
 
 Point = new_struct('Point', 'x', 'y')
 p=Point(x=1, y=2)
 p
 Point(x=1, y=2)
 p.x
 1
 p.y
 2
 p.x=7
 p
 Point(x=7, y=2)
 Person = new_struct('Person', 'name', 'tel', 'email')
 jack = Person(name='Jack')
 jack
 Person(name='Jack')
 jack.tel='555-132'
 jack
 Person(name='Jack', tel='555-132')

This does pretty much the same thing as the recipe I posted:

 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/502237

Note that your approach requires repetition of the 'Person' and quotes 
around each attribute name, which the OP complained about. The recipe at 
least gets rid of the repetition of 'Person'.

You might also want to check out Raymond Hettinger's NamedTuple recipe:

 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/500261

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


Re: pattern matching

2007-03-01 Thread Diez B. Roggisch
azrael wrote:

 can someone give me good links for pattern matching in images using
 python

There is a python-binding available for the OpenCV library, a collection of
state-of-the-art CV algorithms.

And it comes with a free manual

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


Re: finding out the precision of floats

2007-03-01 Thread John Machin
On Mar 1, 9:33 pm, Bart Ogryczak [EMAIL PROTECTED] wrote:
 On Feb 28, 10:29 pm, John Machin [EMAIL PROTECTED] wrote:



  On Mar 1, 4:19 am, BartOgryczak [EMAIL PROTECTED] wrote:

   On Feb 28, 3:53 pm, John Machin [EMAIL PROTECTED] wrote:

On Feb 28, 10:38 pm, BartOgryczak [EMAIL PROTECTED] wrote:

 [1] eg. consider calculating interests rate, which often is defined as
 math.pow(anualRate,days/365.0).

More importantly, the formula you give is dead wrong. The correct
formula for converting an annual rate of interest to the rate of
interest to be used for n days (on the basis of 365 days per year) is:

(1 + annual_rate) ** (n / 365.0) - 1.0
or
math.pow(1 + annual_rate, n / 365.0) - 1.0
if you prefer.

   YPB? Anyone with half a brain knows, that you can either express rate
   as 0.07 and do all those ridiculous conversions above, or express it
   as 1.07 and apply it directly.

  A conversion involving an exponentiation is necessary. All those?? I
  see only two.

  Please re-read your original post, and note that there are *TWO* plus-
  or-minus 1.0 differences between your formula and mine. For an annual
  rate of 10%, yours would calculate the rate for 6 months (expressed as
  182.5 days) as:
  math.pow(0.10, 0.5) = 0.316... i.e. 31.6%

 You're assuming that I'd store annual rate as 0.1, while actually it'd
 stored as 1.1.
 Which is logical and applicable directly.

Storing 1.1 and using it in calculations may save you a few
microseconds a day in your real-time apps. However the annual rate of
interest is 10% aka 0.1; naming 1.1 as anualRate (sic) is utterly
ludicrous.

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


Re: How to Read Bytes from a file

2007-03-01 Thread John Machin
On Mar 2, 12:53 am, Bart Ogryczak [EMAIL PROTECTED] wrote:

 import struct
 buf = open('somefile','rb').read()
 count1 = lambda x: (x1)+(x20)+(x40)+(x80)+(x160)+(x320)+
 (x640)+(x1280)
 byteOnes = map(count1,struct.unpack('B'*len(buf),buf))

byteOnes = map(count1,struct.unpack('%dB'%len(buf),buf))

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


GIS Shape file upload FTP server

2007-03-01 Thread Ahmed, Shakir
HI Group,

 

As I am very new in python field so this question might be very silly
but If I get any help that is highly appreciated.

 

Problem: 

 

I have a python script which is working fine to upload files to the ftp
server but the problem is it is reducing the actual size after
transferring. I need to upload a GIS Shape file to the ftp server but
want to keep the same size and format. Any idea or help is highly
appreciated.

 

Thanks

Shakir

Staff Geographer

Sfwmd.gov

 

The code is as follows: 

 

 

# Import system modules

 

import os

import sys 

import win32com.client

import zipfile

import os.path

import ftplib

from ftplib import FTP

 

 

ftp=ftplib.FTP(ftp.sfwmd.gov,,)  

ftp.login('sahmed','sa1lf1sh')

#ftp.cwd(/export/pub/sahmed)

 

ffile = open('c:\\test\\wuppnt.shp', 'r')

 

ftp.storbinary(stor wuppnt.shp, ffile)

ffile.close()

 

print OK

ftp.quit()

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

Re: Tuples vs Lists: Semantic difference (was: Extract String From Enclosing Tuple)

2007-03-01 Thread MonkeeSage
On Mar 1, 5:02 am, [EMAIL PROTECTED] wrote:
 I don't know Ruby, but I think it allows such purposes with a freezing
 function.

In ruby all objects can be frozen (freeze is a method on Object, from
which all other objects derive), not just Arrays (Arrays == lists in
python; ruby has no built-in container equiv. to tuple). But that's
more of an implementation detail rather than anthing to do with the
structure/semantics of a certain type of object (e.g., a String can be
frozen, a Hash can be frozen, c).

Regards,
Jordan

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


Re: Reading csv files using SQL

2007-03-01 Thread Pablo was Paolo
[EMAIL PROTECTED] ha scritto:
 If you want to work directly with the files why not just use Python's csv
 module?

Now, with Java, I use the same class to read several databases and csv 
files (with SQL instructions).
I'd like to find a library for using the same approach in Python.

Thank you,
Paolo
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: New to Tkinter GUI building

2007-03-01 Thread Adonis Vargas
Adam wrote:
 On Feb 28, 9:13 pm, Adonis Vargas [EMAIL PROTECTED]
 wrote:
 Adam wrote:

 snip

 I think my main questions are:
 1. How can I get the Window to be sized the way I want it?
 2. How can I get the Scrollbars to fill the side of the text box
 instead of being small? (like .pack(fill= tk.Y)
 snip

 I have only posted the code relevant to the GUI.
 TIA
 Adam
 To size the window use Tk's geometry method

  self.top.geometry(%dx%d%+d%+d % (800, 600, 0, 0)) # (width,
 height, x, y)

 For the scrollbar to fill vertically, use the sticky grid option.

  self.scrlr1.grid(row=0, column=1, sticky=tk.N + tk.S)

 Hope this helps.

 Adonis
 
 Can't test now as its late in th UK and I'm going to bed. Looks good
 though.
 So remove the size from the frames etc and use the geometry method
 instead? Then use grid to pack them for want of a better word?
 

No, the geometry method is used to set the size of your main application 
window. This is what I understood from your first question, and please 
correct me if I am wrong. The grid method (or the pack method) are used 
to layout the widgets.

In other words, after line 8 of the code you provided you would add this 
line:

 self.top.geometry(%dx%d%+d%+d % (800, 600, 0, 0))

Hope this helps.

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


Re: Reading csv files using SQL

2007-03-01 Thread Tim Golden
Pablo was Paolo wrote:
 [EMAIL PROTECTED] ha scritto:
 If you want to work directly with the files why not just use Python's csv
 module?
 
 Now, with Java, I use the same class to read several databases and csv 
 files (with SQL instructions).
 I'd like to find a library for using the same approach in Python.

I vaguely remember that you can get an ODBC driver for CSV. If I'm
right, you could access it using one of the several Python ODBC
DBAPI modules... just a thought.

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


Re: Dialog with a process via subprocess.Popen blocks forever

2007-03-01 Thread bayer . justin
Okay, here is what I want to do:

I have a C Program that I have the source for and want to hook with
python into that. What I want to do is: run the C program as a
subprocess.
The C programm gets its commands from its stdin and sends its state
to stdout. Thus I have some kind of dialog over stdin.

So, once I start the C Program from the shell, I immediately get its
output in my terminal. If I start it from a subprocess in python and
use python's sys.stdin/sys.stdout as the subprocess' stdout/stdin I
also get it immediately.

BUT If I use PIPE for both (so I can .write() on the stdin and .read()
from the subprocess' stdout stream (better: file descriptor)) reading
from the subprocess stdout blocks forever. If I write something onto
the subprocess' stdin that causes it to somehow proceed, I can read
from its stdout.

Thus a useful dialogue is not possible.

Regards,
-Justin



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


Re: How to Read Bytes from a file

2007-03-01 Thread Bart Ogryczak
On Mar 1, 4:58 pm, [EMAIL PROTECTED] [EMAIL PROTECTED]
wrote:
 On Mar 1, 8:53 am, Bart Ogryczak [EMAIL PROTECTED] wrote:



  On Mar 1, 7:52 am, [EMAIL PROTECTED] [EMAIL PROTECTED]
  wrote:

   It seems like this would be easy but I'm drawing a blank.

   What I want to do is be able to open any file in binary mode, and read
   in one byte (8 bits) at a time and then count the number of 1 bits in
   that byte.

   I got as far as this but it is giving me strings and I'm not sure how
   to accurately get to the byte/bit level.

   f1=file('somefile','rb')
   while 1:
   abyte=f1.read(1)

  import struct
  buf = open('somefile','rb').read()
  count1 = lambda x: (x1)+(x20)+(x40)+(x80)+(x160)+(x320)+
  (x640)+(x1280)
  byteOnes = map(count1,struct.unpack('B'*len(buf),buf))

  byteOnes[n] is number is number of ones in byte n.

 This solution looks nice, but how does it work?  I'm guessing
 struct.unpack will provide me with 8 bit bytes


unpack with 'B' format gives you int value equivalent to unsigned char
(1 byte).

 (will this work on any system?)

Any system with 8-bit bytes, which would mean any system made after
1965. I'm not aware of any Python implementation for UNIVAC, so I
wouldn't worry ;-)

 How does count1 work exactly?

1,2,4,8,16,32,64,128 in binary are
1,10,100,1000,1,10,100,1000
x1 == 1 if x has first bit set to 1
x2 == 2, so (x20) == True if x has second bit set to 1
... and so on.
In the context of int, True is interpreted as 1, False as 0.

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


Python on a mac: how to build pythonw?

2007-03-01 Thread Ron Garret
I'm trying to run the Python examples distributed with XCode and they 
all give me the same error:

Traceback (most recent call last):
  File checktext.py, line 35, in module
main()
  File checktext.py, line 8, in main
pathname = EasyDialogs.AskFileForOpen(message='File to check 
end-of-lines in:')
  File /usr/local/lib/python2.5/plat-mac/EasyDialogs.py, line 650, in 
AskFileForOpen
_interact()
  File /usr/local/lib/python2.5/plat-mac/EasyDialogs.py, line 53, in 
_interact
AE.AEInteractWithUser(5000)
MacOS.Error: (-1713, 'no user interaction is allowed')

Googling reveals that the answer is to use pythonw, but there is no such 
thing installed on my system:

[EMAIL PROTECTED]:~]$ pythonw
-bash: pythonw: command not found

Apparently, pythonw didn't get built when I installed Python 2.5, and I 
can't find any instructions on how to build it.  (The installation 
instructions don't seem to mention it.)

If anyone could spare a clue I would be most grateful.

Thank,
rg
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: How to update DNS record

2007-03-01 Thread Martin P. Hellwig
Andi Clemens wrote:
 Hi,
 
 I want to update our DNS servers periodically with some IP addresses. But I
 don't know how to do this.
 I searched the Internet quite a while but I haven't found a good example how
 to do this.
 I want to change the A-Record for some IPs, this shouldn't be too hard.
 I looked at dnspython and twisted, but I really don't have a clue how to do
 this.
 Has anyone done this before?
 
 Andi

I'll looked at the perl function you mentioned and it seems to me (but 
I'm not a pearl coder) that it uses the dynamic update procedure, which 
is explained by the RFC 2136 (Bjoern mentioned that already).

So I googled for Python DNS dynamic update and in the results the 
following site looked promising, http://www.dnspython.org/.

hth

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


Re: Dialog with a process via subprocess.Popen blocks forever

2007-03-01 Thread George Trojan
[EMAIL PROTECTED] wrote:
 Okay, here is what I want to do:
 
 I have a C Program that I have the source for and want to hook with
 python into that. What I want to do is: run the C program as a
 subprocess.
 The C programm gets its commands from its stdin and sends its state
 to stdout. Thus I have some kind of dialog over stdin.
 
 So, once I start the C Program from the shell, I immediately get its
 output in my terminal. If I start it from a subprocess in python and
 use python's sys.stdin/sys.stdout as the subprocess' stdout/stdin I
 also get it immediately.
 
 BUT If I use PIPE for both (so I can .write() on the stdin and .read()
 from the subprocess' stdout stream (better: file descriptor)) reading
 from the subprocess stdout blocks forever. If I write something onto
 the subprocess' stdin that causes it to somehow proceed, I can read
 from its stdout.
 
 Thus a useful dialogue is not possible.
 
 Regards,
 -Justin
 
 
 
Have you considered using pexpect: http://pexpect.sourceforge.net/ ?

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


Re: Python on a mac: how to build pythonw?

2007-03-01 Thread Robert Kern
Ron Garret wrote:
 I'm trying to run the Python examples distributed with XCode and they 
 all give me the same error:
 
 Traceback (most recent call last):
   File checktext.py, line 35, in module
 main()
   File checktext.py, line 8, in main
 pathname = EasyDialogs.AskFileForOpen(message='File to check 
 end-of-lines in:')
   File /usr/local/lib/python2.5/plat-mac/EasyDialogs.py, line 650, in 
 AskFileForOpen
 _interact()
   File /usr/local/lib/python2.5/plat-mac/EasyDialogs.py, line 53, in 
 _interact
 AE.AEInteractWithUser(5000)
 MacOS.Error: (-1713, 'no user interaction is allowed')
 
 Googling reveals that the answer is to use pythonw, but there is no such 
 thing installed on my system:
 
 [EMAIL PROTECTED]:~]$ pythonw
 -bash: pythonw: command not found
 
 Apparently, pythonw didn't get built when I installed Python 2.5, and I 
 can't find any instructions on how to build it.  (The installation 
 instructions don't seem to mention it.)

It looks like you built Python yourself. The default build does not allow you to
communicate with the Apple GUI. You need a framework build. I highly recommend
that you simply use the binary on www.python.org instead of building from
source. If you do want to build from source, please read the file Mac/README for
instructions.

Note that in recent versions of Python, I believe that the pythonw executable is
no longer necessary as a workaround.

-- 
Robert Kern

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

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


  1   2   >