serverwatcher 3.4__tar.gz → 3.5__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 (21) hide show
  1. {serverwatcher-3.4/src/serverwatcher.egg-info → serverwatcher-3.5}/PKG-INFO +1 -1
  2. {serverwatcher-3.4 → serverwatcher-3.5}/pyproject.toml +1 -1
  3. {serverwatcher-3.4 → serverwatcher-3.5}/src/serverwatcher/__init__.py +2 -1
  4. serverwatcher-3.5/src/serverwatcher/defaultconfigs/watcher.yaml +39 -0
  5. {serverwatcher-3.4 → serverwatcher-3.5}/src/serverwatcher/schema.py +25 -0
  6. {serverwatcher-3.4 → serverwatcher-3.5}/src/serverwatcher/watcher.py +3 -1
  7. {serverwatcher-3.4 → serverwatcher-3.5/src/serverwatcher.egg-info}/PKG-INFO +1 -1
  8. serverwatcher-3.4/src/serverwatcher/defaultconfigs/watcher.yaml +0 -32
  9. {serverwatcher-3.4 → serverwatcher-3.5}/LICENSE +0 -0
  10. {serverwatcher-3.4 → serverwatcher-3.5}/README.md +0 -0
  11. {serverwatcher-3.4 → serverwatcher-3.5}/setup.cfg +0 -0
  12. {serverwatcher-3.4 → serverwatcher-3.5}/src/serverwatcher/config/__init__.py +0 -0
  13. {serverwatcher-3.4 → serverwatcher-3.5}/src/serverwatcher/config/global_config.py +0 -0
  14. {serverwatcher-3.4 → serverwatcher-3.5}/src/serverwatcher/config/messages.py +0 -0
  15. {serverwatcher-3.4 → serverwatcher-3.5}/src/serverwatcher/config/watcher.py +0 -0
  16. {serverwatcher-3.4 → serverwatcher-3.5}/src/serverwatcher/defaultconfigs/global.yaml +0 -0
  17. {serverwatcher-3.4 → serverwatcher-3.5}/src/serverwatcher/defaultconfigs/messages.yaml +0 -0
  18. {serverwatcher-3.4 → serverwatcher-3.5}/src/serverwatcher.egg-info/SOURCES.txt +0 -0
  19. {serverwatcher-3.4 → serverwatcher-3.5}/src/serverwatcher.egg-info/dependency_links.txt +0 -0
  20. {serverwatcher-3.4 → serverwatcher-3.5}/src/serverwatcher.egg-info/requires.txt +0 -0
  21. {serverwatcher-3.4 → serverwatcher-3.5}/src/serverwatcher.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: serverwatcher
3
- Version: 3.4
3
+ Version: 3.5
4
4
  Summary: A HungerLib-powered Minecraft server automation engine.
5
5
  Author: iFamished
6
6
  License: GPL-3.0
@@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta"
7
7
 
8
8
  [project]
9
9
  name = "serverwatcher"
10
- version = "3.4"
10
+ version = "3.5"
11
11
  description = "A HungerLib-powered Minecraft server automation engine."
12
12
  readme = "README.md"
13
13
  requires-python = ">=3.10"
@@ -7,7 +7,7 @@ except PackageNotFoundError:
7
7
  __version__ = '0.0.0'
8
8
 
9
9
  from .watcher import ServerWatcher
10
- from .schema import validate_config_schema, validate_messages_schema
10
+ from .schema import validate_config_schema, validate_messages_schema flatten_nested
11
11
 
12
12
 
