trainerbase 4.2.0__tar.gz → 4.2.2__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 (39) hide show
  1. {trainerbase-4.2.0 → trainerbase-4.2.2}/PKG-INFO +2 -3
  2. {trainerbase-4.2.0 → trainerbase-4.2.2}/pyproject.toml +2 -2
  3. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/codeinjection.py +2 -1
  4. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/common/helpers.py +2 -1
  5. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/gameobject.py +3 -2
  6. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/gui/objects.py +3 -2
  7. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/memory.py +1 -1
  8. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/process.py +3 -3
  9. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/speedhack.py +2 -1
  10. {trainerbase-4.2.0 → trainerbase-4.2.2}/.gitignore +0 -0
  11. {trainerbase-4.2.0 → trainerbase-4.2.2}/LICENSE +0 -0
  12. {trainerbase-4.2.0 → trainerbase-4.2.2}/README.md +0 -0
  13. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/__init__.py +0 -0
  14. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/abc.py +0 -0
  15. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/common/__init__.py +0 -0
  16. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/common/abc.py +0 -0
  17. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/common/keyboard.py +0 -0
  18. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/common/rainbow.py +0 -0
  19. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/common/tapper.py +0 -0
  20. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/common/teleport.py +0 -0
  21. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/config.py +0 -0
  22. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/gui/__init__.py +0 -0
  23. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/gui/helpers.py +0 -0
  24. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/gui/injections.py +0 -0
  25. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/gui/misc.py +0 -0
  26. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/gui/rainbow.py +0 -0
  27. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/gui/scripts.py +0 -0
  28. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/gui/speedhack.py +0 -0
  29. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/gui/tapper.py +0 -0
  30. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/gui/teleport.py +0 -0
  31. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/gui/types.py +0 -0
  32. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/logger.py +0 -0
  33. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/main.py +0 -0
  34. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/py.typed +0 -0
  35. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/scriptengine.py +0 -0
  36. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase/tts.py +0 -0
  37. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase_vendor/FASM.EXE +0 -0
  38. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase_vendor/speedhack32.dll +0 -0
  39. {trainerbase-4.2.0 → trainerbase-4.2.2}/trainerbase_vendor/speedhack64.dll +0 -0
@@ -1,12 +1,11 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: trainerbase
3
- Version: 4.2.0
3
+ Version: 4.2.2
4
4
  Summary: Framework for creating game trainers/mods
5
5
  Project-URL: Homepage, https://gitlab.com/python-trainers/
6
6
  Project-URL: Repository, https://gitlab.com/python-trainers/trainer-base
7
7
  Author-email: v01d <v01d@v01d.ru>, doomayka <zd@doomayka.ru>
8
- License-Expression: MIT
9
- License-File: LICENSE
8
+ License: MIT
10
9
  Classifier: Programming Language :: Python :: 3.12
11
10
  Classifier: Programming Language :: Python :: 3.13
12
11
  Classifier: Programming Language :: Python :: Implementation :: CPython
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "trainerbase"
3
- version = "4.2.0"
3
+ version = "4.2.2"
4
4
  description = "Framework for creating game trainers/mods"
5
5
  license = "MIT"
