Add first version
This commit is contained in:
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
__pycache__
|
||||||
|
dist
|
||||||
43
pyproject.toml
Normal file
43
pyproject.toml
Normal 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 = []
|
||||||
2
src/middleware/__init__.py
Normal file
2
src/middleware/__init__.py
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
__author__ = 'RemiZOffAlex'
|
||||||
|
__email__ = 'remizoffalex@mail.ru'
|
||||||
82
src/middleware/common.py
Normal file
82
src/middleware/common.py
Normal 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()
|
||||||
Reference in New Issue
Block a user