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