[python] problem s extendovanim

2010-06-21 Tema obsahu lesni bleble
ahoj,
extenduju (vlastne zaroven i embeduju) svuj c/c++ kod a mam otazku:
lze nejak snadno i potom co vytvorim modul (Py_InitModule(char* name,
PyMethodDef* methods)) doplnit jej o dalsi funkce (treba primo tabulku
PyMethodDef)?  Napada me modifikovat __dict__ modulu (vraceny
PyObject*) ale to se mi zrovna 2x nezda. Python API je hodne rozsahle
tak je mozne ze jen neco prehlizim.

Poradi prosim nekdo?
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s argumentami pri volani metody instancie

2009-09-05 Tema obsahu mykhal
abych tak nejak vysvetlil sve myslenkove pochody, s ohledem na
zacatecnika..

kdyz si nadefinujeme funkci, ktera vraci svoje argumenty jako tuple:

def f(*a):
return a

tedy potom f() nam vraci prazdny tuple (), f('x') nam da ('x',)

a vytvorime tridu s metodou, ktera bude nasi funkci f

class C:
def f(*a):
return a

nebo v podstate analogicky zapis:

class C:
f = f

a vytvorime instanci c:

c = C()

potom c.f() nam nedava prazdny tuple, ale vidime neco treba jako
(<__main__.C instance at 0x7f8379f164d0>,)
takto jsme se presvedcili, se se nam tam opravdu vklada jako prvni
argument objekt ze ktereho volame, to zname "self" (take vidime, ze ho
nemusime mit nikde napsane pod timto jmenem)

pokud si vytvorime z nasi funkce f instanci objektu vyse zminovanaho
Callable z MultipartPostHandler.py:

class Callable:
def __init__(self, obj):
# klasicka inicializace, vyzaduje jeden argument..
# tento objekt se nam bude volat pri volani instance teto
tridy
self.__call__ = obj
f_c = Callable(f)

pak se nam f_c bude chovat stejne jako f (akorat, ze to neni objekt
typu function)

pokud ho pouzijeme analogicky v definici tridy:

class C:
f = f_c
c = C()

potom nam uz c.f() vraci prazdny tuple - uz se nam tam nevklada
"self", chova se to, jako bychom meli
class C:
@staticmethod
def f(*a):
return a

... tak z techto duvodu se domnivam ze jde o hack, jak udelat
statickou metodu. zamozrejme nemuzu vyloucit ze jsem autora
MultipartPostHandler.py podcenil a nepochopil, a ze se jedna o nejake
genialni reseni.., ktere ma jeste jine zavazne dusledky.. :-)

 m.


