[Tutor] incomprehension in type of classes.

2005-04-22 Thread Cedric BRINER
hello,

I have 2 questions. the first one is maybe not directly related to python (it's 
about eric3), and the second oneis about what the command `type' give back for 
two instances

in my python code I have changed some classes like the following

from (I):

class CYear:
   def __init__(self, year):
  self.__year=year
  print str(self.__year) <<---(*)
  print 'dir of: '+str(dir(self))
  print 'type of: '+str(type(self))
   def __str__(self):
  return "we are in "+str(self.year)


to (IIOB):

class CYearDerived(int):
   def __init__(self, year):
  super(CYearDerived,self).__init__(year)
  self.__year=year
  print str(self.__year)<<-(*OB)
  print 'dir of: '+str( dir(self) )
  print 'type of: '+str(type(self))
   def __str__(self):
  return "we are in "+super(CYearDerived,self).__str__()



Question 1 (about eric3)
--
with the change from I to II, when I debug the code, I don't see the self 
arborescence (that you find in Window Debug Browser>>Local Variables) which 
shows you the attributes of the class that you are currently debugging in.


Quesion 2
-----
why type of (CYear(2005))


and type(CYearDerived)


doesn't give the same type ???

-- 

Cedric BRINER
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] incomprehension in type of classes.

2005-04-23 Thread Cedric BRINER
> >from (I):
> >
> >class CYear:
> >   def __init__(self, year):
> >  self.__year=year
> >  print str(self.__year) <<---(*)
> >  print 'dir of: '+str(dir(self))
> >  print 'type of: '+str(type(self))
> >   def __str__(self):
> >  return "we are in "+str(self.year)
> >
> >
> >to (IIOB):
> >
> >class CYearDerived(int):
> >   def __init__(self, year):
> >  super(CYearDerived,self).__init__(year)
> >  self.__year=year
> >  print str(self.__year)<<-(*OB)
> >  print 'dir of: '+str( dir(self) )
> >  print 'type of: '+str(type(self))
> >   def __str__(self):
> >  return "we are in "+super(CYearDerived,self).__str__()
> 
> >why type of (CYear(2005))
> >
> >
> >and type(CYearDerived)
> >
> >
> >doesn't give the same type ???
> 
> It's a difference between new-style and old-style classes. CYear is an 
> old-style class because it doesn't inherit from object. CYearDerived is a 
> new-style class because it inherits from int which is a subtype of object:
> 
>  >>> class C: pass # old-style class
>  ...
>  >>> type(C())
> 
>  >>> C().__class__
> 
> 
>  >>> class C2(object): pass # new-style class
>  ...
>  >>> type(C2())
> 
>  >>> C2().__class__
> 
> 
>  >>> int.__bases__ # int inherits from object
> (,)
> 
> I'm not sure *why* there is this difference between the two types of 
> classes, but there is...
ah... I din't know that there was two kinds of classes. So you mean that, 
now the new style object should be like: class A(object): pass

>>> class A: pass
...
>>> class B(object): pass
...
>>> a=A()
>>> b=B()

I see that dir (b) compare to dir(a) provides more stuff. So the new style of a 
class, is not only about syntax but also about properties ???

ok, I'll try to find more about this !

> By the way extending int does not work the way you have done it here. int 
> is an immutable type so you have to initialize it in the __new__() method, 
> not in __init__(). Read the details here:
> http://www.python.org/2.2/descrintro.html#__new__
this link is very usefull

thanks

Cedric BRINER
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


[Tutor] creation of a module

2005-05-13 Thread Cedric BRINER
hi,

1)
I'm trying to create my _first_ own module. I've decided to write each class 
into a separate file.

/MyModule|-bunch.py
 |-a.py
 |-b.py
 `-c.py

{a,b,c}.py contains respecetively classA,classB,classC more some unittest
and bunch.py will contains some usefull function using the class{A,B,C}

I'd like that when I import MyModule (`import MyModule')OB
 I'll see from it:
MyModule.classA
.classB
.classC
.
.
...
without seeing MyModule.{a,b,c}



2) does someone now how to do this:
x=3
with a function like:
assign('x',3)

-- 

Cedric BRINER
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] creation of a module

