Skip to content

Commit 1954d87

Browse files
1.1.0 Update
Added ThreadReturn
1 parent 4b07c82 commit 1954d87

File tree

5 files changed

+45
-9
lines changed

5 files changed

+45
-9
lines changed

README.md

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ sample of Overloading in python
1212
def printer(data:str)->None:
1313
print("String Data:",data)
1414

15-
@printer.overload # automate overriding using Type Hint
15+
@printer.overload # automate overloading using Type Hint
1616
def printer_int(data:int)->None:
1717
print("Integer Data:",data)
1818

19-
@printer.overload_manual(float)
19+
@printer.overload_manual(float) # manual function overloading
2020
def printer_float(data)->None:
2121
print("Float Data:",data)
2222

@@ -28,6 +28,31 @@ sample of Overloading in python
2828
printer(123) # output: Integer Data: 123
2929
printer(12.3) # output: FLoat Data: 12.3
3030
printer([1,2,3]) # output: Other Data: [1,2,3]
31+
## Logging
32+
sample of logging in python using **Logger**
33+
34+
from addons import Logger,DEBUG,INFO,WARNING,ERROR,CRITICAL,UNKNOWN
35+
36+
logger=Logger(log_level=DEBUG)
37+
logger.log("This is A Debug Message",DEBUG)
38+
logger.log("This is A Info Message",INFO)
39+
logger.log("This is A Warning Message",WARNING)
40+
logger.log("This is A Error Message",ERROR)
41+
logger.log("This is A Critical Message",CRITICAL)
42+
logger.log("This is A Unknown Message",UNKNOWN)
43+
44+
## Thread With Return
45+
sample of creating and getting the Thread return using **ThreadReturn**
46+
47+
from addons import ThreadReturn
48+
49+
def pow(x:int,y:int)->int:
50+
return x**y
51+
52+
thread=ThreadReturn(target=pow,args=(2,16))
53+
thread.start()
54+
thread.join()
55+
print(thread.return_value) # output: 65536
3156
## Creator
3257
**Author**: **Vahab Programmer**<br>
3358
**Github Page**: **[Vahab-Programmer](https://github.com/Vahab-Programmer)**<br>

addons/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
from .classes import *
1+
from .classes import Overload,Logger,DEBUG,INFO,WARNING,ERROR,CRITICAL,UNKNOWN,SpecialAscii,ThreadReturn
22
author="Vahab Programmer https://github.com/Vahab-Programmer"
3-
version="1.0.1"
3+
version="1.1.0"

addons/classes.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from .imports import stdout,stderr,datetime
1+
from .imports import stdout,stderr,datetime,Thread
22
DEBUG=1
33
INFO=2
44
WARNING=3
@@ -9,25 +9,28 @@ class Overload:
99
def __init__(self,function):
1010
self.__funcmap={}
1111
self.__default=function
12+
self.__return_function=True
1213
self.overload(function)
1314
def overload(self,function):
1415
args = function.__annotations__.copy()
1516
args.pop("return",None)
1617
args = tuple(args.values())
1718
self.__funcmap[args] = function
18-
return function
19+
return function if self.__return_function else None
1920
def overload_manual(self,*args):
2021
args=tuple([arg.__class__ if type(arg) != type else arg for arg in args])
2122
funcmap=self.__funcmap
23+
return_function=self.__return_function
2224
def wrapper(function):
2325
funcmap[args]=function
24-
return function
26+
return function if return_function else None
2527
return wrapper
2628
def default(self,function)->None:self.__default=function
2729
def __call__(self, *args, **kwargs) -> any:
2830
arg = [type(a) for a in args] + [type(k) for k in kwargs.values()]
2931
func = self.__funcmap.get(tuple(arg), self.__default)
3032
return func(*args, **kwargs) if func else None
33+
def return_function(self,status:bool)->None:self.__return_function=status
3134
class SpecialAscii:
3235
reset = "\033[0m"
3336
bold = "\033[1m"
@@ -79,4 +82,11 @@ def log(self,message:str,level:int)->None:
7982
time=datetime.now().strftime("%Y-%m-%d %H:%M:%S")
8083
level_msg=self.__textmap.get(level)
8184
if not level_msg:level_msg=self.__textmap.get(UNKNOWN)
82-
print("[{}] [{}] {}: {}".format(time,level_msg,self.__name,message),file=self.__stdout if level <=WARNING else self.__stderr)
85+
print("[{}] [{}] {}: {}".format(time,level_msg,self.__name,message),file=self.__stdout if level <=WARNING else self.__stderr)
86+
class ThreadReturn(Thread):
87+
def __init__(self, group=None, target=None, name=None,args=(), kwargs=None, *, daemon=None):
88+
super().__init__(group=group,target=target,name=name,args=args,kwargs=kwargs,daemon=daemon)
89+
self.return_value=None
90+
self._target=self.__runner
91+
self.__target=target
92+
def __runner(self,*args,**kwargs)->None:self.return_value=self.__target(*args,**kwargs)

addons/imports.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from datetime import datetime
22
from sys import stdout,stderr
3+
from threading import Thread
34
from os import name
45
if name == "nt":
56
from ctypes import windll,c_uint32,byref

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
from setuptools import setup, find_packages
2-
setup(name="addons",version="1.0.1",packages=find_packages(),install_requires=[],author="Vahab Programmer",author_email="vahab.goudarzi.2011@gamil.com",description="Python Addons",long_description=open("README.md").read(),long_description_content_type="text/markdown",url="https://github.com/Vahab-Programmer/Python-Addons",classifiers=["Programming Language :: Python :: 3","License :: OSI Approved :: MIT License","Operating System :: OS Independent",],python_requires='>=3.8')
2+
setup(name="addons",version="1.1.0",packages=find_packages(),install_requires=[],author="Vahab Programmer",author_email="vahab.goudarzi.2011@gamil.com",description="Python Addons",long_description=open("README.md").read(),long_description_content_type="text/markdown",url="https://github.com/Vahab-Programmer/Python-Addons",classifiers=["Programming Language :: Python :: 3","License :: OSI Approved :: MIT License","Operating System :: OS Independent",],python_requires='>=3.8')

0 commit comments

Comments
 (0)