mirror of
https://github.com/HorlogeSkynet/archey4
synced 2024-11-21 20:00:12 +01:00
27 lines
988 B
Python
27 lines
988 B
Python
"""Archey Utility module"""
|
|
|
|
from typing import Tuple
|
|
|
|
from archey.singleton import Singleton
|
|
|
|
|
|
class Utility(metaclass=Singleton):
|
|
"""Miscellaneous logic used in Archey internals"""
|
|
|
|
@classmethod
|
|
def update_recursive(cls, old_dict: dict, new_dict: dict) -> None:
|
|
"""
|
|
A method for recursively merging dictionaries as `dict.update()` is not able to do this.
|
|
Original snippet taken from here : <https://gist.github.com/angstwad/bf22d1822c38a92ec0a9>
|
|
"""
|
|
for key, value in new_dict.items():
|
|
if key in old_dict and isinstance(old_dict[key], dict) and isinstance(value, dict):
|
|
cls.update_recursive(old_dict[key], value)
|
|
else:
|
|
old_dict[key] = value
|
|
|
|
@staticmethod
|
|
def version_to_semver_segments(version: str) -> Tuple[int, ...]:
|
|
"""Transforms string `version` to a tuple containing SemVer segments"""
|
|
return tuple(map(int, version.partition("-")[0].split(".")))
|