Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def search(self, name, threshold=80):
matches = []
for manufacturer in self.manufacturers:
for variant in manufacturer:
# Search with false name
ratio = fuzz.ratio(variant.lower(), name.lower())
if ratio > threshold:
matches.append((manufacturer[0], ratio))
return sorted(matches, key=lambda x: x[1], reverse=True)
result.append(match_dict.copy())
continue
# Looking for a value
elif target_property_title == 'value' and match_dict['thing'] != None:
result.append(match_dict.copy())
continue
# Looking for 'all' properties
elif target_property_title == 'all' and match_dict['thing'] != None:
#If all properties are desired, add all properties
result.append(match_dict.copy())
continue
# We found a good matching property title and already found a good matching thing title. # TODO: shouldn't this be higher up?
elif fuzz.ratio(current_property_title, target_property_title) > 85:
if self.DEBUG:
print("FOUND A PROPERTY WITH THE MATCHING FUZZY NAME")
if match_dict['thing'] == None:
match_dict['thing'] = current_thing_title
result.append(match_dict.copy())
else:
result = [] # Since this is a really good match, we remove any older properties we may have found.
result.append(match_dict.copy())
return result
# We're looking for a numbered property (e.g. moisture 5), and this property has that number in it. Here we favour sensors. # TODO: add ordinal support?
elif str(numerical_index) in current_property_title and target_thing_title != None:
result.append(match_dict.copy())
if thing['properties'][thing_property_key]['type'] == 'boolean' and probability_of_correct_property == 0: