diff -r 1b8b5324506c -r 70c1cc354a8f plcopen/plcopen.py --- a/plcopen/plcopen.py Mon Oct 09 12:30:14 2017 +0300 +++ b/plcopen/plcopen.py Mon Oct 09 16:04:39 2017 +0300 @@ -482,7 +482,8 @@ self.types.removedataTypeElement(name) setattr(cls, "removedataType", removedataType) - def getpous(self, exclude=None, filter=[]): + def getpous(self, exclude=None, filter=None): + filter = [] if filter is None else filter return self.xpath( "ppx:types/ppx:pous/ppx:pou%s%s" % (("[@name!='%s']" % exclude) if exclude is not None else '', @@ -615,7 +616,8 @@ return [value.getname() for value in enumerated_values_xpath(self)] setattr(cls, "GetEnumeratedDataTypeValues", GetEnumeratedDataTypeValues) - def Search(self, criteria, parent_infos=[]): + def Search(self, criteria, parent_infos=None): + parent_infos = [] if parent_infos is None else parent_infos result = self.types.Search(criteria, parent_infos) for configuration in self.instances.configurations.getconfiguration(): result.extend(configuration.Search(criteria, parent_infos)) @@ -756,7 +758,8 @@ variables.remove(variables[i]) -def _SearchInConfigurationResource(self, criteria, parent_infos=[]): +def _SearchInConfigurationResource(self, criteria, parent_infos=None): + parent_infos = [] if parent_infos is None else parent_infos search_result = _Search([("name", self.getname())], criteria, parent_infos) var_number = 0 for varlist in self.getglobalVars(): @@ -810,7 +813,8 @@ setattr(cls, "removeVariableByAddress", _removeConfigurationResourceVariableByAddress) setattr(cls, "removeVariableByFilter", _removeConfigurationResourceVariableByFilter) - def Search(self, criteria, parent_infos=[]): + def Search(self, criteria, parent_infos=None): + parent_infos = [] if parent_infos is None else parent_infos search_result = [] parent_infos = parent_infos + ["C::%s" % self.getname()] filter = criteria["filter"] @@ -848,7 +852,8 @@ setattr(cls, "removeVariableByAddress", _removeConfigurationResourceVariableByAddress) setattr(cls, "removeVariableByFilter", _removeConfigurationResourceVariableByFilter) - def Search(self, criteria, parent_infos=[]): + def Search(self, criteria, parent_infos=None): + parent_infos = [] if parent_infos is None else parent_infos parent_infos = parent_infos[:-1] + ["R::%s::%s" % (parent_infos[-1].split("::")[1], self.getname())] search_result = _SearchInConfigurationResource(self, criteria, parent_infos) task_number = 0 @@ -896,7 +901,8 @@ self.interval = update_address(self.interval, address_model, new_leading) setattr(cls, "updateElementAddress", updateElementAddress) - def Search(self, criteria, parent_infos=[]): + def Search(self, criteria, parent_infos=None): + parent_infos = [] if parent_infos is None else parent_infos return _Search([("single", self.getsingle()), ("interval", self.getinterval()), ("priority", str(self.getpriority()))], @@ -918,7 +924,8 @@ self.typeName = new_name setattr(cls, "updateElementName", updateElementName) - def Search(self, criteria, parent_infos=[]): + def Search(self, criteria, parent_infos=None): + parent_infos = [] if parent_infos is None else parent_infos return _Search([("name", self.getname()), ("type", self.gettypeName())], criteria, parent_infos) @@ -961,7 +968,8 @@ return vartype_content_name setattr(cls, "gettypeAsText", gettypeAsText) - def Search(self, criteria, parent_infos=[]): + def Search(self, criteria, parent_infos=None): + parent_infos = [] if parent_infos is None else parent_infos search_result = _Search([("name", self.getname()), ("type", self.gettypeAsText()), ("location", self.getaddress())], @@ -1058,7 +1066,8 @@ raise ValueError(_("\"%s\" POU doesn't exist !!!") % name) setattr(cls, "removepouElement", removepouElement) - def Search(self, criteria, parent_infos=[]): + def Search(self, criteria, parent_infos=None): + parent_infos = [] if parent_infos is None else parent_infos search_result = [] for datatype in self.dataTypes.getdataType(): search_result.extend(datatype.Search(criteria, parent_infos)) @@ -1083,7 +1092,8 @@ def _updateDataTypeDataTypesClass(cls): setattr(cls, "updateElementName", _updateBaseTypeElementName) - def Search(self, criteria, parent_infos=[]): + def Search(self, criteria, parent_infos=None): + parent_infos = [] if parent_infos is None else parent_infos search_result = [] filter = criteria["filter"] if filter == "all" or "datatype" in filter: @@ -1114,7 +1124,8 @@ element.type.updateElementName(old_name, new_name) setattr(cls, "updateElementName", updateElementName) - def Search(self, criteria, parent_infos=[]): + def Search(self, criteria, parent_infos=None): + parent_infos = [] if parent_infos is None else parent_infos search_result = [] content_name = self.content.getLocalTag() if content_name in ["derived", "array", "enum", "subrangeSigned", "subrangeUnsigned"]: @@ -1144,7 +1155,8 @@ self.name = new_name setattr(cls, "updateElementName", updateElementName) - def Search(self, criteria, parent_infos=[]): + def Search(self, criteria, parent_infos=None): + parent_infos = [] if parent_infos is None else parent_infos return [(tuple(parent_infos),) + result for result in TestTextElement(self.name, criteria)] setattr(cls, "Search", Search) @@ -1160,7 +1172,8 @@ def _updateArrayDataTypeClass(cls): setattr(cls, "updateElementName", _updateBaseTypeElementName) - def Search(self, criteria, parent_infos=[]): + def Search(self, criteria, parent_infos=None): + parent_infos = [] if parent_infos is None else parent_infos search_result = self.baseType.Search(criteria, parent_infos) for i, dimension in enumerate(self.getdimension()): search_result.extend(_Search([("lower", dimension.getlower()), @@ -1178,7 +1191,8 @@ # ---------------------------------------------------------------------- -def _SearchInSubrange(self, criteria, parent_infos=[]): +def _SearchInSubrange(self, criteria, parent_infos=None): + parent_infos = [] if parent_infos is None else parent_infos search_result = self.baseType.Search(criteria, parent_infos) search_result.extend(_Search([("lower", self.range.getlower()), ("upper", self.range.getupper())], @@ -1211,7 +1225,8 @@ enumerated_datatype_values_xpath = PLCOpen_XPath("ppx:values/ppx:value") - def Search(self, criteria, parent_infos=[]): + def Search(self, criteria, parent_infos=None): + parent_infos = [] if parent_infos is None else parent_infos search_result = [] for i, value in enumerate(enumerated_datatype_values_xpath(self)): for result in TestTextElement(value.getname(), criteria): @@ -1604,7 +1619,8 @@ content.remove(variable) setattr(cls, "removeVariableByFilter", removeVariableByFilter) - def Search(self, criteria, parent_infos=[]): + def Search(self, criteria, parent_infos=None): + parent_infos = [] if parent_infos is None else parent_infos search_result = [] filter = criteria["filter"] if filter == "all" or self.getpouType() in filter: @@ -1969,7 +1985,8 @@ element.updateElementAddress(address_model, new_leading) setattr(cls, "updateElementAddress", updateElementAddress) - def Search(self, criteria, parent_infos=[]): + def Search(self, criteria, parent_infos=None): + parent_infos = [] if parent_infos is None else parent_infos if self.content.getLocalTag() in ["IL", "ST"]: search_result = self.content.Search(criteria, parent_infos + ["body", 0]) else: @@ -2117,7 +2134,7 @@ pass -def _SearchInElement(self, criteria, parent_infos=[]): +def _SearchInElement(self, criteria, parent_infos=None): return [] @@ -2174,7 +2191,8 @@ self.content.updateElementAddress(address_model, new_leading) setattr(cls, "updateElementAddress", updateElementAddress) - def Search(self, criteria, parent_infos=[]): + def Search(self, criteria, parent_infos=None): + parent_infos = [] if parent_infos is None else parent_infos return self.content.Search(criteria, parent_infos + ["comment", self.getlocalId(), "content"]) setattr(cls, "Search", Search) @@ -2218,7 +2236,8 @@ _translateConnections(input.connectionPointIn, dx, dy) setattr(cls, "translate", translate) - def Search(self, criteria, parent_infos=[]): + def Search(self, criteria, parent_infos=None): + parent_infos = [] if parent_infos is None else parent_infos parent_infos = parent_infos + ["block", self.getlocalId()] search_result = _Search([("name", self.getinstanceName()), ("type", self.gettypeName())], @@ -2255,7 +2274,8 @@ def _getSearchInLDElement(ld_element_type): - def SearchInLDElement(self, criteria, parent_infos=[]): + def SearchInLDElement(self, criteria, parent_infos=None): + parent_infos = [] if parent_infos is None else parent_infos return _Search([("reference", self.variable)], criteria, parent_infos + [ld_element_type, self.getlocalId()]) return SearchInLDElement @@ -2284,7 +2304,8 @@ def _updateStepSfcObjectSingleClass(cls): - def Search(self, criteria, parent_infos=[]): + def Search(self, criteria, parent_infos=None): + parent_infos = [] if parent_infos is None else parent_infos return _Search([("name", self.getname())], criteria, parent_infos + ["step", self.getlocalId()]) setattr(cls, "Search", Search) @@ -2396,7 +2417,8 @@ return None setattr(cls, "getconnections", getconnections) - def Search(self, criteria, parent_infos=[]): + def Search(self, criteria, parent_infos=None): + parent_infos = [] if parent_infos is None else parent_infos parent_infos = parent_infos + ["transition", self.getlocalId()] search_result = [] content = self.condition.getcontent() @@ -2475,7 +2497,8 @@ self.inline.updateElementAddress(address_model, new_leading) setattr(cls, "updateElementAddress", updateElementAddress) - def Search(self, criteria, parent_infos=[]): + def Search(self, criteria, parent_infos=None): + parent_infos = [] if parent_infos is None else parent_infos qualifier = self.getqualifier() if qualifier is None: qualifier = "N" @@ -2548,7 +2571,8 @@ action.updateElementAddress(address_model, new_leading) setattr(cls, "updateElementAddress", updateElementAddress) - def Search(self, criteria, parent_infos=[]): + def Search(self, criteria, parent_infos=None): + parent_infos = [] if parent_infos is None else parent_infos parent_infos = parent_infos + ["action_block", self.getlocalId()] search_result = [] for idx, action in enumerate(self.action): @@ -2565,7 +2589,8 @@ # ---------------------------------------------------------------------- -def _SearchInIOVariable(self, criteria, parent_infos=[]): +def _SearchInIOVariable(self, criteria, parent_infos=None): + parent_infos = [] if parent_infos is None else parent_infos return _Search([("expression", self.expression)], criteria, parent_infos + ["io_variable", self.getlocalId()]) @@ -2597,7 +2622,8 @@ setattr(cls, "Search", _SearchInIOVariable) -def _SearchInConnector(self, criteria, parent_infos=[]): +def _SearchInConnector(self, criteria, parent_infos=None): + parent_infos = [] if parent_infos is None else parent_infos return _Search([("name", self.getname())], criteria, parent_infos + ["connector", self.getlocalId()])