pyhw 0.10.2__py3-none-any.whl → 0.11.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pyhw/__init__.py +1 -1
- pyhw/__main__.py +23 -27
- pyhw/backend/npu/macos.py +14 -14
- pyhw/pyhwUtil/__init__.py +2 -1
- pyhw/pyhwUtil/cliUtil.py +62 -0
- {pyhw-0.10.2.dist-info → pyhw-0.11.1.dist-info}/METADATA +2 -2
- {pyhw-0.10.2.dist-info → pyhw-0.11.1.dist-info}/RECORD +11 -10
- {pyhw-0.10.2.dist-info → pyhw-0.11.1.dist-info}/LICENSE +0 -0
- {pyhw-0.10.2.dist-info → pyhw-0.11.1.dist-info}/WHEEL +0 -0
- {pyhw-0.10.2.dist-info → pyhw-0.11.1.dist-info}/entry_points.txt +0 -0
- {pyhw-0.10.2.dist-info → pyhw-0.11.1.dist-info}/top_level.txt +0 -0
pyhw/__init__.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = '0.
|
1
|
+
__version__ = '0.11.1'
|
pyhw/__main__.py
CHANGED
@@ -13,9 +13,17 @@ from .backend.nic import NICDetect
|
|
13
13
|
from .backend.npu import NPUDetect
|
14
14
|
from .pyhwUtil import createDataString
|
15
15
|
from .pyhwUtil import getOS, selectOSLogo
|
16
|
+
from .pyhwUtil import ReleaseChecker
|
16
17
|
import multiprocessing
|
17
18
|
|
18
19
|
|
20
|
+
def check_release(release_dict):
|
21
|
+
releaseChecker = ReleaseChecker()
|
22
|
+
release_dict["is_new_release"] = releaseChecker.check_for_updates()
|
23
|
+
release_dict["release"] = releaseChecker.LatestVersion
|
24
|
+
release_dict["current"] = releaseChecker.CurrentVersion
|
25
|
+
|
26
|
+
|
19
27
|
def detect_title(os, result_dict):
|
20
28
|
result_dict["title"] = TitleDetect(os=os).getTitle().title
|
21
29
|
|
@@ -76,8 +84,10 @@ def main():
|
|
76
84
|
|
77
85
|
manager = multiprocessing.Manager()
|
78
86
|
result_dict = manager.dict()
|
87
|
+
release_dict = manager.dict()
|
79
88
|
|
80
89
|
processes = [
|
90
|
+
multiprocessing.Process(target=check_release, args=(release_dict,)),
|
81
91
|
multiprocessing.Process(target=detect_title, args=(current_os, result_dict)),
|
82
92
|
multiprocessing.Process(target=detect_host, args=(current_os, result_dict)),
|
83
93
|
multiprocessing.Process(target=detect_kernel, args=(current_os, result_dict)),
|
@@ -94,7 +104,7 @@ def main():
|
|
94
104
|
for process in processes:
|
95
105
|
process.start()
|
96
106
|
|
97
|
-
for process in processes:
|
107
|
+
for process in processes[1:]:
|
98
108
|
process.join()
|
99
109
|
|
100
110
|
for key, value in result_dict.items():
|
@@ -103,32 +113,18 @@ def main():
|
|
103
113
|
logo_os = selectOSLogo(OSDetect(os=current_os).getOSInfo().id)
|
104
114
|
Printer(logo_os=logo_os, data=createDataString(data)).cPrint()
|
105
115
|
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
#
|
115
|
-
#
|
116
|
-
#
|
117
|
-
#
|
118
|
-
# data.OS = OSDetect(os=current_os).getOSInfo().prettyName
|
119
|
-
# data.CPU = CPUDetect(os=current_os).getCPUInfo().cpu
|
120
|
-
# gpu_info = GPUDetect(os=current_os).getGPUInfo()
|
121
|
-
# if gpu_info.number > 0:
|
122
|
-
# data.GPU = gpu_info.gpus
|
123
|
-
# data.Memory = MemoryDetect(os=current_os).getMemoryInfo().memory
|
124
|
-
# nic_info = NICDetect(os=current_os).getNICInfo()
|
125
|
-
# if nic_info.number > 0:
|
126
|
-
# data.NIC = nic_info.nics
|
127
|
-
# npu_info = NPUDetect(os=current_os).getNPUInfo()
|
128
|
-
# if npu_info.number > 0:
|
129
|
-
# data.NPU = npu_info.npus
|
130
|
-
#
|
131
|
-
# Printer(logo_os=selectOSLogo(OSDetect(os=current_os).getOSInfo().id), data=createDataString(data)).cPrint()
|
116
|
+
processes[0].join()
|
117
|
+
if release_dict["is_new_release"]:
|
118
|
+
print(f"🔔 Found a newer version: v{release_dict['release']} (current: v{release_dict['current']})")
|
119
|
+
print("👉 You can use the following command to upgrade:")
|
120
|
+
if ReleaseChecker().isInPIPX:
|
121
|
+
print(f" pipx upgrade pyhw")
|
122
|
+
else:
|
123
|
+
print(f" pip install -U pyhw")
|
124
|
+
# else:
|
125
|
+
# # debug
|
126
|
+
# print("🎉 You are using the latest version of pyhw!")
|
127
|
+
# print(f"🔔 Release: v{release_dict['release']} (current: v{release_dict['current']})")
|
132
128
|
|
133
129
|
|
134
130
|
if __name__ == "__main__":
|
pyhw/backend/npu/macos.py
CHANGED
@@ -46,20 +46,20 @@ class NPUDetectMacOS:
|
|
46
46
|
# see https://apple.fandom.com/wiki/Neural_Engine for more details.
|
47
47
|
model_name = CPUDetect(os=getOS()).getCPUInfo().model
|
48
48
|
npu = {
|
49
|
-
"Apple M1": "Apple Neural Engine 16
|
50
|
-
"Apple M1 Pro": "Apple Neural Engine 16
|
51
|
-
"Apple M1 Max": "Apple Neural Engine 16
|
52
|
-
"Apple M1 Ultra": "Apple Neural Engine 32
|
53
|
-
"Apple M2": "Apple Neural Engine 16
|
54
|
-
"Apple M2 Pro": "Apple Neural Engine 16
|
55
|
-
"Apple M2 Max": "Apple Neural Engine 16
|
56
|
-
"Apple M2 Ultra": "Apple Neural Engine 32
|
57
|
-
"Apple M3": "Apple Neural Engine 16
|
58
|
-
"Apple M3 Pro": "Apple Neural Engine 16
|
59
|
-
"Apple M3 Max": "Apple Neural Engine 16
|
60
|
-
"Apple M4": "Apple Neural Engine 16
|
61
|
-
"Apple M4 Pro": "Apple Neural Engine 16
|
62
|
-
"Apple M4 Max": "Apple Neural Engine 16
|
49
|
+
"Apple M1": "Apple Neural Engine 16 Cores (5 nm) [SOC Integrated]",
|
50
|
+
"Apple M1 Pro": "Apple Neural Engine 16 Cores (5 nm) [SOC Integrated]",
|
51
|
+
"Apple M1 Max": "Apple Neural Engine 16 Cores (5 nm) [SOC Integrated]",
|
52
|
+
"Apple M1 Ultra": "Apple Neural Engine 32 Cores (5 nm) [SOC Integrated]",
|
53
|
+
"Apple M2": "Apple Neural Engine 16 Cores (5 nm) [SOC Integrated]",
|
54
|
+
"Apple M2 Pro": "Apple Neural Engine 16 Cores (5 nm) [SOC Integrated]",
|
55
|
+
"Apple M2 Max": "Apple Neural Engine 16 Cores (5 nm) [SOC Integrated]",
|
56
|
+
"Apple M2 Ultra": "Apple Neural Engine 32 Cores (5 nm) [SOC Integrated]",
|
57
|
+
"Apple M3": "Apple Neural Engine 16 Cores (3 nm) [SOC Integrated]",
|
58
|
+
"Apple M3 Pro": "Apple Neural Engine 16 Cores (3 nm) [SOC Integrated]",
|
59
|
+
"Apple M3 Max": "Apple Neural Engine 16 Cores (3 nm) [SOC Integrated]",
|
60
|
+
"Apple M4": "Apple Neural Engine 16 Cores (3 nm) [SOC Integrated]",
|
61
|
+
"Apple M4 Pro": "Apple Neural Engine 16 Cores (3 nm) [SOC Integrated]",
|
62
|
+
"Apple M4 Max": "Apple Neural Engine 16 Cores (3 nm) [SOC Integrated]"
|
63
63
|
}
|
64
64
|
return npu.get(model_name, "Not Found")
|
65
65
|
|
pyhw/pyhwUtil/__init__.py
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
from .pyhwUtil import getOS, getArch, getDocker, createDataString, selectOSLogo
|
2
2
|
from .sysctlUtil import sysctlGetString, sysctlGetInt
|
3
|
+
from .cliUtil import ReleaseChecker
|
3
4
|
|
4
|
-
__all__ = ["getOS", "getArch", "getDocker", "createDataString", "selectOSLogo", "sysctlGetString", "sysctlGetInt"]
|
5
|
+
__all__ = ["getOS", "getArch", "getDocker", "createDataString", "selectOSLogo", "sysctlGetString", "sysctlGetInt", "ReleaseChecker"]
|
pyhw/pyhwUtil/cliUtil.py
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
import sys
|
2
|
+
import site
|
3
|
+
import os
|
4
|
+
import urllib.request
|
5
|
+
import json
|
6
|
+
import importlib.metadata
|
7
|
+
|
8
|
+
|
9
|
+
class ReleaseChecker:
|
10
|
+
PACKAGE_NAME = "pyhw"
|
11
|
+
|
12
|
+
def __init__(self):
|
13
|
+
self.isInPIPX = self.__is_running_in_pipx()
|
14
|
+
self.CurrentVersion = self.__get_installed_version()
|
15
|
+
self.LatestVersion = self.__get_latest_version()
|
16
|
+
|
17
|
+
@staticmethod
|
18
|
+
def __is_running_in_pipx():
|
19
|
+
return (
|
20
|
+
"pipx" in sys.prefix or
|
21
|
+
any("pipx" in path for path in site.getsitepackages()) or
|
22
|
+
"PIPX_BIN_DIR" in os.environ
|
23
|
+
)
|
24
|
+
|
25
|
+
def __get_installed_version(self):
|
26
|
+
try:
|
27
|
+
return importlib.metadata.version(self.PACKAGE_NAME)
|
28
|
+
except importlib.metadata.PackageNotFoundError:
|
29
|
+
return None
|
30
|
+
|
31
|
+
def __get_latest_version(self):
|
32
|
+
url = f"https://pypi.org/pypi/{self.PACKAGE_NAME}/json"
|
33
|
+
try:
|
34
|
+
with urllib.request.urlopen(url, timeout=3) as response:
|
35
|
+
data = json.load(response)
|
36
|
+
return data["info"]["version"]
|
37
|
+
except Exception:
|
38
|
+
return None
|
39
|
+
|
40
|
+
@staticmethod
|
41
|
+
def parse_version(version):
|
42
|
+
return tuple(map(int, version.split(".")))
|
43
|
+
|
44
|
+
def __is_newer_version(self):
|
45
|
+
if self.CurrentVersion is None or self.LatestVersion is None:
|
46
|
+
return False
|
47
|
+
else:
|
48
|
+
return self.parse_version(self.CurrentVersion) < self.parse_version(self.LatestVersion)
|
49
|
+
|
50
|
+
def check_for_updates(self):
|
51
|
+
return self.__is_newer_version()
|
52
|
+
|
53
|
+
def check_for_updates_print(self):
|
54
|
+
if self.__is_newer_version():
|
55
|
+
print(f"🔔 Found newer version: {self.CurrentVersion} (current: {self.LatestVersion})")
|
56
|
+
print("👉 You can use the following command to upgrade:")
|
57
|
+
if self.isInPIPX:
|
58
|
+
print(f" pipx upgrade {self.PACKAGE_NAME}")
|
59
|
+
else:
|
60
|
+
print(f" pip install -U {self.PACKAGE_NAME}")
|
61
|
+
|
62
|
+
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: pyhw
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.11.1
|
4
4
|
Summary: PyHw, a neofetch-like command line tool for fetching system information but written mostly in python.
|
5
5
|
Author-email: Xiao Ran <xiaoran.007@icloud.com>
|
6
6
|
License: BSD-3-Clause
|
@@ -13,7 +13,7 @@ Classifier: Operating System :: OS Independent
|
|
13
13
|
Requires-Python: >=3.9
|
14
14
|
Description-Content-Type: text/markdown
|
15
15
|
License-File: LICENSE
|
16
|
-
Requires-Dist: pypci-ng>=0.1.
|
16
|
+
Requires-Dist: pypci-ng>=0.1.4
|
17
17
|
|
18
18
|
# PyHw
|
19
19
|
[](https://pepy.tech/project/pyhw)
|
@@ -1,5 +1,5 @@
|
|
1
|
-
pyhw/__init__.py,sha256=
|
2
|
-
pyhw/__main__.py,sha256=
|
1
|
+
pyhw/__init__.py,sha256=3TWkE7T0Jt_0JSXR8Em3yqaM443tlkkxCPdXvSdnzBM,23
|
2
|
+
pyhw/__main__.py,sha256=Z8PQRp_hZrui2wZuHKW9hRorbYvy6Qc8szYbjj3t2io,4479
|
3
3
|
pyhw/backend/__init__.py,sha256=knn_3Yroow1h0dqdrozk3zyy3vz-kQyNBRjR6OLmVoY,50
|
4
4
|
pyhw/backend/backendBase.py,sha256=mloo8mPEbgbIdmyQ3I4vdEXMSSjxWi_wnwACmzvHbEo,506
|
5
5
|
pyhw/backend/cpu/__init__.py,sha256=5YfANJVRwNwTRodG0ENOgusrdN592aaSnfq5ok4dKTo,56
|
@@ -46,7 +46,7 @@ pyhw/backend/nic/windows.py,sha256=c67JwHARtPxNsZ-0_MVKUfc7DwpsRVn7kiHdx_NyDn8,1
|
|
46
46
|
pyhw/backend/npu/__init__.py,sha256=PgLKbwpgT5vw9xpa294Zxb94McyxNXW46_vMbT2Iqyc,58
|
47
47
|
pyhw/backend/npu/bsd.py,sha256=eKkOWZ4MBybR_KOGGcsWUpzCGgghhvuBy5VNsnEE8cI,134
|
48
48
|
pyhw/backend/npu/linux.py,sha256=fPsaXClSC-Py2kHRi17y4eGWrjwRDmjsIX4lgMxRVPc,1806
|
49
|
-
pyhw/backend/npu/macos.py,sha256=
|
49
|
+
pyhw/backend/npu/macos.py,sha256=qOIXfWILnA-sAKH6nq_cep7BlH0rKk4bglc1VgyKp6U,2625
|
50
50
|
pyhw/backend/npu/npuBase.py,sha256=1cVWRmr8g-mDXrJAx2cUO4qWZft2TtT7L2-HzRot2nI,748
|
51
51
|
pyhw/backend/npu/npuInfo.py,sha256=82dK6XvW_XKw4O5-RfR4-qQRR7Plh8qqJLj0YDzISmU,135
|
52
52
|
pyhw/backend/npu/windows.py,sha256=Z2v5CORSa1ap66k48G7uVLbon3zaoT4ug5sX2_rt6vM,1196
|
@@ -102,12 +102,13 @@ pyhw/frontend/logo/ascii/windows_old.pyhw,sha256=AMsvWAZ50HM8lweWEmzDWbRNDGkKFJo
|
|
102
102
|
pyhw/library/lib/iokitGPULib.dylib,sha256=KAz0VyeRspD3U7WeedUnPvJVUZEKn_Pw0AKk5zm42ZM,154808
|
103
103
|
pyhw/pyhwException/__init__.py,sha256=8JsFvtF13g0Y5t4z9fRndDXtfCzuBM59jDf6PhWSFSk,220
|
104
104
|
pyhw/pyhwException/pyhwException.py,sha256=wxuzFQa9g7XB1q9TUKO_55lw7wMEJMpzG8w1GVTFVa0,197
|
105
|
-
pyhw/pyhwUtil/__init__.py,sha256=
|
105
|
+
pyhw/pyhwUtil/__init__.py,sha256=34ygvVBBqfJ_9OMzHToCcV_BVahixNsa_Z5yh6VsaPQ,304
|
106
|
+
pyhw/pyhwUtil/cliUtil.py,sha256=SuXAs-ousXw6h5i8psazJEP5Q9X5VaxZlxhPSFYdM-4,1933
|
106
107
|
pyhw/pyhwUtil/pyhwUtil.py,sha256=TxAgsDlrz-AJFyeXnOjL1MVnh1uR9dEqli5dmYPZcog,6915
|
107
108
|
pyhw/pyhwUtil/sysctlUtil.py,sha256=S-rUvqi7ZrMyMouIhxlyHEQ4agM7sCT1Y7uzs3Hu5-o,841
|
108
|
-
pyhw-0.
|
109
|
-
pyhw-0.
|
110
|
-
pyhw-0.
|
111
|
-
pyhw-0.
|
112
|
-
pyhw-0.
|
113
|
-
pyhw-0.
|
109
|
+
pyhw-0.11.1.dist-info/LICENSE,sha256=hJs6RBqSVCexbTsalkMLNFI5t06kekQEsSVaOt_-yLs,1497
|
110
|
+
pyhw-0.11.1.dist-info/METADATA,sha256=9ioJk1jICjlBRXiqGga7j1PHyioTisnFddbE7lIAJzU,6732
|
111
|
+
pyhw-0.11.1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
112
|
+
pyhw-0.11.1.dist-info/entry_points.txt,sha256=q-AB8im_QahpmNrmy4aPTJRGi0LlbNlnI3kF7s6pKss,44
|
113
|
+
pyhw-0.11.1.dist-info/top_level.txt,sha256=7Inxvxt1TngEricKZEex9_WJZS3DbKYFUXDz4v5WHYU,5
|
114
|
+
pyhw-0.11.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|