From dd1952001f3d765a45c9c5b9ebabc1222e35cca7 Mon Sep 17 00:00:00 2001 From: ArtemSmeta Date: Thu, 11 Aug 2022 14:38:57 +0300 Subject: [PATCH 01/50] add params to py and sh scripts, refactor structure and methods, add logger --- main.py | 11 +- piper/base/backend/utils.py | 3 +- piper/base/docker/__init__.py | 1 + piper/base/executors.py | 71 +++- piper/base/virtualenv/__init__.py | 0 .../base/virtualenv/templates/default-venv.j2 | 12 + .../base/virtualenv/templates/python-venv.j2 | 27 ++ piper/base/virtualenv/utils.py | 52 +++ piper/configurations.py | 7 +- piper/envs/__init__.py | 21 ++ piper/services/__init__.py | 4 +- piper/utils/docker_utils.py | 352 +++++++++--------- piper/utils/logger_utils.py | 16 + 13 files changed, 378 insertions(+), 199 deletions(-) create mode 100644 piper/base/virtualenv/__init__.py create mode 100644 piper/base/virtualenv/templates/default-venv.j2 create mode 100644 piper/base/virtualenv/templates/python-venv.j2 create mode 100644 piper/base/virtualenv/utils.py create mode 100644 piper/utils/logger_utils.py diff --git a/main.py b/main.py index 18c758e..c15a86c 100644 --- a/main.py +++ b/main.py @@ -1,13 +1,12 @@ -from piper.services import TestMessageAdder, StringValue -from piper.envs import CurrentEnv - import asyncio -from loguru import logger -logger.add("file.log", level="INFO") + +from piper.envs import VirtualEnv +from piper.services import StringValue, TestMessageAdder + if __name__ == '__main__': loop = asyncio.get_event_loop() - with CurrentEnv() as env: + with VirtualEnv() as env: x = StringValue(value="hello, world") adder = TestMessageAdder(appender="!", port=8788) result = loop.run_until_complete(adder(x)) diff --git a/piper/base/backend/utils.py b/piper/base/backend/utils.py index 7514166..bfd275a 100644 --- a/piper/base/backend/utils.py +++ b/piper/base/backend/utils.py @@ -1,6 +1,7 @@ -import jinja2 import os +import jinja2 + def render_fast_api_backend(**kwargs): """ diff --git a/piper/base/docker/__init__.py b/piper/base/docker/__init__.py index 92138a6..6908a15 100644 --- a/piper/base/docker/__init__.py +++ b/piper/base/docker/__init__.py @@ -1,4 +1,5 @@ import os + import jinja2 diff --git a/piper/base/executors.py b/piper/base/executors.py index 8316bfc..4b68831 100644 --- a/piper/base/executors.py +++ b/piper/base/executors.py @@ -1,22 +1,22 @@ -from abc import abstractmethod, ABC -import os +import inspect +import subprocess +import sys import time +from abc import abstractmethod from typing import Dict -import inspect import aiohttp -from loguru import logger import docker +import requests from pydantic import BaseModel -from piper.base.docker import PythonImage from piper.base.backend.utils import render_fast_api_backend -from piper.envs import is_docker_env, is_current_env, get_env +from piper.base.virtualenv.utils import VenvPythonImage from piper.configurations import get_configuration +from piper.envs import get_env, is_current_env, is_docker_env, is_virtual_env from piper.utils import docker_utils as du +from piper.utils.logger_utils import logger -import requests -import sys class BaseExecutor: pass @@ -139,6 +139,7 @@ def wait_for_fast_api_app_start(host, external_port, wait_on_iter, n_iters): sys.exit() i += 1 + class FastAPIExecutor(HTTPExecutor): requirements = ["gunicorn", "fastapi", "uvicorn", "aiohttp", "docker", "Jinja2", "pydantic", "loguru"] base_handler = "run" @@ -149,6 +150,8 @@ def __init__(self, port: int = 8080, **service_kwargs): self.container_name = "piper_FastAPI" if is_docker_env(): + logger.info('FastAPIExecutor init with is_docker_env()') + docker_client = docker.DockerClient(base_url='unix://var/run/docker.sock') cfg = get_configuration() project_output_path = cfg.path @@ -169,9 +172,23 @@ def __init__(self, port: int = 8080, **service_kwargs): ) wait_for_fast_api_app_start('localhost', 8788, 0.5, 10) - else: - # TODO: Local ENVIRONMENT checks - pass + elif is_virtual_env(): + logger.info('FastAPIExecutor init with is_virtual_env()') + + cfg = get_configuration() + project_output_path = cfg.path + name_venv = cfg.name_venv + api_host = cfg.api_host + + copy_piper(project_output_path) + copy_scripts(project_output_path, self.scripts()) + + self.create_fast_api_files_venv( + path=project_output_path, + name_venv=name_venv, + api_host=api_host, + api_port=port, + ) # a = super().__init__('localhost', port, 'hl') # a.__call__() @@ -200,6 +217,36 @@ def create_fast_api_files(self, path: str, **service_kwargs): write_requirements(path, self.requirements) gunicorn = "#!/bin/bash \n" \ - "gunicorn -b 0.0.0.0:8080 --workers 4 main:app --worker-class uvicorn.workers.UvicornWorker --preload --timeout 120" + "gunicorn -b 0.0.0.0:8080 --workers 4 main:app --worker-class uvicorn.workers.UvicornWorker " \ + "--preload --timeout 120 " with open(f"{path}/run.sh", "w") as output: output.write(gunicorn) + + def create_fast_api_files_venv( + self, + path: str, + name_venv: str, + api_host: str, + api_port: int, + ): + logger.info('FastAPIExecutor create_fast_api_files_venv()') + + venv_python_image = VenvPythonImage( + name_path=path, + name_venv=name_venv, + api_host=api_host, + api_port=api_port, + ) + + venv_main = venv_python_image.render_venv_python() + with open(f"{path}/main.py", "w") as output: + output.write(venv_main) + + venv_bash = venv_python_image.render_venv_bash() + with open(f"{path}/create_venv.sh", "w") as output: + output.write(venv_bash) + + write_requirements(path, self.requirements) + + process_chmod = subprocess.run(f'chmod +x {path}create_venv.sh', shell=True) + process_run = subprocess.run(f'{path}create_venv.sh', shell=True) diff --git a/piper/base/virtualenv/__init__.py b/piper/base/virtualenv/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/piper/base/virtualenv/templates/default-venv.j2 b/piper/base/virtualenv/templates/default-venv.j2 new file mode 100644 index 0000000..5e9178b --- /dev/null +++ b/piper/base/virtualenv/templates/default-venv.j2 @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +NAMEVENV={{ name_path }}/{{ name_venv }} + +pip3 install virtualenv + +python3 -m virtualenv $NAMEVENV +source $NAMEVENV/bin/activate + +pip3 install -r {{ name_path }}/requirements.txt + +python3 {{ name_path }}/main.py {{ api_host }} {{ api_port }} diff --git a/piper/base/virtualenv/templates/python-venv.j2 b/piper/base/virtualenv/templates/python-venv.j2 new file mode 100644 index 0000000..834790d --- /dev/null +++ b/piper/base/virtualenv/templates/python-venv.j2 @@ -0,0 +1,27 @@ +import argparse + +import uvicorn +from fastapi import FastAPI, Request, status + +app = FastAPI() + +@app.get("/") +async def root(): + return {"message": "Hello World"} + + +@app.post('/health_check', status_code=status.HTTP_200_OK) +async def hl(): + return {"message": "health check"} + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("host", type=str) + parser.add_argument("port", type=int) + args = parser.parse_args() + if args.host and args.port: + uvicorn.run(app, host=args.host, port=args.port) + else: + print('No positional arguments in cli') + uvicorn.run(app, host='0.0.0.0', port=8080) diff --git a/piper/base/virtualenv/utils.py b/piper/base/virtualenv/utils.py new file mode 100644 index 0000000..e8799b8 --- /dev/null +++ b/piper/base/virtualenv/utils.py @@ -0,0 +1,52 @@ +import os + +import jinja2 + +from piper.utils.logger_utils import logger + + +class VenvPythonImage: + + def __init__( + self, + name_path: str, + name_venv: str, + api_host: str, + api_port: int, + ): + self.name_path = name_path + self.name_venv = name_venv + self.api_host = api_host + self.api_port = api_port + + def render_venv_bash(self): + """ + Render bash script for create and activate venv + """ + logger.info('Render bash script for create and activate venv') + + template_dir = os.path.join(os.path.dirname(__file__), 'templates') + jinja_env = jinja2.Environment(loader=jinja2.FileSystemLoader(template_dir), + trim_blocks=True, + lstrip_blocks=True) + template = jinja_env.get_template('default-venv.j2') + return template.render( + name_path=self.name_path, + name_venv=self.name_venv, + api_host=self.api_host, + api_port=self.api_port, + ) + + @staticmethod + def render_venv_python(): + """ + Render main file for virtual env logic + """ + logger.info('Render main file for virtual env logic') + + template_dir = os.path.join(os.path.dirname(__file__), 'templates') + jinja_env = jinja2.Environment(loader=jinja2.FileSystemLoader(template_dir), + trim_blocks=True, + lstrip_blocks=True) + template = jinja_env.get_template('python-venv.j2') + return template.render() diff --git a/piper/configurations.py b/piper/configurations.py index 201c53d..6a7d248 100644 --- a/piper/configurations.py +++ b/piper/configurations.py @@ -1,8 +1,9 @@ class Configuration: - path = "/Users/olegsokolov/PycharmProjects/piper/applications" - path = "/home/pavel/repo/piper_new_out/" + path = "./piper_new_out/" piper_path = "piper" - default_env = "docker" + default_env = "virtualenv" + name_venv = "venv_test" + api_host = "0.0.0.0" env = None diff --git a/piper/envs/__init__.py b/piper/envs/__init__.py index de363d3..0d78adb 100644 --- a/piper/envs/__init__.py +++ b/piper/envs/__init__.py @@ -7,6 +7,8 @@ def init_default_env(): # INITIALIZE ENVIRONMENT FROM CONFIGURATION if cfg.default_env == "docker": set_env(DockerEnv()) + elif cfg.default_env == "virtualenv": + set_env(VirtualEnv()) else: set_env(CurrentEnv()) @@ -37,6 +39,21 @@ def __exit__(self, *args, **kws): set_env(self._old_environment) +class VirtualEnv: + + def __init__(self): + pass + + def __enter__(self): + print("Entering VirtualEnv") + self._old_environment = get_env() + set_env(self) + + def __exit__(self, *args, **kws): + print("Exiting VirtualEnv") + set_env(self._old_environment) + + class CurrentEnv: def __init__(self): @@ -58,3 +75,7 @@ def is_current_env(): def is_docker_env(): return get_env().__class__.__name__ == "DockerEnv" + + +def is_virtual_env(): + return get_env().__class__.__name__ == "VirtualEnv" diff --git a/piper/services/__init__.py b/piper/services/__init__.py index bae4b00..68a3ed6 100644 --- a/piper/services/__init__.py +++ b/piper/services/__init__.py @@ -1,7 +1,7 @@ -from piper.base.executors import FastAPIExecutor - from pydantic import BaseModel +from piper.base.executors import FastAPIExecutor + class StringValue(BaseModel): value: str diff --git a/piper/utils/docker_utils.py b/piper/utils/docker_utils.py index 9b36983..f3bbc17 100644 --- a/piper/utils/docker_utils.py +++ b/piper/utils/docker_utils.py @@ -1,175 +1,177 @@ -import docker -import time -import sys -from loguru import logger - -def get_image(docker_client, image_name): - try: - cur_image = docker_client.images.get(image_name) - return cur_image - except docker.errors.ImageNotFound: - logger.info(f'image with tag {image_name} not found') - return False - - -def delete_image(docker_client, image_tag): - try: - docker_client.images.remove(image_tag, force=True) - return True - except Exception as e: - logger.error('error while remove image', e) - return False - - -def get_container(docker_client, container_name): - try: - cur_container = docker_client.containers.get(container_name) - return cur_container - except docker.errors.NotFound: - logger.info(f'container with name {container_name} not found') - return False - except Exception as e: - logger.error(f'non defined exeption {e}') - return False - -def get_container_with_status(docker_client, container_name): - try: - cur_container = docker_client.containers.get(container_name) - if cur_container: - status = cur_container.status - cont_id = cur_container.id - return cur_container, status, cont_id - except docker.errors.NotFound: - logger.info(f'container with name {container_name} not found') - return False - except Exception as e: - logger.error(f'non defined exeption {e}') - return False - -def stop_container(docker_client, container_name): - try: - cur_container = docker_client.containers.get(container_name) - cur_container.stop() - return True - except docker.errors.NotFound: - logger.error(f'container for stop with name {container_name} not found') - return False - except docker.errors.APIError: - logger.error(f'error while stop container {container_name}') - return False - - -def remove_container(docker_client, container_name): - try: - cur_container = docker_client.containers.get(container_name) - cur_container.remove(v=True, force=True) - return True - except docker.errors.NotFound: - logger.error(f'container for stop with name {container_name} not found') - return False - except docker.errors.APIError as de: - logger.error(f'error while remove container {container_name}') - logger.error(de) - return False - - -def stop_and_rm_container(docker_client, container_name): - # get container - cur_container = get_container(docker_client, container_name) - - # get container status - if not cur_container: - logger.info(f'container {container_name} not found') - return 'deleted' - else: - status = cur_container.status - cont_id = cur_container.id - logger.info('status', status, type(status)) - - if status == 'running': - logger.info(f'container {container_name} started already. Stop it!') - # stop - stop_result = stop_container(docker_client, cont_id) - logger.info('stoped', stop_result) - status = 'exited' - - if status == 'exited': - logger.info(f'container {container_name} exists already. Remove it!') - # rm - remove_result = remove_container(docker_client, cont_id) - logger.info('removed, remove_result is ', remove_result) - status = 'deleted' - return status - - -def image_find_and_rm(docker_client, image_tag): - cur_img = get_image(docker_client, image_tag) - logger.info(cur_img) - if cur_img: - logger.info(f'image {image_tag} exists') - logger.info(f'cur_img is {cur_img}, ID is {cur_img.id}') - del_result = delete_image(docker_client, image_tag) - logger.info(f'del_result of image {del_result}') - return del_result - else: - # не нужно ничего удалять, контейнера нет - return True - - -def create_image_and_container_by_dockerfile(docker_client, path, image_tag, container_name, port): - # should be deleted - status = stop_and_rm_container(docker_client, container_name) - - cur_cont = get_container(docker_client, container_name) - if cur_cont: - logger.error(f'container not deleted, {cur_cont}') - sys.exit() - - # remove image - if status == 'deleted': - # remove image - del_result = image_find_and_rm(docker_client, image_tag) - if del_result: - # create new image - image, logs = docker_client.images.build( - path=path, - tag=image_tag, - quiet=False, - rm=True, # creates image only without container - forcerm=True, - timeout=20 - ) - for log in logs: - logger.debug(log) - logger.info(f'image {image} created') - - # run container - try: - container = docker_client.containers.run(image_tag, name=container_name, detach=True, ports={8080:port}) - for log in container.logs(): - logger.debug(log) - logger.info(f'container {container} created') - - i = 0 - while True: - i += 1 - # logger.info(get_container_with_status(docker_client, container_name)) - container.reload() - logger.info(f'container.status {container.status}') - if container.status == 'running': - break - - if i == 20: - logger.error(f'container {container_name} can`t start, status is {container.status}') - sys.exit() - time.sleep(0.5) - - - except docker.errors.APIError as api_e: - logger.error(f'eroror while run container {container_name}') - logger.error(str(api_e)) - sys.exit() - else: - logger.error(f'error while del image {image_tag}') - sys.exit() - +import sys +import time + +import docker +from loguru import logger + + +def get_image(docker_client, image_name): + try: + cur_image = docker_client.images.get(image_name) + return cur_image + except docker.errors.ImageNotFound: + logger.info(f'image with tag {image_name} not found') + return False + + +def delete_image(docker_client, image_tag): + try: + docker_client.images.remove(image_tag, force=True) + return True + except Exception as e: + logger.error('error while remove image', e) + return False + + +def get_container(docker_client, container_name): + try: + cur_container = docker_client.containers.get(container_name) + return cur_container + except docker.errors.NotFound: + logger.info(f'container with name {container_name} not found') + return False + except Exception as e: + logger.error(f'non defined exeption {e}') + return False + +def get_container_with_status(docker_client, container_name): + try: + cur_container = docker_client.containers.get(container_name) + if cur_container: + status = cur_container.status + cont_id = cur_container.id + return cur_container, status, cont_id + except docker.errors.NotFound: + logger.info(f'container with name {container_name} not found') + return False + except Exception as e: + logger.error(f'non defined exeption {e}') + return False + +def stop_container(docker_client, container_name): + try: + cur_container = docker_client.containers.get(container_name) + cur_container.stop() + return True + except docker.errors.NotFound: + logger.error(f'container for stop with name {container_name} not found') + return False + except docker.errors.APIError: + logger.error(f'error while stop container {container_name}') + return False + + +def remove_container(docker_client, container_name): + try: + cur_container = docker_client.containers.get(container_name) + cur_container.remove(v=True, force=True) + return True + except docker.errors.NotFound: + logger.error(f'container for stop with name {container_name} not found') + return False + except docker.errors.APIError as de: + logger.error(f'error while remove container {container_name}') + logger.error(de) + return False + + +def stop_and_rm_container(docker_client, container_name): + # get container + cur_container = get_container(docker_client, container_name) + + # get container status + if not cur_container: + logger.info(f'container {container_name} not found') + return 'deleted' + else: + status = cur_container.status + cont_id = cur_container.id + logger.info('status', status, type(status)) + + if status == 'running': + logger.info(f'container {container_name} started already. Stop it!') + # stop + stop_result = stop_container(docker_client, cont_id) + logger.info('stoped', stop_result) + status = 'exited' + + if status == 'exited': + logger.info(f'container {container_name} exists already. Remove it!') + # rm + remove_result = remove_container(docker_client, cont_id) + logger.info('removed, remove_result is ', remove_result) + status = 'deleted' + return status + + +def image_find_and_rm(docker_client, image_tag): + cur_img = get_image(docker_client, image_tag) + logger.info(cur_img) + if cur_img: + logger.info(f'image {image_tag} exists') + logger.info(f'cur_img is {cur_img}, ID is {cur_img.id}') + del_result = delete_image(docker_client, image_tag) + logger.info(f'del_result of image {del_result}') + return del_result + else: + # не нужно ничего удалять, контейнера нет + return True + + +def create_image_and_container_by_dockerfile(docker_client, path, image_tag, container_name, port): + # should be deleted + status = stop_and_rm_container(docker_client, container_name) + + cur_cont = get_container(docker_client, container_name) + if cur_cont: + logger.error(f'container not deleted, {cur_cont}') + sys.exit() + + # remove image + if status == 'deleted': + # remove image + del_result = image_find_and_rm(docker_client, image_tag) + if del_result: + # create new image + image, logs = docker_client.images.build( + path=path, + tag=image_tag, + quiet=False, + rm=True, # creates image only without container + forcerm=True, + timeout=20 + ) + for log in logs: + logger.debug(log) + logger.info(f'image {image} created') + + # run container + try: + container = docker_client.containers.run(image_tag, name=container_name, detach=True, ports={8080:port}) + for log in container.logs(): + logger.debug(log) + logger.info(f'container {container} created') + + i = 0 + while True: + i += 1 + # logger.info(get_container_with_status(docker_client, container_name)) + container.reload() + logger.info(f'container.status {container.status}') + if container.status == 'running': + break + + if i == 20: + logger.error(f'container {container_name} can`t start, status is {container.status}') + sys.exit() + time.sleep(0.5) + + + except docker.errors.APIError as api_e: + logger.error(f'eroror while run container {container_name}') + logger.error(str(api_e)) + sys.exit() + else: + logger.error(f'error while del image {image_tag}') + sys.exit() + diff --git a/piper/utils/logger_utils.py b/piper/utils/logger_utils.py new file mode 100644 index 0000000..1d60f7a --- /dev/null +++ b/piper/utils/logger_utils.py @@ -0,0 +1,16 @@ +import logging +import sys + +logger = logging.getLogger() +logger.setLevel(logging.DEBUG) + +handler = logging.StreamHandler(sys.stdout) +handler.setLevel(logging.DEBUG) +formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(funcName)s - %(message)s') +handler.setFormatter(formatter) +logger.addHandler(handler) + +fh = logging.FileHandler('info.log') +fh.setLevel(logging.DEBUG) +fh.setFormatter(formatter) +logger.addHandler(fh) From 4844556a6114c5f603e1f8d376b17a9b9b2d8631 Mon Sep 17 00:00:00 2001 From: ArtemSmeta Date: Thu, 11 Aug 2022 15:31:15 +0300 Subject: [PATCH 02/50] fix struct for virtual env --- main.py | 27 +++++---- piper/base/executors.py | 59 ++++++++++--------- .../{default-venv.j2 => bash-create-venv.j2} | 2 +- .../templates/python-script-venv.j2 | 20 +++++++ .../base/virtualenv/templates/python-venv.j2 | 27 --------- piper/base/virtualenv/utils.py | 15 ++--- piper/configurations.py | 2 +- piper/services/__init__.py | 3 +- 8 files changed, 76 insertions(+), 79 deletions(-) rename piper/base/virtualenv/templates/{default-venv.j2 => bash-create-venv.j2} (76%) create mode 100644 piper/base/virtualenv/templates/python-script-venv.j2 delete mode 100644 piper/base/virtualenv/templates/python-venv.j2 diff --git a/main.py b/main.py index c15a86c..db1027e 100644 --- a/main.py +++ b/main.py @@ -1,19 +1,24 @@ import asyncio +from piper.base.executors import VirtualEnvExecutor from piper.envs import VirtualEnv from piper.services import StringValue, TestMessageAdder +# if __name__ == '__main__': +# loop = asyncio.get_event_loop() +# with VirtualEnv() as env: +# x = StringValue(value="hello, world") +# adder = TestMessageAdder(appender="!", port=8788) +# result = loop.run_until_complete(adder(x)) +# print(result) +# +# x = StringValue(value="hello, world") +# adder = TestMessageAdder(appender="!", port=8788) +# result = loop.run_until_complete(adder(x)) +# print(result) +# adder.rm_container() + if __name__ == '__main__': - loop = asyncio.get_event_loop() with VirtualEnv() as env: - x = StringValue(value="hello, world") - adder = TestMessageAdder(appender="!", port=8788) - result = loop.run_until_complete(adder(x)) - print(result) - - x = StringValue(value="hello, world") - adder = TestMessageAdder(appender="!", port=8788) - result = loop.run_until_complete(adder(x)) - print(result) - adder.rm_container() + adder = VirtualEnvExecutor() diff --git a/piper/base/executors.py b/piper/base/executors.py index 4b68831..99e5dab 100644 --- a/piper/base/executors.py +++ b/piper/base/executors.py @@ -11,7 +11,7 @@ from pydantic import BaseModel from piper.base.backend.utils import render_fast_api_backend -from piper.base.virtualenv.utils import VenvPythonImage +from piper.base.virtualenv.utils import VenvPython from piper.configurations import get_configuration from piper.envs import get_env, is_current_env, is_docker_env, is_virtual_env from piper.utils import docker_utils as du @@ -19,7 +19,8 @@ class BaseExecutor: - pass + def scripts(self): + return {"service": inspect.getfile(self.__class__)} class LocalExecutor: @@ -172,23 +173,6 @@ def __init__(self, port: int = 8080, **service_kwargs): ) wait_for_fast_api_app_start('localhost', 8788, 0.5, 10) - elif is_virtual_env(): - logger.info('FastAPIExecutor init with is_virtual_env()') - - cfg = get_configuration() - project_output_path = cfg.path - name_venv = cfg.name_venv - api_host = cfg.api_host - - copy_piper(project_output_path) - copy_scripts(project_output_path, self.scripts()) - - self.create_fast_api_files_venv( - path=project_output_path, - name_venv=name_venv, - api_host=api_host, - api_port=port, - ) # a = super().__init__('localhost', port, 'hl') # a.__call__() @@ -200,9 +184,6 @@ def rm_container(self): if self.container: self.container.remove(force=True) - def scripts(self): - return {"service": inspect.getfile(self.__class__)} - def create_fast_api_files(self, path: str, **service_kwargs): backend = render_fast_api_backend(service_class=self.__class__.__name__, service_kwargs=dict(service_kwargs), @@ -222,20 +203,40 @@ def create_fast_api_files(self, path: str, **service_kwargs): with open(f"{path}/run.sh", "w") as output: output.write(gunicorn) - def create_fast_api_files_venv( + +class VirtualEnvExecutor(BaseExecutor): + requirements = ["gunicorn", "fastapi", "uvicorn", "aiohttp", "docker", "Jinja2", "pydantic", "loguru"] + + def __init__(self): + if is_virtual_env(): + logger.info('VirtualEnvExecutor init with is_virtual_env()') + + cfg = get_configuration() + project_output_path = cfg.path + name_venv = cfg.name_venv + number = cfg.number + + copy_piper(project_output_path) + copy_scripts(project_output_path, self.scripts()) + + self.create_files_for_venv( + path=project_output_path, + name_venv=name_venv, + number=number, + ) + + def create_files_for_venv( self, path: str, name_venv: str, - api_host: str, - api_port: int, + number: int, ): - logger.info('FastAPIExecutor create_fast_api_files_venv()') + logger.info('VirtualEnvExecutor create_fast_api_files_venv()') - venv_python_image = VenvPythonImage( + venv_python_image = VenvPython( name_path=path, name_venv=name_venv, - api_host=api_host, - api_port=api_port, + number=number, ) venv_main = venv_python_image.render_venv_python() diff --git a/piper/base/virtualenv/templates/default-venv.j2 b/piper/base/virtualenv/templates/bash-create-venv.j2 similarity index 76% rename from piper/base/virtualenv/templates/default-venv.j2 rename to piper/base/virtualenv/templates/bash-create-venv.j2 index 5e9178b..ccd4140 100644 --- a/piper/base/virtualenv/templates/default-venv.j2 +++ b/piper/base/virtualenv/templates/bash-create-venv.j2 @@ -9,4 +9,4 @@ source $NAMEVENV/bin/activate pip3 install -r {{ name_path }}/requirements.txt -python3 {{ name_path }}/main.py {{ api_host }} {{ api_port }} +python3 {{ name_path }}/main.py {{ number }} diff --git a/piper/base/virtualenv/templates/python-script-venv.j2 b/piper/base/virtualenv/templates/python-script-venv.j2 new file mode 100644 index 0000000..f45a43c --- /dev/null +++ b/piper/base/virtualenv/templates/python-script-venv.j2 @@ -0,0 +1,20 @@ +import argparse + + +def sum_factorial(number: int) -> int: + partial_factorial = 1 + partial_sum = 0 + for i in range(1, number + 1): + partial_factorial *= i + partial_sum += partial_factorial + return partial_sum + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("number", type=int) + args = parser.parse_args() + if args.number: + print(f'Sum of factorial to {args.number} = {sum_factorial(args.number)}') + else: + print('No positional arguments in cli') diff --git a/piper/base/virtualenv/templates/python-venv.j2 b/piper/base/virtualenv/templates/python-venv.j2 deleted file mode 100644 index 834790d..0000000 --- a/piper/base/virtualenv/templates/python-venv.j2 +++ /dev/null @@ -1,27 +0,0 @@ -import argparse - -import uvicorn -from fastapi import FastAPI, Request, status - -app = FastAPI() - -@app.get("/") -async def root(): - return {"message": "Hello World"} - - -@app.post('/health_check', status_code=status.HTTP_200_OK) -async def hl(): - return {"message": "health check"} - - -if __name__ == "__main__": - parser = argparse.ArgumentParser() - parser.add_argument("host", type=str) - parser.add_argument("port", type=int) - args = parser.parse_args() - if args.host and args.port: - uvicorn.run(app, host=args.host, port=args.port) - else: - print('No positional arguments in cli') - uvicorn.run(app, host='0.0.0.0', port=8080) diff --git a/piper/base/virtualenv/utils.py b/piper/base/virtualenv/utils.py index e8799b8..96787e3 100644 --- a/piper/base/virtualenv/utils.py +++ b/piper/base/virtualenv/utils.py @@ -5,19 +5,17 @@ from piper.utils.logger_utils import logger -class VenvPythonImage: +class VenvPython: def __init__( self, name_path: str, name_venv: str, - api_host: str, - api_port: int, + number: int, ): self.name_path = name_path self.name_venv = name_venv - self.api_host = api_host - self.api_port = api_port + self.number = number def render_venv_bash(self): """ @@ -29,12 +27,11 @@ def render_venv_bash(self): jinja_env = jinja2.Environment(loader=jinja2.FileSystemLoader(template_dir), trim_blocks=True, lstrip_blocks=True) - template = jinja_env.get_template('default-venv.j2') + template = jinja_env.get_template('bash-create-venv.j2') return template.render( name_path=self.name_path, name_venv=self.name_venv, - api_host=self.api_host, - api_port=self.api_port, + number=self.number, ) @staticmethod @@ -48,5 +45,5 @@ def render_venv_python(): jinja_env = jinja2.Environment(loader=jinja2.FileSystemLoader(template_dir), trim_blocks=True, lstrip_blocks=True) - template = jinja_env.get_template('python-venv.j2') + template = jinja_env.get_template('python-script-venv.j2') return template.render() diff --git a/piper/configurations.py b/piper/configurations.py index 6a7d248..2058c4a 100644 --- a/piper/configurations.py +++ b/piper/configurations.py @@ -3,7 +3,7 @@ class Configuration: piper_path = "piper" default_env = "virtualenv" name_venv = "venv_test" - api_host = "0.0.0.0" + number = 10 env = None diff --git a/piper/services/__init__.py b/piper/services/__init__.py index 68a3ed6..ba2803d 100644 --- a/piper/services/__init__.py +++ b/piper/services/__init__.py @@ -1,6 +1,6 @@ from pydantic import BaseModel -from piper.base.executors import FastAPIExecutor +from piper.base.executors import FastAPIExecutor, VirtualEnvExecutor class StringValue(BaseModel): @@ -15,3 +15,4 @@ def __init__(self, appender="TEST", **kwargs): async def run(self, message: StringValue) -> StringValue: return StringValue(value=(message.value + self.appender)) + From f3f98177a8517ccd90b9e1dc97e35cdcba1d6695 Mon Sep 17 00:00:00 2001 From: ArtemSmeta Date: Fri, 12 Aug 2022 08:38:47 +0300 Subject: [PATCH 03/50] fix struct --- piper/base/virtualenv/templates/bash-create-venv.j2 | 6 +++--- piper/utils/logger_utils.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/piper/base/virtualenv/templates/bash-create-venv.j2 b/piper/base/virtualenv/templates/bash-create-venv.j2 index ccd4140..6773b49 100644 --- a/piper/base/virtualenv/templates/bash-create-venv.j2 +++ b/piper/base/virtualenv/templates/bash-create-venv.j2 @@ -1,12 +1,12 @@ #!/usr/bin/env bash -NAMEVENV={{ name_path }}/{{ name_venv }} +NAMEVENV={{ name_path }}{{ name_venv }} pip3 install virtualenv python3 -m virtualenv $NAMEVENV source $NAMEVENV/bin/activate -pip3 install -r {{ name_path }}/requirements.txt +pip3 install -r {{ name_path }}requirements.txt -python3 {{ name_path }}/main.py {{ number }} +python3 {{ name_path }}main.py {{ number }} diff --git a/piper/utils/logger_utils.py b/piper/utils/logger_utils.py index 1d60f7a..dddecf8 100644 --- a/piper/utils/logger_utils.py +++ b/piper/utils/logger_utils.py @@ -10,7 +10,7 @@ handler.setFormatter(formatter) logger.addHandler(handler) -fh = logging.FileHandler('info.log') +fh = logging.FileHandler('piper_base_log.log') fh.setLevel(logging.DEBUG) fh.setFormatter(formatter) logger.addHandler(fh) From 7c163598d022dba03c14f947e317270f5c867b4a Mon Sep 17 00:00:00 2001 From: ArtemSmeta Date: Fri, 12 Aug 2022 09:49:26 +0300 Subject: [PATCH 04/50] create tests for main func in virtualenv logic --- piper/base/executors.py | 39 +++++++++++++++++++ .../virtualenv/templates/bash-create-tests.j2 | 6 +++ .../templates/python-script-tests.j2 | 8 ++++ piper/base/virtualenv/utils.py | 30 ++++++++++++++ 4 files changed, 83 insertions(+) create mode 100644 piper/base/virtualenv/templates/bash-create-tests.j2 create mode 100644 piper/base/virtualenv/templates/python-script-tests.j2 diff --git a/piper/base/executors.py b/piper/base/executors.py index 99e5dab..e2d8b79 100644 --- a/piper/base/executors.py +++ b/piper/base/executors.py @@ -1,4 +1,5 @@ import inspect +import os import subprocess import sys import time @@ -225,6 +226,12 @@ def __init__(self): number=number, ) + VirtualEnvExecutor.create_files_for_tests( + path=project_output_path, + name_venv=name_venv, + number=number, + ) + def create_files_for_venv( self, path: str, @@ -251,3 +258,35 @@ def create_files_for_venv( process_chmod = subprocess.run(f'chmod +x {path}create_venv.sh', shell=True) process_run = subprocess.run(f'{path}create_venv.sh', shell=True) + + @staticmethod + def create_files_for_tests( + path: str, + name_venv: str, + number: int, + ): + logger.info('VirtualEnvExecutor create_files_for_tests()') + + with open(f"{path}/__init__.py", "w") as output: + pass + + tests_directory = f"{path}/tests" + if not os.path.exists(tests_directory): + os.makedirs(tests_directory) + + with open(f"{path}/tests/__init__.py", "w") as output: + pass + + venv_python_image = VenvPython( + name_path=path, + name_venv=name_venv, + number=number, + ) + + test_main = venv_python_image.render_tests_python() + with open(f"{path}/tests/test_main.py", "w") as output: + output.write(test_main) + + test_bash = venv_python_image.render_tests_bash() + with open(f"{path}/test_venv.sh", "w") as output: + output.write(test_bash) diff --git a/piper/base/virtualenv/templates/bash-create-tests.j2 b/piper/base/virtualenv/templates/bash-create-tests.j2 new file mode 100644 index 0000000..6cac142 --- /dev/null +++ b/piper/base/virtualenv/templates/bash-create-tests.j2 @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +source {{ name_venv }}/bin/activate +pip3 install pytest + +python3 -m pytest \ No newline at end of file diff --git a/piper/base/virtualenv/templates/python-script-tests.j2 b/piper/base/virtualenv/templates/python-script-tests.j2 new file mode 100644 index 0000000..6276b5c --- /dev/null +++ b/piper/base/virtualenv/templates/python-script-tests.j2 @@ -0,0 +1,8 @@ +import pytest + +from piper_new_out.main import sum_factorial + + +def test_base_func_from_main(): + res_from_main = sum_factorial({{ number }}) + assert res_from_main == 4037913 diff --git a/piper/base/virtualenv/utils.py b/piper/base/virtualenv/utils.py index 96787e3..d77d84b 100644 --- a/piper/base/virtualenv/utils.py +++ b/piper/base/virtualenv/utils.py @@ -47,3 +47,33 @@ def render_venv_python(): lstrip_blocks=True) template = jinja_env.get_template('python-script-venv.j2') return template.render() + + def render_tests_bash(self): + """ + Render bash script for create and activate venv + """ + logger.info('Render bash script for create and activate venv') + + template_dir = os.path.join(os.path.dirname(__file__), 'templates') + jinja_env = jinja2.Environment(loader=jinja2.FileSystemLoader(template_dir), + trim_blocks=True, + lstrip_blocks=True) + template = jinja_env.get_template('bash-create-tests.j2') + return template.render( + name_venv=self.name_venv, + ) + + def render_tests_python(self): + """ + Render bash script for create and activate venv + """ + logger.info('Render bash script for create and activate venv') + + template_dir = os.path.join(os.path.dirname(__file__), 'templates') + jinja_env = jinja2.Environment(loader=jinja2.FileSystemLoader(template_dir), + trim_blocks=True, + lstrip_blocks=True) + template = jinja_env.get_template('python-script-tests.j2') + return template.render( + number=self.number, + ) From 8c60aa31040d4f32414ad3c13d4c8c231a045a9e Mon Sep 17 00:00:00 2001 From: ArtemSmeta Date: Fri, 12 Aug 2022 14:00:31 +0300 Subject: [PATCH 05/50] fix sctructure for context manager VirtualEnv. Create nel executor file for virtualenv --- main.py | 9 +-- piper/base/executors.py | 98 ++----------------------- piper/base/virtualenv/venv_executors.py | 94 ++++++++++++++++++++++++ piper/envs/__init__.py | 17 +++-- 4 files changed, 112 insertions(+), 106 deletions(-) create mode 100644 piper/base/virtualenv/venv_executors.py diff --git a/main.py b/main.py index db1027e..86d6126 100644 --- a/main.py +++ b/main.py @@ -1,9 +1,4 @@ -import asyncio - -from piper.base.executors import VirtualEnvExecutor from piper.envs import VirtualEnv -from piper.services import StringValue, TestMessageAdder - # if __name__ == '__main__': # loop = asyncio.get_event_loop() @@ -21,4 +16,6 @@ if __name__ == '__main__': with VirtualEnv() as env: - adder = VirtualEnvExecutor() + env.copy_struct_project() + env.create_files_for_venv() + env.create_files_for_tests() diff --git a/piper/base/executors.py b/piper/base/executors.py index e2d8b79..e54f24b 100644 --- a/piper/base/executors.py +++ b/piper/base/executors.py @@ -1,6 +1,4 @@ import inspect -import os -import subprocess import sys import time from abc import abstractmethod @@ -12,16 +10,14 @@ from pydantic import BaseModel from piper.base.backend.utils import render_fast_api_backend -from piper.base.virtualenv.utils import VenvPython from piper.configurations import get_configuration -from piper.envs import get_env, is_current_env, is_docker_env, is_virtual_env +from piper.envs import get_env, is_current_env, is_docker_env from piper.utils import docker_utils as du from piper.utils.logger_utils import logger class BaseExecutor: - def scripts(self): - return {"service": inspect.getfile(self.__class__)} + pass class LocalExecutor: @@ -181,6 +177,9 @@ def __init__(self, port: int = 8080, **service_kwargs): super().__init__('localhost', port, self.base_handler) + def scripts(self): + return {"service": inspect.getfile(self.__class__)} + def rm_container(self): if self.container: self.container.remove(force=True) @@ -203,90 +202,3 @@ def create_fast_api_files(self, path: str, **service_kwargs): "--preload --timeout 120 " with open(f"{path}/run.sh", "w") as output: output.write(gunicorn) - - -class VirtualEnvExecutor(BaseExecutor): - requirements = ["gunicorn", "fastapi", "uvicorn", "aiohttp", "docker", "Jinja2", "pydantic", "loguru"] - - def __init__(self): - if is_virtual_env(): - logger.info('VirtualEnvExecutor init with is_virtual_env()') - - cfg = get_configuration() - project_output_path = cfg.path - name_venv = cfg.name_venv - number = cfg.number - - copy_piper(project_output_path) - copy_scripts(project_output_path, self.scripts()) - - self.create_files_for_venv( - path=project_output_path, - name_venv=name_venv, - number=number, - ) - - VirtualEnvExecutor.create_files_for_tests( - path=project_output_path, - name_venv=name_venv, - number=number, - ) - - def create_files_for_venv( - self, - path: str, - name_venv: str, - number: int, - ): - logger.info('VirtualEnvExecutor create_fast_api_files_venv()') - - venv_python_image = VenvPython( - name_path=path, - name_venv=name_venv, - number=number, - ) - - venv_main = venv_python_image.render_venv_python() - with open(f"{path}/main.py", "w") as output: - output.write(venv_main) - - venv_bash = venv_python_image.render_venv_bash() - with open(f"{path}/create_venv.sh", "w") as output: - output.write(venv_bash) - - write_requirements(path, self.requirements) - - process_chmod = subprocess.run(f'chmod +x {path}create_venv.sh', shell=True) - process_run = subprocess.run(f'{path}create_venv.sh', shell=True) - - @staticmethod - def create_files_for_tests( - path: str, - name_venv: str, - number: int, - ): - logger.info('VirtualEnvExecutor create_files_for_tests()') - - with open(f"{path}/__init__.py", "w") as output: - pass - - tests_directory = f"{path}/tests" - if not os.path.exists(tests_directory): - os.makedirs(tests_directory) - - with open(f"{path}/tests/__init__.py", "w") as output: - pass - - venv_python_image = VenvPython( - name_path=path, - name_venv=name_venv, - number=number, - ) - - test_main = venv_python_image.render_tests_python() - with open(f"{path}/tests/test_main.py", "w") as output: - output.write(test_main) - - test_bash = venv_python_image.render_tests_bash() - with open(f"{path}/test_venv.sh", "w") as output: - output.write(test_bash) diff --git a/piper/base/virtualenv/venv_executors.py b/piper/base/virtualenv/venv_executors.py new file mode 100644 index 0000000..1bef436 --- /dev/null +++ b/piper/base/virtualenv/venv_executors.py @@ -0,0 +1,94 @@ +import inspect +import os +import subprocess +from typing import Dict + +from piper.base.virtualenv.utils import VenvPython +from piper.configurations import get_configuration +from piper.utils.logger_utils import logger + + +def copy_piper(path: str): + cfg = get_configuration() + from distutils.dir_util import copy_tree + copy_tree(cfg.piper_path, f"{path}/piper") + + +def copy_scripts(path: str, scripts: Dict[str, str]): + for script_name, script_path in scripts.items(): + with open(f"{path}/{script_name}.py", "w") as output: + with open(script_path, "r") as current_file: + output.write(current_file.read()) + + +def write_requirements(path, requirements): + with open(f"{path}/requirements.txt", "w") as output: + output.write("\n".join(requirements)) + + +class VirtualEnvExecutor: + requirements = ["gunicorn", "fastapi", "uvicorn", "aiohttp", "docker", "Jinja2", "pydantic", "loguru"] + + def __init__(self): + logger.info('VirtualEnvExecutor init with is_virtual_env()') + + cfg = get_configuration() + self.project_output_path = cfg.path + self.name_venv = cfg.name_venv + self.number = cfg.number + + def scripts(self): + return {"service": inspect.getfile(self.__class__)} + + def copy_struct_project(self): + copy_piper(self.project_output_path) + copy_scripts(self.project_output_path, self.scripts()) + + def create_files_for_venv(self): + logger.info('VirtualEnvExecutor create_fast_api_files_venv()') + + venv_python_image = VenvPython( + name_path=self.project_output_path, + name_venv=self.name_venv, + number=self.number, + ) + + venv_main = venv_python_image.render_venv_python() + with open(f"{self.project_output_path}/main.py", "w") as output: + output.write(venv_main) + + venv_bash = venv_python_image.render_venv_bash() + with open(f"{self.project_output_path}/create_venv.sh", "w") as output: + output.write(venv_bash) + + write_requirements(self.project_output_path, self.requirements) + + process_chmod = subprocess.run(f'chmod +x {self.project_output_path}create_venv.sh', shell=True) + process_run = subprocess.run(f'{self.project_output_path}create_venv.sh', shell=True) + + def create_files_for_tests(self): + logger.info('VirtualEnvExecutor create_files_for_tests()') + + with open(f"{self.project_output_path}/__init__.py", "w") as output: + pass + + tests_directory = f"{self.project_output_path}/tests" + if not os.path.exists(tests_directory): + os.makedirs(tests_directory) + + with open(f"{self.project_output_path}/tests/__init__.py", "w") as output: + pass + + venv_python_image = VenvPython( + name_path=self.project_output_path, + name_venv=self.name_venv, + number=self.number, + ) + + test_main = venv_python_image.render_tests_python() + with open(f"{self.project_output_path}/tests/test_main.py", "w") as output: + output.write(test_main) + + test_bash = venv_python_image.render_tests_bash() + with open(f"{self.project_output_path}/test_venv.sh", "w") as output: + output.write(test_bash) diff --git a/piper/envs/__init__.py b/piper/envs/__init__.py index 0d78adb..d9055c2 100644 --- a/piper/envs/__init__.py +++ b/piper/envs/__init__.py @@ -1,4 +1,6 @@ +from piper.base.virtualenv.venv_executors import VirtualEnvExecutor from piper.configurations import get_configuration +from piper.utils.logger_utils import logger cfg = get_configuration() @@ -39,33 +41,34 @@ def __exit__(self, *args, **kws): set_env(self._old_environment) -class VirtualEnv: +class CurrentEnv: def __init__(self): pass def __enter__(self): - print("Entering VirtualEnv") + print("Entering CurrentEnv") self._old_environment = get_env() set_env(self) def __exit__(self, *args, **kws): - print("Exiting VirtualEnv") + print("Exiting CurrentEnv") set_env(self._old_environment) -class CurrentEnv: +class VirtualEnv: def __init__(self): - pass + self.__resource = VirtualEnvExecutor() def __enter__(self): - print("Entering CurrentEnv") + logger.info("Entering VirtualEnv") self._old_environment = get_env() set_env(self) + return self.__resource def __exit__(self, *args, **kws): - print("Exiting CurrentEnv") + logger.info("Exiting VirtualEnv") set_env(self._old_environment) From 0f9e8c1cbe47c8520517d3bb5c175afe6d9fd46d Mon Sep 17 00:00:00 2001 From: ArtemSmeta Date: Wed, 10 Aug 2022 16:11:14 +0300 Subject: [PATCH 06/50] add params to py and sh scripts, refactor structure and methods --- .../base/virtualenv/templates/default-venv.j2 | 12 +++++++++ .../base/virtualenv/templates/python-venv.j2 | 27 +++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 piper/base/virtualenv/templates/default-venv.j2 create mode 100644 piper/base/virtualenv/templates/python-venv.j2 diff --git a/piper/base/virtualenv/templates/default-venv.j2 b/piper/base/virtualenv/templates/default-venv.j2 new file mode 100644 index 0000000..5e9178b --- /dev/null +++ b/piper/base/virtualenv/templates/default-venv.j2 @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +NAMEVENV={{ name_path }}/{{ name_venv }} + +pip3 install virtualenv + +python3 -m virtualenv $NAMEVENV +source $NAMEVENV/bin/activate + +pip3 install -r {{ name_path }}/requirements.txt + +python3 {{ name_path }}/main.py {{ api_host }} {{ api_port }} diff --git a/piper/base/virtualenv/templates/python-venv.j2 b/piper/base/virtualenv/templates/python-venv.j2 new file mode 100644 index 0000000..834790d --- /dev/null +++ b/piper/base/virtualenv/templates/python-venv.j2 @@ -0,0 +1,27 @@ +import argparse + +import uvicorn +from fastapi import FastAPI, Request, status + +app = FastAPI() + +@app.get("/") +async def root(): + return {"message": "Hello World"} + + +@app.post('/health_check', status_code=status.HTTP_200_OK) +async def hl(): + return {"message": "health check"} + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("host", type=str) + parser.add_argument("port", type=int) + args = parser.parse_args() + if args.host and args.port: + uvicorn.run(app, host=args.host, port=args.port) + else: + print('No positional arguments in cli') + uvicorn.run(app, host='0.0.0.0', port=8080) From 71686a86283e9d03492927d1588e225eaaefc84f Mon Sep 17 00:00:00 2001 From: ArtemSmeta Date: Fri, 26 Aug 2022 11:02:55 +0300 Subject: [PATCH 07/50] refactor code, add gitflow process to push --- .github/workflows/test.yaml | 32 ++++++++++++++ main.py | 31 +++++++------- piper/base/executors.py | 21 +++++----- .../base/virtualenv/templates/default-venv.j2 | 12 ------ .../base/virtualenv/templates/python-venv.j2 | 27 ------------ piper/configurations.py | 11 +++-- piper/services/__init__.py | 42 ++++++++++--------- piper/utils/docker_utils.py | 5 ++- piper/utils/tesrct_utils.py | 5 ++- tests/PiperOperator.py | 3 +- tests/container_test.py | 16 +++---- tests/tsrct_test.py | 19 +++++---- tests/use_case_folder_processing.py | 23 +++++----- 13 files changed, 127 insertions(+), 120 deletions(-) create mode 100644 .github/workflows/test.yaml delete mode 100644 piper/base/virtualenv/templates/default-venv.j2 delete mode 100644 piper/base/virtualenv/templates/python-venv.j2 diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml new file mode 100644 index 0000000..2ae8a53 --- /dev/null +++ b/.github/workflows/test.yaml @@ -0,0 +1,32 @@ +name: Python package + +on: [push] + +jobs: + build: + + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.9"] + + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install flake8 pytest + if [ -f requirements.txt ]; then pip install -r requirements.txt; fi + - name: Lint with flake8 + run: | + # stop the build if there are Python syntax errors or undefined names + flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics + # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide + flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics + - name: Test with pytest + run: | + pytest \ No newline at end of file diff --git a/main.py b/main.py index 7ca8927..3f4d630 100644 --- a/main.py +++ b/main.py @@ -1,12 +1,15 @@ -from piper.services import TestMessageAdder, StringValue, TesseractRecognizer, SpacyNER -from piper.envs import CurrentEnv, DockerEnv, VirtualEnv -from piper.configurations import get_configuration -import time import asyncio import sys -from piper.utils import tesrct_utils as tu +import time from loguru import logger + +from piper.configurations import get_configuration +from piper.envs import CurrentEnv, DockerEnv, VirtualEnv +# from piper.services import (SpacyNER, StringValue, TesseractRecognizer, +# TestMessageAdder) +# from piper.utils import tesrct_utils as tu + logger.add("file.log", level="INFO", backtrace=True, diagnose=True, rotation='5 MB') if __name__ == '__main__': @@ -24,15 +27,15 @@ # print(result) # adder.rm_container() - logger.info(f'main here {time.time()}') - cfg = get_configuration() - loop = asyncio.get_event_loop() - with DockerEnv() as env: - # object created - recognizer = TesseractRecognizer(port=cfg.docker_app_port) - - result = loop.run_until_complete(recognizer()) - logger.info(f'result of recognition is {result}') + # logger.info(f'main here {time.time()}') + # cfg = get_configuration() + # loop = asyncio.get_event_loop() + # with DockerEnv() as env: + # # object created + # recognizer = TesseractRecognizer(port=cfg.docker_app_port) + # + # result = loop.run_until_complete(recognizer()) + # logger.info(f'result of recognition is {result}') with VirtualEnv() as env: env.copy_struct_project() diff --git a/piper/base/executors.py b/piper/base/executors.py index ee6ab47..a69294e 100644 --- a/piper/base/executors.py +++ b/piper/base/executors.py @@ -1,24 +1,25 @@ -from abc import abstractmethod, ABC -from distutils.command.config import config +import inspect import os +import sys import time +from abc import ABC, abstractmethod +from distutils.command.config import config from typing import Dict -import inspect import aiohttp -from loguru import logger import docker -from pydantic import BaseModel #, BytesObject, ListOfStringsObject +import requests +from loguru import logger +from pydantic import BaseModel # , BytesObject, ListOfStringsObject -from piper.base.docker import PythonImage # from piper.base.docker import PythonTesseractImage -from piper.base.backend.utils import render_fast_api_backend, render_fast_api_tsrct_backend -from piper.envs import is_docker_env, is_current_env, get_env +from piper.base.backend.utils import (render_fast_api_backend, + render_fast_api_tsrct_backend) +from piper.base.docker import PythonImage from piper.configurations import get_configuration +from piper.envs import get_env, is_current_env, is_docker_env from piper.utils import docker_utils as du -import requests -import sys class BaseExecutor: pass diff --git a/piper/base/virtualenv/templates/default-venv.j2 b/piper/base/virtualenv/templates/default-venv.j2 deleted file mode 100644 index 5e9178b..0000000 --- a/piper/base/virtualenv/templates/default-venv.j2 +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env bash - -NAMEVENV={{ name_path }}/{{ name_venv }} - -pip3 install virtualenv - -python3 -m virtualenv $NAMEVENV -source $NAMEVENV/bin/activate - -pip3 install -r {{ name_path }}/requirements.txt - -python3 {{ name_path }}/main.py {{ api_host }} {{ api_port }} diff --git a/piper/base/virtualenv/templates/python-venv.j2 b/piper/base/virtualenv/templates/python-venv.j2 deleted file mode 100644 index 834790d..0000000 --- a/piper/base/virtualenv/templates/python-venv.j2 +++ /dev/null @@ -1,27 +0,0 @@ -import argparse - -import uvicorn -from fastapi import FastAPI, Request, status - -app = FastAPI() - -@app.get("/") -async def root(): - return {"message": "Hello World"} - - -@app.post('/health_check', status_code=status.HTTP_200_OK) -async def hl(): - return {"message": "health check"} - - -if __name__ == "__main__": - parser = argparse.ArgumentParser() - parser.add_argument("host", type=str) - parser.add_argument("port", type=int) - args = parser.parse_args() - if args.host and args.port: - uvicorn.run(app, host=args.host, port=args.port) - else: - print('No positional arguments in cli') - uvicorn.run(app, host='0.0.0.0', port=8080) diff --git a/piper/configurations.py b/piper/configurations.py index 950edf0..d611196 100644 --- a/piper/configurations.py +++ b/piper/configurations.py @@ -1,7 +1,7 @@ class Configuration: - path = "/Users/olegsokolov/PycharmProjects/piper/applications" - path = "/home/pavel/repo/piper_new_out/" - test_path = "/home/pavel/repo/piper_test_out/" + # path = "/Users/olegsokolov/PycharmProjects/piper/applications" + path = "./piper_new_out/" + test_path = "./piper_test_out/" piper_path = "piper" default_env = "docker" docker_app_port = 8788 @@ -17,7 +17,7 @@ class Configuration: # docker start time and counter docker_wait_on_iter = 0.5 - docker_n_iters = 20 + docker_n_iters = 20 n_gunicorn_workers = 1 @@ -58,8 +58,6 @@ class Configuration: ts_config_row = r'--oem 1 --psm 11' ts_config = {'ts_lang': 'eng', 'ts_config_row': r'--oem 1 --psm 11'} - - # models and where to find them spacy_models = set( [ @@ -70,5 +68,6 @@ class Configuration: ) model_path = '/app/models' + def get_configuration(): return Configuration diff --git a/piper/services/__init__.py b/piper/services/__init__.py index 56bc76c..8bd8650 100644 --- a/piper/services/__init__.py +++ b/piper/services/__init__.py @@ -1,27 +1,30 @@ -from piper.base.executors import FastAPIExecutor, FastAPITesseractExecutor, VirtualEnvExecutor -from fastapi.responses import JSONResponse - -from pydantic import BaseModel -from loguru import logger import json -import spacy import sys + +import spacy +from fastapi.responses import JSONResponse +from loguru import logger +from pydantic import BaseModel + +from piper.base.executors import FastAPIExecutor, FastAPITesseractExecutor from piper.configurations import get_configuration from piper.utils import tesrct_utils as tu - logger.add("file.log", level="INFO", backtrace=True, diagnose=True, rotation='5 MB') class StringValue(BaseModel): value: str + class BytesObject(BaseModel): value: bytes + class ListOfStringsObject(BaseModel): value: list + class TestMessageAdder(FastAPIExecutor): def __init__(self, appender="TEST", **kwargs): @@ -30,18 +33,19 @@ def __init__(self, appender="TEST", **kwargs): async def run(self, message: StringValue) -> StringValue: return StringValue(value=(message.value + self.appender)) - + class TesseractRecognizer(FastAPITesseractExecutor): ''' Tesseract OCR implementation service ''' + def __init__(self, **kwargs): super().__init__(**kwargs) cfg = get_configuration() self.ts_config = cfg.ts_config - def set_config_(self, config_): + def set_config_(self, config_): if 'ts_lang' not in config_.keys(): logger.error(f'tesseract config keys must contains ts_lang, keys {config_.keys()}') logger.error(f'tesseract config did not set') @@ -59,9 +63,9 @@ async def sconfig(self, conf) -> ListOfStringsObject: # conf = '12' logger.info(f'request to set config to {conf}') self.set_config_(conf) - return JSONResponse(content={'text':'OK'}) - - async def recognize(self, file_content : BytesObject, suf: str) -> ListOfStringsObject: + return JSONResponse(content={'text': 'OK'}) + + async def recognize(self, file_content: BytesObject, suf: str) -> ListOfStringsObject: logger.info(f'file_content {type(file_content)}, file suffix is {suf}') logger.info(f'current tesseract config is {self.ts_config}') @@ -69,13 +73,14 @@ async def recognize(self, file_content : BytesObject, suf: str) -> ListOfStrings logger.info(f'img_bytes_handler return {type(text_dict)} object') return JSONResponse(content=text_dict) - async def ner(self, txt: str): + async def ner(self, txt: str): sn = SpacyNER() if sn.available_models and len(sn.available_models) > 0: dummy_model = sn.available_models[0] sn.set_model(dummy_model) return JSONResponse(content=sn.extract_named_ents(txt)) + # class ModelNameNotInList(BaseException): # def __init__(self, msg): # # pass @@ -86,6 +91,7 @@ class SpacyNER(): ''' Spacy NER service ''' + def __init__(self): cfg = get_configuration() self.available_models = set() @@ -102,26 +108,24 @@ def __init__(self): logger.error(f'catch exception {e}') sys.exit() - def set_model(self, cur_model): if cur_model not in self.available_models: logger.error(f'there is not {cur_model} in available_models set: {self.available_models}') self.nlp = None raise ValueError(f'there is not {cur_model} in available_models set: {self.available_models}') - try: + try: nlp = spacy.load(cur_model) # nlp = spacy.load('en_default') logger.info('spacy nlp object created with model {cur_model}') except Exception as e: logger.error(f'catch exception {e}') - if isinstance(e, OSError): + if isinstance(e, OSError): logger.error(f'you must download spacy model {cur_model}') nlp = None logger.info('spacy nlp object DID NOT create') - - self.nlp = nlp + self.nlp = nlp def extract_named_ents(self, txt: str): logger.debug(f'got data type {type(txt)} and data <<{txt}>> for NER') @@ -129,7 +133,7 @@ def extract_named_ents(self, txt: str): res = [] doc = self.nlp(txt) for ent in doc.ents: - res.append((ent.text, ent.label_)) + res.append((ent.text, ent.label_)) return JSONResponse(content=res) else: logger.error(f'nlp object didn`t create. you should use set_model(model_name)') diff --git a/piper/utils/docker_utils.py b/piper/utils/docker_utils.py index e5236ad..e46857c 100644 --- a/piper/utils/docker_utils.py +++ b/piper/utils/docker_utils.py @@ -1,6 +1,7 @@ -import docker -import time import sys +import time + +import docker from loguru import logger from piper.configurations import get_configuration diff --git a/piper/utils/tesrct_utils.py b/piper/utils/tesrct_utils.py index 1d17577..eb56544 100644 --- a/piper/utils/tesrct_utils.py +++ b/piper/utils/tesrct_utils.py @@ -1,9 +1,10 @@ import cv2 -import pytesseract import numpy as np -from loguru import logger import pdf2image +import pytesseract import requests +from loguru import logger + from piper.configurations import get_configuration cfg = get_configuration() diff --git a/tests/PiperOperator.py b/tests/PiperOperator.py index 56761d7..199b615 100644 --- a/tests/PiperOperator.py +++ b/tests/PiperOperator.py @@ -1,8 +1,9 @@ -import requests import json import os import sys from pprint import pprint + +import requests from loguru import logger # root_dir = os.path.realpath(os.path.pardir) diff --git a/tests/container_test.py b/tests/container_test.py index bd392cd..396205e 100644 --- a/tests/container_test.py +++ b/tests/container_test.py @@ -1,16 +1,18 @@ -import docker +import asyncio import os import sys -import asyncio + +import docker + root_dir = os.path.join(os.path.realpath(os.path.pardir), 'piper') sys.path.insert(1, root_dir) -from piper.utils import docker_utils as du -from piper.envs import CurrentEnv -from piper.envs import is_docker_env -from piper.configurations import get_configuration from piper.base.executors import copy_piper, copy_scripts -from piper.services import TestMessageAdder, StringValue +from piper.configurations import get_configuration +from piper.envs import CurrentEnv, is_docker_env +from piper.services import StringValue, TestMessageAdder +from piper.utils import docker_utils as du + def test_start_container(): cfg = get_configuration() diff --git a/tests/tsrct_test.py b/tests/tsrct_test.py index 3e55857..156483b 100644 --- a/tests/tsrct_test.py +++ b/tests/tsrct_test.py @@ -1,21 +1,22 @@ +import asyncio import os import sys -import asyncio + import requests + root_dir = os.path.join(os.path.realpath(os.path.pardir), 'piper') sys.path.insert(1, root_dir) -from piper.utils import docker_utils as du -from piper.utils import tesrct_utils as tu - -from piper.envs import DockerEnv -from piper.envs import is_docker_env -from piper.configurations import get_configuration -from piper.services import TesseractRecognizer, StringValue -from pathlib import Path import os +from pathlib import Path + import pytest +from piper.configurations import get_configuration +from piper.envs import DockerEnv, is_docker_env +from piper.services import StringValue, TesseractRecognizer +from piper.utils import docker_utils as du +from piper.utils import tesrct_utils as tu main_app_url = f'http://localhost:8788' file_path = Path(__file__).parent diff --git a/tests/use_case_folder_processing.py b/tests/use_case_folder_processing.py index 136a5f3..b5cd69c 100644 --- a/tests/use_case_folder_processing.py +++ b/tests/use_case_folder_processing.py @@ -1,24 +1,25 @@ +import asyncio import os import sys -import asyncio + import requests + root_dir = os.path.join(os.path.realpath(os.path.pardir), 'piper') sys.path.insert(1, root_dir) -from piper.utils import docker_utils as du -from piper.utils import tesrct_utils as tu - -from piper.envs import DockerEnv -from piper.envs import is_docker_env -from piper.configurations import get_configuration -from piper.services import TesseractRecognizer, StringValue -from pathlib import Path -import os -import pytest import json +import os +from pathlib import Path +import pytest from PiperOperator import * +from piper.configurations import get_configuration +from piper.envs import DockerEnv, is_docker_env +from piper.services import StringValue, TesseractRecognizer +from piper.utils import docker_utils as du +from piper.utils import tesrct_utils as tu + # service url main_app_url = f'http://localhost:8788' From d2de901190d49f7aee8f393effcc81bc777b9fe3 Mon Sep 17 00:00:00 2001 From: ArtemSmeta Date: Fri, 26 Aug 2022 11:08:09 +0300 Subject: [PATCH 08/50] fix structure test --- tests/PiperOperator.py | 24 ++++++++++-------------- tests/__init__.py | 0 tests/running_piper_test.py | 23 +++++++++++++++-------- tests/tsrct_test.py | 23 +++++++++++------------ tests/use_case_folder_processing.py | 3 +-- 5 files changed, 37 insertions(+), 36 deletions(-) create mode 100644 tests/__init__.py diff --git a/tests/PiperOperator.py b/tests/PiperOperator.py index 199b615..85efc04 100644 --- a/tests/PiperOperator.py +++ b/tests/PiperOperator.py @@ -15,23 +15,23 @@ HEADERS = {"Content-Type": "application/json"} NER_RESPONSE_KEY = 'body' + class PiperOperatorException(BaseException): def __init__(self, msg): pass # logger.exception(msg) - class FileLoadException(PiperOperatorException): def __init__(self, fn): self.fn = fn - super().__init__(f'file {fn} can`t be loaded') + super().__init__(f'file {fn} can`t be loaded') class JSONGetKeyException(PiperOperatorException): def __init__(self, key): self.key = key - super().__init__(f'can`t get JSON key {key}') + super().__init__(f'can`t get JSON key {key}') class NoAvailableModelsException(PiperOperatorException): @@ -46,7 +46,8 @@ def get_data_by_key_from_response(cur_response, k): v = j.get(k) return v -def get_data_by_key_from_url(url, key, post=True, data=None, file_name=""): + +def get_data_by_key_from_url(url, key, post=True, data=None, file_name=""): try: if post: if file_name: @@ -68,7 +69,7 @@ def get_data_by_key_from_url(url, key, post=True, data=None, file_name=""): return val else: return cur_response - + else: cur_response = requests.get(url, headers=HEADERS, data=data) cur_response.raise_for_status() @@ -83,7 +84,7 @@ def get_data_by_key_from_url(url, key, post=True, data=None, file_name=""): logger.exception(f'can`t get key from response: {cjke}') except Exception as e: - logger.exception(f'error while processing url {url}: {e}') + logger.exception(f'error while processing url {url}: {e}') class PiperNLPWorker(): @@ -106,15 +107,14 @@ def __init__(self, base_url): # get named entitys from text url self.url_spacy_get_NE = f'{self.base_url}/extract_named_ents' - def get_available_ner_models(self): return get_data_by_key_from_url(self.url_spacy_all_models, 'available_models', post=False) def set_current_spacy_model(self, model): - return get_data_by_key_from_url(self.url_spacy_set_model, '', post=True, data=json.dumps({'model_name':model})) + return get_data_by_key_from_url(self.url_spacy_set_model, '', post=True, data=json.dumps({'model_name': model})) def get_named_ent_from_text(self, txt): - resp = get_data_by_key_from_url(self.url_spacy_get_NE, 'result', post=False, data=json.dumps({'txt':txt})) + resp = get_data_by_key_from_url(self.url_spacy_get_NE, 'result', post=False, data=json.dumps({'txt': txt})) logger.debug(f'url is {resp}, response is {resp}') if NER_RESPONSE_KEY in resp.keys(): named_ents = resp.get(NER_RESPONSE_KEY) @@ -138,9 +138,9 @@ def get_text_from_file(self, fn): def set_tesseract_config(self, conf): return get_data_by_key_from_url(self.url_tsrct_cfg, '', post=True, data=json.dumps(conf)) + if __name__ == '__main__': piper_worker = PiperNLPWorker('http://localhost:8788') - amodels = piper_worker.get_available_ner_models() print('all models', amodels) @@ -162,16 +162,12 @@ def set_tesseract_config(self, conf): logger.exception(e) # pprint(resp) - txt = piper_worker.get_text_from_file('/home/pavel/repo/piper_new/piper/tests/ocr_data.pdf') logger.info(f'txt {txt}') - ts_conf = dict() ts_conf['ts_lang'] = 'eng' ts_conf['ts_config_row'] = rf'--oem 1 --psm 6' resp = piper_worker.set_tesseract_config(ts_conf) logger.info(resp) - - diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/running_piper_test.py b/tests/running_piper_test.py index 0e6af40..2be6f1d 100644 --- a/tests/running_piper_test.py +++ b/tests/running_piper_test.py @@ -1,14 +1,18 @@ # pytest -vs tests/running_piper_test.py::TestDocker import requests +from piper.envs import VirtualEnv + main_app_url = f'http://localhost:8788' -class TestDocker(): - ''' + +class TestDocker: + """ Docker container API test. Methods: health_check run - ''' + """ + def test_health_check(self): url = f'{main_app_url}/health_check' print(url) @@ -29,10 +33,13 @@ def test_run(self): assert need_result == result.get('value') -class TestVenv(): - ''' +class TestVenv: + """ venv container API test. Methods: dummy - ''' - def test_dummy(self): - assert 1 / 0 \ No newline at end of file + """ + + with VirtualEnv() as env: + env.copy_struct_project() + env.create_files_for_venv() + env.create_files_for_tests() diff --git a/tests/tsrct_test.py b/tests/tsrct_test.py index 156483b..e196511 100644 --- a/tests/tsrct_test.py +++ b/tests/tsrct_test.py @@ -21,19 +21,20 @@ main_app_url = f'http://localhost:8788' file_path = Path(__file__).parent + # pytest -vs tests/tsrct_test.py::TestTesseract::test_recognizer -class TestTesseract(): - ''' +class TestTesseract: + """ Docker container API test. Methods: test_recognizer_jpg test_recognizer_pdf health_check - ''' + """ def test_recognizer_jpg(self): - ''' + """ jpg file recognize test - ''' + """ fn = file_path.joinpath('ocr_data.jpg') url = f'{main_app_url}/recognize' @@ -49,17 +50,16 @@ def test_recognizer_jpg(self): except Exception as e: pytest.raises(Exception) - def test_recognizer_pdf(self): - ''' + """ pdf file recognize test - ''' + """ fn = file_path.joinpath('ocr_data.pdf') url = f'{main_app_url}/recognize' result = tu.send_file_to_service(url, fn) print(result.status_code) - assert result.status_code == 200 + assert result.status_code == 200 try: data = result.json() print('data', data) @@ -67,11 +67,10 @@ def test_recognizer_pdf(self): except Exception as e: pytest.raises(Exception) - def test_health_check(self): - ''' + """ health check test - ''' + """ url = f'{main_app_url}/health_check' print(url) result = requests.post(url) diff --git a/tests/use_case_folder_processing.py b/tests/use_case_folder_processing.py index b5cd69c..02c408a 100644 --- a/tests/use_case_folder_processing.py +++ b/tests/use_case_folder_processing.py @@ -30,7 +30,6 @@ SOURCE_FOLDER = file_path OUTPUT_FOLDER = file_path.joinpath('out') - if __name__ == '__main__': cfg = get_configuration() @@ -43,7 +42,7 @@ ts_conf = dict() ts_conf['ts_lang'] = 'eng' - for oem in cfg.available_OEM: + for oem in cfg.available_OEM: for psm in cfg.available_PSM: # change tesseract config ts_conf['ts_config_row'] = rf'--oem {oem} --psm {psm}' From 86de483c3a7e49cd1b5bf1691b775f5bca524684 Mon Sep 17 00:00:00 2001 From: ArtemSmeta Date: Fri, 26 Aug 2022 11:22:11 +0300 Subject: [PATCH 09/50] fix test for TestVenv --- .github/workflows/test.yaml | 2 +- tests/running_piper_test.py | 16 +++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 2ae8a53..a4c42cb 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -29,4 +29,4 @@ jobs: flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - name: Test with pytest run: | - pytest \ No newline at end of file + pytest --verbose tests/running_piper_test.py::TestVenv diff --git a/tests/running_piper_test.py b/tests/running_piper_test.py index 2be6f1d..9a98eda 100644 --- a/tests/running_piper_test.py +++ b/tests/running_piper_test.py @@ -1,4 +1,10 @@ # pytest -vs tests/running_piper_test.py::TestDocker +from pathlib import Path +from shlex import split +from subprocess import check_call +from tempfile import TemporaryDirectory +from venv import create + import requests from piper.envs import VirtualEnv @@ -38,8 +44,8 @@ class TestVenv: venv container API test. Methods: dummy """ - - with VirtualEnv() as env: - env.copy_struct_project() - env.create_files_for_venv() - env.create_files_for_tests() + def test_dummy(self): + with VirtualEnv() as env: + env.copy_struct_project() + env.create_files_for_venv() + env.create_files_for_tests() From e536e9cc2d509674a7b15f74a73dcd472da908fc Mon Sep 17 00:00:00 2001 From: ArtemSmeta Date: Tue, 30 Aug 2022 09:14:11 +0300 Subject: [PATCH 10/50] add test from makefile --- .github/workflows/test.yaml | 3 +-- Makefile | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 Makefile diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index a4c42cb..4a0ccee 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -28,5 +28,4 @@ jobs: # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - name: Test with pytest - run: | - pytest --verbose tests/running_piper_test.py::TestVenv + run: make test diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..0415998 --- /dev/null +++ b/Makefile @@ -0,0 +1,16 @@ +SHELL:=/usr/bin/env bash + +.PHONY: lint +lint: + flake8 piper + +.PHONY: unit +unit: + pytest tests/running_piper_test.py::TestVenv + +.PHONY: package +package: + pip check + +.PHONY: test +test: package unit From 9b64d3de102537647ae6c95aaab3bfd93e99069b Mon Sep 17 00:00:00 2001 From: ArtemSmeta Date: Tue, 30 Aug 2022 09:15:39 +0300 Subject: [PATCH 11/50] add test from makefile --- .github/workflows/test.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 4a0ccee..eb40da4 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -27,5 +27,5 @@ jobs: flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - - name: Test with pytest - run: make test + - name: Test with makefile + run: make test \ No newline at end of file From 9d1e23e3e20db9fb1803f340ddf2d198b1678dfa Mon Sep 17 00:00:00 2001 From: ArtemSmeta Date: Tue, 30 Aug 2022 14:52:42 +0300 Subject: [PATCH 12/50] add docker compose fastapi, milvus logic in ComposeEnv --- main.py | 60 +----- piper/base/docker_compose/__init__.py | 0 .../base/docker_compose/compose_executors.py | 82 +++++++++ .../templates/bash-start-compose.j2 | 3 + .../templates/bash-stop-compose.j2 | 3 + .../templates/compose-services.j2 | 58 ++++++ .../docker_compose/templates/dockerfile.j2 | 8 + .../templates/python-script-fastapi.j2 | 171 ++++++++++++++++++ piper/base/docker_compose/utils.py | 86 +++++++++ piper/base/executors.py | 12 +- piper/configurations.py | 2 +- piper/envs/__init__.py | 25 +++ 12 files changed, 455 insertions(+), 55 deletions(-) create mode 100644 piper/base/docker_compose/__init__.py create mode 100644 piper/base/docker_compose/compose_executors.py create mode 100644 piper/base/docker_compose/templates/bash-start-compose.j2 create mode 100644 piper/base/docker_compose/templates/bash-stop-compose.j2 create mode 100644 piper/base/docker_compose/templates/compose-services.j2 create mode 100644 piper/base/docker_compose/templates/dockerfile.j2 create mode 100644 piper/base/docker_compose/templates/python-script-fastapi.j2 create mode 100644 piper/base/docker_compose/utils.py diff --git a/main.py b/main.py index 3f4d630..89c7c4c 100644 --- a/main.py +++ b/main.py @@ -1,58 +1,18 @@ -import asyncio import sys -import time from loguru import logger -from piper.configurations import get_configuration -from piper.envs import CurrentEnv, DockerEnv, VirtualEnv -# from piper.services import (SpacyNER, StringValue, TesseractRecognizer, -# TestMessageAdder) -# from piper.utils import tesrct_utils as tu +from piper.envs import ComposeEnv logger.add("file.log", level="INFO", backtrace=True, diagnose=True, rotation='5 MB') if __name__ == '__main__': - # cfg = get_configuration() - # loop = asyncio.get_event_loop() - # with CurrentEnv() as env: - # x = StringValue(value="hello, world") - # adder = TestMessageAdder(appender="!", port=cfg.docker_app_port) - # result = loop.run_until_complete(adder(x)) - # print(result) - - # x = StringValue(value="hello, world") - # adder = TestMessageAdder(appender="!", port=cfg.docker_app_port) - # result = loop.run_until_complete(adder(x)) - # print(result) - # adder.rm_container() - - # logger.info(f'main here {time.time()}') - # cfg = get_configuration() - # loop = asyncio.get_event_loop() - # with DockerEnv() as env: - # # object created - # recognizer = TesseractRecognizer(port=cfg.docker_app_port) - # - # result = loop.run_until_complete(recognizer()) - # logger.info(f'result of recognition is {result}') - - with VirtualEnv() as env: - env.copy_struct_project() - env.create_files_for_venv() - env.create_files_for_tests() - - # sys.exit() - - # sn = SpacyNER() - # txt = 'The Alraigo Incident occurred on 6th June 1983, when a lost British Royal Navy Sea Harrier fighter aircraft landed on the deck of a Spanish container ship.[1][2] Its pilot, Sub-lieutenant Ian Watson, was a junior Royal Navy Pilot undertaking his first NATO exercise from HMS Illustrious, which was operating off the coast of Portugal. Watson was launched in a pair of aircraft tasked with locating a French aircraft carrier under combat conditions including radio-silence and radar switched off.' - # # switch models - # for avalable_model in sn.available_models: - # logger.info(f'current model is {avalable_model}') - # sn.set_model(avalable_model) - # result1 = sn.extract_named_ents(txt) - # if result1: - # result1_str = "\n".join(str(x) for x in result1) - # logger.info(f'result of NER for model {avalable_model} is {result1_str}') - # else: - # logger.info(f'module didn`t get NER data') + with ComposeEnv() as env: + try: + env.copy_struct_project() + env.create_files_for_compose() + env.start_compose() + except KeyboardInterrupt: + logger.info('Ctrl+C pressed. Except KeyboardInterrupt.') + env.stop_compose() + sys.exit(1) diff --git a/piper/base/docker_compose/__init__.py b/piper/base/docker_compose/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/piper/base/docker_compose/compose_executors.py b/piper/base/docker_compose/compose_executors.py new file mode 100644 index 0000000..e393bdd --- /dev/null +++ b/piper/base/docker_compose/compose_executors.py @@ -0,0 +1,82 @@ +import inspect +import os +import subprocess +from typing import Dict + +from base.docker_compose.utils import ComposeServices + +from piper.base.virtualenv.utils import VenvPython +from piper.configurations import get_configuration +from piper.utils.logger_utils import logger + + +def copy_piper(path: str): + cfg = get_configuration() + from distutils.dir_util import copy_tree + copy_tree(cfg.piper_path, f"{path}/piper") + + +def copy_scripts(path: str, scripts: Dict[str, str]): + for script_name, script_path in scripts.items(): + with open(f"{path}/{script_name}.py", "w") as output: + with open(script_path, "r") as current_file: + output.write(current_file.read()) + + +def write_requirements(path, requirements): + with open(f"{path}/requirements.txt", "w") as output: + output.write("\n".join(requirements)) + + +class ComposeExecutor: + requirements = ["gunicorn", "fastapi", "uvicorn", "aiohttp", "Jinja2", "pydantic", "pymilvus", "numpy", "loguru"] + + def __init__(self): + logger.info('ComposeExecutor init with is_compose_env()') + + cfg = get_configuration() + self.project_output_path = cfg.path + + def scripts(self): + return {"service": inspect.getfile(self.__class__)} + + def copy_struct_project(self): + copy_piper(self.project_output_path) + copy_scripts(self.project_output_path, self.scripts()) + + def create_files_for_compose(self): + logger.info('ComposeExecutor create_fast_api_files_venv()') + + venv_python_image = ComposeServices( + name_path=self.project_output_path, + ) + + main_fastapi = venv_python_image.render_script_fastapi() + with open(f"{self.project_output_path}/main.py", "w") as output: + output.write(main_fastapi) + + docker_compose = venv_python_image.render_compose_services() + with open(f"{self.project_output_path}/docker-compose.yaml", "w") as output: + output.write(docker_compose) + + bash_start = venv_python_image.render_bash_start() + with open(f"{self.project_output_path}/bash-start.sh", "w") as output: + output.write(bash_start) + + bash_stop = venv_python_image.render_bash_stop() + with open(f"{self.project_output_path}/bash-stop.sh", "w") as output: + output.write(bash_stop) + + dockerfile = venv_python_image.render_dockerfile() + with open(f"{self.project_output_path}/Dockerfile", "w") as output: + output.write(dockerfile) + + write_requirements(self.project_output_path, self.requirements) + + def start_compose(self): + process_chmod_start = subprocess.run(f'chmod +x {self.project_output_path}bash-start.sh', shell=True) + process_run = subprocess.run(f'{self.project_output_path}bash-start.sh', shell=True) + + def stop_compose(self): + process_chmod_stop = subprocess.run(f'chmod +x {self.project_output_path}bash-stop.sh', shell=True) + process_run = subprocess.run(f'{self.project_output_path}bash-stop.sh', shell=True) diff --git a/piper/base/docker_compose/templates/bash-start-compose.j2 b/piper/base/docker_compose/templates/bash-start-compose.j2 new file mode 100644 index 0000000..55775c2 --- /dev/null +++ b/piper/base/docker_compose/templates/bash-start-compose.j2 @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +docker-compose -f {{ name_path }}docker-compose.yaml up --build \ No newline at end of file diff --git a/piper/base/docker_compose/templates/bash-stop-compose.j2 b/piper/base/docker_compose/templates/bash-stop-compose.j2 new file mode 100644 index 0000000..2dcc22b --- /dev/null +++ b/piper/base/docker_compose/templates/bash-stop-compose.j2 @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +docker-compose -f {{ name_path }}docker-compose.yaml down \ No newline at end of file diff --git a/piper/base/docker_compose/templates/compose-services.j2 b/piper/base/docker_compose/templates/compose-services.j2 new file mode 100644 index 0000000..78abd91 --- /dev/null +++ b/piper/base/docker_compose/templates/compose-services.j2 @@ -0,0 +1,58 @@ +version: '3' + +services: + etcd: + container_name: milvus-etcd + image: quay.io/coreos/etcd:v3.5.0 + environment: + - ETCD_AUTO_COMPACTION_MODE=revision + - ETCD_AUTO_COMPACTION_RETENTION=1000 + - ETCD_QUOTA_BACKEND_BYTES=4294967296 + volumes: + - data_milvus:/etcd + command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd + + minio: + container_name: milvus-minio + image: minio/minio:RELEASE.2022-03-17T06-34-49Z + environment: + MINIO_ACCESS_KEY: minioadmin + MINIO_SECRET_KEY: minioadmin + volumes: + - data_milvus:/minio_data + command: minio server /minio_data + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] + interval: 30s + timeout: 20s + retries: 3 + + standalone: + container_name: milvus-standalone + image: milvusdb/milvus:v2.1.1 + command: ["milvus", "run", "standalone"] + environment: + ETCD_ENDPOINTS: etcd:2379 + MINIO_ADDRESS: minio:9000 + volumes: + - data_milvus:/var/lib/milvus + ports: + - "19530:19530" + - "9091:9091" + depends_on: + - "etcd" + - "minio" + + microservice: + build: + context: . + restart: always + ports: + - 7585:80 + depends_on: + - "etcd" + - "minio" + - "standalone" + +volumes: + data_milvus: \ No newline at end of file diff --git a/piper/base/docker_compose/templates/dockerfile.j2 b/piper/base/docker_compose/templates/dockerfile.j2 new file mode 100644 index 0000000..5f9c1fd --- /dev/null +++ b/piper/base/docker_compose/templates/dockerfile.j2 @@ -0,0 +1,8 @@ +FROM tiangolo/uvicorn-gunicorn-fastapi:python3.8 + +WORKDIR /app + +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt + +COPY main.py . diff --git a/piper/base/docker_compose/templates/python-script-fastapi.j2 b/piper/base/docker_compose/templates/python-script-fastapi.j2 new file mode 100644 index 0000000..f02b7db --- /dev/null +++ b/piper/base/docker_compose/templates/python-script-fastapi.j2 @@ -0,0 +1,171 @@ +import time + +from typing import Union + +import numpy as np + +from fastapi import FastAPI +from pymilvus import ( + connections, + utility, + FieldSchema, CollectionSchema, DataType, + Collection, +) + + +app = FastAPI( + docs_url='/', + redoc_url=None, +) + + +# hello_milvus.py demonstrates the basic operations of PyMilvus, a Python SDK of Milvus. +# 1. connect to Milvus +# 2. create collection +# 3. insert data +# 4. create index +# 5. search, query, and hybrid search on entities +# 6. delete entities by PK +# 7. drop collection + + +fmt = "\n=== {:30} ===\n" +search_latency_fmt = "search latency = {:.4f}s" +num_entities, dim = 3000, 8 + +################################################################################# +# 1. connect to Milvus +# Add a new connection alias `default` for Milvus server in `localhost:19530` +# Actually the "default" alias is a buildin in PyMilvus. +# If the address of Milvus is the same as `localhost:19530`, you can omit all +# parameters and call the method as: `connections.connect()`. +# +# Note: the `using` parameter of the following methods is default to "default". +print(fmt.format("start connecting to Milvus")) +connections.connect("default", host="standalone", port="19530") + + +@app.get("/has_collection") +def has_collection(name_collect: str = "hello_milvus"): + has = utility.has_collection(name_collect) + + return f"Does collection hello_milvus exist in Milvus: {has}" + + +@app.get("/create_collection") +def create_collection(name_collect: str = "hello_milvus"): + ################################################################################# + # 2. create collection + # We're going to create a collection with 3 fields. + # +-+------------+------------+------------------+------------------------------+ + # | | field name | field type | other attributes | field description | + # +-+------------+------------+------------------+------------------------------+ + # |1| "pk" | VarChar | is_primary=True | "primary field" | + # | | | | auto_id=False | | + # +-+------------+------------+------------------+------------------------------+ + # |2| "random" | Double | | "a double field" | + # +-+------------+------------+------------------+------------------------------+ + # |3|"embeddings"| FloatVector| dim=8 | "float vector with dim 8" | + # +-+------------+------------+------------------+------------------------------+ + fields = [ + FieldSchema(name="pk", dtype=DataType.VARCHAR, is_primary=True, auto_id=False, max_length=100), + FieldSchema(name="random", dtype=DataType.DOUBLE), + FieldSchema(name="embeddings", dtype=DataType.FLOAT_VECTOR, dim=dim) + ] + + schema = CollectionSchema(fields, f"{name_collect} is the simplest demo to introduce the APIs") + hello_milvus = Collection(name_collect, schema, consistency_level="Strong") + + return fmt.format(f"Create collection {name_collect}") + + +@app.get("/insert_data") +def insert_data(name_collect: str = "hello_milvus"): + # 3. insert data + # We are going to insert 3000 rows of data into `hello_milvus` + # Data to be inserted must be organized in fields. + # + # The insert() method returns: + # - either automatically generated primary keys by Milvus if auto_id=True in the schema; + # - or the existing primary key field from the entities if auto_id=False in the schema. + + collection = Collection(name_collect) + print(fmt.format("Start inserting entities")) + rng = np.random.default_rng(seed=19530) + entities = [ + # provide the pk field because `auto_id` is set to False + [str(i) for i in range(num_entities)], + rng.random(num_entities).tolist(), # field random, only supports list + rng.random((num_entities, dim)), # field embeddings, supports numpy.ndarray and list + ] + + insert_result = collection.insert(entities) + + print(f"Number of entities in Milvus: {collection.num_entities}") # check the num_entites + + ################################################################################ + # 4. create index + # We are going to create an IVF_FLAT index for hello_milvus collection. + # create_index() can only be applied to `FloatVector` and `BinaryVector` fields. + print(fmt.format("Start Creating index IVF_FLAT")) + index = { + "index_type": "IVF_FLAT", + "metric_type": "L2", + "params": {"nlist": 128}, + } + + collection.create_index("embeddings", index) + + return 'Success', 200 + + +@app.get("/search_query") +def search_query(name_collect: str = "hello_milvus"): + ################################################################################ + # 5. search, query, and hybrid search + # After data were inserted into Milvus and indexed, you can perform: + # - search based on vector similarity + # - query based on scalar filtering(boolean, int, etc.) + # - hybrid search based on vector similarity and scalar filtering. + # + + collection = Collection(name_collect) + + # Before conducting a search or a query, you need to load the data in `hello_milvus` into memory. + print(fmt.format("Start loading")) + collection.load() + + # ----------------------------------------------------------------------------- + # search based on vector similarity + print(fmt.format("Start searching based on vector similarity")) + rng = np.random.default_rng(seed=19530) + entities = [ + # provide the pk field because `auto_id` is set to False + [str(i) for i in range(num_entities)], + rng.random(num_entities).tolist(), # field random, only supports list + rng.random((num_entities, dim)), # field embeddings, supports numpy.ndarray and list + ] + vectors_to_search = entities[-1][-2:] + search_params = { + "metric_type": "L2", + "params": {"nprobe": 10}, + } + + start_time = time.time() + result = collection.search(vectors_to_search, "embeddings", search_params, limit=3, output_fields=["random"]) + end_time = time.time() + + result_list = [] + for hits in result: + for hit in hits: + result_list.append( + { + "hit": hit, + "random_field": hit.entity.get('random'), + }, + ) + print(search_latency_fmt.format(end_time - start_time)) + + return { + 'result': result_list + } \ No newline at end of file diff --git a/piper/base/docker_compose/utils.py b/piper/base/docker_compose/utils.py new file mode 100644 index 0000000..769d4fb --- /dev/null +++ b/piper/base/docker_compose/utils.py @@ -0,0 +1,86 @@ +import os + +import jinja2 + +from piper.utils.logger_utils import logger + + +class ComposeServices: + + def __init__( + self, + name_path: str, + ): + self.name_path = name_path + + @staticmethod + def render_script_fastapi(): + """ + Render main file for virtual env logic + """ + logger.info('Render main file for fastapi in compose services') + + template_dir = os.path.join(os.path.dirname(__file__), 'templates') + jinja_env = jinja2.Environment(loader=jinja2.FileSystemLoader(template_dir), + trim_blocks=True, + lstrip_blocks=True) + template = jinja_env.get_template('python-script-fastapi.j2') + return template.render() + + def render_bash_start(self): + """ + Render bash script for create and activate venv + """ + logger.info('Render bash script for create and activate venv') + + template_dir = os.path.join(os.path.dirname(__file__), 'templates') + jinja_env = jinja2.Environment(loader=jinja2.FileSystemLoader(template_dir), + trim_blocks=True, + lstrip_blocks=True) + template = jinja_env.get_template('bash-start-compose.j2') + return template.render( + name_path=self.name_path, + ) + + def render_bash_stop(self): + """ + Render main file for virtual env logic + """ + logger.info('Render main file for virtual env logic') + + template_dir = os.path.join(os.path.dirname(__file__), 'templates') + jinja_env = jinja2.Environment(loader=jinja2.FileSystemLoader(template_dir), + trim_blocks=True, + lstrip_blocks=True) + template = jinja_env.get_template('bash-stop-compose.j2') + return template.render( + name_path=self.name_path, + ) + + @staticmethod + def render_compose_services(): + """ + Render bash script for create and activate venv + """ + logger.info('Render bash script for create and activate venv') + + template_dir = os.path.join(os.path.dirname(__file__), 'templates') + jinja_env = jinja2.Environment(loader=jinja2.FileSystemLoader(template_dir), + trim_blocks=True, + lstrip_blocks=True) + template = jinja_env.get_template('compose-services.j2') + return template.render() + + @staticmethod + def render_dockerfile(): + """ + Render bash script for create and activate venv + """ + logger.info('Render bash script for create and activate venv') + + template_dir = os.path.join(os.path.dirname(__file__), 'templates') + jinja_env = jinja2.Environment(loader=jinja2.FileSystemLoader(template_dir), + trim_blocks=True, + lstrip_blocks=True) + template = jinja_env.get_template('dockerfile.j2') + return template.render() diff --git a/piper/base/executors.py b/piper/base/executors.py index a69294e..b517eba 100644 --- a/piper/base/executors.py +++ b/piper/base/executors.py @@ -52,7 +52,7 @@ def inputs_to_dict(*args, **kwargs): def add_packages_to_install(packages_list): - row = f'RUN apt install -y {" ".join(packages_list)} \n' + row = f'RUN apt install -y {" ".join(packages_list)} \n' return row @@ -153,6 +153,7 @@ def wait_for_fast_api_app_start(host, external_port, wait_on_iter, n_iters): sys.exit() i += 1 + class FastAPIExecutor(HTTPExecutor): requirements = ["gunicorn", "fastapi", "uvicorn", "aiohttp", "docker", "Jinja2", "pydantic", "loguru"] base_handler = "run" @@ -218,8 +219,10 @@ def create_fast_api_files(self, path: str, **service_kwargs): class FastAPITesseractExecutor(HTTPExecutor): - requirements = ["gunicorn", "fastapi", "uvicorn", "aiohttp", "docker", "Jinja2", "pydantic", "loguru", "numpy", "opencv-python", "pytesseract", "python-multipart", "pdf2image", "spacy"] - packages_list = ['tree', 'cmake', 'libgl1-mesa-glx', 'poppler-utils', 'tesseract-ocr', 'libtesseract-dev', 'libleptonica-dev', 'mc'] + requirements = ["gunicorn", "fastapi", "uvicorn", "aiohttp", "docker", "Jinja2", "pydantic", "loguru", "numpy", + "opencv-python", "pytesseract", "python-multipart", "pdf2image", "spacy"] + packages_list = ['tree', 'cmake', 'libgl1-mesa-glx', 'poppler-utils', 'tesseract-ocr', 'libtesseract-dev', + 'libleptonica-dev', 'mc'] base_handler = "recognize" def __init__(self, port: int = 8080, **service_kwargs): @@ -246,7 +249,8 @@ def __init__(self, port: int = 8080, **service_kwargs): post_install_lines = "" # docker_image = PythonTesseractImage(self.image_tag, "3.9", cmd=f"./run.sh") - docker_image = PythonImage(self.image_tag, "3.9", cmd=f"./run.sh", template_file='default-python.j2', run_rows=run_rows, post_install_lines=post_install_lines) + docker_image = PythonImage(self.image_tag, "3.9", cmd=f"./run.sh", template_file='default-python.j2', + run_rows=run_rows, post_install_lines=post_install_lines) build_image(project_output_path, docker_image) self.create_fast_api_files(project_output_path, **service_kwargs) diff --git a/piper/configurations.py b/piper/configurations.py index d611196..d01eb5f 100644 --- a/piper/configurations.py +++ b/piper/configurations.py @@ -9,7 +9,7 @@ class Configuration: name_venv = "venv_test" number = 10 - env = None + env = 'compose' # start time and counter wait_on_iter = 0.5 diff --git a/piper/envs/__init__.py b/piper/envs/__init__.py index d9055c2..046c26b 100644 --- a/piper/envs/__init__.py +++ b/piper/envs/__init__.py @@ -1,3 +1,5 @@ +from base.docker_compose.compose_executors import ComposeExecutor + from piper.base.virtualenv.venv_executors import VirtualEnvExecutor from piper.configurations import get_configuration from piper.utils.logger_utils import logger @@ -11,6 +13,8 @@ def init_default_env(): set_env(DockerEnv()) elif cfg.default_env == "virtualenv": set_env(VirtualEnv()) + elif cfg.default_env == "compose": + set_env(VirtualEnv()) else: set_env(CurrentEnv()) @@ -72,6 +76,23 @@ def __exit__(self, *args, **kws): set_env(self._old_environment) +class ComposeEnv: + + def __init__(self): + self.__resource = ComposeExecutor() + + def __enter__(self): + logger.info("Entering ComposeEnv") + self._old_environment = get_env() + set_env(self) + return self.__resource + + def __exit__(self, *args, **kws): + logger.info("Exiting ComposeEnv") + # self.__resource.stop_compose() + set_env(self._old_environment) + + def is_current_env(): return get_env().__class__.__name__ == "CurrentEnv" @@ -82,3 +103,7 @@ def is_docker_env(): def is_virtual_env(): return get_env().__class__.__name__ == "VirtualEnv" + + +def is_compose_env(): + return get_env().__class__.__name__ == "ComposeEnv" From d7b7f57f7c127960d24fc987f18e7d933ab0f5dd Mon Sep 17 00:00:00 2001 From: ArtemSmeta Date: Tue, 30 Aug 2022 15:56:03 +0300 Subject: [PATCH 13/50] add docker compose fastapi, milvus logic in ComposeEnv. fix --- .../docker_compose/templates/python-script-fastapi.j2 | 11 ++--------- piper/envs/__init__.py | 3 +-- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/piper/base/docker_compose/templates/python-script-fastapi.j2 b/piper/base/docker_compose/templates/python-script-fastapi.j2 index f02b7db..d7d603d 100644 --- a/piper/base/docker_compose/templates/python-script-fastapi.j2 +++ b/piper/base/docker_compose/templates/python-script-fastapi.j2 @@ -1,17 +1,10 @@ import time - from typing import Union import numpy as np - from fastapi import FastAPI -from pymilvus import ( - connections, - utility, - FieldSchema, CollectionSchema, DataType, - Collection, -) - +from pymilvus import (Collection, CollectionSchema, DataType, FieldSchema, + connections, utility) app = FastAPI( docs_url='/', diff --git a/piper/envs/__init__.py b/piper/envs/__init__.py index 046c26b..6e71584 100644 --- a/piper/envs/__init__.py +++ b/piper/envs/__init__.py @@ -1,5 +1,4 @@ -from base.docker_compose.compose_executors import ComposeExecutor - +from piper.base.docker_compose.compose_executors import ComposeExecutor from piper.base.virtualenv.venv_executors import VirtualEnvExecutor from piper.configurations import get_configuration from piper.utils.logger_utils import logger From fec00a065f7b0c5fd0fafadce0607ec796d6e2ee Mon Sep 17 00:00:00 2001 From: ArtemSmeta Date: Tue, 30 Aug 2022 15:58:11 +0300 Subject: [PATCH 14/50] add docker compose fastapi, milvus logic in ComposeEnv. fix 2 --- piper/base/docker_compose/compose_executors.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/piper/base/docker_compose/compose_executors.py b/piper/base/docker_compose/compose_executors.py index e393bdd..d2cde82 100644 --- a/piper/base/docker_compose/compose_executors.py +++ b/piper/base/docker_compose/compose_executors.py @@ -1,11 +1,8 @@ import inspect -import os import subprocess from typing import Dict -from base.docker_compose.utils import ComposeServices - -from piper.base.virtualenv.utils import VenvPython +from piper.base.docker_compose.utils import ComposeServices from piper.configurations import get_configuration from piper.utils.logger_utils import logger From ae372a6629abf197d6bbd0a6f841f775c54ac2fa Mon Sep 17 00:00:00 2001 From: ArtemSmeta Date: Wed, 31 Aug 2022 13:40:37 +0300 Subject: [PATCH 15/50] fix test for compose env --- Makefile | 2 +- tests/running_piper_test.py | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 0415998..9a37956 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ lint: .PHONY: unit unit: - pytest tests/running_piper_test.py::TestVenv + pytest -vs tests/running_piper_test.py::TestDifferentEnv .PHONY: package package: diff --git a/tests/running_piper_test.py b/tests/running_piper_test.py index 9a98eda..2bfbb69 100644 --- a/tests/running_piper_test.py +++ b/tests/running_piper_test.py @@ -7,7 +7,7 @@ import requests -from piper.envs import VirtualEnv +from piper.envs import VirtualEnv, ComposeEnv main_app_url = f'http://localhost:8788' @@ -39,13 +39,21 @@ def test_run(self): assert need_result == result.get('value') -class TestVenv: +class TestDifferentEnv: """ - venv container API test. Methods: - dummy + Compose and Venv test. Methods: + test_scenario_venv + test_scenario_compose """ - def test_dummy(self): + def test_scenario_venv(self): with VirtualEnv() as env: env.copy_struct_project() env.create_files_for_venv() env.create_files_for_tests() + + def test_scenario_compose(self): + with ComposeEnv() as compose: + compose.copy_struct_project() + compose.create_files_for_compose() + compose.start_compose() + compose.stop_compose() From c85bbd0611010c2f9125e2bf71c97525cc620146 Mon Sep 17 00:00:00 2001 From: ArtemSmeta Date: Wed, 31 Aug 2022 14:08:29 +0300 Subject: [PATCH 16/50] fix test for compose env --- Makefile | 2 +- .../templates/bash-start-compose.j2 | 2 +- .../templates/python-script-fastapi.j2 | 7 +++++- tests/running_piper_test.py | 25 ++++++++++++++----- 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index 9a37956..010019f 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ lint: .PHONY: unit unit: - pytest -vs tests/running_piper_test.py::TestDifferentEnv + pytest -vs tests/running_piper_test.py::TestCompose .PHONY: package package: diff --git a/piper/base/docker_compose/templates/bash-start-compose.j2 b/piper/base/docker_compose/templates/bash-start-compose.j2 index 55775c2..16faec7 100644 --- a/piper/base/docker_compose/templates/bash-start-compose.j2 +++ b/piper/base/docker_compose/templates/bash-start-compose.j2 @@ -1,3 +1,3 @@ #!/usr/bin/env bash -docker-compose -f {{ name_path }}docker-compose.yaml up --build \ No newline at end of file +docker-compose -f {{ name_path }}docker-compose.yaml up --build -d \ No newline at end of file diff --git a/piper/base/docker_compose/templates/python-script-fastapi.j2 b/piper/base/docker_compose/templates/python-script-fastapi.j2 index d7d603d..75fc578 100644 --- a/piper/base/docker_compose/templates/python-script-fastapi.j2 +++ b/piper/base/docker_compose/templates/python-script-fastapi.j2 @@ -2,7 +2,7 @@ import time from typing import Union import numpy as np -from fastapi import FastAPI +from fastapi import FastAPI, status from pymilvus import (Collection, CollectionSchema, DataType, FieldSchema, connections, utility) @@ -38,6 +38,11 @@ print(fmt.format("start connecting to Milvus")) connections.connect("default", host="standalone", port="19530") +@app.get("/health_check", status_code=200) +def health_check(): + return 'Success' + + @app.get("/has_collection") def has_collection(name_collect: str = "hello_milvus"): has = utility.has_collection(name_collect) diff --git a/tests/running_piper_test.py b/tests/running_piper_test.py index 2bfbb69..8084522 100644 --- a/tests/running_piper_test.py +++ b/tests/running_piper_test.py @@ -39,21 +39,34 @@ def test_run(self): assert need_result == result.get('value') -class TestDifferentEnv: +class TestVenv: """ - Compose and Venv test. Methods: - test_scenario_venv - test_scenario_compose + venv test. Methods: + scenario """ - def test_scenario_venv(self): + + def test_scenario(self): with VirtualEnv() as env: env.copy_struct_project() env.create_files_for_venv() env.create_files_for_tests() - def test_scenario_compose(self): + +class TestCompose: + """ + Compose test. Methods: + scenario + """ + + def test_health_check(self): with ComposeEnv() as compose: compose.copy_struct_project() compose.create_files_for_compose() compose.start_compose() + + url = 'http://localhost:7585/health_check' + result = requests.get(url) + assert result.status_code == 200 + compose.stop_compose() + From 94979838aeda031c8ab929a16a8ce718a4a7dd13 Mon Sep 17 00:00:00 2001 From: ArtemSmeta Date: Wed, 31 Aug 2022 14:14:48 +0300 Subject: [PATCH 17/50] fix test for compose env --- piper/base/docker_compose/utils.py | 10 +++++----- tests/running_piper_test.py | 4 +++- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/piper/base/docker_compose/utils.py b/piper/base/docker_compose/utils.py index 769d4fb..5de7440 100644 --- a/piper/base/docker_compose/utils.py +++ b/piper/base/docker_compose/utils.py @@ -16,7 +16,7 @@ def __init__( @staticmethod def render_script_fastapi(): """ - Render main file for virtual env logic + Render main file for fastapi """ logger.info('Render main file for fastapi in compose services') @@ -29,7 +29,7 @@ def render_script_fastapi(): def render_bash_start(self): """ - Render bash script for create and activate venv + Render bash script for bash_start """ logger.info('Render bash script for create and activate venv') @@ -44,7 +44,7 @@ def render_bash_start(self): def render_bash_stop(self): """ - Render main file for virtual env logic + Render bash script for bash_stop """ logger.info('Render main file for virtual env logic') @@ -60,7 +60,7 @@ def render_bash_stop(self): @staticmethod def render_compose_services(): """ - Render bash script for create and activate venv + Render script for compose_services """ logger.info('Render bash script for create and activate venv') @@ -74,7 +74,7 @@ def render_compose_services(): @staticmethod def render_dockerfile(): """ - Render bash script for create and activate venv + Render dockerfile """ logger.info('Render bash script for create and activate venv') diff --git a/tests/running_piper_test.py b/tests/running_piper_test.py index 8084522..236a94e 100644 --- a/tests/running_piper_test.py +++ b/tests/running_piper_test.py @@ -1,4 +1,5 @@ # pytest -vs tests/running_piper_test.py::TestDocker +import time from pathlib import Path from shlex import split from subprocess import check_call @@ -64,7 +65,8 @@ def test_health_check(self): compose.create_files_for_compose() compose.start_compose() - url = 'http://localhost:7585/health_check' + time.sleep(5) + url = 'http://127.0.0.1:7585/health_check' result = requests.get(url) assert result.status_code == 200 From 0614c255b3352f13f68a723aad02e644e5013fac Mon Sep 17 00:00:00 2001 From: ArtemSmeta Date: Wed, 31 Aug 2022 14:27:36 +0300 Subject: [PATCH 18/50] fix test for compose env --- piper/base/docker_compose/compose_executors.py | 14 +++++++------- .../docker_compose/templates/bash-start-compose.j2 | 2 +- piper/base/docker_compose/utils.py | 5 ++++- tests/running_piper_test.py | 2 +- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/piper/base/docker_compose/compose_executors.py b/piper/base/docker_compose/compose_executors.py index d2cde82..b5c9b1f 100644 --- a/piper/base/docker_compose/compose_executors.py +++ b/piper/base/docker_compose/compose_executors.py @@ -41,30 +41,30 @@ def copy_struct_project(self): copy_piper(self.project_output_path) copy_scripts(self.project_output_path, self.scripts()) - def create_files_for_compose(self): + def create_files_for_compose(self, testing: bool = False): logger.info('ComposeExecutor create_fast_api_files_venv()') - venv_python_image = ComposeServices( + compose_service = ComposeServices( name_path=self.project_output_path, ) - main_fastapi = venv_python_image.render_script_fastapi() + main_fastapi = compose_service.render_script_fastapi() with open(f"{self.project_output_path}/main.py", "w") as output: output.write(main_fastapi) - docker_compose = venv_python_image.render_compose_services() + docker_compose = compose_service.render_compose_services() with open(f"{self.project_output_path}/docker-compose.yaml", "w") as output: output.write(docker_compose) - bash_start = venv_python_image.render_bash_start() + bash_start = compose_service.render_bash_start(testing=testing) with open(f"{self.project_output_path}/bash-start.sh", "w") as output: output.write(bash_start) - bash_stop = venv_python_image.render_bash_stop() + bash_stop = compose_service.render_bash_stop() with open(f"{self.project_output_path}/bash-stop.sh", "w") as output: output.write(bash_stop) - dockerfile = venv_python_image.render_dockerfile() + dockerfile = compose_service.render_dockerfile() with open(f"{self.project_output_path}/Dockerfile", "w") as output: output.write(dockerfile) diff --git a/piper/base/docker_compose/templates/bash-start-compose.j2 b/piper/base/docker_compose/templates/bash-start-compose.j2 index 16faec7..7a66fec 100644 --- a/piper/base/docker_compose/templates/bash-start-compose.j2 +++ b/piper/base/docker_compose/templates/bash-start-compose.j2 @@ -1,3 +1,3 @@ #!/usr/bin/env bash -docker-compose -f {{ name_path }}docker-compose.yaml up --build -d \ No newline at end of file +docker-compose -f {{ name_path }}docker-compose.yaml up --build {{ compose_flag }} \ No newline at end of file diff --git a/piper/base/docker_compose/utils.py b/piper/base/docker_compose/utils.py index 5de7440..004f44c 100644 --- a/piper/base/docker_compose/utils.py +++ b/piper/base/docker_compose/utils.py @@ -27,7 +27,7 @@ def render_script_fastapi(): template = jinja_env.get_template('python-script-fastapi.j2') return template.render() - def render_bash_start(self): + def render_bash_start(self, testing: bool = False): """ Render bash script for bash_start """ @@ -38,8 +38,11 @@ def render_bash_start(self): trim_blocks=True, lstrip_blocks=True) template = jinja_env.get_template('bash-start-compose.j2') + + compose_flag = '-d' if testing else '' return template.render( name_path=self.name_path, + compose_flag=compose_flag, ) def render_bash_stop(self): diff --git a/tests/running_piper_test.py b/tests/running_piper_test.py index 236a94e..24714a1 100644 --- a/tests/running_piper_test.py +++ b/tests/running_piper_test.py @@ -62,7 +62,7 @@ class TestCompose: def test_health_check(self): with ComposeEnv() as compose: compose.copy_struct_project() - compose.create_files_for_compose() + compose.create_files_for_compose(testing=True) compose.start_compose() time.sleep(5) From adc303f3f1087761623a8728704fa4ca0d162011 Mon Sep 17 00:00:00 2001 From: ArtemSmeta Date: Fri, 2 Sep 2022 14:14:21 +0300 Subject: [PATCH 19/50] fix project for pypi package structure --- MANIFEST.in | 2 + Readme.rst | 18 ++++++++ main.py | 18 -------- piper/__init__.py | 0 piper/__main__.py | 44 +++++++++++++++++++ .../templates/compose-services.j2 | 4 +- piper/configurations.py | 4 +- piper/utils/docker_utils.py | 3 +- piper/utils/logger_utils.py | 2 +- setup.py | 34 ++++++++++++++ tests/running_piper_test.py | 2 +- 11 files changed, 106 insertions(+), 25 deletions(-) create mode 100644 MANIFEST.in delete mode 100644 main.py create mode 100644 piper/__init__.py create mode 100644 piper/__main__.py create mode 100644 setup.py diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..2dc72ad --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,2 @@ +include Readme.rst +include piper/base/docker_compose/templates/*.j2 \ No newline at end of file diff --git a/Readme.rst b/Readme.rst index a66b3c1..56165ec 100644 --- a/Readme.rst +++ b/Readme.rst @@ -34,6 +34,24 @@ How Piper works Quick start =========== +Easy test pipertool package + +In root directory project run command in terminal +- create and activate venv + +- in configuration.py rename for correctly path for new directory + +- python setup.py install + +- piper start + +- 0.0.0.0:7585 - FastApi + +- 0.0.0.0:9001 - Milvus Console (minioadmin/minioadmin) + +- piper stop + +- pip uninstall piper Installation diff --git a/main.py b/main.py deleted file mode 100644 index 89c7c4c..0000000 --- a/main.py +++ /dev/null @@ -1,18 +0,0 @@ -import sys - -from loguru import logger - -from piper.envs import ComposeEnv - -logger.add("file.log", level="INFO", backtrace=True, diagnose=True, rotation='5 MB') - -if __name__ == '__main__': - with ComposeEnv() as env: - try: - env.copy_struct_project() - env.create_files_for_compose() - env.start_compose() - except KeyboardInterrupt: - logger.info('Ctrl+C pressed. Except KeyboardInterrupt.') - env.stop_compose() - sys.exit(1) diff --git a/piper/__init__.py b/piper/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/piper/__main__.py b/piper/__main__.py new file mode 100644 index 0000000..cb5a9eb --- /dev/null +++ b/piper/__main__.py @@ -0,0 +1,44 @@ +import os +import sys + +import click + +root_dir = os.path.join(os.path.realpath(os.path.pardir), '.') +sys.path.insert(1, root_dir) + +from piper.envs import ComposeEnv + +# def main(): +# with ComposeEnv() as env: +# try: +# env.copy_struct_project() +# env.create_files_for_compose() +# env.start_compose() +# except KeyboardInterrupt: +# logger.info('Ctrl+C pressed. Except KeyboardInterrupt.') +# env.stop_compose() +# sys.exit(1) +# + + +@click.command() +@click.argument('type_command') +def main(type_command): + if type_command == 'start': + print("type_command == 'start'") + with ComposeEnv() as env: + env.copy_struct_project() + env.create_files_for_compose(testing=True) + env.start_compose() + elif type_command == 'stop': + print("type_command == 'stop'") + + with ComposeEnv() as env: + env.stop_compose() + + +if __name__ == '__main__': + args = sys.argv + if "--help" in args or len(args) == 1: + print("CVE") + main() diff --git a/piper/base/docker_compose/templates/compose-services.j2 b/piper/base/docker_compose/templates/compose-services.j2 index 78abd91..88b122b 100644 --- a/piper/base/docker_compose/templates/compose-services.j2 +++ b/piper/base/docker_compose/templates/compose-services.j2 @@ -15,12 +15,14 @@ services: minio: container_name: milvus-minio image: minio/minio:RELEASE.2022-03-17T06-34-49Z + ports: + - "9001:9001" environment: MINIO_ACCESS_KEY: minioadmin MINIO_SECRET_KEY: minioadmin volumes: - data_milvus:/minio_data - command: minio server /minio_data + command: minio server /data --console-address ":9001" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 30s diff --git a/piper/configurations.py b/piper/configurations.py index d01eb5f..7345042 100644 --- a/piper/configurations.py +++ b/piper/configurations.py @@ -1,8 +1,8 @@ class Configuration: # path = "/Users/olegsokolov/PycharmProjects/piper/applications" - path = "./piper_new_out/" + path = "/home/artems/PycharmProjects/pipertool/piper_new_out/" test_path = "./piper_test_out/" - piper_path = "piper" + piper_path = "." default_env = "docker" docker_app_port = 8788 diff --git a/piper/utils/docker_utils.py b/piper/utils/docker_utils.py index e46857c..02fd9f7 100644 --- a/piper/utils/docker_utils.py +++ b/piper/utils/docker_utils.py @@ -2,10 +2,9 @@ import time import docker +from configurations import get_configuration from loguru import logger -from piper.configurations import get_configuration - cfg = get_configuration() def get_image(docker_client, image_name): diff --git a/piper/utils/logger_utils.py b/piper/utils/logger_utils.py index dddecf8..3bd07bb 100644 --- a/piper/utils/logger_utils.py +++ b/piper/utils/logger_utils.py @@ -10,7 +10,7 @@ handler.setFormatter(formatter) logger.addHandler(handler) -fh = logging.FileHandler('piper_base_log.log') +fh = logging.FileHandler('../piper_base_log.log') fh.setLevel(logging.DEBUG) fh.setFormatter(formatter) logger.addHandler(fh) diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..4be5192 --- /dev/null +++ b/setup.py @@ -0,0 +1,34 @@ +import pathlib +from io import open +from os import path + +from setuptools import find_packages, setup + +# Директория, в которой содержится этот файл +HERE = pathlib.Path(__file__).parent +# Текст README-файла +README = (HERE / "Readme.rst").read_text() +# Автоматически собирает в requirements.txt все модули для install_requires, а также настраивает ссылки на зависимости +with open(path.join(HERE, 'requirements.txt'), encoding='utf-8') as f: + all_reqs = f.read().split('\n') +install_requires = [x.strip() for x in all_reqs if ('git+' not in x) and ( + not x.startswith('#')) and (not x.startswith('-'))] +dependency_links = [x.strip().replace('git+', '') for x in all_reqs \ + if 'git+' not in x] + +setup( + name='piper', + version='0.0.2', + packages=find_packages(), # list of all packages + install_requires=install_requires, + include_package_data=True, + python_requires='>=2.7', # any python greater than 2.7 + entry_points=''' + [console_scripts] + piper=piper.__main__:main + ''', + zip_safe=False, + long_description=README, + long_description_content_type="text/markdown", + dependency_links=dependency_links, +) diff --git a/tests/running_piper_test.py b/tests/running_piper_test.py index 24714a1..7124fc7 100644 --- a/tests/running_piper_test.py +++ b/tests/running_piper_test.py @@ -8,7 +8,7 @@ import requests -from piper.envs import VirtualEnv, ComposeEnv +from piper.envs import ComposeEnv, VirtualEnv main_app_url = f'http://localhost:8788' From 8ea1a30d7bb9894d2129c3f5cdd7d1480a44bfbb Mon Sep 17 00:00:00 2001 From: ArtemSmeta Date: Fri, 2 Sep 2022 16:10:47 +0300 Subject: [PATCH 20/50] fix project for pypi package structure --- MANIFEST.in | 6 ++++-- piper/configurations.py | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/MANIFEST.in b/MANIFEST.in index 2dc72ad..d914411 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,2 +1,4 @@ -include Readme.rst -include piper/base/docker_compose/templates/*.j2 \ No newline at end of file +include piper/base/backend/templates/*.j2 +include piper/base/docker/images/*.j2 +include piper/base/docker_compose/templates/*.j2 +include piper/base/virtualenv/templates/*.j2 diff --git a/piper/configurations.py b/piper/configurations.py index 7345042..d01eb5f 100644 --- a/piper/configurations.py +++ b/piper/configurations.py @@ -1,8 +1,8 @@ class Configuration: # path = "/Users/olegsokolov/PycharmProjects/piper/applications" - path = "/home/artems/PycharmProjects/pipertool/piper_new_out/" + path = "./piper_new_out/" test_path = "./piper_test_out/" - piper_path = "." + piper_path = "piper" default_env = "docker" docker_app_port = 8788 From a7965840f93a337a55235b5a18017338e949af6d Mon Sep 17 00:00:00 2001 From: Artems Date: Fri, 2 Sep 2022 22:25:54 +0300 Subject: [PATCH 21/50] add options in click command start, testing, refactor --- Readme.rst | 4 +- piper/__main__.py | 30 ++-- .../templates/bash-start-compose.j2 | 2 +- .../templates/bash-stop-compose.j2 | 2 +- piper/base/docker_compose/utils.py | 10 +- requirements.txt | 3 +- tests/running_piper_test.py | 148 +++++++++--------- 7 files changed, 103 insertions(+), 96 deletions(-) diff --git a/Readme.rst b/Readme.rst index 56165ec..63a1bf1 100644 --- a/Readme.rst +++ b/Readme.rst @@ -43,13 +43,13 @@ In root directory project run command in terminal - python setup.py install -- piper start +- piper --env-type compose start - 0.0.0.0:7585 - FastApi - 0.0.0.0:9001 - Milvus Console (minioadmin/minioadmin) -- piper stop +- piper --env-type compose stop - pip uninstall piper diff --git a/piper/__main__.py b/piper/__main__.py index cb5a9eb..6e25c12 100644 --- a/piper/__main__.py +++ b/piper/__main__.py @@ -23,18 +23,24 @@ @click.command() @click.argument('type_command') -def main(type_command): - if type_command == 'start': - print("type_command == 'start'") - with ComposeEnv() as env: - env.copy_struct_project() - env.create_files_for_compose(testing=True) - env.start_compose() - elif type_command == 'stop': - print("type_command == 'stop'") - - with ComposeEnv() as env: - env.stop_compose() +@click.option( + '--env-type', '-e', + help='your current interpretation', +) +def main(type_command: str, env_type: str): + if env_type == 'compose': + if type_command == 'start': + print("type_command == 'start'") + with ComposeEnv() as env: + env.copy_struct_project() + env.create_files_for_compose() + env.start_compose() + elif type_command == 'stop': + print("type_command == 'stop'") + with ComposeEnv() as env: + env.stop_compose() + else: + raise NotImplementedError(f'{env_type} not released in this version pipertool') if __name__ == '__main__': diff --git a/piper/base/docker_compose/templates/bash-start-compose.j2 b/piper/base/docker_compose/templates/bash-start-compose.j2 index 7a66fec..a894e04 100644 --- a/piper/base/docker_compose/templates/bash-start-compose.j2 +++ b/piper/base/docker_compose/templates/bash-start-compose.j2 @@ -1,3 +1,3 @@ #!/usr/bin/env bash -docker-compose -f {{ name_path }}docker-compose.yaml up --build {{ compose_flag }} \ No newline at end of file +sudo docker-compose -f {{ name_path }}docker-compose.yaml up --build {{ compose_flag }} \ No newline at end of file diff --git a/piper/base/docker_compose/templates/bash-stop-compose.j2 b/piper/base/docker_compose/templates/bash-stop-compose.j2 index 2dcc22b..0aed3a9 100644 --- a/piper/base/docker_compose/templates/bash-stop-compose.j2 +++ b/piper/base/docker_compose/templates/bash-stop-compose.j2 @@ -1,3 +1,3 @@ #!/usr/bin/env bash -docker-compose -f {{ name_path }}docker-compose.yaml down \ No newline at end of file +sudo docker-compose -f {{ name_path }}docker-compose.yaml down \ No newline at end of file diff --git a/piper/base/docker_compose/utils.py b/piper/base/docker_compose/utils.py index 004f44c..7062ea1 100644 --- a/piper/base/docker_compose/utils.py +++ b/piper/base/docker_compose/utils.py @@ -31,7 +31,7 @@ def render_bash_start(self, testing: bool = False): """ Render bash script for bash_start """ - logger.info('Render bash script for create and activate venv') + logger.info('Render bash script for bash_start') template_dir = os.path.join(os.path.dirname(__file__), 'templates') jinja_env = jinja2.Environment(loader=jinja2.FileSystemLoader(template_dir), @@ -39,7 +39,7 @@ def render_bash_start(self, testing: bool = False): lstrip_blocks=True) template = jinja_env.get_template('bash-start-compose.j2') - compose_flag = '-d' if testing else '' + compose_flag = '' if testing else '-d' return template.render( name_path=self.name_path, compose_flag=compose_flag, @@ -49,7 +49,7 @@ def render_bash_stop(self): """ Render bash script for bash_stop """ - logger.info('Render main file for virtual env logic') + logger.info('Render bash script for bash_stop') template_dir = os.path.join(os.path.dirname(__file__), 'templates') jinja_env = jinja2.Environment(loader=jinja2.FileSystemLoader(template_dir), @@ -65,7 +65,7 @@ def render_compose_services(): """ Render script for compose_services """ - logger.info('Render bash script for create and activate venv') + logger.info('Render script for compose_services') template_dir = os.path.join(os.path.dirname(__file__), 'templates') jinja_env = jinja2.Environment(loader=jinja2.FileSystemLoader(template_dir), @@ -79,7 +79,7 @@ def render_dockerfile(): """ Render dockerfile """ - logger.info('Render bash script for create and activate venv') + logger.info('Render dockerfile') template_dir = os.path.join(os.path.dirname(__file__), 'templates') jinja_env = jinja2.Environment(loader=jinja2.FileSystemLoader(template_dir), diff --git a/requirements.txt b/requirements.txt index fa6642d..57a37fa 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,6 @@ -docker aiohttp +click==8.1.3 +docker Jinja2 pydantic loguru \ No newline at end of file diff --git a/tests/running_piper_test.py b/tests/running_piper_test.py index 7124fc7..a7de786 100644 --- a/tests/running_piper_test.py +++ b/tests/running_piper_test.py @@ -1,74 +1,74 @@ -# pytest -vs tests/running_piper_test.py::TestDocker -import time -from pathlib import Path -from shlex import split -from subprocess import check_call -from tempfile import TemporaryDirectory -from venv import create - -import requests - -from piper.envs import ComposeEnv, VirtualEnv - -main_app_url = f'http://localhost:8788' - - -class TestDocker: - """ - Docker container API test. Methods: - health_check - run - """ - - def test_health_check(self): - url = f'{main_app_url}/health_check' - print(url) - result = requests.post(url) - assert result.status_code == 200 - - def test_run(self): - url = f'{main_app_url}/run' - print(url) - data = {'value': 'hello, world'} - response = requests.post(url, json=data) - result = dict(response.json()) - need_result = f"{data.get('value')}TEST" - print(f'need_result is {need_result}') - print(f"docker result is {result.get('value')}") - - assert response.status_code == 200 - assert need_result == result.get('value') - - -class TestVenv: - """ - venv test. Methods: - scenario - """ - - def test_scenario(self): - with VirtualEnv() as env: - env.copy_struct_project() - env.create_files_for_venv() - env.create_files_for_tests() - - -class TestCompose: - """ - Compose test. Methods: - scenario - """ - - def test_health_check(self): - with ComposeEnv() as compose: - compose.copy_struct_project() - compose.create_files_for_compose(testing=True) - compose.start_compose() - - time.sleep(5) - url = 'http://127.0.0.1:7585/health_check' - result = requests.get(url) - assert result.status_code == 200 - - compose.stop_compose() - +# pytest -vs tests/running_piper_test.py::TestDocker +import time +from pathlib import Path +from shlex import split +from subprocess import check_call +from tempfile import TemporaryDirectory +from venv import create + +import requests + +from piper.envs import ComposeEnv, VirtualEnv + +main_app_url = f'http://localhost:8788' + + +class TestDocker: + """ + Docker container API test. Methods: + health_check + run + """ + + def test_health_check(self): + url = f'{main_app_url}/health_check' + print(url) + result = requests.post(url) + assert result.status_code == 200 + + def test_run(self): + url = f'{main_app_url}/run' + print(url) + data = {'value': 'hello, world'} + response = requests.post(url, json=data) + result = dict(response.json()) + need_result = f"{data.get('value')}TEST" + print(f'need_result is {need_result}') + print(f"docker result is {result.get('value')}") + + assert response.status_code == 200 + assert need_result == result.get('value') + + +class TestVenv: + """ + venv test. Methods: + scenario + """ + + def test_scenario(self): + with VirtualEnv() as env: + env.copy_struct_project() + env.create_files_for_venv() + env.create_files_for_tests() + + +class TestCompose: + """ + Compose test. Methods: + scenario + """ + + def test_health_check(self): + with ComposeEnv() as compose: + compose.copy_struct_project() + compose.create_files_for_compose() + compose.start_compose() + + time.sleep(5) + url = 'http://127.0.0.1:7585/health_check' + result = requests.get(url) + assert result.status_code == 200 + + compose.stop_compose() + From 0e7c2d30bf16b0e82e6c48e9880d140facf00219 Mon Sep 17 00:00:00 2001 From: Artems Date: Sat, 3 Sep 2022 20:51:25 +0300 Subject: [PATCH 22/50] add global main file for testing package functional --- main.py | 69 +++++++++++++++++++++++++++++++++++++++++++++++ piper/__main__.py | 16 ----------- 2 files changed, 69 insertions(+), 16 deletions(-) create mode 100644 main.py diff --git a/main.py b/main.py new file mode 100644 index 0000000..523f30e --- /dev/null +++ b/main.py @@ -0,0 +1,69 @@ +import asyncio +import sys +import time + +from loguru import logger + +from piper.configurations import get_configuration +from piper.envs import ComposeEnv, CurrentEnv, DockerEnv, VirtualEnv + +# from piper.services import (SpacyNER, StringValue, TesseractRecognizer, +# TestMessageAdder) +# from piper.utils import tesrct_utils as tu + +logger.add("file.log", level="INFO", backtrace=True, diagnose=True, rotation='5 MB') + +if __name__ == '__main__': + # cfg = get_configuration() + # loop = asyncio.get_event_loop() + # with CurrentEnv() as env: + # x = StringValue(value="hello, world") + # adder = TestMessageAdder(appender="!", port=cfg.docker_app_port) + # result = loop.run_until_complete(adder(x)) + # print(result) + + # x = StringValue(value="hello, world") + # adder = TestMessageAdder(appender="!", port=cfg.docker_app_port) + # result = loop.run_until_complete(adder(x)) + # print(result) + # adder.rm_container() + + # logger.info(f'main here {time.time()}') + # cfg = get_configuration() + # loop = asyncio.get_event_loop() + # with DockerEnv() as env: + # # object created + # recognizer = TesseractRecognizer(port=cfg.docker_app_port) + # + # result = loop.run_until_complete(recognizer()) + # logger.info(f'result of recognition is {result}') + + # with VirtualEnv() as env: + # env.copy_struct_project() + # env.create_files_for_venv() + # env.create_files_for_tests() + + with ComposeEnv() as env: + try: + env.copy_struct_project() + env.create_files_for_compose(testing=True) + env.start_compose() + except KeyboardInterrupt: + logger.info('Ctrl+C pressed. Except KeyboardInterrupt.') + env.stop_compose() + sys.exit(1) + + # sys.exit() + + # sn = SpacyNER() + # txt = 'The Alraigo Incident occurred on 6th June 1983, when a lost British Royal Navy Sea Harrier fighter aircraft landed on the deck of a Spanish container ship.[1][2] Its pilot, Sub-lieutenant Ian Watson, was a junior Royal Navy Pilot undertaking his first NATO exercise from HMS Illustrious, which was operating off the coast of Portugal. Watson was launched in a pair of aircraft tasked with locating a French aircraft carrier under combat conditions including radio-silence and radar switched off.' + # # switch models + # for avalable_model in sn.available_models: + # logger.info(f'current model is {avalable_model}') + # sn.set_model(avalable_model) + # result1 = sn.extract_named_ents(txt) + # if result1: + # result1_str = "\n".join(str(x) for x in result1) + # logger.info(f'result of NER for model {avalable_model} is {result1_str}') + # else: + # logger.info(f'module didn`t get NER data') \ No newline at end of file diff --git a/piper/__main__.py b/piper/__main__.py index 6e25c12..d626c4d 100644 --- a/piper/__main__.py +++ b/piper/__main__.py @@ -1,25 +1,9 @@ -import os import sys import click -root_dir = os.path.join(os.path.realpath(os.path.pardir), '.') -sys.path.insert(1, root_dir) - from piper.envs import ComposeEnv -# def main(): -# with ComposeEnv() as env: -# try: -# env.copy_struct_project() -# env.create_files_for_compose() -# env.start_compose() -# except KeyboardInterrupt: -# logger.info('Ctrl+C pressed. Except KeyboardInterrupt.') -# env.stop_compose() -# sys.exit(1) -# - @click.command() @click.argument('type_command') From 7812799a07c6fb09c2797d6db8d16c1978f1a343 Mon Sep 17 00:00:00 2001 From: Oleg Sokolov Date: Tue, 6 Sep 2022 00:59:44 +0300 Subject: [PATCH 23/50] Update readme New comparison --- Readme.rst | 50 +++++++++++++++++--------------------------------- 1 file changed, 17 insertions(+), 33 deletions(-) diff --git a/Readme.rst b/Readme.rst index a66b3c1..5995f61 100644 --- a/Readme.rst +++ b/Readme.rst @@ -1,11 +1,9 @@ |Banner| -`Website `_ -• `Docs `_ -• `Blog `_ -• `Twitter `_ -• `Chat (Community & Support) `_ -• `Tutorial `_ +`Website `_ +• `Docs `_ +• `Chat (Community & Support) `_ +• `Tutorials `_ # TODO: add useful installation links, code coverage and test from CICD @@ -39,40 +37,26 @@ Quick start Installation ============ - -Snap (Snapcraft/Linux) ----------------------- - - -Choco (Chocolatey/Windows) --------------------------- - -Brew (Homebrew/Mac OS) ----------------------- - -Conda (Anaconda) ----------------- - pip (PyPI) ---------- +.. code-block:: bash + :caption: pip installation + pip install pipertool + Comparison to related technologies ================================== -#. Data Engineering tools such as `AirFlow `_, - `Luigi `_, and others - We use Airflow and Luigi as possible context for executors - -#. Opyrator - +#. Jupyter - is the de facto experimental environment for most data scientists. However, it is desirable to write experimental code. -#. Ansible - - -#. Kubernetes - +#. Data Engineering tools such as `AirFlow `_, + `Luigi `_ -These are very popular ML pipeline build tools. Airflow can be connected to a kubernetes cluster or collect tasks through a simple PythonOperator. The downside is that their functionality is generally limited on this, that is, they do not provide ML modules out of the box. Moreover, all developments will still have to be wrapped in a scheduler and this is not always a trivial task. However, we like them and we use Airflow and Luigi as possible context for executors. -#. Dagster - +#. Azure ML / Amazon SageMaker / Google Cloud - Cloud platforms really allow you to assemble an entire system from ready-made modules and put it into operation relatively quickly. Of the minuses: high cost, binding to a specific cloud, as well as small customization for specific business needs. For a large business, this is the most logical option - to build an ML infrastructure in the cloud. We also maintain cloud options as posible ways for the deployment step. -#. DVC, MLFlow, and others - +#. DataRobot/Baseten - They offer an interesting, but small set of ready-made modules. However, in Baseten, all integration is implied in the kubernetes cluster. This is not always convenient and necessary for Proof-of-Concept. Piper also provides an open-source framework in which you can build a truly customized pipeline from many modules. Basically, such companies either do not provide an open-source framework, or provide a very truncated set of modules for experiments, which limits the freedom, functionality, and applicability of these platforms. This is partly similar to the hub of models and datasets in huggingface. -#. +#. Mlflow / DVC, etc. - There are also many excellent projects on the market for tracking experiments, serving and storing machine learning models. But they are increasingly utilitarian and do not directly help in the task of accelerating the construction of a machine learning MVP project. We plan to add integrations to Piper with the most popular frameworks for the needs of DS and ML specialists. Contributing @@ -100,11 +84,11 @@ By submitting a pull request to this project, you agree to license your contribu -.. |Banner| image:: https://tatradev.com - :target: https://tatradev.com +.. |Banner| image:: https://static.tildacdn.com/tild3434-6665-4638-a432-626636353134/illistration.svg + :target: http://pipertool.org/ :alt: Piper logo .. |Contribs| image:: https://tatradev.com :target: https://github.com/TatraDev/piper/graphs/contributors - :alt: Contributors \ No newline at end of file + :alt: Contributors From 6899d35de9d3f001551044d6b5612d39242d6af9 Mon Sep 17 00:00:00 2001 From: Oleg Sokolov Date: Tue, 6 Sep 2022 01:08:22 +0300 Subject: [PATCH 24/50] Update readme new bold stuff --- Readme.rst | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/Readme.rst b/Readme.rst index 5995f61..f8a6382 100644 --- a/Readme.rst +++ b/Readme.rst @@ -5,7 +5,6 @@ • `Chat (Community & Support) `_ • `Tutorials `_ -# TODO: add useful installation links, code coverage and test from CICD **Piper** is an **open-source** platform for data science and machine learning prototyping. Concentrate only on your goals. Key features: @@ -47,16 +46,16 @@ pip (PyPI) Comparison to related technologies ================================== -#. Jupyter - is the de facto experimental environment for most data scientists. However, it is desirable to write experimental code. +#. **Jupyter** - is the de facto experimental environment for most data scientists. However, it is desirable to write experimental code. -#. Data Engineering tools such as `AirFlow `_, - `Luigi `_ -These are very popular ML pipeline build tools. Airflow can be connected to a kubernetes cluster or collect tasks through a simple PythonOperator. The downside is that their functionality is generally limited on this, that is, they do not provide ML modules out of the box. Moreover, all developments will still have to be wrapped in a scheduler and this is not always a trivial task. However, we like them and we use Airflow and Luigi as possible context for executors. +#. **Data Engineering tools such as `AirFlow `_, + `Luigi `_** -These are very popular ML pipeline build tools. Airflow can be connected to a kubernetes cluster or collect tasks through a simple PythonOperator. The downside is that their functionality is generally limited on this, that is, they do not provide ML modules out of the box. Moreover, all developments will still have to be wrapped in a scheduler and this is not always a trivial task. However, we like them and we use Airflow and Luigi as possible context for executors. -#. Azure ML / Amazon SageMaker / Google Cloud - Cloud platforms really allow you to assemble an entire system from ready-made modules and put it into operation relatively quickly. Of the minuses: high cost, binding to a specific cloud, as well as small customization for specific business needs. For a large business, this is the most logical option - to build an ML infrastructure in the cloud. We also maintain cloud options as posible ways for the deployment step. +#. **Azure ML / Amazon SageMaker / Google Cloud** - Cloud platforms really allow you to assemble an entire system from ready-made modules and put it into operation relatively quickly. Of the minuses: high cost, binding to a specific cloud, as well as small customization for specific business needs. For a large business, this is the most logical option - to build an ML infrastructure in the cloud. We also maintain cloud options as posible ways for the deployment step. -#. DataRobot/Baseten - They offer an interesting, but small set of ready-made modules. However, in Baseten, all integration is implied in the kubernetes cluster. This is not always convenient and necessary for Proof-of-Concept. Piper also provides an open-source framework in which you can build a truly customized pipeline from many modules. Basically, such companies either do not provide an open-source framework, or provide a very truncated set of modules for experiments, which limits the freedom, functionality, and applicability of these platforms. This is partly similar to the hub of models and datasets in huggingface. +#. **DataRobot/Baseten** - They offer an interesting, but small set of ready-made modules. However, in Baseten, all integration is implied in the kubernetes cluster. This is not always convenient and necessary for Proof-of-Concept. Piper also provides an open-source framework in which you can build a truly customized pipeline from many modules. Basically, such companies either do not provide an open-source framework, or provide a very truncated set of modules for experiments, which limits the freedom, functionality, and applicability of these platforms. This is partly similar to the hub of models and datasets in huggingface. -#. Mlflow / DVC, etc. - There are also many excellent projects on the market for tracking experiments, serving and storing machine learning models. But they are increasingly utilitarian and do not directly help in the task of accelerating the construction of a machine learning MVP project. We plan to add integrations to Piper with the most popular frameworks for the needs of DS and ML specialists. +#. **Mlflow / DVC** - There are also many excellent projects on the market for tracking experiments, serving and storing machine learning models. But they are increasingly utilitarian and do not directly help in the task of accelerating the construction of a machine learning MVP project. We plan to add integrations to Piper with the most popular frameworks for the needs of DS and ML specialists. Contributing From 48040ac2097257300368c39478ada3c5ae19d651 Mon Sep 17 00:00:00 2001 From: Oleg Sokolov Date: Tue, 6 Sep 2022 01:09:08 +0300 Subject: [PATCH 25/50] Update Readme.rst Fix bold --- Readme.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Readme.rst b/Readme.rst index f8a6382..b7a7fec 100644 --- a/Readme.rst +++ b/Readme.rst @@ -48,8 +48,8 @@ Comparison to related technologies #. **Jupyter** - is the de facto experimental environment for most data scientists. However, it is desirable to write experimental code. -#. **Data Engineering tools such as `AirFlow `_, - `Luigi `_** -These are very popular ML pipeline build tools. Airflow can be connected to a kubernetes cluster or collect tasks through a simple PythonOperator. The downside is that their functionality is generally limited on this, that is, they do not provide ML modules out of the box. Moreover, all developments will still have to be wrapped in a scheduler and this is not always a trivial task. However, we like them and we use Airflow and Luigi as possible context for executors. +#. **Data Engineering tools such as** `**AirFlow** `_, + `**Luigi** `_-These are very popular ML pipeline build tools. Airflow can be connected to a kubernetes cluster or collect tasks through a simple PythonOperator. The downside is that their functionality is generally limited on this, that is, they do not provide ML modules out of the box. Moreover, all developments will still have to be wrapped in a scheduler and this is not always a trivial task. However, we like them and we use Airflow and Luigi as possible context for executors. #. **Azure ML / Amazon SageMaker / Google Cloud** - Cloud platforms really allow you to assemble an entire system from ready-made modules and put it into operation relatively quickly. Of the minuses: high cost, binding to a specific cloud, as well as small customization for specific business needs. For a large business, this is the most logical option - to build an ML infrastructure in the cloud. We also maintain cloud options as posible ways for the deployment step. From 31ebdd56795d597b2a4ee4c06739d021e5389f6e Mon Sep 17 00:00:00 2001 From: Oleg Sokolov Date: Tue, 6 Sep 2022 01:10:00 +0300 Subject: [PATCH 26/50] Update Readme.rst fix syntax --- Readme.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Readme.rst b/Readme.rst index b7a7fec..7b2cdfd 100644 --- a/Readme.rst +++ b/Readme.rst @@ -48,8 +48,8 @@ Comparison to related technologies #. **Jupyter** - is the de facto experimental environment for most data scientists. However, it is desirable to write experimental code. -#. **Data Engineering tools such as** `**AirFlow** `_, - `**Luigi** `_-These are very popular ML pipeline build tools. Airflow can be connected to a kubernetes cluster or collect tasks through a simple PythonOperator. The downside is that their functionality is generally limited on this, that is, they do not provide ML modules out of the box. Moreover, all developments will still have to be wrapped in a scheduler and this is not always a trivial task. However, we like them and we use Airflow and Luigi as possible context for executors. +#. **Data Engineering tools such as** `AirFlow `_ or + `Luigi `_-These are very popular ML pipeline build tools. Airflow can be connected to a kubernetes cluster or collect tasks through a simple PythonOperator. The downside is that their functionality is generally limited on this, that is, they do not provide ML modules out of the box. Moreover, all developments will still have to be wrapped in a scheduler and this is not always a trivial task. However, we like them and we use Airflow and Luigi as possible context for executors. #. **Azure ML / Amazon SageMaker / Google Cloud** - Cloud platforms really allow you to assemble an entire system from ready-made modules and put it into operation relatively quickly. Of the minuses: high cost, binding to a specific cloud, as well as small customization for specific business needs. For a large business, this is the most logical option - to build an ML infrastructure in the cloud. We also maintain cloud options as posible ways for the deployment step. From 30c3d20df9ab42963c1011596c1690f77d47aa4e Mon Sep 17 00:00:00 2001 From: Oleg Sokolov Date: Tue, 6 Sep 2022 01:10:32 +0300 Subject: [PATCH 27/50] Update Readme.rst fix syntax --- Readme.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Readme.rst b/Readme.rst index 7b2cdfd..8b62a23 100644 --- a/Readme.rst +++ b/Readme.rst @@ -49,7 +49,7 @@ Comparison to related technologies #. **Jupyter** - is the de facto experimental environment for most data scientists. However, it is desirable to write experimental code. #. **Data Engineering tools such as** `AirFlow `_ or - `Luigi `_-These are very popular ML pipeline build tools. Airflow can be connected to a kubernetes cluster or collect tasks through a simple PythonOperator. The downside is that their functionality is generally limited on this, that is, they do not provide ML modules out of the box. Moreover, all developments will still have to be wrapped in a scheduler and this is not always a trivial task. However, we like them and we use Airflow and Luigi as possible context for executors. + `Luigi `_ - These are very popular ML pipeline build tools. Airflow can be connected to a kubernetes cluster or collect tasks through a simple PythonOperator. The downside is that their functionality is generally limited on this, that is, they do not provide ML modules out of the box. Moreover, all developments will still have to be wrapped in a scheduler and this is not always a trivial task. However, we like them and we use Airflow and Luigi as possible context for executors. #. **Azure ML / Amazon SageMaker / Google Cloud** - Cloud platforms really allow you to assemble an entire system from ready-made modules and put it into operation relatively quickly. Of the minuses: high cost, binding to a specific cloud, as well as small customization for specific business needs. For a large business, this is the most logical option - to build an ML infrastructure in the cloud. We also maintain cloud options as posible ways for the deployment step. From 0a3fb7660bde8cce574bd93c0dc0c4f9c8a6654a Mon Sep 17 00:00:00 2001 From: ArtemSmeta Date: Tue, 6 Sep 2022 14:59:55 +0300 Subject: [PATCH 28/50] rename to python-fastapi-milvus.j2 --- .../{python-script-fastapi.j2 => python-fastapi-milvus.j2} | 0 piper/base/docker_compose/utils.py | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename piper/base/docker_compose/templates/{python-script-fastapi.j2 => python-fastapi-milvus.j2} (100%) diff --git a/piper/base/docker_compose/templates/python-script-fastapi.j2 b/piper/base/docker_compose/templates/python-fastapi-milvus.j2 similarity index 100% rename from piper/base/docker_compose/templates/python-script-fastapi.j2 rename to piper/base/docker_compose/templates/python-fastapi-milvus.j2 diff --git a/piper/base/docker_compose/utils.py b/piper/base/docker_compose/utils.py index 7062ea1..11a2036 100644 --- a/piper/base/docker_compose/utils.py +++ b/piper/base/docker_compose/utils.py @@ -24,7 +24,7 @@ def render_script_fastapi(): jinja_env = jinja2.Environment(loader=jinja2.FileSystemLoader(template_dir), trim_blocks=True, lstrip_blocks=True) - template = jinja_env.get_template('python-script-fastapi.j2') + template = jinja_env.get_template('python-fastapi-milvus.j2') return template.render() def render_bash_start(self, testing: bool = False): From 969dae4358cf1642d5a4e7f6105e5b437bd78f38 Mon Sep 17 00:00:00 2001 From: ArtemSmeta Date: Thu, 8 Sep 2022 10:29:56 +0300 Subject: [PATCH 29/50] fix root runner and description in Readme.rst --- Readme.rst | 24 ++++++++++++++++++- .../templates/bash-start-compose.j2 | 2 +- .../templates/bash-stop-compose.j2 | 2 +- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/Readme.rst b/Readme.rst index 63a1bf1..62bdcae 100644 --- a/Readme.rst +++ b/Readme.rst @@ -34,11 +34,17 @@ How Piper works Quick start =========== -Easy test pipertool package +Quick start pipertool package compose env +=========== In root directory project run command in terminal + +- sudo -u root /bin/bash + - create and activate venv +- pip install -r requirements.txt + - in configuration.py rename for correctly path for new directory - python setup.py install @@ -53,6 +59,22 @@ In root directory project run command in terminal - pip uninstall piper +Quick start pipertool package compose env +=========== + +In root directory project run command in terminal + +- sudo -u root /bin/bash + +- create and activate venv + +- pip install -r requirements.txt + +- in configuration.py rename for correctly path for new directory + +- python main.py + +- await click CTRL+C from compose env Installation ============ diff --git a/piper/base/docker_compose/templates/bash-start-compose.j2 b/piper/base/docker_compose/templates/bash-start-compose.j2 index a894e04..7a66fec 100644 --- a/piper/base/docker_compose/templates/bash-start-compose.j2 +++ b/piper/base/docker_compose/templates/bash-start-compose.j2 @@ -1,3 +1,3 @@ #!/usr/bin/env bash -sudo docker-compose -f {{ name_path }}docker-compose.yaml up --build {{ compose_flag }} \ No newline at end of file +docker-compose -f {{ name_path }}docker-compose.yaml up --build {{ compose_flag }} \ No newline at end of file diff --git a/piper/base/docker_compose/templates/bash-stop-compose.j2 b/piper/base/docker_compose/templates/bash-stop-compose.j2 index 0aed3a9..2dcc22b 100644 --- a/piper/base/docker_compose/templates/bash-stop-compose.j2 +++ b/piper/base/docker_compose/templates/bash-stop-compose.j2 @@ -1,3 +1,3 @@ #!/usr/bin/env bash -sudo docker-compose -f {{ name_path }}docker-compose.yaml down \ No newline at end of file +docker-compose -f {{ name_path }}docker-compose.yaml down \ No newline at end of file From b6eddf67058718b2157e31b324fce5ae8da9ebd2 Mon Sep 17 00:00:00 2001 From: ArtemSmeta Date: Thu, 8 Sep 2022 10:47:14 +0300 Subject: [PATCH 30/50] fix fastapi code and executer --- .../templates/python-fastapi-milvus.j2 | 13 +++++++++++-- piper/envs/__init__.py | 2 ++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/piper/base/docker_compose/templates/python-fastapi-milvus.j2 b/piper/base/docker_compose/templates/python-fastapi-milvus.j2 index 75fc578..3b9ef4e 100644 --- a/piper/base/docker_compose/templates/python-fastapi-milvus.j2 +++ b/piper/base/docker_compose/templates/python-fastapi-milvus.j2 @@ -114,7 +114,7 @@ def insert_data(name_collect: str = "hello_milvus"): collection.create_index("embeddings", index) - return 'Success', 200 + return 'Success' @app.get("/search_query") @@ -166,4 +166,13 @@ def search_query(name_collect: str = "hello_milvus"): return { 'result': result_list - } \ No newline at end of file + } + + +# 7. drop collection +# Finally, drop the hello_milvus collection +@app.get("/drop_collection") +def drop_collection(name_collect: str = "hello_milvus"): + print(fmt.format("Drop collection `hello_milvus`")) + utility.drop_collection(name_collect) + return 'Success' \ No newline at end of file diff --git a/piper/envs/__init__.py b/piper/envs/__init__.py index 6e71584..2fb5459 100644 --- a/piper/envs/__init__.py +++ b/piper/envs/__init__.py @@ -68,6 +68,7 @@ def __enter__(self): logger.info("Entering VirtualEnv") self._old_environment = get_env() set_env(self) + # TODO update work with return resource return self.__resource def __exit__(self, *args, **kws): @@ -84,6 +85,7 @@ def __enter__(self): logger.info("Entering ComposeEnv") self._old_environment = get_env() set_env(self) + # TODO update work with return resource return self.__resource def __exit__(self, *args, **kws): From aa7e5078adc09223d4b60c8c36b8588565ec528e Mon Sep 17 00:00:00 2001 From: ArtemSmeta Date: Thu, 8 Sep 2022 15:38:56 +0300 Subject: [PATCH 31/50] fix milvus code template --- .../base/docker_compose/templates/bash-start-compose.j2 | 2 +- piper/base/docker_compose/templates/bash-stop-compose.j2 | 2 +- .../docker_compose/templates/python-fastapi-milvus.j2 | 9 ++++++++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/piper/base/docker_compose/templates/bash-start-compose.j2 b/piper/base/docker_compose/templates/bash-start-compose.j2 index 7a66fec..a894e04 100644 --- a/piper/base/docker_compose/templates/bash-start-compose.j2 +++ b/piper/base/docker_compose/templates/bash-start-compose.j2 @@ -1,3 +1,3 @@ #!/usr/bin/env bash -docker-compose -f {{ name_path }}docker-compose.yaml up --build {{ compose_flag }} \ No newline at end of file +sudo docker-compose -f {{ name_path }}docker-compose.yaml up --build {{ compose_flag }} \ No newline at end of file diff --git a/piper/base/docker_compose/templates/bash-stop-compose.j2 b/piper/base/docker_compose/templates/bash-stop-compose.j2 index 2dcc22b..0aed3a9 100644 --- a/piper/base/docker_compose/templates/bash-stop-compose.j2 +++ b/piper/base/docker_compose/templates/bash-stop-compose.j2 @@ -1,3 +1,3 @@ #!/usr/bin/env bash -docker-compose -f {{ name_path }}docker-compose.yaml down \ No newline at end of file +sudo docker-compose -f {{ name_path }}docker-compose.yaml down \ No newline at end of file diff --git a/piper/base/docker_compose/templates/python-fastapi-milvus.j2 b/piper/base/docker_compose/templates/python-fastapi-milvus.j2 index 3b9ef4e..6f7b555 100644 --- a/piper/base/docker_compose/templates/python-fastapi-milvus.j2 +++ b/piper/base/docker_compose/templates/python-fastapi-milvus.j2 @@ -50,6 +50,13 @@ def has_collection(name_collect: str = "hello_milvus"): return f"Does collection hello_milvus exist in Milvus: {has}" +@app.get("/get_list_collections") +def get_list_collections(): + return { + 'list_collections': utility.list_collections() + } + + @app.get("/create_collection") def create_collection(name_collect: str = "hello_milvus"): ################################################################################# @@ -175,4 +182,4 @@ def search_query(name_collect: str = "hello_milvus"): def drop_collection(name_collect: str = "hello_milvus"): print(fmt.format("Drop collection `hello_milvus`")) utility.drop_collection(name_collect) - return 'Success' \ No newline at end of file + return 'Success' From d25bf5c665b4448bf5d10e4d5e00f43682ac4b9c Mon Sep 17 00:00:00 2001 From: ArtemSmeta Date: Thu, 8 Sep 2022 16:46:40 +0300 Subject: [PATCH 32/50] fix readme --- Readme.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Readme.rst b/Readme.rst index 62bdcae..6a7ae4b 100644 --- a/Readme.rst +++ b/Readme.rst @@ -9,6 +9,11 @@ # TODO: add useful installation links, code coverage and test from CICD +[![Build Status](https://github.com/TatraDev/pipertool/workflows/test/badge.svg?branch=venv_logic&event=push)](https://github.com/TatraDev/pipertool/actions?query=workflow%3Atest) +[![codecov](https://codecov.io/gh/TatraDev/pipertool/branch/master/graph/badge.svg)](https://codecov.io/gh/TatraDev/pipertool) +[![Python Version](https://img.shields.io/pypi/pyversions/pipertool.svg)](https://pypi.org/project/pipertool/) +[![wemake-python-styleguide](https://img.shields.io/badge/style-wemake-000000.svg)](https://github.com/wemake-services/wemake-python-styleguide) + **Piper** is an **open-source** platform for data science and machine learning prototyping. Concentrate only on your goals. Key features: From 1650874ba640836d295e483e313259ac5fb699ac Mon Sep 17 00:00:00 2001 From: ArtemSmeta Date: Thu, 8 Sep 2022 16:48:13 +0300 Subject: [PATCH 33/50] rename Readme.rst to Readme.md --- Readme.rst => Readme.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Readme.rst => Readme.md (100%) diff --git a/Readme.rst b/Readme.md similarity index 100% rename from Readme.rst rename to Readme.md From f504b251aa698190754d4d6ed7270dbb9b4ea091 Mon Sep 17 00:00:00 2001 From: ArtemSmeta Date: Thu, 8 Sep 2022 16:50:17 +0300 Subject: [PATCH 34/50] fix github workflow --- .github/workflows/test.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index eb40da4..90fbae3 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -1,4 +1,4 @@ -name: Python package +name: test on: [push] From 98472638243e0f27fdf38ff5393f3e9d5c18f5e9 Mon Sep 17 00:00:00 2001 From: Artems Date: Thu, 8 Sep 2022 19:34:06 +0300 Subject: [PATCH 35/50] fix Readme.rst --- Readme.md | 155 ----------------------------------------------------- Readme.rst | 151 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 151 insertions(+), 155 deletions(-) delete mode 100644 Readme.md create mode 100644 Readme.rst diff --git a/Readme.md b/Readme.md deleted file mode 100644 index 6a7ae4b..0000000 --- a/Readme.md +++ /dev/null @@ -1,155 +0,0 @@ -|Banner| - -`Website `_ -• `Docs `_ -• `Blog `_ -• `Twitter `_ -• `Chat (Community & Support) `_ -• `Tutorial `_ - -# TODO: add useful installation links, code coverage and test from CICD - -[![Build Status](https://github.com/TatraDev/pipertool/workflows/test/badge.svg?branch=venv_logic&event=push)](https://github.com/TatraDev/pipertool/actions?query=workflow%3Atest) -[![codecov](https://codecov.io/gh/TatraDev/pipertool/branch/master/graph/badge.svg)](https://codecov.io/gh/TatraDev/pipertool) -[![Python Version](https://img.shields.io/pypi/pyversions/pipertool.svg)](https://pypi.org/project/pipertool/) -[![wemake-python-styleguide](https://img.shields.io/badge/style-wemake-000000.svg)](https://github.com/wemake-services/wemake-python-styleguide) - -**Piper** is an **open-source** platform for data science and machine -learning prototyping. Concentrate only on your goals. Key features: - -#. Simple **python contexts** experience. Helps to create and deploy pipelines. Does not depend on any proprietary online services. - -#. Connect each module into a **pipeline**. Run it via docker or virtual environment. Then build whole **infrastructure** by using venv, Docker or Cloud. - -#. Decreases routine and repetitive tasks. Speed up process **from idea to production**. - -#. Well-tested and reproducible. Easily extendable by your own **Executor**. - -**Piper** aims to help data-scientists and machine-learning developers to create and build full infrastructure for their projects. - -.. contents:: **Contents** - :backlinks: none - -How Piper works -============= - -|Flowchart| - - - -Quick start -=========== -Quick start pipertool package compose env -=========== - -In root directory project run command in terminal - -- sudo -u root /bin/bash - -- create and activate venv - -- pip install -r requirements.txt - -- in configuration.py rename for correctly path for new directory - -- python setup.py install - -- piper --env-type compose start - -- 0.0.0.0:7585 - FastApi - -- 0.0.0.0:9001 - Milvus Console (minioadmin/minioadmin) - -- piper --env-type compose stop - -- pip uninstall piper - -Quick start pipertool package compose env -=========== - -In root directory project run command in terminal - -- sudo -u root /bin/bash - -- create and activate venv - -- pip install -r requirements.txt - -- in configuration.py rename for correctly path for new directory - -- python main.py - -- await click CTRL+C from compose env - -Installation -============ - - -Snap (Snapcraft/Linux) ----------------------- - - -Choco (Chocolatey/Windows) --------------------------- - -Brew (Homebrew/Mac OS) ----------------------- - -Conda (Anaconda) ----------------- - -pip (PyPI) ----------- - -Comparison to related technologies -================================== - -#. Data Engineering tools such as `AirFlow `_, - `Luigi `_, and others - We use Airflow and Luigi as possible context for executors - -#. Opyrator - - -#. Ansible - - -#. Kubernetes - - -#. Dagster - - -#. DVC, MLFlow, and others - - -#. - - -Contributing -============ - -|Maintainability| |Donate| - -Contributions are welcome! Please see our `Contributing Guide `_ for more -details. Thanks to all our contributors! - -|Contribs| - -Mailing List -============ - - - -Copyright -========= - -This project is distributed under the Apache license version 2.0 (see the LICENSE file in the project root). - -By submitting a pull request to this project, you agree to license your contribution under the Apache license version -2.0 to this project. - - - -.. |Banner| image:: https://tatradev.com - :target: https://tatradev.com - :alt: Piper logo - - -.. |Contribs| image:: https://tatradev.com - :target: https://github.com/TatraDev/piper/graphs/contributors - :alt: Contributors \ No newline at end of file diff --git a/Readme.rst b/Readme.rst new file mode 100644 index 0000000..d5529f5 --- /dev/null +++ b/Readme.rst @@ -0,0 +1,151 @@ +|Banner| + + +|License| |Release| |Docs| |Build status| |Contact| |Blog| + +**Piper** is an **open-source** platform for data science and machine +learning prototyping. Concentrate only on your goals. Key features: + +#. Simple **python contexts** experience. Helps to create and deploy pipelines. Does not depend on any proprietary online services. + +#. Connect each module into a **pipeline**. Run it via docker or virtual environment. Then build whole **infrastructure** by using venv, Docker or Cloud. + +#. Decreases routine and repetitive tasks. Speed up process **from idea to production**. + +#. Well-tested and reproducible. Easily extendable by your own **Executor**. + +**Piper** aims to help data-scientists and machine-learning developers to create and build full infrastructure for their projects. + +.. contents:: **Contents** + :backlinks: none + +How Piper works +============= + +|Flowchart| + + + +Quick start +=========== +Quick start pipertool package compose env +=========== + +In root directory project run command in terminal + +- sudo -u root /bin/bash + +- create and activate venv + +- pip install -r requirements.txt + +- in configuration.py rename for correctly path for new directory + +- python setup.py install + +- piper --env-type compose start + +- 0.0.0.0:7585 - FastApi + +- 0.0.0.0:9001 - Milvus Console (minioadmin/minioadmin) + +- piper --env-type compose stop + +- pip uninstall piper + +Quick start pipertool package compose env +=========== + +In root directory project run command in terminal + +- sudo -u root /bin/bash + +- create and activate venv + +- pip install -r requirements.txt + +- in configuration.py rename for correctly path for new directory + +- python main.py + +- await click CTRL+C from compose env + + + +Installation +============ + +pip (PyPI) +---------- + +.. code-block:: bash + :caption: pip installation + pip install pipertool + +Comparison to related technologies +================================== + +#. **Jupyter** - is the de facto experimental environment for most data scientists. However, it is desirable to write experimental code. + +#. **Data Engineering tools such as** `AirFlow `_ or + `Luigi `_ - These are very popular ML pipeline build tools. Airflow can be connected to a kubernetes cluster or collect tasks through a simple PythonOperator. The downside is that their functionality is generally limited on this, that is, they do not provide ML modules out of the box. Moreover, all developments will still have to be wrapped in a scheduler and this is not always a trivial task. However, we like them and we use Airflow and Luigi as possible context for executors. + +#. **Azure ML / Amazon SageMaker / Google Cloud** - Cloud platforms really allow you to assemble an entire system from ready-made modules and put it into operation relatively quickly. Of the minuses: high cost, binding to a specific cloud, as well as small customization for specific business needs. For a large business, this is the most logical option - to build an ML infrastructure in the cloud. We also maintain cloud options as posible ways for the deployment step. + +#. **DataRobot/Baseten** - They offer an interesting, but small set of ready-made modules. However, in Baseten, all integration is implied in the kubernetes cluster. This is not always convenient and necessary for Proof-of-Concept. Piper also provides an open-source framework in which you can build a truly customized pipeline from many modules. Basically, such companies either do not provide an open-source framework, or provide a very truncated set of modules for experiments, which limits the freedom, functionality, and applicability of these platforms. This is partly similar to the hub of models and datasets in huggingface. + +#. **Mlflow / DVC** - There are also many excellent projects on the market for tracking experiments, serving and storing machine learning models. But they are increasingly utilitarian and do not directly help in the task of accelerating the construction of a machine learning MVP project. We plan to add integrations to Piper with the most popular frameworks for the needs of DS and ML specialists. + + +Contributing +============ + +|Maintainability| |Donate| + +Contributions are welcome! Please see our `Contributing Guide `_ for more +details. Thanks to all our contributors! + +|Contribs| + +Mailing List +============ + + + +Copyright +========= + +This project is distributed under the Apache license version 2.0 (see the LICENSE file in the project root). + +By submitting a pull request to this project, you agree to license your contribution under the Apache license version +2.0 to this project. + + + +.. |Banner| image:: https://static.tildacdn.com/tild3434-6665-4638-a432-626636353134/illistration.svg + :target: http://pipertool.org/ + :alt: Piper logo + + +.. |Contribs| image:: https://tatradev.com + :target: https://github.com/TatraDev/piper/graphs/contributors + :alt: Contributors + + +.. |Release| image:: https://img.shields.io/github/release/zifter/numeral-system-py.svg + :target: https://github.com/TatraDev/pipertool/releases + +.. |Build status| image:: https://github.com/TatraDev/pipertool/workflows/test/badge.svg?branch=venv_logic&event=push + :target: https://github.com/TatraDev/pipertool/actions?query=workflow%3Atest + +.. |Contact| image:: https://img.shields.io/badge/telegram-write%20me-blue.svg + :target: https://t.me/pipertool + +.. |Blog| image:: https://img.shields.io/badge/site-my%20blog-yellow.svg + :target: https://tatradev.com + +.. |License| image:: https://img.shields.io/badge/License-Apache-yellow.svg + :target: https://www.apache.org/licenses/LICENSE-2.0 + +.. |Docs| image:: https://readthedocs.org/projects/numeral-system-py/badge/?version=latest&style=flat + :target: http://pipertool.org From 39feeea1cbc9c57b163889c2c6f9b79cf556f919 Mon Sep 17 00:00:00 2001 From: ArtemSmeta Date: Fri, 9 Sep 2022 08:55:49 +0300 Subject: [PATCH 36/50] fix Readme.rst --- Readme.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Readme.rst b/Readme.rst index d5529f5..970458b 100644 --- a/Readme.rst +++ b/Readme.rst @@ -147,5 +147,5 @@ By submitting a pull request to this project, you agree to license your contribu .. |License| image:: https://img.shields.io/badge/License-Apache-yellow.svg :target: https://www.apache.org/licenses/LICENSE-2.0 -.. |Docs| image:: https://readthedocs.org/projects/numeral-system-py/badge/?version=latest&style=flat +.. |Docs| image:: https://img.shields.io/badge/docs-passing-green :target: http://pipertool.org From 997029c6a5b5795d33bdee5e04981a9ec47b44e2 Mon Sep 17 00:00:00 2001 From: ArtemSmeta Date: Fri, 9 Sep 2022 09:06:05 +0300 Subject: [PATCH 37/50] fix Readme.rst --- Readme.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Readme.rst b/Readme.rst index 970458b..bd302e5 100644 --- a/Readme.rst +++ b/Readme.rst @@ -1,7 +1,7 @@ |Banner| -|License| |Release| |Docs| |Build status| |Contact| |Blog| +|Contribs| |License| |Release| |Docs| |Build status| |Contact| |Blog| **Piper** is an **open-source** platform for data science and machine learning prototyping. Concentrate only on your goals. Key features: @@ -127,12 +127,12 @@ By submitting a pull request to this project, you agree to license your contribu :alt: Piper logo -.. |Contribs| image:: https://tatradev.com - :target: https://github.com/TatraDev/piper/graphs/contributors +.. |Contribs| image:: https://img.shields.io/badge/contributors-3-brightgreen + :target: https://github.com/TatraDev/pipertool/graphs/contributors :alt: Contributors -.. |Release| image:: https://img.shields.io/github/release/zifter/numeral-system-py.svg +.. |Release| image:: https://img.shields.io/badge/release-v0.0.2-blue :target: https://github.com/TatraDev/pipertool/releases .. |Build status| image:: https://github.com/TatraDev/pipertool/workflows/test/badge.svg?branch=venv_logic&event=push @@ -147,5 +147,5 @@ By submitting a pull request to this project, you agree to license your contribu .. |License| image:: https://img.shields.io/badge/License-Apache-yellow.svg :target: https://www.apache.org/licenses/LICENSE-2.0 -.. |Docs| image:: https://img.shields.io/badge/docs-passing-green +.. |Docs| image:: https://img.shields.io/badge/docs-passing-brightgreen :target: http://pipertool.org From d455f2bf57f62b125d1fc9c20ac68d10040c7906 Mon Sep 17 00:00:00 2001 From: ArtemSmeta Date: Fri, 9 Sep 2022 09:14:54 +0300 Subject: [PATCH 38/50] fix Readme.rst --- Readme.rst | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Readme.rst b/Readme.rst index bd302e5..1f810ba 100644 --- a/Readme.rst +++ b/Readme.rst @@ -1,7 +1,7 @@ |Banner| -|Contribs| |License| |Release| |Docs| |Build status| |Contact| |Blog| +|Contribs| |License| |Release| |Python Version| |Docs| |Build status| |Contact| |Blog| **Piper** is an **open-source** platform for data science and machine learning prototyping. Concentrate only on your goals. Key features: @@ -131,6 +131,9 @@ By submitting a pull request to this project, you agree to license your contribu :target: https://github.com/TatraDev/pipertool/graphs/contributors :alt: Contributors +.. |Python Version| image:: https://img.shields.io/badge/python-3.8%20%7C%203.9%20%7C%203.10-blue + :target: https://pypi.org/project/pipertool + :alt: Python Version .. |Release| image:: https://img.shields.io/badge/release-v0.0.2-blue :target: https://github.com/TatraDev/pipertool/releases @@ -144,7 +147,7 @@ By submitting a pull request to this project, you agree to license your contribu .. |Blog| image:: https://img.shields.io/badge/site-my%20blog-yellow.svg :target: https://tatradev.com -.. |License| image:: https://img.shields.io/badge/License-Apache-yellow.svg +.. |License| image:: https://img.shields.io/badge/License-Apache_2.0-yellow.svg :target: https://www.apache.org/licenses/LICENSE-2.0 .. |Docs| image:: https://img.shields.io/badge/docs-passing-brightgreen From fe7b557a2e7d0f7f07331f3feec60ce6fa4acd51 Mon Sep 17 00:00:00 2001 From: ArtemSmeta Date: Fri, 9 Sep 2022 09:16:38 +0300 Subject: [PATCH 39/50] fix Readme.rst --- Readme.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Readme.rst b/Readme.rst index 1f810ba..8fe2847 100644 --- a/Readme.rst +++ b/Readme.rst @@ -1,5 +1,9 @@ |Banner| +`Website `_ +• `Docs `_ +• `Chat (Community & Support) `_ +• `Tutorials `_ |Contribs| |License| |Release| |Python Version| |Docs| |Build status| |Contact| |Blog| From f0cae9342b854c5f04fa68bb09de4a64ab125442 Mon Sep 17 00:00:00 2001 From: sokolegg Date: Sat, 15 Oct 2022 02:54:12 +0400 Subject: [PATCH 40/50] refactoring --- piper/base/executors.py | 6 +++--- piper/utils/docker_utils.py | 4 +++- piper/utils/tesrct_utils.py | 2 ++ 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/piper/base/executors.py b/piper/base/executors.py index b517eba..186045a 100644 --- a/piper/base/executors.py +++ b/piper/base/executors.py @@ -131,12 +131,12 @@ def run_container(image: str, ports: Dict[int, int]): def wait_for_fast_api_app_start(host, external_port, wait_on_iter, n_iters): - ''' + """ wait for fast api app will be loaded - external_port - + external_port - wait_on_iter - seconds between health_check requests n_iters - total health_check requests - ''' + """ logger.info('waiting for FastAPI app start') i = 0 while True: diff --git a/piper/utils/docker_utils.py b/piper/utils/docker_utils.py index 02fd9f7..3bcbd3d 100644 --- a/piper/utils/docker_utils.py +++ b/piper/utils/docker_utils.py @@ -7,6 +7,7 @@ cfg = get_configuration() + def get_image(docker_client, image_name): try: cur_image = docker_client.images.get(image_name) @@ -36,6 +37,7 @@ def get_container(docker_client, container_name): logger.error(f'non defined exeption {e}') return False + def get_container_with_status(docker_client, container_name): try: cur_container = docker_client.containers.get(container_name) @@ -50,6 +52,7 @@ def get_container_with_status(docker_client, container_name): logger.error(f'non defined exeption {e}') return False + def stop_container(docker_client, container_name): try: cur_container = docker_client.containers.get(container_name) @@ -172,7 +175,6 @@ def create_image_and_container_by_dockerfile(docker_client, path, image_tag, con sys.exit() time.sleep(cfg.docker_wait_on_iter) - except docker.errors.APIError as api_e: logger.error(f'eroror while run container {container_name}') logger.error(str(api_e)) diff --git a/piper/utils/tesrct_utils.py b/piper/utils/tesrct_utils.py index eb56544..81081b3 100644 --- a/piper/utils/tesrct_utils.py +++ b/piper/utils/tesrct_utils.py @@ -9,6 +9,7 @@ cfg = get_configuration() + def send_file_to_service(url, file_path, json_key): multipart_form_data = { 'file': open(file_path, 'rb') @@ -28,6 +29,7 @@ def send_file_to_service(url, file_path, json_key): logger.error(f'exeption while connect to {url}') logger.error(ce) + def img_to_text(img, ts_conf): logger.info(f'pytesseract process file with len {len(img)}') txt_dict = pytesseract.image_to_data( From 3964104329f2f821086634956dfd6ade72b311b2 Mon Sep 17 00:00:00 2001 From: sokolegg Date: Sat, 15 Oct 2022 18:04:30 +0400 Subject: [PATCH 41/50] refactoring --- piper/envs/__init__.py | 5 ++++- setup.py | 8 +++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/piper/envs/__init__.py b/piper/envs/__init__.py index 2fb5459..9df7581 100644 --- a/piper/envs/__init__.py +++ b/piper/envs/__init__.py @@ -7,7 +7,10 @@ def init_default_env(): - # INITIALIZE ENVIRONMENT FROM CONFIGURATION + """ + This method initialize the default environment by the string name from the configuration. + CurrentEnv means default python where piper is installed. + """ if cfg.default_env == "docker": set_env(DockerEnv()) elif cfg.default_env == "virtualenv": diff --git a/setup.py b/setup.py index 4be5192..2bb3002 100644 --- a/setup.py +++ b/setup.py @@ -4,11 +4,13 @@ from setuptools import find_packages, setup -# Директория, в которой содержится этот файл +# directory with current setup.py file HERE = pathlib.Path(__file__).parent -# Текст README-файла + +# Readme file as text README = (HERE / "Readme.rst").read_text() -# Автоматически собирает в requirements.txt все модули для install_requires, а также настраивает ссылки на зависимости + +# Automatically collects all_modules to requirements.txt for install_requires and set dependency links with open(path.join(HERE, 'requirements.txt'), encoding='utf-8') as f: all_reqs = f.read().split('\n') install_requires = [x.strip() for x in all_reqs if ('git+' not in x) and ( From 6002e987480c73bfb5b2bf9aa66574040da7d40d Mon Sep 17 00:00:00 2001 From: sokolegg Date: Sat, 15 Oct 2022 22:52:12 +0400 Subject: [PATCH 42/50] Refactoring of test (new base test and ocr tests was moved) New Import Fix by using safe_imports --- Makefile | 8 +- piper/__init__.py | 10 + piper/base/executors.py | 18 +- piper/configurations.py | 18 +- piper/imports.py | 91 +++++ piper/services/__init__.py | 19 +- piper/utils/tesrct_utils.py | 11 +- tests/base_test.py | 46 +++ tests/container_test.py | 28 -- tests/{running_piper_test.py => envs_test.py} | 8 +- tests/{ => ocr}/ocr_data.jpg | Bin tests/{ => ocr}/ocr_data.pdf | Bin tests/{ => ocr}/ocr_ner.png | Bin tests/{ => ocr}/tsrct_test.py | 154 ++++---- ...iperOperator.py => piper_operator_test.py} | 346 +++++++++--------- tests/use_case_folder_processing.py | 2 +- 16 files changed, 433 insertions(+), 326 deletions(-) create mode 100644 piper/imports.py create mode 100644 tests/base_test.py delete mode 100644 tests/container_test.py rename tests/{running_piper_test.py => envs_test.py} (88%) rename tests/{ => ocr}/ocr_data.jpg (100%) rename tests/{ => ocr}/ocr_data.pdf (100%) rename tests/{ => ocr}/ocr_ner.png (100%) rename tests/{ => ocr}/tsrct_test.py (93%) rename tests/{PiperOperator.py => piper_operator_test.py} (97%) diff --git a/Makefile b/Makefile index 1105223..fd98f3a 100644 --- a/Makefile +++ b/Makefile @@ -1,18 +1,16 @@ SHELL:=/usr/bin/env bash -.PHONY: lint +.PHONY: lint unit package test jupyter + lint: flake8 piper -.PHONY: unit unit: - pytest -vs tests/running_piper_test.py::TestCompose + pytest -vs tests/envs_test.py::TestCompose -.PHONY: package package: pip check -.PHONY: test test: package unit jupyter: diff --git a/piper/__init__.py b/piper/__init__.py index e69de29..24306f9 100644 --- a/piper/__init__.py +++ b/piper/__init__.py @@ -0,0 +1,10 @@ +from piper.configurations import get_configuration +from piper.imports import activate_safe_import + +configuration = get_configuration() +if configuration.ignore_import_errors: + """ + Piper activates safe import if configured True. + This ignores any import errors for safe imports in piper.base.executors + """ + activate_safe_import() diff --git a/piper/base/executors.py b/piper/base/executors.py index 186045a..e4a4c7d 100644 --- a/piper/base/executors.py +++ b/piper/base/executors.py @@ -1,3 +1,11 @@ +# from piper.base.docker import PythonTesseractImage +from piper.base.backend.utils import (render_fast_api_backend, + render_fast_api_tsrct_backend) +from piper.base.docker import PythonImage +from piper.configurations import get_configuration +from piper.envs import get_env, is_current_env, is_docker_env +from piper.utils import docker_utils as du + import inspect import os import sys @@ -12,14 +20,6 @@ from loguru import logger from pydantic import BaseModel # , BytesObject, ListOfStringsObject -# from piper.base.docker import PythonTesseractImage -from piper.base.backend.utils import (render_fast_api_backend, - render_fast_api_tsrct_backend) -from piper.base.docker import PythonImage -from piper.configurations import get_configuration -from piper.envs import get_env, is_current_env, is_docker_env -from piper.utils import docker_utils as du - class BaseExecutor: pass @@ -89,7 +89,7 @@ async def __call__(self, *args, **kwargs): def copy_piper(path: str): cfg = get_configuration() from distutils.dir_util import copy_tree - copy_tree(cfg.piper_path, f"{path}/piper") + copy_tree(cfg.piper_path, f"{path}piper") def copy_scripts(path: str, scripts: Dict[str, str]): diff --git a/piper/configurations.py b/piper/configurations.py index d01eb5f..2af2795 100644 --- a/piper/configurations.py +++ b/piper/configurations.py @@ -1,15 +1,15 @@ class Configuration: - # path = "/Users/olegsokolov/PycharmProjects/piper/applications" - path = "./piper_new_out/" - test_path = "./piper_test_out/" - piper_path = "piper" - default_env = "docker" - docker_app_port = 8788 + path: str = "./piper_new_out/" + test_path: str = "./piper_test_out/" + piper_path: str = "../piper" + default_env: str = "docker" + docker_app_port: int = 8788 - name_venv = "venv_test" - number = 10 + name_venv: str = "venv_test" + number: int = 10 - env = 'compose' + env: str = 'compose' + ignore_import_errors: bool = False # start time and counter wait_on_iter = 0.5 diff --git a/piper/imports.py b/piper/imports.py new file mode 100644 index 0000000..8af0a83 --- /dev/null +++ b/piper/imports.py @@ -0,0 +1,91 @@ +import builtins +from types import ModuleType + +from piper.utils.logger_utils import logger + + +def _empty_import(): + logger.error("Import Not Installed Yet!") + raise ImportError + + +real_import = _empty_import + + +class PiperDummyModule(ModuleType): + + def __init__(self, name): + super().__init__(name) + logger.info(f"Piper emulates {name} module") + + def __getattr__(self, name): + return PiperDummyModule(name) + + __all__ = [] + + +def try_import(name, globals={}, locals={}, fromlist=[], level=0): + """ + This import replace real Python import with fake import which returns warning only and PiperDummyModule. + """ + try: + return real_import(name, globals, locals, fromlist, level) + except ImportError as e: + logger.warning(f"Piper ignores ImportError and module {name} replaced by dummy module. ImportError: {e}") + module = PiperDummyModule(name) + return module + + +""" +Here Piper saves default Python *import* only. +""" +if builtins.__import__ != try_import: + real_import = builtins.__import__ + + +def set_ignore_import_errors(ignore: bool = True): + if ignore: + builtins.__import__ = try_import + else: + builtins.__import__ = real_import + + +def activate_safe_import(): + """ + Activate piper safe import with try_import function. + Piper needs safe import to ignore imports in Executors examples. + For instance if you want to use Pandas in your CustomExecutor normally you have to *import pandas* + But we don't want to install everything for every executor in default Python (where Piper is installed) + For that you have to ignore every Executors dependencies. + + Otherwise, you can wrap buy yourself every Executors import with try_import + or you can use directly only *requirements* field in your CustomExecutor. + + """ + logger.info(f"Piper activates safe import") + set_ignore_import_errors(ignore=True) + + +def deactivate_safe_import(): + logger.info(f"Piper deactivates safe import") + set_ignore_import_errors(ignore=False) + + +class safe_import: + """ + Context manager to activate safe import on some part of imports. + For instance: + + with safe_import(): + import foo + import bar + + foo would be ignored and replaced by PiperDummyModule + boo wouldn't be replaced (you can catch ImportError) + """ + + def __enter__(self): + activate_safe_import() + + def __exit__(self, type, value, traceback): + deactivate_safe_import() diff --git a/piper/services/__init__.py b/piper/services/__init__.py index 8bd8650..6dcc888 100644 --- a/piper/services/__init__.py +++ b/piper/services/__init__.py @@ -1,8 +1,11 @@ -import json import sys -import spacy -from fastapi.responses import JSONResponse +from piper.imports import safe_import + +with safe_import(): + import spacy + from fastapi.responses import JSONResponse + from loguru import logger from pydantic import BaseModel @@ -25,16 +28,6 @@ class ListOfStringsObject(BaseModel): value: list -class TestMessageAdder(FastAPIExecutor): - - def __init__(self, appender="TEST", **kwargs): - self.appender = appender - super().__init__(**kwargs) - - async def run(self, message: StringValue) -> StringValue: - return StringValue(value=(message.value + self.appender)) - - class TesseractRecognizer(FastAPITesseractExecutor): ''' Tesseract OCR implementation service diff --git a/piper/utils/tesrct_utils.py b/piper/utils/tesrct_utils.py index 81081b3..68dc1a4 100644 --- a/piper/utils/tesrct_utils.py +++ b/piper/utils/tesrct_utils.py @@ -1,7 +1,10 @@ -import cv2 -import numpy as np -import pdf2image -import pytesseract +from piper.imports import safe_import +with safe_import(): + import cv2 + import numpy as np + import pdf2image + import pytesseract + import requests from loguru import logger diff --git a/tests/base_test.py b/tests/base_test.py new file mode 100644 index 0000000..3de108f --- /dev/null +++ b/tests/base_test.py @@ -0,0 +1,46 @@ +# pytest -vs tests/base_test.py::TestPiperBase +import asyncio +import os +import sys +import time + +root_dir = os.path.join(os.path.realpath(os.path.pardir), 'piper') +sys.path.insert(1, root_dir) + + +class TestPiperBase: + + def test_simple_executor(self): + from piper.base.executors import FastAPIExecutor + from piper.services import StringValue + from piper.configurations import get_configuration + from piper.envs import CurrentEnv, DockerEnv + + class TestMessageAdder(FastAPIExecutor): + + def __init__(self, appender="TEST", **kwargs): + self.appender = appender + super().__init__(**kwargs) + + async def run(self, message: StringValue) -> StringValue: + return StringValue(value=(message.value + self.appender)) + + cfg = get_configuration() + loop = asyncio.get_event_loop() + init_value = "TEST_container_" + x = StringValue(value=init_value) + need_result = f'{init_value}TEST' + + with CurrentEnv() as env: + adder = TestMessageAdder(appender="!", port=cfg.docker_app_port) + result = loop.run_until_complete(adder(x)) + print(result) + assert result.get('value') == need_result + + with DockerEnv() as env: + adder = TestMessageAdder(appender="!", port=cfg.docker_app_port) + result = loop.run_until_complete(adder(x)) + print(result) + adder.rm_container() + assert result.get('value') == need_result + diff --git a/tests/container_test.py b/tests/container_test.py deleted file mode 100644 index 396205e..0000000 --- a/tests/container_test.py +++ /dev/null @@ -1,28 +0,0 @@ -import asyncio -import os -import sys - -import docker - -root_dir = os.path.join(os.path.realpath(os.path.pardir), 'piper') -sys.path.insert(1, root_dir) - -from piper.base.executors import copy_piper, copy_scripts -from piper.configurations import get_configuration -from piper.envs import CurrentEnv, is_docker_env -from piper.services import StringValue, TestMessageAdder -from piper.utils import docker_utils as du - - -def test_start_container(): - cfg = get_configuration() - loop = asyncio.get_event_loop() - init_value = "TEST_container_" - x = StringValue(value=init_value) - need_result = f'{init_value}TEST' - adder = TestMessageAdder(appender="!", port=cfg.docker_app_port) - result = loop.run_until_complete(adder(x)) - print(result) - adder.rm_container() - - assert result.get('value') == need_result diff --git a/tests/running_piper_test.py b/tests/envs_test.py similarity index 88% rename from tests/running_piper_test.py rename to tests/envs_test.py index a7de786..1ca9658 100644 --- a/tests/running_piper_test.py +++ b/tests/envs_test.py @@ -1,11 +1,5 @@ -# pytest -vs tests/running_piper_test.py::TestDocker +# pytest -vs tests/envs_test.py::TestDocker import time -from pathlib import Path -from shlex import split -from subprocess import check_call -from tempfile import TemporaryDirectory -from venv import create - import requests from piper.envs import ComposeEnv, VirtualEnv diff --git a/tests/ocr_data.jpg b/tests/ocr/ocr_data.jpg similarity index 100% rename from tests/ocr_data.jpg rename to tests/ocr/ocr_data.jpg diff --git a/tests/ocr_data.pdf b/tests/ocr/ocr_data.pdf similarity index 100% rename from tests/ocr_data.pdf rename to tests/ocr/ocr_data.pdf diff --git a/tests/ocr_ner.png b/tests/ocr/ocr_ner.png similarity index 100% rename from tests/ocr_ner.png rename to tests/ocr/ocr_ner.png diff --git a/tests/tsrct_test.py b/tests/ocr/tsrct_test.py similarity index 93% rename from tests/tsrct_test.py rename to tests/ocr/tsrct_test.py index e196511..9254634 100644 --- a/tests/tsrct_test.py +++ b/tests/ocr/tsrct_test.py @@ -1,77 +1,77 @@ -import asyncio -import os -import sys - -import requests - -root_dir = os.path.join(os.path.realpath(os.path.pardir), 'piper') -sys.path.insert(1, root_dir) - -import os -from pathlib import Path - -import pytest - -from piper.configurations import get_configuration -from piper.envs import DockerEnv, is_docker_env -from piper.services import StringValue, TesseractRecognizer -from piper.utils import docker_utils as du -from piper.utils import tesrct_utils as tu - -main_app_url = f'http://localhost:8788' -file_path = Path(__file__).parent - - -# pytest -vs tests/tsrct_test.py::TestTesseract::test_recognizer -class TestTesseract: - """ - Docker container API test. Methods: - test_recognizer_jpg - test_recognizer_pdf - health_check - """ - - def test_recognizer_jpg(self): - """ - jpg file recognize test - """ - fn = file_path.joinpath('ocr_data.jpg') - url = f'{main_app_url}/recognize' - - result = tu.send_file_to_service(url, fn) - print('result.status_code', result.status_code) - # assert result is None - - assert result.status_code == 200 - try: - data = result.json() - print('data', data) - assert len(data) != 0 - except Exception as e: - pytest.raises(Exception) - - def test_recognizer_pdf(self): - """ - pdf file recognize test - """ - fn = file_path.joinpath('ocr_data.pdf') - url = f'{main_app_url}/recognize' - - result = tu.send_file_to_service(url, fn) - print(result.status_code) - assert result.status_code == 200 - try: - data = result.json() - print('data', data) - assert len(data) != 0 - except Exception as e: - pytest.raises(Exception) - - def test_health_check(self): - """ - health check test - """ - url = f'{main_app_url}/health_check' - print(url) - result = requests.post(url) - assert result.status_code == 200 +import asyncio +import os +import sys + +import requests + +root_dir = os.path.join(os.path.realpath(os.path.pardir), '../../piper') +sys.path.insert(1, root_dir) + +import os +from pathlib import Path + +import pytest + +from piper.configurations import get_configuration +from piper.envs import DockerEnv, is_docker_env +from piper.services import StringValue, TesseractRecognizer +from piper.utils import docker_utils as du +from piper.utils import tesrct_utils as tu + +main_app_url = f'http://localhost:8788' +file_path = Path(__file__).parent + + +# pytest -vs tests/tsrct_test.py::TestTesseract::test_recognizer +class TestTesseract: + """ + Docker container API test. Methods: + test_recognizer_jpg + test_recognizer_pdf + health_check + """ + + def test_recognizer_jpg(self): + """ + jpg file recognize test + """ + fn = file_path.joinpath('ocr_data.jpg') + url = f'{main_app_url}/recognize' + + result = tu.send_file_to_service(url, fn) + print('result.status_code', result.status_code) + # assert result is None + + assert result.status_code == 200 + try: + data = result.json() + print('data', data) + assert len(data) != 0 + except Exception as e: + pytest.raises(Exception) + + def test_recognizer_pdf(self): + """ + pdf file recognize test + """ + fn = file_path.joinpath('ocr_data.pdf') + url = f'{main_app_url}/recognize' + + result = tu.send_file_to_service(url, fn) + print(result.status_code) + assert result.status_code == 200 + try: + data = result.json() + print('data', data) + assert len(data) != 0 + except Exception as e: + pytest.raises(Exception) + + def test_health_check(self): + """ + health check test + """ + url = f'{main_app_url}/health_check' + print(url) + result = requests.post(url) + assert result.status_code == 200 diff --git a/tests/PiperOperator.py b/tests/piper_operator_test.py similarity index 97% rename from tests/PiperOperator.py rename to tests/piper_operator_test.py index 85efc04..5657cb2 100644 --- a/tests/PiperOperator.py +++ b/tests/piper_operator_test.py @@ -1,173 +1,173 @@ -import json -import os -import sys -from pprint import pprint - -import requests -from loguru import logger - -# root_dir = os.path.realpath(os.path.pardir) -# logger.info(f'root dir is {root_dir}') -# sys.path.insert(1, root_dir) -# from piper.utils import tesrct_utils as tu - - -HEADERS = {"Content-Type": "application/json"} -NER_RESPONSE_KEY = 'body' - - -class PiperOperatorException(BaseException): - def __init__(self, msg): - pass - # logger.exception(msg) - - -class FileLoadException(PiperOperatorException): - def __init__(self, fn): - self.fn = fn - super().__init__(f'file {fn} can`t be loaded') - - -class JSONGetKeyException(PiperOperatorException): - def __init__(self, key): - self.key = key - super().__init__(f'can`t get JSON key {key}') - - -class NoAvailableModelsException(PiperOperatorException): - def __init__(self): - super().__init__(f'there are no spacy models') - - -def get_data_by_key_from_response(cur_response, k): - j = cur_response.json() - if not j and k not in j.keys(): - raise JSONGetKeyException(k) - v = j.get(k) - return v - - -def get_data_by_key_from_url(url, key, post=True, data=None, file_name=""): - try: - if post: - if file_name: - logger.info(f'filename is {file_name}') - multipart_form_data = { - 'file': open(file_name, 'rb') - } - cur_response = requests.post(url, files=multipart_form_data, verify=False) - else: - cur_response = requests.post(url, headers=HEADERS, data=data) - - logger.debug(f'url is {url}, response is {cur_response}, content is {cur_response.content}') - cur_response.raise_for_status() - if key: - logger.debug(f'try to get value for key {key}') - # pprint(cur_response.json()) - val = get_data_by_key_from_response(cur_response, key) - logger.debug(f'value for key is {val}') - return val - else: - return cur_response - - else: - cur_response = requests.get(url, headers=HEADERS, data=data) - cur_response.raise_for_status() - # logger.debug(f'response is {cur_response.text}') - val = get_data_by_key_from_response(cur_response, key) - return val - - except requests.exceptions.ConnectionError as ce: - logger.exception(f'can`t connect to url: {ce}') - - except JSONGetKeyException as cjke: - logger.exception(f'can`t get key from response: {cjke}') - - except Exception as e: - logger.exception(f'error while processing url {url}: {e}') - - -class PiperNLPWorker(): - ''' - simple class shows how to use piper NLPProcessor - ''' - - def __init__(self, base_url): - self.base_url = base_url - - ### RECOGNIZE - self.url_tsrct_cfg = f'{self.base_url}/set_config' - self.url_rcg = f'{self.base_url}/recognize' - - ### NER - # get all available SPACY models url - self.url_spacy_all_models = f'{self.base_url}/get_ner_models' - # set current SPACY model url - self.url_spacy_set_model = f'{self.base_url}/set_ner_model' - # get named entitys from text url - self.url_spacy_get_NE = f'{self.base_url}/extract_named_ents' - - def get_available_ner_models(self): - return get_data_by_key_from_url(self.url_spacy_all_models, 'available_models', post=False) - - def set_current_spacy_model(self, model): - return get_data_by_key_from_url(self.url_spacy_set_model, '', post=True, data=json.dumps({'model_name': model})) - - def get_named_ent_from_text(self, txt): - resp = get_data_by_key_from_url(self.url_spacy_get_NE, 'result', post=False, data=json.dumps({'txt': txt})) - logger.debug(f'url is {resp}, response is {resp}') - if NER_RESPONSE_KEY in resp.keys(): - named_ents = resp.get(NER_RESPONSE_KEY) - if named_ents: - return json.loads(named_ents) - else: - logger.info(f'NER result is empty: {named_ents}') - return [] - else: - raise JSONGetKeyException(NER_RESPONSE_KEY) - - def get_text_from_file(self, fn): - try: - txt = get_data_by_key_from_url(self.url_rcg, 'text', post=True, file_name=fn) - return txt - - except Exception as e: - logger.error(f'error while extract text from file {fn}') - logger.exception(e) - - def set_tesseract_config(self, conf): - return get_data_by_key_from_url(self.url_tsrct_cfg, '', post=True, data=json.dumps(conf)) - - -if __name__ == '__main__': - piper_worker = PiperNLPWorker('http://localhost:8788') - - amodels = piper_worker.get_available_ner_models() - print('all models', amodels) - - # model = amodels[0] - model = 'en_core_web_sm' - ok = piper_worker.set_current_spacy_model(model) - # print(ok, ok.text) - if ok: - print('model set!') - else: - print('model does not set') - sys.exit() - - txt = 'The Alraigo Incident occurred on 6th June 1983, when a lost British Royal Navy Sea Harrier fighter aircraft landed on the deck of a Spanish container ship.[1][2] Its pilot, Sub-lieutenant Ian Watson, was a junior Royal Navy Pilot undertaking his first NATO exercise from HMS Illustrious, which was operating off the coast of Portugal. Watson was launched in a pair of aircraft tasked with locating a French aircraft carrier under combat conditions including radio-silence and radar switched off.' - try: - resp = piper_worker.get_named_ent_from_text(txt) - except JSONGetKeyException as e: - logger.exception(e) - # pprint(resp) - - txt = piper_worker.get_text_from_file('/home/pavel/repo/piper_new/piper/tests/ocr_data.pdf') - logger.info(f'txt {txt}') - - ts_conf = dict() - ts_conf['ts_lang'] = 'eng' - ts_conf['ts_config_row'] = rf'--oem 1 --psm 6' - - resp = piper_worker.set_tesseract_config(ts_conf) - logger.info(resp) +import json +import os +import sys +from pprint import pprint + +import requests +from loguru import logger + +# root_dir = os.path.realpath(os.path.pardir) +# logger.info(f'root dir is {root_dir}') +# sys.path.insert(1, root_dir) +# from piper.utils import tesrct_utils as tu + + +HEADERS = {"Content-Type": "application/json"} +NER_RESPONSE_KEY = 'body' + + +class PiperOperatorException(BaseException): + def __init__(self, msg): + pass + # logger.exception(msg) + + +class FileLoadException(PiperOperatorException): + def __init__(self, fn): + self.fn = fn + super().__init__(f'file {fn} can`t be loaded') + + +class JSONGetKeyException(PiperOperatorException): + def __init__(self, key): + self.key = key + super().__init__(f'can`t get JSON key {key}') + + +class NoAvailableModelsException(PiperOperatorException): + def __init__(self): + super().__init__(f'there are no spacy models') + + +def get_data_by_key_from_response(cur_response, k): + j = cur_response.json() + if not j and k not in j.keys(): + raise JSONGetKeyException(k) + v = j.get(k) + return v + + +def get_data_by_key_from_url(url, key, post=True, data=None, file_name=""): + try: + if post: + if file_name: + logger.info(f'filename is {file_name}') + multipart_form_data = { + 'file': open(file_name, 'rb') + } + cur_response = requests.post(url, files=multipart_form_data, verify=False) + else: + cur_response = requests.post(url, headers=HEADERS, data=data) + + logger.debug(f'url is {url}, response is {cur_response}, content is {cur_response.content}') + cur_response.raise_for_status() + if key: + logger.debug(f'try to get value for key {key}') + # pprint(cur_response.json()) + val = get_data_by_key_from_response(cur_response, key) + logger.debug(f'value for key is {val}') + return val + else: + return cur_response + + else: + cur_response = requests.get(url, headers=HEADERS, data=data) + cur_response.raise_for_status() + # logger.debug(f'response is {cur_response.text}') + val = get_data_by_key_from_response(cur_response, key) + return val + + except requests.exceptions.ConnectionError as ce: + logger.exception(f'can`t connect to url: {ce}') + + except JSONGetKeyException as cjke: + logger.exception(f'can`t get key from response: {cjke}') + + except Exception as e: + logger.exception(f'error while processing url {url}: {e}') + + +class PiperNLPWorker(): + ''' + simple class shows how to use piper NLPProcessor + ''' + + def __init__(self, base_url): + self.base_url = base_url + + ### RECOGNIZE + self.url_tsrct_cfg = f'{self.base_url}/set_config' + self.url_rcg = f'{self.base_url}/recognize' + + ### NER + # get all available SPACY models url + self.url_spacy_all_models = f'{self.base_url}/get_ner_models' + # set current SPACY model url + self.url_spacy_set_model = f'{self.base_url}/set_ner_model' + # get named entitys from text url + self.url_spacy_get_NE = f'{self.base_url}/extract_named_ents' + + def get_available_ner_models(self): + return get_data_by_key_from_url(self.url_spacy_all_models, 'available_models', post=False) + + def set_current_spacy_model(self, model): + return get_data_by_key_from_url(self.url_spacy_set_model, '', post=True, data=json.dumps({'model_name': model})) + + def get_named_ent_from_text(self, txt): + resp = get_data_by_key_from_url(self.url_spacy_get_NE, 'result', post=False, data=json.dumps({'txt': txt})) + logger.debug(f'url is {resp}, response is {resp}') + if NER_RESPONSE_KEY in resp.keys(): + named_ents = resp.get(NER_RESPONSE_KEY) + if named_ents: + return json.loads(named_ents) + else: + logger.info(f'NER result is empty: {named_ents}') + return [] + else: + raise JSONGetKeyException(NER_RESPONSE_KEY) + + def get_text_from_file(self, fn): + try: + txt = get_data_by_key_from_url(self.url_rcg, 'text', post=True, file_name=fn) + return txt + + except Exception as e: + logger.error(f'error while extract text from file {fn}') + logger.exception(e) + + def set_tesseract_config(self, conf): + return get_data_by_key_from_url(self.url_tsrct_cfg, '', post=True, data=json.dumps(conf)) + + +if __name__ == '__main__': + piper_worker = PiperNLPWorker('http://localhost:8788') + + amodels = piper_worker.get_available_ner_models() + print('all models', amodels) + + # model = amodels[0] + model = 'en_core_web_sm' + ok = piper_worker.set_current_spacy_model(model) + # print(ok, ok.text) + if ok: + print('model set!') + else: + print('model does not set') + sys.exit() + + txt = 'The Alraigo Incident occurred on 6th June 1983, when a lost British Royal Navy Sea Harrier fighter aircraft landed on the deck of a Spanish container ship.[1][2] Its pilot, Sub-lieutenant Ian Watson, was a junior Royal Navy Pilot undertaking his first NATO exercise from HMS Illustrious, which was operating off the coast of Portugal. Watson was launched in a pair of aircraft tasked with locating a French aircraft carrier under combat conditions including radio-silence and radar switched off.' + try: + resp = piper_worker.get_named_ent_from_text(txt) + except JSONGetKeyException as e: + logger.exception(e) + # pprint(resp) + + txt = piper_worker.get_text_from_file('/home/pavel/repo/piper_new/piper/tests/ocr_data.pdf') + logger.info(f'txt {txt}') + + ts_conf = dict() + ts_conf['ts_lang'] = 'eng' + ts_conf['ts_config_row'] = rf'--oem 1 --psm 6' + + resp = piper_worker.set_tesseract_config(ts_conf) + logger.info(resp) diff --git a/tests/use_case_folder_processing.py b/tests/use_case_folder_processing.py index 02c408a..63e640a 100644 --- a/tests/use_case_folder_processing.py +++ b/tests/use_case_folder_processing.py @@ -12,7 +12,7 @@ from pathlib import Path import pytest -from PiperOperator import * +from piper_operator_test import * from piper.configurations import get_configuration from piper.envs import DockerEnv, is_docker_env From 97b0a844d2ab4e1c9fe1fc66cbd72ed22413e9a4 Mon Sep 17 00:00:00 2001 From: sokolegg Date: Sat, 15 Oct 2022 23:02:35 +0400 Subject: [PATCH 43/50] fix config for make test --- Makefile | 2 ++ piper/configurations.py | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index fd98f3a..70be106 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,9 @@ lint: flake8 piper unit: + #pytest -vs tests/base_test.py pytest -vs tests/envs_test.py::TestCompose + pytest -vs tests/envs_test.py::TestVenv package: pip check diff --git a/piper/configurations.py b/piper/configurations.py index 2af2795..e9d9727 100644 --- a/piper/configurations.py +++ b/piper/configurations.py @@ -1,7 +1,7 @@ class Configuration: path: str = "./piper_new_out/" test_path: str = "./piper_test_out/" - piper_path: str = "../piper" + piper_path: str = "piper" default_env: str = "docker" docker_app_port: int = 8788 From a91f6de460a5fda5cec2dc42d14d34a254677598 Mon Sep 17 00:00:00 2001 From: sokolegg Date: Tue, 18 Oct 2022 19:02:44 +0400 Subject: [PATCH 44/50] fix safe import and base executor test --- Makefile | 2 +- piper/base/docker/__init__.py | 5 ++++- piper/base/executors.py | 25 +++++++++++++---------- piper/configurations.py | 9 ++++++--- piper/imports.py | 36 ++++++++++++++++++++++++++++----- piper/services/__init__.py | 5 +++-- piper/utils/docker_utils.py | 13 ++++++++---- piper/utils/logger_utils.py | 2 +- piper/utils/tesrct_utils.py | 3 ++- tests/base_test.py | 38 ++++++++++++++++------------------- 10 files changed, 88 insertions(+), 50 deletions(-) diff --git a/Makefile b/Makefile index 70be106..147db74 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ lint: flake8 piper unit: - #pytest -vs tests/base_test.py + pytest -vs tests/base_test.py pytest -vs tests/envs_test.py::TestCompose pytest -vs tests/envs_test.py::TestVenv diff --git a/piper/base/docker/__init__.py b/piper/base/docker/__init__.py index abefeda..055fee0 100644 --- a/piper/base/docker/__init__.py +++ b/piper/base/docker/__init__.py @@ -22,7 +22,10 @@ def render(self): trim_blocks=True, lstrip_blocks=True) template = jinja_env.get_template(self.template_file) - return template.render(cmd=self.cmd, python_docker_version=self.python_docker_version, run_command_lines=self.run_rows, post_install_lines=self.post_install_lines) + return template.render(cmd=self.cmd, + python_docker_version=self.python_docker_version, + run_command_lines=self.run_rows, + post_install_lines=self.post_install_lines) # class PythonTesseractImage: diff --git a/piper/base/executors.py b/piper/base/executors.py index e4a4c7d..7f1a87a 100644 --- a/piper/base/executors.py +++ b/piper/base/executors.py @@ -4,22 +4,22 @@ from piper.base.docker import PythonImage from piper.configurations import get_configuration from piper.envs import get_env, is_current_env, is_docker_env -from piper.utils import docker_utils as du +from piper.utils import docker_utils import inspect -import os import sys import time from abc import ABC, abstractmethod -from distutils.command.config import config from typing import Dict +from distutils.dir_util import copy_tree import aiohttp import docker import requests -from loguru import logger from pydantic import BaseModel # , BytesObject, ListOfStringsObject +from piper.utils.logger_utils import logger + class BaseExecutor: pass @@ -88,7 +88,6 @@ async def __call__(self, *args, **kwargs): def copy_piper(path: str): cfg = get_configuration() - from distutils.dir_util import copy_tree copy_tree(cfg.piper_path, f"{path}piper") @@ -107,7 +106,8 @@ def write_requirements(path, requirements): def build_image(path: str, docker_image): client = docker.DockerClient(base_url='unix://var/run/docker.sock') image = docker_image.render() - with open(f"{path}/Dockerfile", "w") as output: + print(f"{path}Dockerfile") + with open(f"{path}Dockerfile", "w") as output: output.write(image) image, logs = client.images.build(path=path, @@ -146,6 +146,7 @@ def wait_for_fast_api_app_start(host, external_port, wait_on_iter, n_iters): if r.status_code == 200: break except Exception as e: + logger.error(f"Exception while starting FastAPI app {e}") time.sleep(wait_on_iter) if i == n_iters: @@ -170,12 +171,15 @@ def __init__(self, port: int = 8080, **service_kwargs): copy_piper(project_output_path) copy_scripts(project_output_path, self.scripts()) - # build_image(project_output_path, docker_image) self.create_fast_api_files(project_output_path, **service_kwargs) + docker_image = PythonImage(self.image_tag, "3.9", cmd=f"./run.sh", template_file='default-python.j2', + run_rows="", post_install_lines="") + build_image(project_output_path, docker_image) + # create and run docker container # if container exits it will be recreated! - du.create_image_and_container_by_dockerfile( + docker_utils.create_image_and_container_by_dockerfile( docker_client, project_output_path, self.image_tag, @@ -206,14 +210,13 @@ def create_fast_api_files(self, path: str, **service_kwargs): function_name=self.base_handler, request_model="StringValue", response_model="StringValue") - with open(f"{path}/main.py", "w") as output: output.write(backend) write_requirements(path, self.requirements) gunicorn = "#!/bin/bash \n" \ - f"gunicorn -b 0.0.0.0:8080 --workers {cfg.n_gunicorn_workers} main:app --worker-class uvicorn.workers.UvicornWorker --preload --timeout 120 --reload=True" + f"gunicorn -b 0.0.0.0:8080 --workers {cfg.n_gunicorn_workers} main:app --worker-class uvicorn.workers.UvicornWorker --preload --timeout 120" with open(f"{path}/run.sh", "w") as output: output.write(gunicorn) @@ -257,7 +260,7 @@ def __init__(self, port: int = 8080, **service_kwargs): # create and run docker container # if container exits it will be recreated! - du.create_image_and_container_by_dockerfile( + docker_utils.create_image_and_container_by_dockerfile( docker_client, project_output_path, self.image_tag, diff --git a/piper/configurations.py b/piper/configurations.py index e9d9727..240c734 100644 --- a/piper/configurations.py +++ b/piper/configurations.py @@ -1,6 +1,9 @@ +import time + + class Configuration: - path: str = "./piper_new_out/" - test_path: str = "./piper_test_out/" + path: str = f"./applications/piper_project_{time.time_ns()}/" + test_path: str = f"./applications/piper_project_{time.time_ns()}/" piper_path: str = "piper" default_env: str = "docker" docker_app_port: int = 8788 @@ -9,7 +12,7 @@ class Configuration: number: int = 10 env: str = 'compose' - ignore_import_errors: bool = False + ignore_import_errors: bool = True # start time and counter wait_on_iter = 0.5 diff --git a/piper/imports.py b/piper/imports.py index 8af0a83..7ac5fbc 100644 --- a/piper/imports.py +++ b/piper/imports.py @@ -1,7 +1,11 @@ import builtins +import inspect from types import ModuleType from piper.utils.logger_utils import logger +from piper.configurations import get_configuration + +configuration = get_configuration() def _empty_import(): @@ -27,13 +31,35 @@ def __getattr__(self, name): def try_import(name, globals={}, locals={}, fromlist=[], level=0): """ This import replace real Python import with fake import which returns warning only and PiperDummyModule. + This works for everything under piper/ frameworks files by filename but not for piper import (like piper.base) + And this also works for every file where you import something from piper firstly ! """ - try: + is_piper_imported_from_previous_module = False + prev_module_locals = inspect.currentframe().f_back.f_locals + prev_module_globals = inspect.currentframe().f_back.f_globals + prev_modules = prev_module_locals | prev_module_globals + + if prev_modules.values(): + prev_modules = [v for v in prev_modules.values() if v is not None and hasattr(v, "__module__")] + if len(prev_modules) > 0: + is_piper_imported_from_previous_module = \ + any("piper" in v.__module__ for v in prev_modules if type(v.__module__) == str) + + is_import_from_piper_source_code = "__file__" in globals and "piper/" in globals["__file__"] + not_piper_import = not ("piper" in name) + is_from_source_but_not_piper = is_import_from_piper_source_code and not_piper_import + + if is_piper_imported_from_previous_module and is_from_source_but_not_piper: + logger.info(f"Piper activates safe import for library {name} in piper file {globals['__file__']} ") + try: + return real_import(name, globals, locals, fromlist, level) + except ImportError as e: + logger.warning(f"Piper ignores ImportError and module {name} " + f": replaced by dummy module. ImportError: {e.with_traceback(None)}") + module = PiperDummyModule(name) + return module + else: return real_import(name, globals, locals, fromlist, level) - except ImportError as e: - logger.warning(f"Piper ignores ImportError and module {name} replaced by dummy module. ImportError: {e}") - module = PiperDummyModule(name) - return module """ diff --git a/piper/services/__init__.py b/piper/services/__init__.py index 6dcc888..3d8fc65 100644 --- a/piper/services/__init__.py +++ b/piper/services/__init__.py @@ -6,14 +6,15 @@ import spacy from fastapi.responses import JSONResponse -from loguru import logger +# from loguru import logger +from piper.utils.logger_utils import logger from pydantic import BaseModel from piper.base.executors import FastAPIExecutor, FastAPITesseractExecutor from piper.configurations import get_configuration from piper.utils import tesrct_utils as tu -logger.add("file.log", level="INFO", backtrace=True, diagnose=True, rotation='5 MB') +# logger.add("file.log", level="INFO", backtrace=True, diagnose=True, rotation='5 MB') class StringValue(BaseModel): diff --git a/piper/utils/docker_utils.py b/piper/utils/docker_utils.py index 3bcbd3d..4d52cc2 100644 --- a/piper/utils/docker_utils.py +++ b/piper/utils/docker_utils.py @@ -1,9 +1,11 @@ +from piper.configurations import get_configuration + import sys import time import docker -from configurations import get_configuration -from loguru import logger +# from loguru import logger +from piper.utils.logger_utils import logger cfg = get_configuration() @@ -127,7 +129,7 @@ def image_find_and_rm(docker_client, image_tag): return True -def create_image_and_container_by_dockerfile(docker_client, path, image_tag, container_name, port): +def create_image_and_container_by_dockerfile(docker_client: docker.DockerClient, path, image_tag, container_name, port): # should be deleted status = stop_and_rm_container(docker_client, container_name) @@ -156,7 +158,10 @@ def create_image_and_container_by_dockerfile(docker_client, path, image_tag, con # run container try: - container = docker_client.containers.run(image_tag, name=container_name, detach=True, ports={8080:port}) + container = docker_client.containers.run(image_tag, + name=container_name, + detach=True, + ports={8080: port}) for log in container.logs(): logger.debug(log) logger.info(f'container {container} created') diff --git a/piper/utils/logger_utils.py b/piper/utils/logger_utils.py index 3bd07bb..b05ea39 100644 --- a/piper/utils/logger_utils.py +++ b/piper/utils/logger_utils.py @@ -10,7 +10,7 @@ handler.setFormatter(formatter) logger.addHandler(handler) -fh = logging.FileHandler('../piper_base_log.log') +fh = logging.FileHandler('./piper_base_log.log') fh.setLevel(logging.DEBUG) fh.setFormatter(formatter) logger.addHandler(fh) diff --git a/piper/utils/tesrct_utils.py b/piper/utils/tesrct_utils.py index 68dc1a4..b505d3b 100644 --- a/piper/utils/tesrct_utils.py +++ b/piper/utils/tesrct_utils.py @@ -6,7 +6,8 @@ import pytesseract import requests -from loguru import logger +# from loguru import logger +from piper.utils.logger_utils import logger from piper.configurations import get_configuration diff --git a/tests/base_test.py b/tests/base_test.py index 3de108f..2cab34f 100644 --- a/tests/base_test.py +++ b/tests/base_test.py @@ -1,29 +1,25 @@ # pytest -vs tests/base_test.py::TestPiperBase import asyncio -import os -import sys -import time -root_dir = os.path.join(os.path.realpath(os.path.pardir), 'piper') -sys.path.insert(1, root_dir) +from piper.base.executors import FastAPIExecutor +from piper.services import StringValue +from piper.configurations import get_configuration +from piper.envs import CurrentEnv, DockerEnv, ComposeEnv -class TestPiperBase: +class TestMessageAdder(FastAPIExecutor): - def test_simple_executor(self): - from piper.base.executors import FastAPIExecutor - from piper.services import StringValue - from piper.configurations import get_configuration - from piper.envs import CurrentEnv, DockerEnv + def __init__(self, appender="TEST", **kwargs): + self.appender = appender + super().__init__(**kwargs) - class TestMessageAdder(FastAPIExecutor): + async def run(self, message: StringValue) -> StringValue: + return StringValue(value=(message.value + self.appender)) - def __init__(self, appender="TEST", **kwargs): - self.appender = appender - super().__init__(**kwargs) - async def run(self, message: StringValue) -> StringValue: - return StringValue(value=(message.value + self.appender)) +class TestPiperBase: + + def test_simple_executor(self): cfg = get_configuration() loop = asyncio.get_event_loop() @@ -32,15 +28,15 @@ async def run(self, message: StringValue) -> StringValue: need_result = f'{init_value}TEST' with CurrentEnv() as env: - adder = TestMessageAdder(appender="!", port=cfg.docker_app_port) + adder = TestMessageAdder(port=cfg.docker_app_port) result = loop.run_until_complete(adder(x)) print(result) - assert result.get('value') == need_result + assert result.value == need_result with DockerEnv() as env: - adder = TestMessageAdder(appender="!", port=cfg.docker_app_port) + adder = TestMessageAdder(port=cfg.docker_app_port) result = loop.run_until_complete(adder(x)) print(result) adder.rm_container() - assert result.get('value') == need_result + assert result.get("value") == need_result From 28f2788b0d11c5d806b567c92d093d6828fe17fb Mon Sep 17 00:00:00 2001 From: sokolegg Date: Tue, 18 Oct 2022 22:37:13 +0400 Subject: [PATCH 45/50] Refactoring and import tests --- Makefile | 1 + piper/__init__.py | 7 +++-- piper/configurations.py | 1 + piper/imports.py | 61 ++++++++++++++++++++++++++++------------ tests/import_tests.py | 62 +++++++++++++++++++++++++++++++++++++++++ 5 files changed, 111 insertions(+), 21 deletions(-) create mode 100644 tests/import_tests.py diff --git a/Makefile b/Makefile index 147db74..2f6ae49 100644 --- a/Makefile +++ b/Makefile @@ -6,6 +6,7 @@ lint: flake8 piper unit: + pytest -vs tests/import_tests.py pytest -vs tests/base_test.py pytest -vs tests/envs_test.py::TestCompose pytest -vs tests/envs_test.py::TestVenv diff --git a/piper/__init__.py b/piper/__init__.py index 24306f9..7bcde55 100644 --- a/piper/__init__.py +++ b/piper/__init__.py @@ -1,10 +1,11 @@ from piper.configurations import get_configuration -from piper.imports import activate_safe_import +from piper.imports import _set_import_functions configuration = get_configuration() + if configuration.ignore_import_errors: """ - Piper activates safe import if configured True. + Piper activates safe import globally for piper work if configured True. This ignores any import errors for safe imports in piper.base.executors """ - activate_safe_import() + _set_import_functions(ignore=True) diff --git a/piper/configurations.py b/piper/configurations.py index 240c734..2c5c81f 100644 --- a/piper/configurations.py +++ b/piper/configurations.py @@ -13,6 +13,7 @@ class Configuration: env: str = 'compose' ignore_import_errors: bool = True + safe_import_activated: bool = False # start time and counter wait_on_iter = 0.5 diff --git a/piper/imports.py b/piper/imports.py index 7ac5fbc..971a2fc 100644 --- a/piper/imports.py +++ b/piper/imports.py @@ -28,29 +28,52 @@ def __getattr__(self, name): __all__ = [] +def _piper_was_touched_in_frame(frame_before=1): + call_function_frame = inspect.currentframe().f_back + frame = call_function_frame + for i in range(frame_before): + frame = frame.f_back + + result = False + f_locals = frame.f_locals + f_globals = frame.f_globals + all_variables = f_locals | f_globals + + if all_variables.values(): + all_variables = [v for v in all_variables.values() if v is not None] + if len(all_variables) > 0: + variables_have_piper_package = any("piper" in v.__package__ \ + for v in all_variables if hasattr(v, "__package__") and type(v.__package__) == str) + variables_have_piper_module = any("piper" in v.__module__ \ + for v in all_variables if hasattr(v, "__module__") and type(v.__module__) == str) + result = variables_have_piper_module | variables_have_piper_package + + return result + + +def _from_piper_file_but_not_piper(name: str, globals={}): + is_import_from_piper_source_code = "__file__" in globals and "piper/" in globals["__file__"] + not_piper_import = not ("piper" in name) + result = is_import_from_piper_source_code and not_piper_import + + return result + + def try_import(name, globals={}, locals={}, fromlist=[], level=0): """ This import replace real Python import with fake import which returns warning only and PiperDummyModule. This works for everything under piper/ frameworks files by filename but not for piper import (like piper.base) And this also works for every file where you import something from piper firstly ! """ - is_piper_imported_from_previous_module = False - prev_module_locals = inspect.currentframe().f_back.f_locals - prev_module_globals = inspect.currentframe().f_back.f_globals - prev_modules = prev_module_locals | prev_module_globals - - if prev_modules.values(): - prev_modules = [v for v in prev_modules.values() if v is not None and hasattr(v, "__module__")] - if len(prev_modules) > 0: - is_piper_imported_from_previous_module = \ - any("piper" in v.__module__ for v in prev_modules if type(v.__module__) == str) + if not (configuration.ignore_import_errors or configuration.safe_import_activated): + logger.info("Ignore import errors is off in Configuration and deactivated") + return real_import(name, globals, locals, fromlist, level) - is_import_from_piper_source_code = "__file__" in globals and "piper/" in globals["__file__"] - not_piper_import = not ("piper" in name) - is_from_source_but_not_piper = is_import_from_piper_source_code and not_piper_import + piper_was_touched_in_previous_frame = _piper_was_touched_in_frame(frame_before=1) + need_to_catch = piper_was_touched_in_previous_frame or _from_piper_file_but_not_piper(name, globals) - if is_piper_imported_from_previous_module and is_from_source_but_not_piper: - logger.info(f"Piper activates safe import for library {name} in piper file {globals['__file__']} ") + if need_to_catch: + logger.info(f"Piper runs safe import for library {name} in piper file {globals['__file__']} ") try: return real_import(name, globals, locals, fromlist, level) except ImportError as e: @@ -69,7 +92,7 @@ def try_import(name, globals={}, locals={}, fromlist=[], level=0): real_import = builtins.__import__ -def set_ignore_import_errors(ignore: bool = True): +def _set_import_functions(ignore: bool = True): if ignore: builtins.__import__ = try_import else: @@ -89,12 +112,14 @@ def activate_safe_import(): """ logger.info(f"Piper activates safe import") - set_ignore_import_errors(ignore=True) + configuration.safe_import_activated = True + _set_import_functions(ignore=True) def deactivate_safe_import(): logger.info(f"Piper deactivates safe import") - set_ignore_import_errors(ignore=False) + configuration.safe_import_activated = False + _set_import_functions(ignore=configuration.ignore_import_errors) class safe_import: diff --git a/tests/import_tests.py b/tests/import_tests.py new file mode 100644 index 0000000..c782663 --- /dev/null +++ b/tests/import_tests.py @@ -0,0 +1,62 @@ +import pytest + + +class TestSafeImport: + + def test_safe_import_after_piper(self): + import piper + import foo + from piper.imports import PiperDummyModule + assert isinstance(foo, (PiperDummyModule, )) + + def test_safe_import_before_piper(self): + # it doesn't work normally + with pytest.raises(ImportError): + import foo + import piper + + def test_safe_import_after_executors_import(self): + from piper.base import executors + import foo + from piper.imports import PiperDummyModule + assert isinstance(foo, (PiperDummyModule, )) + + def test_safe_import_after_base_executor(self): + from piper.base.executors import BaseExecutor + import foo + from piper.imports import PiperDummyModule + assert isinstance(foo, (PiperDummyModule, )) + + def test_safe_import_after_piper_as_p(self): + import piper as p + import foo + from piper.imports import PiperDummyModule + assert isinstance(foo, (PiperDummyModule,)) + + def test_not_ignore_error_by_flag(self): + import piper as p + p.configurations.Configuration.ignore_import_errors = False + with pytest.raises(ImportError): + import foo + + def test_safe_import_as_context_when_global_off(self): + import piper as p + p.configurations.Configuration.ignore_import_errors = False + with p.imports.safe_import(): + import foo + from piper.imports import PiperDummyModule + assert isinstance(foo, (PiperDummyModule,)) + # safe import was deactivated + with pytest.raises(ImportError): + import bar + + def test_safe_import_as_context_when_global_on(self): + import piper as p + p.configurations.Configuration.ignore_import_errors = True + with p.imports.safe_import(): + import foo + from piper.imports import PiperDummyModule + assert isinstance(foo, (PiperDummyModule,)) + # safe import was deactivated but global is on + import bar + assert isinstance(bar, (PiperDummyModule,)) \ No newline at end of file From bcb88a0b0454732cc6867c06b87e5e6a7c88569f Mon Sep 17 00:00:00 2001 From: sokolegg Date: Thu, 20 Oct 2022 00:58:27 +0400 Subject: [PATCH 46/50] Update BaseExecutor and executors dir and tests for that --- Makefile | 3 +- piper/base/executors/__init__.py | 3 + piper/base/executors/_base_executor.py | 56 ++++++++++++++ .../{executors.py => executors/fastapi.py} | 74 ++++--------------- piper/base/executors/http.py | 56 ++++++++++++++ piper/configurations.py | 4 +- piper/envs/__init__.py | 57 +++++++------- tests/base_executor_test.py | 52 +++++++++++++ tests/base_test.py | 34 +++++++-- tests/{import_tests.py => import_test.py} | 0 10 files changed, 238 insertions(+), 101 deletions(-) create mode 100644 piper/base/executors/__init__.py create mode 100644 piper/base/executors/_base_executor.py rename piper/base/{executors.py => executors/fastapi.py} (84%) create mode 100644 piper/base/executors/http.py create mode 100644 tests/base_executor_test.py rename tests/{import_tests.py => import_test.py} (100%) diff --git a/Makefile b/Makefile index 2f6ae49..3714f4e 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,8 @@ lint: flake8 piper unit: - pytest -vs tests/import_tests.py + pytest -vs tests/import_test.py + pytest -vs tests/base_executor_test.py pytest -vs tests/base_test.py pytest -vs tests/envs_test.py::TestCompose pytest -vs tests/envs_test.py::TestVenv diff --git a/piper/base/executors/__init__.py b/piper/base/executors/__init__.py new file mode 100644 index 0000000..be63ad2 --- /dev/null +++ b/piper/base/executors/__init__.py @@ -0,0 +1,3 @@ +from piper.base.executors._base_executor import BaseExecutor +from piper.base.executors.http import HTTPExecutor +from piper.base.executors.fastapi import FastAPIExecutor, FastAPITesseractExecutor diff --git a/piper/base/executors/_base_executor.py b/piper/base/executors/_base_executor.py new file mode 100644 index 0000000..2bd5b8b --- /dev/null +++ b/piper/base/executors/_base_executor.py @@ -0,0 +1,56 @@ +from abc import abstractmethod + +from piper.envs import get_env, is_current_env, Env +from piper.utils.logger_utils import logger + + +class BaseExecutor: + """ + This class is main executor which you need to inherit to work with piper normally. + This sync by default, but you can change to acync and use __call__ with await. + To create your child Executor just implement run for sync behavior or exec for async (set is_async) + or implement both run and exec + + You can use prepared Executors like HTTPExecutor. Usually you don't need to control behavior for every environment. + However you can do that properly for your custom Executor : + + class YourCustomExecutor(BaseExecutor): + def run(): + x + x + def docker_run(): + ... # your custom logic for docker env + def compose_run(): + ... # your custom logic for compose env + def custom_env_run(): + ... # for you own env + """ + + is_async: bool = False + + @abstractmethod + def run(self, *args, **kwargs): + raise NotImplementedError(f"run method not implemented in Executor {self}") + + @abstractmethod + async def exec(self, *args, **kwargs): + raise NotImplementedError(f"exec method not implemented in Executor {self}") + + def env_run(self, env: Env, *args, **kwargs): + if is_current_env(): + return self.run(*args, **kwargs) + else: + env_run_name = f"{env.name}_run" + return getattr(self, env_run_name)(*args, **kwargs) + + async def env_exec(self, env: Env, *args, **kwargs): + if is_current_env(): + return await self.exec(*args, **kwargs) + else: + env_run_name = f"{env.name}_exec" + return await getattr(self, env_run_name)(*args, **kwargs) + + def __call__(self, *args, **kwargs): + if self.is_async: + return self.env_exec(get_env(), *args, **kwargs) + else: + return self.env_run(get_env(), *args, **kwargs) diff --git a/piper/base/executors.py b/piper/base/executors/fastapi.py similarity index 84% rename from piper/base/executors.py rename to piper/base/executors/fastapi.py index 7f1a87a..dfbbb87 100644 --- a/piper/base/executors.py +++ b/piper/base/executors/fastapi.py @@ -3,9 +3,12 @@ render_fast_api_tsrct_backend) from piper.base.docker import PythonImage from piper.configurations import get_configuration -from piper.envs import get_env, is_current_env, is_docker_env +from piper.envs import get_env, is_current_env, is_docker_env, Env from piper.utils import docker_utils +from piper.utils.logger_utils import logger +from piper.base.executors import HTTPExecutor +import asyncio import inspect import sys import time @@ -18,38 +21,6 @@ import requests from pydantic import BaseModel # , BytesObject, ListOfStringsObject -from piper.utils.logger_utils import logger - - -class BaseExecutor: - pass - - -class LocalExecutor: - pass - - -def is_known(obj): - basic = obj.__class__.__name__ in {'dict', 'list', 'tuple', 'str', 'int', 'float', 'bool'} - models = isinstance(obj, (BaseModel,)) - return basic or models - - -def prepare(obj): - if isinstance(obj, (BaseModel,)): - return obj.dict() - return obj - - -def inputs_to_dict(*args, **kwargs): - from_args = {} - for arg in args: - if is_known(arg): - from_args.update(prepare(arg)) - from_kwargs = {k: prepare(v) for k, v in kwargs.items() if is_known(v)} - from_args.update(from_kwargs) - return from_args - def add_packages_to_install(packages_list): row = f'RUN apt install -y {" ".join(packages_list)} \n' @@ -60,32 +31,6 @@ def add_row(row): return f'{row} \n' -class HTTPExecutor(BaseExecutor): - - def __init__(self, host: str, port: int, base_handler: str): - self.host = host - self.port = port - - @abstractmethod - async def run(self, *args, **kwargs): - pass - - async def __call__(self, *args, **kwargs): - logger.info(f'get_env() {get_env()}') - logger.info(f'is_current_env() {is_current_env()}') - if is_current_env(): - return await self.run(*args, **kwargs) - else: - function = "run" - request_dict = inputs_to_dict(*args, **kwargs) - logger.info(f'request_dict is {request_dict}') - async with aiohttp.ClientSession() as session: - url = f'http://{self.host}:{self.port}/{function}' - logger.info(f'run function with url {url} and data {request_dict}') - async with session.post(url, json=request_dict) as resp: - return await resp.json() - - def copy_piper(path: str): cfg = get_configuration() copy_tree(cfg.piper_path, f"{path}piper") @@ -162,7 +107,8 @@ class FastAPIExecutor(HTTPExecutor): def __init__(self, port: int = 8080, **service_kwargs): self.container = None self.image_tag = 'piper:latest' - self.container_name = "piper_FastAPI" + self.id = hash(self) + self.container_name = f"piper_FastAPI_{self.id}" if is_docker_env(): docker_client = docker.DockerClient(base_url='unix://var/run/docker.sock') @@ -194,6 +140,14 @@ def __init__(self, port: int = 8080, **service_kwargs): super().__init__('localhost', port, self.base_handler) + async def aio_call(self, *args, **kwargs): + return await super().__call__(*args, ** kwargs) + + def __call__(self, *args, **kwargs): + loop = asyncio.get_event_loop() + result = loop.run_until_complete(self.aio_call(*args, **kwargs)) + return result + def rm_container(self): if self.container: self.container.remove(force=True) diff --git a/piper/base/executors/http.py b/piper/base/executors/http.py new file mode 100644 index 0000000..f15e90d --- /dev/null +++ b/piper/base/executors/http.py @@ -0,0 +1,56 @@ +from abc import abstractmethod + +import aiohttp + +from piper.envs import get_env, is_current_env +from piper.utils.logger_utils import logger +from piper.base.executors import BaseExecutor +from pydantic import BaseModel + + +def is_known(obj): + basic = obj.__class__.__name__ in {'dict', 'list', 'tuple', 'str', 'int', 'float', 'bool'} + models = isinstance(obj, (BaseModel,)) + return basic or models + + +def prepare(obj): + if isinstance(obj, (BaseModel,)): + return obj.dict() + return obj + + +def inputs_to_dict(*args, **kwargs): + from_args = {} + for arg in args: + if is_known(arg): + from_args.update(prepare(arg)) + from_kwargs = {k: prepare(v) for k, v in kwargs.items() if is_known(v)} + from_args.update(from_kwargs) + return from_args + + +class HTTPExecutor(BaseExecutor): + + def __init__(self, host: str, port: int, base_handler: str): + self.host = host + self.port = port + + @abstractmethod + async def run(self, *args, **kwargs): + pass + + async def __call__(self, *args, **kwargs): + logger.info(f'get_env() {get_env()}') + logger.info(f'is_current_env() {is_current_env()}') + if is_current_env(): + return await self.run(*args, **kwargs) + else: + function = "run" + request_dict = inputs_to_dict(*args, **kwargs) + logger.info(f'request_dict is {request_dict}') + async with aiohttp.ClientSession() as session: + url = f'http://{self.host}:{self.port}/{function}' + logger.info(f'run function with url {url} and data {request_dict}') + async with session.post(url, json=request_dict) as resp: + return await resp.json() \ No newline at end of file diff --git a/piper/configurations.py b/piper/configurations.py index 2c5c81f..131a5dd 100644 --- a/piper/configurations.py +++ b/piper/configurations.py @@ -5,13 +5,13 @@ class Configuration: path: str = f"./applications/piper_project_{time.time_ns()}/" test_path: str = f"./applications/piper_project_{time.time_ns()}/" piper_path: str = "piper" - default_env: str = "docker" + default_env: str = "compose" docker_app_port: int = 8788 name_venv: str = "venv_test" number: int = 10 - env: str = 'compose' + env: str = None ignore_import_errors: bool = True safe_import_activated: bool = False diff --git a/piper/envs/__init__.py b/piper/envs/__init__.py index 9df7581..99b1179 100644 --- a/piper/envs/__init__.py +++ b/piper/envs/__init__.py @@ -16,7 +16,7 @@ def init_default_env(): elif cfg.default_env == "virtualenv": set_env(VirtualEnv()) elif cfg.default_env == "compose": - set_env(VirtualEnv()) + set_env(ComposeEnv()) else: set_env(CurrentEnv()) @@ -32,69 +32,66 @@ def set_env(env): cfg.env = env -class DockerEnv: +class Env: + name = "no_env" - def __init__(self): - pass + _subclasses = [] def __enter__(self): - print("Entering DockerEnv") + logger.info(f"Entering Env: {self.__class__.__name__}") self._old_environment = get_env() set_env(self) def __exit__(self, *args, **kws): - print("Exiting DockerEnv") + logger.info(f"Exit Env: {self.__class__.__name__}") set_env(self._old_environment) + @classmethod + def get_all_envs(cls): + return list(cls._subclasses) -class CurrentEnv: + def __init_subclass__(cls): + Env._subclasses.append(cls) + + +class DockerEnv(Env): + name = "docker" def __init__(self): pass - def __enter__(self): - print("Entering CurrentEnv") - self._old_environment = get_env() - set_env(self) - def __exit__(self, *args, **kws): - print("Exiting CurrentEnv") - set_env(self._old_environment) +class CurrentEnv(Env): + name = "current_env" + + def __init__(self): + pass -class VirtualEnv: +class VirtualEnv(Env): + name = "virtualenv" def __init__(self): self.__resource = VirtualEnvExecutor() def __enter__(self): - logger.info("Entering VirtualEnv") - self._old_environment = get_env() - set_env(self) - # TODO update work with return resource + super().__enter__() return self.__resource - def __exit__(self, *args, **kws): - logger.info("Exiting VirtualEnv") - set_env(self._old_environment) - -class ComposeEnv: +class ComposeEnv(Env): + name = "compose" def __init__(self): self.__resource = ComposeExecutor() def __enter__(self): - logger.info("Entering ComposeEnv") - self._old_environment = get_env() - set_env(self) - # TODO update work with return resource + super().__enter__() return self.__resource def __exit__(self, *args, **kws): - logger.info("Exiting ComposeEnv") + super().__exit__(* args, ** kws) # self.__resource.stop_compose() - set_env(self._old_environment) def is_current_env(): diff --git a/tests/base_executor_test.py b/tests/base_executor_test.py new file mode 100644 index 0000000..4a5b7af --- /dev/null +++ b/tests/base_executor_test.py @@ -0,0 +1,52 @@ +import asyncio +import pytest + +from piper.envs import CurrentEnv, Env +from piper.base.executors import BaseExecutor + + +class ExecutorImpl(BaseExecutor): + def run(self, x: int) -> int: + return x + 1 + async def exec(self, x: int) -> int: + return x - 1 + + +inst = ExecutorImpl() +loop = asyncio.get_event_loop() + + +class TestBaseExecutorClass: + + def test_executor_not_async(self): + assert not inst.is_async + + def test_executor_run(self): + with CurrentEnv(): + assert inst(10) == 11 + + def test_executor_exec_error(self): + inst.is_async = True + # it is coroutine must be an error here + with pytest.raises(Exception): + result = inst.exec(10) + result + 1 + inst.is_async = False + + def test_executor_exec(self): + inst.is_async = True + with CurrentEnv(): + assert loop.run_until_complete(inst(10)) == 9 + inst.is_async = False + + def test_custom_env_run(self): + class CustomEnv(Env): + name = "custom_env" + + with CustomEnv(): + with pytest.raises(Exception): + inst(10) + + # add implementation + inst.custom_env_run = lambda x: x * 10 + assert inst(10) == 100 diff --git a/tests/base_test.py b/tests/base_test.py index 2cab34f..8ee3d26 100644 --- a/tests/base_test.py +++ b/tests/base_test.py @@ -6,6 +6,9 @@ from piper.configurations import get_configuration from piper.envs import CurrentEnv, DockerEnv, ComposeEnv +cfg = get_configuration() +loop = asyncio.get_event_loop() + class TestMessageAdder(FastAPIExecutor): @@ -19,24 +22,39 @@ async def run(self, message: StringValue) -> StringValue: class TestPiperBase: - def test_simple_executor(self): - - cfg = get_configuration() - loop = asyncio.get_event_loop() + def test_simple_async_executors(self): init_value = "TEST_container_" x = StringValue(value=init_value) need_result = f'{init_value}TEST' with CurrentEnv() as env: adder = TestMessageAdder(port=cfg.docker_app_port) - result = loop.run_until_complete(adder(x)) - print(result) + result = loop.run_until_complete(adder.aio_call(x)) assert result.value == need_result with DockerEnv() as env: adder = TestMessageAdder(port=cfg.docker_app_port) - result = loop.run_until_complete(adder(x)) - print(result) + result = loop.run_until_complete(adder.aio_call(x)) adder.rm_container() assert result.get("value") == need_result + def test_two_sync_executors(self): + init_value = "TEST_container_" + x = StringValue(value=init_value) + need_result = f'{init_value}TESTTEST' + + with CurrentEnv() as env: + adder_1 = TestMessageAdder(port=cfg.docker_app_port) + adder_2 = TestMessageAdder(port=cfg.docker_app_port+1) + result = adder_1(x) + result = adder_2(result) + + assert result.value == need_result + + # with DockerEnv() as env: + # adder_1 = TestMessageAdder(port=cfg.docker_app_port+10) + # adder_2 = TestMessageAdder(port=cfg.docker_app_port+11) + # result = adder_1(x) + # result = adder_2(result) + # + # assert result.value == need_result diff --git a/tests/import_tests.py b/tests/import_test.py similarity index 100% rename from tests/import_tests.py rename to tests/import_test.py From 12b7835f6fe06d779be2ffa03d5f79bf5d4e989a Mon Sep 17 00:00:00 2001 From: Pavel Prikazchikov Date: Tue, 25 Oct 2022 10:28:06 +0300 Subject: [PATCH 47/50] add FaceDetector and TesseractOCR services --- piper/base/docker/images/default-general.j2 | 15 ++ piper/utils/FaceDetection/face_detector.py | 39 ++++ piper/utils/TesseractOCR/tesseract_ocr.py | 85 +++++++++ .../FaceDetection/face_detection_test.py | 103 ++++++++++ tests/domains/FaceDetection/faces.jpg | Bin 0 -> 366809 bytes tests/domains/FaceDetection/result_image.jpg | Bin 0 -> 383475 bytes tests/domains/TesseractOCR/PiperOperator.py | 176 ++++++++++++++++++ .../_use_case_folder_processing.py | 81 ++++++++ tests/domains/TesseractOCR/data/ocr_data.jpg | Bin 0 -> 11123 bytes tests/domains/TesseractOCR/data/ocr_data.pdf | Bin 0 -> 61494 bytes tests/domains/TesseractOCR/data/ocr_ner.png | Bin 0 -> 17242 bytes .../res_ocr_data.txt | 1 + .../res_ocr_ner.txt | 13 ++ .../res_ocr_data.txt | 1 + .../res_ocr_ner.txt | 13 ++ .../res_ocr_data.txt | 1 + .../res_ocr_ner.txt | 2 + .../TesseractOCR/tesseract_ocr_test.py | 80 ++++++++ .../use_case_folder_processing.py | 85 +++++++++ 19 files changed, 695 insertions(+) create mode 100755 piper/base/docker/images/default-general.j2 create mode 100755 piper/utils/FaceDetection/face_detector.py create mode 100755 piper/utils/TesseractOCR/tesseract_ocr.py create mode 100644 tests/domains/FaceDetection/face_detection_test.py create mode 100755 tests/domains/FaceDetection/faces.jpg create mode 100644 tests/domains/FaceDetection/result_image.jpg create mode 100755 tests/domains/TesseractOCR/PiperOperator.py create mode 100755 tests/domains/TesseractOCR/_use_case_folder_processing.py create mode 100755 tests/domains/TesseractOCR/data/ocr_data.jpg create mode 100755 tests/domains/TesseractOCR/data/ocr_data.pdf create mode 100755 tests/domains/TesseractOCR/data/ocr_ner.png create mode 100755 tests/domains/TesseractOCR/out/oem_3_psm_11_en_core_web_sm/res_ocr_data.txt create mode 100755 tests/domains/TesseractOCR/out/oem_3_psm_11_en_core_web_sm/res_ocr_ner.txt create mode 100755 tests/domains/TesseractOCR/out/oem_3_psm_6_en_core_web_sm/res_ocr_data.txt create mode 100755 tests/domains/TesseractOCR/out/oem_3_psm_6_en_core_web_sm/res_ocr_ner.txt create mode 100755 tests/domains/TesseractOCR/out/oem_3_psm_8_en_core_web_sm/res_ocr_data.txt create mode 100755 tests/domains/TesseractOCR/out/oem_3_psm_8_en_core_web_sm/res_ocr_ner.txt create mode 100644 tests/domains/TesseractOCR/tesseract_ocr_test.py create mode 100755 tests/domains/TesseractOCR/use_case_folder_processing.py diff --git a/piper/base/docker/images/default-general.j2 b/piper/base/docker/images/default-general.j2 new file mode 100755 index 0000000..1b0203c --- /dev/null +++ b/piper/base/docker/images/default-general.j2 @@ -0,0 +1,15 @@ +FROM {{ddocker_name}}:{{ ddocker_version }} + +{{ run_command_lines }} + +WORKDIR /app + +COPY requirements.txt ./requirements.txt +RUN PYTHONPATH=/usr/bin/python3 pip3 install -r requirements.txt + +{{ post_install_lines }} + +COPY ./ ./ +RUN chmod +x ./run.sh + +ENTRYPOINT ["{{ cmd }}"] \ No newline at end of file diff --git a/piper/utils/FaceDetection/face_detector.py b/piper/utils/FaceDetection/face_detector.py new file mode 100755 index 0000000..a0350c0 --- /dev/null +++ b/piper/utils/FaceDetection/face_detector.py @@ -0,0 +1,39 @@ +import sys +from loguru import logger + +try: + from mtcnn import MTCNN + import numpy as np + import cv2 + +except ImportError as e: + logger.error(e) + + +class FaceDetector(): + + def __init__(self): + self.detector = None + logger.info('FaceRecognizer model is MTCNN') + + def bytes_handler(self, img_bytes): + '''Detect faces on recived image and return their coordinates''' + + logger.info(f'bytes_handler with arg {type(img_bytes)} and len {sys.getsizeof(img_bytes)}') + np_array = np.asarray(bytearray(img_bytes), dtype="uint8") + logger.info(f'converted image is type of {type(np_array)} and size {np_array.shape}') + img = cv2.imdecode(np_array, cv2.IMREAD_COLOR) + + if img is not None: + logger.info(f'converted to cv2 image with shape {img.shape}') + if img is not None: + h, w, _ = img.shape + if h > 0 and w > 0: + detector = MTCNN() + # logger.info(f'detector is {self.detector}') + logger.info('start detect faces') + detections = detector.detect_faces(img) + logger.info(f'detections is {detections}') + return detections + else: + logger.error('can not convert bytes to cv2 image') \ No newline at end of file diff --git a/piper/utils/TesseractOCR/tesseract_ocr.py b/piper/utils/TesseractOCR/tesseract_ocr.py new file mode 100755 index 0000000..3f916a5 --- /dev/null +++ b/piper/utils/TesseractOCR/tesseract_ocr.py @@ -0,0 +1,85 @@ +from loguru import logger + +try: + import pdf2image + import pytesseract + +except ImportError as ie: + print(ie) + +import numpy as np +import cv2 + +import requests +from piper.configurations import get_configuration + +cfg = get_configuration() + +def send_file_to_ocr_service(url, file_path): + '''Load file by path and sent it to OCR service by url''' + multipart_form_data = { + 'file': open(file_path, 'rb') + } + + try: + result = requests.post(url, files=multipart_form_data, verify=False) + return result + + except requests.exceptions.ConnectionError as ce: + logger.error(f'exeption while connect to {url}') + logger.error(ce) + +def img_to_text(img, ts_conf): + '''Get text from image with Tesseract''' + logger.info(f'pytesseract process file with len {len(img)}') + txt_dict = pytesseract.image_to_data( + img, + lang=ts_conf.get('lang'), + config=ts_conf.get('ts_config_row'), + output_type=pytesseract.Output.DICT + ) + return txt_dict + + +def bytes_handler(bbytes, suf, ts_conf): + '''Process bytes as image or as PDF document''' + if suf in cfg.image_suffixes: + logger.info('bytes are image') + return img_bytes_handler(bbytes, ts_conf) + elif suf in cfg.pdf_suffixes: + logger.info('bytes are pdf document') + return pdf_bytes_handler(bbytes, ts_conf) + + +def pdf_bytes_handler(pdf_bytes, ts_conf): + '''Process PDF document''' + bytes_to_images = pdf2image.convert_from_bytes( + pdf_bytes, + thread_count=cfg.thread_count, + dpi=cfg.dpi + ) + logger.info(f'pdf to image return {bytes_to_images} pages') + pages = [np.asarray(x) for x in bytes_to_images] + #TODO add processing all pages + if len(pages) > 0: + logger.error(f'try to recognize pages {len(pages)}') + txt_dict = img_to_text(pages[0], ts_conf) + logger.info(f'img_to_text returned {txt_dict}') + return txt_dict + else: + logger.error('no pdf pages to recognize') + + +def img_bytes_handler(img_bytes, ts_conf): + '''Process image''' + img = cv2.imdecode(np.asarray(bytearray(img_bytes), dtype=np.uint8), cv2.IMREAD_COLOR) + if img is not None: + logger.info(f'processing img with shape {img.shape}') + txt_dict = img_to_text(img, ts_conf) + + logger.info(f'get text from image {txt_dict}') + logger.info(f'img_to_text returned {txt_dict}') + return txt_dict + + else: + logger.error('recive empty image or convertion failed') diff --git a/tests/domains/FaceDetection/face_detection_test.py b/tests/domains/FaceDetection/face_detection_test.py new file mode 100644 index 0000000..2e7a957 --- /dev/null +++ b/tests/domains/FaceDetection/face_detection_test.py @@ -0,0 +1,103 @@ +# pytest -vs tests/domains/FaceDetection/face_detection_test.py::TestFaceDetection::test_detection +# pytest -vs tests/domains/FaceDetection/face_detection_test.py::TestFaceDetection::test_health_check +import os +import sys +import requests +root_dir = os.path.join(os.path.realpath(os.path.pardir), 'piper_ng') +sys.path.insert(1, root_dir) + +from pathlib import Path +import os +import pytest +from loguru import logger +import cv2 +import base64 +import numpy as np +import json + +main_app_url = f'http://localhost:8788' +file_path = Path(__file__).parent + +def send_file_to_service(url, file_path): + ''' + Send file by path to service URL + ''' + multipart_form_data = { + 'file': open(file_path, 'rb') + } + + logger.info(f'url: {url}') + logger.info(f'data: {multipart_form_data}') + + try: + result = requests.post(url, files=multipart_form_data, verify=False) + return result + + except requests.exceptions.ConnectionError as ce: + logger.error(f'exeption while connect to {url}') + logger.error(ce) + +def draw_bb_on_initial_img(img, detections): + ''' + Draw founded bounded boxes on initial image + ''' + for detect_dict in detections: + bbox = detect_dict.get('box') + x, y, w, h = bbox + cv2.rectangle(img, (x, y), (x+w, y+h), (255,0,0), 2) + return img + + +class TestFaceDetection(): + ''' + Docker container API test. Methods: + test_detection + health_check + ''' + + def test_detection(self): + ''' + jpg file recognize test + ''' + fn = file_path.joinpath('faces.jpg') + # fn = file_path.joinpath('ocr_data.jpg') + url = f'{main_app_url}/recognize' + + received_data = send_file_to_service(url, fn) + + assert received_data.status_code == 200, received_data.text + + try: + detections = received_data.json() + logger.info(f'received_data.json {detections}') + + logger.info('data', detections) + assert len(detections) != 0 + + if detections: + initial_img = cv2.imread(str(fn)) + img_with_faces = draw_bb_on_initial_img(initial_img, detections) + + out_img_fn = str(file_path.joinpath('result_image.jpg')) + write_result = cv2.imwrite(out_img_fn, img_with_faces) + if write_result: + logger.info(f'img with detections saved to {out_img_fn}') + else: + logger.error(f'img with detections did not save') + + + except Exception as e: + pytest.raises(Exception) + assert False + + + def test_health_check(self): + ''' + health check test + ''' + url = f'{main_app_url}/health_check' + print(url) + # убрать параметры + result = requests.post(url, data=json.dumps({"1":"2"}), headers= {'Content-Type': 'application/json'}) + logger.info('health_check test') + assert result.status_code == 200 diff --git a/tests/domains/FaceDetection/faces.jpg b/tests/domains/FaceDetection/faces.jpg new file mode 100755 index 0000000000000000000000000000000000000000..5d87e2a2e61b81917e0b7b7415a9c0cc35d15ec1 GIT binary patch literal 366809 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�be53w6vJMfYbE52ZcnCph?=c4 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

