kenenet 0.4.8__py3-none-any.whl → 0.4.9__py3-none-any.whl

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.
kenenet/__init__.py CHANGED
@@ -49,7 +49,7 @@ def timer(clock=1):
49
49
  timings[clock] = time.time()
50
50
 
51
51
 
52
- class _Config:
52
+ class Config:
53
53
  EXCLUDED_NAMES = {'Config', 'VariableTracker', 'track_variables', 'stop_tracking',
54
54
  'track_frame', 'sys', 'inspect', 'types', 'datetime',
55
55
  'self', 'cls', 'args', 'kwargs', '__class__'}
@@ -57,66 +57,82 @@ class _Config:
57
57
  SHOW_TIMESTAMPS = True
58
58
  EXCLUDE_INTERNALS = True
59
59
 
60
- class _VariableTracker:
60
+
61
+ class VariableTracker:
61
62
  _instance = None
63
+
62
64
  @classmethod
63
- def _get_instance(cls):
64
- if cls._instance is None: cls._instance = _VariableTracker()
65
+ def get_instance(cls):
66
+ if cls._instance is None: cls._instance = VariableTracker()
65
67
  return cls._instance
68
+
66
69
  def __init__(self):
67
70
  self.active = False
68
71
  self.tracked_module = None
69
72
  self.frame_locals = {}
70
73
  self.global_vars = {}
74
+
71
75
  def fmt(self, v):
72
- try: return repr(v)
73
- except: return f"<{type(v).__name__} object>"
76
+ try:
77
+ return repr(v)
78
+ except:
79
+ return f"<{type(v).__name__} object>"
80
+
74
81
  def print_change(self, name, old, new, scope="Global"):
75
- ts = f"[{datetime.datetime.now().strftime('%H:%M:%S.%f')[:-3]}] " if _Config.SHOW_TIMESTAMPS else ""
82
+ ts = f"[{datetime.datetime.now().strftime('%H:%M:%S.%f')[:-3]}] " if Config.SHOW_TIMESTAMPS else ""
76
83
  print(f"{ts}{scope} '{name}' changed from {self.fmt(old)} to {self.fmt(new)}")
84
+
77
85
  def _should_track_name(self, n):
78
- return not (n.startswith('_') and n not in ('__name__','__file__')) and n not in _Config.EXCLUDED_NAMES
86
+ return not (n.startswith('_') and n not in ('__name__', '__file__')) and n not in Config.EXCLUDED_NAMES
87
+
79
88
  def _should_track_frame(self, f):
80
- if not _Config.EXCLUDE_INTERNALS:
89
+ if not Config.EXCLUDE_INTERNALS:
81
90
  return True
82
91
  fn = f.f_code.co_filename
83
- if any(e in fn for e in _Config.EXCLUDED_FILES):
92
+ if any(e in fn for e in Config.EXCLUDED_FILES):
84
93
  return False
85
94
  # Exclude known internal shutdown and list comprehension functions.
86
95
  if f.f_code.co_name in ('tracked_setattr', 'fmt', 'print_change', 'track_globals', 'get_instance',
87
- '_maintain_shutdown_locks', '_shutdown', '_stop', '<listcomp>'):
96
+ '_maintain_shutdown_locks', '_shutdown', '_stop', '<listcomp>'):
88
97
  return False
89
98
  return True
90
- def _start_tracking(self, mod_name):
99
+
100
+ def start_tracking(self, mod_name):
91
101
  if self.active: return
92
102
  self.tracked_module = sys.modules[mod_name]
93
103
  for name, value in self.tracked_module.__dict__.items():
94
104
  if self._should_track_name(name):
95
105
  self.global_vars[name] = value
96
- sys.settrace(_track_frame)
106
+ sys.settrace(track_frame)
97
107
  self.active = True
98
108
  print(f"Variable tracking started at {datetime.datetime.now().strftime('%H:%M:%S.%f')[:-3]}")
99
- def _stop_tracking(self):
109
+
110
+ def stop_tracking(self):
100
111
  if not self.active: return
101
112
  sys.settrace(None)
102
- self.frame_locals.clear(); self.global_vars.clear(); self.active = False
113
+ self.frame_locals.clear();
114
+ self.global_vars.clear();
115
+ self.active = False
103
116
  print(f"Variable tracking stopped at {datetime.datetime.now().strftime('%H:%M:%S.%f')[:-3]}")
