Bon, le fait d'écrire m'a fait faire quelque chose d'insensé. Il y
avait en réalité un commentaire avant la dernière fonction.
J'ai effacé le commentaire. Le code compile. Je l'ai remis. Il compile
désormais aussi.
Python est le truc le plus incroyable que j'ai jamais vu : je viens de
passer une demi-journée sur ce truc. Pour rien.
Je ne comprends pas la fascination des foules pour ce machin.
PK
Le mar. 14 févr. 2023 à 15:56, Patrice Karatchentzeff
<patrice.karatchentzeff@???> a écrit :
>
> Salut,
>
> J'ai un truc de fou dans un bout de code Python. J'ai réussi à isoler
> le problème, mais je ne le comprends pas !
>
> Tout se passe entre les 3 fonctions suivantes :
>
> def FR_is_a_single(char):
> return (char == '.') or (char == ',')
>
> def FR_typo_for_single(cur, text, prevchar, nextchar):
> global c, totalpagemove
> # n/n --> n/s
> if (prevchar != FR_is_a_space() and nextchar != FR_is_a_space()):
> scribus.insertText(space, cur + 1, text)
> c += 1 # current cursor has increased by 1
> totalpagemove += 1
> # n/s --> n/s (swap 'general' s in 'good' s if ever)
> if (prevchar != FR_is_a_space() and nextchar == FR_is_a_space()):
> scribus.selectText(cur + 1, 1, text)
> scribus.deleteText(text)
> scribus.insertText(space, cur + 1, text)
> # s/n --> n/s
> if (prevchar == FR_is_a_space() and nextchar != FR_is_a_space()):
> scribus.selectText(cur - 1, 1, text)
> scribus.deleteText(text) # index pointer has changed by -1 !
> scribus.selectText(cur, 1, text)
> scribus.insertText(space, cur, text)
> # s/s --> n/s (swap 'general' s in 'good' s if ever)
> if (prevchar == FR_is_a_space() and nextchar == FR_is_a_space()):
> scribus.selectText(cur -1, 1, text)
> scribus.deleteText(text)
> scribus.selectText(cur, 1, text) # index pointer has now -1
> scribus.deleteText(text)
> scribus.insertText(space, cur, text)
> c -= 1 # decreased this time...
> totalpagemove -= 1
>
> def FR_is_a_double_thin(char):
> return (char == ';') or (char == '!') or (char == '?')
>
> À la compilation, Python gueule (avec ses merveilleux messages
> illisibles) sur la définition de la dernière fonction :
>
> Traceback (most recent call last):
> File "/usr/lib/python3.10/code.py", line 63, in runsource
> code = self.compile(source, filename, symbol)
> File "/usr/lib/python3.10/codeop.py", line 153, in __call__
> return _maybe_compile(self.compiler, source, filename, symbol)
> File "/usr/lib/python3.10/codeop.py", line 70, in _maybe_compile
> compiler(source + "\n", filename, symbol)
> File "/usr/lib/python3.10/codeop.py", line 118, in __call__
> codeob = compile(source, filename, symbol, self.flags, True)
> File "<console>", line 31
> def FR_is_a_double_thin(char):
> ^^^
> SyntaxError: invalid syntax
> Traceback (most recent call last)
> File "/usr/lib/python3.10/code.py", line 63, in runsource
> code = self.compile(source, fileame, symbol)
> File "/usr/lib/python3.10/codeop.py", line 153, in __call__
> return _maybe_compile(self.compiler, source, filename, symbol)
> File "/usr/lib/python3.10/codeop.py", line 70, in _maybe_compile
> compiler(source + "\n", filename, symbol)
> File "/usr/lib/python3.10/codeop.py", line 118, in __call__
> codeob = compile(source, filename, symbol, self.flags, True)
> File "<console>", line 1
> return (char == ';') or (char == '!') or (char == '?')
> IndentationError: unexpected indent
>
> Bref, il y a une erreur AVANT. SI je commente toute la fonction 2, le
> code compile. SI je ne laisse que la définition de la fonction 2,
> l'erreur est toujours la même, comme si elle venait de la définition.
> Le plus hallucinant : si je permute la 1 et la 2, le code compile !
>
> Bien entendu, toute l'indentation est A PRIORI correcte... suis pas
> sûr que le copier-coller fonctionne. Pour info, c'est pour Scribus,
> donc ça ne compile qu'en interne avec un document ouvert. J'utilise
> Python 3.0 (info importante, étant donné la faible portabilité de
> python...).
>
> Si quelqu'un peut m'aider avant que je n'explose ce truc, ce serait sympa :)
>
> Je hais python !!! (ça sert à rien, juste à me soulager)
>
> Merci
>
> PK
>
> --
> |\ _,,,---,,_ Patrice KARATCHENTZEFF
> ZZZzz /,`.-'`' -. ;-;;,_ mailto:patrice.karatchentzeff@gmail.com
> |,4- ) )-,_. ,\ ( `'-'
> '---''(_/--' `-'\_)
--
|\ _,,,---,,_ Patrice KARATCHENTZEFF
ZZZzz /,`.-'`' -. ;-;;,_ mailto:patrice.karatchentzeff@gmail.com
|,4- ) )-,_. ,\ ( `'-'
'---''(_/--' `-'\_)