__slots__ für alle möglichen Klassen implementiert

This commit is contained in:
2018-08-13 15:12:41 +02:00
parent c2f26bcc98
commit 70a95dcacd
17 changed files with 150 additions and 36 deletions

View File

@@ -39,7 +39,7 @@ object
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Attributes</h3>
<table>
<tr><td>None</td></tr>
<tr><td>__slots__</td></tr>
</table>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Methods</h3>

View File

@@ -58,7 +58,7 @@ Core
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Attributes</h3>
<table>
<tr><td>A3</td></tr><tr><td>wdautotoggle</td></tr>
<tr><td>A3</td></tr><tr><td>__slots__</td></tr><tr><td>wdautotoggle</td></tr>
</table>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Methods</h3>
@@ -176,7 +176,7 @@ Device
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Attributes</h3>
<table>
<tr><td>A1</td></tr><tr><td>A2</td></tr><tr><td>status</td></tr>
<tr><td>A1</td></tr><tr><td>A2</td></tr><tr><td>__slots__</td></tr><tr><td>status</td></tr>
</table>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Methods</h3>
@@ -496,7 +496,7 @@ object
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Attributes</h3>
<table>
<tr><td>length</td></tr><tr><td>name</td></tr><tr><td>offset</td></tr><tr><td>position</td></tr><tr><td>producttype</td></tr>
<tr><td>__slots__</td></tr><tr><td>length</td></tr><tr><td>name</td></tr><tr><td>offset</td></tr><tr><td>position</td></tr><tr><td>producttype</td></tr>
</table>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Methods</h3>
@@ -1024,7 +1024,7 @@ Device
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Attributes</h3>
<table>
<tr><td>None</td></tr>
<tr><td>__slots__</td></tr>
</table>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Methods</h3>
@@ -1093,7 +1093,7 @@ Gateway
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Attributes</h3>
<table>
<tr><td>None</td></tr>
<tr><td>__slots__</td></tr>
</table>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Methods</h3>

View File

@@ -26,6 +26,9 @@ Classes</h3>
</tr><tr>
<td><a style="color:#0000FF" href="#ProcimgWriter">ProcimgWriter</a></td>
<td>Klasse fuer Synchroniseriungs-Thread.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#Var">Var</a></td>
<td></td>
</tr>
</table>
<h3 style="background-color:#FFFFFF;color:#FF0000">
@@ -65,7 +68,7 @@ None
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Attributes</h3>
<table>
<tr><td>None</td></tr>
<tr><td>__slots__</td></tr>
</table>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Methods</h3>
@@ -351,7 +354,7 @@ Thread
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Attributes</h3>
<table>
<tr><td>None</td></tr>
<tr><td>__slots__</td></tr>
</table>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Methods</h3>
@@ -426,7 +429,7 @@ Thread
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Attributes</h3>
<table>
<tr><td>ioerrors</td></tr><tr><td>maxioerrors</td></tr><tr><td>refresh</td></tr>
<tr><td>__slots__</td></tr><tr><td>ioerrors</td></tr><tr><td>maxioerrors</td></tr><tr><td>refresh</td></tr>
</table>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Methods</h3>
@@ -587,6 +590,35 @@ ProcimgWriter.stop</h3>
<p>
Beendet die automatische Prozessabbildsynchronisierung.
</p>
<div align="right"><a style="color:#0000FF" href="#top">Up</a></div>
<hr /><hr />
<a NAME="Var" ID="Var"></a>
<h2 style="background-color:#FFFFFF;color:#0000FF">Var</h2>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Derived from</h3>
None
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Attributes</h3>
<table>
<tr><td>None</td></tr>
</table>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Methods</h3>
<table>
<tr><td>None</td></tr>
</table>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Methods</h3>
<table>
<tr><td>None</td></tr>
</table>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Static Methods</h3>
<table>
<tr><td>None</td></tr>
</table>
<div align="right"><a style="color:#0000FF" href="#top">Up</a></div>
<hr />
</body></html>

View File

