Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[python] Ovlivnění názvu souboru a čísla řádku ve výjimkách

8 views
Skip to first unread message

Vladimír Macek

unread,
Apr 5, 2022, 12:37:36 PM4/5/22
to
Zdravím, mám neobvyklou otázku.

Zvažujeme do jednoho projektu s embedovaným Pythonem vývoj skriptů tak, že
se jeden py modul bude vyvíjet po segmentech. Budou nazvané třeba 010.py,
020.py, 030.py, ...

Pro puristy, budou to malé segmenty specifické domény, nikoli standardní
projekt. :-)

Pro provedení se všechny segmenty modulu spojí do jednoho mod.py. Avšak
když v něm nastane chyba, bude v tracebacku mod.py a číslo řádku z něj.

Vývojář ale bude potřebovat problém najít ve zdrojových segmentech 010.py,
020.py, ...

Samozřejmě si můžu segmenty zaindexovat, analyzovat text tracebacku a
obohatit ho o přepočítané pozice.

Chci se jen zeptat, jestli někdo z vás neví třeba o způsobu, jak ovlivnit
interní počítadlo tak, že by se při spojování do mod.py dal na začátek
každého segmentu nějaký override názvu souboru a počítadla řádků.

Pokud někoho z vás napadnou alternativy, aby se segmenty provedly ve
stejném namespace a bez spojování nebo jiné řešení, uvítám tip.

Děkuju!

Vladimír Macek | +420 608 978 164

Petr Viktorin

unread,
Apr 5, 2022, 2:30:08 PM4/5/22
to
Idealne chces `from segment000 import *` ze vsech segmentu, ale jestli
je *fakt* potreba stejny namespace pro vic souboru, da se to udelat
nejak takhle:


-----------8<-----------

exec(compile("""
def main():
other()
""", '000.fakepy', 'exec'))

exec(compile("""
def other():
'''docstring on line 3'''
raise Exception()
""", '001.fakepy', 'exec'))

main()

-----------8<-----------

Traceback (most recent call last):
File "/tmp/mod.py", line 13, in <module>
main()
File "000.fakepy", line 3, in main
File "001.fakepy", line 4, in other
Exception

-----------8<-----------

(s open+read misto literal retezcu, jestli nechces spojovat)

Josef Skladanka

unread,
Apr 5, 2022, 2:34:55 PM4/5/22
to
Hele, nevim jestli to neni uplne debilini a nefunkcni napad (tedka to na telefonu nevyzkousim) ale co ten kod v "dilcich" modulech (010.py, ...) obalit do nejakyho "chytam vyjimky a re-raisuju je se spravnyma parametrama" dekoratoru? Netusim jak to budete "spojovat", cekam ze automaticky nejakym "generatorem kodu", tak by to mohlo byt i vcelku primocare udelatelny na te "spojovaci" vrstve.

Ale... To je tak jako z hospody od piva, cekam ze je na to lepsi reseni.

On Tue, Apr 5, 2022 at 6:38 PM Vladimír Macek <ma...@sandbox.cz> wrote:
Zdravím, mám neobvyklou otázku.

Zvažujeme do jednoho projektu s embedovaným Pythonem vývoj skriptů tak, že
se jeden py modul bude vyvíjet po segmentech. Budou nazvané třeba 010.py,
020.py, 030.py, ...

Pro puristy, budou to malé segmenty specifické domény, nikoli standardní
projekt. :-)

Pro provedení se všechny segmenty modulu spojí do jednoho mod.py. Avšak
když v něm nastane chyba, bude v tracebacku mod.py a číslo řádku z něj.

Vývojář ale bude potřebovat problém najít ve zdrojových segmentech 010.py,
020.py, ...

Samozřejmě si můžu segmenty zaindexovat, analyzovat text tracebacku a
obohatit ho o přepočítané pozice.

Chci se jen zeptat, jestli někdo z vás neví třeba o způsobu, jak ovlivnit
interní počítadlo tak, že by se při spojování do mod.py dal na začátek
každého segmentu nějaký override názvu souboru a počítadla řádků.

Pokud někoho z vás napadnou alternativy, aby se segmenty provedly ve
stejném namespace a bez spojování nebo jiné řešení, uvítám tip.

Děkuju!

Vladimír Macek | +420 608 978 164

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

Visit: http://www.py.cz


--
"The best is the enemy of the good."
   --Voltaire
0 new messages