hungerlib 3.0.dev5__tar.gz → 3.0.dev6__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 (31) hide show
  1. {hungerlib-3.0.dev5/src/hungerlib.egg-info → hungerlib-3.0.dev6}/PKG-INFO +1 -1
  2. {hungerlib-3.0.dev5 → hungerlib-3.0.dev6}/pyproject.toml +1 -1
  3. {hungerlib-3.0.dev5 → hungerlib-3.0.dev6}/src/hungerlib/__init__.py +4 -0
  4. hungerlib-3.0.dev6/src/hungerlib/datamap.py +60 -0
  5. {hungerlib-3.0.dev5 → hungerlib-3.0.dev6/src/hungerlib.egg-info}/PKG-INFO +1 -1
  6. {hungerlib-3.0.dev5 → hungerlib-3.0.dev6}/src/hungerlib.egg-info/SOURCES.txt +1 -0
  7. {hungerlib-3.0.dev5 → hungerlib-3.0.dev6}/LICENSE +0 -0
  8. {hungerlib-3.0.dev5 → hungerlib-3.0.dev6}/README.md +0 -0
  9. {hungerlib-3.0.dev5 → hungerlib-3.0.dev6}/setup.cfg +0 -0
  10. {hungerlib-3.0.dev5 → hungerlib-3.0.dev6}/src/hungerlib/addons/__init__.py +0 -0
  11. {hungerlib-3.0.dev5 → hungerlib-3.0.dev6}/src/hungerlib/addons/colormap.py +0 -0
  12. {hungerlib-3.0.dev5 → hungerlib-3.0.dev6}/src/hungerlib/addons/configloader.py +0 -0
  13. {hungerlib-3.0.dev5 → hungerlib-3.0.dev6}/src/hungerlib/addons/mchelpers.py +0 -0
  14. {hungerlib-3.0.dev5 → hungerlib-3.0.dev6}/src/hungerlib/addons/scheduler.py +0 -0
  15. {hungerlib-3.0.dev5 → hungerlib-3.0.dev6}/src/hungerlib/addons/snapshot.py +0 -0
  16. {hungerlib-3.0.dev5 → hungerlib-3.0.dev6}/src/hungerlib/addons/utils.py +0 -0
  17. {hungerlib-3.0.dev5 → hungerlib-3.0.dev6}/src/hungerlib/api/__init__.py +0 -0
  18. {hungerlib-3.0.dev5 → hungerlib-3.0.dev6}/src/hungerlib/api/backups.py +0 -0
  19. {hungerlib-3.0.dev5 → hungerlib-3.0.dev6}/src/hungerlib/api/command.py +0 -0
  20. {hungerlib-3.0.dev5 → hungerlib-3.0.dev6}/src/hungerlib/api/databases.py +0 -0
  21. {hungerlib-3.0.dev5 → hungerlib-3.0.dev6}/src/hungerlib/api/filemanager.py +0 -0
  22. {hungerlib-3.0.dev5 → hungerlib-3.0.dev6}/src/hungerlib/api/schedule.py +0 -0
  23. {hungerlib-3.0.dev5 → hungerlib-3.0.dev6}/src/hungerlib/api/startup.py +0 -0
  24. {hungerlib-3.0.dev5 → hungerlib-3.0.dev6}/src/hungerlib/messagerouter.py +0 -0
  25. {hungerlib-3.0.dev5 → hungerlib-3.0.dev6}/src/hungerlib/panel.py +0 -0
  26. {hungerlib-3.0.dev5 → hungerlib-3.0.dev6}/src/hungerlib/servers/__init__.py +0 -0
  27. {hungerlib-3.0.dev5 → hungerlib-3.0.dev6}/src/hungerlib/servers/generic.py +0 -0
  28. {hungerlib-3.0.dev5 → hungerlib-3.0.dev6}/src/hungerlib/servers/minecraft.py +0 -0
  29. {hungerlib-3.0.dev5 → hungerlib-3.0.dev6}/src/hungerlib.egg-info/dependency_links.txt +0 -0
  30. {hungerlib-3.0.dev5 → hungerlib-3.0.dev6}/src/hungerlib.egg-info/requires.txt +0 -0
  31. {hungerlib-3.0.dev5 → hungerlib-3.0.dev6}/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: 3.0.dev5