@@ -54,7 +54,7 @@ object
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Attributes</h3>
<table>
<tr><td>_parentdevice</td></tr>
<tr><td>__slots__</td></tr><tr><td>_parentdevice</td></tr>
</table>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Methods</h3>
@@ -124,7 +124,7 @@ object
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Attributes</h3>
<table>
<tr><td>address</td></tr><tr><td>byteorder</td></tr><tr><td>defaultvalue</td></tr><tr><td>length</td></tr><tr><td>name</td></tr><tr><td>type</td></tr><tr><td>value</td></tr>
<tr><td>__slots__</td></tr><tr><td>address</td></tr><tr><td>byteorder</td></tr><tr><td>defaultvalue</td></tr><tr><td>length</td></tr><tr><td>name</td></tr><tr><td>type</td></tr><tr><td>value</td></tr>
</table>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Methods</h3>
@@ -520,7 +520,7 @@ object
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Attributes</h3>
<table>
<tr><td>None</td></tr>
<tr><td>__slots__</td></tr>
</table>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Methods</h3>
@@ -752,7 +752,7 @@ IOBase
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Attributes</h3>
<table>
<tr><td>byteorder</td></tr><tr><td>defaultvalue</td></tr><tr><td>signed</td></tr><tr><td>value</td></tr>
<tr><td>__slots__</td></tr><tr><td>byteorder</td></tr><tr><td>defaultvalue</td></tr><tr><td>signed</td></tr><tr><td>value</td></tr>
</table>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Methods</h3>
@@ -889,7 +889,7 @@ IOBase
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Attributes</h3>
<table>
<tr><td>defaultvalue</td></tr><tr><td>frm</td></tr><tr><td>signed</td></tr><tr><td>value</td></tr>
<tr><td>__slots__</td></tr><tr><td>defaultvalue</td></tr><tr><td>frm</td></tr><tr><td>signed</td></tr><tr><td>value</td></tr>
</table>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Methods</h3>

View File

@@ -54,7 +54,7 @@ object
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Attributes</h3>
<table>
<tr><td>configrsc</td></tr><tr><td>cycletime</td></tr><tr><td>ioerrors</td></tr><tr><td>length</td></tr><tr><td>maxioerrors</td></tr><tr><td>monitoring</td></tr><tr><td>procimg</td></tr><tr><td>simulator</td></tr>
<tr><td>__slots__</td></tr><tr><td>configrsc</td></tr><tr><td>cycletime</td></tr><tr><td>ioerrors</td></tr><tr><td>length</td></tr><tr><td>maxioerrors</td></tr><tr><td>monitoring</td></tr><tr><td>procimg</td></tr><tr><td>simulator</td></tr>
</table>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Methods</h3>
@@ -557,7 +557,7 @@ RevPiModIOSelected
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Attributes</h3>
<table>
<tr><td>None</td></tr>
<tr><td>__slots__</td></tr>
</table>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Methods</h3>
@@ -617,7 +617,7 @@ RevPiModIO
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Attributes</h3>
<table>
<tr><td>None</td></tr>
<tr><td>__slots__</td></tr>
</table>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Methods</h3>

View File

@@ -54,7 +54,7 @@ Thread
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Attributes</h3>
<table>
<tr><td>closed</td></tr><tr><td>name</td></tr><tr><td>timeout</td></tr>
<tr><td>__slots__</td></tr><tr><td>closed</td></tr><tr><td>name</td></tr><tr><td>timeout</td></tr>
</table>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Methods</h3>
@@ -323,7 +323,7 @@ _RevPiModIO
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Attributes</h3>
<table>
<tr><td>None</td></tr>
<tr><td>__slots__</td></tr>
</table>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Methods</h3>
@@ -448,7 +448,7 @@ RevPiNetIOSelected
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Attributes</h3>
<table>
<tr><td>None</td></tr>
<tr><td>__slots__</td></tr>
</table>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Methods</h3>
@@ -511,7 +511,7 @@ RevPiNetIO
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Attributes</h3>
<table>
<tr><td>None</td></tr>
<tr><td>__slots__</td></tr>
</table>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Methods</h3>