nV7Dn)jz%%WA| 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

>&ca#PLBHo;!OxMyw-5A2BKgtxTQmoPGh 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

0aoSbIG^*X{D4nV-FcU`HjGuWU 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ྍ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 Yj5yQkjj=?Tlv(kw-7!CR?@Yh{*_w@yN&o-= literal 0 HcmV?d00001 diff --git a/tests/domains/FaceDetection/result_image.jpg b/tests/domains/FaceDetection/result_image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..be1064231cb05f7fd90c39abd759d570a362da01 GIT binary patch literal 383475 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 z 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 %t{?(=dx;CK+( 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 d;Dx>#CHn@Fad<8c2thrQ42?de}0rT-{n-DY8 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 Date: Tue, 25 Oct 2022 10:41:02 +0300 Subject: [PATCH 48/50] add FaceDetector and TesseractOCR services --- main.py | 55 +++-- piper/base/backend/templates/fast-api.j2 | 23 ++- piper/base/docker/__init__.py | 39 ++-- piper/base/executors/fastapi.py | 190 +++++++++++++----- piper/imports.py | 14 +- piper/services/__init__.py | 21 +- piper/utils/docker_utils.py | 75 +++++-- .../FaceDetection/face_detection_test.py | 2 +- tests/domains/TesseractOCR/PiperOperator.py | 176 ---------------- .../_use_case_folder_processing.py | 81 -------- .../res_ocr_data.txt | 1 - .../res_ocr_ner.txt | 13 -- .../res_ocr_data.txt | 1 - .../res_ocr_ner.txt | 13 -- .../res_ocr_data.txt | 1 - .../res_ocr_ner.txt | 2 - .../TesseractOCR/tesseract_ocr_test.py | 2 +- .../use_case_folder_processing.py | 85 -------- tests/piper_operator_test.py | 173 ---------------- tests/use_case_folder_processing.py | 85 -------- 20 files changed, 311 insertions(+), 741 deletions(-) delete mode 100755 tests/domains/TesseractOCR/PiperOperator.py delete mode 100755 tests/domains/TesseractOCR/_use_case_folder_processing.py delete mode 100755 tests/domains/TesseractOCR/out/oem_3_psm_11_en_core_web_sm/res_ocr_data.txt delete mode 100755 tests/domains/TesseractOCR/out/oem_3_psm_11_en_core_web_sm/res_ocr_ner.txt delete mode 100755 tests/domains/TesseractOCR/out/oem_3_psm_6_en_core_web_sm/res_ocr_data.txt delete mode 100755 tests/domains/TesseractOCR/out/oem_3_psm_6_en_core_web_sm/res_ocr_ner.txt delete mode 100755 tests/domains/TesseractOCR/out/oem_3_psm_8_en_core_web_sm/res_ocr_data.txt delete mode 100755 tests/domains/TesseractOCR/out/oem_3_psm_8_en_core_web_sm/res_ocr_ner.txt delete mode 100755 tests/domains/TesseractOCR/use_case_folder_processing.py delete mode 100644 tests/piper_operator_test.py delete mode 100644 tests/use_case_folder_processing.py diff --git a/main.py b/main.py index 523f30e..67c895a 100644 --- a/main.py +++ b/main.py @@ -7,9 +7,15 @@ from piper.configurations import get_configuration from piper.envs import ComposeEnv, CurrentEnv, DockerEnv, VirtualEnv -# from piper.services import (SpacyNER, StringValue, TesseractRecognizer, -# TestMessageAdder) -# from piper.utils import tesrct_utils as tu +from piper.services import ( + SpacyNER, + StringValue, + TesseractRecognizer, + FaceDetector, + # TestMessageAdder, +) + +from piper.utils import tesrct_utils as tu logger.add("file.log", level="INFO", backtrace=True, diagnose=True, rotation='5 MB') @@ -28,30 +34,34 @@ # print(result) # adder.rm_container() - # logger.info(f'main here {time.time()}') - # cfg = get_configuration() - # loop = asyncio.get_event_loop() - # with DockerEnv() as env: - # # object created - # recognizer = TesseractRecognizer(port=cfg.docker_app_port) - # - # result = loop.run_until_complete(recognizer()) - # logger.info(f'result of recognition is {result}') + logger.info(f'main here {time.time()}') + cfg = get_configuration() + + print(cfg.path) + + loop = asyncio.get_event_loop() + with DockerEnv() as env: + # object created + # recognizer = TesseractRecognizer(port=cfg.docker_app_port) + recognizer = FaceDetector(port=cfg.docker_app_port) + + result = loop.run_until_complete(recognizer()) + logger.info(f'result of recognition is {result}') # with VirtualEnv() as env: # env.copy_struct_project() # env.create_files_for_venv() # env.create_files_for_tests() - with ComposeEnv() as env: - try: - env.copy_struct_project() - env.create_files_for_compose(testing=True) - env.start_compose() - except KeyboardInterrupt: - logger.info('Ctrl+C pressed. Except KeyboardInterrupt.') - env.stop_compose() - sys.exit(1) + # with ComposeEnv() as env: + # try: + # env.copy_struct_project() + # env.create_files_for_compose(testing=True) + # env.start_compose() + # except KeyboardInterrupt: + # logger.info('Ctrl+C pressed. Except KeyboardInterrupt.') + # env.stop_compose() + # sys.exit(1) # sys.exit() @@ -66,4 +76,5 @@ # result1_str = "\n".join(str(x) for x in result1) # logger.info(f'result of NER for model {avalable_model} is {result1_str}') # else: - # logger.info(f'module didn`t get NER data') \ No newline at end of file + # logger.info(f'module didn`t get NER data') + diff --git a/piper/base/backend/templates/fast-api.j2 b/piper/base/backend/templates/fast-api.j2 index 6c8ae52..be9e0a1 100644 --- a/piper/base/backend/templates/fast-api.j2 +++ b/piper/base/backend/templates/fast-api.j2 @@ -1,8 +1,10 @@ import time -from fastapi import FastAPI, Request, status +from fastapi import FastAPI, Request, status, File, UploadFile from piper.envs import CurrentEnv +from pathlib import Path + {% for script_name in scripts.keys() %} from {{ script_name }} import * {% endfor %} @@ -14,12 +16,23 @@ async def health_check(): return {"message": "health check"} with CurrentEnv(): - service = {{ service_class }}( {% for k, v in service_kwargs.items() %} {{ k }}={{ v }}, {% endfor %} ) + logger.info(f'CurrentEnv') + service = {{ service_class }}({% for k, v in service_kwargs.items() %} {{ k }}={{ v }}, {% endfor %}) + logger.info(f'service {service}') @app.post('/{{ function_name }}') async def {{ function_name }}( - request_model: {{ request_model }}, + #request_model: {{ request_model }}, + file: UploadFile = File(...) ): - result = await service.{{ function_name }}(request_model) + data_b = await file.read() + suf = Path(file.filename).suffix.lower() + suf = suf[1:] + logger.info('{{ function_name }} POST request ') + result = await service.{{ function_name }}(data_b, suf) - return result.dict() \ No newline at end of file + logger.info(f'fast_api.j2 result is {result}') + try: + return result + except Exception as e: + logger.error(f'fast_api.j2 error while recognize {e}') diff --git a/piper/base/docker/__init__.py b/piper/base/docker/__init__.py index 055fee0..5fc573d 100644 --- a/piper/base/docker/__init__.py +++ b/piper/base/docker/__init__.py @@ -28,21 +28,24 @@ def render(self): post_install_lines=self.post_install_lines) -# class PythonTesseractImage: - -# def __init__(self, tag, python_docker_version, cmd): -# self.tag = tag -# self.python_docker_version = python_docker_version -# self.cmd = cmd - - -# def render(self): -# """ -# Render docker template -# """ -# template_dir = os.path.join(os.path.dirname(__file__), 'images') -# jinja_env = jinja2.Environment(loader=jinja2.FileSystemLoader(template_dir), -# trim_blocks=True, -# lstrip_blocks=True) -# template = jinja_env.get_template('python-tesrct.j2') -# return template.render(cmd=self.cmd, python_docker_version=self.python_docker_version, run_command_lines=self.run_command_lines) \ No newline at end of file +class TensorFlowImage: + + def __init__(self, tag, python_docker_version, cmd, template_file, run_rows, post_install_lines): + self.tag = tag + self.python_docker_version = python_docker_version + self.cmd = cmd + self.template_file = template_file + self.run_rows = run_rows + self.post_install_lines = post_install_lines + + def render(self): + """ + Render docker template + """ + template_dir = os.path.join(os.path.dirname(__file__), 'images') + jinja_env = jinja2.Environment(loader=jinja2.FileSystemLoader(template_dir), + trim_blocks=True, + lstrip_blocks=True) + template = jinja_env.get_template(self.template_file) + return template.render(cmd=self.cmd, ddocker_name=self.tag, ddocker_version=self.python_docker_version, run_command_lines=self.run_rows, post_install_lines=self.post_install_lines) + diff --git a/piper/base/executors/fastapi.py b/piper/base/executors/fastapi.py index dfbbb87..55ee7b6 100644 --- a/piper/base/executors/fastapi.py +++ b/piper/base/executors/fastapi.py @@ -1,7 +1,7 @@ # from piper.base.docker import PythonTesseractImage from piper.base.backend.utils import (render_fast_api_backend, render_fast_api_tsrct_backend) -from piper.base.docker import PythonImage +from piper.base.docker import PythonImage, TensorFlowImage from piper.configurations import get_configuration from piper.envs import get_env, is_current_env, is_docker_env, Env from piper.utils import docker_utils @@ -16,7 +16,7 @@ from typing import Dict from distutils.dir_util import copy_tree -import aiohttp +# import aiohttp import docker import requests from pydantic import BaseModel # , BytesObject, ListOfStringsObject @@ -48,32 +48,11 @@ def write_requirements(path, requirements): output.write("\n".join(requirements)) -def build_image(path: str, docker_image): - client = docker.DockerClient(base_url='unix://var/run/docker.sock') +def write_dockerfile(path, docker_image): image = docker_image.render() - print(f"{path}Dockerfile") - with open(f"{path}Dockerfile", "w") as output: + with open(f"{path}/Dockerfile", "w") as output: output.write(image) - image, logs = client.images.build(path=path, - tag=docker_image.tag, - quiet=False, - timeout=20) - for log in logs: - logger.info(f'executor build_image: {log}') - logger.info(f'image is {image}') - - -def run_container(image: str, ports: Dict[int, int]): - client = docker.DockerClient(base_url='unix://var/run/docker.sock') - container = client.containers.run(image, detach=True, ports=ports) - for log in container.logs(): - logger.info(f'executor run_container: {log}') - logger.info(f'container is {container}') - time.sleep(10) - - return container - def wait_for_fast_api_app_start(host, external_port, wait_on_iter, n_iters): """ @@ -100,6 +79,129 @@ def wait_for_fast_api_app_start(host, external_port, wait_on_iter, n_iters): i += 1 +class FastAPIFaceDetectorExecutor(HTTPExecutor): + # basic requements + requirements = ["gunicorn", "fastapi", "uvicorn", "aiohttp", "docker", "Jinja2", "pydantic", "loguru", "numpy", "opencv-python", "python-multipart", ] + + # executor specific requements + requirements.extend( + [ + # 'python3-opencv' + 'tensorflow', + 'mtcnn', + ] + ) + + # basic packages + packages_list = ['apt-utils', 'tree', 'cmake', 'mc'] + + # executor specific packages + packages_list.extend( + [ + 'libgl1', + 'ffmpeg', + 'libsm6', + 'libxext6', + ] + ) + + base_handler = "recognize" + + def __init__(self, port: int = 8080, **service_kwargs): + self.container = None + # self.image_tag = 'piper:latest'\ + self.image_tag = 'tensorflow/tensorflow' + self.container_name = "piper_FastAPI_FaceDetector" + + if is_docker_env(): + docker_client = docker.DockerClient(base_url='unix://var/run/docker.sock') + cfg = get_configuration() + project_output_path = cfg.path + + copy_piper(project_output_path) + copy_scripts(project_output_path, self.scripts()) + + run_rows = '' + run_rows += add_row('RUN apt update && apt install -y apt-transport-https') + run_rows += add_row('RUN apt install -y software-properties-common') + run_rows += add_packages_to_install(self.packages_list) + run_rows += add_row('RUN pip3 install --upgrade pip') + + post_install_lines = "" + + docker_image = TensorFlowImage(self.image_tag, 'latest-gpu-jupyter', cmd=f"./run.sh", template_file='default-general.j2', run_rows=run_rows, post_install_lines=post_install_lines) + logger.info('Docker file created') + + write_requirements(project_output_path, self.requirements) + logger.info('python requirements file created') + + write_dockerfile(project_output_path, docker_image) + + self.create_fast_api_files(project_output_path, **service_kwargs) + + logger.info('build_image') + docker_utils.build_image(project_output_path, docker_image.tag) + logger.info('image builded') + + # create and run docker container + # if container exits it will be recreated! + logger.info('create image and container started') + container = docker_utils.create_image_and_container_by_dockerfile( + docker_client, + project_output_path, + self.image_tag, + self.container_name, + port + ) + + logger.info('waiting for FastApi service start') + if container: + output = container.attach(stdout=True, stderr=True, stream=False, logs=True) + for line in output: + logger.info(str(line)) + #TODO test FastAPI errors by other way + if 'Traceback' in str(line): + logger.error('FastAPI can`t start') + sys.exit() + # logger.info(container.stats(decode=False, stream=False)) + + wait_for_fast_api_app_start('localhost', cfg.docker_app_port, cfg.wait_on_iter, cfg.n_iters) + else: + # TODO: Local ENVIRONMENT checks + pass + + super().__init__('localhost', port, self.base_handler) + + + def rm_container(self): + if self.container: + self.container.remove(force=True) + + def scripts(self): + return {"service": inspect.getfile(self.__class__)} + + def create_fast_api_files(self, path: str, **service_kwargs): + cfg = get_configuration() + + # TODO add support more than one functions + backend = render_fast_api_backend( + service_class=self.__class__.__name__, + service_kwargs=dict(service_kwargs), + scripts=self.scripts(), + function_name=self.base_handler, + request_model="BytesObject", + response_model="ListOfStringsObject" + ) + + with open(f"{path}/main.py", "w") as output: + output.write(backend) + + gunicorn = "#!/bin/bash \n" \ + f"gunicorn -b 0.0.0.0:8080 --workers {cfg.n_gunicorn_workers} main:app --worker-class uvicorn.workers.UvicornWorker --preload --timeout 240" + with open(f"{path}/run.sh", "w") as output: + output.write(gunicorn) + + class FastAPIExecutor(HTTPExecutor): requirements = ["gunicorn", "fastapi", "uvicorn", "aiohttp", "docker", "Jinja2", "pydantic", "loguru"] base_handler = "run" @@ -121,7 +223,7 @@ def __init__(self, port: int = 8080, **service_kwargs): docker_image = PythonImage(self.image_tag, "3.9", cmd=f"./run.sh", template_file='default-python.j2', run_rows="", post_install_lines="") - build_image(project_output_path, docker_image) + docker_utils.build_image(project_output_path, docker_image) # create and run docker container # if container exits it will be recreated! @@ -176,10 +278,8 @@ def create_fast_api_files(self, path: str, **service_kwargs): class FastAPITesseractExecutor(HTTPExecutor): - requirements = ["gunicorn", "fastapi", "uvicorn", "aiohttp", "docker", "Jinja2", "pydantic", "loguru", "numpy", - "opencv-python", "pytesseract", "python-multipart", "pdf2image", "spacy"] - packages_list = ['tree', 'cmake', 'libgl1-mesa-glx', 'poppler-utils', 'tesseract-ocr', 'libtesseract-dev', - 'libleptonica-dev', 'mc'] + requirements = ["gunicorn", "fastapi", "uvicorn", "aiohttp", "docker", "Jinja2", "pydantic", "loguru", "numpy", "opencv-python", "pytesseract", "python-multipart", "pdf2image", "spacy"] + packages_list = ['tree', 'cmake', 'libgl1-mesa-glx', 'poppler-utils', 'tesseract-ocr', 'libtesseract-dev', 'libleptonica-dev', 'mc'] base_handler = "recognize" def __init__(self, port: int = 8080, **service_kwargs): @@ -201,17 +301,20 @@ def __init__(self, port: int = 8080, **service_kwargs): run_rows += add_packages_to_install(self.packages_list) run_rows += add_row('RUN pip3 install --upgrade pip') - # скачивает сюда /usr/local/lib/python3.9/site-packages/en_core_web_sm - # post_install_lines = f'RUN python3 -m spacy download {cfg.spacy_model} --data-path {cfg.model_path}' + # download to /usr/local/lib/python3.9/site-packages/en_core_web_sm + # post_install_lines = f'RUN python3 -m spacy download {",".join(cfg.spacy_models)} --data-path {cfg.model_path}' post_install_lines = "" - # docker_image = PythonTesseractImage(self.image_tag, "3.9", cmd=f"./run.sh") - docker_image = PythonImage(self.image_tag, "3.9", cmd=f"./run.sh", template_file='default-python.j2', - run_rows=run_rows, post_install_lines=post_install_lines) - build_image(project_output_path, docker_image) + write_requirements(project_output_path, self.requirements) + logger.info('python requirements file created') + + docker_image = PythonImage(self.image_tag, "3.9", cmd=f"./run.sh", template_file='default-python.j2', run_rows=run_rows, post_install_lines=post_install_lines) + write_dockerfile(project_output_path, docker_image) self.create_fast_api_files(project_output_path, **service_kwargs) + docker_utils.build_image(project_output_path, docker_image.tag) + # create and run docker container # if container exits it will be recreated! docker_utils.create_image_and_container_by_dockerfile( @@ -229,10 +332,6 @@ def __init__(self, port: int = 8080, **service_kwargs): super().__init__('localhost', port, self.base_handler) - def rm_container(self): - if self.container: - self.container.remove(force=True) - def scripts(self): return {"service": inspect.getfile(self.__class__)} @@ -240,21 +339,20 @@ def create_fast_api_files(self, path: str, **service_kwargs): cfg = get_configuration() # TODO add support more than one functions - backend = render_fast_api_tsrct_backend( + backend = render_fast_api_backend( service_class=self.__class__.__name__, service_kwargs=dict(service_kwargs), scripts=self.scripts(), function_name=self.base_handler, - # request_model="BytesObject", - # response_model="ListOfStringsObject" + request_model="BytesObject", + response_model="ListOfStringsObject" ) with open(f"{path}/main.py", "w") as output: output.write(backend) - write_requirements(path, self.requirements) - gunicorn = "#!/bin/bash \n" \ - f"gunicorn -b 0.0.0.0:8080 --workers {cfg.n_gunicorn_workers} main:app --worker-class uvicorn.workers.UvicornWorker --preload --timeout 120" + f"gunicorn -b 0.0.0.0:8080 --workers {cfg.n_gunicorn_workers} main:app --worker-class uvicorn.workers.UvicornWorker --preload --timeout 240" with open(f"{path}/run.sh", "w") as output: output.write(gunicorn) + diff --git a/piper/imports.py b/piper/imports.py index 971a2fc..61208c0 100644 --- a/piper/imports.py +++ b/piper/imports.py @@ -37,7 +37,19 @@ def _piper_was_touched_in_frame(frame_before=1): result = False f_locals = frame.f_locals f_globals = frame.f_globals - all_variables = f_locals | f_globals + + # for python 3.8 + all_variables = dict() + for k,v in f_locals.items(): + all_variables[k] = v + + for k,v in f_globals.items(): + all_variables[k] = v + + # all_variables = dict(f_locals.items() | f_globals.items()) + + # for python 3.9 + # all_variables = f_locals | f_globals if all_variables.values(): all_variables = [v for v in all_variables.values() if v is not None] diff --git a/piper/services/__init__.py b/piper/services/__init__.py index 3d8fc65..2c6dcc3 100644 --- a/piper/services/__init__.py +++ b/piper/services/__init__.py @@ -12,10 +12,13 @@ from piper.base.executors import FastAPIExecutor, FastAPITesseractExecutor from piper.configurations import get_configuration -from piper.utils import tesrct_utils as tu + +from piper.utils.TesseractOCR import tesseract_ocr as tu +from piper.utils.FaceDetection import face_detector as fru # logger.add("file.log", level="INFO", backtrace=True, diagnose=True, rotation='5 MB') +from piper.base.executors.fastapi import FastAPIFaceDetectorExecutor class StringValue(BaseModel): value: str @@ -131,3 +134,19 @@ def extract_named_ents(self, txt: str): return JSONResponse(content=res) else: logger.error(f'nlp object didn`t create. you should use set_model(model_name)') + + +class FaceDetector(FastAPIFaceDetectorExecutor): + ''' + FaceDetector implementation service + ''' + def __init__(self, **kwargs): + self.face_detector = fru.FaceDetector() + super().__init__(**kwargs) + + + async def recognize(self, file_content : BytesObject, suf: str) -> ListOfStringsObject: + logger.info(f'face_detector recive {type(file_content)} object') + text_dict = self.face_detector.bytes_handler(file_content) + logger.info(f'face_detector img_bytes_handler return {(text_dict)} object') + return JSONResponse(content=text_dict) \ No newline at end of file diff --git a/piper/utils/docker_utils.py b/piper/utils/docker_utils.py index 4d52cc2..407e3b3 100644 --- a/piper/utils/docker_utils.py +++ b/piper/utils/docker_utils.py @@ -1,16 +1,16 @@ -from piper.configurations import get_configuration - -import sys +import docker import time +import sys +from loguru import logger -import docker -# from loguru import logger -from piper.utils.logger_utils import logger +from typing import Dict +from docker.errors import APIError, BuildError +from piper.configurations import get_configuration cfg = get_configuration() - def get_image(docker_client, image_name): + '''Get Python object of Docker image by name''' try: cur_image = docker_client.images.get(image_name) return cur_image @@ -20,6 +20,7 @@ def get_image(docker_client, image_name): def delete_image(docker_client, image_tag): + '''Delete Docker image by name''' try: docker_client.images.remove(image_tag, force=True) return True @@ -29,6 +30,7 @@ def delete_image(docker_client, image_tag): def get_container(docker_client, container_name): + '''Get Python object of Docker container by name''' try: cur_container = docker_client.containers.get(container_name) return cur_container @@ -39,8 +41,8 @@ def get_container(docker_client, container_name): logger.error(f'non defined exeption {e}') return False - def get_container_with_status(docker_client, container_name): + '''Get Python object of Docker container by name with its status and ID''' try: cur_container = docker_client.containers.get(container_name) if cur_container: @@ -54,8 +56,8 @@ def get_container_with_status(docker_client, container_name): logger.error(f'non defined exeption {e}') return False - def stop_container(docker_client, container_name): + '''Stop Docker container by name''' try: cur_container = docker_client.containers.get(container_name) cur_container.stop() @@ -69,6 +71,7 @@ def stop_container(docker_client, container_name): def remove_container(docker_client, container_name): + '''Remove stopped Docker container by name''' try: cur_container = docker_client.containers.get(container_name) cur_container.remove(v=True, force=True) @@ -83,6 +86,7 @@ def remove_container(docker_client, container_name): def stop_and_rm_container(docker_client, container_name): + '''Stop and remove Docker container by name''' # get container cur_container = get_container(docker_client, container_name) @@ -116,6 +120,7 @@ def stop_and_rm_container(docker_client, container_name): def image_find_and_rm(docker_client, image_tag): + '''Remove Docker image by name''' cur_img = get_image(docker_client, image_tag) logger.info(cur_img) if cur_img: @@ -129,8 +134,10 @@ def image_find_and_rm(docker_client, image_tag): return True -def create_image_and_container_by_dockerfile(docker_client: docker.DockerClient, path, image_tag, container_name, port): - # should be deleted +def create_image_and_container_by_dockerfile(docker_client, path, image_tag, container_name, port): + '''Create Docker container from Dockerfile. If container exists it will be deleted with image''' + + # delete existing container status = stop_and_rm_container(docker_client, container_name) cur_cont = get_container(docker_client, container_name) @@ -158,10 +165,7 @@ def create_image_and_container_by_dockerfile(docker_client: docker.DockerClient, # run container try: - container = docker_client.containers.run(image_tag, - name=container_name, - detach=True, - ports={8080: port}) + container = docker_client.containers.run(image_tag, name=container_name, detach=True, ports={8080:port}) for log in container.logs(): logger.debug(log) logger.info(f'container {container} created') @@ -180,6 +184,9 @@ def create_image_and_container_by_dockerfile(docker_client: docker.DockerClient, sys.exit() time.sleep(cfg.docker_wait_on_iter) + return container + + except docker.errors.APIError as api_e: logger.error(f'eroror while run container {container_name}') logger.error(str(api_e)) @@ -187,3 +194,41 @@ def create_image_and_container_by_dockerfile(docker_client: docker.DockerClient, else: logger.error(f'error while del image {image_tag}') sys.exit() + + +def build_image(path: str, tag): + '''Build Docker image from Dockerfile''' + client = docker.DockerClient(base_url='unix://var/run/docker.sock') + logger.info('build start!') + + try: + print(path) + print(tag) + image, logs = client.images.build(path=path, + tag=tag, + quiet=False, + timeout=120) + # for log in logs: + # logger.info(f'executor build_image: {log}') + # logger.info(f'image is {image}') + + except (BuildError, APIError) as e: + logger.error('error while build_image:') + for line in e.build_log: + if 'stream' in line: + logger.error(line['stream'].strip()) + sys.exit() + + + + +def run_container(image: str, ports: Dict[int, int]): + '''Run Docker container''' + client = docker.DockerClient(base_url='unix://var/run/docker.sock') + container = client.containers.run(image, detach=True, ports=ports) + for log in container.logs(): + logger.info(f'executor run_container: {log}') + logger.info(f'container is {container}') + time.sleep(10) + + return container \ No newline at end of file diff --git a/tests/domains/FaceDetection/face_detection_test.py b/tests/domains/FaceDetection/face_detection_test.py index 2e7a957..d3e1a3f 100644 --- a/tests/domains/FaceDetection/face_detection_test.py +++ b/tests/domains/FaceDetection/face_detection_test.py @@ -3,7 +3,7 @@ import os import sys import requests -root_dir = os.path.join(os.path.realpath(os.path.pardir), 'piper_ng') +root_dir = os.path.join(os.path.realpath(os.path.pardir), 'piper') sys.path.insert(1, root_dir) from pathlib import Path diff --git a/tests/domains/TesseractOCR/PiperOperator.py b/tests/domains/TesseractOCR/PiperOperator.py deleted file mode 100755 index 56761d7..0000000 --- a/tests/domains/TesseractOCR/PiperOperator.py +++ /dev/null @@ -1,176 +0,0 @@ -import requests -import json -import os -import sys -from pprint import pprint -from loguru import logger - -# root_dir = os.path.realpath(os.path.pardir) -# logger.info(f'root dir is {root_dir}') -# sys.path.insert(1, root_dir) -# from piper.utils import tesrct_utils as tu - - -HEADERS = {"Content-Type": "application/json"} -NER_RESPONSE_KEY = 'body' - -class PiperOperatorException(BaseException): - def __init__(self, msg): - pass - # logger.exception(msg) - - - -class FileLoadException(PiperOperatorException): - def __init__(self, fn): - self.fn = fn - super().__init__(f'file {fn} can`t be loaded') - - -class JSONGetKeyException(PiperOperatorException): - def __init__(self, key): - self.key = key - super().__init__(f'can`t get JSON key {key}') - - -class NoAvailableModelsException(PiperOperatorException): - def __init__(self): - super().__init__(f'there are no spacy models') - - -def get_data_by_key_from_response(cur_response, k): - j = cur_response.json() - if not j and k not in j.keys(): - raise JSONGetKeyException(k) - v = j.get(k) - return v - -def get_data_by_key_from_url(url, key, post=True, data=None, file_name=""): - try: - if post: - if file_name: - logger.info(f'filename is {file_name}') - multipart_form_data = { - 'file': open(file_name, 'rb') - } - cur_response = requests.post(url, files=multipart_form_data, verify=False) - else: - cur_response = requests.post(url, headers=HEADERS, data=data) - - logger.debug(f'url is {url}, response is {cur_response}, content is {cur_response.content}') - cur_response.raise_for_status() - if key: - logger.debug(f'try to get value for key {key}') - # pprint(cur_response.json()) - val = get_data_by_key_from_response(cur_response, key) - logger.debug(f'value for key is {val}') - return val - else: - return cur_response - - else: - cur_response = requests.get(url, headers=HEADERS, data=data) - cur_response.raise_for_status() - # logger.debug(f'response is {cur_response.text}') - val = get_data_by_key_from_response(cur_response, key) - return val - - except requests.exceptions.ConnectionError as ce: - logger.exception(f'can`t connect to url: {ce}') - - except JSONGetKeyException as cjke: - logger.exception(f'can`t get key from response: {cjke}') - - except Exception as e: - logger.exception(f'error while processing url {url}: {e}') - - -class PiperNLPWorker(): - ''' - simple class shows how to use piper NLPProcessor - ''' - - def __init__(self, base_url): - self.base_url = base_url - - ### RECOGNIZE - self.url_tsrct_cfg = f'{self.base_url}/set_config' - self.url_rcg = f'{self.base_url}/recognize' - - ### NER - # get all available SPACY models url - self.url_spacy_all_models = f'{self.base_url}/get_ner_models' - # set current SPACY model url - self.url_spacy_set_model = f'{self.base_url}/set_ner_model' - # get named entitys from text url - self.url_spacy_get_NE = f'{self.base_url}/extract_named_ents' - - - def get_available_ner_models(self): - return get_data_by_key_from_url(self.url_spacy_all_models, 'available_models', post=False) - - def set_current_spacy_model(self, model): - return get_data_by_key_from_url(self.url_spacy_set_model, '', post=True, data=json.dumps({'model_name':model})) - - def get_named_ent_from_text(self, txt): - resp = get_data_by_key_from_url(self.url_spacy_get_NE, 'result', post=False, data=json.dumps({'txt':txt})) - logger.debug(f'url is {resp}, response is {resp}') - if NER_RESPONSE_KEY in resp.keys(): - named_ents = resp.get(NER_RESPONSE_KEY) - if named_ents: - return json.loads(named_ents) - else: - logger.info(f'NER result is empty: {named_ents}') - return [] - else: - raise JSONGetKeyException(NER_RESPONSE_KEY) - - def get_text_from_file(self, fn): - try: - txt = get_data_by_key_from_url(self.url_rcg, 'text', post=True, file_name=fn) - return txt - - except Exception as e: - logger.error(f'error while extract text from file {fn}') - logger.exception(e) - - def set_tesseract_config(self, conf): - return get_data_by_key_from_url(self.url_tsrct_cfg, '', post=True, data=json.dumps(conf)) - -if __name__ == '__main__': - piper_worker = PiperNLPWorker('http://localhost:8788') - - - amodels = piper_worker.get_available_ner_models() - print('all models', amodels) - - # model = amodels[0] - model = 'en_core_web_sm' - ok = piper_worker.set_current_spacy_model(model) - # print(ok, ok.text) - if ok: - print('model set!') - else: - print('model does not set') - sys.exit() - - txt = 'The Alraigo Incident occurred on 6th June 1983, when a lost British Royal Navy Sea Harrier fighter aircraft landed on the deck of a Spanish container ship.[1][2] Its pilot, Sub-lieutenant Ian Watson, was a junior Royal Navy Pilot undertaking his first NATO exercise from HMS Illustrious, which was operating off the coast of Portugal. Watson was launched in a pair of aircraft tasked with locating a French aircraft carrier under combat conditions including radio-silence and radar switched off.' - try: - resp = piper_worker.get_named_ent_from_text(txt) - except JSONGetKeyException as e: - logger.exception(e) - # pprint(resp) - - - txt = piper_worker.get_text_from_file('/home/pavel/repo/piper_new/piper/tests/ocr_data.pdf') - logger.info(f'txt {txt}') - - - ts_conf = dict() - ts_conf['ts_lang'] = 'eng' - ts_conf['ts_config_row'] = rf'--oem 1 --psm 6' - - resp = piper_worker.set_tesseract_config(ts_conf) - logger.info(resp) - - diff --git a/tests/domains/TesseractOCR/_use_case_folder_processing.py b/tests/domains/TesseractOCR/_use_case_folder_processing.py deleted file mode 100755 index c876da4..0000000 --- a/tests/domains/TesseractOCR/_use_case_folder_processing.py +++ /dev/null @@ -1,81 +0,0 @@ -import os -import sys -import asyncio -import requests -root_dir = os.path.join(os.path.realpath(os.path.pardir), 'piper') -sys.path.insert(1, root_dir) - -from piper.utils import docker_utils as du -from piper.utils.TesseractOCR import tesseract_ocr as tu - -from piper.envs import DockerEnv -from piper.envs import is_docker_env -from piper.configurations import get_configuration -from piper.services import TesseractRecognizer, StringValue -from pathlib import Path -import os -import pytest -import json - - -# service urls -headers = {"Content-Type": "application/json"} -main_app_url = f'http://localhost:8788' - -url_tsrct_cfg = f'{main_app_url}/set_config' -url_rcg = f'{main_app_url}/recognize' - -url_spacy_all_models = f'{main_app_url}/get_ner_models' -url_spacy_set_model = f'{main_app_url}/set_ner_model' -url_spacy_get_NE = f'{main_app_url}/extract_named_ents' - -# folder info -file_path = Path(__file__).parent -# fn = file_path.joinpath('ocr_data.jpg') - -SOURCE_FOLDER = file_path -OUTPUT_FOLDER = file_path.joinpath('out') - - - -if __name__ == '__main__': - - available_models = get_available_models() - print(f'get_ner_models {available_models}') - - ts_conf = dict() - ts_conf['ts_lang'] = 'eng' - - for v in [6, 8, 11]: - # change tesseract config - ts_conf['ts_config_row'] = rf'--oem 1 --psm {v}' - set_tesseract_config(ts_conf) - print(f"\ttesseract config changed to {ts_conf['ts_config_row']}") - - for model in available_models: - # change spacy model - set_current_spacy_model(model) - print(f"\t\tspacy model changed to {model}") - - # create output folder - cur_dir = OUTPUT_FOLDER.joinpath(f'ts_{v}_{model}') - cur_dir.mkdir(parents=True, exist_ok=True) - for fn in file_path.iterdir(): - if fn.suffix[1:] in ['jpg', 'jpeg', 'png', 'pdf']: - # folder processing - txt = get_text_from_file(fn) - txt = ' '.join(txt) - print(f'\t\t\textracted text {txt}') - - named_ents = get_named_ent_from_text(txt) - - if named_ents: - named_ents_str = "\n".join(f'\t\t\t{x}' for x in named_ents) - # print(type(named_ents)) - print(f'\t\t\textract_named_ents {named_ents_str}') - - out_fn = cur_dir.joinpath(f'res_{fn.stem}.txt') - with open(out_fn, 'w') as f: - f.write(txt) - f.write('\t') - f.write(named_ents_str) diff --git a/tests/domains/TesseractOCR/out/oem_3_psm_11_en_core_web_sm/res_ocr_data.txt b/tests/domains/TesseractOCR/out/oem_3_psm_11_en_core_web_sm/res_ocr_data.txt deleted file mode 100755 index 46756ba..0000000 --- a/tests/domains/TesseractOCR/out/oem_3_psm_11_en_core_web_sm/res_ocr_data.txt +++ /dev/null @@ -1 +0,0 @@ - Test Some test text \ No newline at end of file diff --git a/tests/domains/TesseractOCR/out/oem_3_psm_11_en_core_web_sm/res_ocr_ner.txt b/tests/domains/TesseractOCR/out/oem_3_psm_11_en_core_web_sm/res_ocr_ner.txt deleted file mode 100755 index 2ffb135..0000000 --- a/tests/domains/TesseractOCR/out/oem_3_psm_11_en_core_web_sm/res_ocr_ner.txt +++ /dev/null @@ -1,13 +0,0 @@ - |The Alraigo Incident occurred on 6th June 1983, when a lost British Royal Navy Sea Harrier fighter aircraft landed on the deck of a Spanish container ship. Its pilot, Sub-lieutenant Ian Watson, was a junior Royal Navy Pilot undertaking his first NATO exercise from HMS Illustrious, which was operating off the coast of Portugal. Watson was launched in a pair of aircraft tasked with locating a French aircraft carrier under combat conditions including radio-silence and radar switched off. - ['|The Alraigo Incident', 'ORG'] - ['6th June 1983', 'DATE'] - ['British Royal Navy', 'ORG'] - ['Spanish', 'NORP'] - ['Ian Watson', 'PERSON'] - ['Royal Navy Pilot', 'ORG'] - ['first', 'ORDINAL'] - ['NATO', 'ORG'] - ['HMS Illustrious', 'ORG'] - ['Portugal', 'GPE'] - ['Watson', 'PERSON'] - ['French', 'NORP'] \ No newline at end of file diff --git a/tests/domains/TesseractOCR/out/oem_3_psm_6_en_core_web_sm/res_ocr_data.txt b/tests/domains/TesseractOCR/out/oem_3_psm_6_en_core_web_sm/res_ocr_data.txt deleted file mode 100755 index cc9f63d..0000000 --- a/tests/domains/TesseractOCR/out/oem_3_psm_6_en_core_web_sm/res_ocr_data.txt +++ /dev/null @@ -1 +0,0 @@ - Test Some test text \ No newline at end of file diff --git a/tests/domains/TesseractOCR/out/oem_3_psm_6_en_core_web_sm/res_ocr_ner.txt b/tests/domains/TesseractOCR/out/oem_3_psm_6_en_core_web_sm/res_ocr_ner.txt deleted file mode 100755 index 2a3cfc0..0000000 --- a/tests/domains/TesseractOCR/out/oem_3_psm_6_en_core_web_sm/res_ocr_ner.txt +++ /dev/null @@ -1,13 +0,0 @@ - |The Alraigo Incident occurred on 6th June 1983, when a lost British Royal Navy Sea Harrier fighter aircraft landed on the deck of a Spanish container ship. Its pilot, Sub-lieutenant Ian Watson, was a junior Royal Navy Pilot undertaking his first NATO exercise from HMS Illustrious, which was operating off the coast of Portugal. Watson was launched in a pair of aircraft tasked with locating a French aircraft carrier under combat conditions including radio-silence and radar switched off. - ['|The Alraigo Incident', 'ORG'] - ['6th June 1983', 'DATE'] - ['British Royal Navy', 'ORG'] - ['Spanish', 'NORP'] - ['Ian Watson', 'PERSON'] - ['Royal Navy Pilot', 'ORG'] - ['first', 'ORDINAL'] - ['NATO', 'ORG'] - ['HMS Illustrious', 'ORG'] - ['Portugal', 'GPE'] - ['Watson', 'PERSON'] - ['French', 'NORP'] \ No newline at end of file diff --git a/tests/domains/TesseractOCR/out/oem_3_psm_8_en_core_web_sm/res_ocr_data.txt b/tests/domains/TesseractOCR/out/oem_3_psm_8_en_core_web_sm/res_ocr_data.txt deleted file mode 100755 index 11355f9..0000000 --- a/tests/domains/TesseractOCR/out/oem_3_psm_8_en_core_web_sm/res_ocr_data.txt +++ /dev/null @@ -1 +0,0 @@ - a \ No newline at end of file diff --git a/tests/domains/TesseractOCR/out/oem_3_psm_8_en_core_web_sm/res_ocr_ner.txt b/tests/domains/TesseractOCR/out/oem_3_psm_8_en_core_web_sm/res_ocr_ner.txt deleted file mode 100755 index 3f92dad..0000000 --- a/tests/domains/TesseractOCR/out/oem_3_psm_8_en_core_web_sm/res_ocr_ner.txt +++ /dev/null @@ -1,2 +0,0 @@ - SSeS ES Peeper - ['SSeS ES Peeper', 'ORG'] \ No newline at end of file diff --git a/tests/domains/TesseractOCR/tesseract_ocr_test.py b/tests/domains/TesseractOCR/tesseract_ocr_test.py index e4f1288..656b272 100644 --- a/tests/domains/TesseractOCR/tesseract_ocr_test.py +++ b/tests/domains/TesseractOCR/tesseract_ocr_test.py @@ -4,7 +4,7 @@ import os import sys import requests -root_dir = os.path.join(os.path.realpath(os.path.pardir), 'piper_ng') +root_dir = os.path.join(os.path.realpath(os.path.pardir), 'piper') sys.path.insert(1, root_dir) from piper.utils import docker_utils as du diff --git a/tests/domains/TesseractOCR/use_case_folder_processing.py b/tests/domains/TesseractOCR/use_case_folder_processing.py deleted file mode 100755 index fa3200b..0000000 --- a/tests/domains/TesseractOCR/use_case_folder_processing.py +++ /dev/null @@ -1,85 +0,0 @@ -import os -import sys -import asyncio -import requests -root_dir = os.path.join(os.path.realpath(os.path.pardir), 'piper') -sys.path.insert(1, root_dir) - -from piper.utils import docker_utils as du -from piper.utils.TesseractOCR import tesseract_ocr as tu - -from piper.envs import DockerEnv -from piper.envs import is_docker_env -from piper.configurations import get_configuration -from piper.services import TesseractRecognizer, StringValue -from pathlib import Path -import os -import pytest -import json - -from PiperOperator import * - -# service url -main_app_url = f'http://localhost:8788' - -# folder info -file_path = Path(__file__).parent -# fn = file_path.joinpath('ocr_data.jpg') - -SOURCE_FOLDER = file_path -OUTPUT_FOLDER = file_path.joinpath('out') - - -if __name__ == '__main__': - cfg = get_configuration() - - # PiperWorker instanse - piper_worker = PiperNLPWorker(main_app_url) - - available_models = piper_worker.get_available_ner_models() - logger.info(f'available models are {available_models}') - - ts_conf = dict() - ts_conf['ts_lang'] = 'eng' - - for oem in cfg.available_OEM: - for psm in cfg.available_PSM: - # change tesseract config - ts_conf['ts_config_row'] = rf'--oem {oem} --psm {psm}' - piper_worker.set_tesseract_config(ts_conf) - logger.info(f"\ttesseract config changed to {ts_conf['ts_config_row']}") - - for model in available_models: - # change spacy model - piper_worker.set_current_spacy_model(model) - logger.info(f"\t\tspacy model changed to {model}") - - # create output folder - cur_dir = OUTPUT_FOLDER.joinpath(f'oem_{oem}_psm_{psm}_{model}') - cur_dir.mkdir(parents=True, exist_ok=True) - for fn in file_path.iterdir(): - if fn.suffix[1:] in ['jpg', 'jpeg', 'png', 'pdf']: - # folder processing - txt = piper_worker.get_text_from_file(fn) - if txt: - txt = ' '.join(txt) - logger.info(f'\t\t\textracted text {txt}') - - out_fn = cur_dir.joinpath(f'res_{fn.stem}.txt') - with open(out_fn, 'w') as f: - f.write(txt) - - logger.debug(f'get NEs from text: {txt}') - named_ents = piper_worker.get_named_ent_from_text(txt) - logger.debug(f'NEs are: {named_ents}') - - if named_ents: - named_ents_str = "\n".join(f'\t\t\t{x}' for x in named_ents) - logger.info(f'\t\t\textract_named_ents {named_ents_str}') - - # out_fn = cur_dir.joinpath(f'res_{fn.stem}.txt') - with open(out_fn, 'a') as f: - f.write('\n') - f.write(named_ents_str) - else: - logger.info(f'\t\t\tNO extracted text') diff --git a/tests/piper_operator_test.py b/tests/piper_operator_test.py deleted file mode 100644 index 5657cb2..0000000 --- a/tests/piper_operator_test.py +++ /dev/null @@ -1,173 +0,0 @@ -import json -import os -import sys -from pprint import pprint - -import requests -from loguru import logger - -# root_dir = os.path.realpath(os.path.pardir) -# logger.info(f'root dir is {root_dir}') -# sys.path.insert(1, root_dir) -# from piper.utils import tesrct_utils as tu - - -HEADERS = {"Content-Type": "application/json"} -NER_RESPONSE_KEY = 'body' - - -class PiperOperatorException(BaseException): - def __init__(self, msg): - pass - # logger.exception(msg) - - -class FileLoadException(PiperOperatorException): - def __init__(self, fn): - self.fn = fn - super().__init__(f'file {fn} can`t be loaded') - - -class JSONGetKeyException(PiperOperatorException): - def __init__(self, key): - self.key = key - super().__init__(f'can`t get JSON key {key}') - - -class NoAvailableModelsException(PiperOperatorException): - def __init__(self): - super().__init__(f'there are no spacy models') - - -def get_data_by_key_from_response(cur_response, k): - j = cur_response.json() - if not j and k not in j.keys(): - raise JSONGetKeyException(k) - v = j.get(k) - return v - - -def get_data_by_key_from_url(url, key, post=True, data=None, file_name=""): - try: - if post: - if file_name: - logger.info(f'filename is {file_name}') - multipart_form_data = { - 'file': open(file_name, 'rb') - } - cur_response = requests.post(url, files=multipart_form_data, verify=False) - else: - cur_response = requests.post(url, headers=HEADERS, data=data) - - logger.debug(f'url is {url}, response is {cur_response}, content is {cur_response.content}') - cur_response.raise_for_status() - if key: - logger.debug(f'try to get value for key {key}') - # pprint(cur_response.json()) - val = get_data_by_key_from_response(cur_response, key) - logger.debug(f'value for key is {val}') - return val - else: - return cur_response - - else: - cur_response = requests.get(url, headers=HEADERS, data=data) - cur_response.raise_for_status() - # logger.debug(f'response is {cur_response.text}') - val = get_data_by_key_from_response(cur_response, key) - return val - - except requests.exceptions.ConnectionError as ce: - logger.exception(f'can`t connect to url: {ce}') - - except JSONGetKeyException as cjke: - logger.exception(f'can`t get key from response: {cjke}') - - except Exception as e: - logger.exception(f'error while processing url {url}: {e}') - - -class PiperNLPWorker(): - ''' - simple class shows how to use piper NLPProcessor - ''' - - def __init__(self, base_url): - self.base_url = base_url - - ### RECOGNIZE - self.url_tsrct_cfg = f'{self.base_url}/set_config' - self.url_rcg = f'{self.base_url}/recognize' - - ### NER - # get all available SPACY models url - self.url_spacy_all_models = f'{self.base_url}/get_ner_models' - # set current SPACY model url - self.url_spacy_set_model = f'{self.base_url}/set_ner_model' - # get named entitys from text url - self.url_spacy_get_NE = f'{self.base_url}/extract_named_ents' - - def get_available_ner_models(self): - return get_data_by_key_from_url(self.url_spacy_all_models, 'available_models', post=False) - - def set_current_spacy_model(self, model): - return get_data_by_key_from_url(self.url_spacy_set_model, '', post=True, data=json.dumps({'model_name': model})) - - def get_named_ent_from_text(self, txt): - resp = get_data_by_key_from_url(self.url_spacy_get_NE, 'result', post=False, data=json.dumps({'txt': txt})) - logger.debug(f'url is {resp}, response is {resp}') - if NER_RESPONSE_KEY in resp.keys(): - named_ents = resp.get(NER_RESPONSE_KEY) - if named_ents: - return json.loads(named_ents) - else: - logger.info(f'NER result is empty: {named_ents}') - return [] - else: - raise JSONGetKeyException(NER_RESPONSE_KEY) - - def get_text_from_file(self, fn): - try: - txt = get_data_by_key_from_url(self.url_rcg, 'text', post=True, file_name=fn) - return txt - - except Exception as e: - logger.error(f'error while extract text from file {fn}') - logger.exception(e) - - def set_tesseract_config(self, conf): - return get_data_by_key_from_url(self.url_tsrct_cfg, '', post=True, data=json.dumps(conf)) - - -if __name__ == '__main__': - piper_worker = PiperNLPWorker('http://localhost:8788') - - amodels = piper_worker.get_available_ner_models() - print('all models', amodels) - - # model = amodels[0] - model = 'en_core_web_sm' - ok = piper_worker.set_current_spacy_model(model) - # print(ok, ok.text) - if ok: - print('model set!') - else: - print('model does not set') - sys.exit() - - txt = 'The Alraigo Incident occurred on 6th June 1983, when a lost British Royal Navy Sea Harrier fighter aircraft landed on the deck of a Spanish container ship.[1][2] Its pilot, Sub-lieutenant Ian Watson, was a junior Royal Navy Pilot undertaking his first NATO exercise from HMS Illustrious, which was operating off the coast of Portugal. Watson was launched in a pair of aircraft tasked with locating a French aircraft carrier under combat conditions including radio-silence and radar switched off.' - try: - resp = piper_worker.get_named_ent_from_text(txt) - except JSONGetKeyException as e: - logger.exception(e) - # pprint(resp) - - txt = piper_worker.get_text_from_file('/home/pavel/repo/piper_new/piper/tests/ocr_data.pdf') - logger.info(f'txt {txt}') - - ts_conf = dict() - ts_conf['ts_lang'] = 'eng' - ts_conf['ts_config_row'] = rf'--oem 1 --psm 6' - - resp = piper_worker.set_tesseract_config(ts_conf) - logger.info(resp) diff --git a/tests/use_case_folder_processing.py b/tests/use_case_folder_processing.py deleted file mode 100644 index 63e640a..0000000 --- a/tests/use_case_folder_processing.py +++ /dev/null @@ -1,85 +0,0 @@ -import asyncio -import os -import sys - -import requests - -root_dir = os.path.join(os.path.realpath(os.path.pardir), 'piper') -sys.path.insert(1, root_dir) - -import json -import os -from pathlib import Path - -import pytest -from piper_operator_test import * - -from piper.configurations import get_configuration -from piper.envs import DockerEnv, is_docker_env -from piper.services import StringValue, TesseractRecognizer -from piper.utils import docker_utils as du -from piper.utils import tesrct_utils as tu - -# service url -main_app_url = f'http://localhost:8788' - -# folder info -file_path = Path(__file__).parent -# fn = file_path.joinpath('ocr_data.jpg') - -SOURCE_FOLDER = file_path -OUTPUT_FOLDER = file_path.joinpath('out') - -if __name__ == '__main__': - cfg = get_configuration() - - # PiperWorker instanse - piper_worker = PiperNLPWorker(main_app_url) - - available_models = piper_worker.get_available_ner_models() - logger.info(f'available models are {available_models}') - - ts_conf = dict() - ts_conf['ts_lang'] = 'eng' - - for oem in cfg.available_OEM: - for psm in cfg.available_PSM: - # change tesseract config - ts_conf['ts_config_row'] = rf'--oem {oem} --psm {psm}' - piper_worker.set_tesseract_config(ts_conf) - logger.info(f"\ttesseract config changed to {ts_conf['ts_config_row']}") - - for model in available_models: - # change spacy model - piper_worker.set_current_spacy_model(model) - logger.info(f"\t\tspacy model changed to {model}") - - # create output folder - cur_dir = OUTPUT_FOLDER.joinpath(f'oem_{oem}_psm_{psm}_{model}') - cur_dir.mkdir(parents=True, exist_ok=True) - for fn in file_path.iterdir(): - if fn.suffix[1:] in ['jpg', 'jpeg', 'png', 'pdf']: - # folder processing - txt = piper_worker.get_text_from_file(fn) - if txt: - txt = ' '.join(txt) - logger.info(f'\t\t\textracted text {txt}') - - out_fn = cur_dir.joinpath(f'res_{fn.stem}.txt') - with open(out_fn, 'w') as f: - f.write(txt) - - logger.debug(f'get NEs from text: {txt}') - named_ents = piper_worker.get_named_ent_from_text(txt) - logger.debug(f'NEs are: {named_ents}') - - if named_ents: - named_ents_str = "\n".join(f'\t\t\t{x}' for x in named_ents) - logger.info(f'\t\t\textract_named_ents {named_ents_str}') - - # out_fn = cur_dir.joinpath(f'res_{fn.stem}.txt') - with open(out_fn, 'a') as f: - f.write('\n') - f.write(named_ents_str) - else: - logger.info(f'\t\t\tNO extracted text') From 3cfc1ca2801ddd3c3fba8fa1aeb5bec38b7f9d4a Mon Sep 17 00:00:00 2001 From: Pavel Prikazchikov Date: Fri, 11 Nov 2022 11:28:01 +0300 Subject: [PATCH 49/50] group excepts processing deleted --- piper/utils/docker_utils.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/piper/utils/docker_utils.py b/piper/utils/docker_utils.py index 407e3b3..98ee0bd 100644 --- a/piper/utils/docker_utils.py +++ b/piper/utils/docker_utils.py @@ -68,6 +68,9 @@ def stop_container(docker_client, container_name): except docker.errors.APIError: logger.error(f'error while stop container {container_name}') return False + except Exception as e: + logger.error(f'non defined exeption {e}') + return False def remove_container(docker_client, container_name): @@ -83,6 +86,9 @@ def remove_container(docker_client, container_name): logger.error(f'error while remove container {container_name}') logger.error(de) return False + except Exception as e: + logger.error(f'non defined exeption {e}') + return False def stop_and_rm_container(docker_client, container_name): @@ -212,15 +218,20 @@ def build_image(path: str, tag): # logger.info(f'executor build_image: {log}') # logger.info(f'image is {image}') - except (BuildError, APIError) as e: - logger.error('error while build_image:') + except BuildError as e: + logger.error('BuildError while build_image:') for line in e.build_log: if 'stream' in line: logger.error(line['stream'].strip()) sys.exit() + except APIError as e: + logger.error('APIError while build_image: server returned error') + sys.exit() - + except Exception as e: + logger.error(f'non defined exeption {e}') + sys.exit() def run_container(image: str, ports: Dict[int, int]): '''Run Docker container''' From 784480939438c3bb32e252e191742fbde894b562 Mon Sep 17 00:00:00 2001 From: Pavel Prikazchikov Date: Fri, 11 Nov 2022 11:33:16 +0300 Subject: [PATCH 50/50] main changed --- main.py | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/main.py b/main.py index 67c895a..c62fa75 100644 --- a/main.py +++ b/main.py @@ -12,7 +12,7 @@ StringValue, TesseractRecognizer, FaceDetector, - # TestMessageAdder, + TestMessageAdder, ) from piper.utils import tesrct_utils as tu @@ -20,33 +20,33 @@ logger.add("file.log", level="INFO", backtrace=True, diagnose=True, rotation='5 MB') if __name__ == '__main__': - # cfg = get_configuration() - # loop = asyncio.get_event_loop() - # with CurrentEnv() as env: - # x = StringValue(value="hello, world") - # adder = TestMessageAdder(appender="!", port=cfg.docker_app_port) - # result = loop.run_until_complete(adder(x)) - # print(result) + cfg = get_configuration() + loop = asyncio.get_event_loop() + with CurrentEnv() as env: + x = StringValue(value="hello, world") + adder = TestMessageAdder(appender="!", port=cfg.docker_app_port) + result = loop.run_until_complete(adder(x)) + print(result) - # x = StringValue(value="hello, world") - # adder = TestMessageAdder(appender="!", port=cfg.docker_app_port) - # result = loop.run_until_complete(adder(x)) - # print(result) - # adder.rm_container() + x = StringValue(value="hello, world") + adder = TestMessageAdder(appender="!", port=cfg.docker_app_port) + result = loop.run_until_complete(adder(x)) + print(result) + adder.rm_container() - logger.info(f'main here {time.time()}') - cfg = get_configuration() + # logger.info(f'main here {time.time()}') + # cfg = get_configuration() - print(cfg.path) + # print(cfg.path) - loop = asyncio.get_event_loop() - with DockerEnv() as env: - # object created - # recognizer = TesseractRecognizer(port=cfg.docker_app_port) - recognizer = FaceDetector(port=cfg.docker_app_port) + # loop = asyncio.get_event_loop() + # with DockerEnv() as env: + # # object created + # # recognizer = TesseractRecognizer(port=cfg.docker_app_port) + # recognizer = FaceDetector(port=cfg.docker_app_port) - result = loop.run_until_complete(recognizer()) - logger.info(f'result of recognition is {result}') + # result = loop.run_until_complete(recognizer()) + # logger.info(f'result of recognition is {result}') # with VirtualEnv() as env: # env.copy_struct_project()