On Jul 18, 2:53 am, Carry  wrote:
> Dakujem za odpoved. Myslim ze mate pravdu, aj ked tomu este nerozumiem.
> Je mozne ze som tam pridal ten self sam, ale zistil som ze mam starsiu
> verziu modulu ako je ta v odkaze (kde self v definicii nie je). Neviem
> co znamena Callable, este som sa s tym nestretol, budem musiet
> dostudovat tuto tematiku, vidim to poprve. Az teraz som si vsimol ze v
> tom module je za definiciou nejake Callable, ktore spominate. Ako
> vravim, zatial som skor uzivatel. V kazdom pripade pomohlo odstranit
> self parameter z definicie a teda asi rozbehnut ten hack, ktoremu zatial
> nerozumiem. Myslim ze ho zatial necham tak ako je, kedze funguje,
> minimalne nez to pochopim...
>
> mykhal wrote:
> > .. kdyz si znova ctu vas prispevek, tak to spis vypada, ze jste
> > zkopirovat ten hack nezapomnel, ale pridal jste metode
> > multipart_encode navic prvni argument self, coz je mozna trochu lepsi
> > reseni. v tom pripade je ale potreba smazat
> > multipart_encode = Callable(multipart_encode)
> > a vubec celou tridu Callable
>
> >  m.
>
> > On Jul 17, 6:05 pm, Carry  wrote:
> >> Zdravim,
>
> >> snazim sa pouzit vo svojom skripte modul MultipartPostHandler.py 
> >> (zhttp://odin.himinbi.org/MultipartPostHandler.py) pre posielanie http
> >> requestov serveru ale python hlasi tuto chybu:
>
> >>   File "...\MultipartPostHandler.py", line 79, in http_request
> >>      boundary, data = self.multipart_encode(v_vars, v_files)
> >> TypeError: multipart_encode() takes at least 3 arguments (2 given)
>
> >> riadok 79 je toto volanie v metode objektu:
> >>          boundary, data = self.multipart_encode(v_vars, v_files)
>
> >> ...a signatura metody je:
> >>      def multipart_encode(self, vars, files, boundary = None, buf = None):
>
> >> Self sa predava implicitne a posledne dva parametre maju tiez implicitne
> >> hodnoty, takze nechapem co mu vadi :-/
>
> >> Prosim o zhovievavost, nakolko som v Pythone newbie.
> >> Dopredu vdaka za Vase odpovede.
> >> carry

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s argumentami pri volani metody instancie

2009-09-05 Tema obsahu Carry
Dakujem za odpoved. Myslim ze mate pravdu, aj ked tomu este nerozumiem. 
Je mozne ze som tam pridal ten self sam, ale zistil som ze mam starsiu 
verziu modulu ako je ta v odkaze (kde self v definicii nie je). Neviem 
co znamena Callable, este som sa s tym nestretol, budem musiet 
dostudovat tuto tematiku, vidim to poprve. Az teraz som si vsimol ze v 
tom module je za definiciou nejake Callable, ktore spominate. Ako 
vravim, zatial som skor uzivatel. V kazdom pripade pomohlo odstranit 
self parameter z definicie a teda asi rozbehnut ten hack, ktoremu zatial 
nerozumiem. Myslim ze ho zatial necham tak ako je, kedze funguje, 
minimalne nez to pochopim...



mykhal wrote:

.. kdyz si znova ctu vas prispevek, tak to spis vypada, ze jste
zkopirovat ten hack nezapomnel, ale pridal jste metode
multipart_encode navic prvni argument self, coz je mozna trochu lepsi
reseni. v tom pripade je ale potreba smazat
multipart_encode = Callable(multipart_encode)
a vubec celou tridu Callable

 m.

On Jul 17, 6:05 pm, Carry  wrote:

Zdravim,

snazim sa pouzit vo svojom skripte modul MultipartPostHandler.py 
(zhttp://odin.himinbi.org/MultipartPostHandler.py) pre posielanie http
requestov serveru ale python hlasi tuto chybu:

  File "...\MultipartPostHandler.py", line 79, in http_request
 boundary, data = self.multipart_encode(v_vars, v_files)
TypeError: multipart_encode() takes at least 3 arguments (2 given)

riadok 79 je toto volanie v metode objektu:
 boundary, data = self.multipart_encode(v_vars, v_files)

...a signatura metody je:
 def multipart_encode(self, vars, files, boundary = None, buf = None):

Self sa predava implicitne a posledne dva parametre maju tiez implicitne
hodnoty, takze nechapem co mu vadi :-/

Prosim o zhovievavost, nakolko som v Pythone newbie.
Dopredu vdaka za Vase odpovede.
carry



___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s argumentami pri volani metody instancie

2009-09-05 Tema obsahu mykhal
.. kdyz si znova ctu vas prispevek, tak to spis vypada, ze jste
zkopirovat ten hack nezapomnel, ale pridal jste metode
multipart_encode navic prvni argument self, coz je mozna trochu lepsi
reseni. v tom pripade je ale potreba smazat
multipart_encode = Callable(multipart_encode)
a vubec celou tridu Callable

 m.

On Jul 17, 6:05 pm, Carry  wrote:
> Zdravim,
>
> snazim sa pouzit vo svojom skripte modul MultipartPostHandler.py 
> (zhttp://odin.himinbi.org/MultipartPostHandler.py) pre posielanie http
> requestov serveru ale python hlasi tuto chybu:
>
>   File "...\MultipartPostHandler.py", line 79, in http_request
>      boundary, data = self.multipart_encode(v_vars, v_files)
> TypeError: multipart_encode() takes at least 3 arguments (2 given)
>
> riadok 79 je toto volanie v metode objektu:
>          boundary, data = self.multipart_encode(v_vars, v_files)
>
> ...a signatura metody je:
>      def multipart_encode(self, vars, files, boundary = None, buf = None):
>
> Self sa predava implicitne a posledne dva parametre maju tiez implicitne
> hodnoty, takze nechapem co mu vadi :-/
>
> Prosim o zhovievavost, nakolko som v Pythone newbie.
> Dopredu vdaka za Vase odpovede.
> carry

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s argumentami pri volani metody instancie

2009-09-05 Tema obsahu mykhal
vtip je v tom, ze jste asi zkopiroval definici funkce
multipart_encode, ale zapomnel za ni uvest predefinovani pres tridu
Callable, coz je zrejme osklivy hack, jak krkolomne vyrobit statickou
metodu - tedy takovou, ktera neocekava jako prvni argument self

bezneji se to dela tak, ze nad definici funkce se pouzije dekorator
staticke metody:
@staticmethod

pripadne se pouzije starsi forma zapisu - pod definici funkce se doda:
multipart_encode = staticmethod(multipart_encode)

 m.

On Jul 17, 6:05 pm, Carry  wrote:
> Zdravim,
>
> snazim sa pouzit vo svojom skripte modul MultipartPostHandler.py 
> (zhttp://odin.himinbi.org/MultipartPostHandler.py) pre posielanie http
> requestov serveru ale python hlasi tuto chybu:
>
>   File "...\MultipartPostHandler.py", line 79, in http_request
>      boundary, data = self.multipart_encode(v_vars, v_files)
> TypeError: multipart_encode() takes at least 3 arguments (2 given)
>
> riadok 79 je toto volanie v metode objektu:
>          boundary, data = self.multipart_encode(v_vars, v_files)
>
> ...a signatura metody je:
>      def multipart_encode(self, vars, files, boundary = None, buf = None):
>
> Self sa predava implicitne a posledne dva parametre maju tiez implicitne
> hodnoty, takze nechapem co mu vadi :-/
>
> Prosim o zhovievavost, nakolko som v Pythone newbie.
> Dopredu vdaka za Vase odpovede.
> carry

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


[python] Problem s argumentami pri volani metody instancie

2009-09-05 Tema obsahu Carry

Zdravim,

snazim sa pouzit vo svojom skripte modul MultipartPostHandler.py (z 
http://odin.himinbi.org/MultipartPostHandler.py) pre posielanie http 
requestov serveru ale python hlasi tuto chybu:


 File "...\MultipartPostHandler.py", line 79, in http_request
boundary, data = self.multipart_encode(v_vars, v_files)
TypeError: multipart_encode() takes at least 3 arguments (2 given)

riadok 79 je toto volanie v metode objektu:
boundary, data = self.multipart_encode(v_vars, v_files)

...a signatura metody je:
def multipart_encode(self, vars, files, boundary = None, buf = None):

Self sa predava implicitne a posledne dva parametre maju tiez implicitne 
hodnoty, takze nechapem co mu vadi :-/


Prosim o zhovievavost, nakolko som v Pythone newbie.
Dopredu vdaka za Vase odpovede.
carry
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s Tkinterom - pohyb stvorca v Canvasi kazdu sekundu

2009-07-05 Tema obsahu Michal M.
Ďakujem, funguje to

2009/7/5 martin jirasek 

> Ahoj,
> v Tkinteru je funkce after
> okno.after(ms, funkce)
>
>

-- 

   Michal
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

[python] Problem s Tkinterom - pohyb stvorca v Canvasi kazdu sekundu

2009-07-05 Tema obsahu martin jirasek
Ahoj,
v Tkinteru je funkce after
okno.after(ms, funkce)  


<   Původní zpráva 
<  Od: Michal M. 
<  Předmět: [python] Problem s Tkinterom - pohyb stvorca v Canvasi kazdu sekundu
<  Datum: 05.7.2009 09:59:41
<  
<  Ahoj,
<  ako sa dá urobiť v Tkinteri, aby sa každú sekundu posunul štvorec v Canvasi
<  o 10px dole?
<  Ďakujem
<  
<  
< Michal
<  
<  
<  
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


[python] Problem s Tkinterom - pohyb stvorca v Canvasi kazdu sekundu

2009-07-05 Tema obsahu Michal M.
Ahoj,
ako sa dá urobiť v Tkinteri, aby sa každú sekundu posunul štvorec v Canvasi
o 10px dole?
Ďakujem


   Michal
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] problem s letnim casem pod windows

2009-01-13 Tema obsahu Pavel Kosina

Lansky napsal(a), dne 13.1.2009 17:16:

Zdravim,
 
Mam problem pri nastaveni modify time souboru na hodnotu odpovidajici 
nejakemu letnimu casu. Cas nastavuju funkci os.utime():


http://www.py.cz/JakSePtat#nema-kej-odpov-d-t

--
geon
Pavel Kosina

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


[python] problem s letnim casem pod windows

2009-01-13 Tema obsahu Lansky, Milan - Acision
Zdravim,

Mam problem pri nastaveni modify time souboru na hodnotu odpovidajici nejakemu 
letnimu casu. Cas nastavuju funkci os.utime():

>>> os.utime('2007_11_26\IMG_1944.JPG',(1178445665.0,1178445665.0))
>>> os.path.getmtime('2007_11_26\IMG_1944.JPG')
1178445665.0
>>> time.localtime(1178445665.0)
(2007, 5, 6, 12, 1, 5, 6, 126, 1)
>>> time.ctime(1178445665.0)
'Sun May 06 12:01:05 2007'



Windows (i dosacky dir) zobrazuji u uvedeneho souboru cas 11:01, tedy o hodinu 
mene:

D:\Projects\python\MediaFiles_tools\2007_11_26>dir
 Volume in drive D is Second
 Volume Serial Number is 365D-17C7

 Directory of D:\Projects\python\MediaFiles_tools\2007_11_26

13.01.2009  15:27  .
13.01.2009  15:27  ..
06.05.2007  11:01   960 371 IMG_1944.JPG
   1 File(s)960 371 bytes
   2 Dir(s)   7 037 947 904 bytes free


Pritom v Linuxu je vse OK a navic klon unixoveho programu ls pro windows taky 
zobrazuje spravnou hodnotu:

D:\Projects\python\MediaFiles_tools\2007_11_26>ls --full-time
total 940
-rwx--+ 1 lanskym mkpasswd 960371 2007-05-06 12:01:05.0 +0200 IMG_19
44.JPG


Milan




This e-mail and any attachment is for authorised use by the intended 
recipient(s) only. It may contain proprietary material, confidential 
information and/or be subject to legal privilege. It should not be copied, 
disclosed to, retained or used by, any other party. If you are not an intended 
recipient then please promptly delete this e-mail and any attachment and all 
copies and inform the sender. Thank you.

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Problem s forkujicim serverem a SIGTERM signalem

2008-12-17 Tema obsahu slush
Dobry den,

vzhledem k tomu, ze zde uz padlo reseni (ktere sam pouzivam, protoze jsem se
jiz parkrat dostal do podobnych problemu), tak jen spekulace, proc se to
chova tak, jak se chova.

Predpokladam, ze funkce volana po zachyceni systemoveho signalu zajistuje
separatni vlakno, nikoliv hlavni vlakno programu (fce cleanup se zavola
nezavisle na tom,ve kterem stavu se hlavni vlakno nachazi). Podle
dokumentace k sys.exit() tato funkce pouze vyvola vyjimku SystemExit.
Zpracovani vyjimek se ale provadi pouze v ramci aktualniho vlakna, takze
tato vyjimka "neprobubla" do jinych vlaken (hlavniho) a aplikace se logicky
neukonci (pouze se ukonci aktualni vlakno). Predani jakehosi vnitrniho
signalu (interni promenna) hlavnimu vlaknu je tedy spravny a korektni
postup.

Marek

2008/12/17 Lumír Jasiok 

> Dobry den,
>
> potreboval bych poradit s nasledujicim problemem. Mam napsany jednoduchy
> forkujici TCP/IP server. Server jako takovy funguje, child procesy se
> vytvareji i ukoncuji korektne, jediny probleme mam s ukoncenim parent
> procesu v okamziku, kdy z (napriklad shellu) zavolam signal SIGTERM. Mam
> osetreno zachyceni signalu a funkci, ktera zajisti, ze se pocka na ukonceni
> vsech child procesu a pak by se mel ukoncit i parent proces pomoci
> sys.exit(0). To se ale nestane, parent proces (server) se neukonci, ale
> skoci do nadrazene while smycky a dale ceka na spojeni a je schopen
> obsluhovat prichozi spojeni. Relevantni kod:
>
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Problem s forkujicim serverem a SIGTERM signalem

2008-12-17 Tema obsahu Radek Kanovsky
On Wed, Dec 17, 2008 at 03:01:50PM +, Jan Jakubuv wrote:

> dobry den,
> 
> muzete zkusit budto os._exit() anebo, lepe, se zkuste podivat jestli
> vas problem neni stejny jako zde:
> 
> http://mail.python.org/pipermail/python-list/2004-January/243227.html
> 
> Jak se tam muzete docist tak sys.exit() pouze vyvolava vyjimku
> SystemExit (proto neni nic videt na vystupu strace). Je mozne, ze ji
> nekde omylem odchytite..

Z vlastni zkusenosti vim, ze vetsinou je lepsi pouzit 

try:
.
except Exception:


nez pouze

try:
.
except:


protoze ta prvni varianta, propusti dve vyjimky, ktere temer nikdy
nechci zachytavat a to KeyboardInterrupt a SystemExit. Tyto dve vyjimky
maji bazovou tridu BaseException, takze je ``except Exception'' nezachyti.
Vsechny ostatni vyjimky dedi az z Exception. Trida Exception je potomkem
tridy BaseException.

Radek Kaňovský, Dat, s.r.o.
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s forkujicim serverem a SIGTERM signalem

2008-12-17 Tema obsahu David Michal
V takovych okamzicich se vzdycky ptam sam sebe. Az si ten kod prectu po
roce, cemu budu lepe rozumet?

> 
> Neni to hezke, ale je to taky cesta. Co byste preferovali Vy? Prvni
> moznost pres promennou sysexit, nebo "hrubou silu"?
> 
> Lumir

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s forkujicim serverem a SIGTERM signalem

2008-12-17 Tema obsahu Lumír Jasiok

Lumír Jasiok wrote:

Leos Pol wrote:
To me privadi na myslenku, kdyz vidim ten try, jestli nechytas 
vyjimku SystemExit.


David Michal wrote:

Ja teda neumim vysvetlit proc nejde exit ale co to zkusit takhle:

sysexit = False

def cleanup(signal, frame):
 """Clean up the server before shutdown.
 """
 # SIGTERM signal
 if signal == 15:
 print "Received SIGTERM signal, waiting for clients
 termination"
 while True:
 # In case that there isn't any active clients
 if not clients:
 break
 sysexit = True

 # Nadrazena smycka:
  while not sysexit:
 # Handle the child temination
 signal.signal(signal.SIGCHLD,reap)
 
 # Catch the SIGTERM signal

 signal.signal(signal.SIGTERM, cleanup)
 #signal.pause()
 try:
 connection,address = sock.accept()

 

-Original Message-
From: python-boun...@py.cz [mailto:python-boun...@py.cz] On Behalf Of
Lumír Jasiok
Sent: Wednesday, December 17, 2008 2:26 PM
To: Konference PyCZ
Subject: [python] Problem s forkujicim serverem a SIGTERM signalem

Dobry den,

potreboval bych poradit s nasledujicim problemem. Mam napsany
jednoduchy
forkujici TCP/IP server. Server jako takovy funguje, child procesy se
vytvareji i ukoncuji korektne, jediny probleme mam s ukoncenim parent
procesu v okamziku, kdy z (napriklad shellu) zavolam signal SIGTERM.
Mam
osetreno zachyceni signalu a funkci, ktera zajisti, ze se pocka na
ukonceni vsech child procesu a pak by se mel ukoncit i parent proces
pomoci sys.exit(0). To se ale nestane, parent proces (server) se
neukonci, ale skoci do nadrazene while smycky a dale ceka na spojeni a
je schopen obsluhovat prichozi spojeni. Relevantni kod:




___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

  


Ne, SystemExit nezachytavam, jeste jednou jsem zkontroloval kod, tim 
to nebude. Jen ze zvedavosti zkusim prijit na to, co to zpusobuje. 
Pokud na to prijdu, zkusim tady dat vedet, kdyby nekdo narazil na 
stejny problem.


Lumir

Takze nakonec to jde vyresit i pridanim zachytavani SystemExit a 
naslednym (brutalnim SIGKILL signalem) takto:


def cleanup(signal,frame):
   """Clean up the server before its shutdown.
   """
   # SIGTERM signal
   if signal == 15:
   print "Received SIGTERM signal, waiting for clients termination"
   while True:
   # In case that there isn't any live clients
   if not clients:
   break
   try:
   sys.exit(0)
   except SystemExit:
   os.kill(os.getpid(),9)
   except:
   traceback.print_exc

Neni to hezke, ale je to taky cesta. Co byste preferovali Vy? Prvni 
moznost pres promennou sysexit, nebo "hrubou silu"?


Lumir

--
Lumír Jasiok
VSB-TU Ostrava - Computer centre
Tel: +420 59 732 3189
E-mail: lumir.jas...@vsb.cz
http://www.vsb.cz



___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s forkujicim serverem a SIGTERM signalem

2008-12-17 Tema obsahu Lumír Jasiok

Leos Pol wrote:
To me privadi na myslenku, kdyz vidim ten try, jestli nechytas vyjimku 
SystemExit.


David Michal wrote:

Ja teda neumim vysvetlit proc nejde exit ale co to zkusit takhle:

sysexit = False

def cleanup(signal, frame):
 """Clean up the server before shutdown.
 """
 # SIGTERM signal
 if signal == 15:
 print "Received SIGTERM signal, waiting for clients
 termination"
 while True:
 # In case that there isn't any active clients
 if not clients:
 break
 sysexit = True

 # Nadrazena smycka:
  while not sysexit:
 # Handle the child temination
 signal.signal(signal.SIGCHLD,reap)
 
 # Catch the SIGTERM signal

 signal.signal(signal.SIGTERM, cleanup)
 #signal.pause()
 try:
 connection,address = sock.accept()

 

-Original Message-
From: python-boun...@py.cz [mailto:python-boun...@py.cz] On Behalf Of
Lumír Jasiok
Sent: Wednesday, December 17, 2008 2:26 PM
To: Konference PyCZ
Subject: [python] Problem s forkujicim serverem a SIGTERM signalem

Dobry den,

potreboval bych poradit s nasledujicim problemem. Mam napsany
jednoduchy
forkujici TCP/IP server. Server jako takovy funguje, child procesy se
vytvareji i ukoncuji korektne, jediny probleme mam s ukoncenim parent
procesu v okamziku, kdy z (napriklad shellu) zavolam signal SIGTERM.
Mam
osetreno zachyceni signalu a funkci, ktera zajisti, ze se pocka na
ukonceni vsech child procesu a pak by se mel ukoncit i parent proces
pomoci sys.exit(0). To se ale nestane, parent proces (server) se
neukonci, ale skoci do nadrazene while smycky a dale ceka na spojeni a
je schopen obsluhovat prichozi spojeni. Relevantni kod:




___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

  


Ne, SystemExit nezachytavam, jeste jednou jsem zkontroloval kod, tim to 
nebude. Jen ze zvedavosti zkusim prijit na to, co to zpusobuje. Pokud na 
to prijdu, zkusim tady dat vedet, kdyby nekdo narazil na stejny problem.


Lumir

--
Lumír Jasiok
VSB-TU Ostrava - Computer centre
Tel: +420 59 732 3189
E-mail: lumir.jas...@vsb.cz
http://www.vsb.cz



___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s forkujicim serverem a SIGTERM signalem

2008-12-17 Tema obsahu Jan Jakubuv
dobry den,

muzete zkusit budto os._exit() anebo, lepe, se zkuste podivat jestli
vas problem neni stejny jako zde:

http://mail.python.org/pipermail/python-list/2004-January/243227.html

Jak se tam muzete docist tak sys.exit() pouze vyvolava vyjimku
SystemExit (proto neni nic videt na vystupu strace). Je mozne, ze ji
nekde omylem odchytite..

honza.


2008/12/17 Lumír Jasiok :
> Dobry den,
>
> potreboval bych poradit s nasledujicim problemem. Mam napsany jednoduchy
> forkujici TCP/IP server. Server jako takovy funguje, child procesy se
> vytvareji i ukoncuji korektne, jediny probleme mam s ukoncenim parent
> procesu v okamziku, kdy z (napriklad shellu) zavolam signal SIGTERM. Mam
> osetreno zachyceni signalu a funkci, ktera zajisti, ze se pocka na ukonceni
> vsech child procesu a pak by se mel ukoncit i parent proces pomoci
> sys.exit(0). To se ale nestane, parent proces (server) se neukonci, ale
> skoci do nadrazene while smycky a dale ceka na spojeni a je schopen
> obsluhovat prichozi spojeni. Relevantni kod:
>
> def cleanup(signal,frame):
>   """Clean up the server before shutdown.
>   """
>   # SIGTERM signal
>   if signal == 15:
>   print "Received SIGTERM signal, waiting for clients termination"
>   while True:
>   # In case that there isn't any active clients
>   if not clients:
>   break
>   print "toto se vypise"
>   sys.exit(0)
>   print "toto se nevypise"
>
> # Nadrazena smycka:
> while True:
>   # Handle the child temination
>   signal.signal(signal.SIGCHLD,reap)
>
>   # Catch the SIGTERM signal
>   signal.signal(signal.SIGTERM, cleanup)
>   #signal.pause()
>   try:
>   connection,address = sock.accept()
> ...
>
> sys.exit(0) se proste neprovede, preskoci se a skoci do nadrazene smycky.
> Kdyz zkusim pouzit strace, vidim, ze se provedou print prikazy, ale
> sys.exit(0) uz ne.
>
> Zkousel jsem i terminaci parent procesu pomoci:
>
> os.kill (pid, signal.SIGKILL), kde pid je PID parent procesu, ale bez
> uspechu.
>
> Nevite co muze byt pricinou problemu?
>
> Lumir
>
> --
> Lumír Jasiok
> VSB-TU Ostrava - Computer centre
> E-mail: lumir.jas...@vsb.cz
> http://www.vsb.cz
>
>
>
> ___
> Python mailing list
> Python@py.cz
> http://www.py.cz/mailman/listinfo/python
>
>
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s forkujicim serverem a SIGTERM signalem

2008-12-17 Tema obsahu Lumír Jasiok

David Michal wrote:

Ja teda neumim vysvetlit proc nejde exit ale co to zkusit takhle:

sysexit = False

def cleanup(signal, frame):
 """Clean up the server before shutdown.
 """
 # SIGTERM signal
 if signal == 15:
 print "Received SIGTERM signal, waiting for clients
 termination"
 while True:
 # In case that there isn't any active clients
 if not clients:
 break
 sysexit = True

 # Nadrazena smycka:
  while not sysexit:
 # Handle the child temination
 signal.signal(signal.SIGCHLD,reap)
 
 # Catch the SIGTERM signal

 signal.signal(signal.SIGTERM, cleanup)
 #signal.pause()
 try:
 connection,address = sock.accept()

  

Genialne jednoduche, jednoduse genialni. Funguje.

Diky moc.

Lumir

--
Lumír Jasiok
VSB-TU Ostrava - Computer centre
Tel: +420 59 732 3189
E-mail: lumir.jas...@vsb.cz
http://www.vsb.cz



___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s forkujicim serverem a SIGTERM signalem

2008-12-17 Tema obsahu Leos Pol
To me privadi na myslenku, kdyz vidim ten try, jestli nechytas vyjimku 
SystemExit.


David Michal wrote:

Ja teda neumim vysvetlit proc nejde exit ale co to zkusit takhle:

sysexit = False

def cleanup(signal, frame):
 """Clean up the server before shutdown.
 """
 # SIGTERM signal
 if signal == 15:
 print "Received SIGTERM signal, waiting for clients
 termination"
 while True:
 # In case that there isn't any active clients
 if not clients:
 break
 sysexit = True

 # Nadrazena smycka:
  while not sysexit:
 # Handle the child temination
 signal.signal(signal.SIGCHLD,reap)
 
 # Catch the SIGTERM signal

 signal.signal(signal.SIGTERM, cleanup)
 #signal.pause()
 try:
 connection,address = sock.accept()

  

-Original Message-
From: python-boun...@py.cz [mailto:python-boun...@py.cz] On Behalf Of
Lumír Jasiok
Sent: Wednesday, December 17, 2008 2:26 PM
To: Konference PyCZ
Subject: [python] Problem s forkujicim serverem a SIGTERM signalem

Dobry den,

potreboval bych poradit s nasledujicim problemem. Mam napsany
jednoduchy
forkujici TCP/IP server. Server jako takovy funguje, child procesy se
vytvareji i ukoncuji korektne, jediny probleme mam s ukoncenim parent
procesu v okamziku, kdy z (napriklad shellu) zavolam signal SIGTERM.
Mam
osetreno zachyceni signalu a funkci, ktera zajisti, ze se pocka na
ukonceni vsech child procesu a pak by se mel ukoncit i parent proces
pomoci sys.exit(0). To se ale nestane, parent proces (server) se
neukonci, ale skoci do nadrazene while smycky a dale ceka na spojeni a
je schopen obsluhovat prichozi spojeni. Relevantni kod:




___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

  


--


*Leoš Pol*
senior programátor Lide.cz

*Seznam.cz a.s.*
Business Park, budova B
Londýnské náměstí 2
639 00 Brno

tel:+420 543 533 073
gsm:+420 777 901 087
email:  leos@firma.seznam.cz <mailto:leos@firma.seznam.cz>
www:http://www.seznam.cz

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Problem s forkujicim serverem a SIGTERM signalem

2008-12-17 Tema obsahu David Michal
Ja teda neumim vysvetlit proc nejde exit ale co to zkusit takhle:

sysexit = False

def cleanup(signal, frame):
 """Clean up the server before shutdown.
 """
 # SIGTERM signal
 if signal == 15:
 print "Received SIGTERM signal, waiting for clients
 termination"
 while True:
 # In case that there isn't any active clients
 if not clients:
 break
 sysexit = True

 # Nadrazena smycka:
  while not sysexit:
 # Handle the child temination
 signal.signal(signal.SIGCHLD,reap)
 
 # Catch the SIGTERM signal
 signal.signal(signal.SIGTERM, cleanup)
 #signal.pause()
 try:
 connection,address = sock.accept()

> -Original Message-
> From: python-boun...@py.cz [mailto:python-boun...@py.cz] On Behalf Of
> Lumír Jasiok
> Sent: Wednesday, December 17, 2008 2:26 PM
> To: Konference PyCZ
> Subject: [python] Problem s forkujicim serverem a SIGTERM signalem
> 
> Dobry den,
> 
> potreboval bych poradit s nasledujicim problemem. Mam napsany
> jednoduchy
> forkujici TCP/IP server. Server jako takovy funguje, child procesy se
> vytvareji i ukoncuji korektne, jediny probleme mam s ukoncenim parent
> procesu v okamziku, kdy z (napriklad shellu) zavolam signal SIGTERM.
> Mam
> osetreno zachyceni signalu a funkci, ktera zajisti, ze se pocka na
> ukonceni vsech child procesu a pak by se mel ukoncit i parent proces
> pomoci sys.exit(0). To se ale nestane, parent proces (server) se
> neukonci, ale skoci do nadrazene while smycky a dale ceka na spojeni a
> je schopen obsluhovat prichozi spojeni. Relevantni kod:
> 

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


[python] Problem s forkujicim serverem a SIGTERM signalem

2008-12-17 Tema obsahu Lumír Jasiok

Dobry den,

potreboval bych poradit s nasledujicim problemem. Mam napsany jednoduchy 
forkujici TCP/IP server. Server jako takovy funguje, child procesy se 
vytvareji i ukoncuji korektne, jediny probleme mam s ukoncenim parent 
procesu v okamziku, kdy z (napriklad shellu) zavolam signal SIGTERM. Mam 
osetreno zachyceni signalu a funkci, ktera zajisti, ze se pocka na 
ukonceni vsech child procesu a pak by se mel ukoncit i parent proces 
pomoci sys.exit(0). To se ale nestane, parent proces (server) se 
neukonci, ale skoci do nadrazene while smycky a dale ceka na spojeni a 
je schopen obsluhovat prichozi spojeni. Relevantni kod:


def cleanup(signal,frame):
   """Clean up the server before shutdown.
   """
   # SIGTERM signal
   if signal == 15:
   print "Received SIGTERM signal, waiting for clients termination"
   while True:
   # In case that there isn't any active clients
   if not clients:
   break
   print "toto se vypise"
   sys.exit(0)
   print "toto se nevypise"

# Nadrazena smycka:
while True:
   # Handle the child temination
   signal.signal(signal.SIGCHLD,reap)

   # Catch the SIGTERM signal
   signal.signal(signal.SIGTERM, cleanup)
   #signal.pause()
   try:
   connection,address = sock.accept()
...

sys.exit(0) se proste neprovede, preskoci se a skoci do nadrazene 
smycky. Kdyz zkusim pouzit strace, vidim, ze se provedou print prikazy, 
ale sys.exit(0) uz ne.


Zkousel jsem i terminaci parent procesu pomoci:

os.kill (pid, signal.SIGKILL), kde pid je PID parent procesu, ale bez 
uspechu.


Nevite co muze byt pricinou problemu?

Lumir

--
Lumír Jasiok
VSB-TU Ostrava - Computer centre
E-mail: lumir.jas...@vsb.cz
http://www.vsb.cz



___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s metodou start_tls_s() v module python-ldap 2.3.5

2008-10-06 Tema obsahu RMiklos
Diky za odpoved. Bugreport som im dnes poslal.






Re: [python] Problem s metodou start_tls_s() v module python-ldap 2.3.5

Jan Kundrát 
to:
Konference PyCZ
06.10.2008 11:55


Sent by:
[EMAIL PROTECTED]
Please respond to Konference PyCZ






[EMAIL PROTECTED] wrote:
> CONNECT_ERROR: {'info': 'error:14090086:SSL 
> routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed', 'desc': 

> 'Connect error'}

Nemas spravne nstavene certifikaty/CRL; obvykla chyba jsou chybejici 
certifikaty CA, kterou pouzivas, a nebo self-signed certifikat na serveru.

Kterak to spravit budes mit popsano v dokumentaci knihovny OpenSSL. 
Pokud nahodou python-ldap neexportuje potrebne metody pro spravu ruznych 
SSL nastaveni, mas holt smulu, posli jim bugreport.

Hezky den,
-jkt

-- 
cd /local/pub && more beer > /dev/mouth

[attachment "signature.asc" deleted by Roman Miklos/RZB/PSS] 
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Problem s metodou start_tls_s() v module python-ldap 2.3.5

2008-10-06 Tema obsahu Jan Kundrát

[EMAIL PROTECTED] wrote:
CONNECT_ERROR: {'info': 'error:14090086:SSL 
routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed', 'desc': 
'Connect error'}


Nemas spravne nstavene certifikaty/CRL; obvykla chyba jsou chybejici 
certifikaty CA, kterou pouzivas, a nebo self-signed certifikat na serveru.


Kterak to spravit budes mit popsano v dokumentaci knihovny OpenSSL. 
Pokud nahodou python-ldap neexportuje potrebne metody pro spravu ruznych 
SSL nastaveni, mas holt smulu, posli jim bugreport.


Hezky den,
-jkt

--
cd /local/pub && more beer > /dev/mouth



signature.asc
Description: OpenPGP digital signature
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

[python] Problem s metodou start_tls_s() v module python-ldap 2.3.5

2008-10-04 Tema obsahu RMiklos
Nainstaloval som si python-ldap-2.3.5.win32-py2.5.msi na Python 2.5Ked sa skusim pripojit k free LDAP-serveru (http://freeldap.org/) dostanem chybu: >>> import ldap>>> conn = ldap.initialize("ldap://ds1.us.freeldap.org:389")>>> conn.start_tls_s()Traceback (most recent call last):  File "", line 1, in   File "C:\Python25\lib\site-packages\ldap\ldapobject.py", line 532, in start_tls_s    return self._ldap_call(self._l.start_tls_s)  File "C:\Python25\lib\site-packages\ldap\ldapobject.py", line 96, in _ldap_call    result = func(*args,**kwargs)CONNECT_ERROR: {'info': 'error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed', 'desc': 'Connect error'}ak nepouzijem conn.start_tls_s() tak pripojenie sa podari a mozem pracovat s datami z LDAPu.Nechcem ale data prenasat v klartexte a metoda start_tls_s() by prave mala zakryptovat spojenie, preto ma znepokojuje ze nefunguje. Chyba zrejme nebude v LDAP-serveri, pretoze podobny skript v perle s balikom Net::LDAP a metodou start_tls() mi funguje bez problemov. Dakujem za kazdy tip na odstranenie problemu. ___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Problem s unicode.

2008-04-14 Tema obsahu superman

> >No to trochu prehanis, sjednoceny byly graficky odlisne znaky se shodnym
> >vyznamem.
Aha, a proč jsou v Unicode zvlášť třeba indické číslice, zvlášť arabské, 
proč jsou tam některé číslice superscriptem, atd...? Proč když by 
stačilo tam tu jedničku mít jednou a ne v x možných podobách? Protože to 
co píšete, není pravda. Pravda je to co říkám, že sice Unicode 
consortium mlží tak, až se za ním práší - ve skutečnosti najdete v 
Unicode mnoho příkladů, kde je znak v jednom významu ve více podobách.

Problém je prostě v "nemístném šetření bajtíků" - Unicode consortium 
začínalo na 16 bitech - a tak se jim tam všechny asijské znaky do tohoto 
rozsahu 65535 znaků prostě nevešly. Dnes je sice na 21 bitech, ale se 
znaky nad 16 bitovou hranicí má obrovská spousta systémů a 
programovacích jazyků problém, takže je nutné vše základní mít v 16 
bitech. Prostě špatná práce a odhad Unicode consortia.

A protože samozřejmě nechtěli nakrknout asijce - a asi víte, že nemohou 
říct naplno - "Víte my Unicode consortium jsme to špatně vymysleli celý 
ten systém Unicode, a někdo to holt odskákat musí. A rozhodli jsme se, 
že to odnesete Vy - a že jsme nuceni Vám Vaší abecedu zprznit, protože 
prostě na Vás dlabeme, nám se ta Vaše abeceda už do prostoru znaků 
nevejde a jiné státy by řvaly víc - oni nás totiž sponzorují víte? A 
chápete, že love, prachy, to je to co dneska hýbe světem, takže se 
přizpůsobte a polibte nám zadek". Ačkoli předchozí věty by na 100% 
odpovídaly pravdě, zajisté chápete, že na mezinárodní úrovni se takto 
nejedná, a je nutné vymyslet kladný důvod, kterým se to zastře a 
vysvětlí. A ten důvod je, že "Unicode sjednocuje znaky se stejným 
významem" - ale že je to lež jako věž Vás přesvědčí i letmý průchod 
Unicode tabulkami znaků.

 >Navic maji mnozi z CJK pocit, ze na ne byla unifikace v unicode 
uvalena systemem "o nas bez nas", ackoliv byli jejich zastupci v unicode 
kosorciu aktivni od zacatku. Japonsky zastupce (zamestnanec tusim DECu, 
tedy americke fimy a vyrazneho zastance unifikace) hlasoval pro 
unifikaci, korejci a cinani proti. Cela politicka stranka tehle 
zalezitosti je neprehledna a alespon trochu masla na hlave maji vsichni.

No a čem píšu? Prostě Unicode to špatně vymyslelo, a někdo prostě to 
musel odnést, protože na všechny abecedy není v 16bitovém Unicode 
systému místo. A protože všichni, firmy i consortia se řídí prachama - 
tak to odnesl ten, kdo byl mimo - tedy Asiaté. Viz výše.

Obecná rada: Musíte když něco čtete, číst mezi řádky a nenechat si 
nabulíkovat každou blbost.

Miloslav Ponkrác


___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s unicode.

2008-04-14 Tema obsahu Vaclav Hula
Jan Vrana napsal(a):
>> "šetření bajtíků stylem po nás potopa", jaká způsobilo problém třeba > 
>> roku 2000, a tatáž pitomost zamotala Unicode natolik, že ten bordel > 
>> je teď dost veliký. Takže pro asijské jazyky se převádějí znaky do
>> Unicode přes proces zvaný "han unification"
> [Honza Vrana]
> Pokud tomu dobre rozumim tak neslo ani o setreni bajtiku tech by snad 
> pri 31 bitech na znak mohlo byt dost ale o to ze nejaky "chytrak" v 
> ramci uklidu sjednotil znaky ktere se mu jevily podobne jako kdyby nam 
> nekdo sjednotil treba nase i s teckou a carkou.

No to trochu prehanis, sjednoceny byly graficky odlisne znaky se shodnym
vyznamem. Lepsi priklad mi prijde jako kdyby Nemci psali porad
svabachem, ale v unicode nebyl odlisny znak pro "A" a "svabachove A" -
protoze je to hlaska "a" a rozliseni se da delat fontem. Plus teda
spousta mene pouzivanych znaku v unicode chybi, zejmena starsi
nabozenske a poeticke texy maji v unicode smulu - ale i nektere stale
(byt mene) pouzivane znaky.

Navic maji mnozi z CJK pocit, ze na ne byla unifikace v unicode uvalena
systemem "o nas bez nas", ackoliv byli jejich zastupci v unicode
kosorciu aktivni od zacatku. Japonsky zastupce (zamestnanec tusim DECu,
tedy americke fimy a vyrazneho zastance unifikace) hlasoval pro
unifikaci, korejci a cinani proti. Cela politicka stranka tehle
zalezitosti je neprehledna a alespon trochu masla na hlave maji vsichni.

S pozdravem,
Ax
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s unicode.

2008-04-10 Tema obsahu superman
 >Pri cteni mne napada otazka jak tedy psat programy?

Prostě Unicode nevyřešilo co mělo řešit. Ale alespoň udělalo jednu věc, 
že osekalo počet nutných znakových sad, které potřebujete k tomu plně 
vyjádřit pro všechny znaky - když jako jednu vezmete Unicode, pak pár 
asijských znakových sad a plus pár drobotin, tak de facto s pěti až 
deseti znakovými sadami vystačíte.

Já osobně to řeším tak, že Unicode znaky mám 31 bitového a do horního 
prostoru si namapuji ty znaky, které se nevejdou do Unicode - ale 
předpokládá to svoje Unicode řešení. Pak mi můj "extended Unicode" 
string opravdu přenese vše.

Jinak UTF-8 technicky dokáže zobrazit myslím až 36 bitové znaky (pouze 
normou je to omezené dříve na 32, později na 21 bitů, ale to je jen 
papírové omezení, nikoli omezení UTF-8 algoritmu), takže UTF-8 uloží i 
mojí "extended Unicode" sadu a ještě má velké rezervy.

Miloslav Ponkrác

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


[python] Problem s unicode.

2008-04-10 Tema obsahu Stepan
diky za informace.

 

Vim, ze ve vetsine pripadu s timto resenim uspeji. Ano, s asiatama a
Klingonova budou mozna

mensi problemy :)

 

S

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Problem s unicode.

2008-04-10 Tema obsahu superman

> >Pokud tomu dobre rozumim tak neslo ani o setreni bajtiku tech by snad
> >pri 31 bitech na znak mohlo byt dost ale o to ze nejaky "chytrak" v 
>   
Bacha! Unicode je definováno na 21 bitech a více ani mít nemůže! Protože 
pak by nefungovalo kódování UTF-16, které je de facto naprosto základní 
pro Windows, Javu, a další. A Unicode consortium nemůže jít proti 
gigantům IT průmysl, protože Ti by začali Unicode consortium ignorovat a 
to by se mohlo jít klouzat. Unicode začalo na 16 bitech a vytroubilo do 
světa, že Unicode rovná se 16 bitů a tím dalo consortium základ 
budoucímu bordelu, ačkoli každý logicky přemýšlející člověk asi tušil, 
že to jednou bude průser. Následkem toho už jen pijeme kalich hořkosti, 
který z této blbosti vzniknul - a omezení na 21 bitů u Unicode je tím 
nejmenším.

Miloslav Ponkrác
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s unicode.

2008-04-10 Tema obsahu Jan Vrana
> "šetření bajtíků stylem po nás potopa", jaká způsobilo problém třeba > 
> roku 2000, a tatáž pitomost zamotala Unicode natolik, že ten bordel > 
> je teď dost veliký. Takže pro asijské jazyky se převádějí znaky do
> Unicode přes proces zvaný "han unification"
[Honza Vrana]
Pokud tomu dobre rozumim tak neslo ani o setreni bajtiku tech by snad 
pri 31 bitech na znak mohlo byt dost ale o to ze nejaky "chytrak" v 
ramci uklidu sjednotil znaky ktere se mu jevily podobne jako kdyby nam 
nekdo sjednotil treba nase i s teckou a carkou.

ale moc anglicky neumim takze pro zajemce:
http://en.wikipedia.org/wiki/Han_unification

H. 

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s unicode.

2008-04-10 Tema obsahu David Michal
> V našich končinách to asi platí, ale ono není pravda, že Unicode dokáže
> reprezentovat všechny znaky používaných znakových sad. Zvláště v Asii
> velmi protestují proti používání Unicode - protože není s to
> reprezentovat znaky jejich národních znakových sad. Proto třeba autor
> Ruby (Japonec) nikdy nezavedl používání Unicode jakožto základní sady
> pro řetězce v Ruby. Problém je největší pitomost v sw inženýrství zvaná
> "šetření bajtíků stylem po nás potopa", jaká způsobilo problém třeba
> roku 2000, a tatáž pitomost zamotala Unicode natolik, že ten bordel je
> teď dost veliký. Takže pro asijské jazyky se převádějí znaky do Unicode
> přes proces zvaný "han unification", což je de facto "ztrátová
> komprese", která několik různých odlišných znaků mapuje na stejný jeden
> Unicode znak - ztrácí se tím tedy informace a není divu, že Asiaté si o
> Unicode myslí jen to nejhorší, a rozhodně Unicode nehodlají používat.
> 
> Takže v našich končinách asi nenarazíte, ale v případě mezinárodního
> programu byste se mohl rychle dostat do toho, že byste zásadně
> přeprogramovával, a už by Vás to nikdy v budoucnu nenapadlo takhle
> dělat.

Pri cteni mne napada otazka jak tedy psat programy?

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s unicode.

2008-04-10 Tema obsahu superman

> >Unicode je ideal pro prezentaci vsech znaku, ktery se musi nakonec prekodovat
> >do bytoveho retezce (taky nazyvan plainstring, bytestring...).
>
>   
V našich končinách to asi platí, ale ono není pravda, že Unicode dokáže 
reprezentovat všechny znaky používaných znakových sad. Zvláště v Asii 
velmi protestují proti používání Unicode - protože není s to 
reprezentovat znaky jejich národních znakových sad. Proto třeba autor 
Ruby (Japonec) nikdy nezavedl používání Unicode jakožto základní sady 
pro řetězce v Ruby. Problém je největší pitomost v sw inženýrství zvaná 
"šetření bajtíků stylem po nás potopa", jaká způsobilo problém třeba 
roku 2000, a tatáž pitomost zamotala Unicode natolik, že ten bordel je 
teď dost veliký. Takže pro asijské jazyky se převádějí znaky do Unicode 
přes proces zvaný "han unification", což je de facto "ztrátová 
komprese", která několik různých odlišných znaků mapuje na stejný jeden 
Unicode znak - ztrácí se tím tedy informace a není divu, že Asiaté si o 
Unicode myslí jen to nejhorší, a rozhodně Unicode nehodlají používat.

Takže v našich končinách asi nenarazíte, ale v případě mezinárodního 
programu byste se mohl rychle dostat do toho, že byste zásadně 
přeprogramovával, a už by Vás to nikdy v budoucnu nenapadlo takhle dělat.

Miloslav Ponkrác
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


[python] Problem s unicode.

2008-04-10 Tema obsahu Stepan Wagner
Ahoj,

resim Unicode tez, me postrehy:
Unicode je ideal pro prezentaci vsech znaku, ktery se musi nakonec prekodovat
do bytoveho retezce (taky nazyvan plainstring, bytestring...).

vstup ---> decoding (e.g. ANSI) ---> Unicode ---> encoding (e.g. UTF8)
---> vystup

Plati:

unicodestring = u"Žlutý kůň."
utf8string = unicodestring.encode ("utf-8")


Jak dostat zvolene kodovani do vystupu, ktery pouziva napr. UTF-8:

import codecs, sys
sys.stdout = codecs.lookup ('utf-8')[1](sys.stdout)

Ty si ve svem prikladu prevedl plainstring na Unicode pomoci UTF-8,
ale pak je treba
Unicode prekodovat znovu na plainstring podle zvoleneho kodovani.

Stepan
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s unicode.

2008-04-08 Tema obsahu Stefan Oravec
stavil by som sa ze 852 je default pre ceske wokna, kazdopadne sa da 
zmenit na cokolvek. utfg. pre utf8 je to 65001


S.


Pavel Kosina wrote:

David Michal napsal(a):
  

No pockej ale presne tohle tam mam:


def out(text):
print unicode(str(text) + '\n', 'utf8')

tzn. Ze bych mel nejak zjistit kodovanu terminal jeste pred printem. To udelam 
jak ?
  



Být tebou, ještě jednou prověřím, že je soubor, vlastně oba dva soubory 
(program i soubor s texty) skutečně v kodovani utf8. Tam se vznikají 
chyby nejvíce.


Jinak terminály pod Linuxem bývají dnes utf-8, pod Windows cp852, takže 
pro windows platí:


# -*- coding: utf-8 -*-
text="Žlutý kůň"

textUnicode= unicode (str(text), "utf-8")  # převod na unicode
print textUnicode  # tiskne správně

textTerminal = textUnicode.encode("cp852")  # převod na kodovaní windows 
konsole

print textTerminal  # tiskne správně

  


___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Problem s unicode.

2008-04-07 Tema obsahu Michal Molhanec
Pavel Kosina napsal(a):
> David Michal napsal(a):
>> No pockej ale presne tohle tam mam:
>>
>>
>> def out(text):
>> print unicode(str(text) + '\n', 'utf8')
>>
>> tzn. Ze bych mel nejak zjistit kodovanu terminal jeste pred printem. To 
>> udelam jak ?
>>   
> 
> Být tebou, ještě jednou prověřím, že je soubor, vlastně oba dva soubory 
> (program i soubor s texty) skutečně v kodovani utf8. Tam se vznikají 
> chyby nejvíce.
> 
> Jinak terminály pod Linuxem bývají dnes utf-8, pod Windows cp852, takže 
> pro windows platí:
> 
> # -*- coding: utf-8 -*-
> text="Žlutý kůň"
> 
> textUnicode= unicode (str(text), "utf-8")  # převod na unicode
> print textUnicode  # tiskne správně
> 
> textTerminal = textUnicode.encode("cp852")  # převod na kodovaní windows 
> konsole
> print textTerminal  # tiskne správně
> 

ja bych volil
import sys
textTerminal = textUnicode.encode(sys.stdout.encoding, 'ignore')

to by mohlo fungovat vsude
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s unicode.

2008-04-07 Tema obsahu superman
 >Jinak terminály pod Linuxem bývají dnes utf-8, pod Windows cp852, takže

Bohužel pro Windows není to pravidlo - možná v češtině ve Windows ano. 
Takže kód počítající s tímto kódováním může taky špatně dopadnout.

Jinak do Windows konzole se dá psát jako ANSI řetězce, tak i Unicode 
řetězce, tedy Windows konzole umí přímé zobrazení Unicode znaků  - 
alespoň v C++ to není problém, ale obávám se, že Python to nedokáže 
využít. Ale jak říkám, nezkoumal jsem to, ale pokud Python dává do 
Linuxové konzole Unicode a Windows se snaží ohnout na nějakou 
osmibitovou znakovou sadu (což Win API stejně jenom v konzoli emuluje a 
převede si to nejdřív vnitřně do Unicode), tak to není příliš dobrá 
vizitka pro schopnosti Pythonu.

Miloslav Ponkrác


___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s unicode.

2008-04-07 Tema obsahu Pavel Kosina
David Michal napsal(a):
> No pockej ale presne tohle tam mam:
>
>
> def out(text):
> print unicode(str(text) + '\n', 'utf8')
>
> tzn. Ze bych mel nejak zjistit kodovanu terminal jeste pred printem. To 
> udelam jak ?
>   

Být tebou, ještě jednou prověřím, že je soubor, vlastně oba dva soubory 
(program i soubor s texty) skutečně v kodovani utf8. Tam se vznikají 
chyby nejvíce.

Jinak terminály pod Linuxem bývají dnes utf-8, pod Windows cp852, takže 
pro windows platí:

# -*- coding: utf-8 -*-
text="Žlutý kůň"

textUnicode= unicode (str(text), "utf-8")  # převod na unicode
print textUnicode  # tiskne správně

textTerminal = textUnicode.encode("cp852")  # převod na kodovaní windows 
konsole
print textTerminal  # tiskne správně

-- 
geon
Pavel Kosina

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s unicode.

2008-04-07 Tema obsahu David Michal
> Takže to by mělo fungovat textUnicode= unicode(text, kodovani souboru
> se
> stringy od uživatelů). Pokud nefunguje, je třeba převádět unicode před
> tiskem ještě na kodovaní daného terminálu. Na běžné znaky by mělo
> fungovat ...
No pockej ale presne tohle tam mam:


def out(text):
print unicode(str(text) + '\n', 'utf8')

tzn. Ze bych mel nejak zjistit kodovanu terminal jeste pred printem. To udelam 
jak ?


___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s unicode.

2008-04-07 Tema obsahu Pavel Kosina
David Michal napsal(a):
> No jo, ale ja to prave potrebuju bez toho 'u' pred stringem. Ty stringy budou 
> brany z externiho souboru a budou psany uzivatelem.
>   

Takže to by mělo fungovat textUnicode= unicode(text, kodovani souboru se 
stringy od uživatelů). Pokud nefunguje, je třeba převádět unicode před 
tiskem ještě na kodovaní daného terminálu. Na běžné znaky by mělo 
fungovat ...



-- 
geon
Pavel Kosina

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s unicode.

2008-04-07 Tema obsahu superman
Přiznám se, že jsem to víc nezkoumal - a možná, že nebudu zcela v 
obraze, ale měl jsem pocit, že plné zobrazení UTF-8 na Windows zařídit 
nejde, a že vždy je riziko výjimky. Kdykoli narazil na znak, který nešel 
převést do výstupní znakové sady terminálu, pak výjimka okamžitě 
vystřelena. A že se takových znaků najde vždycky!

Miloslav Ponkrác

Pavel Kosina napsal(a):
> David Michal napsal(a):
>   
>> Zdravim,
>>
>> Porad mam problem se spravny zobrazenim textu v utf-8 na nekterych 
>> systemech.
>>
>>  
>>
>> Jak zaridim aby mi kod dole fungoval na vsech masinach?
>>
>>  
>>
>> #!/usr/bin/python
>>
>> #-*- coding: utf8 -*-
>>
>>  
>>
>> def out(text):
>>
>> print unicode(str(text) + '\n', 'utf8')
>>
>>  
>>
>> out('Žlutý kůň.')
>>
>>  
>>
>> 
>
> print u"Žlutý kůň" by mělo fungovat všude, samozřejmě pokud je soubor 
> uložen v kodovani utf8, které máš nadefinované v hlavičce.
> více o češtině na py.cz
>
>   

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s unicode.

2008-04-07 Tema obsahu David Michal
No jo, ale ja to prave potrebuju bez toho 'u' pred stringem. Ty stringy budou 
brany z externiho souboru a budou psany uzivatelem.
> 
> print u"Žlutý kůň" by mělo fungovat všude, samozřejmě pokud je soubor
> uložen v kodovani utf8, které máš nadefinované v hlavičce.
> více o češtině na py.cz
> 
> --
> geon
> Pavel Kosina

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s unicode.

2008-04-07 Tema obsahu Pavel Kosina
David Michal napsal(a):
>
> Zdravim,
>
> Porad mam problem se spravny zobrazenim textu v utf-8 na nekterych 
> systemech.
>
>  
>
> Jak zaridim aby mi kod dole fungoval na vsech masinach?
>
>  
>
> #!/usr/bin/python
>
> #-*- coding: utf8 -*-
>
>  
>
> def out(text):
>
> print unicode(str(text) + '\n', 'utf8')
>
>  
>
> out('Žlutý kůň.')
>
>  
>

print u"Žlutý kůň" by mělo fungovat všude, samozřejmě pokud je soubor 
uložen v kodovani utf8, které máš nadefinované v hlavičce.
více o češtině na py.cz

-- 
geon
Pavel Kosina

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


[python] Problem s unicode.

2008-04-07 Tema obsahu David Michal
Zdravim,

Porad mam problem se spravny zobrazenim textu v utf-8 na nekterych systemech.

 

Jak zaridim aby mi kod dole fungoval na vsech masinach?

 

#!/usr/bin/python

#-*- coding: utf8 -*-

 

def out(text):

print unicode(str(text) + '\n', 'utf8')

 

out('Žlutý kůň.')

 

Na jednech windows mi to funguje, tam kde kde mam zapnutou volbu "language for 
non-Unicode programs" na Czech. Tam kde je to English tam mi kod skonci s 
vyjimkou. Na Linuxu mi to konci take s vyjimkou.

 

Takze jak funkci out upravit tak aby si nejak zjistila locales a podle toho 
vypsala text?

Diky,

David

 

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Problem s importem sqlite3.

2008-03-11 Tema obsahu Ondrej Beranek
nainstalovat ?
odpoved by mohla byt zde:
http://www.linuxquestions.org/questions/slackware-14/howto-build-python-with-sqlite-support-603848/

10.3.08, David Michal <[EMAIL PROTECTED]>:
>
>
>
>
> Zdravim,
>
> Na jednom slacku x86_64 potrebuji rozjet python 2.5 a sqlite. Mam pocit ze
> jsem nainstaloval vse, tedy python, pysqlite a sqlite. Ale dostavam chybu:
>
>
>
> Python 2.5b3 (r25b3:51041, Feb 24 2008, 19:02:14)
>
> [GCC 3.4.6] on linux2
>
> Type "help", "copyright", "credits" or "license" for more information.
>
> >>> import sqlite3
>
> Traceback (most recent call last):
>
>   File "", line 1, in 
>
>   File "/usr/local/lib/python2.5/sqlite3/__init__.py", line
> 24, in 
>
> from dbapi2 import *
>
>   File "/usr/local/lib/python2.5/sqlite3/dbapi2.py", line
> 27, in 
>
> from _sqlite3 import *
>
> ImportError: No module named _sqlite3
>
>
>
> Moc nevim co s tim. Pravda ze zadny soubor _sqlite3 na disku nemam ani neni
> ve zdrojacich sqlite.
>
>
>
> Vite nekdo co s tim?
>
>
>
> Dik,
>
> David
>
>
> ___
>  Python mailing list
>  Python@py.cz
>  http://www.py.cz/mailman/listinfo/python
>
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


[python] Problem s importem sqlite3.

2008-03-10 Tema obsahu David Michal
Zdravim,

Na jednom slacku x86_64 potrebuji rozjet python 2.5 a sqlite. Mam pocit
ze jsem nainstaloval vse, tedy python, pysqlite a sqlite. Ale dostavam
chybu:

 

Python 2.5b3 (r25b3:51041, Feb 24 2008, 19:02:14)

[GCC 3.4.6] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import sqlite3

Traceback (most recent call last):

  File "", line 1, in 

  File "/usr/local/lib/python2.5/sqlite3/__init__.py", line 24, in


from dbapi2 import *

  File "/usr/local/lib/python2.5/sqlite3/dbapi2.py", line 27, in


from _sqlite3 import *

ImportError: No module named _sqlite3

 

Moc nevim co s tim. Pravda ze zadny soubor _sqlite3 na disku nemam ani
neni ve zdrojacich sqlite.

 

Vite nekdo co s tim?

 

Dik,

David

 

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] problem s odkazem na promennou - VYRESENO

2008-03-06 Tema obsahu Lansky, Milan - Acision
Diky moc za odpovedi. V podstate jsem hledal prikaz exec:

exec('var01 = 1')

Ale reseni s locals je taky moc super. To by mne asi nikdy nenapadlo:)
locals()['var02'] = 2


Python je opravdu skvely!!

This e-mail and any attachment is for authorised use by the intended 
recipient(s) only. It may contain proprietary material, confidential 
information and/or be subject to legal privilege. It should not be copied, 
disclosed to, retained or used by, any other party. If you are not an intended 
recipient then please promptly delete this e-mail and any attachment and all 
copies and inform the sender. Thank you.


___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] problem s odkazem na promennou

2008-03-06 Tema obsahu mtip
Ja bych to videl treba takhle:

locals()['varname']='value'
print varname

I kdyz bych to takhle asi nepouzil, ale snazil bych se predem
nedefinovane nazvy promennych zapouzdrit treba do slovniku samostatne
tridy.


LMA> Lze se v Pythonu odkazat na promenou jejiz nazev neni
LMA> dopredu znam? 

LMA> Rekneme, jak nastavit promennou var01, kdyz mam k
LMA> dispozici pouze

LMA> retezec  #8216;var01 #8217;?

LMA>  

LMA> V bashi se to resi funkci
LMA> eval:

LMA> # nazev_promenne=var01

LMA> # eval $nazev_promenne=1

LMA> # echo $var01

LMA> 1

LMA>  

LMA> Dekuji za odpoved.




-- 
Mirek N.
http://www.unosoft.cz/

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] problem s odkazem na promennou