13
13
  __all__ = [
@@ -15,4 +15,5 @@ __all__ = [
15
15
  'ServerWatcher',
16
16
  'validate_config_schema',
17
17
  'validate_messages_schema',
18
+ 'flatten_nested',
18
19
  ]
@@ -0,0 +1,39 @@
1
+ logging:
2
+ logger_name_template: "Server Watcher"
3
+ log_path: "/home/container/logs/"
4
+ timezone: "America/Chicago"
5
+
6
+ terminal_settings:
7
+ console_backspaces: 8
8
+ clear_terminal: True
9
+
10
+ schedules:
11
+ restart_soon_schedule_id: 0 # replace this with real schedule id
12
+ origin_disable_schedule_id: 0 # replace this with real schedule id
13
+
14
+ thresolds:
15
+ ram_threshold: 6
16
+ cpu_threshold: 150
17
+ uptime_hours_threshold: 12
18
+ tps_threshold: 19.5
19
+
20
+ weights:
21
+ weight_restart_soon: 3
22
+ weight_ram: 1
23
+ weight_cpu: 1
24
+ weight_uptime: 1
25
+ weight_tps: 1
26
+ weight_low_uptime: 5
27
+ weight_per_player: 1
28
+
29
+ gaps:
30
+ low_gap_minutes: 120
31
+ high_gap_minutes: 60
32
+
33
+ restart_intervals:
34
+ restart_wait_seconds: 45
35
+ restart_online_timeout: 120
36
+ restart_online_interval: 2
37
+
38
+ watcher_intervals:
39
+ watch_interval: 60
@@ -43,3 +43,28 @@ def validate_messages_schema(raw: Dict[str, Any]) -> list[str]:
43
43
  if "prefix" not in raw:
44
44
  errors.append("[messages] Missing required key: 'prefix'")
45
45
  return errors
46
+
47
+ def flatten_nested(raw: dict) -> dict:
48
+ """
49
+ Recursively flattens a nested YAML dict into a single-level dict.
50
+ Section names are ignored; only leaf keys matter.
51
+ """
52
+ flat = {}
53
+
54
+ def walk(node):
55
+ if isinstance(node, dict):
56
+ for v in node.values():
57
+ walk(v)
58
+ else:
59
+ # ignore non-dict nodes at this level
60
+ pass
61
+
62
+ def collect(node):
63
+ for key, value in node.items():
64
+ if isinstance(value, dict):
65
+ collect(value)
66
+ else:
67
+ flat[key] = value
68
+
69
+ collect(raw)
70
+ return flat
@@ -37,7 +37,9 @@ def load_or_default(path: str, default_path: str, schema):
37
37
  dst.write(src.read())
38
38
 
39
39
  raw = load_yaml(abs_path)
40
+ raw = flatten_nested(raw)
40
41
  return map_to_dataclass(raw, schema)
42
+
41
43
 
42
44
 
43
45
  # Main watcher
@@ -192,7 +194,7 @@ class ServerWatcher:
192
194
  restart_reasons.append(
193
195
  self.fmt(self.messages.reason_ram, ram=snap.ram, threshold=self.cfg.ram_threshold)
194
196
  )
195
- pro += round(snap.ram, 0) - 5
197
+ pro += int(round(snap.ram, 0) - 5)
196
198
 
197
199
  if snap.cpu >= self.cfg.cpu_threshold:
198
200
  restart_reasons.append(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: serverwatcher
3
- Version: 3.4
3
+ Version: 3.5
4
4
  Summary: A HungerLib-powered Minecraft server automation engine.
5
5
  Author: iFamished
6
6
  License: GPL-3.0
@@ -1,32 +0,0 @@
1
- restart_soon_schedule_id: 13
2
- origin_disable_schedule_id: 11
3
-
4
- ram_threshold: 6
5
- cpu_threshold: 150
6
- uptime_hours_threshold: 12
7
- tps_threshold: 19.5
8
-
9
- weight_restart_soon: 3
10
- weight_ram: 1
11
- weight_cpu: 1
12
- weight_uptime: 1
13
- weight_tps: 1
14
-
15
- weight_low_uptime: 5
16
- weight_per_player: 1
17
-
18
- low_gap_minutes: 120
19
- high_gap_minutes: 60
20
-
21
- restart_wait_seconds: 45
22
- restart_online_timeout: 120
23
- restart_online_interval: 2
24
-
25
- logger_name_template: "Server Watcher"
26
- log_path: "/home/container/logs/"
27
- console_backspaces: 8
28
- timezone: "America/Chicago"
29
-
30
- # New values (will reorder later)
31
- watch_interval: 60
32
- clear_terminal: True
File without changes
File without changes
File without changes