From dae7bc720b635e70fd31c7c421245cb9f1fa90bf Mon Sep 17 00:00:00 2001 From: retoor Date: Tue, 3 Dec 2024 23:30:11 +0100 Subject: [PATCH] Update. --- dist/app-1.0.0-py3-none-any.whl | Bin 6897 -> 7139 bytes dist/app-1.0.0.tar.gz | Bin 5502 -> 5788 bytes src/app/app.py | 10 +++++----- src/app/cli.py | 7 +++++-- src/app/repl.py | 8 +++----- 5 files changed, 13 insertions(+), 12 deletions(-) diff --git a/dist/app-1.0.0-py3-none-any.whl b/dist/app-1.0.0-py3-none-any.whl index 48bab7c2026108b12047508d2a78d81f117bf158..918af48fbed5319a3579abe8eb792a0333bd46d3 100644 GIT binary patch delta 4370 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 delta 4073 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 diff --git a/dist/app-1.0.0.tar.gz b/dist/app-1.0.0.tar.gz index c74ea22d77a11f48ce07f97d1e8ede2843ab7bf6..03aeb0b3f29180c3b48fe47febde117f255343cb 100644 GIT binary patch literal 5788 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 qYG?!ps^P$d6_Y=3(b;c2;gS7yN{;RSD@B+h diff --git a/src/app/app.py b/src/app/app.py index a2ae932..9acb190 100644 --- a/src/app/app.py +++ b/src/app/app.py @@ -38,7 +38,7 @@ class BaseApplication(web.Application): super().__init__(*args, **kwargs) def run(self, *args, **kwargs): - web.run_app(self,*args,**kwargs) + web.run_app(self, *args, **kwargs) async def authenticate(self, username, password): return self.username == username and self.password == password @@ -109,7 +109,7 @@ class WebDbApplication(BaseApplication): self.db_web = db_web self.db_path = db_path self.db = db or dataset.connect(self.db_path) - + super().__init__(*args, **kwargs) if not self.db_web: return @@ -122,9 +122,9 @@ class WebDbApplication(BaseApplication): self.router.add_post("/db/get", self.get_handler) self.router.add_post("/db/set", self.set_handler) - async def set_handler(self,request): + async def set_handler(self, request): obj = await request.json() - response = await self.set(obj.get("key"),obj.get("value")) + response = await self.set(obj.get("key"), obj.get("value")) return web.json_response(response) async def get_handler(self, request): @@ -153,7 +153,7 @@ class WebDbApplication(BaseApplication): async def find_handler(self, request): obj = await request.json() - response = await self.find(obj.get("table"), obj.get("where", {})) + response = await self.find(obj.get("table"), obj.get("where", {})) return web.json_response(response) async def find_one_handler(self, request): diff --git a/src/app/cli.py b/src/app/cli.py index 994a58e..4ca943a 100644 --- a/src/app/cli.py +++ b/src/app/cli.py @@ -30,7 +30,7 @@ async def bench(url): while True: index += 1 try: - async with session.get(url.rstrip("/") + "/stat") as response: + async with session.get(url.rstrip("/") + "/stat"): pass time_end = time.time() duration = time_end - time_start @@ -39,7 +39,10 @@ async def bench(url): except Exception as ex: log.exception(ex) await asyncio.sleep(1) - log.info("{} requests per second. Made {} requests in total in duration of {} seconds.".format(index/duration_limit,index,duration)) + log.info( + f"{index / duration_limit} requests per second. Made {index} requests in total in duration of {duration} seconds." + ) + def cli_bench(): args = parse_args() diff --git a/src/app/repl.py b/src/app/repl.py index c8546cf..65218a7 100644 --- a/src/app/repl.py +++ b/src/app/repl.py @@ -2,15 +2,13 @@ from IPython.terminal.embed import InteractiveShellEmbed def repl(**kwargs): - from .app import Application + variables = {} variables.update(globals().copy()) variables.update(locals()) variables.update(kwargs) - - shell = InteractiveShellEmbed( - exit_msg="Exiting..." - ) + + shell = InteractiveShellEmbed(exit_msg="Exiting...") shell(local_ns=variables)