| 656 | self._finding_queue = None |
| 657 | |
| 658 | def add_tech(self, name: str, version: str = "", confidence: int = 50, source: str = "") -> None: |
| 659 | key = name.lower() |
| 660 | existing = self.technologies.get(key) |
| 661 | if existing: |
| 662 | # keep highest confidence; prefer version if new has it |
| 663 | if confidence > existing.confidence: |
| 664 | existing.confidence = confidence |
| 665 | if version and (not existing.version): |
| 666 | existing.version = version |
| 667 | if source and (not existing.source): |
| 668 | existing.source = source |
| 669 | else: |
| 670 | self.technologies[key] = Technology(name=name, version=version, confidence=confidence, source=source) |
| 671 | |
| 672 | # ---------- parsing & discovery ---------- |
| 673 | |