2008-03-06 Tema obsahu Tomas Brabenec
Jde to treba pres exec:

promena = "x"
hodnota = "Ahoj svete"
exec("%s=%s" % (promena,hodnota))
print x

TB


Lansky, Milan - Acision napsal(a):
>
> Lze se v Pythonu odkazat na promenou jejiz nazev neni dopredu znam?
>
> Rekneme, jak nastavit promennou var01, kdyz mam k dispozici pouze
>
> retezec ‘var01’?
>
> V bashi se to resi funkci eval:
>
> # nazev_promenne=var01
>
> # eval $nazev_promenne=1
>
> # echo $var01
>
> 1
>
> Dekuji za odpoved.
>
>
> This e-mail and any attachment is for authorised use by the intended 
> recipient(s) only. It may contain proprietary material, confidential 
> information and/or be subject to legal privilege. It should not be 
> copied, disclosed to, retained or used by, any other party. If you are 
> not an intended recipient then please promptly delete this e-mail and 
> any attachment and all copies and inform the sender. Thank you.
> 
>
> ___
> Python mailing list
> Python@py.cz
> http://www.py.cz/mailman/listinfo/python
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] problem s odkazem na promennou

2008-03-06 Tema obsahu RMiklos
Podobne to ide aj v Perle:
$nazev_promenne='var01';
$$nazev_promenne=1;
print 
"\$nazev_promenne=$nazev_promenne,\n\$$nazev_promenne=$$nazev_promenne\n"

Myslim si, ze v Pythone sa toto neda urobit.
Ja by som v Pythone pouzil na ukladanie nazvov premennych a ich hodnot 
slovnik, asi takto
>>> nazev_promenne={}
>>> nazev_promenne['var01']=1
>>> print nazev_promenne

 



"Lansky, Milan - Acision" <[EMAIL PROTECTED]> 
Sent by: [EMAIL PROTECTED]
06.03.2008 10:40
Please respond to
Konference PyCZ 


To
python@py.cz
cc

Subject
[python] problem s odkazem na promennou






Lze se v Pythonu odkazat na promenou jejiz nazev neni dopredu znam? 
Rekneme, jak nastavit promennou var01, kdyz mam k dispozici pouze
retezec ‘var01’?
 
V bashi se to resi funkci eval:
# nazev_promenne=var01
# eval $nazev_promenne=1
# echo $var01
1
 
Dekuji za odpoved.

This e-mail and any attachment is for authorised use by the intended 
recipient(s) only. It may contain proprietary material, confidential 
information and/or be subject to legal privilege. It should not be copied, 
disclosed to, retained or used by, any other party. If you are not an 
intended recipient then please promptly delete this e-mail and any 
attachment and all copies and inform the sender. Thank you. 
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Mgr. Ing. Roman MIKLÓŠ 
Prvá stavebná sporiteľňa a.s. 
Bajkalská 30, P. O. Box 48 
829 48  Bratislava 25 
Tel.: +421/ 2 / 582 31 174 
Fax: +421/ 2 / 582 31 109 

Mgr. Ing. Roman MIKLÓŠ 
Prvá stavebná sporiteľňa a.s. 
Bajkalská 30, P. O. Box 48 
829 48  Bratislava 25 
Tel.: +421/ 2 / 582 31 174 
Fax: +421/ 2 / 582 31 109 

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

[python] problem s odkazem na promennou

2008-03-06 Tema obsahu Lansky, Milan - Acision
Lze se v Pythonu odkazat na promenou jejiz nazev neni dopredu znam? 

Rekneme, jak nastavit promennou var01, kdyz mam k dispozici pouze

retezec 'var01'?

 

V bashi se to resi funkci eval:

# nazev_promenne=var01

# eval $nazev_promenne=1

# echo $var01

1

 

Dekuji za odpoved.



This e-mail and any attachment is for authorised use by the intended 
recipient(s) only. It may contain proprietary material, confidential 
information and/or be subject to legal privilege. It should not be copied, 
disclosed to, retained or used by, any other party. If you are not an intended 
recipient then please promptly delete this e-mail and any attachment and all 
copies and inform the sender. Thank you.

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] problem

2008-01-05 Tema obsahu Lukáš Linhart

Připojuji se k poděkování za obsáhlou odpověď.

-- 
Lukáš Linhart


signature.asc
Description: This is a digitally signed message part.
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] problem

2008-01-04 Tema obsahu Vrána Jan
Dekuji za vycerpavajici odpoved. Jak sem psal nikdy jsem to nezkoumal a tak 
jsem se cerpal z mich predstav co by to delat melo.

Uz na tom nedostatku casu na provedeni optimalizace me melo dojit ze to zadnej 
zazrak nebude. 

Jeste jednou dekuji za vysvetleni
Honza Vrana
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] problem

2008-01-04 Tema obsahu superman
> No pravda pokud je vynalozene usily nekonecne tak jiste neni problem ani 
> extremni varianta ze podle projevu to napisete znovu.

No v případě Pythoního byte kódu je potřeba celkem malé úsilí. Věřte mi.

> Nikdy jsem to nezkoumal ale predpokladam ze compilator se hlavne snazi 
> optimalizovat a urychlit zpracovani. Nejedna se tedy jen o nejake 
> zakodovani do necitelne formy.

Zase další utopista. Zase další, co nohama není na zemi a pluje kdesi ve 
virtuální realitě.

Tak znovu už po tisícté: Optimalizace stojí čas, čas a zase čas! Když 
kompilátor překládá třeba moje C++ zdrojáky, tak větší programy na velmi 
výkonném počítači do release (tedy optimalizované) verze je schopen 
překládat mnoho minut až hodin. Selským rozumem přijdete na to, že 
nastartujete Python a program jede - tedy ČASU NA OPTIMALIZACI PYTHON 
MOC NEMÁ. Je to odvěká bolístka všech interpretovaných programů, které 
cokoli optimalizují/kompilují za běhu programu - chybí jim ČAS na 
pořádnou optimalizaci, takže se optimalizuje naprosto minimálně, občas 
velmi často vůbec.

Druhá věc je, že dobrá optimalizace je VELMI SLOŽITÝ SW PROBLÉM. Pro 
představu ve stávajících kompilátorech je 99% všeho kódu optimalizační 
jednotka. Je to to absolutně nejdůležitější, nejsložitější, 
nejnamakanější a to nejvíce machrovina, co můžete v sw napsat. Je 
tisíckrát jednodušší napsat jádro skvělého operačního systém, nebo třeba 
celý dokonalý interpretr Pythonu, ale je velmi až nechutně složité 
napsat dobrý neřku-li vynikající optimalizátor - je to IMHO ta nejvyšší 
meta jak dokázat svoje kvality jako programátor.

Třetí a velmi podstatná věc je, že optimalizátory přímo magicky 
přitahují ty nejhorší možné druhy chyb. Samotný optimalizátor díky své 
složitosti a implementaci mnoha velmi sofistikovaných triků je vůbec 
problém odladit, ale musíte si uvědomit, že jakákoli chyba, která 
zůstane v optimalizátoru vlastně potencionálně způsobuje chybný běh a 
chybnou interpretaci všech programů v tomto jazyce/prostředí spuštěném. 
Proto se na spolehlivost optimalizátorů kladou obrovské názroky a 
většinou se raději udělá horší optimalizátor, než aby byl nespolehlivý. 
Chronicky nespolehlivé jsou třeba kompilátory firmy Borland, kde v 
případě chyby není občas od věci se podívat do strojáku, zda kompilátor 
skuečně přeložil co je ve zdrojovém kódu.

Tedy čtvrtá věc - Python s dobrým optimalizátorem by měl asi tak stokrát 
až tisíckrát více řádek zdrojového kódu, než je nyní a jeho vývoj by 
stál příslušný násobek času.

Vzhledem k tomu, že autor Pythonu stále řeší gramatické stromy a vnitřní 
reprezentaci syntaktického stromu - alespoň tak to pamatuji, když jsem 
dění v Pythonu sledoval - a vzhledem k tomu, že zdrojové kódu 
interpretetu Pythonu jsem studoval - mohu prohlásit, že optimalizace v 
Pythonu se blíží nula, není prakticky žádná.

> Ale z kodu se odstrani vsechny nepotrebnosti jako jsou treba komentare, 
> nazvy promenych, bloky ktere nemuzou nikdy nastat (if(0==1):).

Pokud alespoň pár hodin jste programoval v Pythonu a napsal v něm 
minimálně "Hello world program", tak jistě víte, že názvy proměnných 
jsou ve skutečnosti jen jména v prostoru jmen, a že vzhledem k povaze 
Pythonu dost dobře nelze odstraňovat jména proměnných a je dost ztížené 
i jejich falšování. Protože těžko vysvětlíte nadřazenému modulu, že se k 
proměnné pod pravým názvem jaksi nemohou dostat.

Jinak odstraňování bloků, které nikdy nemohou nastat je možné, ale 
předpokládá to dost značnou inteligenci optimalizátoru - a pak platí ty 
věci co jsem psal o optimalizaci viz výše.

> Optimalizator by mohl ke stejnymu kusu bytekodu dojit vice cestama. 
> Napriklad ruzne moznosti pro vytvoreni cyklu ktere ve vysledku mohou byt 
> zkompilovany stejne.

Ano, to teoreticky mohl. Ale prosím, projděte si Python, jeho možnosti a 
bude Vám to jasné. Python moc záludností pro byte kód neskrývá, 
prakticky žádnou.

> Takze to co dostanete dekompilaci se vasemu puvodnimu zdrojaku podoba, 
> stejne se to chova ale vas puvodni zdrojak to neni.

Ne, původní zdroják to není, ale bude velice velice věrně odrážet 
původní zdroják. Zvláště v Pythonu dokonce i do takových detailů jako je 
třeba dodržení řádek zdrojového kódu (protože nucené odsazení a protože 
i v byte kódu jsou informace o řádkách zdrojového kódu a další věci). V 
podstatě po dekompilaci byte kódu získám velmi dobrý zdrojový kód, který 
  mohu dále použít pro další vývoj programu a který se bude maximálně 
podobat originálnímu zdrojáku. Na 99,9% bude stejný s mírnými 
odchylkami. Názvy proměnných, objektů, funkcí, stejné konstrukce, 
naprosto stejné algoritmy jako originální zdroják., Odchylky budou 
naprosto nepodstatné.

> Nebo opravdu compilator jen zakoduje zdrojak do strojove lepe citelneho 
> tvaru nad kterym uz nemusi provadet syntaktickou analyzu?

V podstatě jste velmi blízko skutečnosti :-)

Miloslav Ponkrác


___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/p

Re: [python] problem

2008-01-04 Tema obsahu Jan Vrana
> Získaz z bytecode původní zdroják na 100% jde -
> tedy "téměř původní"
> zdroják. Je to jen otázkou ceny a času, který tomu
> chcete věnovat -

[ Honza Vrana ]
No pravda pokud je vynalozene usily nekonecne tak jiste neni problem ani 
extremni varianta ze podle projevu to napisete znovu.

Nikdy jsem to nezkoumal ale predpokladam ze compilator se hlavne snazi 
optimalizovat a urychlit zpracovani. Nejedna se tedy jen o nejake 
zakodovani do necitelne formy.

Ale z kodu se odstrani vsechny nepotrebnosti jako jsou treba komentare, 
nazvy promenych, bloky ktere nemuzou nikdy nastat (if(0==1):).

Optimalizator by mohl ke stejnymu kusu bytekodu dojit vice cestama. 
Napriklad ruzne moznosti pro vytvoreni cyklu ktere ve vysledku mohou byt 
zkompilovany stejne.

Takze to co dostanete dekompilaci se vasemu puvodnimu zdrojaku podoba, 
stejne se to chova ale vas puvodni zdrojak to neni.

Nebo opravdu compilator jen zakoduje zdrojak do strojove lepe citelneho 
tvaru nad kterym uz nemusi provadet syntaktickou analyzu?

Honza Vrana 

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] problem

2008-01-04 Tema obsahu superman
Získaz z bytecode původní zdroják na 100% jde - tedy "téměř původní" 
zdroják. Je to jen otázkou ceny a času, který tomu chcete věnovat - 
pokud mě dostatečně zaplatíte, klidně Vám program na rekonstrukci 
zdrojáku z byte kódu napíšu.

Ono je to u Pythonu trochu ztížené tím, že byte kód se mění každou verzi 
Pythonu, ale jak říkám, je to otázkou času . pokud někomu bude hrozit, 
že vydělá dostatečnou sumu, když zrekonstruuje zdroják Pythonu z byte 
kódu, tak ho to nezastaví.

To jsou právě problémy, které se často řeší - je hezké používat 
interpretované jazyky postavení na byte kódu a virtuální mašině - jako 
je Python, Perl, Ruby, C#, Java, ale v podstatě to znamená, že svoje 
programy jsou téměř open source. Zrekonstruovat zdroják, nebo alespoň 
reverse engineeringem zjistit to co potřebujete je obrovsky snažší u 
takovýchto jazyků, než třeba u C, C++, Ada, Fortran, Asm a jiných 
kompilovaných programů. Veřejně se dokonce mluví o tom, že třeba .NET 
framework dostatečně nechrání duševní vlastnictví firem - protože každý 
manták, který pracuje jako pomocný uklízeč je schopen zrekonstruovat 
zdroják do použitelné podoby z byte kódu, zatímco u kompilovaných jazyků 
musíte být docela machr na skutečný reverse enginnering, zvláště pokud 
program se aktivně brání proti disassemblování a debugování.

Miloslav Ponkrác


Tomy novella napsal(a):
> ahoj,
> no ja som zas cital niekde na python.org, ze bytekod je naschval tak
> spraveny, aby bolo znemoznene z neho ziskat povodny zdrojak...
> takze aj ked existuje nejaky program na dekompilaciu, tak imho necakaj
> ze ti vrati POVODNY zdrojak...
> ___
> Python mailing list
> Python@py.cz
> http://www.py.cz/mailman/listinfo/python
> 
> 
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] problem

2008-01-04 Tema obsahu Jaroslav Lukesh
No ono záleží na tom co všechno ten bytecode v sobě má, většinou obsahuje i 
ten zdroják. Jinak bytecode sám o sobě je optimalizovaný podle toho s čím 
ten python spustíte.

- Original Message - 
From: "Tomy novella" <[EMAIL PROTECTED]>

no ja som zas cital niekde na python.org, ze bytekod je naschval tak
spraveny, aby bolo znemoznene z neho ziskat povodny zdrojak...
takze aj ked existuje nejaky program na dekompilaciu, tak imho necakaj
ze ti vrati POVODNY zdrojak...

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] problem

2008-01-04 Tema obsahu Tomy novella
ahoj,
no ja som zas cital niekde na python.org, ze bytekod je naschval tak
spraveny, aby bolo znemoznene z neho ziskat povodny zdrojak...
takze aj ked existuje nejaky program na dekompilaciu, tak imho necakaj
ze ti vrati POVODNY zdrojak...
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] problem

2008-01-04 Tema obsahu Pavel Kosina
Jan Vrana napsal(a):
> Ten exe soubor je v podstate zip. Myslim ze winzip jej rozpakuje. 
> Zabaleny jsou zkompilovane pyc soubory.
>
>   

jj, taky myslím, že stačí přejmenovat např. script.exe na script.zip a 
zipem si vytáhnout, co potřebuji ;-)

-- 
geon
Pavel Kosina

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] problem

2008-01-04 Tema obsahu Jan Vrana
Ten exe soubor je v podstate zip. Myslim ze winzip jej rozpakuje. 
Zabaleny jsou zkompilovane pyc soubory.

Decompilovat by mohli jit timto
http://www.python.org/doc//2.4/lib/module-dis.html

a tady je nejaka online sluzba na decompilaci

http://www.depython.net/

Honza Vrana

- Original Message - 
From: "Roman Morong" <[EMAIL PROTECTED]>
To: 
Sent: Friday, January 04, 2008 8:35 AM
Subject: [python] problem


Ahoj všem v pythonu sem si udělal pěkne scriptik pak sem ho hodil do
exe a na web mezitim se mi soubo s scriptikem ztratil :( při
reinstalu windowsu neno možnost jak z toho exe soubor zase vytvoři
soubor py děkuji mororo



S Pozdarev Roman Morong





___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python 

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] problem

2008-01-04 Tema obsahu Adam Štrauch
Někde jsem zaslech že je možný získat zdroják z bytekódu, ale z
binárky pochybuju...

