parent
bf81c4ceb9
commit
a97e6bed6c
@ -0,0 +1,14 @@
|
|||||||
|
import logging
|
||||||
|
|
||||||
|
from env import settings
|
||||||
|
|
||||||
|
logger = logging.getLogger()
|
||||||
|
formatter = logging.Formatter("%(message)s")
|
||||||
|
ch = logging.StreamHandler()
|
||||||
|
ch.setFormatter(formatter)
|
||||||
|
logger.addHandler(ch)
|
||||||
|
|
||||||
|
if settings["LOG_LEVEL"] == "DEBUG":
|
||||||
|
logger.setLevel(logging.DEBUG)
|
||||||
|
else:
|
||||||
|
logger.setLevel(logging.INFO)
|
@ -0,0 +1,293 @@
|
|||||||
|
import os
|
||||||
|
import random
|
||||||
|
import uuid
|
||||||
|
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
|
||||||
|
def seed_everything(seed):
|
||||||
|
random.seed(seed)
|
||||||
|
np.random.seed(seed)
|
||||||
|
try:
|
||||||
|
import torch
|
||||||
|
|
||||||
|
torch.manual_seed(seed)
|
||||||
|
torch.cuda.manual_seed_all(seed)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
return seed
|
||||||
|
|
||||||
|
|
||||||
|
def cut_dialogue_history(history_memory, keep_last_n_words=500):
|
||||||
|
tokens = history_memory.split()
|
||||||
|
n_tokens = len(tokens)
|
||||||
|
print(f"history_memory:{history_memory}, n_tokens: {n_tokens}")
|
||||||
|
if n_tokens < keep_last_n_words:
|
||||||
|
return history_memory
|
||||||
|
else:
|
||||||
|
paragraphs = history_memory.split("\n")
|
||||||
|
last_n_tokens = n_tokens
|
||||||
|
while last_n_tokens >= keep_last_n_words:
|
||||||
|
last_n_tokens = last_n_tokens - len(paragraphs[0].split(" "))
|
||||||
|
paragraphs = paragraphs[1:]
|
||||||
|
return "\n" + "\n".join(paragraphs)
|
||||||
|
|
||||||
|
|
||||||
|
def get_new_image_name(org_img_name, func_name="update"):
|
||||||
|
head_tail = os.path.split(org_img_name)
|
||||||
|
head = head_tail[0]
|
||||||
|
tail = head_tail[1]
|
||||||
|
name_split = tail.split(".")[0].split("_")
|
||||||
|
this_new_uuid = str(uuid.uuid4())[0:4]
|
||||||
|
if len(name_split) == 1:
|
||||||
|
most_org_file_name = name_split[0]
|
||||||
|
recent_prev_file_name = name_split[0]
|
||||||
|
new_file_name = "{}_{}_{}_{}.png".format(
|
||||||
|
this_new_uuid, func_name, recent_prev_file_name, most_org_file_name
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
assert len(name_split) == 4
|
||||||
|
most_org_file_name = name_split[3]
|
||||||
|
recent_prev_file_name = name_split[0]
|
||||||
|
new_file_name = "{}_{}_{}_{}.png".format(
|
||||||
|
this_new_uuid, func_name, recent_prev_file_name, most_org_file_name
|
||||||
|
)
|
||||||
|
return os.path.join(head, new_file_name)
|
||||||
|
|
||||||
|
|
||||||
|
def get_new_dataframe_name(org_img_name, func_name="update"):
|
||||||
|
head_tail = os.path.split(org_img_name)
|
||||||
|
head = head_tail[0]
|
||||||
|
tail = head_tail[1]
|
||||||
|
name_split = tail.split(".")[0].split("_")
|
||||||
|
this_new_uuid = str(uuid.uuid4())[0:4]
|
||||||
|
if len(name_split) == 1:
|
||||||
|
most_org_file_name = name_split[0]
|
||||||
|
recent_prev_file_name = name_split[0]
|
||||||
|
new_file_name = "{}_{}_{}_{}.csv".format(
|
||||||
|
this_new_uuid, func_name, recent_prev_file_name, most_org_file_name
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
assert len(name_split) == 4
|
||||||
|
most_org_file_name = name_split[3]
|
||||||
|
recent_prev_file_name = name_split[0]
|
||||||
|
new_file_name = "{}_{}_{}_{}.csv".format(
|
||||||
|
this_new_uuid, func_name, recent_prev_file_name, most_org_file_name
|
||||||
|
)
|
||||||
|
return os.path.join(head, new_file_name)
|
||||||
|
#########=======================> utils end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#########=======================> ANSI BEGINNING
|
||||||
|
|
||||||
|
|
||||||
|
class Code:
|
||||||
|
def __init__(self, value: int):
|
||||||
|
self.value = value
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return "%d" % self.value
|
||||||
|
|
||||||
|
|
||||||
|
class Color(Code):
|
||||||
|
def bg(self) -> "Color":
|
||||||
|
self.value += 10
|
||||||
|
return self
|
||||||
|
|
||||||
|
def bright(self) -> "Color":
|
||||||
|
self.value += 60
|
||||||
|
return self
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def black() -> "Color":
|
||||||
|
return Color(30)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def red() -> "Color":
|
||||||
|
return Color(31)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def green() -> "Color":
|
||||||
|
return Color(32)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def yellow() -> "Color":
|
||||||
|
return Color(33)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def blue() -> "Color":
|
||||||
|
return Color(34)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def magenta() -> "Color":
|
||||||
|
return Color(35)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def cyan() -> "Color":
|
||||||
|
return Color(36)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def white() -> "Color":
|
||||||
|
return Color(37)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def default() -> "Color":
|
||||||
|
return Color(39)
|
||||||
|
|
||||||
|
|
||||||
|
class Style(Code):
|
||||||
|
@staticmethod
|
||||||
|
def reset() -> "Style":
|
||||||
|
return Style(0)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def bold() -> "Style":
|
||||||
|
return Style(1)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def dim() -> "Style":
|
||||||
|
return Style(2)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def italic() -> "Style":
|
||||||
|
return Style(3)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def underline() -> "Style":
|
||||||
|
return Style(4)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def blink() -> "Style":
|
||||||
|
return Style(5)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def reverse() -> "Style":
|
||||||
|
return Style(7)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def conceal() -> "Style":
|
||||||
|
return Style(8)
|
||||||
|
|
||||||
|
|
||||||
|
class ANSI:
|
||||||
|
ESCAPE = "\x1b["
|
||||||
|
CLOSE = "m"
|
||||||
|
|
||||||
|
def __init__(self, text: str):
|
||||||
|
self.text = text
|
||||||
|
self.args = []
|
||||||
|
|
||||||
|
def join(self) -> str:
|
||||||
|
return ANSI.ESCAPE + ";".join([str(a) for a in self.args]) + ANSI.CLOSE
|
||||||
|
|
||||||
|
def wrap(self, text: str) -> str:
|
||||||
|
return self.join() + text + ANSI(Style.reset()).join()
|
||||||
|
|
||||||
|
def to(self, *args: str):
|
||||||
|
self.args = list(args)
|
||||||
|
return self.wrap(self.text)
|
||||||
|
|
||||||
|
|
||||||
|
def dim_multiline(message: str) -> str:
|
||||||
|
lines = message.split("\n")
|
||||||
|
if len(lines) <= 1:
|
||||||
|
return lines[0]
|
||||||
|
return lines[0] + ANSI("\n... ".join([""] + lines[1:])).to(Color.black().bright())
|
||||||
|
|
||||||
|
#+=============================> ANSI Ending
|
||||||
|
|
||||||
|
|
||||||
|
#================================> upload base
|
||||||
|
|
||||||
|
from abc import ABC, abstractmethod, abstractstaticmethod
|
||||||
|
|
||||||
|
from env import DotEnv
|
||||||
|
|
||||||
|
STATIC_DIR = "static"
|
||||||
|
|
||||||
|
|
||||||
|
class AbstractUploader(ABC):
|
||||||
|
@abstractmethod
|
||||||
|
def upload(self, filepath: str) -> str:
|
||||||
|
pass
|
||||||
|
|
||||||
|
@abstractstaticmethod
|
||||||
|
def from_settings(settings: DotEnv) -> "AbstractUploader":
|
||||||
|
pass
|
||||||
|
|
||||||
|
#================================> upload end
|
||||||
|
|
||||||
|
|
||||||
|
#========================= upload s3
|
||||||
|
import os
|
||||||
|
|
||||||
|
import boto3
|
||||||
|
|
||||||
|
from env import DotEnv
|
||||||
|
|
||||||
|
|
||||||
|
class S3Uploader(AbstractUploader):
|
||||||
|
def __init__(self, accessKey: str, secretKey: str, region: str, bucket: str):
|
||||||
|
self.accessKey = accessKey
|
||||||
|
self.secretKey = secretKey
|
||||||
|
self.region = region
|
||||||
|
self.bucket = bucket
|
||||||
|
self.client = boto3.client(
|
||||||
|
"s3",
|
||||||
|
aws_access_key_id=self.accessKey,
|
||||||
|
aws_secret_access_key=self.secretKey,
|
||||||
|
)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def from_settings(settings: DotEnv) -> "S3Uploader":
|
||||||
|
return S3Uploader(
|
||||||
|
settings["AWS_ACCESS_KEY_ID"],
|
||||||
|
settings["AWS_SECRET_ACCESS_KEY"],
|
||||||
|
settings["AWS_REGION"],
|
||||||
|
settings["AWS_S3_BUCKET"],
|
||||||
|
)
|
||||||
|
|
||||||
|
def get_url(self, object_name: str) -> str:
|
||||||
|
return f"https://{self.bucket}.s3.{self.region}.amazonaws.com/{object_name}"
|
||||||
|
|
||||||
|
def upload(self, filepath: str) -> str:
|
||||||
|
object_name = os.path.basename(filepath)
|
||||||
|
self.client.upload_file(filepath, self.bucket, object_name)
|
||||||
|
return self.get_url(object_name)
|
||||||
|
|
||||||
|
#========================= upload s3
|
||||||
|
|
||||||
|
#========================> upload/static
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
from env import DotEnv
|
||||||
|
|
||||||
|
|
||||||
|
class StaticUploader(AbstractUploader):
|
||||||
|
def __init__(self, server: str, path: Path, endpoint: str):
|
||||||
|
self.server = server
|
||||||
|
self.path = path
|
||||||
|
self.endpoint = endpoint
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def from_settings(settings: DotEnv, path: Path, endpoint: str) -> "StaticUploader":
|
||||||
|
return StaticUploader(settings["SERVER"], path, endpoint)
|
||||||
|
|
||||||
|
def get_url(self, uploaded_path: str) -> str:
|
||||||
|
return f"{self.server}/{uploaded_path}"
|
||||||
|
|
||||||
|
def upload(self, filepath: str):
|
||||||
|
relative_path = Path("generated") / filepath.split("/")[-1]
|
||||||
|
file_path = self.path / relative_path
|
||||||
|
os.makedirs(os.path.dirname(file_path), exist_ok=True)
|
||||||
|
shutil.copy(filepath, file_path)
|
||||||
|
endpoint_path = self.endpoint / relative_path
|
||||||
|
return f"{self.server}/{endpoint_path}"
|
Loading…
Reference in new issue