104
117
 
105
- def _track_frame(frame, event, arg):
106
- tracker = _VariableTracker._get_instance()
118
+
119
+ def track_frame(frame, event, arg):
120
+ tracker = VariableTracker.get_instance()
107
121
  if not tracker.active or not tracker._should_track_frame(frame):
108
- return _track_frame
122
+ return track_frame
109
123
  if event != 'line':
110
- return _track_frame
124
+ return track_frame
111
125
  fid, is_mod = id(frame), frame.f_code.co_name == '<module>'
112
126
  scope = "Global" if is_mod else f"Local in '{frame.f_code.co_name}'"
113
127
  curr = {n: v for n, v in frame.f_locals.items() if tracker._should_track_name(n)}
114
128
  if is_mod:
115
129
  for n, v in curr.items():
116
130
  if n not in tracker.global_vars:
117
- tracker.print_change(n, None, v, scope); tracker.global_vars[n] = v
131
+ tracker.print_change(n, None, v, scope);
132
+ tracker.global_vars[n] = v
118
133
  elif tracker.global_vars[n] != v:
119
- tracker.print_change(n, tracker.global_vars[n], v, scope); tracker.global_vars[n] = v
134
+ tracker.print_change(n, tracker.global_vars[n], v, scope);
135
+ tracker.global_vars[n] = v
120
136
  else:
121
137
  if fid in tracker.frame_locals:
122
138
  for n, v in curr.items():
@@ -130,17 +146,19 @@ def _track_frame(frame, event, arg):
130
146
  tracker.frame_locals[fid] = curr.copy()
131
147
  if event == 'return' and not is_mod and fid in tracker.frame_locals:
132
148
  del tracker.frame_locals[fid]
133
- return _track_frame
149
+ return track_frame
150
+
134
151
 
135
- def debug():
152
+ def track_variables():
136
153
  cf = inspect.currentframe().f_back
137
154
  mod = cf.f_globals['__name__']
138
- _VariableTracker._get_instance()._start_tracking(mod)
139
- cf.f_trace = _track_frame
140
- atexit.register(stop_debug)
155
+ VariableTracker.get_instance().start_tracking(mod)
156
+ cf.f_trace = track_frame
157
+ atexit.register(stop_tracking)
158
+
141
159
 
142
- def stop_debug():
143
- _VariableTracker._get_instance()._stop_tracking()
160
+ def stop_tracking():
161
+ VariableTracker.get_instance().stop_tracking()
144
162
 
145
163
  def pp(msg='caca', subdir=None, pps=3):
146
164
  import os, subprocess
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: kenenet
3
- Version: 0.4.8
3
+ Version: 0.4.9
4
4
  Summary: dude what the fuck even is this package
5
5
  Home-page: https://www.youtube.com/@KiddyKene
6
6
  Author: kiddykene
@@ -0,0 +1,5 @@
1
+ kenenet/__init__.py,sha256=lW5HqrpZo8FAxzi1WgSAr4Bo-aweG0S0H-RNQ2OlVn8,8644
2
+ kenenet-0.4.9.dist-info/METADATA,sha256=jmh9EbdAn04ICRraoI8tOibDzbuencrMX2vzF0wnxh0,633
3
+ kenenet-0.4.9.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
4
+ kenenet-0.4.9.dist-info/top_level.txt,sha256=gUsWXLrM0jF4b4nbYJZdksdFewIx_F3xOF-zER8fMuQ,8
5
+ kenenet-0.4.9.dist-info/RECORD,,
@@ -1,5 +0,0 @@
1
- kenenet/__init__.py,sha256=rEHte4thzsgNXDblmcHHQlIEN38OpXalPZ28o9NGrgc,8518
2
- kenenet-0.4.8.dist-info/METADATA,sha256=vYSrchmnsYXGa6Wp9H4UmZZw8OBVaTO8R-fsZPxHxYM,633
3
- kenenet-0.4.8.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
4
- kenenet-0.4.8.dist-info/top_level.txt,sha256=gUsWXLrM0jF4b4nbYJZdksdFewIx_F3xOF-zER8fMuQ,8
5
- kenenet-0.4.8.dist-info/RECORD,,