serverwatcher 5.5__tar.gz → 5.6.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 (20) hide show
  1. {serverwatcher-5.5/src/serverwatcher.egg-info → serverwatcher-5.6.dev0}/PKG-INFO +1 -1
  2. {serverwatcher-5.5 → serverwatcher-5.6.dev0}/pyproject.toml +1 -1
  3. {serverwatcher-5.5 → serverwatcher-5.6.dev0}/src/serverwatcher/watcher.py +20 -3
  4. {serverwatcher-5.5 → serverwatcher-5.6.dev0/src/serverwatcher.egg-info}/PKG-INFO +1 -1
  5. {serverwatcher-5.5 → serverwatcher-5.6.dev0}/LICENSE +0 -0
  6. {serverwatcher-5.5 → serverwatcher-5.6.dev0}/README.md +0 -0
  7. {serverwatcher-5.5 → serverwatcher-5.6.dev0}/setup.cfg +0 -0
  8. {serverwatcher-5.5 → serverwatcher-5.6.dev0}/src/serverwatcher/__init__.py +0 -0
  9. {serverwatcher-5.5 → serverwatcher-5.6.dev0}/src/serverwatcher/configclasses/__init__.py +0 -0
  10. {serverwatcher-5.5 → serverwatcher-5.6.dev0}/src/serverwatcher/configclasses/config.py +0 -0
  11. {serverwatcher-5.5 → serverwatcher-5.6.dev0}/src/serverwatcher/configclasses/messages.py +0 -0
  12. {serverwatcher-5.5 → serverwatcher-5.6.dev0}/src/serverwatcher/configclasses/watcher.py +0 -0
  13. {serverwatcher-5.5 → serverwatcher-5.6.dev0}/src/serverwatcher/defaultconfigs/config.yaml +0 -0
  14. {serverwatcher-5.5 → serverwatcher-5.6.dev0}/src/serverwatcher/defaultconfigs/messages.yaml +0 -0
  15. {serverwatcher-5.5 → serverwatcher-5.6.dev0}/src/serverwatcher/defaultconfigs/watcher.yaml +0 -0
  16. {serverwatcher-5.5 → serverwatcher-5.6.dev0}/src/serverwatcher/validator.py +0 -0
  17. {serverwatcher-5.5 → serverwatcher-5.6.dev0}/src/serverwatcher.egg-info/SOURCES.txt +0 -0
  18. {serverwatcher-5.5 → serverwatcher-5.6.dev0}/src/serverwatcher.egg-info/dependency_links.txt +0 -0
  19. {serverwatcher-5.5 → serverwatcher-5.6.dev0}/src/serverwatcher.egg-info/requires.txt +0 -0
  20. {serverwatcher-5.5 → serverwatcher-5.6.dev0}/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: 5.5
3
+ Version: 5.6.dev0
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 = "5.5"
10
+ version = "5.6-dev"
11
11
  description = "A HungerLib-powered Minecraft server automation engine."
12
12
  readme = "README.md"
13
13
  requires-python = ">=3.14"
@@ -1,5 +1,6 @@
1
1
  import os
2
2
  import time
3
+ import re
3
4
  from zoneinfo import ZoneInfo
4
5
 
5
6
  from hungerlib import Panel, HungerLogger
@@ -22,6 +23,23 @@ from serverwatcher.validator import validate_all
22
23
 
23
24
  validate_all()
24
25
 
26
+ _T_EXPR = re.compile(r"{([^{}]+)}")
27
+
28
+ def t_eval(template: str, /, **ctx):
29
+ """
30
+ Evaluate a t-string-like template with Python expressions inside { }.
31
+ Example:
32
+ t_eval("CPU: {snap.cpu}%", snap=snap)
33
+ """
34
+ def repl(match):
35
+ expr = match.group(1).strip()
36
+ try:
37
+ return str(eval(expr, {}, ctx))
38
+ except Exception as e:
39
+ return f"<err:{e}>"
40
+
41
+ return _T_EXPR.sub(repl, template)
42
+
25
43
  class ServerWatcher:
26
44
  def __init__(self):
27
45
 
@@ -79,9 +97,8 @@ class ServerWatcher:
79
97
 
80
98
  self.tz = ZoneInfo(self.config.timezone)
81
99
 
82
- def fmt(self, template: str, **kwargs):
83
- prefix = self.messages.prefix
84
- return t(template)
100
+ def fmt(self, template: str, **fmt):
101
+ return t_eval(template, self=self, **fmt)
85
102
 
86
103
  def say(self, template, level="info", **fmt):
87
104
  if not template:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: serverwatcher
3
- Version: 5.5
3
+ Version: 5.6.dev0
4
4
  Summary: A HungerLib-powered Minecraft server automation engine.
5
5
  Author: iFamished
6
6
  License: GPL-3.0
File without changes
File without changes
File without changes