View File

@@ -39,7 +39,7 @@ object
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Attributes</h3>
<table>
<tr><td>None</td></tr>
<tr><td>__slots__</td></tr>
</table>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Methods</h3>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Project SYSTEM "Project-5.1.dtd">
<!-- eric project file for project revpimodio2 -->
<!-- Saved: 2018-08-12, 18:11:33 -->
<!-- Saved: 2018-08-13, 13:53:52 -->
<!-- Copyright (C) 2018 Sven Sager, akira@narux.de -->
<Project version="5.1">
<Language>en_US</Language>
@@ -9,7 +9,7 @@
<ProgLanguage mixed="0">Python3</ProgLanguage>
<ProjectType>Console</ProjectType>
<Description>Das Modul stellt alle Devices und IOs aus der piCtory Konfiguration in Python3 zur Verfügung. Es ermöglicht den direkten Zugriff auf die Werte über deren vergebenen Namen. Lese- und Schreibaktionen mit dem Prozessabbild werden von dem Modul selbst verwaltet, ohne dass sich der Programmierer um Offsets und Adressen kümmern muss. Für die Gatewaymodule wie ModbusTCP oder Profinet sind eigene 'Inputs' und 'Outputs' über einen bestimmten Adressbereich definierbar. Auf diese IOs kann mit Python3 über den Namen direkt auf die Werte zugegriffen werden.</Description>
<Version>2.2.2</Version>
<Version>2.2.3</Version>
<Author>Sven Sager</Author>
<Email>akira@narux.de</Email>
<Eol index="1"/>

View File

@@ -22,7 +22,7 @@ __author__ = "Sven Sager <akira@revpimodio.org>"
__copyright__ = "Copyright (C) 2018 Sven Sager"
__license__ = "LGPLv3"
__name__ = "revpimodio2"
__version__ = "2.2.2"
__version__ = "2.2.3"
# Global package values
OFF = 0

View File

@@ -9,6 +9,8 @@ class App(object):
"""Bildet die App Sektion der config.rsc ab."""
__slots__ = "name", "version", "language", "layout"
def __init__(self, app):
"""Instantiiert die App-Klasse.
@param app piCtory Appinformationen"""

View File