2005-05-13 Thread Cedric BRINER
> > hi,
> > 
> > 1)
> > I'm trying to create my _first_ own module. I've decided to write each 
> > class into a separate file.
OB> > 
> > /MyModule|-bunch.py
> >  |-a.py
> >  |-b.py
> >  `-c.py
> 
> You also need MyModule/__init__.py to signal to Python that MymModule is a 
> package. (Actually you 
> are creating a package containing several modules.)
thank you to enlight me.. :).. that I was creating a package containing many 
modules. Maybe I'm smarter than I thought. 

> > {a,b,c}.py contains respecetively classA,classB,classC more some unittest
> > and bunch.py will contains some usefull function using the class{A,B,C}
> > 
> > I'd like that when I import MyModule (`import MyModule')OB
> >  I'll see from it:
> > MyModule.classA
> > .classB
> > .classC
> > .
> > .
> > ...
> > without seeing MyModule.{a,b,c}
> 
> In MyModule/__init__.py put
> from MyModule.a import classA
> from MyModule.b import classB
> from MyModule.c import classC

I've done it. But is it normal that I'see also the filename
MyModule.classA
.classB
.classC
.a  < not expected
.b  <--'
.c  <-'
.
.
can I not import them ?

> This creates package-level attributes for the classes.
> 
> > 2) does someone now how to do this:
> > x=3
> > with a function like:
> > assign('x',3)
> 
> Can you say why you want to do this? It is possible but generally it is 
> better to use a dict:
> values = {}
> values['x'] = 3
> 
the idea was to automate the :
from MyModule.a import classA
from MyModule.b import classB
from MyModule.c import classC

with a loop

lclassname=['classA', 'classB', 'classC']
#in the future I can even automate the creation of classname list
for classname in lclassname:
  #filename='a', classname='classA'
  filename=classname.replace('class','').lower()
  #from filename import classname 
  #can't do this
  module=__import__(filename, gloabls(), locals(), [classname])
  classDefinition=getattr(module,classname)
  assign(classname,classDefinition)



In this way, when I'll do an
import FWobs
I'll get:
MyModule.classA
.classB
.classC
.
.


thanks for your help !  

-- 

Cedric BRINER
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] creation of a module

2005-05-17 Thread Cedric BRINER
Hi Alan
> Hi Cedric,
> 
> Reading through this I can't help but think you are going to
> a lot of trouble to make things very complicated for yourself
> - and for anyone else who has to work on your code. The
> Python module system is very simple and helpful in tracking
> down where the various things live. You can see by the
> prefix name which package/file provides which service.
> It appears that you are trying to hide that information?
> 
> Is there a special reason why you are trying to introduce
> this kind of obfuscation?
> 
> > > > {a,b,c}.py contains respecetively classA,classB,classC more some
> unittest
> > > > and bunch.py will contains some usefull function using the
> class{A,B,C}
> > > >
> > > > I'd like that when I import MyModule (`import MyModule')OB
> > > >  I'll see from it:
> > > > MyModule.classA
> > > > .classB
> > > > .classC
> > > > .
> > > > .
> > > > ...
> > > > without seeing MyModule.{a,b,c}
> 
> Why do you want to conceal the information about what lives inside
> the package? How will users be able to debug the package? If you
> hide a,b and c you will make it harder to do things like
I thought that it will be more convenient. But as I can read from your email: 
it seems a really __not_so_good__ idea .
> 
> >>> dir(MyModule)
> >>> dir (MyModule.a)
> 
> etc to explore the structure and find the code.
never done such kind of things.
> 
> > I've done it. But is it normal that I'see also the filename
> 
> Actually you don;t see the filename you see the sub moduile names.
> a.py becomes a module called a within your package.
> 
> > the idea was to automate the :
> > from MyModule.a import classA
> > from MyModule.b import classB
> > from MyModule.c import classC
> 
> What is the advantage - apart from a minimal amount of typing?
> You still need to maintain a list of the class/module mappings.
no the idea was to give a prefix to all my files depending on the way I'd like 
to import them. In fact, my files are named class_foo.py and the class inside 
this file is named CFoo. 

