hungerlib 3.2.dev7__tar.gz → 3.2.dev9__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 (29) hide show
  1. {hungerlib-3.2.dev7/src/hungerlib.egg-info → hungerlib-3.2.dev9}/PKG-INFO +1 -1
  2. {hungerlib-3.2.dev7 → hungerlib-3.2.dev9}/pyproject.toml +1 -1
  3. {hungerlib-3.2.dev7 → hungerlib-3.2.dev9}/src/hungerlib/datamap.py +42 -5
  4. {hungerlib-3.2.dev7 → hungerlib-3.2.dev9/src/hungerlib.egg-info}/PKG-INFO +1 -1
  5. {hungerlib-3.2.dev7 → hungerlib-3.2.dev9}/LICENSE +0 -0
  6. {hungerlib-3.2.dev7 → hungerlib-3.2.dev9}/README.md +0 -0
  7. {hungerlib-3.2.dev7 → hungerlib-3.2.dev9}/setup.cfg +0 -0
  8. {hungerlib-3.2.dev7 → hungerlib-3.2.dev9}/src/hungerlib/__init__.py +0 -0
  9. {hungerlib-3.2.dev7 → hungerlib-3.2.dev9}/src/hungerlib/api/__init__.py +0 -0
  10. {hungerlib-3.2.dev7 → hungerlib-3.2.dev9}/src/hungerlib/api/backups.py +0 -0
  11. {hungerlib-3.2.dev7 → hungerlib-3.2.dev9}/src/hungerlib/api/command.py +0 -0
  12. {hungerlib-3.2.dev7 → hungerlib-3.2.dev9}/src/hungerlib/api/databases.py +0 -0
  13. {hungerlib-3.2.dev7 → hungerlib-3.2.dev9}/src/hungerlib/api/filemanager.py +0 -0
  14. {hungerlib-3.2.dev7 → hungerlib-3.2.dev9}/src/hungerlib/api/schedule.py +0 -0
  15. {hungerlib-3.2.dev7 → hungerlib-3.2.dev9}/src/hungerlib/api/startup.py +0 -0
  16. {hungerlib-3.2.dev7 → hungerlib-3.2.dev9}/src/hungerlib/configloader.py +0 -0
  17. {hungerlib-3.2.dev7 → hungerlib-3.2.dev9}/src/hungerlib/messagerouter.py +0 -0
  18. {hungerlib-3.2.dev7 → hungerlib-3.2.dev9}/src/hungerlib/panel.py +0 -0
  19. {hungerlib-3.2.dev7 → hungerlib-3.2.dev9}/src/hungerlib/servers/__init__.py +0 -0
  20. {hungerlib-3.2.dev7 → hungerlib-3.2.dev9}/src/hungerlib/servers/generic.py +0 -0
  21. {hungerlib-3.2.dev7 → hungerlib-3.2.dev9}/src/hungerlib/servers/minecraft.py +0 -0
  22. {hungerlib-3.2.dev7 → hungerlib-3.2.dev9}/src/hungerlib/utils/__init__.py +0 -0
  23. {hungerlib-3.2.dev7 → hungerlib-3.2.dev9}/src/hungerlib/utils/colormaps.py +0 -0
  24. {hungerlib-3.2.dev7 → hungerlib-3.2.dev9}/src/hungerlib/utils/time.py +0 -0
  25. {hungerlib-3.2.dev7 → hungerlib-3.2.dev9}/src/hungerlib/utils/utils.py +0 -0
  26. {hungerlib-3.2.dev7 → hungerlib-3.2.dev9}/src/hungerlib.egg-info/SOURCES.txt +0 -0
  27. {hungerlib-3.2.dev7 → hungerlib-3.2.dev9}/src/hungerlib.egg-info/dependency_links.txt +0 -0
  28. {hungerlib-3.2.dev7 → hungerlib-3.2.dev9}/src/hungerlib.egg-info/requires.txt +0 -0
  29. {hungerlib-3.2.dev7 → hungerlib-3.2.dev9}/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.2.dev7
3
+ Version: 3.2.dev9
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.2.dev7"
10
+ version = "3.2.dev9"
11
11
  description = "Powerful automation library for Pterodactyl."
12
12
  readme = "README.md"
13
13
  requires-python = ">=3.9"
@@ -34,8 +34,13 @@ def datamap(_cls=None, *, syntax=Syntax.braces, mode=None):
34
34
  def wrap(cls):
35
35
  cls.__syntax__ = syntax
36
36
  cls.__mode__ = mode
37
- cls = type(cls.__name__, (DataMap,), dict(cls.__dict__, __slots__=()))
38
- return dataclass(cls)
37
+
38
+ namespace = dict(cls.__dict__)
39
+ namespace["__dict__"] = {}
40
+
41
+ cls = type(cls.__name__, (DataMap,), namespace)
42
+ return dataclass(frozen=False)(cls)
43
+
39
44
  return wrap if _cls is None else wrap(_cls)
40
45
 
41
46
  datamap.braces = datamap(syntax=Syntax.braces)
@@ -43,33 +48,65 @@ datamap.angles = datamap(syntax=Syntax.angles)
43
48
  datamap.dollars = datamap(syntax=Syntax.dollars)
44
49
  datamap.percents = datamap(syntax=Syntax.percents)
45
50
 
46
- def mapit(text: str, *maps, **runtime):
47
- maps = (*get_default_maps(), *maps)
48
- for m in maps:
51
+ def mapit(text: str, *maps, only_maps=None, disable=None, enable=None, **runtime):
52
+ # 1. FULL OVERRIDE MODE
53
+ if only_maps is not None:
54
+ maps_to_use = list(only_maps)
55
+
56
+ else:
57
+ # 2. Start with default maps
58
+ maps_to_use = list(get_default_maps())
59
+
60
+ # 3. Remove disabled maps
61
+ if disable:
62
+ maps_to_use = [m for m in maps_to_use if m not in disable]
63
+
64
+ # 4. Add positional maps
65
+ if maps:
66
+ maps_to_use.extend(maps)
67
+
68
+ # 5. Add enabled maps
69
+ if enable:
70
+ maps_to_use.extend(enable)
71
+
72
+ # 6. Apply maps in order
73
+ for m in maps_to_use:
49
74
  if isinstance(m, type) and is_dataclass(m):
50
75
  m = m()
76
+
51
77
  if is_dataclass(m):
52
78
  pattern = m.get_syntax()
53
79
  d = m.as_map()
80
+
54
81
  elif hasattr(m, "as_dict"):
55
82
  pattern = Syntax.angles
56
83
  d = m.as_dict()
84
+
57
85
  elif isinstance(m, dict):
58
86
  pattern = runtime.get("syntax")
59
87
  if not pattern:
60
88
  continue
61
89
  d = m
90
+
62
91
  else:
63
92
  continue
93
+
64
94
  def repl(match):
65
95
  k = match.group(1)
66
96
  return str(d.get(k, match.group(0)))
97
+
67
98
  text = re.sub(pattern, repl, text)
99
+
100
+ # 7. Runtime kwargs always apply last
68
101
  if runtime:
69
102
  pattern = Syntax.braces
70
103
  d = runtime
104
+
71
105
  def repl(match):
72
106
  k = match.group(1)
73
107
  return str(d.get(k, match.group(0)))
108
+
74
109
  text = re.sub(pattern, repl, text)
110
+
75
111
  return text
112
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hungerlib
3
- Version: 3.2.dev7
3
+ Version: 3.2.dev9
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