Git Product home page Git Product logo

Comments (7)

msinn avatar msinn commented on July 24, 2024

Meinst Du eine Lösung wie:

  • Auf dem Parameter Tab ein Feld für die Requirements hinzufügen
  • beim Start von shng Die Logik Paremeter auf die Requirements hin durchsehen und
  • die Requirements der requirements/conf_all.txt und der requirements/all.txt hinzufügen bevor die Requirements geprüft werden
    ?

from smarthome.

Morg42 avatar Morg42 commented on July 24, 2024

Wenn das auf dem Parameter-Tab eingetragen werden kann, müsste es ja irgendwo gesichert werden - im Header der Logics- bzw. userfunctions-Datei?

In dem Fall wäre das ein Wechsel der bisherigen Konvention, Metadaten in gesonderten Dateien zu speichern. Möglich wäre ggf.

# requirements: foo im Header der Python-Datei (z.B.: ununterbrochener Kommentarblock von Dateibeginn an)

Eine zusätzliche yaml-Datei wäre möglich, müsste aber von Hand gepflegt werden und gilt dann jeweils für alle Logiken bzw. UF, da scheint mir Variante 1 besser handlebar.

from smarthome.

msinn avatar msinn commented on July 24, 2024

Wenn das auf dem Parameter-Tab eingetragen werden kann, müsste es ja irgendwo gesichert werden - im Header der Logics- bzw. userfunctions-Datei?

Ich wäre für weder-noch. Meiner Meinung nach, würde die Information in die etc/logic.yaml gehören.

Einen direkten Zusammenhang mit den Userfunctions sehe ich erstmal nicht. Logiken können ja einfach ein import Statement enthalten.

Bei den Userfunctions Requirements zu hinterlegen ist noch mal ein weiteres Thema. Da muss ich noch mal drauf rumdenken. Eine Datei unter etc (analog zur etc/logic.yaml) könnte für Userfunctions auch noch ein anderes Problem lösen, das ich habe: Wenn ich eine Userfunctions Datei disablen möchte, muss ich bisher die .py Datei umbenennen (andere Endung dran). Es gibt bisher dafür keinen "Schalter".

from smarthome.

msinn avatar msinn commented on July 24, 2024

Nei den Userfunctions könnte man das auch analog zu Plugins, dem lib Verzeichnis, … lösen.

In das functions Verzeichnis könnte man eine requirements.txt legen und shpypi könnte diese Datei mit in den Aufbau der Gesamt-Requirements aufnehmen.

from smarthome.

msinn avatar msinn commented on July 24, 2024

Ich habe lib.shpypi erstmal so erweitert, dass in den Verzeichnissen ../logics und ../functions gespeicherte requirements.txt Dateien mit ausgewertet werden. In den generierten Dateien werden die Einträge als **user-defined'' gelistet. In der requirements/conf-all.txt sieht das z.B. dann so aus:

# configured plugin 'piratewthr'
# configured plugin 'darksky'
# configured plugin 'avm'
# configured plugin 'enigma2'
# SmartHomeNG-lib
# user-defined 'functions'
# user-defined 'logics'
requests>=2.20.0

Das ist noch nicht die eleganteste Version (da Logiken ja häufig in der Admin GUI geschrieben/modifiziert werden und man für die Requirements noch in den Maschinenraum muss, aber es ist erstmal eine praktikable Lösung.

Die requirements.txt Dateien werden im Konfigurations-Backup mit gesichert.

from smarthome.

CannonRS avatar CannonRS commented on July 24, 2024

Macht es nicht Sinn die requirements direkt in die User-Funktion oder Logik auszulagern. Also irgendwie als Kommentar oder in einer Variable im Code? Also so z.B.:

#requirements: pymodbus>='3.5.2'

oder
requirements = 'pymodbus>=3.5.2'

VIelleicht denke ich da zu naiv. Aber wäre die Auswertung aufwändig?

from smarthome.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.