• fCONV_AUSRICHTG is not defined - Why?

    From Egon Frerich@21:1/5 to All on Tue Nov 7 18:47:26 2023
    I've no idea why this happens. In a module there are lists and definitions:

        Felder = [
            # Name       lg1  lg2 typ   Ausrichtung Holen Prüfen Prüfvorg
            ["Jahr", 4, 5, "u", "", "right", "center"],
            ["Monat", 2, 5, "u", "", "right", "center"],
            ["Tag", 2, 3, "u", "", "right", "center"],
            ["Belegnr", 5, 7, "s", "", "right", "center"],
            ["Bank", 2, 4, "u", "", "center", "center"],
            ["Art", 2, 3, "u", "", "center", "center"],
            ["Aufg", 2, 4, "u", "", "center", "center"],
            ["Text", 25, 25, "s", "-", "left", "left"],
            ["Ergänzung", 12, 12, "s", "-", "left", "left"],
            ["Betrag", 13, 13, "s", "", "right", "right"],
            ["W", 1, 2, "s", "", "center", "center"],
            ["WBetrag", 7, 7, "s", "", "right", "right"],
            ["Kurs", 6, 6, "s", "", "right", "right"],
        ]
        "Reihenfolge in der Dimension 1"
        (
            fJAHR,
            fMONAT,
            fTAG,
            fBELEGNR,
            fBANK,
            fART,
            fAUFGABE,
            fTEXT,
            fTEXTERG,
            fBETRAG,
            fWAEHRUNG,
            fBETRAGinWAEHRUNG,
            fUMRECHNUNGSKURS,
        ) = list(range(13))
        "Reihenfolge in der Dimension 2"
        (
            fNAME,
            fLG1,
            fLG2,
            fTYP,
            fCONV_AUSRICHTG,
            fENTRY_AUSRICHTG,
            fTEXT_AUSRICHTUNG,
            fHOLFUNKT,
            fPRUEFFUNKT,
            fPRUEF_ARG,
        ) = list(range(10))


    Two lines with  test statements follow and the statement which produces
    an error:

        print(Felder)
        print(fJAHR, fNAME, fTYP, fCONV_AUSRICHTG)
        akette = "%" + "%".join(
            ["%s%s%s " % (i[fCONV_AUSRICHTG], i[fLG2], i[fTYP]) for i in Felder])

    The traceback shows:

    $ python3 testGeldspurGUI.py
    [['Jahr', 4, 5, 'u', '', 'right', 'center'], ['Monat', 2, 5, 'u', '',
    'right', 'center'], ['Tag', 2, 3, 'u', '', 'right', 'center'],
    ['Belegnr', 5, 7, 's', '', 'right', 'center'], ['Bank', 2, 4, 'u', '', 'center', 'center'], ['Art', 2, 3, 'u', '', 'center', 'center'],
    ['Aufg', 2, 4, 'u', '', 'center', 'center'], ['Text', 25, 25, 's', '-',
    'left', 'left'], ['Ergänzung', 12, 12, 's', '-', 'left', 'left'],
    ['Betrag', 13, 13, 's', '', 'right', 'right'], ['W', 1, 2, 's', '',
    'center', 'center'], ['WBetrag', 7, 7, 's', '', 'right', 'right'],
    ['Kurs', 6, 6, 's', '', 'right', 'right']]
    0 0 3 4
    Traceback (most recent call last):
      File "/home/egon/Entw/Geldspur/geldspur/testGeldspurGUI.py", line 15,
    in <module>
        from tests.testU2 import testU2
      File "/home/egon/Entw/Geldspur/geldspur/tests/testU2.py", line 9, in <module>
        from gui.GUI_Konfig import GUIcfg
      File "/home/egon/Entw/Geldspur/geldspur/gui/GUI_Konfig.py", line 11,
    in <module>
        class GUIcfg:
      File "/home/egon/Entw/Geldspur/geldspur/gui/GUI_Konfig.py", line 90,
    in GUIcfg
        ["%s%s%s " % (i[fCONV_AUSRICHTG], i[fLG2], i[fTYP]) for i in Felder])
      File "/home/egon/Entw/Geldspur/geldspur/gui/GUI_Konfig.py", line 90,
    in <listcomp>
        ["%s%s%s " % (i[fCONV_AUSRICHTG], i[fLG2], i[fTYP]) for i in Felder]) NameError: name 'fCONV_AUSRICHTG' is not defined

    You see "Felder" and with "0 0 3 4" the correct value 4 for
    fCONV_AUSRICHTG. But there is the NameError.

    What does <listcomp> mean? Is there a change from python2 to python3?

    Egon

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From dn@21:1/5 to Egon Frerich via Python-list on Wed Nov 8 07:30:18 2023
    On 08/11/2023 06.47, Egon Frerich via Python-list wrote:
    I've no idea why this happens. In a module there are lists and definitions:
    ...

        ["%s%s%s " % (i[fCONV_AUSRICHTG], i[fLG2], i[fTYP]) for i in Felder])
      File "/home/egon/Entw/Geldspur/geldspur/gui/GUI_Konfig.py", line 90,
    in <listcomp>
        ["%s%s%s " % (i[fCONV_AUSRICHTG], i[fLG2], i[fTYP]) for i in Felder]) NameError: name 'fCONV_AUSRICHTG' is not defined

    You see "Felder" and with "0 0 3 4" the correct value 4 for
    fCONV_AUSRICHTG. But there is the NameError.

    What does <listcomp> mean? Is there a change from python2 to python3?

    Works for me (Python 3.11 on Fedora-Linux 37)
    - both as a script, and simple/single import.

    What happens when you extract the second dimension's definitions into a
    module of their own, and import that (with/out less-sophisticated join)?

    --
    Regards,
    =dn

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Thomas Passin@21:1/5 to Egon Frerich via Python-list on Tue Nov 7 14:05:10 2023
    On 11/7/2023 12:47 PM, Egon Frerich via Python-list wrote:
    I've no idea why this happens. In a module there are lists and definitions:

        Felder = [
            # Name       lg1  lg2 typ   Ausrichtung Holen Prüfen Prüfvorg
            ["Jahr", 4, 5, "u", "", "right", "center"],
            ["Monat", 2, 5, "u", "", "right", "center"],
            ["Tag", 2, 3, "u", "", "right", "center"],
            ["Belegnr", 5, 7, "s", "", "right", "center"],
            ["Bank", 2, 4, "u", "", "center", "center"],
            ["Art", 2, 3, "u", "", "center", "center"],
            ["Aufg", 2, 4, "u", "", "center", "center"],
            ["Text", 25, 25, "s", "-", "left", "left"],
            ["Ergänzung", 12, 12, "s", "-", "left", "left"],
            ["Betrag", 13, 13, "s", "", "right", "right"],
            ["W", 1, 2, "s", "", "center", "center"],
            ["WBetrag", 7, 7, "s", "", "right", "right"],
            ["Kurs", 6, 6, "s", "", "right", "right"],
        ]
        "Reihenfolge in der Dimension 1"
        (
            fJAHR,
            fMONAT,
            fTAG,
            fBELEGNR,
            fBANK,
            fART,
            fAUFGABE,
            fTEXT,
            fTEXTERG,
            fBETRAG,
            fWAEHRUNG,
            fBETRAGinWAEHRUNG,
            fUMRECHNUNGSKURS,
        ) = list(range(13))
        "Reihenfolge in der Dimension 2"
        (
            fNAME,
            fLG1,
            fLG2,
            fTYP,
            fCONV_AUSRICHTG,
            fENTRY_AUSRICHTG,
            fTEXT_AUSRICHTUNG,
            fHOLFUNKT,
            fPRUEFFUNKT,
            fPRUEF_ARG,
        ) = list(range(10))


    Two lines with  test statements follow and the statement which produces
    an error:

        print(Felder)
        print(fJAHR, fNAME, fTYP, fCONV_AUSRICHTG)
        akette = "%" + "%".join(
            ["%s%s%s " % (i[fCONV_AUSRICHTG], i[fLG2], i[fTYP]) for i in Felder])

    The traceback shows:

    $ python3 testGeldspurGUI.py
    [['Jahr', 4, 5, 'u', '', 'right', 'center'], ['Monat', 2, 5, 'u', '', 'right', 'center'], ['Tag', 2, 3, 'u', '', 'right', 'center'],
    ['Belegnr', 5, 7, 's', '', 'right', 'center'], ['Bank', 2, 4, 'u', '', 'center', 'center'], ['Art', 2, 3, 'u', '', 'center', 'center'],
    ['Aufg', 2, 4, 'u', '', 'center', 'center'], ['Text', 25, 25, 's', '-', 'left', 'left'], ['Ergänzung', 12, 12, 's', '-', 'left', 'left'],
    ['Betrag', 13, 13, 's', '', 'right', 'right'], ['W', 1, 2, 's', '',
    'center', 'center'], ['WBetrag', 7, 7, 's', '', 'right', 'right'],
    ['Kurs', 6, 6, 's', '', 'right', 'right']]
    0 0 3 4
    Traceback (most recent call last):
      File "/home/egon/Entw/Geldspur/geldspur/testGeldspurGUI.py", line 15,
    in <module>
        from tests.testU2 import testU2
      File "/home/egon/Entw/Geldspur/geldspur/tests/testU2.py", line 9, in <module>
        from gui.GUI_Konfig import GUIcfg
      File "/home/egon/Entw/Geldspur/geldspur/gui/GUI_Konfig.py", line 11,
    in <module>
        class GUIcfg:
      File "/home/egon/Entw/Geldspur/geldspur/gui/GUI_Konfig.py", line 90,
    in GUIcfg
        ["%s%s%s " % (i[fCONV_AUSRICHTG], i[fLG2], i[fTYP]) for i in Felder])
      File "/home/egon/Entw/Geldspur/geldspur/gui/GUI_Konfig.py", line 90,
    in <listcomp>
        ["%s%s%s " % (i[fCONV_AUSRICHTG], i[fLG2], i[fTYP]) for i in Felder]) NameError: name 'fCONV_AUSRICHTG' is not defined

    You see "Felder" and with "0 0 3 4" the correct value 4 for
    fCONV_AUSRICHTG. But there is the NameError.

    What does <listcomp> mean? Is there a change from python2 to python3?

    You are using a syntax that I don't understand, but "listcomp" means a
    list comprehenson.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From MRAB@21:1/5 to dn via Python-list on Tue Nov 7 19:10:07 2023
    On 2023-11-07 18:30, dn via Python-list wrote:
    On 08/11/2023 06.47, Egon Frerich via Python-list wrote:
    I've no idea why this happens. In a module there are lists and definitions:
    ...

        ["%s%s%s " % (i[fCONV_AUSRICHTG], i[fLG2], i[fTYP]) for i in Felder])
      File "/home/egon/Entw/Geldspur/geldspur/gui/GUI_Konfig.py", line 90,
    in <listcomp>
        ["%s%s%s " % (i[fCONV_AUSRICHTG], i[fLG2], i[fTYP]) for i in Felder])
    NameError: name 'fCONV_AUSRICHTG' is not defined

    You see "Felder" and with "0 0 3 4" the correct value 4 for
    fCONV_AUSRICHTG. But there is the NameError.

    What does <listcomp> mean? Is there a change from python2 to python3?

    Works for me (Python 3.11 on Fedora-Linux 37)
    - both as a script, and simple/single import.

    What happens when you extract the second dimension's definitions into a module of their own, and import that (with/out less-sophisticated join)?

    The missing detail is this line from the traceback:

    File "/home/egon/Entw/Geldspur/geldspur/gui/GUI_Konfig.py", line 11,
    in <module>
    class GUIcfg:

    Here's a small example that shows the problem:

    ----8<----
    #!python3.11
    # -*- encoding: utf-8 -*-

    class Test:
    hello = "hello"
    print(hello)
    print([[zero] for _ in range(4)])
    ----8<----

    and its traceback:

    ----8<----
    hello
    Traceback (most recent call last):
    File "C:\Projects\regex3\test_clipboard.py", line 4, in <module>
    class Test:
    File "C:\Projects\regex3\test_clipboard.py", line 7, in Test
    print([zero for _ in range(4)])
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "C:\Projects\regex3\test_clipboard.py", line 7, in <listcomp>
    print([zero for _ in range(4)])
    ^^^^
    NameError: name 'zero' is not defined
    ----8<----

    'zero' is visible in:

    print(hello)

    but not in:

    print([zero for _ in range(4)])

    Something to do with how scoping is implemented in comprehensions?

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Jim Schwartz@21:1/5 to All on Tue Nov 7 13:20:31 2023
    Where do you define fCONV_AUSRICHTG? It must be initialized or defined somewhere. Did you leave out a statement from the python 2 version?

    Sent from my iPhone

    On Nov 7, 2023, at 1:06 PM, Thomas Passin via Python-list <python-list@python.org> wrote:

    On 11/7/2023 12:47 PM, Egon Frerich via Python-list wrote:
    I've no idea why this happens. In a module there are lists and definitions: >> Felder = [
    # Name lg1 lg2 typ Ausrichtung Holen Prüfen Prüfvorg
    ["Jahr", 4, 5, "u", "", "right", "center"],
    ["Monat", 2, 5, "u", "", "right", "center"],
    ["Tag", 2, 3, "u", "", "right", "center"],
    ["Belegnr", 5, 7, "s", "", "right", "center"],
    ["Bank", 2, 4, "u", "", "center", "center"],
    ["Art", 2, 3, "u", "", "center", "center"],
    ["Aufg", 2, 4, "u", "", "center", "center"],
    ["Text", 25, 25, "s", "-", "left", "left"],
    ["Ergänzung", 12, 12, "s", "-", "left", "left"],
    ["Betrag", 13, 13, "s", "", "right", "right"],
    ["W", 1, 2, "s", "", "center", "center"],
    ["WBetrag", 7, 7, "s", "", "right", "right"],
    ["Kurs", 6, 6, "s", "", "right", "right"],
    ]
    "Reihenfolge in der Dimension 1"
    (
    fJAHR,
    fMONAT,
    fTAG,
    fBELEGNR,
    fBANK,
    fART,
    fAUFGABE,
    fTEXT,
    fTEXTERG,
    fBETRAG,
    fWAEHRUNG,
    fBETRAGinWAEHRUNG,
    fUMRECHNUNGSKURS,
    ) = list(range(13))
    "Reihenfolge in der Dimension 2"
    (
    fNAME,
    fLG1,
    fLG2,
    fTYP,
    fCONV_AUSRICHTG,
    fENTRY_AUSRICHTG,
    fTEXT_AUSRICHTUNG,
    fHOLFUNKT,
    fPRUEFFUNKT,
    fPRUEF_ARG,
    ) = list(range(10))
    Two lines with test statements follow and the statement which produces an error:
    print(Felder)
    print(fJAHR, fNAME, fTYP, fCONV_AUSRICHTG)
    akette = "%" + "%".join(
    ["%s%s%s " % (i[fCONV_AUSRICHTG], i[fLG2], i[fTYP]) for i in Felder])
    The traceback shows:
    $ python3 testGeldspurGUI.py
    [['Jahr', 4, 5, 'u', '', 'right', 'center'], ['Monat', 2, 5, 'u', '', 'right', 'center'], ['Tag', 2, 3, 'u', '', 'right', 'center'], ['Belegnr', 5, 7, 's', '', 'right', 'center'], ['Bank', 2, 4, 'u', '', 'center', 'center'], ['Art', 2, 3, 'u', '', '
    center', 'center'], ['Aufg', 2, 4, 'u', '', 'center', 'center'], ['Text', 25, 25, 's', '-', 'left', 'left'], ['Ergänzung', 12, 12, 's', '-', 'left', 'left'], ['Betrag', 13, 13, 's', '', 'right', 'right'], ['W', 1, 2, 's', '', 'center', 'center'], ['
    WBetrag', 7, 7, 's', '', 'right', 'right'], ['Kurs', 6, 6, 's', '', 'right', 'right']]
    0 0 3 4
    Traceback (most recent call last):
    File "/home/egon/Entw/Geldspur/geldspur/testGeldspurGUI.py", line 15, in <module>
    from tests.testU2 import testU2
    File "/home/egon/Entw/Geldspur/geldspur/tests/testU2.py", line 9, in <module>
    from gui.GUI_Konfig import GUIcfg
    File "/home/egon/Entw/Geldspur/geldspur/gui/GUI_Konfig.py", line 11, in <module>
    class GUIcfg:
    File "/home/egon/Entw/Geldspur/geldspur/gui/GUI_Konfig.py", line 90, in GUIcfg
    ["%s%s%s " % (i[fCONV_AUSRICHTG], i[fLG2], i[fTYP]) for i in Felder])
    File "/home/egon/Entw/Geldspur/geldspur/gui/GUI_Konfig.py", line 90, in <listcomp>
    ["%s%s%s " % (i[fCONV_AUSRICHTG], i[fLG2], i[fTYP]) for i in Felder])
    NameError: name 'fCONV_AUSRICHTG' is not defined
    You see "Felder" and with "0 0 3 4" the correct value 4 for fCONV_AUSRICHTG. But there is the NameError.
    What does <listcomp> mean? Is there a change from python2 to python3?

    You are using a syntax that I don't understand, but "listcomp" means a list comprehenson.

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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From MRAB@21:1/5 to Jim Schwartz via Python-list on Tue Nov 7 20:29:43 2023
    On 2023-11-07 19:20, Jim Schwartz via Python-list wrote:
    Where do you define fCONV_AUSRICHTG? It must be initialized or defined somewhere. Did you leave out a statement from the python 2 version?

    It's given its value here:

    (
    fNAME,
    fLG1,
    fLG2,
    fTYP,
    fCONV_AUSRICHTG,
    fENTRY_AUSRICHTG,
    fTEXT_AUSRICHTUNG,
    fHOLFUNKT,
    fPRUEFFUNKT,
    fPRUEF_ARG,
    ) = list(range(10))


    On Nov 7, 2023, at 1:06 PM, Thomas Passin via Python-list <python-list@python.org> wrote:

    On 11/7/2023 12:47 PM, Egon Frerich via Python-list wrote:
    I've no idea why this happens. In a module there are lists and definitions: >>> Felder = [
    # Name lg1 lg2 typ Ausrichtung Holen Prüfen Prüfvorg
    ["Jahr", 4, 5, "u", "", "right", "center"],
    ["Monat", 2, 5, "u", "", "right", "center"],
    ["Tag", 2, 3, "u", "", "right", "center"],
    ["Belegnr", 5, 7, "s", "", "right", "center"],
    ["Bank", 2, 4, "u", "", "center", "center"],
    ["Art", 2, 3, "u", "", "center", "center"],
    ["Aufg", 2, 4, "u", "", "center", "center"],
    ["Text", 25, 25, "s", "-", "left", "left"],
    ["Ergänzung", 12, 12, "s", "-", "left", "left"],
    ["Betrag", 13, 13, "s", "", "right", "right"],
    ["W", 1, 2, "s", "", "center", "center"],
    ["WBetrag", 7, 7, "s", "", "right", "right"],
    ["Kurs", 6, 6, "s", "", "right", "right"],
    ]
    "Reihenfolge in der Dimension 1"
    (
    fJAHR,
    fMONAT,
    fTAG,
    fBELEGNR,
    fBANK,
    fART,
    fAUFGABE,
    fTEXT,
    fTEXTERG,
    fBETRAG,
    fWAEHRUNG,
    fBETRAGinWAEHRUNG,
    fUMRECHNUNGSKURS,
    ) = list(range(13))
    "Reihenfolge in der Dimension 2"
    (
    fNAME,
    fLG1,
    fLG2,
    fTYP,
    fCONV_AUSRICHTG,
    fENTRY_AUSRICHTG,
    fTEXT_AUSRICHTUNG,
    fHOLFUNKT,
    fPRUEFFUNKT,
    fPRUEF_ARG,
    ) = list(range(10))
    Two lines with test statements follow and the statement which produces an error:
    print(Felder)
    print(fJAHR, fNAME, fTYP, fCONV_AUSRICHTG)
    akette = "%" + "%".join(
    ["%s%s%s " % (i[fCONV_AUSRICHTG], i[fLG2], i[fTYP]) for i in Felder])
    The traceback shows:
    $ python3 testGeldspurGUI.py
    [['Jahr', 4, 5, 'u', '', 'right', 'center'], ['Monat', 2, 5, 'u', '', 'right', 'center'], ['Tag', 2, 3, 'u', '', 'right', 'center'], ['Belegnr', 5, 7, 's', '', 'right', 'center'], ['Bank', 2, 4, 'u', '', 'center', 'center'], ['Art', 2, 3, 'u', '', '
    center', 'center'], ['Aufg', 2, 4, 'u', '', 'center', 'center'], ['Text', 25, 25, 's', '-', 'left', 'left'], ['Ergänzung', 12, 12, 's', '-', 'left', 'left'], ['Betrag', 13, 13, 's', '', 'right', 'right'], ['W', 1, 2, 's', '', 'center', 'center'], ['
    WBetrag', 7, 7, 's', '', 'right', 'right'], ['Kurs', 6, 6, 's', '', 'right', 'right']]
    0 0 3 4
    Traceback (most recent call last):
    File "/home/egon/Entw/Geldspur/geldspur/testGeldspurGUI.py", line 15, in <module>
    from tests.testU2 import testU2
    File "/home/egon/Entw/Geldspur/geldspur/tests/testU2.py", line 9, in <module>
    from gui.GUI_Konfig import GUIcfg
    File "/home/egon/Entw/Geldspur/geldspur/gui/GUI_Konfig.py", line 11, in <module>
    class GUIcfg:
    File "/home/egon/Entw/Geldspur/geldspur/gui/GUI_Konfig.py", line 90, in GUIcfg
    ["%s%s%s " % (i[fCONV_AUSRICHTG], i[fLG2], i[fTYP]) for i in Felder]) >>> File "/home/egon/Entw/Geldspur/geldspur/gui/GUI_Konfig.py", line 90, in <listcomp>
    ["%s%s%s " % (i[fCONV_AUSRICHTG], i[fLG2], i[fTYP]) for i in Felder]) >>> NameError: name 'fCONV_AUSRICHTG' is not defined
    You see "Felder" and with "0 0 3 4" the correct value 4 for fCONV_AUSRICHTG. But there is the NameError.
    What does <listcomp> mean? Is there a change from python2 to python3?

    You are using a syntax that I don't understand, but "listcomp" means a list comprehenson.


    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Thomas Passin@21:1/5 to MRAB via Python-list on Tue Nov 7 15:56:58 2023
    On 11/7/2023 3:29 PM, MRAB via Python-list wrote:
    On 2023-11-07 19:20, Jim Schwartz via Python-list wrote:
    Where do you define fCONV_AUSRICHTG? It must be initialized or defined
    somewhere. Did you leave out a statement from the python 2 version?

    It's given its value here:

        (
            fNAME,
            fLG1,
            fLG2,
            fTYP,
            fCONV_AUSRICHTG,
            fENTRY_AUSRICHTG,
            fTEXT_AUSRICHTUNG,
            fHOLFUNKT,
            fPRUEFFUNKT,
            fPRUEF_ARG,
        ) = list(range(10))


    This construction is a sneaky way to assign index numbers to list
    entries. A simplified example:

    S1 = 'string 1'
    S2 = 'string 2'
    (fS1, fS2) = list(range(2))
    fS1
    0

    fS2
    1




    On Nov 7, 2023, at 1:06 PM, Thomas Passin via Python-list
    <python-list@python.org> wrote:

    On 11/7/2023 12:47 PM, Egon Frerich via Python-list wrote:
    I've no idea why this happens. In a module there are lists and
    definitions:
        Felder = [
            # Name       lg1  lg2 typ   Ausrichtung Holen Prüfen Prüfvorg
            ["Jahr", 4, 5, "u", "", "right", "center"],
            ["Monat", 2, 5, "u", "", "right", "center"],
            ["Tag", 2, 3, "u", "", "right", "center"],
            ["Belegnr", 5, 7, "s", "", "right", "center"],
            ["Bank", 2, 4, "u", "", "center", "center"],
            ["Art", 2, 3, "u", "", "center", "center"],
            ["Aufg", 2, 4, "u", "", "center", "center"],
            ["Text", 25, 25, "s", "-", "left", "left"],
            ["Ergänzung", 12, 12, "s", "-", "left", "left"],
            ["Betrag", 13, 13, "s", "", "right", "right"],
            ["W", 1, 2, "s", "", "center", "center"],
            ["WBetrag", 7, 7, "s", "", "right", "right"],
            ["Kurs", 6, 6, "s", "", "right", "right"],
        ]
        "Reihenfolge in der Dimension 1"
        (
            fJAHR,
            fMONAT,
            fTAG,
            fBELEGNR,
            fBANK,
            fART,
            fAUFGABE,
            fTEXT,
            fTEXTERG,
            fBETRAG,
            fWAEHRUNG,
            fBETRAGinWAEHRUNG,
            fUMRECHNUNGSKURS,
        ) = list(range(13))
        "Reihenfolge in der Dimension 2"
        (
            fNAME,
            fLG1,
            fLG2,
            fTYP,
            fCONV_AUSRICHTG,
            fENTRY_AUSRICHTG,
            fTEXT_AUSRICHTUNG,
            fHOLFUNKT,
            fPRUEFFUNKT,
            fPRUEF_ARG,
        ) = list(range(10))
    Two lines with  test statements follow and the statement which
    produces an error:
        print(Felder)
        print(fJAHR, fNAME, fTYP, fCONV_AUSRICHTG)
        akette = "%" + "%".join(
            ["%s%s%s " % (i[fCONV_AUSRICHTG], i[fLG2], i[fTYP]) for i in
    Felder])
    The traceback shows:
    $ python3 testGeldspurGUI.py
    [['Jahr', 4, 5, 'u', '', 'right', 'center'], ['Monat', 2, 5, 'u',
    '', 'right', 'center'], ['Tag', 2, 3, 'u', '', 'right', 'center'],
    ['Belegnr', 5, 7, 's', '', 'right', 'center'], ['Bank', 2, 4, 'u',
    '', 'center', 'center'], ['Art', 2, 3, 'u', '', 'center', 'center'],
    ['Aufg', 2, 4, 'u', '', 'center', 'center'], ['Text', 25, 25, 's',
    '-', 'left', 'left'], ['Ergänzung', 12, 12, 's', '-', 'left',
    'left'], ['Betrag', 13, 13, 's', '', 'right', 'right'], ['W', 1, 2,
    's', '', 'center', 'center'], ['WBetrag', 7, 7, 's', '', 'right',
    'right'], ['Kurs', 6, 6, 's', '', 'right', 'right']]
    0 0 3 4
    Traceback (most recent call last):
      File "/home/egon/Entw/Geldspur/geldspur/testGeldspurGUI.py", line
    15, in <module>
        from tests.testU2 import testU2
      File "/home/egon/Entw/Geldspur/geldspur/tests/testU2.py", line 9,
    in <module>
        from gui.GUI_Konfig import GUIcfg
      File "/home/egon/Entw/Geldspur/geldspur/gui/GUI_Konfig.py", line
    11, in <module>
        class GUIcfg:
      File "/home/egon/Entw/Geldspur/geldspur/gui/GUI_Konfig.py", line
    90, in GUIcfg
        ["%s%s%s " % (i[fCONV_AUSRICHTG], i[fLG2], i[fTYP]) for i in
    Felder])
      File "/home/egon/Entw/Geldspur/geldspur/gui/GUI_Konfig.py", line
    90, in <listcomp>
        ["%s%s%s " % (i[fCONV_AUSRICHTG], i[fLG2], i[fTYP]) for i in
    Felder])
    NameError: name 'fCONV_AUSRICHTG' is not defined
    You see "Felder" and with "0 0 3 4" the correct value 4 for
    fCONV_AUSRICHTG. But there is the NameError.
    What does <listcomp> mean? Is there a change from python2 to python3?

    You are using a syntax that I don't understand, but "listcomp" means
    a list comprehenson.



    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From MRAB@21:1/5 to Thomas Passin via Python-list on Tue Nov 7 22:08:36 2023
    On 2023-11-07 20:56, Thomas Passin via Python-list wrote:
    On 11/7/2023 3:29 PM, MRAB via Python-list wrote:
    On 2023-11-07 19:20, Jim Schwartz via Python-list wrote:
    Where do you define fCONV_AUSRICHTG? It must be initialized or defined
    somewhere. Did you leave out a statement from the python 2 version?

    It's given its value here:

        (
            fNAME,
            fLG1,
            fLG2,
            fTYP,
            fCONV_AUSRICHTG,
            fENTRY_AUSRICHTG,
            fTEXT_AUSRICHTUNG,
            fHOLFUNKT,
            fPRUEFFUNKT,
            fPRUEF_ARG,
        ) = list(range(10))


    This construction is a sneaky way to assign index numbers to list
    entries. A simplified example:

    >>> S1 = 'string 1'
    >>> S2 = 'string 2'
    >>> (fS1, fS2) = list(range(2))
    >>> fS1
    0
    >>>
    >>> fS2
    1

    You don't need the 'list', though: range(...) will work on its own.

    [snip]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Greg Ewing@21:1/5 to MRAB on Wed Nov 8 13:31:03 2023
    On 8/11/23 8:10 am, MRAB wrote:
    Something to do with how scoping is implemented in comprehensions?

    Yes, together with the way class scopes work during class construction.

    Behind the scenes, the body of a listcomp happens to be implemented
    as a nested function.

    Usually you don't notice this, but while a class is being built,
    its scope doesn't count as an enlosing scope for functions defined
    within the class.

    This is necessary, otherwise all of a class's attributes would be
    visible inside its methods, which isn't what we want. However, it
    leads to some odd corner cases, such as this one.

    There are various ways you could work around this. I would suggest
    moving the offending code outside the class and qualifying the
    constants it uses with the class name.

    --
    Greg

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)