Add first version

This commit is contained in:
2024-09-26 09:46:41 +03:00
commit 5cc0e88e7d
5 changed files with 130 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
__pycache__
dist

1
README.md Normal file
View File

@@ -0,0 +1 @@
# Middleware

43
pyproject.toml Normal file
View File

@@ -0,0 +1,43 @@
[project]
name = "middleware"
version ="0.1"
authors = [
{ name="RemiZOffAlex", email="remizoffalex@gmail.com" },
]
maintainers = [
{ name="RemiZOffAlex", email="remizoffalex@gmail.com" },
]
description = "Middleware"
requires-python = ">=3.10"
classifiers = [
"Environment :: Console",
"Intended Audience :: Developers",
"Intended Audience :: Information Technology",
"Intended Audience :: System Administrators",
"Operating System :: POSIX :: Linux",
"Programming Language :: Formal",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
# "Topic :: Software Development :: Code Generators",
# "Topic :: Software Development :: Compilers",
"Topic :: Software Development :: Libraries",
]
keywords = ["middleware"]
dependencies = [
# "fabric",
# "dsl",
# "invoke",
# "jsonrpc@git+https://gitlab.com/RemiZOffAlex/jsonrpc",
# "validator@git+https://gitlab.com/RemiZOffAlex/validator",
]
[build-system]
requires = ["flit_core >=3.2,<4"]
build-backend = "flit_core.buildapi"
[tool.flit.sdist]
include = []
exclude = []

View File

@@ -0,0 +1,2 @@
__author__ = 'RemiZOffAlex'
__email__ = 'remizoffalex@mail.ru'

82
src/middleware/common.py Normal file
View File

@@ -0,0 +1,82 @@
__author__ = 'RemiZOffAlex'
__email__ = 'remizoffalex@mail.ru'
import logging
log = logging.getLogger(__name__)
class Logger:
counter = 0
stack = []
def __call__(self, func):
def wrapper(*args, **kwargs):
indent = ' '*self.counter
position = self.counter
current = self.stack
self.stack.append(func.__qualname__)
print(indent + '>>> {func}'.format(func=func.__qualname__))
print(indent + '>>> {stack}'.format(stack='/'.join(self.stack)))
self.counter += 1
# print(indent + 'args', type(args))
if isinstance(args, tuple):
for item in args:
print(indent + 'arg item', type(item))
pass
else:
print(indent + 'args', args)
print(indent + 'kwargs', kwargs)
result = func(*args, **kwargs)
self.counter = position
self.stack = current
indent = ' '*self.counter
# self.counter -= 1
print(indent + 'result', result)
print(indent + '<<< {stack}'.format(stack='/'.join(self.stack)))
print(indent + '<<< {func}'.format(func=func.__qualname__))
return result
return wrapper
# def logger(func):
# print('logger')
# print('func', func)
# def wrapper(*args, **kwargs):
# print('logger.wrapper')
# print('args', type(args))
# print('kwargs', type(kwargs))
# result = func(*args, **kwargs)
# return result
# return wrapper
logger = Logger()
# def middleware(func):
# print('middleware.func', func.__qualname__, func)
# def wrapper(*args, **kwargs):
# print('wrapper')
# # exit(0)
# print('args', type(args))
# print('kwargs', type(kwargs))
# result = func(*args, **kwargs)
# print('result', result)
# return result
# return wrapper
class Middleware:
wrappers = []
def __init__(self, wrappers = None):
if wrappers:
self.wrappers = wrappers
def __call__(self, func):
def wrapper(*args, **kwargs):
i = iter(self.wrappers)
onion = func
while (handler := next(i, None)):
onion = handler(onion)
result = onion(*args, **kwargs)
return result
return wrapper
middleware = Middleware()