3
+ Version: 3.0.dev6
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 = "3.0.dev5"
10
+ version = "3.0.dev6"
11
11
  description = "Powerful automation library for Pterodactyl."
12
12
  readme = "README.md"
13
13
  requires-python = ">=3.9"
@@ -9,6 +9,7 @@ except PackageNotFoundError:
9
9
  # --- Core modules ---
10
10
  from .panel import Panel
11
11
  from .messagerouter import MessageRouter
12
+ from .datamap import *
12
13
 
13
14
  # --- API endpoints ---
14
15
  from .api.schedule import ScheduleAPI
@@ -23,6 +24,9 @@ __all__ = [
23
24
  # core utilities
24
25
  "Panel",
25
26
  "MessageRouter",
27
+ "Syntax",
28
+ "DataMap",
29
+ "mapit",
26
30
 
27
31
  # API endpoints
28
32
  "ScheduleAPI",
@@ -0,0 +1,60 @@
1
+ import re
2
+ from dataclasses import dataclass, fields, is_dataclass
3
+
4
+
5
+ class Syntax:
6
+ BRACES = r"\{([^{}]+)\}" # {key}
7
+ DOLLARS = r"\$\{([^{}]+)\}" # ${key}
8
+ ANGLES = r"<([^<>]+)>" # <key>
9
+ PERCENTS = r"%([^%]+)%" # %key%
10
+
11
+
12
+ @dataclass
13
+ class DataMap:
14
+ __syntax__: str = Syntax.BRACES
15
+
16
+ def as_map(self) -> dict:
17
+ return {
18
+ f.name: getattr(self, f.name)
19
+ for f in fields(self)
20
+ if f.init and f.name != "__syntax__"
21
+ }
22
+
23
+ @classmethod
24
+ def syntax(cls) -> str:
25
+ return getattr(cls, "__syntax__", Syntax.BRACES)
26
+
27
+
28
+ def mapit(text: str, *maps, **runtime) -> str:
29
+ for m in maps:
30
+ # auto-instantiate dataclass classes
31
+ if isinstance(m, type) and is_dataclass(m):
32
+ m = m()
33
+
34
+ # dataclass instance to dict
35
+ if is_dataclass(m):
36
+ pattern = m.syntax()
37
+ dmap = m.as_map()
38
+
39
+ # colormap-like objects to dict
40
+ elif hasattr(m, "as_dict"):
41
+ pattern = Syntax.ANGLES
42
+ dmap = m.as_dict()
43
+
44
+ # raw dict
45
+ elif isinstance(m, dict):
46
+ pattern = runtime.get("syntax", None)
47
+ if not pattern:
48
+ continue
49
+ dmap = m
50
+
51
+ else:
52
+ continue
53
+
54
+ # apply this map's syntax only
55
+ def repl(match):
56
+ key = match.group(1)
57
+ return str(dmap.get(key, match.group(0)))
58
+ text = re.sub(pattern, repl, text)
59
+
60
+ return text
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hungerlib
3
- Version: 3.0.dev5
3
+ Version: 3.0.dev6
4
4
  Summary: Powerful automation library for Pterodactyl.
5
5
  Author: iFamished
6
6
  License: MIT
@@ -2,6 +2,7 @@ LICENSE
2
2
  README.md
3
3
  pyproject.toml
4
4
  src/hungerlib/__init__.py
5
+ src/hungerlib/datamap.py
5
6
  src/hungerlib/messagerouter.py
6
7
  src/hungerlib/panel.py
7
8
  src/hungerlib.egg-info/PKG-INFO
File without changes
File without changes
File without changes