hungerlib 4.25.dev3__tar.gz → 4.25.dev5__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 (40) hide show
  1. {hungerlib-4.25.dev3/src/hungerlib.egg-info → hungerlib-4.25.dev5}/PKG-INFO +1 -1
  2. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/pyproject.toml +1 -1
  3. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/bridgeclient.py +18 -3
  4. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/servers/minecraft.py +7 -20
  5. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5/src/hungerlib.egg-info}/PKG-INFO +1 -1
  6. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/LICENSE +0 -0
  7. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/README.md +0 -0
  8. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/setup.cfg +0 -0
  9. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/__init__.py +0 -0
  10. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/api/__init__.py +0 -0
  11. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/api/backups.py +0 -0
  12. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/api/command.py +0 -0
  13. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/api/databases.py +0 -0
  14. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/api/filemanager.py +0 -0
  15. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/api/schedule.py +0 -0
  16. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/api/startup.py +0 -0
  17. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/configloader.py +0 -0
  18. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/email/__init__.py +0 -0
  19. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/email/client.py +0 -0
  20. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/email/email_templates/restart.html +0 -0
  21. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/email/manager.py +0 -0
  22. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/email/message.py +0 -0
  23. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/messagerouter.py +0 -0
  24. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/panel.py +0 -0
  25. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/servers/__init__.py +0 -0
  26. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/servers/generic.py +0 -0
  27. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/utils/__init__.py +0 -0
  28. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/utils/buffer.py +0 -0
  29. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/utils/convert.py +0 -0
  30. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/utils/exceptions.py +0 -0
  31. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/utils/time.py +0 -0
  32. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/utils/utils.py +0 -0
  33. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/validator.py +0 -0
  34. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/webhook/__init__.py +0 -0
  35. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/webhook/client.py +0 -0
  36. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/webhook/server.py +0 -0
  37. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib.egg-info/SOURCES.txt +0 -0
  38. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib.egg-info/dependency_links.txt +0 -0
  39. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib.egg-info/requires.txt +0 -0
  40. {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/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: 4.25.dev3
3
+ Version: 4.25.dev5
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 = "4.25-dev.3"
10
+ version = "4.25-dev.5"
11
11
  description = "Powerful automation library for Pterodactyl."
12
12
  readme = "README.md"
13
13
  requires-python = ">=3.9"
@@ -46,20 +46,31 @@ class Stream:
46
46
  self.timestamped_stream[ts] = clean
47
47
 
48
48
  def connect(self, keepalive: int = 15):
49
+ """
50
+ Connect to the SSE stream. Optionally request recent history lines by
51
+ passing `history=<n>` which will add the query parameter `?history=n`.
52
+ """
53
+ def _build_url_with_history(url: str, history: int | None):
54
+ if not history:
55
+ return url
56
+ sep = '&' if '?' in url else '?'
57
+ return f"{url}{sep}history={history}"
58
+
49
59
  if self._thread and self._thread.is_alive():
50
60
  return
51
61
 
52
62
  self._stop_event = threading.Event()
53
63
  self._session = requests.Session()
54
64
 
55
- def _run():
65
+ def _run(history: int | None = None):
56
66
  history_phase = True
57
67
  history_lines = []
58
68
  history_deadline = time.time() + keepalive
59
69
 
70
+ request_url = _build_url_with_history(self.url, history)
60
71
  try:
61
72
  with self._session.get(
62
- self.url,
73
+ request_url,
63
74
  headers=self.headers,
64
75
  stream=True
65
76
  ) as r:
@@ -105,6 +116,7 @@ class Stream:
105
116
 
106
117
  self._thread = threading.Thread(
107
118
  target=_run,
119
+ kwargs={"history": None},
108
120
  name='HungerBridgeStream',
109
121
  daemon=True
110
122
  )
@@ -131,7 +143,10 @@ class Stream:
131
143
  @staticmethod
132
144
  def sanitize(line: str) -> str:
133
145
  ansi_re = re.compile(r'\x1b\[[0-9;]*m')
134
- return ansi_re.sub('', line).rstrip
146
+ # remove ANSI sequences, unescape server-escaped newlines, and strip
147
+ clean = ansi_re.sub('', line)
148
+ clean = clean.replace('\\n', '\n').replace('\\r', '\r')
149
+ return clean.rstrip()
135
150
 
136
151
  @staticmethod
137
152
  def extractTimestamp(line: str):
@@ -36,15 +36,14 @@ class MinecraftServer(GenericServer):
36
36
  self.bridge = BridgeClient(bridge_url, bridge_token, history_handler=history_handler, newline_handler=newline_handler)
37
37
 
38
38
 
39
- # basic information properties
40
- @property
41
- def bridge_version(self) -> str | None:
39
+ # basic getter methods
40
+ def getBridgeVersion(self) -> str | None:
42
41
  return self.bridge.getVersion()
43
- @property
44
- def version(self) -> str | None:
42
+
43
+ def getVersion(self) -> str | None:
45
44
  return self.bridge.getMinecraftVersion()
46
- @property
47
- def platform(self) -> str | None:
45
+
46
+ def getPlatform(self) -> str | None:
48
47
  return self.bridge.getPlatform()
49
48
 
50
49
 
@@ -57,15 +56,7 @@ class MinecraftServer(GenericServer):
57
56
  else:
58
57
  raise InvalidModeError(f"Invalid mode: '{mode}'")
59
58
 
60
- @property
61
- def player_count(self) -> int:
62
- return self.getPlayers(mode='count') or 0
63
- @property
64
- def player_list(self) -> list[str]:
65
- return self.getPlayers('list') or []
66
-
67
- @property
68
- def max_players(self) -> int:
59
+ def getMaxPlayers(self) -> int:
69
60
  '''
70
61
  Runs the 'list' command and extracts the max player count.
71
62
  Expected format:
@@ -99,10 +90,6 @@ class MinecraftServer(GenericServer):
99
90
  return None
100
91
  return round(value, rounding) if rounding is not None else value
101
92
 
102
- @property
103
- def tps(self) -> float | None:
104
- return self.getTPS()
105
-
106
93
 
107
94
  # commands
108
95
  def sendConsoleCommand(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hungerlib
3
- Version: 4.25.dev3
3
+ Version: 4.25.dev5
4
4
  Summary: Powerful automation library for Pterodactyl.
5
5
  Author: iFamished
6
6
  License: MIT
File without changes
File without changes
File without changes