pyhw 0.10.2__py3-none-any.whl → 0.11.0__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- pyhw/__init__.py +1 -1
- pyhw/__main__.py +23 -27
- pyhw/pyhwUtil/__init__.py +2 -1
- pyhw/pyhwUtil/cliUtil.py +62 -0
- {pyhw-0.10.2.dist-info → pyhw-0.11.0.dist-info}/METADATA +2 -2
- {pyhw-0.10.2.dist-info → pyhw-0.11.0.dist-info}/RECORD +10 -9
- {pyhw-0.10.2.dist-info → pyhw-0.11.0.dist-info}/LICENSE +0 -0
- {pyhw-0.10.2.dist-info → pyhw-0.11.0.dist-info}/WHEEL +0 -0
- {pyhw-0.10.2.dist-info → pyhw-0.11.0.dist-info}/entry_points.txt +0 -0
- {pyhw-0.10.2.dist-info → pyhw-0.11.0.dist-info}/top_level.txt +0 -0
pyhw/__init__.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = '0.
|
1
|
+
__version__ = '0.11.0'
|
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/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.0
|
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=UHGsGhGjMtfvoaFMaJdv4diSXG2uXo8Y2yCo7kiUOdk,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
|
@@ -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.0.dist-info/LICENSE,sha256=hJs6RBqSVCexbTsalkMLNFI5t06kekQEsSVaOt_-yLs,1497
|
110
|
+
pyhw-0.11.0.dist-info/METADATA,sha256=kfaQwJ8BXluTLcLCKuP2-ETlwhN06M4KHi6qAcC-Cw8,6732
|
111
|
+
pyhw-0.11.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
112
|
+
pyhw-0.11.0.dist-info/entry_points.txt,sha256=q-AB8im_QahpmNrmy4aPTJRGi0LlbNlnI3kF7s6pKss,44
|
113
|
+
pyhw-0.11.0.dist-info/top_level.txt,sha256=7Inxvxt1TngEricKZEex9_WJZS3DbKYFUXDz4v5WHYU,5
|
114
|
+
pyhw-0.11.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|