memorymanagement 1.2.3__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.
Potentially problematic release.
This version of memorymanagement might be problematic. Click here for more details.
- {memorymanagement-1.2.3 → memorymanagement-1.2.4}/PKG-INFO +1 -1
- {memorymanagement-1.2.3 → memorymanagement-1.2.4}/memorymanagement/cleaning/core.py +66 -27
- {memorymanagement-1.2.3 → memorymanagement-1.2.4}/memorymanagement.egg-info/PKG-INFO +1 -1
- {memorymanagement-1.2.3 → memorymanagement-1.2.4}/setup.cfg +1 -1
- {memorymanagement-1.2.3 → memorymanagement-1.2.4}/LICENSE +0 -0
- {memorymanagement-1.2.3 → memorymanagement-1.2.4}/README.md +0 -0
- {memorymanagement-1.2.3 → memorymanagement-1.2.4}/memorymanagement/__init__.py +0 -0
- {memorymanagement-1.2.3 → memorymanagement-1.2.4}/memorymanagement/cleaning/__init__.py +0 -0
- {memorymanagement-1.2.3 → memorymanagement-1.2.4}/memorymanagement/pointers/__init__.py +0 -0
- {memorymanagement-1.2.3 → memorymanagement-1.2.4}/memorymanagement/pointers/core.py +0 -0
- {memorymanagement-1.2.3 → memorymanagement-1.2.4}/memorymanagement/pointers/decorators.py +0 -0
- {memorymanagement-1.2.3 → memorymanagement-1.2.4}/memorymanagement.egg-info/SOURCES.txt +0 -0
- {memorymanagement-1.2.3 → memorymanagement-1.2.4}/memorymanagement.egg-info/dependency_links.txt +0 -0
- {memorymanagement-1.2.3 → memorymanagement-1.2.4}/memorymanagement.egg-info/top_level.txt +0 -0
- {memorymanagement-1.2.3 → 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,7 +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
|
"""
|
|
48
|
-
|
|
65
|
+
#* METHODS
|
|
66
|
+
# __init__
|
|
49
67
|
def __init__(self,not_delete:list[str]|None=None,excluded:list[str]=[],flagged:list[str]=[]):
|
|
50
68
|
"""
|
|
51
69
|
Initializes the class instance.\n
|
|
@@ -70,6 +88,7 @@ class Cleaner:
|
|
|
70
88
|
self._flagged=flagged.copy()
|
|
71
89
|
self._name=None
|
|
72
90
|
|
|
91
|
+
# Update
|
|
73
92
|
def update(self,exclude:str|list[str]|tuple[str]|None=None,include:str|list[str]|tuple[str]|None=None):
|
|
74
93
|
"""
|
|
75
94
|
Flags all the new global variables' references that were not manually excluded here or before.
|
|
@@ -95,30 +114,7 @@ class Cleaner:
|
|
|
95
114
|
self._excluded.remove(var)
|
|
96
115
|
self._flagged=[var for var in list(vars(modules["__main__"]))if var not in self.not_delete and var not in self.excluded]
|
|
97
116
|
|
|
98
|
-
|
|
99
|
-
def not_delete(self):
|
|
100
|
-
if not self._name or vars(modules["__main__"])[self._name] is not self:
|
|
101
|
-
for key,value in vars(modules["__main__"]).items():
|
|
102
|
-
if value is self:
|
|
103
|
-
self._name=key
|
|
104
|
-
self._not_delete.append(self._name)
|
|
105
|
-
break
|
|
106
|
-
else:
|
|
107
|
-
self._name=None
|
|
108
|
-
if not self._name:
|
|
109
|
-
raise ReferenceError("'Cleaner' object is not referenced")
|
|
110
|
-
elif self._name not in self._not_delete:
|
|
111
|
-
self._not_delete.append(self._name)
|
|
112
|
-
return self._not_delete
|
|
113
|
-
|
|
114
|
-
@property
|
|
115
|
-
def excluded(self):
|
|
116
|
-
return self._excluded
|
|
117
|
-
|
|
118
|
-
@property
|
|
119
|
-
def flagged(self):
|
|
120
|
-
return self._flagged
|
|
121
|
-
|
|
117
|
+
# Exclude
|
|
122
118
|
def exclude(self,*exclude:str):
|
|
123
119
|
"""
|
|
124
120
|
Allows to exclude the desired references from the cleaning process.
|
|
@@ -134,6 +130,7 @@ class Cleaner:
|
|
|
134
130
|
if var not in self._excluded:
|
|
135
131
|
self._excluded.append(var)
|
|
136
132
|
|
|
133
|
+
# Include
|
|
137
134
|
def include(self,*include:str):
|
|
138
135
|
"""
|
|
139
136
|
Allows to include the desired references (previously excluded) in the cleaning process.
|
|
@@ -149,6 +146,7 @@ class Cleaner:
|
|
|
149
146
|
while var in self._excluded:
|
|
150
147
|
self._excluded.remove(var)
|
|
151
148
|
|
|
149
|
+
# Clean
|
|
152
150
|
def clean(self):
|
|
153
151
|
"""
|
|
154
152
|
Culminates the cleaning process.
|
|
@@ -159,6 +157,7 @@ class Cleaner:
|
|
|
159
157
|
del vars(modules["__main__"])[var]
|
|
160
158
|
self._flagged.clear()
|
|
161
159
|
|
|
160
|
+
# Purge
|
|
162
161
|
def purge(self):
|
|
163
162
|
"""
|
|
164
163
|
Clears both `flagged` and `excluded` lists from the `Cleaner` object.
|
|
@@ -166,6 +165,45 @@ class Cleaner:
|
|
|
166
165
|
self._flagged.clear()
|
|
167
166
|
self._excluded.clear()
|
|
168
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__
|
|
169
207
|
def __str__(self):
|
|
170
208
|
string=f"""
|
|
171
209
|
Flagged: {self.flagged}
|
|
@@ -176,5 +214,6 @@ class Cleaner:
|
|
|
176
214
|
"""
|
|
177
215
|
return string
|
|
178
216
|
|
|
217
|
+
# __repr__
|
|
179
218
|
def __repr__(self):
|
|
180
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.3 → memorymanagement-1.2.4}/memorymanagement.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|