Spaces:
Running
on
Zero
Running
on
Zero
from __future__ import annotations | |
from dataclasses import dataclass | |
import os | |
from git_utils import get_commit_hash | |
class InstalledNodePackage: | |
"""Information about an installed node package.""" | |
id: str | |
fullpath: str | |
disabled: bool | |
version: str | |
def is_unknown(self) -> bool: | |
return self.version == "unknown" | |
def is_nightly(self) -> bool: | |
return self.version == "nightly" | |
def is_from_cnr(self) -> bool: | |
return not self.is_unknown and not self.is_nightly | |
def is_enabled(self) -> bool: | |
return not self.disabled | |
def is_disabled(self) -> bool: | |
return self.disabled | |
def get_commit_hash(self) -> str: | |
return get_commit_hash(self.fullpath) | |
def isValid(self) -> bool: | |
if self.is_from_cnr: | |
return os.path.exists(os.path.join(self.fullpath, '.tracking')) | |
return True | |
def from_fullpath(fullpath: str, resolve_from_path) -> InstalledNodePackage: | |
parent_folder_name = os.path.basename(os.path.dirname(fullpath)) | |
module_name = os.path.basename(fullpath) | |
if module_name.endswith(".disabled"): | |
node_id = module_name[:-9] | |
disabled = True | |
elif parent_folder_name == ".disabled": | |
# Nodes under custom_nodes/.disabled/* are disabled | |
node_id = module_name | |
disabled = True | |
else: | |
node_id = module_name | |
disabled = False | |
info = resolve_from_path(fullpath) | |
if info is None: | |
version = 'unknown' | |
else: | |
node_id = info['id'] # robust module guessing | |
version = info['ver'] | |
return InstalledNodePackage( | |
id=node_id, fullpath=fullpath, disabled=disabled, version=version | |
) | |