memorymanagement 1.2.4__tar.gz → 1.3.0__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: memorymanagement
3
- Version: 1.2.4
3
+ Version: 1.3.0
4
4
  Summary: Adds support for memory management
5
5
  Home-page: https://github.com/Ricardo-Werner-Rivas/memorymanagement/tree/PyPI
6
6
  Author: Ricardo Werner Rivas
@@ -1,4 +1,5 @@
1
1
  """
2
+ # `memorymanagement` package
2
3
  Provides memory management support.
3
4
 
4
5
  ---
@@ -94,7 +94,7 @@ class Pointer(Generic[PT]):
94
94
  Arguments
95
95
  ---------
96
96
  value : `Any`, Optional
97
- Object to point to. If want to point to a class instance atribute, pass to this argument the class instance without the atribute.
97
+ Object to point to. If want to point to a class instance's atribute, pass to this argument the class instance without the atribute.
98
98
  reference : `str`|`None`, Optional
99
99
  Name linked to the value to point to. Useful in case there are multiple references pointing to the same value.
100
100
  attr : `str`|`None`, Optional
@@ -128,12 +128,12 @@ class Pointer(Generic[PT]):
128
128
  # Point to
129
129
  def point_to(self,reference:str|None=None,value=None,*,attr:str|None=None):
130
130
  """
131
- Changes the address which the pointer points to.
131
+ Changes the address which the `Pointer` object points to.
132
132
 
133
133
  Arguments
134
134
  ---------
135
135
  reference : `str`|`None`, Optional
136
- Reference pointing to the desired value. If wanted class attribute, introduce the reference for the class object.
136
+ Reference pointing to the desired value. If wanted class attribute, introduce the reference for the class instance.
137
137
  value : `Any`|`None`, Optional
138
138
  Value to point to. If wanted class attribute, introduce just the class object.
139
139
  attr : `str`|`None`, Optional
@@ -174,10 +174,17 @@ class Pointer(Generic[PT]):
174
174
  else:
175
175
  raise AttributeError(f"\"{attr}\" is not an attribute of \"{self._value}\"")
176
176
 
177
+ # Get references
178
+ def get_refs(self):
179
+ """
180
+ Gets all the references pointing to the same current value of the `Pointer` object.
181
+ """
182
+ return tuple(key for key,v in self._vars_dict.items() if v is self._value)
183
+
177
184
  # Switch reference
178
185
  def switch_ref(self,reference:str):
179
186
  """
180
- Allows to switch between references pointing to the same current value of the pointer.
187
+ Allows to switch between references pointing to the same current value of the `Pointer` object.
181
188
 
182
189
  Arguments
183
190
  ---------
@@ -195,9 +202,7 @@ class Pointer(Generic[PT]):
195
202
  """
196
203
  Prints all the references pointing to the same current value of the pointer.
197
204
  """
198
- refs=[key for key,v in self._vars_dict.items() if v is self._value]
199
- refs=refs if len(refs)!=0 else [None]
200
- print(refs)
205
+ print(tuple(key for key,v in self._vars_dict.items() if v is self._value))
201
206
 
202
207
  #* PROPERTIES
203
208
  # Value
@@ -235,11 +240,13 @@ class Pointer(Generic[PT]):
235
240
  else:
236
241
  del self._value
237
242
  del self._vars_dict[self.reference]
243
+
238
244
  # Reference
239
245
  @property
240
246
  # Getter
241
247
  def reference(self):
242
248
  return self._name
249
+
243
250
  # Attribute
244
251
  @property
245
252
  def attr(self):
@@ -265,36 +272,42 @@ class Pointer(Generic[PT]):
265
272
  return self.value+value.value
266
273
  else:
267
274
  return self.value+value
275
+
268
276
  # Difference
269
277
  def __sub__(self,value):
270
278
  if isinstance(value,Pointer):
271
279
  return self.value-value.value
272
280
  else:
273
281
  return self.value-value
282
+
274
283
  # Multiplication
275
284
  def __mul__(self,value):
276
285
  if isinstance(value,Pointer):
277
286
  return self.value*value.value
278
287
  else:
279
288
  return self.value*value
289
+
280
290
  # Fraction
281
291
  def __truediv__(self,value):
282
292
  if isinstance(value,Pointer):
283
293
  return self.value/value.value
284
294
  else:
285
295
  return self.value/value
296
+
286
297
  # Integer division
287
298
  def __floordiv__(self,value):
288
299
  if isinstance(value,Pointer):
289
300
  return self.value//value.value
290
301
  else:
291
302
  return self.value//value
303
+
292
304
  # Module
293
305
  def __mod__(self,value):
294
306
  if isinstance(value,Pointer):
295
307
  return self.value%value.value
296
308
  else:
297
309
  return self.value%value
310
+
298
311
  # Power
299
312
  def __pow__(self,value):
300
313
  if isinstance(value,Pointer):
@@ -306,21 +319,27 @@ class Pointer(Generic[PT]):
306
319
  # Addition
307
320
  def __radd__(self,value):
308
321
  return value+self.value
322
+
309
323
  # Difference
310
324
  def __rsub__(self,value):
311
325
  return value-self.value
326
+
312
327
  # Multiplication
313
328
  def __rmul__(self,value):
314
329
  return value*self.value
330
+
315
331
  # Fraction
316
332
  def __rtruediv__(self,value):
317
333
  return value/self.value
334
+
318
335
  # Integer division
319
336
  def __rfloordiv__(self,value):
320
337
  return value//self.value
338
+
321
339
  # Module
322
340
  def __rmod__(self,value):
323
341
  return value%self.value
342
+
324
343
  # Power
325
344
  def __rpow__(self,value):
326
345
  return value**self.value
@@ -330,26 +349,32 @@ class Pointer(Generic[PT]):
330
349
  def __iadd__(self,value):
331
350
  self.value=self.value+value
332
351
  return self
352
+
333
353
  # Difference
334
354
  def __isub__(self,value):
335
355
  self.value=self.value-value
336
356
  return self
357
+
337
358
  # Multiplication
338
359
  def __imul__(self,value):
339
360
  self.value=self.value*value
340
361
  return self
362
+
341
363
  # Fraction
342
364
  def __itruediv__(self,value):
343
365
  self.value=self.value/value
344
366
  return self
367
+
345
368
  # Integer division
346
369
  def __ifloordiv__(self,value):
347
370
  self.value=self.value//value
348
371
  return self
372
+
349
373
  # Module
350
374
  def __imod__(self,value):
351
375
  self.value=self.value%value
352
376
  return self
377
+
353
378
  def __ipow__(self,value):
354
379
  self.value=self.value**value
355
380
  return self
@@ -361,30 +386,35 @@ class Pointer(Generic[PT]):
361
386
  return self.value==value.value
362
387
  else:
363
388
  return self.value==value
389
+
364
390
  # Inequality
365
391
  def __ne__(self,value):
366
392
  if isinstance(value,Pointer):
367
393
  return self.value!=value.value
368
394
  else:
369
395
  return self.value!=value
396
+
370
397
  # Lower than
371
398
  def __lt__(self,value):
372
399
  if isinstance(value,Pointer):
373
400
  return self.value<value.value
374
401
  else:
375
402
  return self.value<value
403
+
376
404
  # Lower or equal
377
405
  def __le__(self,value):
378
406
  if isinstance(value,Pointer):
379
407
  return self.value<=value.value
380
408
  else:
381
409
  return self.value<=value
410
+
382
411
  # Greater than
383
412
  def __gt__(self,value):
384
413
  if isinstance(value,Pointer):
385
414
  return self.value>value.value
386
415
  else:
387
416
  return self.value>value
417
+
388
418
  # Greater or equal
389
419
  def __ge__(self,value):
390
420
  if isinstance(value,Pointer):
@@ -396,9 +426,11 @@ class Pointer(Generic[PT]):
396
426
  # Negative
397
427
  def __neg__(self):
398
428
  return Pointer(-self.value)
429
+
399
430
  # Positive
400
431
  def __pos__(self):
401
432
  return Pointer(+self.value)
433
+
402
434
  # Absolute value
403
435
  def __abs__(self):
404
436
  return Pointer(abs(self.value))
@@ -412,9 +444,11 @@ class Pointer(Generic[PT]):
412
444
  # __int__
413
445
  def __int__(self):
414
446
  return int(self.value)
447
+
415
448
  # __float__
416
449
  def __float__(self):
417
450
  return float(self.value)
451
+
418
452
  # __index__
419
453
  def __index__(self):
420
454
  return self.value
@@ -423,20 +457,22 @@ class Pointer(Generic[PT]):
423
457
  # Representation
424
458
  def __repr__(self):
425
459
  return f"{self.__class__.__name__}({self.value})"
460
+
426
461
  # HTML representation
427
462
  def _repr_html_(self):
428
- return f"""
429
- <table>
430
- <thead>
431
- <tr>
432
- <th style=\"text-align: center;\">{self.reference}</th>
433
- </tr>
434
- </thead>
435
- <tr>
436
- <td style=\"text-align: center;\">{self.value}</td>
437
- </tr>
438
- </table>
439
- """
463
+ return f"""\
464
+ <table>
465
+ <thead>
466
+ <tr>
467
+ <th style=\"text-align: center;\">{self.reference}</th>
468
+ </tr>
469
+ </thead>
470
+ <tr>
471
+ <td style=\"text-align: center;\">{self.value}</td>
472
+ </tr>
473
+ </table>\
474
+ """
475
+
440
476
  # Printing
441
477
  def __str__(self):
442
478
  return str(self.value)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: memorymanagement
3
- Version: 1.2.4
3
+ Version: 1.3.0
4
4
  Summary: Adds support for memory management
5
5
  Home-page: https://github.com/Ricardo-Werner-Rivas/memorymanagement/tree/PyPI
6
6
  Author: Ricardo Werner Rivas
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = memorymanagement
3
- version = 1.2.4
3
+ version = 1.3.0
4
4
  author = Ricardo Werner Rivas
5
5
  author_email = ricardowernerrivas@gmail.com
6
6
  description = Adds support for memory management