initial commit
This commit is contained in:
79
pythonapp/Instance/ABS.py
Normal file
79
pythonapp/Instance/ABS.py
Normal file
@@ -0,0 +1,79 @@
|
||||
from dataclasses import dataclass
|
||||
from pathlib import Path
|
||||
from pythonapp.Libs.ConfigDataClass import Config
|
||||
|
||||
|
||||
class InstanceFileNaming:
|
||||
config_dir = '.vaiola'
|
||||
main_config = 'instance.json'
|
||||
requirements_dir = 'requirements.d'
|
||||
manual_requirements = 'requirements.txt'
|
||||
pinned_packages = 'pinned.txt'
|
||||
excluded_packages = 'excluded.txt'
|
||||
env_dir = 'env'
|
||||
app_dir = 'app'
|
||||
|
||||
|
||||
@dataclass
|
||||
class InstanceConfig(Config):
|
||||
instance_type: str = 'basic'
|
||||
config_dir_rel_path: Path = Path(InstanceFileNaming.config_dir)
|
||||
env_path: Path = Path(InstanceFileNaming.env_dir)
|
||||
env_type: str = None
|
||||
requirements_dir: Path = Path(InstanceFileNaming.config_dir) / InstanceFileNaming.requirements_dir
|
||||
manual_requirements_path: Path = Path(InstanceFileNaming.config_dir) / InstanceFileNaming.manual_requirements
|
||||
pinned_packages_path: Path = Path(InstanceFileNaming.config_dir) / InstanceFileNaming.pinned_packages
|
||||
excluded_packages_path: Path = Path(InstanceFileNaming.config_dir) / InstanceFileNaming.excluded_packages
|
||||
created: bool = False
|
||||
app: Path = Path(InstanceFileNaming.app_dir)
|
||||
app_installed: bool = None
|
||||
app_extensions_dir: Path = None
|
||||
app_models_dir: Path = None
|
||||
app_output_dir: Path = None
|
||||
app_input_dir: Path = None
|
||||
app_user_dir: Path = None
|
||||
|
||||
class Instance:
|
||||
def __init__(self):
|
||||
self.path: Path | None = None
|
||||
self.config: InstanceConfig | None = None
|
||||
|
||||
def insert_component_reqs(self, name: str, req_file: str | Path):
|
||||
try:
|
||||
with open('req_file', 'r') as file:
|
||||
lines = [line.strip() for line in file]
|
||||
req = []
|
||||
opt = []
|
||||
req_bool = True
|
||||
for line in lines:
|
||||
if line.startswith("#"):
|
||||
req_bool = False
|
||||
if req_bool: req.append(line)
|
||||
else: opt.append(line)
|
||||
|
||||
with open(self.path / self.config.requirements_dir / (name + '.req'), 'w') as file:
|
||||
for line in req: file.write(line + '\n')
|
||||
with open(self.path / self.config.requirements_dir / (name + '.opt'), 'w') as file:
|
||||
for line in opt: file.write(line + '\n')
|
||||
|
||||
except FileNotFoundError:
|
||||
raise RuntimeError(f"Cannot update requirements for {name}, file {req_file} not exists")
|
||||
raise NotImplemented
|
||||
|
||||
def install_git_app(self, url: str, requirements_file_in_app_dir = 'requirements.txt',
|
||||
extensions_dir: str = None,
|
||||
models_dir: str = None,
|
||||
output_dir: str = None,
|
||||
input_dir: str = None,
|
||||
user_dir: str = None,
|
||||
):
|
||||
raise NotImplemented
|
||||
|
||||
def install_reqs(self, name, req_file: Path):
|
||||
raise NotImplemented
|
||||
|
||||
def create(self):
|
||||
raise NotImplemented
|
||||
|
||||
def install_packages(self, pkgs: list, repo, extra, pin=False):
|
||||
raise NotImplemented
|
||||
Reference in New Issue
Block a user