Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion instill_sdk/__main__.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
#!/usr/bin/env python

"""Package entry point."""
import pprint

from instill_sdk.configuration import config

# from instill_sdk.client import

if __name__ == "__main__": # pragma: no cover
# main() # pylint: disable=no-value-for-parameter
print("hello world")
print("======================Configured Hosts======================")
pprint.pprint(config.remotes)
51 changes: 51 additions & 0 deletions instill_sdk/configuration/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
import os
import typing as t
from pathlib import Path

import yaml
from pydantic import BaseModel

CONFIG_DIR = Path(
os.getenv(
"INSTILL_SYSTEM_CONFIG_PATH",
Path.home() / ".config/instill/",
)
)


class _InstillHost(BaseModel):
alias: t.Optional[str] = ""
url: str
token: t.Optional[str] = ""


class _Config(BaseModel):
remotes: t.Optional[t.List[_InstillHost]] = None


class Configuration:
def __init__(self) -> None:
self._config: _Config

CONFIG_DIR.mkdir(exist_ok=True)

@property
def remotes(self) -> t.Optional[t.List[_InstillHost]]:
return self._config.remotes

def load(self) -> None:
path = CONFIG_DIR / "config.yaml"
if not path.exists():
self._config = _Config()
return
try:
with open(path, "r", encoding="utf-8") as c:
self._config = _Config.model_validate(
yaml.load(c, Loader=yaml.FullLoader)
)
except Exception as e:
raise BaseException(f"Invalid configuration file at '{path}'") from e


config = Configuration()
config.load()
Loading