From e281bf6afad3b2177dd0e02a5a44a58d739a3f4a Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Tue, 13 Oct 2020 19:21:32 +0200 Subject: [PATCH] fix environment loading --- igniter/tools.py | 23 ++++++++++++++++------- pype.py | 12 ++++++++++-- pype/tools/tray/pype_tray.py | 3 +++ 3 files changed, 29 insertions(+), 9 deletions(-) diff --git a/igniter/tools.py b/igniter/tools.py index ba67ad4f8c..d5c3c72f0e 100644 --- a/igniter/tools.py +++ b/igniter/tools.py @@ -1,14 +1,15 @@ # -*- coding: utf-8 -*- """Tools used in **Igniter** GUI.""" -import sys import os +import sys import uuid -from pype.lib import decompose_url, compose_url from urllib.parse import urlparse from pymongo import MongoClient from pymongo.errors import ServerSelectionTimeoutError, InvalidURI +from pype.lib import decompose_url, compose_url + def validate_mongo_connection(cnx: str) -> (bool, str): """Check if provided mongodb URL is valid. @@ -80,12 +81,15 @@ def validate_path_string(path: str) -> (bool, str): return False, "Not implemented yet" -def load_environments() -> dict: +def load_environments(sections: list = None) -> dict: """Load environments from Pype. This will load environments from database, process them with :mod:`acre` and return them as flattened dictionary. + Args: + sections (list, optional): load specific types + Returns; dict of str: loaded and processed environments. @@ -99,10 +103,15 @@ def load_environments() -> dict: all_env = settings.environments() merged_env = {} - for _, v in all_env.items(): - if isinstance(v, dict): - parsed_env = acre.parse(v) - merged_env = acre.append(merged_env, parsed_env) + + sections = sections or all_env.keys() + + for section in sections: + try: + parsed_env = acre.parse(all_env[section]) + except AttributeError: + continue + merged_env = acre.append(merged_env, parsed_env) env = acre.compute(merged_env, cleanup=True) return env diff --git a/pype.py b/pype.py index b28e54ff16..d6a63d3dce 100644 --- a/pype.py +++ b/pype.py @@ -36,10 +36,11 @@ settings or via **Igniter** GUI. https://www.mongodb.com/ """ -import sys import os import re +import sys import traceback + from igniter.tools import load_environments try: @@ -51,7 +52,14 @@ from igniter import BootstrapRepos def set_environments() -> None: - env = load_environments() + """Set loaded environments. + + .. todo: + better handling of environments + + """ + # FIXME: remove everything except global + env = load_environments(["global", "avalon", "ftrack"]) env = acre.merge(env, dict(os.environ)) os.environ.clear() os.environ.update(env) diff --git a/pype/tools/tray/pype_tray.py b/pype/tools/tray/pype_tray.py index a4cf4eabfe..105982f77a 100644 --- a/pype/tools/tray/pype_tray.py +++ b/pype/tools/tray/pype_tray.py @@ -1,5 +1,8 @@ import os import sys + +s = dict(os.environ) + import platform from avalon import style from Qt import QtCore, QtGui, QtWidgets, QtSvg