> > with a loop
> > 
> > lclassname=['classA', 'classB', 'classC']
> > #in the future I can even automate the creation of classname list
> > for classname in lclassname:
> >   #filename='a', classname='classA'
> >   filename=classname.replace('class','').lower()
> 
> Maybe you should use a dictionary as Kent suggested:
> 
> classes = {'classA': 'a',
>'classB': 'b',
>'classC : 'c'
>   }
> 
> filename = classes[classname]
> 
> >   #from filename import classname
> >   module=__import__(filename, gloabls(), locals(), [classname])
> >   classDefinition=getattr(module,classname)
> >   assign(classname,classDefinition)
> > 
> 
> But this is a lot of work to sabve a very small amount of typing and
> could slow down your program initialisation significantly.
> 
> > In this way, when I'll do an
> > import FWobs
> > I'll get:
> > MyModule.classA
> > .classB
> > .classC
> > .
> > .
> 
> It looks as if all you really want to do is avoid having the
> sub-module names visible when you import the package. As I
> explained above I think thats a fundamentally bad idea.
Good, I'll follow your recommendation

> If you do just want to export a single set of services from a
> single import it would be much simpler to just put them all
> in a single module! And then you can hide the exposed names
> using the Python naming convention of prefixing with '_'
> or ' __'.
> 
> Of course if its a very large set of services a package
> is better, but then you probably should expose the sub modules
> too. NAmespaces are one of Pythons best features - they are
> simple to use and very effective both in controlling program
> structure and in aiding debugging, its probabnly best to use
> them as intended rather than trying to force them to work
> differently.
> 
> All IMHO of course! :-)
> 
> Alan G

thanks for your time.

Ced.

-- 

Cedric BRINER
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Testing for commandline args

2005-05-17 Thread Cedric BRINER
>  Also, I hear that optparse is much better than getopt.
this is a true pleasure to work with optparse. It was included in python2.3 and 
was primarly called python-optik

Ced.
-- 

Cedric BRINER
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Looking for HOWTO's

2005-06-03 Thread Cedric BRINER
Maybe this is Off-Topic but I found recently a perfect repository of python 
tutorials at:
http://www.awaretek.com/tutorials.html

Ced.

-- 

Cedric BRINER
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


[Tutor] interactif or not

2005-06-03 Thread Cedric BRINER
hi,

How can I know if a script is launched interactively or not because I'd like to 
make a script verbose or not depending if it is executed as interactive or not.

eg.

If I invoke it in a shell.. then it can be verbose

If it is launched from a crontab.. then it is less verbose.

Ced.

-- 

Cedric BRINER
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] interactif or not

2005-06-07 Thread Cedric BRINER
> If you want to know if your program has been launched from an interactive 
> terminal or from a system background process like cron or init, then you 
> look to see if stdin is a tty. Unix is usually very careful about who has a 
> "controlling tty" and who does not. In Python, file objects have an isatty() 
> method that will return True or False.
> 
> import sys
> isinteractive = sys.stdin.isatty()
> if isinteractive:
> ...
> else:
> ...
> 

tested and it works !

Ced.

-- 

Cedric BRINER
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


[Tutor] python and database

2005-07-07 Thread Cedric BRINER
Hi,

I've read this:
http://www.python.org/workshops/1997-10/proceedings/shprentz.html
and some points look good:
 - no hand coded SQL queries
 - provide a cache
 - objects insert and updates
 - ...
but quite old too.

So the question is : what are the best practice to use python with a pgsql.

Ced.
-- 

Cedric BRINER
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] module with static global

2005-07-12 Thread Cedric BRINER
give an eyes to sqlobject.org.


-- 

Cedric BRINER
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] SQL headache with column

2005-07-20 Thread Cedric BRINER
did you heard about sqlobject ?

give a try...http://www.sqlobject.org/

Ced.

-- 

Cedric BRINER
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


[Tutor] python learning

2005-07-28 Thread Cedric BRINER
hi,
1)OB
I'm learning for almost a year and half python. this is my first language. I'm 
fine with classes, definition... But now I'm trying to understand better things 
as:
static method
class method
and the use of metaclass.

Does some one of you knows about a compilations of small snippets showing how 
things works!
an url ?

because I'm trying to work with sqlobject, and I have to tell my self that I'm 
far away of a good comprehension of it.. : (

2)
Sometimes, I do think that it will help a lot, to have such compilations. So 
that people can scan it, test them very easily. Such snippet shall have some 
use of them (case that work, case that do not work) some explanation in which 
can we can use them and so on.

