hungerlib 2.4.1.dev0__tar.gz → 2.5.dev0__tar.gz

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.
Files changed (32) hide show
  1. {hungerlib-2.4.1.dev0/src/hungerlib.egg-info → hungerlib-2.5.dev0}/PKG-INFO +1 -1
  2. {hungerlib-2.4.1.dev0 → hungerlib-2.5.dev0}/pyproject.toml +1 -1
  3. {hungerlib-2.4.1.dev0 → hungerlib-2.5.dev0}/src/hungerlib/addons/__init__.py +8 -2
  4. hungerlib-2.5.dev0/src/hungerlib/addons/converters.py +13 -0
  5. hungerlib-2.5.dev0/src/hungerlib/addons/snapshot.py +34 -0
  6. {hungerlib-2.4.1.dev0 → hungerlib-2.5.dev0}/src/hungerlib/servers/generic.py +32 -0
  7. {hungerlib-2.4.1.dev0 → hungerlib-2.5.dev0/src/hungerlib.egg-info}/PKG-INFO +1 -1
  8. {hungerlib-2.4.1.dev0 → hungerlib-2.5.dev0}/src/hungerlib.egg-info/SOURCES.txt +2 -1
  9. hungerlib-2.4.1.dev0/src/hungerlib/addons/lag.py +0 -25
  10. {hungerlib-2.4.1.dev0 → hungerlib-2.5.dev0}/LICENSE +0 -0
  11. {hungerlib-2.4.1.dev0 → hungerlib-2.5.dev0}/README.md +0 -0
  12. {hungerlib-2.4.1.dev0 → hungerlib-2.5.dev0}/setup.cfg +0 -0
  13. {hungerlib-2.4.1.dev0 → hungerlib-2.5.dev0}/src/hungerlib/__init__.py +0 -0
  14. {hungerlib-2.4.1.dev0 → hungerlib-2.5.dev0}/src/hungerlib/addons/colormap.py +0 -0
  15. {hungerlib-2.4.1.dev0 → hungerlib-2.5.dev0}/src/hungerlib/addons/countdown.py +0 -0
  16. {hungerlib-2.4.1.dev0 → hungerlib-2.5.dev0}/src/hungerlib/addons/mchelpers.py +0 -0
  17. {hungerlib-2.4.1.dev0 → hungerlib-2.5.dev0}/src/hungerlib/addons/scheduler.py +0 -0
  18. {hungerlib-2.4.1.dev0 → hungerlib-2.5.dev0}/src/hungerlib/addons/validation.py +0 -0
  19. {hungerlib-2.4.1.dev0 → hungerlib-2.5.dev0}/src/hungerlib/api/__init__.py +0 -0
  20. {hungerlib-2.4.1.dev0 → hungerlib-2.5.dev0}/src/hungerlib/api/backups.py +0 -0
  21. {hungerlib-2.4.1.dev0 → hungerlib-2.5.dev0}/src/hungerlib/api/command.py +0 -0
  22. {hungerlib-2.4.1.dev0 → hungerlib-2.5.dev0}/src/hungerlib/api/databases.py +0 -0
  23. {hungerlib-2.4.1.dev0 → hungerlib-2.5.dev0}/src/hungerlib/api/filemanager.py +0 -0
  24. {hungerlib-2.4.1.dev0 → hungerlib-2.5.dev0}/src/hungerlib/api/schedule.py +0 -0
  25. {hungerlib-2.4.1.dev0 → hungerlib-2.5.dev0}/src/hungerlib/api/startup.py +0 -0
  26. {hungerlib-2.4.1.dev0 → hungerlib-2.5.dev0}/src/hungerlib/logger.py +0 -0
  27. {hungerlib-2.4.1.dev0 → hungerlib-2.5.dev0}/src/hungerlib/panel.py +0 -0
  28. {hungerlib-2.4.1.dev0 → hungerlib-2.5.dev0}/src/hungerlib/servers/__init__.py +0 -0
  29. {hungerlib-2.4.1.dev0 → hungerlib-2.5.dev0}/src/hungerlib/servers/minecraft.py +0 -0
  30. {hungerlib-2.4.1.dev0 → hungerlib-2.5.dev0}/src/hungerlib.egg-info/dependency_links.txt +0 -0
  31. {hungerlib-2.4.1.dev0 → hungerlib-2.5.dev0}/src/hungerlib.egg-info/requires.txt +0 -0
  32. {hungerlib-2.4.1.dev0 → hungerlib-2.5.dev0}/src/hungerlib.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hungerlib
3
- Version: 2.4.1.dev0
3
+ Version: 2.5.dev0
4
4
  Summary: Powerful automation library for Pterodactyl.
5
5
  Author: iFamished
6
6
  License: MIT
@@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta"
7
7
 
8
8
  [project]
9
9
  name = "hungerlib"
10
- version = "2.4.1-dev"
10
+ version = "2.5-dev"
11
11
  description = "Powerful automation library for Pterodactyl."
12
12
  readme = "README.md"
13
13
  requires-python = ">=3.10"
@@ -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
@@ -170,6 +170,38 @@ class GenericServer:
170
170
  return self.updateSchedule(schedule_id, payload)
171
171
 
172
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
+
173
205
 
174
206
  # health snapshot
175
207
  def snapshot(self):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hungerlib
3
- Version: 2.4.1.dev0
3
+ Version: 2.5.dev0
4
4
  Summary: Powerful automation library for Pterodactyl.
5
5
  Author: iFamished
6
6
  License: MIT
@@ -11,10 +11,11 @@ src/hungerlib.egg-info/requires.txt
11
11
  src/hungerlib.egg-info/top_level.txt
12
12
  src/hungerlib/addons/__init__.py
13
13
  src/hungerlib/addons/colormap.py
14
+ src/hungerlib/addons/converters.py
14
15
  src/hungerlib/addons/countdown.py
15
- src/hungerlib/addons/lag.py
16
16
  src/hungerlib/addons/mchelpers.py
17
17
  src/hungerlib/addons/scheduler.py
18
+ src/hungerlib/addons/snapshot.py
18
19
  src/hungerlib/addons/validation.py
19
20
  src/hungerlib/api/__init__.py
20
21
  src/hungerlib/api/backups.py
@@ -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)
File without changes
File without changes
File without changes