On Jan 4, 2008 8:35 AM, Roman Morong <[EMAIL PROTECTED]> wrote:
> Ahoj všem v pythonu sem si udělal pěkne scriptik pak sem ho hodil do exe a
> na web mezitim se mi soubo s scriptikem ztratil :( při reinstalu windowsu
> neno možnost jak z toho exe soubor zase vytvoři soubor py děkuji mororo
>
>
>
>  S Pozdarev Roman Morong
> ___
> Python mailing list
> Python@py.cz
> http://www.py.cz/mailman/listinfo/python
>
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


[python] problem

2008-01-03 Tema obsahu Roman Morong
Ahoj všem v pythonu sem si udělal pěkne scriptik pak sem ho hodil do
exe a na web mezitim se mi soubo s scriptikem ztratil :( při
reinstalu windowsu neno možnost jak z toho exe soubor zase vytvoři 
soubor py děkuji mororo



S Pozdarev Roman Morong___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Problem s odesláním ofrmuláře met odou POST

2007-10-08 Tema obsahu Roman Morong
pavle neboj je to jen kvuli oznameni nové poště a utoku

>  Původní zpráva 
> Od: Pavel Kosina <[EMAIL PROTECTED]>
> Předmět: Re: [python] Problem s odesláním ofrmuláře metodou POST
> Datum: 07.10.2007 20:46:35
> -
> Roman Morong napsal(a):
> Takže sem udělal takovou prasarnu a nevim co a > jak :( jak dal
bohužel
> nepřihlá sí se
>
> myPost = > urllib.urlencode({"eba5c8b": "mororo", "e316d4e":
"topgun",
> > "autologin": "ja", "s1": "login"})

1/ moc nevím, k čemu to máš, > snad to není na to, co myslím
2/ já osobně v html kodu vidím jiné názvy > inputů, než máš ty:

/>Jméno:
 

/>Heslo:
 name="ecf0abb" value="" maxlength="20"
type="password"> 

/>


/>3/ kromě toho tam vidím ještě další hidden ...
4/ stejně nevím, jestli > když to všechno opravíš, jestli to bude
fungovat ...



/>--
geon
Pavel Kosina

/>___
Python mailing list
/>Python@py.cz
http://www.py.cz/mailman/listinfo/python
>

S Pozdarev Roman Morong___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Problem s odesláním ofrmuláře met odou POST

2007-10-07 Tema obsahu Roman Morong
Diky ten nazev se nějak často mění :-D a jak ještě přidam text z
proměny do "myPost = urllib.urlencode({"eba5c8b": "mororo", "e316d4
e": "291032708", "autologin": "ja", "s1": "login"})" tak misto
mororo bych chtel promenu nick ale nějak ne a ne se mi to povect,
zatim diky

> -------- Původní zpráva 
> Od: Pavel Kosina <[EMAIL PROTECTED]>
> Předmět: Re: [python] Problem s odesláním ofrmuláře metodou POST
> Datum: 07.10.2007 20:46:35
> -
> Roman Morong napsal(a):
> Takže sem udělal takovou prasarnu a nevim co a > jak :( jak dal
bohužel
> nepřihlá sí se
>
> myPost = > urllib.urlencode({"eba5c8b": "mororo", "e316d4e":
"topgun",
> > "autologin": "ja", "s1": "login"})

1/ moc nevím, k čemu to máš, > snad to není na to, co myslím
2/ já osobně v html kodu vidím jiné názvy > inputů, než máš ty:

/>Jméno:
 

/>Heslo:
 name="ecf0abb" value="" maxlength="20"
type="password"> 

/>


/>3/ kromě toho tam vidím ještě další hidden ...
4/ stejně nevím, jestli > když to všechno opravíš, jestli to bude
fungovat ...



/>--
geon
Pavel Kosina

/>___
Python mailing list
/>Python@py.cz
http://www.py.cz/mailman/listinfo/python
>

S Pozdarev Roman Morong___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Problem s odesláním ofrmuláře met odou POST

2007-10-07 Tema obsahu Pavel Kosina
Roman Morong napsal(a):
> Takže sem udělal takovou prasarnu a nevim co a jak :( jak dal bohužel 
> nepřihlá sí se
>
> myPost = urllib.urlencode({"eba5c8b": "mororo", "e316d4e": "topgun", 
> "autologin": "ja", "s1": "login"})

1/ moc nevím, k čemu to máš, snad to není na to, co myslím
2/ já osobně v html kodu vidím jiné názvy inputů, než máš ty:

Jméno:
 


Heslo:
 





3/ kromě toho tam vidím ještě další hidden ...
4/ stejně nevím, jestli když to všechno opravíš, jestli to bude fungovat ...



-- 
geon
Pavel Kosina

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


[python] Problem s odesláním ofrmuláře met odou POST

2007-10-07 Tema obsahu Roman Morong
Takže sem udělal takovou prasarnu a nevim co a jak :( jak dal
bohužel nepřihlá sí se

import urllib
import urllib2
import cookielib
import os.path

def installCookies(f):
global cj, COOKIE_FILE
cj = cookielib.LWPCookieJar()
if os.path.exists(f):
cj.load(f)
COOKIE_FILE = f
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)

def saveCookies():
cj.save(COOKIE_FILE)


installCookies('cookies.dat')

myPost = urllib.urlencode({"eba5c8b": "mororo", "e316d4e": "topgun",
"autologin": "ja", "s1": "login"})
data = urllib2.urlopen("http://s5.travian.cz/dorf1.php";, myPost)

datas = data.read()
data.close()
print datas.count('11800') # kolik je tam slov '11800'

raw_input()



S Pozdarev Roman Morong___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Problem pri build Extension.

2007-04-25 Tema obsahu Leos Pol
Dobry den,

nauvod si neodpustim pripominku, ze neni spatne psat subject. Takhle se 
muze ztratit vas prispevek mezi ostatnimy (no subject).

K vasemu problemu: myslim, ze je zrejme, ze system nenalezl kompilator 
gcc. Zkuste prikaz echo %PATH% v prikazove radce. Melo by tam byt 
\MinGW/bin;\MinGW\lib;\MinGW\include; kde 
 je cesta k adresari MinGW (napr C:\).

Leo

[EMAIL PROTECTED] wrote:
>
> Tady je spuštěný můj program v cmd:
>
> D:\Python25>python "c++-python.py" build -c mingw32
> running build
> running build_ext
> building 'demo' extension
> gcc -mno-cygwin -mdll -O -Wall -ID:\Python25\include -ID:\Python25\PC 
> -c spam.cp
> p -o build\temp.win32-2.5\Release\spam.o
> error: command 'gcc' failed: No such file or directory
>
>  
>
> A tady je kód programu:
>
> from distutils.core import setup, Extension
>
> module1 = Extension('demo',
> sources = ['spam.cpp'])
>
> setup(name = 'PackageName',
>   version = '1.0',
>   description = 'This is a demo package',
>   ext_modules = [module1])
>
>  
>
> Tento program má načíst soubor c++, děkuji za jakoukoliv rad.
>
> 
>
> ___
> Python mailing list
> Python@py.cz
> http://www.py.cz/mailman/listinfo/python


-- 

Leos Pol
SW Engineer
Radiante Corp.

If it can be imagined,
we can implement it

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] problem pri importu knihovny (dll)

2007-02-26 Tema obsahu Jan Matejka
Stáhněte si prohlížeč závislostí ( http://www.dependencywalker.com/ ) a
zkuste jestli jsou všechny knihovny, které _fs.dll vyžaduje k dispozici
(dostupné na cestě).
Jan Matějka


  _  

From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of
[EMAIL PROTECTED]
Sent: Monday, February 26, 2007 2:46 PM
To: Konference PyCZ
Subject: Re: [python] problem pri importu knihovny (dll)


dany adresar (libsvn) obsahuje:
 
__init__.py
__init__.pyc
_client.dll
_core.dll
_delta.dll
_fs.dll
_ra.dll
_repos.dll
_wc.dll
client.py
core.py
delta.py
fs.py
fs.pyc
libsvn_swig_py-1.dll
ra.py
repos.py
wc.py


chyba nastane v tom fs.py na radku: import _fs



-=( Alien21 )=-


  _  

From: Jan Matejka [mailto:[EMAIL PROTECTED]
To: 'Konference PyCZ' [mailto:[EMAIL PROTECTED]
Sent: Mon, 26 Feb 2007 14:05:52 +0100
Subject: Re: [python] problem pri importu knihovny (dll)


Shání se po _fs.pyd . To je přejmenovaná dll. Pokud je _fs.pyd kdispozici a
přesto je problém, může být způsoben nepřítomností nějaké dll, na které
_fs.pyd závisí.
 
Jan Matějka


  _  

From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of
[EMAIL PROTECTED]
Sent: Monday, February 26, 2007 12:54 PM
To: Python
Subject: [python] problem pri importu knihovny (dll)


dobry den,
mel bych jeden dotaz. v pythonu sem naprosty amater. pokousim se rozchodit
viewvc (webova nadstavba nad subversion systemem svn) pod windows. python
bindings jsem nakopiroval do lib/site-sitepackages, do cesty pythonpath jsem
pridal cestu k viewvc knihovnam. a ted pokud se pokousim viewvc "rozjed"
(prohlidnout v prohlizeci) vyhodi to nasledujici chybu:
 

An Exception Has Occurred


Python Traceback




Traceback (most recent call last):

  File "c:\web\subversion\viewvc\lib\viewvc.py", line 3629, in main

request.run_viewvc()

  File "c:\web\subversion\viewvc\lib\viewvc.py", line 253, in run_viewvc

import vclib.svn

  File "c:\web\subversion\viewvc\lib\vclib\svn\__init__.py", line 25, in


from svn import fs, repos, core, delta

  File "c:\Web\Python\lib\site-packages\svn\fs.py", line 19, in 

from libsvn.fs import *

  File "c:\Web\Python\Lib\site-packages\libsvn\fs.py", line 5, in 

import _fs

ImportError: No module named _fs



v adresari: c:\Web\Python\Lib\site-packages\libsvn\ (soucast python bindings
z svn ktery jsem prekopirovaval) zadny _fs.py neni, pouze _fs.dll , a ted
nevim jestli mi nekde neco chybi, neco v cem je chyba. nemuze nekdo poradit?
omlouvam se za trosku zmateny popis.
 


-=( Alien21 )=- 
 
 

 
 

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] problem pri importu knihovny (dll)

2007-02-26 Tema obsahu python
 
dany adresar (libsvn) obsahuje:  
   
__init__.py
__init__.pyc
_client.dll
_core.dll
_delta.dll
_fs.dll
_ra.dll
_repos.dll
_wc.dll
client.py
core.py
delta.py
fs.py
fs.pyc
libsvn_swig_py-1.dll
ra.py
repos.py
wc.py  


chyba nastane v tom fs.py na radku: import _fs

-=( Alien21 )=-
  _  

  From: Jan Matejka [mailto:[EMAIL PROTECTED]
To: 'Konference PyCZ' [mailto:[EMAIL PROTECTED]
Sent: Mon, 26 Feb 2007 14:05:52 +0100
Subject: Re: [python] problem pri importu knihovny (dll)

  
Shání se po _fs.pyd . To je přejmenovaná dll. Pokud je _fs.pyd kdispozici a 
přesto je problém, může být způsoben nepřítomností nějaké dll, na které _fs.pyd 
závisí.  
   
Jan Matějka

_  

  From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of [EMAIL 
PROTECTED]
Sent: Monday, February 26, 2007 12:54 PM
To: Python
Subject: [python] problem pri importu knihovny (dll)

  
  
dobry den,  
mel bych jeden dotaz. v pythonu sem naprosty amater. pokousim se rozchodit 
viewvc (webova nadstavba nad subversion systemem svn) pod windows. python 
bindings jsem nakopiroval do lib/site-sitepackages, do cesty pythonpath jsem 
pridal cestu k viewvc knihovnam. a ted pokud se pokousim viewvc "rozjed" 
(prohlidnout v prohlizeci) vyhodi to nasledujici chybu:  
   
  
An Exception Has Occurred
  
Python Traceback
  



Traceback (most recent call last):File 
"c:\web\subversion\viewvc\lib\viewvc.py", line 3629, in main  
request.run_viewvc()File "c:\web\subversion\viewvc\lib\viewvc.py", line 
253, in run_viewvc  import vclib.svnFile 
"c:\web\subversion\viewvc\lib\vclib\svn\__init__.py", line 25, in   
from svn import fs, repos, core, deltaFile 
"c:\Web\Python\lib\site-packages\svn\fs.py", line 19, in   from 
libsvn.fs import *File "c:\Web\Python\Lib\site-packages\libsvn\fs.py", line 
5, in   import _fs  ImportError: No module named _fsv adresari: 
c:\Web\Python\Lib\site-packages\libsvn\ (soucast python bindings z svn ktery 
jsem prekopirovaval) zadny _fs.py neni, pouze _fs.dll , a ted nevim jestli mi 
nekde neco chybi, neco v cem je chyba. nemuze nekdo poradit? omlouvam se za 
trosku zmateny popis.  
 

-=( Alien21 )=-   
   
   
   
 ___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] problem pri importu knihovny (dll)

2007-02-26 Tema obsahu Jan Matejka
Shání se po _fs.pyd . To je přejmenovaná dll. Pokud je _fs.pyd kdispozici a
přesto je problém, může být způsoben nepřítomností nějaké dll, na které
_fs.pyd závisí.
 
Jan Matějka


  _  

From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of
[EMAIL PROTECTED]
Sent: Monday, February 26, 2007 12:54 PM
To: Python
Subject: [python] problem pri importu knihovny (dll)


dobry den,
mel bych jeden dotaz. v pythonu sem naprosty amater. pokousim se rozchodit
viewvc (webova nadstavba nad subversion systemem svn) pod windows. python
bindings jsem nakopiroval do lib/site-sitepackages, do cesty pythonpath jsem
pridal cestu k viewvc knihovnam. a ted pokud se pokousim viewvc "rozjed"
(prohlidnout v prohlizeci) vyhodi to nasledujici chybu:
 

An Exception Has Occurred


Python Traceback




Traceback (most recent call last):

  File "c:\web\subversion\viewvc\lib\viewvc.py", line 3629, in main

request.run_viewvc()

  File "c:\web\subversion\viewvc\lib\viewvc.py", line 253, in run_viewvc

import vclib.svn

  File "c:\web\subversion\viewvc\lib\vclib\svn\__init__.py", line 25, in


from svn import fs, repos, core, delta

  File "c:\Web\Python\lib\site-packages\svn\fs.py", line 19, in 

from libsvn.fs import *

  File "c:\Web\Python\Lib\site-packages\libsvn\fs.py", line 5, in 

import _fs

ImportError: No module named _fs



v adresari: c:\Web\Python\Lib\site-packages\libsvn\ (soucast python bindings
z svn ktery jsem prekopirovaval) zadny _fs.py neni, pouze _fs.dll , a ted
nevim jestli mi nekde neco chybi, neco v cem je chyba. nemuze nekdo poradit?
omlouvam se za trosku zmateny popis.
 


-=( Alien21 )=- 
 
 

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

[python] problem pri importu knihovny (dll)

2007-02-26 Tema obsahu python
dobry den,  
mel bych jeden dotaz. v pythonu sem naprosty amater. pokousim se rozchodit 
viewvc (webova nadstavba nad subversion systemem svn) pod windows. python 
bindings jsem nakopiroval do lib/site-sitepackages, do cesty pythonpath jsem 
pridal cestu k viewvc knihovnam. a ted pokud se pokousim viewvc "rozjed" 
(prohlidnout v prohlizeci) vyhodi to nasledujici chybu:  
   
  
An Exception Has Occurred
  
Python Traceback
  



Traceback (most recent call last):File 
"c:\web\subversion\viewvc\lib\viewvc.py", line 3629, in main  
request.run_viewvc()File "c:\web\subversion\viewvc\lib\viewvc.py", line 
253, in run_viewvc  import vclib.svnFile 
"c:\web\subversion\viewvc\lib\vclib\svn\__init__.py", line 25, in   
from svn import fs, repos, core, deltaFile 
"c:\Web\Python\lib\site-packages\svn\fs.py", line 19, in   from 
libsvn.fs import *File "c:\Web\Python\Lib\site-packages\libsvn\fs.py", line 
5, in   import _fs  ImportError: No module named _fsv adresari: 
c:\Web\Python\Lib\site-packages\libsvn\ (soucast python bindings z svn ktery 
jsem prekopirovaval) zadny _fs.py neni, pouze _fs.dll , a ted nevim jestli mi 
nekde neco chybi, neco v cem je chyba. nemuze nekdo poradit? omlouvam se za 
trosku zmateny popis.  
 

-=( Alien21 )=-  
   
 ___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Problem s regularnym vyrazom

2007-02-02 Tema obsahu Petr Prikryl
> Petr Prikryl wrote:
> > [EMAIL PROTECTED]
> >> [...]'''CREATE TABLE IBPDDB071/R004660V
> >> (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, 
> >> LFDNR1 DECIMAL (3, 0) [...] );'''
> >
> > No jasně. Když jsou vevnitř závorky, tak to nemůže
> > fungovat. Problém je principiální. Regulární výrazy
> > obecně nemohou popisovat řetězce jazyků, které obsahují
> > párové struktury. Možná se dají zpracovat nějaké speciální
> > případy na základě dalších znalostí.
> >   
> Presne tak. V tomhle pripade jsem si pohraval s myslenkou, 
> ktera by se dala zapsat matematicky asi takhle (pouze 
> pro retezec v zavorkach):
> 
> A = {a-zA-Z0-9_, }
> B = {0-9, }
> C = (B*)
> L = (A*+C*)
> 
> Bohuzel, kdyz na to ted koukam, tak jazyk L neni regularni. 
> Presto si ale myslim, ze tento jazyk lze popsat gramatikou 
> popr. automatem. Jestli se pletu, opravte me prosim.

No, mělo by to jít, protože tady jde o speciální případ.
Jednak se používá nástroj pro "regulární výrazy s rozšířením".
Při jeho překladu se buduje konečný automat (odhad), který
má navíc jakoby globální proměnné (hodnoty skupin). 
Můžu předepsat non-greedy vyhodnocování. Zkoumaný
řetězec navíc neobsahuje libovolně zanořené párové struktury,
ale pouze dvě úrovně. Automat se tedy nemusí rozšiřovat až
na obecnější, zásobníkový. Stačí ho trochu rozepsat a 
úroveň zanoření vyjádřit přechodem do jiné části automatu.
Měl by tedy jít napsat i regulární výraz.

pepr

P.S. Nechce se mi do toho ;-)
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s regularnym vyrazom

2007-02-02 Tema obsahu Leos Pol
Petr Prikryl wrote:
> [EMAIL PROTECTED]
>   
>> To som skusal ale neni to tak jednoduche. 
>> --
>> [...]'''CREATE TABLE IBPDDB071/R004660V
>> (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, 
>> LFDNR1 DECIMAL (3, 0) [...] );'''
>> regexp_sql_create=\
>> re.compile(r"^\s*CREATE\s+TABLE\s+"
>>r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*"
>>r"\((?P.*?)\)\s*")
>> 
>
> No jasně. Když jsou vevnitř závorky, tak to nemůže
> fungovat. Problém je principiální. Regulární výrazy
> obecně nemohou popisovat řetězce jazyků, které obsahují
> párové struktury. Možná se dají zpracovat nějaké speciální
> případy na základě dalších znalostí.
>
>   
Presne tak. V tomhle pripade jsem si pohraval s myslenkou, ktera by se 
dala zapsat matematicky asi takhle (pouze pro retezec v zavorkach):

A = {a-zA-Z0-9_, }
B = {0-9, }
C = (B*)
L = (A*+C*)

Bohuzel, kdyz na to ted koukam, tak jazyk L neni regularni. Presto si 
ale myslim, ze tento jazyk lze popsat gramatikou popr. automatem. Jestli 
se pletu, opravte me prosim.

Leo

-- 

Leos Pol
SW Engineer
Radiante Corp.

If it can be imagined,
we can implement it

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s regularnym vyrazom

2007-02-02 Tema obsahu RMiklos
No predsa to ide tym vyrazom od Lea, ktory som vcera prehliadol a na ktory 
ma upozornil Petr Hlavka
Takze takto to funguje:
--
import sys,re

sql_statement='''CREATE TABLE IBPDDB071/R004660V
(PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 DECIMAL  
  (3, 0) NOT NULL WITH DEFAULT, VOTYP   CHARACTER   (1)NOT 
NULL WITH DEFAULT, BSSTAMMNR   DECIMAL (7, 0) NOT NULL WITH 
DEFAULT,BSVNR   DECIMAL (2, 0) NOT NULL WITH DEFAULT );  Label 
on IBPDDB071/R004660V(PERSONNR   IS 'PERSONNR', LFDNR1 IS 'LFDNR1', 
VOTYP  IS 'VOTYP', BSSTAMMNR  IS 'BSSTAMMNR', BSVNR  IS 
'BSVNR');'''
regexp_sql_create=\
re.compile(r"^\s*CREATE\s+TABLE\s+"
   r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*"
   r"\((?P[^;]*)\)")

result=regexp_sql_create.search(sql_statement)
if result == None:
  # CREATE TABLE statement not valid ! 
  print "SQL CREATE TABLE statement is not valid !!!"
  sys.exit()
else:
  # Parse data from RegExp
  library=result.group('library')
  print "Library=%s" % library
  table=result.group('file')
  print "Table=%s" %table
  table_field_def=result.group('tbl_field_def')
  print "Field Definitions=%s" % table_field_def
--

dolezite je v regexpe toto:
 [^;]* - to znamena vsetky znaky okrem ; 




"Petr Prikryl" <[EMAIL PROTECTED]> 
Sent by: [EMAIL PROTECTED]
02.02.2007 13:24
Please respond to
Konference PyCZ 


To
"Konference PyCZ" 
cc

Subject
Re: [python] Problem s regularnym vyrazom






[EMAIL PROTECTED]
> To som skusal ale neni to tak jednoduche. 
> --
> [...]'''CREATE TABLE IBPDDB071/R004660V
> (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, 
> LFDNR1 DECIMAL (3, 0) [...] );'''
> regexp_sql_create=\
> re.compile(r"^\s*CREATE\s+TABLE\s+"
>r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*"
>r"\((?P.*?)\)\s*")

No jasně. Když jsou vevnitř závorky, tak to nemůže
fungovat. Problém je principiální. Regulární výrazy
obecně nemohou popisovat řetězce jazyků, které obsahují
párové struktury. Možná se dají zpracovat nějaké speciální
případy na základě dalších znalostí.

pepr
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Mgr. Ing. Roman MIKLÓŠ 
Prvá stavebná sporiteľňa a.s. 
Bajkalská 30, P. O. Box 48 
829 48  Bratislava 25 
Tel.: +421/ 2 / 582 31 174 
Fax: +421/ 2 / 582 31 109 

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s regularnym vyrazom

2007-02-02 Tema obsahu RMiklos
Super! - diky moc za ten priklad.
Jeden dobry priklad ma vacsiu hodnotu ako 100 stran manualu :-)

Roman




Jan Janech <[EMAIL PROTECTED]> 
Sent by: [EMAIL PROTECTED]
02.02.2007 13:38
Please respond to
Konference PyCZ 


To
Konference PyCZ 
cc

Subject
Re: [python] Problem s regularnym vyrazom






[EMAIL PROTECTED] wrote:
> Predtym som cital ( 
> http://www.onlamp.com/pub/a/python/2006/01/26/pyparsing.html ) o module 
> pyparsing  ( http://pyparsing.wikispaces.com/), ale zial nemal som cas 
sa 
> s tym zaoberat. Doteraz parsujem vsetko iba regularnymi vyrazmi. Zda sa 
mi 
> to najrychlejsie riesenie - i ked nie najlepsie a ma to tiez svoje 
hranice 
> a uskalia.
> 
> Dik za info -o  yapps-e som doteraz nepocul. 
> Nevidim dokumetaciu Yappsu na tej stranke. preto sa chcem spytat: 
> 1. aky  je vstup pre Yapps? Nejako zapisana gramatika?
> 2. pouzil si Yapps1 alebo Yapps2
> 3. Nemas nejaky kratky priklad ako si parsoval to SQL?
> 
> s pozdravom
> 
> Roman

caw... kedysi som robil alter script generator pre mysql. nechcem to
prikladat do prilohy, neviem ci by to preslo cez mailing list, tak som
to vyvesil na http://st.fri.utc.sk/~janech/SQLAlterGenerator.tgz
Pre teba je dolezity subor generator/SQLParser.g

Ja som pred tym tiez parsoval vsetko cez regulare... ale hento mi dava
omnoho viac moznosti

> Na taketo veci sa hodia skor parser-generatory ako regularne vyrazy. Ja 
> pouzivam YAPPS (http://theory.stanford.edu/~amitp/yapps/). Konkretne SQL 

> som s nim uz parsoval.
> 
> [EMAIL PROTECTED] wrote:
>> Rad by som tymto oslovil odbornikov na regularne vyrazy.
>>
>> Extrahujem datove polia tabulky cez regularny vyraz takto:
>> --- skript ---
>> import sys,re
>>
>> sql_statement='''CREATE TABLE IBPDDB071/R004660V
>> (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 
> DECIMAL 
>>   (3, 0) NOT NULL WITH DEFAULT, VOTYP   CHARACTER   (1) NOT 
>> NULL WITH DEFAULT, BSSTAMMNR   DECIMAL (7, 0) NOT NULL WITH 
>> DEFAULT,BSVNR   DECIMAL (2, 0) NOT NULL WITH DEFAULT );'''
>> regexp_sql_create=\
>> re.compile(r"^\s*CREATE\s+TABLE\s+"
>>r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*"
>>r"\((?P.*)\)\s*")
>>
>> result=regexp_sql_create.search(sql_statement)
>> if result == None:
>>   # CREATE TABLE statement not valid ! 
>>   print "SQL CREATE TABLE statement is not valid !!!"
>>   sys.exit()
>> else:
>>   # Parse data from RegExp
>>   library=result.group('library')
>>   print "Library=%s" % library
>>   table=result.group('file')
>>   print "Table=%s" %table
>>   table_field_def=result.group('tbl_field_def')
>>   print "Field Definitions=%s" % table_field_def
>>  konec skriptu 
>>
>> Potom definicie dat. poli dalej pracovavam. 
>> Toto by fungovalo, az na to ze SQL-skript je vygenerovany a okrem 
CREATE 
> 
>> TABLE (...); moze obsahovat aj LABEL ON (...);
>> takze moze vyzerat takto:
>>
>> sql_statement='''CREATE TABLE IBPDDB071/R004660V
>> (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 
> DECIMAL 
>>   (3, 0) NOT NULL WITH DEFAULT, VOTYP   CHARACTER   (1) NOT 
>> NULL WITH DEFAULT, BSSTAMMNR   DECIMAL (7, 0) NOT NULL WITH 
>> DEFAULT,BSVNR   DECIMAL (2, 0) NOT NULL WITH DEFAULT ); 
> Label 
>> on IBPDDB071/R004660V(PERSONNR   IS 'PERSONNR', LFDNR1 IS 'LFDNR1', 

>> VOTYP  IS 'VOTYP', BSSTAMMNR  IS 'BSSTAMMNR', BSVNR  IS 
>> 'BSVNR');'''
>>
>> Vtedy mi horeuvedeny regexp matchuje (pretoze je greedy) vsetko, takze 
>> rozpozna vsetko od 'CREATE TABLE(' az po poslednu zatvorku ')' stringu 
>> t.j. '..); LABEL ON(..' ale ja potrebujem aby rozpoznal len to co je v 
>> tele CREATE TABLE. 
>>
>> Vie mi niekto poradit ako napisat ten regularny vyraz aby robil co 
>> potrebujem?

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Mgr. Ing. Roman MIKLÓŠ 
Prvá stavebná sporiteľňa a.s. 
Bajkalská 30, P. O. Box 48 
829 48  Bratislava 25 
Tel.: +421/ 2 / 582 31 174 
Fax: +421/ 2 / 582 31 109 

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s regularnym vyrazom

2007-02-02 Tema obsahu Jan Janech
[EMAIL PROTECTED] wrote:
> Predtym som cital ( 
> http://www.onlamp.com/pub/a/python/2006/01/26/pyparsing.html ) o module 
> pyparsing  ( http://pyparsing.wikispaces.com/), ale zial nemal som cas sa 
> s tym zaoberat. Doteraz parsujem vsetko iba regularnymi vyrazmi. Zda sa mi 
> to najrychlejsie riesenie - i ked nie najlepsie a ma to tiez svoje hranice 
> a uskalia.
> 
> Dik za info -o  yapps-e som doteraz nepocul. 
> Nevidim dokumetaciu Yappsu na tej stranke. preto sa chcem spytat: 
> 1. aky  je vstup pre Yapps? Nejako zapisana gramatika?
> 2. pouzil si Yapps1 alebo Yapps2
> 3. Nemas nejaky kratky priklad ako si parsoval to SQL?
> 
> s pozdravom
> 
> Roman

caw... kedysi som robil alter script generator pre mysql. nechcem to
prikladat do prilohy, neviem ci by to preslo cez mailing list, tak som
to vyvesil na http://st.fri.utc.sk/~janech/SQLAlterGenerator.tgz
Pre teba je dolezity subor generator/SQLParser.g

Ja som pred tym tiez parsoval vsetko cez regulare... ale hento mi dava
omnoho viac moznosti

> Na taketo veci sa hodia skor parser-generatory ako regularne vyrazy. Ja 
> pouzivam YAPPS (http://theory.stanford.edu/~amitp/yapps/). Konkretne SQL 
> som s nim uz parsoval.
> 
> [EMAIL PROTECTED] wrote:
>> Rad by som tymto oslovil odbornikov na regularne vyrazy.
>>
>> Extrahujem datove polia tabulky cez regularny vyraz takto:
>> --- skript ---
>> import sys,re
>>
>> sql_statement='''CREATE TABLE IBPDDB071/R004660V
>> (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 
> DECIMAL 
>>   (3, 0) NOT NULL WITH DEFAULT, VOTYP   CHARACTER   (1) NOT 
>> NULL WITH DEFAULT, BSSTAMMNR   DECIMAL (7, 0) NOT NULL WITH 
>> DEFAULT,BSVNR   DECIMAL (2, 0) NOT NULL WITH DEFAULT );'''
>> regexp_sql_create=\
>> re.compile(r"^\s*CREATE\s+TABLE\s+"
>>r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*"
>>r"\((?P.*)\)\s*")
>>
>> result=regexp_sql_create.search(sql_statement)
>> if result == None:
>>   # CREATE TABLE statement not valid ! 
>>   print "SQL CREATE TABLE statement is not valid !!!"
>>   sys.exit()
>> else:
>>   # Parse data from RegExp
>>   library=result.group('library')
>>   print "Library=%s" % library
>>   table=result.group('file')
>>   print "Table=%s" %table
>>   table_field_def=result.group('tbl_field_def')
>>   print "Field Definitions=%s" % table_field_def
>>  konec skriptu 
>>
>> Potom definicie dat. poli dalej pracovavam. 
>> Toto by fungovalo, az na to ze SQL-skript je vygenerovany a okrem CREATE 
> 
>> TABLE (...); moze obsahovat aj LABEL ON (...);
>> takze moze vyzerat takto:
>>
>> sql_statement='''CREATE TABLE IBPDDB071/R004660V
>> (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 
> DECIMAL 
>>   (3, 0) NOT NULL WITH DEFAULT, VOTYP   CHARACTER   (1) NOT 
>> NULL WITH DEFAULT, BSSTAMMNR   DECIMAL (7, 0) NOT NULL WITH 
>> DEFAULT,BSVNR   DECIMAL (2, 0) NOT NULL WITH DEFAULT ); 
> Label 
>> on IBPDDB071/R004660V(PERSONNR   IS 'PERSONNR', LFDNR1 IS 'LFDNR1', 
>> VOTYP  IS 'VOTYP', BSSTAMMNR  IS 'BSSTAMMNR', BSVNR  IS 
>> 'BSVNR');'''
>>
>> Vtedy mi horeuvedeny regexp matchuje (pretoze je greedy) vsetko, takze 
>> rozpozna vsetko od 'CREATE TABLE(' az po poslednu zatvorku ')' stringu 
>> t.j. '..); LABEL ON(..' ale ja potrebujem aby rozpoznal len to co je v 
>> tele CREATE TABLE. 
>>
>> Vie mi niekto poradit ako napisat ten regularny vyraz aby robil co 
>> potrebujem?

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s regularnym vyrazom

2007-02-02 Tema obsahu Petr Prikryl
[EMAIL PROTECTED]
> To som skusal ale neni to tak jednoduche. 
> --
> [...]'''CREATE TABLE IBPDDB071/R004660V
> (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, 
> LFDNR1 DECIMAL (3, 0) [...] );'''
> regexp_sql_create=\
> re.compile(r"^\s*CREATE\s+TABLE\s+"
>r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*"
>r"\((?P.*?)\)\s*")

No jasně. Když jsou vevnitř závorky, tak to nemůže
fungovat. Problém je principiální. Regulární výrazy
obecně nemohou popisovat řetězce jazyků, které obsahují
párové struktury. Možná se dají zpracovat nějaké speciální
případy na základě dalších znalostí.

pepr
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s regularnym vyrazom

2007-02-02 Tema obsahu RMiklos
ok funguje to, vcera som si to nejako nevsimol.




"Petr Hlávka" <[EMAIL PROTECTED]> 
Sent by: [EMAIL PROTECTED]
01.02.2007 17:44
Please respond to
Konference PyCZ 


To
"Konference PyCZ" 
cc

Subject
Re: [python] Problem s regularnym vyrazom






Dobry den,

vsak uprava s [^;] nerika, ze statement musi koncit strednikem, pouze
reguralni vyraz nepreskoci pres strednik na dalsi prikaz LABEL ON...

  S pozdravem Petr Hlavka.

On 2/1/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
> No ano, ale ak tam je iba jedno CREATE TABLE(...) tak to nemusi byt
> ukoncene so strednikom ;
>
> Ja som zatial obisiel ten regularny vyraz tak, ze este ked vsetko
> nacitavam do stringu, preventivne hladam prvy strednik zlava a ak tam 
je,
> tak vsetko od neho napravo odstranim
>
> idx_1st_semicolon=sql_statement.find(';')
> if idx_1st_semicolon > 0:
>   sql_statement=sql_statement[:idx_1st_semicolon]
>
> No aj tak by ma zaujimal ten problem s regularnym vyrazom, pretoze som
> skusal aj non greedy ale to pracuje uplne zle.
>
>
>
>
> Leos Pol <[EMAIL PROTECTED]>
> Sent by: [EMAIL PROTECTED]
> 01.02.2007 15:15
> Please respond to
> Konference PyCZ 
>
>
> To
> Konference PyCZ 
> cc
>
> Subject
> Re: [python] Problem s regularnym vyrazom
>
>
>
>
>
>
> Zdravim,
>
> ja bych to asi nelamal pres koleno a udelal bych tohle:
>
> re.compile(r"^\s*CREATE\s+TABLE\s+"
>r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*"
>r"\((?P[^;]*)\)")
>
> tzn: Kazde sql query je ukonceno strednikem.
>
> Leo
>
> [EMAIL PROTECTED] wrote:
> > Rad by som tymto oslovil odbornikov na regularne vyrazy.
> >
> > Extrahujem datove polia tabulky cez regularny vyraz takto:
> > --- skript ---
> > import sys,re
> >
> > sql_statement='''CREATE TABLE IBPDDB071/R004660V
> > (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1
> DECIMAL
> >   (3, 0) NOT NULL WITH DEFAULT, VOTYP   CHARACTER   (1) NOT
> > NULL WITH DEFAULT, BSSTAMMNR   DECIMAL (7, 0) NOT NULL WITH
> > DEFAULT,BSVNR   DECIMAL (2, 0) NOT NULL WITH DEFAULT );'''
> > regexp_sql_create=\
> > re.compile(r"^\s*CREATE\s+TABLE\s+"
> >r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*"
> >r"\((?P.*)\)\s*")
> >
> > result=regexp_sql_create.search(sql_statement)
> > if result == None:
> >   # CREATE TABLE statement not valid !
> >   print "SQL CREATE TABLE statement is not valid !!!"
> >   sys.exit()
> > else:
> >   # Parse data from RegExp
> >   library=result.group('library')
> >   print "Library=%s" % library
> >   table=result.group('file')
> >   print "Table=%s" %table
> >   table_field_def=result.group('tbl_field_def')
> >   print "Field Definitions=%s" % table_field_def
> >  konec skriptu 
> >
> > Potom definicie dat. poli dalej pracovavam.
> > Toto by fungovalo, az na to ze SQL-skript je vygenerovany a okrem 
CREATE
>
> > TABLE (...); moze obsahovat aj LABEL ON (...);
> > takze moze vyzerat takto:
> >
> > sql_statement='''CREATE TABLE IBPDDB071/R004660V
> > (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1
> DECIMAL
> >   (3, 0) NOT NULL WITH DEFAULT, VOTYP   CHARACTER   (1) NOT
> > NULL WITH DEFAULT, BSSTAMMNR   DECIMAL (7, 0) NOT NULL WITH
> > DEFAULT,BSVNR   DECIMAL (2, 0) NOT NULL WITH DEFAULT );
> Label
> > on IBPDDB071/R004660V(PERSONNR   IS 'PERSONNR', LFDNR1 IS 
'LFDNR1',
> > VOTYP  IS 'VOTYP', BSSTAMMNR  IS 'BSSTAMMNR', BSVNR  IS
> > 'BSVNR');'''
> >
> > Vtedy mi horeuvedeny regexp matchuje (pretoze je greedy) vsetko, takze
> > rozpozna vsetko od 'CREATE TABLE(' az po poslednu zatvorku ')' stringu
> > t.j. '..); LABEL ON(..' ale ja potrebujem aby rozpoznal len to co je v
> > tele CREATE TABLE.
> >
> > Vie mi niekto poradit ako napisat ten regularny vyraz aby robil co
> > potrebujem?
> > Mgr. Ing. Roman MIKLÓŠ
> > Prvá stavebná sporiteľňa a.s.
> > Bajkalská 30, P. O. Box 48
> > 829 48  Bratislava 25
> > Tel.: +421/ 2 / 582 31 174
> > Fax: +421/ 2 / 582 31 109
> >
> > ___
> > Python mailing li

Re: [python] Problem s regularnym vyrazom

2007-02-02 Tema obsahu RMiklos
Predtym som cital ( 
http://www.onlamp.com/pub/a/python/2006/01/26/pyparsing.html ) o module 
pyparsing  ( http://pyparsing.wikispaces.com/), ale zial nemal som cas sa 
s tym zaoberat. Doteraz parsujem vsetko iba regularnymi vyrazmi. Zda sa mi 
to najrychlejsie riesenie - i ked nie najlepsie a ma to tiez svoje hranice 
a uskalia.

Dik za info -o  yapps-e som doteraz nepocul. 
Nevidim dokumetaciu Yappsu na tej stranke. preto sa chcem spytat: 
1. aky  je vstup pre Yapps? Nejako zapisana gramatika?
2. pouzil si Yapps1 alebo Yapps2
3. Nemas nejaky kratky priklad ako si parsoval to SQL?

s pozdravom

Roman

 




Jan Janech <[EMAIL PROTECTED]> 
Sent by: [EMAIL PROTECTED]
01.02.2007 16:51
Please respond to
Konference PyCZ 


To
Konference PyCZ 
cc

Subject
Re: [python] Problem s regularnym vyrazom






Na taketo veci sa hodia skor parser-generatory ako regularne vyrazy. Ja 
pouzivam YAPPS (http://theory.stanford.edu/~amitp/yapps/). Konkretne SQL 
som s nim uz parsoval.

[EMAIL PROTECTED] wrote:
> Rad by som tymto oslovil odbornikov na regularne vyrazy.
> 
> Extrahujem datove polia tabulky cez regularny vyraz takto:
> --- skript ---
> import sys,re
> 
> sql_statement='''CREATE TABLE IBPDDB071/R004660V
> (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 
DECIMAL 
>   (3, 0) NOT NULL WITH DEFAULT, VOTYP   CHARACTER   (1) NOT 
> NULL WITH DEFAULT, BSSTAMMNR   DECIMAL (7, 0) NOT NULL WITH 
> DEFAULT,BSVNR   DECIMAL (2, 0) NOT NULL WITH DEFAULT );'''
> regexp_sql_create=\
> re.compile(r"^\s*CREATE\s+TABLE\s+"
>r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*"
>r"\((?P.*)\)\s*")
> 
> result=regexp_sql_create.search(sql_statement)
> if result == None:
>   # CREATE TABLE statement not valid ! 
>   print "SQL CREATE TABLE statement is not valid !!!"
>   sys.exit()
> else:
>   # Parse data from RegExp
>   library=result.group('library')
>   print "Library=%s" % library
>   table=result.group('file')
>   print "Table=%s" %table
>   table_field_def=result.group('tbl_field_def')
>   print "Field Definitions=%s" % table_field_def
>  konec skriptu 
> 
> Potom definicie dat. poli dalej pracovavam. 
> Toto by fungovalo, az na to ze SQL-skript je vygenerovany a okrem CREATE 

> TABLE (...); moze obsahovat aj LABEL ON (...);
> takze moze vyzerat takto:
> 
> sql_statement='''CREATE TABLE IBPDDB071/R004660V
> (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 
DECIMAL 
>   (3, 0) NOT NULL WITH DEFAULT, VOTYP   CHARACTER   (1) NOT 
> NULL WITH DEFAULT, BSSTAMMNR   DECIMAL (7, 0) NOT NULL WITH 
> DEFAULT,BSVNR   DECIMAL (2, 0) NOT NULL WITH DEFAULT ); 
Label 
> on IBPDDB071/R004660V(PERSONNR   IS 'PERSONNR', LFDNR1 IS 'LFDNR1', 
> VOTYP  IS 'VOTYP', BSSTAMMNR  IS 'BSSTAMMNR', BSVNR  IS 
> 'BSVNR');'''
> 
> Vtedy mi horeuvedeny regexp matchuje (pretoze je greedy) vsetko, takze 
> rozpozna vsetko od 'CREATE TABLE(' az po poslednu zatvorku ')' stringu 
> t.j. '..); LABEL ON(..' ale ja potrebujem aby rozpoznal len to co je v 
> tele CREATE TABLE. 
> 
> Vie mi niekto poradit ako napisat ten regularny vyraz aby robil co 
> potrebujem?
> Mgr. Ing. Roman MIKLÓŠ 
> Prvá stavebná sporiteľňa a.s. 
> Bajkalská 30, P. O. Box 48 
> 829 48  Bratislava 25 
> Tel.: +421/ 2 / 582 31 174 
> Fax: +421/ 2 / 582 31 109 
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Mgr. Ing. Roman MIKLÓŠ 
Prvá stavebná sporiteľňa a.s. 
Bajkalská 30, P. O. Box 48 
829 48  Bratislava 25 
Tel.: +421/ 2 / 582 31 174 
Fax: +421/ 2 / 582 31 109 

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s regularnym vyrazom

2007-02-01 Tema obsahu Petr Hlávka
Dobry den,

vsak uprava s [^;] nerika, ze statement musi koncit strednikem, pouze
reguralni vyraz nepreskoci pres strednik na dalsi prikaz LABEL ON...

  S pozdravem Petr Hlavka.

On 2/1/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
> No ano, ale ak tam je iba jedno CREATE TABLE(...) tak to nemusi byt
> ukoncene so strednikom ;
>
> Ja som zatial obisiel ten regularny vyraz tak, ze este ked vsetko
> nacitavam do stringu, preventivne hladam prvy strednik zlava a ak tam je,
> tak vsetko od neho napravo odstranim
>
> idx_1st_semicolon=sql_statement.find(';')
> if idx_1st_semicolon > 0:
>   sql_statement=sql_statement[:idx_1st_semicolon]
>
> No aj tak by ma zaujimal ten problem s regularnym vyrazom, pretoze som
> skusal aj non greedy ale to pracuje uplne zle.
>
>
>
>
> Leos Pol <[EMAIL PROTECTED]>
> Sent by: [EMAIL PROTECTED]
> 01.02.2007 15:15
> Please respond to
> Konference PyCZ 
>
>
> To
> Konference PyCZ 
> cc
>
> Subject
> Re: [python] Problem s regularnym vyrazom
>
>
>
>
>
>
> Zdravim,
>
> ja bych to asi nelamal pres koleno a udelal bych tohle:
>
> re.compile(r"^\s*CREATE\s+TABLE\s+"
>r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*"
>r"\((?P[^;]*)\)")
>
> tzn: Kazde sql query je ukonceno strednikem.
>
> Leo
>
> [EMAIL PROTECTED] wrote:
> > Rad by som tymto oslovil odbornikov na regularne vyrazy.
> >
> > Extrahujem datove polia tabulky cez regularny vyraz takto:
> > --- skript ---
> > import sys,re
> >
> > sql_statement='''CREATE TABLE IBPDDB071/R004660V
> > (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1
> DECIMAL
> >   (3, 0) NOT NULL WITH DEFAULT, VOTYP   CHARACTER   (1) NOT
> > NULL WITH DEFAULT, BSSTAMMNR   DECIMAL (7, 0) NOT NULL WITH
> > DEFAULT,BSVNR   DECIMAL (2, 0) NOT NULL WITH DEFAULT );'''
> > regexp_sql_create=\
> > re.compile(r"^\s*CREATE\s+TABLE\s+"
> >r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*"
> >r"\((?P.*)\)\s*")
> >
> > result=regexp_sql_create.search(sql_statement)
> > if result == None:
> >   # CREATE TABLE statement not valid !
> >   print "SQL CREATE TABLE statement is not valid !!!"
> >   sys.exit()
> > else:
> >   # Parse data from RegExp
> >   library=result.group('library')
> >   print "Library=%s" % library
> >   table=result.group('file')
> >   print "Table=%s" %table
> >   table_field_def=result.group('tbl_field_def')
> >   print "Field Definitions=%s" % table_field_def
> >  konec skriptu 
> >
> > Potom definicie dat. poli dalej pracovavam.
> > Toto by fungovalo, az na to ze SQL-skript je vygenerovany a okrem CREATE
>
> > TABLE (...); moze obsahovat aj LABEL ON (...);
> > takze moze vyzerat takto:
> >
> > sql_statement='''CREATE TABLE IBPDDB071/R004660V
> > (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1
> DECIMAL
> >   (3, 0) NOT NULL WITH DEFAULT, VOTYP   CHARACTER   (1) NOT
> > NULL WITH DEFAULT, BSSTAMMNR   DECIMAL (7, 0) NOT NULL WITH
> > DEFAULT,BSVNR   DECIMAL (2, 0) NOT NULL WITH DEFAULT );
> Label
> > on IBPDDB071/R004660V(PERSONNR   IS 'PERSONNR', LFDNR1 IS 'LFDNR1',
> > VOTYP  IS 'VOTYP', BSSTAMMNR  IS 'BSSTAMMNR', BSVNR  IS
> > 'BSVNR');'''
> >
> > Vtedy mi horeuvedeny regexp matchuje (pretoze je greedy) vsetko, takze
> > rozpozna vsetko od 'CREATE TABLE(' az po poslednu zatvorku ')' stringu
> > t.j. '..); LABEL ON(..' ale ja potrebujem aby rozpoznal len to co je v
> > tele CREATE TABLE.
> >
> > Vie mi niekto poradit ako napisat ten regularny vyraz aby robil co
> > potrebujem?
> > Mgr. Ing. Roman MIKLÓŠ
> > Prvá stavebná sporiteľňa a.s.
> > Bajkalská 30, P. O. Box 48
> > 829 48  Bratislava 25
> > Tel.: +421/ 2 / 582 31 174
> > Fax: +421/ 2 / 582 31 109
> >
> > ___
> > Python mailing list
> > Python@py.cz
> > http://www.py.cz/mailman/listinfo/python
> >
>
>
> --
> 
> Leos Pol
> SW Engineer
> Radiante Corp.
>
> If it can be imagined,
> we can implement it
>
> ___
> Python mailing list
> Python@py.cz
> http://www.py.cz/mailman/listinfo/python
>
>
> Mgr. Ing. Roman MIKLÓŠ
> Prvá stavebná sporiteľňa a.s.
> Bajkalská 30, P. O. Box 48
> 829 48  Bratislava 25
> Tel.: +421/ 2 / 582 31 174
> Fax: +421/ 2 / 582 31 109
>
> ___
> Python mailing list
> Python@py.cz
> http://www.py.cz/mailman/listinfo/python
>
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s regularnym vyrazom

2007-02-01 Tema obsahu Jan Janech
Na taketo veci sa hodia skor parser-generatory ako regularne vyrazy. Ja 
pouzivam YAPPS (http://theory.stanford.edu/~amitp/yapps/). Konkretne SQL 
som s nim uz parsoval.

[EMAIL PROTECTED] wrote:
> Rad by som tymto oslovil odbornikov na regularne vyrazy.
> 
> Extrahujem datove polia tabulky cez regularny vyraz takto:
> --- skript ---
> import sys,re
> 
> sql_statement='''CREATE TABLE IBPDDB071/R004660V
> (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 DECIMAL  
>   (3, 0) NOT NULL WITH DEFAULT, VOTYP   CHARACTER   (1)NOT 
> NULL WITH DEFAULT, BSSTAMMNR   DECIMAL (7, 0) NOT NULL WITH 
> DEFAULT,BSVNR   DECIMAL (2, 0) NOT NULL WITH DEFAULT );'''
> regexp_sql_create=\
> re.compile(r"^\s*CREATE\s+TABLE\s+"
>r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*"
>r"\((?P.*)\)\s*")
> 
> result=regexp_sql_create.search(sql_statement)
> if result == None:
>   # CREATE TABLE statement not valid ! 
>   print "SQL CREATE TABLE statement is not valid !!!"
>   sys.exit()
> else:
>   # Parse data from RegExp
>   library=result.group('library')
>   print "Library=%s" % library
>   table=result.group('file')
>   print "Table=%s" %table
>   table_field_def=result.group('tbl_field_def')
>   print "Field Definitions=%s" % table_field_def
>  konec skriptu 
> 
> Potom definicie dat. poli dalej pracovavam. 
> Toto by fungovalo, az na to ze SQL-skript je vygenerovany a okrem CREATE 
> TABLE (...); moze obsahovat aj LABEL ON (...);
> takze moze vyzerat takto:
> 
> sql_statement='''CREATE TABLE IBPDDB071/R004660V
> (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 DECIMAL  
>   (3, 0) NOT NULL WITH DEFAULT, VOTYP   CHARACTER   (1)NOT 
> NULL WITH DEFAULT, BSSTAMMNR   DECIMAL (7, 0) NOT NULL WITH 
> DEFAULT,BSVNR   DECIMAL (2, 0) NOT NULL WITH DEFAULT );  Label 
> on IBPDDB071/R004660V(PERSONNR   IS 'PERSONNR', LFDNR1 IS 'LFDNR1', 
> VOTYP  IS 'VOTYP', BSSTAMMNR  IS 'BSSTAMMNR', BSVNR  IS 
> 'BSVNR');'''
> 
> Vtedy mi horeuvedeny regexp matchuje (pretoze je greedy) vsetko, takze 
> rozpozna vsetko od 'CREATE TABLE(' az po poslednu zatvorku ')' stringu 
> t.j. '..); LABEL ON(..' ale ja potrebujem aby rozpoznal len to co je v 
> tele CREATE TABLE. 
> 
> Vie mi niekto poradit ako napisat ten regularny vyraz aby robil co 
> potrebujem?
> Mgr. Ing. Roman MIKLÓŠ 
> Prvá stavebná sporiteľňa a.s. 
> Bajkalská 30, P. O. Box 48 
> 829 48  Bratislava 25 
> Tel.: +421/ 2 / 582 31 174 
> Fax: +421/ 2 / 582 31 109 
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s regularnym vyrazom

2007-02-01 Tema obsahu RMiklos
To som skusal ale neni to tak jednoduche. 
Toto 
--
import sys,re
sql_statement='''CREATE TABLE IBPDDB071/R004660V
(PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 DECIMAL  
  (3, 0) NOT NULL WITH DEFAULT, VOTYP   CHARACTER   (1)NOT 
NULL WITH DEFAULT, BSSTAMMNR   DECIMAL (7, 0) NOT NULL WITH 
DEFAULT,BSVNR   DECIMAL (2, 0) NOT NULL WITH DEFAULT );  Label 
on IBPDDB071/R004660V(PERSONNR   IS 'PERSONNR', LFDNR1 IS 'LFDNR1', 
VOTYP  IS 'VOTYP', BSSTAMMNR  IS 'BSSTAMMNR', BSVNR  IS 
'BSVNR');'''
regexp_sql_create=\
re.compile(r"^\s*CREATE\s+TABLE\s+"
   r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*"
   r"\((?P.*?)\)\s*")

result=regexp_sql_create.search(sql_statement)
if result == None:
  # CREATE TABLE statement not valid ! 
  print "SQL CREATE TABLE statement is not valid !!!"
  sys.exit()
else:
  # Parse data from RegExp
  library=result.group('library')
  print "Library=%s" % library
  table=result.group('file')
  print "Table=%s" %table
  table_field_def=result.group('tbl_field_def')
  print "Field Definitions=%s" % table_field_def
--
da vysledok

Field Definitions=PERSONNRDECIMAL (10, 0

co je zle - vsetko ostatne to urezalo -pretoze zatvorky ')' su aj v 
definiciach poli




"Petr Prikryl" <[EMAIL PROTECTED]> 
Sent by: [EMAIL PROTECTED]
01.02.2007 15:22
Please respond to
Konference PyCZ 


To
"Konference PyCZ" 
cc

Subject
Re: [python] Problem s regularnym vyrazom






Roman MIKLÓŠ
> Extrahujem datove polia tabulky cez regularny vyraz takto:
> [...]
> regexp_sql_create=\
> re.compile(r"^\s*CREATE\s+TABLE\s+"
>r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*"
>r"\((?P.*)\)\s*")
> [...]
> Toto by fungovalo, az na to ze SQL-skript je vygenerovany a 
> okrem CREATE TABLE (...); moze obsahovat aj LABEL ON (...);
> [...]
> Vtedy mi horeuvedeny regexp matchuje (pretoze je greedy) 
> vsetko, takze rozpozna vsetko od 'CREATE TABLE(' az po 
> poslednu zatvorku ')' stringu t.j. '..); LABEL ON(..' 
> ale ja potrebujem aby rozpoznal len to co je v 
> tele CREATE TABLE. 
> 
> Vie mi niekto poradit ako napisat ten regularny vyraz 
> aby robil co potrebujem?

Stačí upravit ten regulární výraz tak, aby nebyl greedy,
tj. aby zastavil před první zavírací závorkou. K tomu stačí
modifikovat sekvenci '.*' na posledním řádku na '.*?'.
Otazník za opakovcím symbolem zajistí nežravou interpretaci.

pepr
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Mgr. Ing. Roman MIKLÓŠ 
Prvá stavebná sporiteľňa a.s. 
Bajkalská 30, P. O. Box 48 
829 48  Bratislava 25 
Tel.: +421/ 2 / 582 31 174 
Fax: +421/ 2 / 582 31 109 

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s regularnym vyrazom

2007-02-01 Tema obsahu RMiklos
No ano, ale ak tam je iba jedno CREATE TABLE(...) tak to nemusi byt 
ukoncene so strednikom ;

Ja som zatial obisiel ten regularny vyraz tak, ze este ked vsetko 
nacitavam do stringu, preventivne hladam prvy strednik zlava a ak tam je, 
tak vsetko od neho napravo odstranim

idx_1st_semicolon=sql_statement.find(';')
if idx_1st_semicolon > 0:
  sql_statement=sql_statement[:idx_1st_semicolon]

No aj tak by ma zaujimal ten problem s regularnym vyrazom, pretoze som 
skusal aj non greedy ale to pracuje uplne zle.




Leos Pol <[EMAIL PROTECTED]> 
Sent by: [EMAIL PROTECTED]
01.02.2007 15:15
Please respond to
Konference PyCZ 


To
Konference PyCZ 
cc

Subject
Re: [python] Problem s regularnym vyrazom






Zdravim,

ja bych to asi nelamal pres koleno a udelal bych tohle:

re.compile(r"^\s*CREATE\s+TABLE\s+"
   r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*"
   r"\((?P[^;]*)\)")

tzn: Kazde sql query je ukonceno strednikem.

Leo

[EMAIL PROTECTED] wrote:
> Rad by som tymto oslovil odbornikov na regularne vyrazy.
>
> Extrahujem datove polia tabulky cez regularny vyraz takto:
> --- skript ---
> import sys,re
>
> sql_statement='''CREATE TABLE IBPDDB071/R004660V
> (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 
DECIMAL 
>   (3, 0) NOT NULL WITH DEFAULT, VOTYP   CHARACTER   (1) NOT 
> NULL WITH DEFAULT, BSSTAMMNR   DECIMAL (7, 0) NOT NULL WITH 
> DEFAULT,BSVNR   DECIMAL (2, 0) NOT NULL WITH DEFAULT );'''
> regexp_sql_create=\
> re.compile(r"^\s*CREATE\s+TABLE\s+"
>r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*"
>r"\((?P.*)\)\s*")
>
> result=regexp_sql_create.search(sql_statement)
> if result == None:
>   # CREATE TABLE statement not valid ! 
>   print "SQL CREATE TABLE statement is not valid !!!"
>   sys.exit()
> else:
>   # Parse data from RegExp
>   library=result.group('library')
>   print "Library=%s" % library
>   table=result.group('file')
>   print "Table=%s" %table
>   table_field_def=result.group('tbl_field_def')
>   print "Field Definitions=%s" % table_field_def
>  konec skriptu 
>
> Potom definicie dat. poli dalej pracovavam. 
> Toto by fungovalo, az na to ze SQL-skript je vygenerovany a okrem CREATE 

> TABLE (...); moze obsahovat aj LABEL ON (...);
> takze moze vyzerat takto:
>
> sql_statement='''CREATE TABLE IBPDDB071/R004660V
> (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 
DECIMAL 
>   (3, 0) NOT NULL WITH DEFAULT, VOTYP   CHARACTER   (1) NOT 
> NULL WITH DEFAULT, BSSTAMMNR   DECIMAL (7, 0) NOT NULL WITH 
> DEFAULT,BSVNR   DECIMAL (2, 0) NOT NULL WITH DEFAULT ); 
Label 
> on IBPDDB071/R004660V(PERSONNR   IS 'PERSONNR', LFDNR1 IS 'LFDNR1', 
> VOTYP  IS 'VOTYP', BSSTAMMNR  IS 'BSSTAMMNR', BSVNR  IS 
> 'BSVNR');'''
>
> Vtedy mi horeuvedeny regexp matchuje (pretoze je greedy) vsetko, takze 
> rozpozna vsetko od 'CREATE TABLE(' az po poslednu zatvorku ')' stringu 
> t.j. '..); LABEL ON(..' ale ja potrebujem aby rozpoznal len to co je v 
> tele CREATE TABLE. 
>
> Vie mi niekto poradit ako napisat ten regularny vyraz aby robil co 
> potrebujem?
> Mgr. Ing. Roman MIKLÓŠ 
> Prvá stavebná sporiteľňa a.s. 
> Bajkalská 30, P. O. Box 48 
> 829 48  Bratislava 25 
> Tel.: +421/ 2 / 582 31 174 
> Fax: +421/ 2 / 582 31 109 
>
> ___
> Python mailing list
> Python@py.cz
> http://www.py.cz/mailman/listinfo/python
> 


-- 

Leos Pol
SW Engineer
Radiante Corp.

If it can be imagined,
we can implement it

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Mgr. Ing. Roman MIKLÓŠ 
Prvá stavebná sporiteľňa a.s. 
Bajkalská 30, P. O. Box 48 
829 48  Bratislava 25 
Tel.: +421/ 2 / 582 31 174 
Fax: +421/ 2 / 582 31 109 

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s regularnym vyrazom

2007-02-01 Tema obsahu Petr Prikryl
Roman MIKLÓŠ
> Extrahujem datove polia tabulky cez regularny vyraz takto:
> [...]
> regexp_sql_create=\
> re.compile(r"^\s*CREATE\s+TABLE\s+"
>r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*"
>r"\((?P.*)\)\s*")
> [...]
> Toto by fungovalo, az na to ze SQL-skript je vygenerovany a 
> okrem CREATE TABLE (...); moze obsahovat aj LABEL ON (...);
> [...]
> Vtedy mi horeuvedeny regexp matchuje (pretoze je greedy) 
> vsetko, takze rozpozna vsetko od 'CREATE TABLE(' az po 
> poslednu zatvorku ')' stringu t.j. '..); LABEL ON(..' 
> ale ja potrebujem aby rozpoznal len to co je v 
> tele CREATE TABLE. 
> 
> Vie mi niekto poradit ako napisat ten regularny vyraz 
> aby robil co potrebujem?

Stačí upravit ten regulární výraz tak, aby nebyl greedy,
tj. aby zastavil před první zavírací závorkou. K tomu stačí
modifikovat sekvenci '.*' na posledním řádku na '.*?'.
Otazník za opakovcím symbolem zajistí nežravou interpretaci.

pepr
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s regularnym vyrazom

2007-02-01 Tema obsahu Leos Pol
Zdravim,

ja bych to asi nelamal pres koleno a udelal bych tohle:

re.compile(r"^\s*CREATE\s+TABLE\s+"
   r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*"
   r"\((?P[^;]*)\)")

tzn: Kazde sql query je ukonceno strednikem.

Leo

[EMAIL PROTECTED] wrote:
> Rad by som tymto oslovil odbornikov na regularne vyrazy.
>
> Extrahujem datove polia tabulky cez regularny vyraz takto:
> --- skript ---
> import sys,re
>
> sql_statement='''CREATE TABLE IBPDDB071/R004660V
> (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 DECIMAL  
>   (3, 0) NOT NULL WITH DEFAULT, VOTYP   CHARACTER   (1)NOT 
> NULL WITH DEFAULT, BSSTAMMNR   DECIMAL (7, 0) NOT NULL WITH 
> DEFAULT,BSVNR   DECIMAL (2, 0) NOT NULL WITH DEFAULT );'''
> regexp_sql_create=\
> re.compile(r"^\s*CREATE\s+TABLE\s+"
>r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*"
>r"\((?P.*)\)\s*")
>
> result=regexp_sql_create.search(sql_statement)
> if result == None:
>   # CREATE TABLE statement not valid ! 
>   print "SQL CREATE TABLE statement is not valid !!!"
>   sys.exit()
> else:
>   # Parse data from RegExp
>   library=result.group('library')
>   print "Library=%s" % library
>   table=result.group('file')
>   print "Table=%s" %table
>   table_field_def=result.group('tbl_field_def')
>   print "Field Definitions=%s" % table_field_def
>  konec skriptu 
>
> Potom definicie dat. poli dalej pracovavam. 
> Toto by fungovalo, az na to ze SQL-skript je vygenerovany a okrem CREATE 
> TABLE (...); moze obsahovat aj LABEL ON (...);
> takze moze vyzerat takto:
>
> sql_statement='''CREATE TABLE IBPDDB071/R004660V
> (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 DECIMAL  
>   (3, 0) NOT NULL WITH DEFAULT, VOTYP   CHARACTER   (1)NOT 
> NULL WITH DEFAULT, BSSTAMMNR   DECIMAL (7, 0) NOT NULL WITH 
> DEFAULT,BSVNR   DECIMAL (2, 0) NOT NULL WITH DEFAULT );  Label 
> on IBPDDB071/R004660V(PERSONNR   IS 'PERSONNR', LFDNR1 IS 'LFDNR1', 
> VOTYP  IS 'VOTYP', BSSTAMMNR  IS 'BSSTAMMNR', BSVNR  IS 
> 'BSVNR');'''
>
> Vtedy mi horeuvedeny regexp matchuje (pretoze je greedy) vsetko, takze 
> rozpozna vsetko od 'CREATE TABLE(' az po poslednu zatvorku ')' stringu 
> t.j. '..); LABEL ON(..' ale ja potrebujem aby rozpoznal len to co je v 
> tele CREATE TABLE. 
>
> Vie mi niekto poradit ako napisat ten regularny vyraz aby robil co 
> potrebujem?
> Mgr. Ing. Roman MIKLÓŠ 
> Prvá stavebná sporiteľňa a.s. 
> Bajkalská 30, P. O. Box 48 
> 829 48  Bratislava 25 
> Tel.: +421/ 2 / 582 31 174 
> Fax: +421/ 2 / 582 31 109 
>
> ___
> Python mailing list
> Python@py.cz
> http://www.py.cz/mailman/listinfo/python
>   


-- 

Leos Pol
SW Engineer
Radiante Corp.

If it can be imagined,
we can implement it

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


[python] Problem s regularnym vyrazom

2007-02-01 Tema obsahu RMiklos
Rad by som tymto oslovil odbornikov na regularne vyrazy.

Extrahujem datove polia tabulky cez regularny vyraz takto:
--- skript ---
import sys,re

sql_statement='''CREATE TABLE IBPDDB071/R004660V
(PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 DECIMAL  
  (3, 0) NOT NULL WITH DEFAULT, VOTYP   CHARACTER   (1)NOT 
NULL WITH DEFAULT, BSSTAMMNR   DECIMAL (7, 0) NOT NULL WITH 
DEFAULT,BSVNR   DECIMAL (2, 0) NOT NULL WITH DEFAULT );'''
regexp_sql_create=\
re.compile(r"^\s*CREATE\s+TABLE\s+"
   r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*"
   r"\((?P.*)\)\s*")

result=regexp_sql_create.search(sql_statement)
if result == None:
  # CREATE TABLE statement not valid ! 
  print "SQL CREATE TABLE statement is not valid !!!"
  sys.exit()
else:
  # Parse data from RegExp
  library=result.group('library')
  print "Library=%s" % library
  table=result.group('file')
  print "Table=%s" %table
  table_field_def=result.group('tbl_field_def')
  print "Field Definitions=%s" % table_field_def
 konec skriptu 

Potom definicie dat. poli dalej pracovavam. 
Toto by fungovalo, az na to ze SQL-skript je vygenerovany a okrem CREATE 
TABLE (...); moze obsahovat aj LABEL ON (...);
takze moze vyzerat takto:

sql_statement='''CREATE TABLE IBPDDB071/R004660V
(PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 DECIMAL  
  (3, 0) NOT NULL WITH DEFAULT, VOTYP   CHARACTER   (1)NOT 
NULL WITH DEFAULT, BSSTAMMNR   DECIMAL (7, 0) NOT NULL WITH 
DEFAULT,BSVNR   DECIMAL (2, 0) NOT NULL WITH DEFAULT );  Label 
on IBPDDB071/R004660V(PERSONNR   IS 'PERSONNR', LFDNR1 IS 'LFDNR1', 
VOTYP  IS 'VOTYP', BSSTAMMNR  IS 'BSSTAMMNR', BSVNR  IS 
'BSVNR');'''

Vtedy mi horeuvedeny regexp matchuje (pretoze je greedy) vsetko, takze 
rozpozna vsetko od 'CREATE TABLE(' az po poslednu zatvorku ')' stringu 
t.j. '..); LABEL ON(..' ale ja potrebujem aby rozpoznal len to co je v 
tele CREATE TABLE. 

Vie mi niekto poradit ako napisat ten regularny vyraz aby robil co 
potrebujem?
Mgr. Ing. Roman MIKLÓŠ 
Prvá stavebná sporiteľňa a.s. 
Bajkalská 30, P. O. Box 48 
829 48  Bratislava 25 
Tel.: +421/ 2 / 582 31 174 
Fax: +421/ 2 / 582 31 109 

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s kodovanim PyDev - pokracovani

2007-01-30 Tema obsahu Petr Prikryl
Ondrej Beranek
OB> # -*- coding: cp1250 -*-
OB> jmeno = raw_input(u #39;Zadejte jméno (nic => konec):  #39;)
OB> print jmeno

OB> Me v eclipse serve:
OB> Traceback (most recent call last):
OB> File "C:\Documents and 
OB> Settings\Administrator\workspace\prvni\src\temp.py", line 2, in
OB> 

Tipnul bych, že problém není na straně eclipse. V raw_input()
s unicode textem je chyba (už dlouho). Kopíruji jednu z dávných
zpráv...

pepr

> [ 1099364 ] raw_input() displays wrong unicode prompt
> https://sourceforge.net/tracker/index.php?func=detail&aid=1099364&group_id=5470&atid=105470
> 
> ale ted jsem ho tam hledal a vůbec tam není. Taky nechápu, 
> proč tam nejde vyhledávat podle ID.

Je to tam, ale je mezi uzavřenými (kliknutím na link 
se tam dá dostat). Mezi tím došlo k určitému posunu,
ale nejsem s tím tak docela spokojený. Částečné řešení
lze nalézt u poslední poznámky by birkenfeld, tj. explicitně

raw_input(s.encode(sys.stdout.encoding))

Dá se to vyřešit centralizovaně například definicí vlastní funkce:

def my_input(s):
import sys
return raw_input(s.encode(sys.stdout.encoding))

Ale moc se mi to nelíbí, protože takhle by měla fungovat
raw_input() už "od narození".

Aby to celé nezapadlo, přidal jsem výzvu ke komentářům
níže zmíněného patch

https://sourceforge.net/tracker/index.php?func=detail&aid=1214889&group_id=5470&atid=305470

pepr



Date: 2005-06-26 13:34
Sender: birkenfeld
Logged In: YES 
user_id=1188172

Actually, your sys.stdout.encoding is set to something
different than cp1250, which is why the result of DOS type
looks the same as the one of print.

This is because print observes sys.stdout.encoding, while
sys.stdout.write uses the system default encoding, which is,
as you set it, cp1250 and is displayed wrong on the console.

Closing this bug, as it is currently expected behaviour (but
will perhaps change when patch #1214889 is accepted).
 


Date: 2005-06-27 22:56
Sender: prikryl
Logged In: YES 
user_id=771873

Should I understand it that there is no bug, but I do use it 
incorrectly? I cannot agree that this is expected behaviour. (I 
am not the only one who found this strange.) 

Of course, the sys.stdout.encoding is different for a DOS 
window (cp852) than the default encoding (cp1250). Windows 
simply behaves this way when working with DOS window 
(because of legacy DOS applications).

I do not complain on behaviour of sys.stdout.write() but on 
behaviour of raw_input(). The output of raw_input() prompt 
should be displayed the same way as the print diplays the 
results to the user. The raw_input() is used for building user 
interface. Its prompt should not be displayed differently in 
windows that use different encoding (i.e. DOS console vs. 
say IDLE console).

In other words, how should I use raw_input() to make it 
working correctly?
 


Date: 2005-06-27 23:40
Sender: birkenfeld
Logged In: YES 
user_id=1188172

You'll have to explicitly encode the unicode string using
raw_input(s.encode(sys.stdout.encoding)).

As said, this behaviour will change if the patch mentioned
is accepted.
 


___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s kodovanim PyDev - pokracovani

2007-01-30 Tema obsahu Pavel Kosina
Ondrej Beranek napsal(a):
>
> No jenze asi s tim neco spolecneho mit bude protoze podle mne zapis
> jmeno = raw_input(u'Zadejte jméno (nic => konec):')
> znamena jen tolik ze se string 'Zadejte jméno (nic => konec):' prevede 
> ve vysledku na unicode.
> takze ta chyba je neco jineho.
> Neprosel ani zapis
>
> jmeno = raw_input(unicode('Zadejte jméno (nic => konec): ','cp1250'))
>
> ktery by asi projit mel. V idle skutecne projde, a vse bezi korektne. 
> v PyDev ne.
> tohle uz asi s pouzitym kodovanim eclipse nijak nesouvisi.
Takže ten předchozí dotaz je snad už jasný: Musí existovat shoda mezi 
deklarovaným (# -*- coding: cp1250 -*- )a použitým (v jakém je soubor 
skutečně uložen a načten v editoru) kodovaním.

Tento dotaz je trochu o něčem jiném. Chyba je pradvěpodobně v 
implementaci příkazu raw_input(), protože ani mne to takto v Příkazovém 
řádku nefunguje. Finta je jednoduchá:
print u'Zadejte jméno (nic => konec):',
jmeno=raw_input()

Myslím, že řetězce u'Zadejte jméno (nic => konec):' a unicode('Zadejte 
jméno (nic => konec): ','cp1250') jsou ekvivalentní, pokud máš v 
deklaraci # -*- coding: cp1250 -*- a v kodovaní cp1250 je soubor také 
uložen.


Dotaz: existuje editor který dokáže nastavit použité kodovaní podle 
deklarovaného?

-- 
geon
Pavel Kosina

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


[python] Problem s kodovanim PyDev - pokracovani

2007-01-30 Tema obsahu Ondrej Beranek

OB> # -*- coding: cp1250 -*-
OB> jmeno = raw_input(u #39;Zadejte jméno (nic => konec):  #39;)
OB> print jmeno

OB> Me v eclipse serve:
OB> Traceback (most recent call last):
OB> File "C:\Documents and
OB> Settings\Administrator\workspace\prvni\src\temp.py", line 2, in
OB> 
OB> jmeno = raw_input(u #39;Zadejte jméno (nic => konec):  #39;)
OB> UnicodeEncodeError:  #39;ascii #39; codec can #39;t encode
OB> character u #39;\xe9 #39; in position 10: ordinal not in range(128)
OB> Zkusim jeste EasyEclipse zda to bude delat take.

OB> Ja nutne netrvam na eclipse, ale potrebuju neco co pujde
OB> pouzivat jak na jednom monitoru 1024x768 tak na dvou, neco co
OB> obsahuje Debugger, aspon zakladni spravu projektu a funguje jak v
OB> linuxu tak ve windows. Eclipse se mi libi hlavne proto ze v ni jde
OB> kodovat kdeco (C a PHP) s pomoci pluginu.


---

mtip>Tak s timhle Eclipse nema nic spolecneho, ale je to chyba parseru.
mtip>Jestlize zvolim string typu unicode, tak do nej podle me nelze zapsat
mtip>é. ja bych v tomto pripade pouzil.
mtip># -*- coding: cp1250 -*-
mtip>jmeno = raw_input('Zadejte jméno (nic => konec): ')
mtip>print jmeno

---

No jenze asi s tim neco spolecneho mit bude protoze podle mne zapis
jmeno = raw_input(u'Zadejte jméno (nic => konec):')
znamena jen tolik ze se string 'Zadejte jméno (nic => konec):' prevede ve
vysledku na unicode.
takze ta chyba je neco jineho.
Neprosel ani zapis

jmeno = raw_input(unicode('Zadejte jméno (nic => konec): ','cp1250'))

ktery by asi projit mel. V idle skutecne projde, a vse bezi korektne. v
PyDev ne.
tohle uz asi s pouzitym kodovanim eclipse nijak nesouvisi.
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Problem s metodami

2006-02-17 Tema obsahu Petr Mach

Ve vasem prikladu se naalokuje pamet pro instancemethod a vzapeti
se uvolni, protoze na objekt neni zadna reference. Vysledkem vyrazu
`id(c.m)' je integer s tim, ze v prubehu vypoctu se docasne vytvoril
objekt typu instancemethod, ale jeste pred dokoncenim vyhodnoceni vyrazu
se objekt dealokoval. Tato pamet se znovu pouzije pro novou instanci
v dalsim vyrazu `id(c.m)'. Pokud ovsem jednu instanci ulozime, nove
volani alokuje jiny usek pameti a dostaneme jine id.


Já tomu rozumím, jen píšu, že je potřeba si na to dát pozor. Protože se 
občas uvádí, že "a is b" je to samé jako "id(a) == id(b)", a tento 
příklad ukazuje, že tomu tak nemusí být. Lze si to snadno ověřit takto:



>>> a=c.m
>>> b=c.m
>>> id(a), id(b), id(c.m), id(c.m)
(-1208131876, -1208247924, -1208570148, -1208570148)

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Problem s metodami

2006-02-17 Tema obsahu Radek Kaňovský
On Fri, Feb 17, 2006 at 02:03:41PM +0100, Petr Mach wrote:

> >>>> type(cls.__dict__['method'])
> >
> >>>> type(cls.method)
> >
> >
> >Vyraz cls.method vrati objekt typu instancemethod, v kterem je
> >zapouzdrena prislusna funkce. Jelikoz se zapouzdreni nikde nekesuje,
> >je pri kazdem vyskytu vyrazu `cls.method' vytvoren novy objekt typu
> >instancemethod. Proto pro porovnani pres operator `is' dostavame False.
> 
> Je ale poněkud zvláštní a je potřeba si dát pozor na to, že ten "novy 
> objekt typu instancemethod" má pořád stejné id:
> 
> >>> id(c.m)
> -1208131876
> >>> id(c.m)
> -1208131876
> >>> id(c.m)
> -1208131876
> 
> >>> id(c.m) == id(c.m), c.m is c.m
> (True, False)

   >>> a = cls.method
   >>> id(a)
   -121020
   >>> id(cls.method)
   -1210390332

Ve vasem prikladu se naalokuje pamet pro instancemethod a vzapeti
se uvolni, protoze na objekt neni zadna reference. Vysledkem vyrazu
`id(c.m)' je integer s tim, ze v prubehu vypoctu se docasne vytvoril
objekt typu instancemethod, ale jeste pred dokoncenim vyhodnoceni vyrazu
se objekt dealokoval. Tato pamet se znovu pouzije pro novou instanci
v dalsim vyrazu `id(c.m)'. Pokud ovsem jednu instanci ulozime, nove
volani alokuje jiny usek pameti a dostaneme jine id.

Takhle to mometalne funguje v CPython, v Jythonu to muze byt jinak.

Radek Kaňovský
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problem s metodami

2006-02-17 Tema obsahu Petr Mach



>>> type(cls.__dict__['method'])

>>> type(cls.method)


Vyraz cls.method vrati objekt typu instancemethod, v kterem je
zapouzdrena prislusna funkce. Jelikoz se zapouzdreni nikde nekesuje,
je pri kazdem vyskytu vyrazu `cls.method' vytvoren novy objekt typu
instancemethod. Proto pro porovnani pres operator `is' dostavame False.


Je ale poněkud zvláštní a je potřeba si dát pozor na to, že ten "novy 
objekt typu instancemethod" má pořád stejné id:


>>> id(c.m)
-1208131876
>>> id(c.m)
-1208131876
>>> id(c.m)
-1208131876

>>> id(c.m) == id(c.m), c.m is c.m
(True, False)

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Problem s metodami

2006-02-17 Tema obsahu Radek Kaňovský
On Fri, Feb 17, 2006 at 11:13:02AM +0100, Petr Prikryl wrote:

> Jan Svec napsal...
> > muze mi nekdo potvrdit nasledujici chovani na nejnovejsi verzi Python
> > (testovano na 2.3.5 a 2.4.1):
> > 
> > >>> class cls(object):
> > ...   def method(): pass
> > ...
> > >>> obj = cls()
> > >>> obj.method is obj.method # !!!
> > False
> > >>> obj.method == obj.method
> > True
> > 
> > Pravdepodobne nejde o chybu, nebot ne vzdy plati treba (ilustrativne):
>
> Logicky vzato, s tím "obj.method is obj.method" je to podobné.
> Metoda samotná neudržuje žádný vnitřní stav a jakákoliv kopie 
> kódu bude fungovat stejně. Možná je to chování operátoru is
> implementováno uměle, aby programátoři nikdy nespoléhali na to,
> že kód metody objektu vždy leží na stejném místě. Dovedu si
> třeba představit, že objekt vznikl v distribuovaném nebo 
> paralelním prostředí a třída se rozkopírovala mezi více
> procesorů. Vzhledem k tomu, že Python vznikal v souvislosti
> s vývojem jednoho paralelního systému, mohlo se to tady odrazit.

>>> type(cls.__dict__['method'])

>>> type(cls.method)


Vyraz cls.method vrati objekt typu instancemethod, v kterem je
zapouzdrena prislusna funkce. Jelikoz se zapouzdreni nikde nekesuje,
je pri kazdem vyskytu vyrazu `cls.method' vytvoren novy objekt typu
instancemethod. Proto pro porovnani pres operator `is' dostavame False.

Radek Kaňovský
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


RE: [python] Problem s metodami

2006-02-17 Tema obsahu Petr Prikryl
Jan Svec napsal...
> muze mi nekdo potvrdit nasledujici chovani na nejnovejsi verzi Python
> (testovano na 2.3.5 a 2.4.1):
> 
> >>> class cls(object):
> ...   def method(): pass
> ...
> >>> obj = cls()
> >>> obj.method is obj.method # !!!
> False
> >>> obj.method == obj.method
> True
> 
> Pravdepodobne nejde o chybu, nebot ne vzdy plati treba (ilustrativne):
> 
> >>> 'jedna' is 'jedna'
> 
> Dane chovani me ale docela prekvapilo. Pravdepodobne k tomu dojde
> pri ziskavani objektu metody na zaklade definice funkcniho objektu
> uvnitr tridy.

Potvrzuji pro...

Python 2.4.2 (#67, Sep 28 2005, 12:41:11) [MSC v.1310 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.

To 'jedna' is 'jedna' vrací pro uvedenou verzi Pythonu
True, ale určitě je to věc, na kterou se obecně nedá
spolehnout. Při jednodušší implementaci by se řetězec se stejným
obsahem mohl vytvořit dvakrát.

Logicky vzato, s tím "obj.method is obj.method" je to podobné.
Metoda samotná neudržuje žádný vnitřní stav a jakákoliv kopie 
kódu bude fungovat stejně. Možná je to chování operátoru is
implementováno uměle, aby programátoři nikdy nespoléhali na to,
že kód metody objektu vždy leží na stejném místě. Dovedu si
třeba představit, že objekt vznikl v distribuovaném nebo 
paralelním prostředí a třída se rozkopírovala mezi více
procesorů. Vzhledem k tomu, že Python vznikal v souvislosti
s vývojem jednoho paralelního systému, mohlo se to tady odrazit.

Jiná situace nastává, když třída definuje svou proměnnou, která
udržuje stav. Pak by mělo být zajištěno, že "obj.v is obj.v".
Vyzkoušel jsem to, a potvrdilo se to (viz dále). Je to jen
takový black-box náhled.

>>> class cls(object):
... def method(): pass
... v = 0
...
>>> obj = cls()
>>> obj.method == obj.method
True
>>> obj.method is obj.method
False
>>> obj.v == obj.v
True
>>> obj.v is obj.v
True

pepr
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


[python] Problem s metodami

2006-02-17 Tema obsahu Jan Svec
Ahoj,
muze mi nekdo potvrdit nasledujici chovani na nejnovejsi verzi Python
(testovano na 2.3.5 a 2.4.1):

>>> class cls(object):
...   def method(): pass
...
>>> obj = cls()
>>> obj.method is obj.method # !!!
False
>>> obj.method == obj.method
True

Pravdepodobne nejde o chybu, nebot ne vzdy plati treba (ilustrativne):

>>> 'jedna' is 'jedna'

Dane chovani me ale docela prekvapilo. Pravdepodobne k tomu dojde
pri ziskavani objektu metody na zaklade definice funkcniho objektu
uvnitr tridy.

Honza

-- 
S pozdravem
Jan Svec
<[EMAIL PROTECTED]>
http://py.cz

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python