For example, what I've learned recently.

module.py
class test(object):
   def __init__(self):
  self.dico={}
   def setname(self,name, value):
  self.dico[name]=value
   def dico(self):
  return printDico

testInstance=test()# *
setname=testInstance.setname   # **
dico=testInstance.dico # ***

in the python interpreter.
import module
module.setname('key1','value1')
module.dico()
del module
# so I've supposed that the garbage collector will destruct this.
from module import dico
dico()
# tintintammm and badaboum there are still there

So I imagine, that when you import this module. ``testInstance'' is created
in the object space, but it is not assigned to the namespace. So the only way to
destruct such module, will be within the module.

I found that such module act has a singleton

Ced.
-- 

Cedric BRINER
Geneva - Switzerland
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Basic class inheritance

2005-07-28 Thread Cedric BRINER
> > However, is it possible to achieve this without rewrite the whole
> > __init__ method, but just overriding parts of it?
> 
> The usual way to do this is to forward to the __init__() method of the 
> superclass for the common part. In your case you are just specializing the 
> default arguments so all you have to do is pass the args to A.__init__():
> 
> class B(A):
>   def __init__(self, blank=True, editable=True, name='foo'):
> A.__init__(self, blank, editable, name)
> 

I thought such kind of thing should be writted like:
class A(object):
 def __init__(self, blank=False, editable=True, name='foo'):
 self.blank = blank
 self.editable = editable
 self.name = name

class B(A):
  def __init__(self, blank=True, editable=True, name='foo'):
    super(B, self).__init__(blank, editable, name)


Ced.

-- 

Cedric BRINER
Geneva - Switzerland
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


[Tutor] uncomprehension on RE

2007-09-19 Thread cedric briner
Hello,

I do not understand the behaviour of this:

import re
re.search('(a)*','aaa').groups()
('a',)

I was thinking that the ``*'' will operate on the group delimited by the 
parenthesis. And so, I was expecting this result:
('a', 'a', 'a')

Is there something I'am missing ?

Ced.

-- 

Cedric BRINER
Geneva - Switzerland
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] uncomprehension on RE

2007-09-19 Thread cedric briner
Kent Johnson wrote:
> cedric briner wrote:
>> Hello,
>>
>> I do not understand the behaviour of this:
>>
>> import re
>> re.search('(a)*','aaa').groups()
>> ('a',)
>>
>> I was thinking that the ``*'' will operate on the group delimited by the 
>> parenthesis. And so, I was expecting this result:
>> ('a', 'a', 'a')
>>
>> Is there something I'am missing ?
> 
> It just doesn't work that way.
that's sad :(

> The returned group is the last string 
> matched by the group:
> In [17]: re.search('(a.)*','azabac').groups()
> Out[17]: ('ac',)
Somewhere I find re really too difficult. I was never able to write an 
re expression rightly from the first shoot ! Happily there is kodos and 
redet.

> Use re.findall() instead:
> In [18]: re.findall('a.', 'azabac')
> Out[18]: ['az', 'ab', 'ac']
that's what I found, that I've to do the job with many python steps than 
just one

> If you want overlapping matches you have to search in a loop and collect 
> them yourself, findall() gives only non-overlapping matches.


To let you know, I'm writing a script to generate bind9 configuration 
from a nis hosts table. So I was trying in a one re to catch from this:

  [  ...] [# comment]
e.g:
10.12.23.45 hostname1 alias1 alias2 alias3 # there is a nice comment
37.64.86.23 hostname2
35.25.89.34 hostname3 alias5
.. ..


so I was wishing to write an re expresion which will do in a one step 
all the job ! maybe am'I expecting too much from re :)


Ced.

-- 

Cedric BRINER
Geneva - Switzerland
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] uncomprehension on RE

