hungerlib 4.2__tar.gz → 4.3__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 (30) hide show
  1. {hungerlib-4.2/src/hungerlib.egg-info → hungerlib-4.3}/PKG-INFO +1 -1
  2. {hungerlib-4.2 → hungerlib-4.3}/pyproject.toml +1 -1
  3. {hungerlib-4.2 → hungerlib-4.3}/src/hungerlib/configloader.py +24 -29
  4. {hungerlib-4.2 → hungerlib-4.3/src/hungerlib.egg-info}/PKG-INFO +1 -1
  5. {hungerlib-4.2 → hungerlib-4.3}/LICENSE +0 -0
  6. {hungerlib-4.2 → hungerlib-4.3}/README.md +0 -0
  7. {hungerlib-4.2 → hungerlib-4.3}/setup.cfg +0 -0
  8. {hungerlib-4.2 → hungerlib-4.3}/src/hungerlib/__init__.py +0 -0
  9. {hungerlib-4.2 → hungerlib-4.3}/src/hungerlib/api/__init__.py +0 -0
  10. {hungerlib-4.2 → hungerlib-4.3}/src/hungerlib/api/backups.py +0 -0
  11. {hungerlib-4.2 → hungerlib-4.3}/src/hungerlib/api/command.py +0 -0
  12. {hungerlib-4.2 → hungerlib-4.3}/src/hungerlib/api/databases.py +0 -0
  13. {hungerlib-4.2 → hungerlib-4.3}/src/hungerlib/api/filemanager.py +0 -0
  14. {hungerlib-4.2 → hungerlib-4.3}/src/hungerlib/api/schedule.py +0 -0
  15. {hungerlib-4.2 → hungerlib-4.3}/src/hungerlib/api/startup.py +0 -0
  16. {hungerlib-4.2 → hungerlib-4.3}/src/hungerlib/bridgeclient.py +0 -0
  17. {hungerlib-4.2 → hungerlib-4.3}/src/hungerlib/datamap.py +0 -0
  18. {hungerlib-4.2 → hungerlib-4.3}/src/hungerlib/messagerouter.py +0 -0
  19. {hungerlib-4.2 → hungerlib-4.3}/src/hungerlib/panel.py +0 -0
  20. {hungerlib-4.2 → hungerlib-4.3}/src/hungerlib/servers/__init__.py +0 -0
  21. {hungerlib-4.2 → hungerlib-4.3}/src/hungerlib/servers/generic.py +0 -0
  22. {hungerlib-4.2 → hungerlib-4.3}/src/hungerlib/servers/minecraft.py +0 -0
  23. {hungerlib-4.2 → hungerlib-4.3}/src/hungerlib/utils/__init__.py +0 -0
  24. {hungerlib-4.2 → hungerlib-4.3}/src/hungerlib/utils/colormaps.py +0 -0
  25. {hungerlib-4.2 → hungerlib-4.3}/src/hungerlib/utils/time.py +0 -0
  26. {hungerlib-4.2 → hungerlib-4.3}/src/hungerlib/utils/utils.py +0 -0
  27. {hungerlib-4.2 → hungerlib-4.3}/src/hungerlib.egg-info/SOURCES.txt +0 -0
  28. {hungerlib-4.2 → hungerlib-4.3}/src/hungerlib.egg-info/dependency_links.txt +0 -0
  29. {hungerlib-4.2 → hungerlib-4.3}/src/hungerlib.egg-info/requires.txt +0 -0
  30. {hungerlib-4.2 → hungerlib-4.3}/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.2
3
+ Version: 4.3
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.2"
10
+ version = "4.3"
11
11
  description = "Powerful automation library for Pterodactyl."
12
12
  readme = "README.md"
13
13
  requires-python = ">=3.9"
@@ -45,7 +45,7 @@ def loadConfig(schema, runtime_path: str | None = None):
45
45
  - schema.__user_config_path__ for runtime file
46
46
  - schema.__default_config_path__ for packaged default
47
47
  - dataclass defaults as YAML key paths (mode="config")
48
- - tuple defaults: (yaml_path, fallback)
48
+ - fallback values from schema.fallbacks.<key>
49
49
  """
50
50
 
51
51
  # 1. Resolve runtime path
@@ -78,42 +78,37 @@ def loadConfig(schema, runtime_path: str | None = None):
78
78
  raw = load_yaml(abs_runtime)
79
79
  values = {}
80
80
 
81
- # 5. Map YAML dataclass fields
81
+ # 5. Load fallback class if present
82
+ fallbacks = getattr(schema, "fallbacks", None)
83
+
84
+ # 6. Map YAML → dataclass fields
82
85
  mode = getattr(schema, "__mode__", None)
83
86
 
84
87
  for f in fields(schema):
85
88
  if f.name.startswith("__"):
86
89
  continue
87
90
 
88
- default = f.default
89
-
90
- # tuple default: (yaml_path, fallback)
91
- if isinstance(default, tuple) and len(default) == 2:
92
- yaml_path, fallback = default
93
- value = deep_get(raw, yaml_path)
91
+ yaml_path = f.default
92
+ yaml_value = None
94
93
 
95
- resolved = convert_value(value if value is not None else fallback, f.type)
94
+ # mode="config": default string = YAML path
95
+ if mode == "config" and isinstance(yaml_path, str):
96
+ yaml_value = deep_get(raw, yaml_path)
96
97
 
97
- # wrap resolved value so we can attach .fallback
98
- class _V(str):
99
- pass
98
+ if yaml_value is not None:
99
+ values[f.name] = convert_value(yaml_value, f.type)
100
+ else:
101
+ # fallback from fallback class
102
+ if fallbacks and hasattr(fallbacks, f.name):
103
+ values[f.name] = getattr(fallbacks, f.name)
104
+ else:
105
+ # no fallback → None
106
+ values[f.name] = None
100
107
 
101
- wrapped = _V(resolved)
102
- wrapped.fallback = fallback
108
+ # 7. Build config instance
109
+ config = schema(**values)
103
110
 
104
- values[f.name] = wrapped
105
- continue
111
+ # 8. Attach fallback namespace
112
+ config.fallbacks = fallbacks
106
113
 
107
- # mode="config": default string = YAML path
108
- if mode == "config" and isinstance(default, str):
109
- yaml_path = default
110
- value = deep_get(raw, yaml_path)
111
- if value is not None:
112
- values[f.name] = convert_value(value, f.type)
113
- continue
114
-
115
- # fallback to dataclass default
116
- if default is not MISSING:
117
- values[f.name] = convert_value(default, f.type)
118
-
119
- return schema(**values)
114
+ return config
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hungerlib
3
- Version: 4.2
3
+ Version: 4.3
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
File without changes