Ankündigung

Einklappen
Keine Ankündigung bisher.

Fehlermeldungen bei YAML-Fehlern -> Falsche Zeilennummern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Fehlermeldungen bei YAML-Fehlern -> Falsche Zeilennummern

    Hi,

    ich mache meine ersten Versuche mit YAML. An sich sind die Fehlerursachen klar, ich komme auch weiter, aber die Fehlermeldungen sind nicht wirklich aussagekräftig:
    Code:
    2018-07-07 18:11:33 ERROR    shyaml       Main         YAML-file load error in /usr/local/smarthome/items/EG.EZ.yaml:
    while parsing a block mapping
      in "<unicode string>", line 5889, column 21:
                            type: list
                            ^ (line: 5889)
    expected <block end>, but found '<scalar>'
      in "<unicode string>", line 5899, column 33:
                            eval: [1,0] if sh.EG.EZ.Synohr.Pulsieren() = ...
                                        ^ (line: 5899) -- shyaml.py:yaml_load:109
    Der eigentliche Fehler ist, dass ich um den eval-Wert einfach Anführungsstriche setzen muss. Allerdings ist die EG.EZ.yaml nur 3164 Zeilen lang und der Fehler liegt in Zeile 2950. Wie kommen die Zeilennummern zustande? Ich bin auf master 1.4.2, das sollte relativ aktuell sein, oder?

    Ich wollte hier mal feedback geben, weil ich mir vorstellen kann, dass man bei komplizierteren Fehlern und nicht so eindeutigem Wertinhalt schon ziemlich lang suchen kann, bis man die Fehlerstelle findet, wenn die Zeilennummer nicht stimmt.

    Gruß, Waldemar
    OpenKNX www.openknx.de

    #2
    Ist im develop gefixt
    Viele Grüße
    Martin

    There is no cloud. It's only someone else's computer.

    Kommentar


      #3
      Danke für die Info.

      Gruß, Waldemar
      OpenKNX www.openknx.de

      Kommentar


        #4
        hallo waldemar,

        bist du schon beim json2yaml am werkeln?


        Gruß Ivan

        Kommentar


          #5
          Hi Ivan,

          ja, ich habe eine erste Konvertierung programmiert, allerdings sind noch einige Sachen falsch (crontab, cycle, mehrzeilige Listen und die komplette Visu-Generierung mit sv_*-Attributen gehen noch nicht).

          Bin derzeit dienstlich sehr angespannt, deswegen geht das nicht so richtig voran. Im August habe ich 2 Wochen Urlaub, da will ich konzentrierter ran. Melde mich dann wieder (oder vorher, falls es was wird).

          Gruß, Waldemar
          OpenKNX www.openknx.de

          Kommentar


            #6
            Wofür denn json2yaml?

            Kommentar


              #7
              Zumal jedes JSON auch valides YAML 1.2 ist.

              Msinn weshalb wird in SHNG eigentlich nur YAML 1.1 unterstützt? An ruamel kann es nicht liegen, dieses würde ja standardmässig sogar YAML 1.2 nutzen.

              Kommentar


                #8
                Ist ein Hobby-Projekt von mir. Da ich mich sehr geärgert habe, bei den conf-Files die ganzen Fehler, die beim editieren passieren können, immer erst im Log nach einenm neustart von sh.py zu erfahren, hatte ich mir ein JSON-Schema für sh.py geschrieben und die Konfiguration dann in JSON editiert, mit einem Editor, der JSON-Schema versteht und das editierte JSON gleich verifiziert. Das war dann zumindest syntaktisch korrekt... Dann brauchte ich natürlich noch einen Übersetzer von json nach conf, hab ich einfach json2conf genannt. Im Laufe der Zeit kamen dann immer mehr Prüfungen in den Konverter rein mit dem Ziel, dass wenn der Konverter keinen Fehler ausspuckt, auch sh.py die Konfig problemlos lesen kann. Ich bin dem Ziel zumindest relativ nahe gekommen.

                Ich hatte das mal hier in Forum veröffentlicht, aber mangels Resonanz nicht weiter publiziert. Ich war recht überrascht, als Ivan nachgefragt hatte, ob ich das auch nach yaml übersetzen würde (deswegen json2yaml).

                Was soll ich sagen, Ich bin dabei, meine inzwischen ca. 6000 Items werden (nach 2 Tagen Arbeit) schon mal alle nach yaml konvertiert, aus dem yaml ausgelesen, und es sind nur noch < 20 ERRORs und < 200 WARNINGs im Log . Und das ist schon ein Erfolg, denn ich hatte zwischendurch auch callidomus genutzt und mein JSON nach callidomus konvertiert. Derzeit mache ich sogar beides, da ich noch einige Zeit shNG nur im ReadOnly-Modus fahren werde.

                Gruß, Waldemar

                P.S.: Adressiert auch solche Probleme, wie Du sie letztens hattest (z.B. sh. bei eval vergessen oder sh. bei eval_trigger zu viel). Das kann bei mir nicht passieren, ich schreib die immer ohne sh. und es wird algorithmisch ergänzt. Und bei callidomus wird statt sh. ein cd. eingesetzt...




                OpenKNX www.openknx.de

                Kommentar


                  #9
                  Zitat von henfri Beitrag anzeigen
                  Wofür denn json2yaml?
                  Übernahme der bestehenden json Files
                  Generator für .conf-Files

                  Kommentar


                    #10
                    Zitat von smai Beitrag anzeigen
                    weshalb wird in SHNG eigentlich nur YAML 1.1 unterstützt?
                    Das ist als Rückwärtskompatibilität reingekommen, da das ursprünglich von cmalo verwendete pyyaml nur v1.1 unterstützt.
                    Viele Grüße
                    Martin

                    There is no cloud. It's only someone else's computer.

                    Kommentar


                      #11
                      OK, danke.
                      Da wir OT sind, möchte ich das nicht hier weiterdiskutieren.

                      Kommentar


                        #12
                        Zitat von smai Beitrag anzeigen
                        Da wir OT sind, möchte ich das nicht hier weiterdiskutieren.
                        Mich würde das aber auch interessieren... als TE habe ich nichts dagegen.

                        Zitat von Msinn Beitrag anzeigen
                        Das ist als Rückwärtskompatibilität reingekommen
                        Mich würde es auch interessieren, was für Probleme es bei 1.2 mit bestehenden Dokumenten gäbe. Ich habe mal geschaut, aber die einzige Aussage, die ich diesbezüglich gefunden habe, war:

                        YAML 1.2 is compatible with 1.1 for most practical applications - this is a minor revision.
                        (in http://yaml.org/spec/1.2/spec.html).

                        Wenn man nämlich JSON einlesen könnte, könnten die Leute, die es wollen, einen Schema-Basierten JSON-Editor nehmen (z.B. Eclipse, Visual Studio Code oder Visual Studio > 2015) und sich so viel Tipparbeit sparen. Ein entsprechendes JSON-Schema könnte ich gerne beisteuern.

                        Gruß, Waldemar
                        OpenKNX www.openknx.de

                        Kommentar


                          #13
                          Die Hauptunterschiede die shng betreffen liegen im Handling von bool Werten. Da muss ich für v1.2 noch ein paar Typenwandlungen abfangen, die ruaml.yaml selbsttätig vornimmt.

                          Wie ich schon auf Gitter schrieb, muss ich wohl für das nächste Release ran, weil ruaml.yaml 0.15 ein Problem mit Python 3.7 hat. Das ist in 0.15.36 gefixt worden.
                          Wir sind noch auf 0.15.0, weil das die Empfehlung des Autors ist. Nach v0.15.0 wurde/wird in ruaml.yaml ein neues API eingeführt und produktive Nutzungen sollten bis auf weiteres 0.15.0 nutzen. Ich bin mir aber nicht sicher, ob das Python 3.7 Problem für das alte API noch gefixt wird...
                          Viele Grüße
                          Martin

                          There is no cloud. It's only someone else's computer.

                          Kommentar


                            #14
                            Jason kannst Du schon in v1.1 einlesen. Schau mal in die Anwender Doku zu Szenen. Da habe ich aus Lesbarkeitsgründen eine Mischform gewählt und Teile als Json formuliert: http://www.smarthomeng.de/user/konfiguration/konfigurationsdateien_scenes.html
                            Viele Grüße
                            Martin

                            There is no cloud. It's only someone else's computer.

                            Kommentar


                              #15
                              Zu yaml 1.1 und Json:

                              Aus Wikipedia: Mit JSON existiert eine ähnliche Technik, die noch mehr am Objektmodell (DOM) orientiert ist und aus der Programmiersprache JavaScript stammt. JSON ist eine echte Untermenge von YAML: Jedes JSON-Dokument ist in Version 1.2 von YAML ein valides YAML-Dokument.[2] Die meisten Parser, die auf der Website von YAML genannt sind, unterstützen jedoch nur YAML ≤ 1.1 und daher nicht alle JSON-Dokumente (Stand: 20. November 2017).
                              Viele Grüße
                              Martin

                              There is no cloud. It's only someone else's computer.

                              Kommentar

                              Lädt...
                              X