6
6
  authors = [
@@ -74,5 +74,5 @@ build-backend = "hatchling.build"
74
74
 
75
75
  [dependency-groups]
76
76
  dev = [
77
- "ruff>=0.7.3",
77
+ "ruff>=0.7.4",
78
78
  ]
@@ -8,7 +8,8 @@ from typing import ClassVar, Final, Self, override
8
8
 
9
9
  from pymem.exception import MemoryWriteError
10
10
 
11
- from trainerbase.memory import ARCH, ConvertibleToAddress, allocate, ensure_address, pm
11
+ from trainerbase.memory import ARCH, ConvertibleToAddress, allocate, ensure_address
12
+ from trainerbase.process import pm
12
13
 
13
14
 
14
15
  FASM_EXECUTABLE_PATH: Final[Path] = Path(__file__).resolve().parent.parent / "trainerbase_vendor" / "FASM.EXE"
@@ -7,7 +7,8 @@ from uuid import uuid4
7
7
  from pymem.exception import MemoryReadError, MemoryWriteError
8
8
 
9
9
  from trainerbase.gameobject import AbstractReadableObject, GameObject
10
- from trainerbase.memory import POINTER_SIZE, Address, allocate, pm
10
+ from trainerbase.memory import POINTER_SIZE, Address, allocate
11
+ from trainerbase.process import pm
11
12
 
12
13
 
13
14
  type Number = int | float
@@ -7,7 +7,8 @@ from typing import ClassVar, Self, cast, override
7
7
  from pymem.exception import MemoryWriteError
8
8
 
9
9
  from trainerbase.abc import Switchable
10
- from trainerbase.memory import ConvertibleToAddress, ensure_address, pm
10
+ from trainerbase.memory import ConvertibleToAddress, ensure_address
11
+ from trainerbase.process import pm
11
12
 
12
13
 
13
14
  class AbstractReadableObject[T](ABC):
@@ -19,7 +20,7 @@ class AbstractReadableObject[T](ABC):
19
20
 
20
21
  class GameObject[PymemType, TrainerBaseType](AbstractReadableObject[TrainerBaseType]):
21
22
  tracked_objects: ClassVar[list[Self]] = []
22
- value_range: tuple[TrainerBaseType, TrainerBaseType]
23
+ value_range: tuple[TrainerBaseType, TrainerBaseType] | None = None
23
24
  ctype_size: int
24
25
 
25
26
  @staticmethod
@@ -116,8 +116,9 @@ class GameObjectUI(AbstractUIComponent):
116
116
  # There is no input for integers that are not simple `signed long int`.
117
117
  # TODO: Use better input component if it's already added to dpg. Remove this crutch.
118
118
 
119
- min_value = default_kwargs.pop("min_value", GameInt.value_range[0]) # type: ignore
120
- max_value = default_kwargs.pop("max_value", GameInt.value_range[1]) # type: ignore
119
+ assert GameInt.value_range is not None, "GameInt must have value_range"
120
+ min_value = default_kwargs.pop("min_value", GameInt.value_range[0])
121
+ max_value = default_kwargs.pop("max_value", GameInt.value_range[1])
121
122
 
122
123
  if self.gameobject.value_range is not None:
123
124
  min_value = max(min_value, GameInt.value_range[0]) # type: ignore
@@ -10,7 +10,7 @@ from pymem.pattern import pattern_scan_all, pattern_scan_module
10
10
  from pymem.process import module_from_name
11
11
 
12
12
  from trainerbase.logger import logger
13
- from trainerbase.process import _pm as pm
13
+ from trainerbase.process import pm
14
14
 
15
15
 
16
16
  ARCH: Final[int] = 64 if pm.is_64_bit else 32
@@ -74,14 +74,14 @@ def attach_to_process() -> Pymem:
74
74
 
75
75
 
76
76
  def shutdown_if_process_exited():
77
- if not pid_exists(cast(int, _pm.process_id)):
77
+ if not pid_exists(cast(int, pm.process_id)):
78
78
  logger.info("Game process exited. Shutting down.")
79
79
  force_exit(0)
80
80
 
81
81
 
82
82
  def kill_game_process():
83
83
  logger.info("Killing game process.")
84
- Process(_pm.process_id).kill()
84
+ Process(pm.process_id).kill()
85
85
 
86
86
 
87
- _pm = attach_to_process()
87
+ pm = attach_to_process()
@@ -8,7 +8,8 @@ from pymem.process import module_from_name
8
8
  from pymem.ressources.structure import MODULEINFO
9
9
 
10
10
  from trainerbase.gameobject import GameDouble
11
- from trainerbase.memory import ARCH, pm
11
+ from trainerbase.memory import ARCH
12
+ from trainerbase.process import pm
12
13
 
13
14
 
14
15
  SPEEDHACK_DLL_MODULE_NAME: Final[str] = f"speedhack{ARCH}.dll"
File without changes
File without changes
File without changes