@@ -106,6 +106,13 @@ class Device(object):
"""
__slots__ = "_ba_devdata", "_ba_datacp", \
"_dict_events", "_filelock", "_length", "_modio", "_name", "_offset", \
"_position", "_producttype", "_selfupdate", "_slc_devoff", \
"_slc_inp", "_slc_inpoff", "_slc_mem", "_slc_memoff", \
"_slc_out", "_slc_outoff", "bmk", "catalognr", "comment", "extend", \
"guid", "id", "inpvariant", "outvariant", "type"
def __init__(self, parentmodio, dict_device, simulator=False):
"""Instantiierung der Device-Klasse.
@@ -122,24 +129,24 @@ class Device(object):
self._selfupdate = False
# Wertzuweisung aus dict_device
self._name = dict_device.pop("name")
self._offset = int(dict_device.pop("offset"))
self._position = int(dict_device.pop("position"))
self._producttype = int(dict_device.pop("productType"))
self._name = dict_device.get("name")
self._offset = int(dict_device.get("offset"))
self._position = int(dict_device.get("position"))
self._producttype = int(dict_device.get("productType"))
# IOM-Objekte erstellen und Adressen in SLCs speichern
if simulator:
self._slc_inp = self._buildio(
dict_device.pop("out"), INP)
dict_device.get("out"), INP)
self._slc_out = self._buildio(
dict_device.pop("inp"), OUT)
dict_device.get("inp"), OUT)
else:
self._slc_inp = self._buildio(
dict_device.pop("inp"), INP)
dict_device.get("inp"), INP)
self._slc_out = self._buildio(
dict_device.pop("out"), OUT)
dict_device.get("out"), OUT)
self._slc_mem = self._buildio(
dict_device.pop("mem"), MEM
dict_device.get("mem"), MEM
)
# SLCs mit offset berechnen
@@ -162,7 +169,15 @@ class Device(object):
self._ba_datacp = bytearray()
# Alle restlichen attribute an Klasse anhängen
self.__dict__.update(dict_device)
self.bmk = dict_device.get("bmk", "")
self.catalognr = dict_device.get("catalogNr", "")
self.comment = dict_device.get("comment", "")
self.extend = dict_device.get("extend", {})
self.guid = dict_device.get("GUID", "")
self.id = dict_device.get("id", "")
self.inpvariant = dict_device.get("inpVariant", 0)
self.outvariant = dict_device.get("outVariant", 0)
self.type = dict_device.get("type", "")
# Spezielle Konfiguration von abgeleiteten Klassen durchführen
self._devconfigure()
@@ -398,6 +413,10 @@ class Core(Device):
"""
__slots__ = "_iocycle", "_ioerrorcnt", "_iostatusbyte", "_iotemperature", \
"_ioerrorlimit1", "_ioerrorlimit2", "_iofrequency", "_ioled", \
"a1green", "a1red", "a2green", "a2red"
def _devconfigure(self):
"""Core-Klasse vorbereiten."""
# Eigene IO-Liste aufbauen
@@ -647,6 +666,9 @@ class Connect(Core):
"""
__slots__ = "__evt_wdtoggle", "__th_wdtoggle", "a3green", "a3red", "wd", \
"x2in", "x2out"
def __wdtoggle(self):
"""WD Ausgang alle 10 Sekunden automatisch toggeln."""
while not self.__evt_wdtoggle.wait(10):
@@ -754,6 +776,8 @@ class Gateway(Device):
"""
__slots__ = "_dict_slc"
def __init__(self, parent, dict_device, simulator=False):
"""Erweitert Device-Klasse um get_rawbytes-Funktionen.
@see #Device.__init__ Device.__init__(...)"""
@@ -783,6 +807,8 @@ class Virtual(Gateway):
"""
__slots__ = ()
def writeinputdefaults(self):
"""Schreibt fuer ein virtuelles Device piCtory Defaultinputwerte.

View File

@@ -37,6 +37,8 @@ class EventCallback(Thread):
"""
__slots__ = "daemon", "exit", "func", "ioname", "iovalue"
def __init__(self, func, name, value):
"""Init EventCallback class.
@@ -85,6 +87,11 @@ class Cycletools():
"""
__slots__ = "__cycle", "__cycletime", "__ucycle", \
"__dict_ton", "__dict_tof", "__dict_tp", "first", \
"flag1c", "flag5c", "flag10c", "flag15c", "flag20c", \
"flank5c", "flank10c", "flank15c", "flank20c", "var"
def __init__(self, cycletime):
"""Init Cycletools class."""
self.__cycle = 0
@@ -108,6 +115,11 @@ class Cycletools():
self.flank15c = True
self.flank20c = True
# Benutzerdaten
class Var:
pass
self.var = Var()
def _docycle(self):
"""Zyklusarbeiten."""
# Einschaltverzoegerung
@@ -277,6 +289,10 @@ class ProcimgWriter(Thread):
"""
__slots__ = "__dict_delay", "__eventth", "__eventqth", "__eventwork", \
"_adjwait", "_eventq", "_ioerror", "_maxioerrors", "_modio", \
"_refresh", "_work", "daemon", "lck_refresh", "newdata"
def __init__(self, parentmodio):
"""Init ProcimgWriter class.
@param parentmodio Parent Object"""

View File