2007-09-20 Thread cedric briner
Kent Johnson wrote:
> cedric briner wrote:
>> To let you know, I'm writing a script to generate bind9 configuration 
>> from a nis hosts table. So I was trying in a one re to catch from this:
>>
>>   [  ...] [# comment]
>> e.g:
>> 10.12.23.45 hostname1 alias1 alias2 alias3 # there is a nice comment
>> 37.64.86.23 hostname2
>> 35.25.89.34 hostname3 alias5
>> .. ..
>>
>>
>> so I was wishing to write an re expresion which will do in a one step 
>> all the job ! maybe am'I expecting too much from re :)
> 
> You can use an re to get the four primary fields, then use split() to 
> break up the aliases. Try this:
> 
> import re
> data = '''10.12.23.45 hostname1 alias1 alias2 alias3 # there is a nice 
> comment
> 37.64.86.23 hostname2
> 35.25.89.34 hostname3 alias5
> '''.splitlines()
> 
> for line in data:
> match = re.search(r'^(\S+)\s+(\S+)([^#]*)(#.*)?$', line)
> if match:
> ip, host, aliases, comment = match.group(1, 2, 3, 4)
> print 'ip:', ip
> print 'host:', host
> if aliases:
> aliases = aliases.strip().split()
> for alias in aliases:
> print 'alias:', alias
> if comment:
> print comment
> print
I had done that before writing my first email. I knew how to do this in 
few python steps. But some how I was expecting RE beeing able to do this 
in an one shoot.

Thanks for your precious help.

Ced.
> 
> Kent
> 


-- 

Cedric BRINER
Geneva - Switzerland
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] uncomprehension on RE

2007-09-20 Thread cedric briner
Stephen Nelson-Smith wrote:
> On 9/20/07, cedric briner <[EMAIL PROTECTED]> wrote:
> 
>> To let you know, I'm writing a script to generate bind9 configuration
>> from a nis hosts table. So I was trying in a one re to catch from this:
>>
>>   [  ...] [# comment]
>> e.g:
>> 10.12.23.45 hostname1 alias1 alias2 alias3 # there is a nice comment
>> 37.64.86.23 hostname2
>> 35.25.89.34 hostname3 alias5
> 
> I'm not sure I follow.  Could you state explicitly what the input is
> (I think the above), and what output you want?
> 
> S.
> 

the input is
10.12.23.45 hostname1 alias1 alias2 alias3 # there is a nice comment
37.64.86.23 hostname2
35.25.89.34 hostname3 alias5

the ouput is
  [  ...] [# ]



-- 

Cedric BRINER
Geneva - Switzerland
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


[Tutor] tree/node class/module

2008-01-15 Thread cedric briner
hello,

I'm wanting to do a GUI for to help people using rsync, du, tar . it 
will provide the --exclude and --include of them.

And I thought that the best way to store data relative to the hierarchy 
filesystem was to store them in a tree structure. But after browsing 
ages on the web, I didn't found any class/modules which implements 
trees, with some comments, and small examples.

Am I just blind ???

I'm looking for a tree of object which will give me stuff like:
  - sibling
  - parent
  - children
  - find
  - insert

Do you have any pointers ??

Ced.

-- 

Cedric BRINER
Geneva - Switzerland
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] tree/node class/module

2008-01-15 Thread cedric briner
usefull page

> http://www.velocityreviews.com/forums/t355467-tree-and-graph-structures-in-python.html
>  

thanks again

Ced.

-- 

Cedric BRINER
Geneva - Switzerland
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] IDEs

2005-09-20 Thread Cedric BRINER
what about eric3 ?
http://www.die-offenbachs.de/detlev/eric3.html

Ced.

-- 

Cedric BRINER
Geneva - Switzerland
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Python DB

2005-09-22 Thread Cedric BRINER
I love sqlobject.org
it this a wrapper between many sql implementation (mysql, postgresql..) and 
python.

get a look.

Ced.

-- 

Cedric BRINER
Geneva - Switzerland
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


[Tutor] cas and python

2005-12-07 Thread Cedric BRINER
hi,

does one of you knows if there is a python module which implements CAS(Central 
Authentication Service):
https://clearinghouse.ja-sig.org/wiki/display/CAS/Home

thanks in advance

Ced.
-- 

Cedric BRINER
Geneva - Switzerland
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


[Tutor] ldap client

2006-03-14 Thread Cedric BRINER
debian/sarge

hello,

I'm wanting to interogate an ldap server to fetch informations. so I'm looking 
for
a python2.4 ldap client. And the only I've found is python2.4-ldaptor. Does 
some of you
knows an good ldap client which use SSL ?

Ced.
-- 

Cedric BRINER
Geneva - Switzerland
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor