Skip to content

Commit

Permalink
Implemented a vast majority of the crypto module
Browse files Browse the repository at this point in the history
  • Loading branch information
adalfarus committed Jun 22, 2024
1 parent 844a415 commit 48f9fd8
Show file tree
Hide file tree
Showing 3 changed files with 324 additions and 109 deletions.
53 changes: 52 additions & 1 deletion src/aplustools/package/_direct_functions.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import subprocess as _subprocess
import sys as _sys
from typing import Optional as _Optional
from typing import Optional as _Optional, Any as _Any


class LazyModuleLoader:
Expand Down Expand Up @@ -67,3 +67,54 @@ def __getattr__(self, name):
if name not in self.__dict__:
raise AttributeError(f"'{type(self).__name__}' object has no attribute '{name}'")
return self.__dict__[name]


class EasyProperty:
def __init__(self, initial_value=None, gets=True, sets=True):
self._value = initial_value
self._gets = gets
self._sets = sets

def __get__(self, instance, owner):
if not self._gets:
raise AttributeError("This attribute is not readable")
return self._value

def __set__(self, instance, value):
if not self._sets:
raise AttributeError("This attribute is not writable")
self._value = value

def __str__(self):
return str(self._value)

def __repr__(self):
return self.__str__()


class EasyAttribute:
def __init__(self, name: str, gets=True, sets=True):
self._name = name
self._gets = gets
self._sets = sets

def __get__(self, instance, owner):
if hasattr(instance, "_" + self._name):
if not self._gets:
raise AttributeError("This attribute is not readable")
return getattr(instance, "_" + self._name)

def __set__(self, instance, value):
if hasattr(instance, "_counter_" + self._name):
if not self._sets:
raise AttributeError("This attribute is not writable")
setattr(instance, "_" + self._name, value)
else:
setattr(instance, "_counter_" + self._name, 1)
setattr(instance, "_" + self._name, value)

def __str__(self):
return str(self)

def __repr__(self):
return self.__str__()
Loading

0 comments on commit 48f9fd8

Please sign in to comment.