@@ -14,6 +14,8 @@ class IOEvent(object):
"""Basisklasse fuer IO-Events."""
__slots__ = "as_thread", "delay", "edge", "func", "overwrite"
def __init__(self, func, edge, as_thread, delay, overwrite):
"""Init IOEvent class."""
self.as_thread = as_thread
@@ -220,6 +222,8 @@ class DeadIO(object):
"""Klasse, mit der ersetzte IOs verwaltet werden."""
__slots__ = "__deadio"
def __init__(self, deadio):
"""Instantiierung der DeadIO-Klasse.
@param deadio IO, der ersetzt wurde"""
@@ -248,6 +252,10 @@ class IOBase(object):
"""
__slots__ = "_bitaddress", "_bitlength", "_byteorder", "_defaultvalue", \
"_iotype", "_length", "_name", "_parentdevice", \
"_signed", "_slc_address", "bmk"
def __init__(self, parentdevice, valuelist, iotype, byteorder, signed):
"""Instantiierung der IOBase-Klasse.
@@ -767,6 +775,8 @@ class IntIO(IOBase):
"""
__slots__ = ()
def __int__(self):
"""Gibt IO-Wert zurueck mit Beachtung byteorder/signed.
@return IO-Wert als <class 'int'>"""
@@ -844,6 +854,9 @@ class StructIO(IOBase):
"""
__slots__ = "__frm", "_parentio_address", "_parentio_defaultvalue", \
"_parentio_length"
def __init__(self, parentio, name, frm, **kwargs):
"""Erstellt einen IO mit struct-Formatierung.

View File

@@ -31,6 +31,13 @@ class RevPiModIO(object):
"""
__slots__ = "__cleanupfunc", "_autorefresh", "_buffedwrite", \
"_configrsc", "_exit", "_imgwriter", "_ioerror", "_length", \
"_looprunning", "_lst_devselect", "_lst_refresh", "_maxioerrors", \
"_myfh", "_monitoring", "_procimg", "_simulator", "_syncoutputs", \
"_th_mainloop", "_waitexit", \
"core", "app", "device", "exitsignal", "io", "summary"
def __init__(
self, autorefresh=False, monitoring=False, syncoutputs=True,
procimg=None, configrsc=None, simulator=False):
@@ -796,6 +803,8 @@ class RevPiModIOSelected(RevPiModIO):
"""
__slots__ = ()
def __init__(
self, deviceselection, autorefresh=False, monitoring=False,
syncoutputs=True, procimg=None, configrsc=None, simulator=False):
@@ -860,6 +869,8 @@ class RevPiModIODriver(RevPiModIOSelected):
"""
__slots__ = ()
def __init__(
self, virtdev, autorefresh=False, monitoring=False,
syncoutputs=True, procimg=None, configrsc=None):

View File

@@ -34,6 +34,12 @@ class NetFH(Thread):
"""
__slots__ = "__by_buff", "__int_buff", "__dictdirty", "__flusherr", \
"__position", "__sockact", "__sockerr", "__sockend", "__socklock", \
"__timeout", "__trigger", "__waitsync", \
"_address", "_slavesock", \
"daemon"
def __init__(self, address, timeout=500):
"""Init NetFH-class.
@param address IP Adresse des RevPi
@@ -379,6 +385,8 @@ class RevPiNetIO(_RevPiModIO):
"""
__slots__ = "_address"
def __init__(
self, address, autorefresh=False, monitoring=False,
syncoutputs=True, simulator=False):
@@ -530,6 +538,8 @@ class RevPiNetIOSelected(RevPiNetIO):
"""
__slots__ = ()
def __init__(
self, address, deviceselection, autorefresh=False,
monitoring=False, syncoutputs=True, simulator=False):
@@ -595,6 +605,8 @@ class RevPiNetIODriver(RevPiNetIOSelected):
"""
__slots__ = ()
def __init__(
self, address, virtdev, autorefresh=False, monitoring=False,
syncoutputs=True):

View File

@@ -9,6 +9,8 @@ class Summary(object):
"""Bildet die Summary-Sektion der config.rsc ab."""
__slots__ = "inptotal", "outtotal"
def __init__(self, summary):
"""Instantiiert die RevPiSummary-Klasse.
@param summary piCtory Summaryinformationen"""

View File

@@ -17,7 +17,7 @@ setup(
license="LGPLv3",
name="revpimodio2",
version="2.2.2",
version="2.2.3",
packages=["revpimodio2"],
python_requires="~=3.2",