hungerlib 2.4.dev0__py3-none-any.whl → 2.5.dev0__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.
@@ -1,8 +1,9 @@
1
1
  from .colormap import ColorMap, MC_COLOR_MAP, ASCII_COLOR_MAP
2
2
  from .countdown import runCountdownEvents, waitForOnline, waitForOffline
3
- from .lag import checkLag
3
+ from .snapshot import Snapshot
4
4
  from .scheduler import snapSchedule, secsUntil, minsUntil
5
5
  from .validation import validateAll
6
+ from .converters import *
6
7
 
7
8
  __all__ = [
8
9
  'ColorMap',
@@ -11,9 +12,14 @@ __all__ = [
11
12
  'runCountdownEvents',
12
13
  'waitForOnline',
13
14
  'waitForOffline',
14
- 'checkLag',
15
+ 'Snapshot',
15
16
  'snapSchedule',
16
17
  'secsUntil',
17
18
  'minsUntil',
18
19
  'validateAll',
20
+ 'converters',
21
+ 'mb_gb',
22
+ 'gb_mb',
23
+ 'mib_gib',
24
+ 'gib_mib',
19
25
  ]
@@ -0,0 +1,13 @@
1
+ # Names are in "from-to" format. Example: mb_gb() means megabyte to gigabyte.
2
+
3
+ def mb_gb(mb, floor=False):
4
+ return mb / 1000 if not floor else mb // 1000
5
+
6
+ def gb_mb(gb):
7
+ return gb * 1000
8
+
9
+ def mib_gib(mib, floor=False):
10
+ return mib / 1024 if not floor else mib // 1024
11
+
12
+ def gib_mib(gib):
13
+ return gib * 1024
@@ -0,0 +1,34 @@
1
+ class Snapshot:
2
+ def __init__(self, Server, gib=False):
3
+ self.Server = Server
4
+ g = 1
5
+ if gib:
6
+ g = 1024
7
+
8
+ # generic
9
+ self.ram = self.Server.getRAM() / g
10
+ self.cpu = self.Server.getCPU()
11
+ self.network_in = self.Server.getNetworkIn() / g
12
+ self.network_out = self.Server.getNetworkOut() / g
13
+ self.uptime = self.Server.getUptime()
14
+ self.uptime_formatted = self.Server.getUptime(True)
15
+
16
+ # server-specific
17
+ self.tps = self.Server.getTPS() if hasattr(self.Server, 'getTPS') else None
18
+ self.players = self.Server.getPlayers() if hasattr(self.Server, 'getPlayers') else None
19
+
20
+ def __str__(self):
21
+ base = (
22
+ f'Server: {self.Server.name}\n'
23
+ f'Uptime: {self.uptime_formatted}\n'
24
+ f'RAM: {self.ram}\n'
25
+ f'CPU: {self.cpu}\n'
26
+ f'Network (in): {self.network_in}\n'
27
+ f'Network (out): {self.network_out}'
28
+ )
29
+ if self.tps is not None:
30
+ base += f'\nTPS: {self.tps}'
31
+ if self.players is not None:
32
+ base += f'\nOnline players: {self.players}'
33
+
34
+ return base
@@ -162,6 +162,46 @@ class GenericServer:
162
162
  def runSchedule(self, schedule_id):
163
163
  return self.panel.schedules.run(self.server_id, schedule_id)
164
164
 
165
+ def enableSchedule(self, schedule_id):
166
+ payload = {"is_active": True}
167
+ return self.updateSchedule(schedule_id, payload)
168
+ def disableSchedule(self, schedule_id):
169
+ payload = {"is_active": False}
170
+ return self.updateSchedule(schedule_id, payload)
171
+
172
+
173
+ def getSchedule(self, schedule_id: int):
174
+ """
175
+ Returns a dict containing all schedule attributes for the given schedule_id.
176
+ Works with raw ScheduleAPI responses.
177
+ """
178
+ resp = self.panel.schedules.list(self.server_id)
179
+ data = resp.json()
180
+ for item in data.get("data", []):
181
+ attr = item.get("attributes", {})
182
+ if attr.get("id") == schedule_id:
183
+ return {
184
+ "id": attr.get("id"),
185
+ "name": attr.get("name"),
186
+ "description": attr.get("description"),
187
+ "is_active": attr.get("is_active"),
188
+ "cron": attr.get("cron"),
189
+ "minute": attr.get("cron", {}).get("minute"),
190
+ "hour": attr.get("cron", {}).get("hour"),
191
+ "day_of_month": attr.get("cron", {}).get("day_of_month"),
192
+ "month": attr.get("cron", {}).get("month"),
193
+ "day_of_week": attr.get("cron", {}).get("day_of_week"),
194
+ "next_run_at": attr.get("next_run_at"),
195
+ "last_run_at": attr.get("last_run_at"),
196
+ "only_when_online": attr.get("only_when_online"),
197
+ "is_processing": attr.get("is_processing"),
198
+ "created_at": attr.get("created_at"),
199
+ "updated_at": attr.get("updated_at"),
200
+ "tasks": attr.get("relationships", {}).get("tasks", {}).get("data", [])
201
+ }
202
+ return None
203
+
204
+
165
205
 
166
206
  # health snapshot
167
207
  def snapshot(self):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hungerlib
3
- Version: 2.4.dev0
3
+ Version: 2.5.dev0
4
4
  Summary: Powerful automation library for Pterodactyl.
5
5
  Author: iFamished
6
6
  License: MIT
@@ -1,12 +1,13 @@
1
1
  hungerlib/__init__.py,sha256=tgUaYt_H1BUKCvIGz0KHhgsDg6AMY9UiEGPBNHnq1kg,708
2
2
  hungerlib/logger.py,sha256=-2amipjJi2tLY5RwG0Poe0Mr2Tr_Sq5aFC0R574Zjqc,4140
3
3
  hungerlib/panel.py,sha256=WMKBVh9MUM1KEYbvYwLFVzLCMZW4Dopfcxs09FEvfhU,2123
4
- hungerlib/addons/__init__.py,sha256=LBvYij6tCS59E0p735CUw9FwIqdoDErOagVzepnBaEY,486
4
+ hungerlib/addons/__init__.py,sha256=HeFDhk3hAsBDdLyv9pEaJn3lHYGFGOGEzDTUL3S1XRA,591
5
5
  hungerlib/addons/colormap.py,sha256=W06Y9Pd8jGiXUbCNyaCmh8_pN_40Gl04qO7yWulEarw,1508
6
+ hungerlib/addons/converters.py,sha256=e6ItLU08DLfPjOZzQDYMOK6X6vBbklzcMKy8HVKMEVI,318
6
7
  hungerlib/addons/countdown.py,sha256=fE922-W9VTTMMkeVKLQfuTR6CK0A4sHkrPSOU2tbXP0,2601
7
- hungerlib/addons/lag.py,sha256=Ch-E781HRcmCl9CNb3Wx2rg9NyMQ_30tTYLP2RPXONU,963
8
8
  hungerlib/addons/mchelpers.py,sha256=PuENTlzwPIBHymlmdynMK28CCy_l8x8yzJSzaguvMMM,3789
9
9
  hungerlib/addons/scheduler.py,sha256=40WcKF5Bc4Fmx-pviZuWA4GkNwrn8RP_TupA00SwD2A,890
10
+ hungerlib/addons/snapshot.py,sha256=jswR8IIL1_GxuM7ouAYERgWXAR7tyogRz1pn0kdyjIw,1166
10
11
  hungerlib/addons/validation.py,sha256=QKVrp-NriH9ZkMNwwjpPRvLQAbFtTd4N0Sq_yz63UUg,250
11
12
  hungerlib/api/__init__.py,sha256=xuPbWBXVTkr9Jtcmvk8PPiVvi8HDxrIOmb_gOcDZy-M,336
12
13
  hungerlib/api/backups.py,sha256=P_3b4_UPF7y9LDpfyKPh3TpHDIrTm8k_Z3xGmvBE5Qk,730
@@ -16,10 +17,10 @@ hungerlib/api/filemanager.py,sha256=kB5NP3ELQzY1uW6JWVN1g4dekVl8Kk-u9cK7N5dsg3w,
16
17
  hungerlib/api/schedule.py,sha256=3gdl0jiIOScdVXWy4aOef-KIoKqUopbI8b1dPgXf5Vg,953
17
18
  hungerlib/api/startup.py,sha256=hKhBjpLMVYa3jjq6ahqm2N32B_fu-bZnOJTZ-P57v4M,434
18
19
  hungerlib/servers/__init__.py,sha256=iL2KajxhGHLdvGzEujTaEQmj1wvoHEB5f23YMu1gpyQ,133
19
- hungerlib/servers/generic.py,sha256=wZ7zphkzmK_Xto33ftWVgokn-Pz0FnK5Lp5cNVS5Yrc,6529
20
+ hungerlib/servers/generic.py,sha256=nMT2fdPOcoIN6ck_S4rUdj6ZXgMb0D-7DGhn7EYPmHQ,8350
20
21
  hungerlib/servers/minecraft.py,sha256=DJ2GwJ4KLnZsxVN66YsCZgQfgMizcKp-9Tcdze23tfg,2541
21
- hungerlib-2.4.dev0.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
22
- hungerlib-2.4.dev0.dist-info/METADATA,sha256=HSRFFLfZOOOc8Yl0RSErOukkJH6nXxpiFPPkPSZQynE,1514
23
- hungerlib-2.4.dev0.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
24
- hungerlib-2.4.dev0.dist-info/top_level.txt,sha256=uHBMIM8b2Gt6daNkDF4uw-M2Hm2IpIVw1jOK9wC0fNQ,10
25
- hungerlib-2.4.dev0.dist-info/RECORD,,
22
+ hungerlib-2.5.dev0.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
23
+ hungerlib-2.5.dev0.dist-info/METADATA,sha256=5obh6cG-3jHKHgHCgDQcPkWm7C7ZPj3o8lfD2e7C5q8,1514
24
+ hungerlib-2.5.dev0.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
25
+ hungerlib-2.5.dev0.dist-info/top_level.txt,sha256=uHBMIM8b2Gt6daNkDF4uw-M2Hm2IpIVw1jOK9wC0fNQ,10
26
+ hungerlib-2.5.dev0.dist-info/RECORD,,
hungerlib/addons/lag.py DELETED
@@ -1,25 +0,0 @@
1
- def checkLag(server, ram, cpu, nwi, nwo, tps):
2
- """
3
- Pure lag check.
4
- Returns a tuple: (lag_detected: bool, reasons: list[str])
5
- """
6
- reasons = []
7
-
8
- currentRAM = server.getRAM(gb=True)
9
- currentCPU = server.getCPU()
10
- currentNWI = server.getNetworkIn(gb=True)
11
- currentNWO = server.getNetworkOut(gb=True)
12
- currentTPS = server.getTPS() if hasattr(server, "getTPS") else None
13
-
14
- if currentRAM is not None and currentRAM >= ram:
15
- reasons.append(f"RAM: {currentRAM}GB")
16
- if currentCPU is not None and currentCPU >= cpu:
17
- reasons.append(f"CPU: {currentCPU}%")
18
- if currentNWI is not None and currentNWI >= nwi:
19
- reasons.append(f"Network Inbound: {currentNWI}GB")
20
- if currentNWO is not None and currentNWO >= nwo:
21
- reasons.append(f"Network Outbound: {currentNWO}GB")
22
- if currentTPS is not None and currentTPS <= tps:
23
- reasons.append(f"TPS: {currentTPS}")
24
-
25
- return (len(reasons) > 0, reasons)