memorymanagement 1.2.2__tar.gz → 1.2.4__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.
- {memorymanagement-1.2.2 → memorymanagement-1.2.4}/PKG-INFO +1 -1
- {memorymanagement-1.2.2 → memorymanagement-1.2.4}/memorymanagement/cleaning/core.py +79 -23
- {memorymanagement-1.2.2 → memorymanagement-1.2.4}/memorymanagement.egg-info/PKG-INFO +1 -1
- {memorymanagement-1.2.2 → memorymanagement-1.2.4}/setup.cfg +1 -1
- {memorymanagement-1.2.2 → memorymanagement-1.2.4}/LICENSE +0 -0
- {memorymanagement-1.2.2 → memorymanagement-1.2.4}/README.md +0 -0
- {memorymanagement-1.2.2 → memorymanagement-1.2.4}/memorymanagement/__init__.py +0 -0
- {memorymanagement-1.2.2 → memorymanagement-1.2.4}/memorymanagement/cleaning/__init__.py +0 -0
- {memorymanagement-1.2.2 → memorymanagement-1.2.4}/memorymanagement/pointers/__init__.py +0 -0
- {memorymanagement-1.2.2 → memorymanagement-1.2.4}/memorymanagement/pointers/core.py +0 -0
- {memorymanagement-1.2.2 → memorymanagement-1.2.4}/memorymanagement/pointers/decorators.py +0 -0
- {memorymanagement-1.2.2 → memorymanagement-1.2.4}/memorymanagement.egg-info/SOURCES.txt +0 -0
- {memorymanagement-1.2.2 → memorymanagement-1.2.4}/memorymanagement.egg-info/dependency_links.txt +0 -0
- {memorymanagement-1.2.2 → memorymanagement-1.2.4}/memorymanagement.egg-info/top_level.txt +0 -0
- {memorymanagement-1.2.2 → memorymanagement-1.2.4}/pyproject.toml +0 -0
|
@@ -1,8 +1,25 @@
|
|
|
1
|
-
|
|
1
|
+
#*===============================================================================================================================
|
|
2
|
+
#* LEGEND
|
|
3
|
+
#*-------------------------------------------------------------------------------------------------------------------------------
|
|
4
|
+
#! Missing
|
|
5
|
+
#& Missing unimportant
|
|
6
|
+
#? Question
|
|
7
|
+
#* Section
|
|
8
|
+
#^ Important
|
|
9
|
+
# Normal comment
|
|
10
|
+
#// Alternative or deprecated code
|
|
11
|
+
#*===============================================================================================================================
|
|
12
|
+
|
|
13
|
+
#^ The different types of comments require the "Colorful Comments Refreshed" extension for VSCode to be properly distinguished
|
|
14
|
+
|
|
15
|
+
#* IMPORTS
|
|
16
|
+
# modules from sys
|
|
2
17
|
from sys import modules
|
|
3
18
|
|
|
4
|
-
|
|
19
|
+
#* MAIN CLASS
|
|
20
|
+
# Class "Cleaner"
|
|
5
21
|
class Cleaner:
|
|
22
|
+
#& Code comments
|
|
6
23
|
"""
|
|
7
24
|
Class for references management. It keeps track of the names of the global variables to be deleted and deletes them when ordered.
|
|
8
25
|
|
|
@@ -45,6 +62,8 @@ class Cleaner:
|
|
|
45
62
|
Returns the list of variables to be erased from memory.
|
|
46
63
|
None of this properties has setter or deleter. Those lists can only be manipulated through the class methods.
|
|
47
64
|
"""
|
|
65
|
+
#* METHODS
|
|
66
|
+
# __init__
|
|
48
67
|
def __init__(self,not_delete:list[str]|None=None,excluded:list[str]=[],flagged:list[str]=[]):
|
|
49
68
|
"""
|
|
50
69
|
Initializes the class instance.\n
|
|
@@ -68,6 +87,8 @@ class Cleaner:
|
|
|
68
87
|
self._excluded=excluded.copy()
|
|
69
88
|
self._flagged=flagged.copy()
|
|
70
89
|
self._name=None
|
|
90
|
+
|
|
91
|
+
# Update
|
|
71
92
|
def update(self,exclude:str|list[str]|tuple[str]|None=None,include:str|list[str]|tuple[str]|None=None):
|
|
72
93
|
"""
|
|
73
94
|
Flags all the new global variables' references that were not manually excluded here or before.
|
|
@@ -92,27 +113,8 @@ class Cleaner:
|
|
|
92
113
|
while var in self._excluded:
|
|
93
114
|
self._excluded.remove(var)
|
|
94
115
|
self._flagged=[var for var in list(vars(modules["__main__"]))if var not in self.not_delete and var not in self.excluded]
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
if not self._name or vars(modules["__main__"])[self._name] is not self:
|
|
98
|
-
for key,value in vars(modules["__main__"]).items():
|
|
99
|
-
if value is self:
|
|
100
|
-
self._name=key
|
|
101
|
-
self._not_delete.append(self._name)
|
|
102
|
-
break
|
|
103
|
-
else:
|
|
104
|
-
self._name=None
|
|
105
|
-
if not self._name:
|
|
106
|
-
raise ReferenceError("'Cleaner' object is not referenced")
|
|
107
|
-
elif self._name not in self._not_delete:
|
|
108
|
-
self._not_delete.append(self._name)
|
|
109
|
-
return self._not_delete
|
|
110
|
-
@property
|
|
111
|
-
def excluded(self):
|
|
112
|
-
return self._excluded
|
|
113
|
-
@property
|
|
114
|
-
def flagged(self):
|
|
115
|
-
return self._flagged
|
|
116
|
+
|
|
117
|
+
# Exclude
|
|
116
118
|
def exclude(self,*exclude:str):
|
|
117
119
|
"""
|
|
118
120
|
Allows to exclude the desired references from the cleaning process.
|
|
@@ -127,6 +129,8 @@ class Cleaner:
|
|
|
127
129
|
self._flagged.remove(var)
|
|
128
130
|
if var not in self._excluded:
|
|
129
131
|
self._excluded.append(var)
|
|
132
|
+
|
|
133
|
+
# Include
|
|
130
134
|
def include(self,*include:str):
|
|
131
135
|
"""
|
|
132
136
|
Allows to include the desired references (previously excluded) in the cleaning process.
|
|
@@ -141,6 +145,8 @@ class Cleaner:
|
|
|
141
145
|
self._flagged.append(var)
|
|
142
146
|
while var in self._excluded:
|
|
143
147
|
self._excluded.remove(var)
|
|
148
|
+
|
|
149
|
+
# Clean
|
|
144
150
|
def clean(self):
|
|
145
151
|
"""
|
|
146
152
|
Culminates the cleaning process.
|
|
@@ -150,6 +156,54 @@ class Cleaner:
|
|
|
150
156
|
if var in list(vars(modules["__main__"])):
|
|
151
157
|
del vars(modules["__main__"])[var]
|
|
152
158
|
self._flagged.clear()
|
|
159
|
+
|
|
160
|
+
# Purge
|
|
161
|
+
def purge(self):
|
|
162
|
+
"""
|
|
163
|
+
Clears both `flagged` and `excluded` lists from the `Cleaner` object.
|
|
164
|
+
"""
|
|
165
|
+
self._flagged.clear()
|
|
166
|
+
self._excluded.clear()
|
|
167
|
+
|
|
168
|
+
#* PROPERTIES
|
|
169
|
+
# Variables not to be deleted
|
|
170
|
+
@property
|
|
171
|
+
# Getter
|
|
172
|
+
def not_delete(self):
|
|
173
|
+
if not self._name or vars(modules["__main__"])[self._name] is not self:
|
|
174
|
+
for key,value in vars(modules["__main__"]).items():
|
|
175
|
+
if value is self:
|
|
176
|
+
self._name=key
|
|
177
|
+
self._not_delete.append(self._name)
|
|
178
|
+
break
|
|
179
|
+
else:
|
|
180
|
+
self._name=None
|
|
181
|
+
if not self._name:
|
|
182
|
+
raise ReferenceError("'Cleaner' object is not referenced")
|
|
183
|
+
elif self._name not in self._not_delete:
|
|
184
|
+
self._not_delete.append(self._name)
|
|
185
|
+
return self._not_delete
|
|
186
|
+
#^ No setter
|
|
187
|
+
#^ No deleter
|
|
188
|
+
|
|
189
|
+
# Excluded variables
|
|
190
|
+
@property
|
|
191
|
+
# Getter
|
|
192
|
+
def excluded(self):
|
|
193
|
+
return self._excluded
|
|
194
|
+
#^ No setter
|
|
195
|
+
#^ No deleter
|
|
196
|
+
|
|
197
|
+
# Flagged variables
|
|
198
|
+
@property
|
|
199
|
+
# Getter
|
|
200
|
+
def flagged(self):
|
|
201
|
+
return self._flagged
|
|
202
|
+
#^ No setter
|
|
203
|
+
#^ No deleter
|
|
204
|
+
|
|
205
|
+
#* SCREEN DUNDER METHODS
|
|
206
|
+
# __str__
|
|
153
207
|
def __str__(self):
|
|
154
208
|
string=f"""
|
|
155
209
|
Flagged: {self.flagged}
|
|
@@ -159,5 +213,7 @@ class Cleaner:
|
|
|
159
213
|
Not delete: {self.not_delete}
|
|
160
214
|
"""
|
|
161
215
|
return string
|
|
216
|
+
|
|
217
|
+
# __repr__
|
|
162
218
|
def __repr__(self):
|
|
163
219
|
return f"{self.__class__.__name__}(not_delete={self.not_delete},excluded={self.excluded},flagged={self.flagged})"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{memorymanagement-1.2.2 → memorymanagement-1.2.4}/memorymanagement.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|