Refactor DCCsi to work better with O3DE changes (#4226)

* moving files in refactor/re-org

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* dev env refactor/re-org

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* moving/re-org so we can deprate the SDK nomiclature

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* moving/re-org so we can deprate the SDK nomiclature

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* Refactoring env so I can replace SDK with Tools folder

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* re-org and prune, from SKD to Tools

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* Removing old .bat files from SDK

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* updated how to retreive PYTHONHOME

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* Can't use/set PYTHONHOME with DCC Tools

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* small refactor

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* repaired a missed typo (causes error)

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* Added missing EntityId.h include to FocusModeInterface.h

Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>

* refactor additional LY to O3DE tags

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* Some design scaffold file stubs

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* stubbing in scaffold file pattern

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* Removal of corrupted prefabs

Signed-off-by: Benjamin Black <benblac@amazon.com>

* refactored config_utils to maintain py2.7 support for maya 2020

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* refactored config_utils to maintain py2.7 support for maya 2020

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* pruning and cleanup

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* .env is for local dev overrides

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* .env is for local dev overrides

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* clean up init and logging patterns

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* Core refactoring, config.py functional standalone

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* cleaned up some bad logging, fixed up boostrap

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* fixed validation errors

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* fix logging issue, tiddy up

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* tiddy up maya for .bat bootstraping and launch

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* name stub, fix validation

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

Co-authored-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
Co-authored-by: Benjamin Black <benblac@amazon.com>
This commit is contained in:
Jonny Galloway
2021-10-21 19:03:49 -05:00
committed by GitHub
parent 50068bcae7
commit b779f358d0
197 changed files with 3779 additions and 3636 deletions
@@ -26,26 +26,18 @@ import logging as _logging
# -------------------------------------------------------------------------
_ORG_TAG = 'Amazon_Lumberyard'
_APP_TAG = 'DCCsi'
_TOOL_TAG = 'azpy'
_TYPE_TAG = 'module'
# global scope
_PACKAGENAME = 'azpy'
_PACKAGENAME = _TOOL_TAG
__all__ = ['config_utils',
'constants',
'env_bool',
'return_stub',
'core',
'dcc',
'dev',
'test']
__all__ = ['config_utils', 'render',
'constants', 'return_stub', 'synthetic_env',
'env_base', 'env_bool', 'test', 'dev',
'lumberyard', 'marmoset'] # 'blender', 'maya', 'substance', 'houdini']
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
# _ROOT_LOGGER = _logging.getLogger() # only use this if debugging
# https://stackoverflow.com/questions/56733085/how-to-know-the-current-file-path-after-being-frozen-into-an-executable-using-cx/56748839
#os.chdir(os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))))
# -------------------------------------------------------------------------
# global space
# we need to set up basic access to the DCCsi
_MODULE_PATH = os.path.realpath(__file__) # To Do: what if frozen?
_DCCSIG_PATH = os.path.normpath(os.path.join(_MODULE_PATH, '../..'))
@@ -58,8 +50,11 @@ import azpy.env_bool as env_bool
import azpy.constants as constants
import azpy.config_utils as config_utils
_G_DEBUG = env_bool.env_bool(constants.ENVAR_DCCSI_GDEBUG, False)
_DCCSI_GDEBUG = env_bool.env_bool(constants.ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool.env_bool(constants.ENVAR_DCCSI_DEV_MODE, False)
_DCCSI_LOGLEVEL = int(env_bool.env_bool(constants.ENVAR_DCCSI_LOGLEVEL, int(20)))
if _DCCSI_GDEBUG:
_DCCSI_LOGLEVEL = int(10)
# for py2.7 (Maya) we provide this, so we must assume some bootstrapping
# has occured, see DccScriptingInterface\\config.py (_DCCSI_PYTHON_LIB_PATH)
@@ -69,38 +64,44 @@ try:
except:
import pathlib2 as pathlib
from pathlib import Path
if _G_DEBUG:
print('DCCsi debug breadcrumb, pathlib is: {}'.format(pathlib))
if _DCCSI_GDEBUG:
print('[DCCsi][AZPY] DEBUG BREADCRUMB, pathlib is: {}'.format(pathlib))
# -------------------------------------------------------------------------
# to be continued...
# -------------------------------------------------------------------------
# set up module logging
#for handler in _logging.root.handlers[:]:
#_logging.root.removeHandler(handler)
_logging.basicConfig(format=constants.FRMT_LOG_LONG, level=_DCCSI_LOGLEVEL)
_LOGGER = _logging.getLogger(_PACKAGENAME)
_LOGGER.debug('Initializing: {0}.'.format({_PACKAGENAME}))
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
# get/set the project name
_LY_DEV = os.getenv(constants.ENVAR_LY_DEV,
_O3DE_DEV = Path(os.getenv(constants.ENVAR_O3DE_DEV,
config_utils.get_stub_check_path(in_path=os.getcwd(),
check_stub='engine.json'))
check_stub='engine.json')))
_LOGGER.debug('_O3DE_DEV" {}'.format(_O3DE_DEV.resolve()))
_O3DE_PROJECT_PATH = Path(os.getenv(constants.ENVAR_O3DE_PROJECT_PATH,
config_utils.get_o3de_project_path()))
_LOGGER.debug('_O3DE_PROJECT_PATH" {}'.format(_O3DE_PROJECT_PATH.resolve()))
# get/set the project name
_LY_PROJECT_NAME = os.getenv(constants.ENVAR_LY_PROJECT,
config_utils.get_current_project().name)
if _O3DE_PROJECT_PATH:
_O3DE_PROJECT = str(os.getenv(constants.ENVAR_O3DE_PROJECT,
_O3DE_PROJECT_PATH.name))
else:
_O3DE_PROJECT='o3de'
# project cache log dir path
_DCCSI_LOG_PATH = Path(os.getenv(constants.ENVAR_DCCSI_LOG_PATH,
Path(_LY_DEV,
_LY_PROJECT_NAME,
'Cache',
'pc', 'user', 'log', 'logs')))
for handler in _logging.root.handlers[:]:
_logging.root.removeHandler(handler)
# very basic root logger for early debugging, flip to while 1:
while 0:
_logging.basicConfig(level=_logging.DEBUG,
format=constants.FRMT_LOG_LONG,
datefmt='%m-%d %H:%M')
_logging.debug('azpy.rootlogger> root logger set up for debugging') # root logger
from azpy.constants import TAG_DCCSI_NICKNAME
from azpy.constants import PATH_DCCSI_LOG_PATH
_DCCSI_LOG_PATH = Path(PATH_DCCSI_LOG_PATH.format(O3DE_PROJECT_PATH=_O3DE_PROJECT_PATH.resolve(),
TAG_DCCSI_NICKNAME=TAG_DCCSI_NICKNAME))
# -------------------------------------------------------------------------
@@ -145,14 +146,15 @@ if sys.version_info.major < 3:
# -------------------------------------------------------------------------
def initialize_logger(name,
log_to_file=False,
default_log_level=_logging.NOTSET):
default_log_level=_logging.NOTSET,
propogate=False):
"""Start a azpy logger"""
_logger = _logging.getLogger(name)
_logger.propagate = False
_logger.propagate = propogate
if not _logger.handlers:
_log_level = int(os.getenv('DCCSI_LOGLEVEL', default_log_level))
if _G_DEBUG:
if _DCCSI_GDEBUG:
_log_level = int(10) # force when debugging
print('_log_level: {}'.format(_log_level))
@@ -201,27 +203,21 @@ def initialize_logger(name,
return _logger
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
# set up logger with both console and file _logging
if _G_DEBUG:
_LOGGER = initialize_logger(_PACKAGENAME, log_to_file=True)
else:
_LOGGER = initialize_logger(_PACKAGENAME, log_to_file=False)
_LOGGER.debug('Invoking __init__.py for {0}.'.format({_PACKAGENAME}))
# some simple logger tests
# evoke the filehandlers and test writting to the log file
if _G_DEBUG:
if _DCCSI_GDEBUG:
_LOGGER.info('Forced Info! for {0}.'.format({_PACKAGENAME}))
_LOGGER.error('Forced ERROR! for {0}.'.format({_PACKAGENAME}))
# debug breadcrumbs to check this module and used paths
_LOGGER.debug('MODULE_PATH: {}'.format(_MODULE_PATH))
_LOGGER.debug('LY_DEV_PATH: {}'.format(_LY_DEV))
_LOGGER.debug('O3DE_DEV_PATH: {}'.format(_O3DE_DEV))
_LOGGER.debug('DCCSI_PATH: {}'.format(_DCCSIG_PATH))
_LOGGER.debug('LY_PROJECT_TAG: {}'.format(_LY_PROJECT_NAME))
_LOGGER.debug('O3DE_PROJECT_TAG: {}'.format(_O3DE_PROJECT))
_LOGGER.debug('DCCSI_LOG_PATH: {}'.format(_DCCSI_LOG_PATH))
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
@@ -258,9 +254,9 @@ del _LOGGER
# Main Code Block, runs this script as main (testing)
# -------------------------------------------------------------------------
if __name__ == '__main__':
_G_DEBUG = True
_DCCSI_GDEBUG = True
_DCCSI_DEV_MODE = True
if _G_DEBUG:
if _DCCSI_GDEBUG:
print(_DCCSIG_PATH)
test_imports()
@@ -18,14 +18,31 @@ import logging as _logging
# --------------------------------------------------------------------------
_PACKAGENAME = 'azpy.config_utils'
# note: this module is called in other root modules
# must avoid cyclical imports
# global scope
# normally would pull the constant envar string
# but avoiding cyclical imports here
FRMT_LOG_LONG = "[%(name)s][%(levelname)s] >> %(message)s (%(asctime)s; %(filename)s:%(lineno)d)"
_logging.basicConfig(level=_logging.INFO,
format=FRMT_LOG_LONG,
datefmt='%m-%d %H:%M')
_LOGGER = _logging.getLogger(_PACKAGENAME)
_LOGGER.debug('Initializing: {0}.'.format({_PACKAGENAME}))
from azpy.env_bool import env_bool
_DCCSI_GDEBUG = env_bool('DCCSI_GDEBUG', False)
_DCCSI_LOGLEVEL = env_bool('DCCSI_LOGLEVEL', False)
_DCCSI_LOGLEVEL = int(env_bool('DCCSI_LOGLEVEL', int(20)))
if _DCCSI_GDEBUG:
_DCCSI_LOGLEVEL = int(10)
_MODULENAME = __name__
if _MODULENAME is '__main__':
_MODULENAME = 'azpy.config_utils'
# set up module logging
#for handler in _logging.root.handlers[:]:
#_logging.root.removeHandler(handler)
_LOGGER = _logging.getLogger(_MODULENAME)
#_logging.basicConfig(format=FRMT_LOG_LONG, level=_DCCSI_LOGLEVEL)
_LOGGER.propagate = False
_LOGGER.debug('Initializing: {0}.'.format({_MODULENAME}))
__all__ = ['get_os', 'return_stub', 'get_stub_check_path',
'get_dccsi_config', 'get_current_project']
@@ -34,13 +51,15 @@ __all__ = ['get_os', 'return_stub', 'get_stub_check_path',
# -------------------------------------------------------------------------
# just a quick check to ensure what paths have code access
_G_DEBUG = False # enable for debug prints
if _G_DEBUG:
if _DCCSI_GDEBUG:
known_paths = list()
for p in sys.path:
known_paths.append(p)
_LOGGER.debug(known_paths)
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
# this import can fail in Maya 2020 (and earlier) stuck on py2.7
# wrapped in a try, to trap and providing messaging to help user correct
try:
@@ -76,6 +95,15 @@ def get_os():
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
from azpy.core import get_datadir
# there was a method here refactored out to add py2.7 support for Maya 2020
#"DccScriptingInterface\azpy\core\py2\utils.py get_datadir()"
#"DccScriptingInterface\azpy\core\py3\utils.py get_datadir()"
# Warning: planning to deprecate py2 support
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
def return_stub_dir(stub_file='dccsi_stub'):
_dir_to_last_file = None
@@ -126,6 +154,30 @@ def get_stub_check_path(in_path=os.getcwd(), check_stub='engine.json'):
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
def get_o3de_engine_root(check_stub='engine.json'):
# get the O3DE engine root folder
# if we are running within O3DE we can ensure which engine is running
_O3DE_DEV = None
try:
import azlmbr # this file will fail outside of O3DE
except ImportError as e:
# if that fails, we can search up
# search up to get \dev
_O3DE_DEV = get_stub_check_path(check_stub='engine.json')
# To Do: What if engine.json doesn't exist?
else:
# execute if no exception
# allow for external ENVAR override
from azpy.constants import ENVAR_O3DE_DEV
_O3DE_DEV = Path(os.getenv(ENVAR_O3DE_DEV, azlmbr.paths.engroot))
finally:
# note: can't use fstrings as this module gets called with py2.7 in maya
_LOGGER.info('O3DE engine root: {}'.format(_O3DE_DEV.resolve()))
return _O3DE_DEV
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
# settings.setenv() # doing this will add the additional DYNACONF_ envars
def get_dccsi_config(dccsi_dirpath=return_stub_dir()):
@@ -176,46 +228,75 @@ def get_current_project_cfg(dev_folder=get_stub_check_path()):
# -------------------------------------------------------------------------
def get_current_project():
def get_check_global_project():
"""Gets o3de project via .o3de data in user directory"""
from azpy.constants import PATH_USER_O3DE_BOOTSTRAP
from collections import OrderedDict
from box import Box
from azpy.core import get_datadir
bootstrap_box = None
try:
bootstrap_box = Box.from_json(filename=str(Path(PATH_USER_O3DE_BOOTSTRAP).resolve()),
encoding="utf-8",
errors="strict",
object_pairs_hook=OrderedDict)
except Exception as e:
# this file runs in py2.7 for Maya 2020, FileExistsError is not defined
_LOGGER.error('FileExistsError: {}'.format(PATH_USER_O3DE_BOOTSTRAP))
_LOGGER.error('exception is: {}'.format(e))
json_file_path = Path(PATH_USER_O3DE_BOOTSTRAP)
if json_file_path.exists():
try:
bootstrap_box = Box.from_json(filename=str(json_file_path.resolve()),
encoding="utf-8",
errors="strict",
object_pairs_hook=OrderedDict)
except IOError as e:
# this file runs in py2.7 for Maya 2020, FileExistsError is not defined
_LOGGER.error('Bad file interaction: {}'.format(json_file_path.resolve()))
_LOGGER.error('Exception is: {}'.format(e))
pass
if bootstrap_box:
# this seems fairly hard coded - what if the data changes?
project_path=Path(bootstrap_box.Amazon.AzCore.Bootstrap.project_path)
return project_path.resolve()
return project_path
else:
return None
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
def get_o3de_project_path():
"""figures out the o3de project path
if not found defaults to the engine folder"""
_O3DE_PROJECT_PATH = None
try:
import azlmbr # this file will fail outside of O3DE
except ImportError as e:
# (fallback 1) this checks if a global project is set
# This check user home for .o3de data
_O3DE_PROJECT_PATH = get_check_global_project()
else:
# execute if no exception, this would indicate we are in O3DE land
# allow for external ENVAR override
from azpy.constants import ENVAR_O3DE_PROJECT_PATH
_O3DE_PROJECT_PATH = Path(os.getenv(ENVAR_O3DE_PROJECT_PATH, azlmbr.paths.projectroot))
finally:
# (fallback 2) if None, fallback to engine folder
if not _O3DE_PROJECT_PATH:
_O3DE_PROJECT_PATH = get_o3de_engine_root()
# note: can't use fstrings as this module gets called with py2.7 in maya
_LOGGER.info('O3DE project root: {}'.format(_O3DE_PROJECT_PATH.resolve()))
return _O3DE_PROJECT_PATH
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
def bootstrap_dccsi_py_libs(dccsi_dirpath=return_stub_dir()):
"""Builds and adds local site dir libs based on py version"""
from azpy.constants import STR_DCCSI_PYTHON_LIB_PATH # a path string constructor
_DCCSI_PYTHON_LIB_PATH = STR_DCCSI_PYTHON_LIB_PATH.format(dccsi_dirpath,
sys.version_info[0],
sys.version_info[1])
_DCCSI_PYTHON_LIB_PATH = Path(STR_DCCSI_PYTHON_LIB_PATH.format(dccsi_dirpath,
sys.version_info[0],
sys.version_info[1]))
if os.path.exists(_DCCSI_PYTHON_LIB_PATH):
_LOGGER.debug('Performed site.addsitedir({})'.format(_DCCSI_PYTHON_LIB_PATH))
site.addsitedir(_DCCSI_PYTHON_LIB_PATH) # PYTHONPATH
if _DCCSI_PYTHON_LIB_PATH.exists():
site.addsitedir(_DCCSI_PYTHON_LIB_PATH.resolve()) # PYTHONPATH
_LOGGER.debug('Performed site.addsitedir({})'
''.format(_DCCSI_PYTHON_LIB_PATH.resolve()))
return _DCCSI_PYTHON_LIB_PATH
else:
message = "Doesn't exist: {}".format(_DCCSI_PYTHON_LIB_PATH)
@@ -243,13 +324,10 @@ if __name__ == '__main__':
_config = get_dccsi_config()
_LOGGER.info('DCCSI_CONFIG_PATH: {}'.format(_config))
_LOGGER.info('LY_DEV: {}'.format(get_stub_check_path('engine.json')))
# this will be deprecated and shouldn't work soon (returns None)
_LOGGER.info('LY_PROJECT: {}'.format(get_current_project_cfg(get_stub_check_path('bootstrap.cfg'))))
_LOGGER.info('O3DE_DEV: {}'.format(get_o3de_engine_root(check_stub='engine.json')))
# new o3de version
_LOGGER.info('LY_PROJECT: {}'.format(get_current_project()))
_LOGGER.info('O3DE_PROJECT: {}'.format(get_check_global_project()))
_LOGGER.info('DCCSI_PYTHON_LIB_PATH: {}'.format(bootstrap_dccsi_py_libs(return_stub_dir('dccsi_stub'))))
@@ -25,7 +25,16 @@ import sys
import site
from os.path import expanduser
import logging as _logging
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
# global scope
_MODULENAME = __name__
if _MODULENAME is '__main__':
_MODULENAME = 'azpy.constants'
os.environ['PYTHONINSPECT'] = 'True'
# for this module to perform standalone
# we need to set up basic access to the DCCsi
_MODULE_PATH = os.path.realpath(__file__) # To Do: what if frozen?
@@ -33,10 +42,10 @@ _DCCSIG_PATH = os.path.normpath(os.path.join(_MODULE_PATH, '../..'))
_DCCSIG_PATH = os.getenv('DCCSIG_PATH', _DCCSIG_PATH)
site.addsitedir(_DCCSIG_PATH)
# azpy module
#import azpy.constants as cnst
# now we have azpy api access
import azpy
from azpy.env_bool import env_bool
from azpy.config_utils import return_stub_dir
import azpy.env_bool as env_bool
# -------------------------------------------------------------------------
@@ -49,24 +58,26 @@ ENVAR_DCCSI_LOGLEVEL = str('DCCSI_LOGLEVEL')
# Log formating
FRMT_LOG_LONG = "[%(name)s][%(levelname)s] >> %(message)s (%(asctime)s; %(filename)s:%(lineno)d)"
FRMT_LOG_SHRT = "[%(asctime)s][%(name)s][%(levelname)s] >> %(message)s"
# -------------------------------------------------------------------------
# global space
_G_DEBUG = env_bool.env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool.env_bool(ENVAR_DCCSI_DEV_MODE, False)
# -------------------------------------------------------------------------
# global debug stuff
_DCCSI_GDEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_DCCSI_LOGLEVEL = int(env_bool(ENVAR_DCCSI_LOGLEVEL, int(20)))
if _DCCSI_GDEBUG:
_DCCSI_LOGLEVEL = int(10)
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
# set up module logging
for handler in _logging.root.handlers[:]:
_logging.root.removeHandler(handler)
_PACKAGENAME = 'azpy.constants'
_LOG_LEVEL = int(20)
if _G_DEBUG:
_LOG_LEVEL = int(10)
_logging.basicConfig(level=_LOG_LEVEL,
format=FRMT_LOG_LONG,
datefmt='%m-%d %H:%M')
_LOGGER = _logging.getLogger(_PACKAGENAME)
_LOGGER.debug('Initializing: {0}.'.format({_PACKAGENAME}))
_LOGGER = _logging.getLogger(_MODULENAME)
_logging.basicConfig(format=FRMT_LOG_LONG, level=_DCCSI_LOGLEVEL)
_LOGGER.debug('Initializing: {0}.'.format({_MODULENAME}))
# -------------------------------------------------------------------------
@@ -80,24 +91,25 @@ STR_CROSSBAR_RL = str('{0}\r'.format(STR_CROSSBAR))
STR_CROSSBAR_NL = str('{0}\n'.format(STR_CROSSBAR))
# some common str tags
TAG_DEFAULT_COMPANY = str('Amazon.Lumberyard')
TAG_DEFAULT_COMPANY = str('Amazon.O3DE')
TAG_DEFAULT_PROJECT = str('DccScriptingInterface')
TAG_DCCSI_NICKNAME = str('DCCsi')
TAG_MOCK_PROJECT = str('MockProject')
TAG_DIR_LY_DEV = str('dev')
TAG_DIR_O3DE_DEV = str('dev')
TAG_DIR_DCCSI_AZPY = str('azpy')
TAG_DIR_DCCSI_SDK = str('SDK')
TAG_DIR_LY_BUILD = str('build')
TAG_DIR_DCCSI_TOOLS = str('Tools')
TAG_DIR_O3DE_BUILD_FOLDER = str('build')
TAG_QT_PLUGIN_PATH = str('QT_PLUGIN_PATH')
TAG_O3DE_FOLDER = str('.o3de')
TAG_O3DE_BOOTSTRAP = str('bootstrap.setreg')
TAG_DCCSI_CONFIG = str('dccsiconfiguration.setreg')
# filesystem markers, stub file names.
STUB_LY_DEV = str('engine.json')
STUB_LY_ROOT_PROJECT = str('ly_project_stub')
STUB_LY_ROOT_DCCSI = str('dccsi_stub')
STUB_LY_DCCSI_AZPY = str('dccsi_azpy_stub')
STUB_LY_DCCSI_SDK = str('dccsi_sdk_stub')
STUB_O3DE_DEV = str('engine.json')
STUB_O3DE_ROOT_DCCSI = str('dccsi_stub')
STUB_O3DE_DCCSI_AZPY = str('dccsi_azpy_stub')
STUB_O3DE_DCCSI_TOOLS = str('dccsi_tools_stub')
# config string consts, Meta Qualifiers
QUALIFIER_COMMENT = str('_meta_COMMENT')
@@ -135,18 +147,18 @@ PATH_PROGRAMFILES_X64 = str(os.environ['PROGRAMFILES'])
# base env var key as str
ENVAR_COMPANY = str('COMPANY')
ENVAR_LY_PROJECT = str('LY_PROJECT')
ENVAR_LY_PROJECT_PATH = str('LY_PROJECT_PATH')
ENVAR_LY_DEV = str('LY_DEV')
ENVAR_O3DE_PROJECT = str('O3DE_PROJECT')
ENVAR_O3DE_PROJECT_PATH = str('O3DE_PROJECT_PATH')
ENVAR_O3DE_DEV = str('O3DE_DEV')
ENVAR_DCCSIG_PATH = str('DCCSIG_PATH')
ENVAR_DCCSI_AZPY_PATH = str('DCCSI_AZPY_PATH')
ENVAR_DCCSI_SDK_PATH = str('DCCSI_SDK_PATH')
ENVAR_LY_BUILD_DIR_NAME = str('LY_BUILD_DIR_NAME')
ENVAR_DCCSI_TOOLS_PATH = str('DCCSI_TOOLS_PATH')
ENVAR_O3DE_BUILD_DIR_NAME = str('O3DE_BUILD_DIR_NAME')
ENVAR_LY_BUILD_PATH = str('LY_BUILD_PATH')
ENVAR_O3DE_BUILD_PATH = str('O3DE_BUILD_PATH')
ENVAR_QT_PLUGIN_PATH = TAG_QT_PLUGIN_PATH
ENVAR_QTFORPYTHON_PATH = str('QTFORPYTHON_PATH')
ENVAR_LY_BIN_PATH = str('LY_BIN_PATH')
ENVAR_O3DE_BIN_PATH = str('O3DE_BIN_PATH')
ENVAR_DCCSI_LOG_PATH = str('DCCSI_LOG_PATH')
ENVAR_DCCSI_LAUNCHERS_PATH = str('DCCSI_LAUNCHERS_PATH')
@@ -155,7 +167,7 @@ ENVAR_DCCSI_PY_VERSION_MAJOR = str('DCCSI_PY_VERSION_MAJOR')
ENVAR_DCCSI_PY_VERSION_MINOR = str('DCCSI_PY_VERSION_MINOR')
ENVAR_DCCSI_PYTHON_PATH = str('DCCSI_PYTHON_PATH')
ENVAR_DCCSI_PYTHON_LIB_PATH = str('DCCSI_PYTHON_LIB_PATH')
ENVAR_DCCSI_PYTHON_INSTALL = str('DCCSI_PYTHON_INSTALL')
ENVAR_O3DE_PYTHON_INSTALL = str('O3DE_PYTHON_INSTALL')
ENVAR_WINGHOME = str('WINGHOME')
ENVAR_DCCSI_WING_VERSION_MAJOR = str('DCCSI_WING_VERSION_MAJOR')
@@ -169,7 +181,7 @@ ENVAR_DCCSI_PY_DEFAULT = str('DCCSI_PY_DEFAULT')
ENVAR_DCCSI_MAYA_VERSION = str('DCCSI_MAYA_VERSION')
ENVAR_MAYA_LOCATION = str('MAYA_LOCATION')
ENVAR_DCCSI_SDK_MAYA_PATH = str('DCCSI_SDK_MAYA_PATH')
ENVAR_DCCSI_TOOLS_MAYA_PATH = str('DCCSI_TOOLS_MAYA_PATH')
ENVAR_MAYA_MODULE_PATH = str('MAYA_MODULE_PATH')
ENVAR_MAYA_BIN_PATH = str('MAYA_BIN_PATH')
@@ -188,33 +200,33 @@ ENVAR_MAYA_SCRIPT_PATH = str('MAYA_SCRIPT_PATH')
ENVAR_DCCSI_MAYA_SET_CALLBACKS = str('DCCSI_MAYA_SET_CALLBACKS')
TAG_LY_DCC_MAYA_MEL = 'dccsi_setup.mel'
TAG_O3DE_DCC_MAYA_MEL = 'dccsi_setup.mel'
TAG_MAYA_WORKSPACE = 'workspace.mel'
# dcc scripting interface common and default paths
PATH_LY_DEV = str(return_stub_dir(STUB_LY_DEV))
PATH_DCCSIG_PATH = str(return_stub_dir(STUB_LY_ROOT_DCCSI))
PATH_DCCSI_AZPY_PATH = str(return_stub_dir(STUB_LY_DCCSI_AZPY))
PATH_DCCSI_SDK_PATH = str('{0}\\{1}'.format(PATH_DCCSIG_PATH, TAG_DIR_DCCSI_SDK))
PATH_O3DE_DEV = str(return_stub_dir(STUB_O3DE_DEV))
PATH_DCCSIG_PATH = str(return_stub_dir(STUB_O3DE_ROOT_DCCSI))
PATH_DCCSI_AZPY_PATH = str(return_stub_dir(STUB_O3DE_DCCSI_AZPY))
PATH_DCCSI_TOOLS_PATH = str('{0}\\{1}'.format(PATH_DCCSIG_PATH, TAG_DIR_DCCSI_TOOLS))
# logging into the cache
PATH_DCCSI_LOG_PATH = str('{LY_DEV}\\Cache\\{LY_PROJECT}\\pc\\user\\log\\logs')
PATH_DCCSI_LOG_PATH = str('{O3DE_PROJECT_PATH}\\user\\log\{TAG_DCCSI_NICKNAME}')
# dev \ <build> \
STR_CONSTRUCT_LY_BUILD_PATH = str('{0}\\{1}')
PATH_LY_BUILD_PATH = str(STR_CONSTRUCT_LY_BUILD_PATH.format(PATH_LY_DEV,
TAG_DIR_LY_BUILD))
STR_CONSTRUCT_O3DE_BUILD_PATH = str('{0}\\{1}')
PATH_O3DE_BUILD_PATH = str(STR_CONSTRUCT_O3DE_BUILD_PATH.format(PATH_O3DE_DEV,
TAG_DIR_O3DE_BUILD_FOLDER))
# ENVAR_QT_PLUGIN_PATH = TAG_QT_PLUGIN_PATH
STR_QTPLUGIN_DIR = str('{0}\\bin\\profile\\EditorPlugins')
STR_QTFORPYTHON_PATH = str('{0}\\Gems\\QtForPython\\3rdParty\\pyside2\\windows\\release')
STR_LY_BIN_PATH = str('{0}\\bin\\profile')
STR_O3DE_BIN_PATH = str('{0}\\bin\\profile')
PATH_LY_BUILD_PATH = str('{0}\\{1}'.format(PATH_LY_DEV, TAG_DIR_LY_BUILD))
PATH_QTFORPYTHON_PATH = str(STR_QTFORPYTHON_PATH.format(PATH_LY_DEV))
PATH_QT_PLUGIN_PATH = str(STR_QTPLUGIN_DIR).format(PATH_LY_BUILD_PATH)
PATH_LY_BIN_PATH = str(STR_LY_BIN_PATH).format(PATH_LY_BUILD_PATH)
PATH_O3DE_BUILD_PATH = str('{0}\\{1}'.format(PATH_O3DE_DEV, TAG_DIR_O3DE_BUILD_FOLDER))
PATH_QTFORPYTHON_PATH = str(STR_QTFORPYTHON_PATH.format(PATH_O3DE_DEV))
PATH_QT_PLUGIN_PATH = str(STR_QTPLUGIN_DIR).format(PATH_O3DE_BUILD_PATH)
PATH_O3DE_BIN_PATH = str(STR_O3DE_BIN_PATH).format(PATH_O3DE_BUILD_PATH)
# py path string, parts, etc.
TAG_DEFAULT_PY = str('Launch_pyBASE.bat')
@@ -233,12 +245,19 @@ parts = os.path.split(PATH_USER_HOME)
if str(parts[1].lower()) == 'documents':
PATH_USER_HOME = parts[0]
_LOGGER.debug('user home CORRECTED: {}'.format(PATH_USER_HOME))
STR_USER_O3DE_PATH = str('{home}\\{o3de}')
PATH_USER_O3DE = str('{home}\\{o3de}').format(home=PATH_USER_HOME,
PATH_USER_O3DE = str(STR_USER_O3DE_PATH).format(home=PATH_USER_HOME,
o3de=TAG_O3DE_FOLDER)
PATH_USER_O3DE_REGISTRY = str('{0}\\Registry').format(PATH_USER_O3DE)
PATH_USER_O3DE_BOOTSTRAP = str('{reg}\\{file}').format(reg=PATH_USER_O3DE_REGISTRY,
file=TAG_O3DE_BOOTSTRAP)
TAG_DIR_REGISTRY = str('Registry')
STR_USER_O3DE_REGISTRY_PATH = str('{0}\\{1}')
PATH_USER_O3DE_REGISTRY = str(STR_USER_O3DE_REGISTRY_PATH).format(PATH_USER_O3DE, TAG_DIR_REGISTRY)
STR_USER_O3DE_BOOTSTRAP_PATH = str('{reg}\\{file}')
PATH_USER_O3DE_BOOTSTRAP = str(STR_USER_O3DE_BOOTSTRAP_PATH).format(reg=PATH_USER_O3DE_REGISTRY,
file=TAG_O3DE_BOOTSTRAP)
#python and site-dir
TAG_DCCSI_PY_VERSION_MAJOR = str(3)
@@ -247,8 +266,8 @@ TAG_DCCSI_PY_VERSION_RELEASE = str(10)
TAG_PYTHON_EXE = str('python.exe')
TAG_TOOLS_DIR = str('Tools\\Python')
TAG_PLATFORM = str('windows')
STR_CONSTRUCT_DCCSI_PYTHON_INSTALL = str('{0}\\{1}\\{2}.{3}.{4}\\{5}')
PATH_DCCSI_PYTHON_PATH = str(STR_CONSTRUCT_DCCSI_PYTHON_INSTALL.format(PATH_LY_DEV,
STR_CONSTRUCT_O3DE_PYTHON_INSTALL = str('{0}\\{1}\\{2}.{3}.{4}\\{5}')
PATH_DCCSI_PYTHON_PATH = str(STR_CONSTRUCT_O3DE_PYTHON_INSTALL.format(PATH_O3DE_DEV,
TAG_TOOLS_DIR,
TAG_DCCSI_PY_VERSION_MAJOR,
TAG_DCCSI_PY_VERSION_MINOR,
@@ -290,19 +309,12 @@ PATH_SAT_INSTALL_PATH = str('{0}\\{1}\\{2}\\{3}\\{4}'
# Main Code Block, runs this script as main (testing)
# -------------------------------------------------------------------------
if __name__ == '__main__':
# there are not really tests to run here due to this being a list of
# constants for shared use.
_G_DEBUG = True
_DCCSI_DEV_MODE = True
_LOGGER.setLevel(_logging.DEBUG) # force debugging
# this is a top level module and to reduce cyclical azpy imports
# it only has a basic logger configured, add log to console
_handler = _logging.StreamHandler(sys.stdout)
_handler.setLevel(_logging.DEBUG)
_formatter = _logging.Formatter(FRMT_LOG_LONG)
_handler.setFormatter(_formatter)
_LOGGER.addHandler(_handler)
"""Run this file as a standalone script"""
# overide logger for standalone to be more verbose and lof to file
_LOGGER = azpy.initialize_logger(_MODULENAME,
log_to_file=_DCCSI_GDEBUG,
default_log_level=_DCCSI_LOGLEVEL)
# happy print
_LOGGER.info(STR_CROSSBAR)
@@ -321,15 +333,15 @@ if __name__ == '__main__':
from pathlib import Path
_stash_dict = {}
_stash_dict['LY_DEV'] = Path(PATH_LY_DEV)
_stash_dict['O3DE_DEV'] = Path(PATH_O3DE_DEV)
_stash_dict['DCCSIG_PATH'] = Path(PATH_DCCSIG_PATH)
_stash_dict['DCCSI_AZPY_PATH'] = Path(PATH_DCCSI_AZPY_PATH)
_stash_dict['DCCSI_SDK_PATH'] = Path(PATH_DCCSI_SDK_PATH)
_stash_dict['DCCSI_TOOLS_PATH'] = Path(PATH_DCCSI_TOOLS_PATH)
_stash_dict['DCCSI_PYTHON_PATH'] = Path(PATH_DCCSI_PYTHON_PATH)
_stash_dict['DCCSI_PY_BASE'] = Path(PATH_DCCSI_PY_BASE)
_stash_dict['DCCSI_PYTHON_LIB_PATH'] = Path(PATH_DCCSI_PYTHON_LIB_PATH)
_stash_dict['LY_BUILD_PATH'] = Path(PATH_LY_BUILD_PATH)
_stash_dict['LY_BIN_PATH'] = Path(PATH_LY_BIN_PATH)
_stash_dict['O3DE_BUILD_PATH'] = Path(PATH_O3DE_BUILD_PATH)
_stash_dict['O3DE_BIN_PATH'] = Path(PATH_O3DE_BIN_PATH)
_stash_dict['QTFORPYTHON_PATH'] = Path(PATH_QTFORPYTHON_PATH)
_stash_dict['QT_PLUGIN_PATH'] = Path(PATH_QT_PLUGIN_PATH)
_stash_dict['SAT_INSTALL_PATH'] = Path(PATH_SAT_INSTALL_PATH)
@@ -339,7 +351,7 @@ if __name__ == '__main__':
# py 2 and 3 compatible iter
def get_items(dict_object):
for key in dict_object:
yield key, dict_object[key]
yield key, dict_object[key]
for key, value in get_items(_stash_dict):
# check if path exists
@@ -0,0 +1,42 @@
# coding:utf-8
#!/usr/bin/python
#
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
#
# -------------------------------------------------------------------------
__copyright__ = "Copyright 2021, Amazon"
# -------------------------------------------------------------------------
import sys
import logging as _logging
# -------------------------------------------------------------------------
#pulling from azpy.constants causes cyclical imports :(
FRMT_LOG_LONG = "[%(name)s][%(levelname)s] >> %(message)s (%(asctime)s; %(filename)s:%(lineno)d)"
_DCCSI_GDEBUG = False
_DCCSI_LOGLEVEL = int(20)
if _DCCSI_GDEBUG:
_DCCSI_LOGLEVEL = int(10)
_PACKAGENAME = 'azpy.core'
_logging.basicConfig(format=FRMT_LOG_LONG, level=_DCCSI_LOGLEVEL)
_LOGGER = _logging.getLogger(_PACKAGENAME)
_LOGGER.debug('Initializing: {0}.'.format({_PACKAGENAME}))
__all__ = []
if sys.version_info >= (3, 6):
from azpy.core.py3.utils import get_datadir
elif sys.version_info >= (2, 6) and sys.version_info < (3, 6):
_LOGGER.warning('Python vesion < 3 will be deprecated in the future')
from azpy.core.py2.utils import get_datadir
else:
_LOGGER.warning('Python vesion < 2.6 not recommended')
from azpy.core.py2.utils import get_datadir
__all__ = ['get_datadir'] # you should hope it works
# -------------------------------------------------------------------------
@@ -0,0 +1,20 @@
# coding:utf-8
#!/usr/bin/python
#
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
#
# -------------------------------------------------------------------------
__copyright__ = "Copyright 2021, Amazon"
# -------------------------------------------------------------------------
import logging as _logging
# -------------------------------------------------------------------------
_PACKAGENAME = 'azpy.core.py2'
_LOGGER = _logging.getLogger(_PACKAGENAME)
_LOGGER.debug('Initializing: {0}.'.format({_PACKAGENAME}))
__all__ = []
# -------------------------------------------------------------------------
@@ -0,0 +1,59 @@
# coding:utf-8
#!/usr/bin/python
#
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
#
# -- This line is 75 characters -------------------------------------------
"""DCCsi.azpy.core.py2.utils
This module contain versions of utils speciufic to py3 snyntax"""
import sys
import logging as _logging
try:
import pathlib
except:
import pathlib2 as pathlib
__all__ = ['get_datadir']
_MODULENAME = 'azpy.core.py2.utils'
_LOGGER = _logging.getLogger(_MODULENAME)
_LOGGER.debug('Initializing: {0}.'.format({_MODULENAME}))
# -------------------------------------------------------------------------
def get_datadir():
"""
persistent application data.
# linux: ~/.local/share
# macOS: ~/Library/Application Support
# windows: C:/Users/<USER>/AppData/Roaming
"""
home = pathlib.Path.home()
if sys.platform.startswith('win'):
datadir = pathlib.Path(home, "AppData/Roaming")
return datadir
elif sys.platform == "linux":
datadir = pathlib.Path(home, ".local/share")
return datadir
elif sys.platform == "darwin":
datadir = pathlib.Path(home, "Library/Application Support")
return datadir
else: # unknown
return None
# -------------------------------------------------------------------------
###########################################################################
# Main Code Block, runs this script as main (testing)
# -------------------------------------------------------------------------
if __name__ == '__main__':
"""module testing"""
user_data_dir = get_datadir()
_LOGGER.info(user_data_dir.resolve())
@@ -0,0 +1,20 @@
# coding:utf-8
#!/usr/bin/python
#
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
#
# -------------------------------------------------------------------------
__copyright__ = "Copyright 2021, Amazon"
# -------------------------------------------------------------------------
import logging as _logging
# -------------------------------------------------------------------------
_PACKAGENAME = 'azpy.core.py3'
_LOGGER = _logging.getLogger(_PACKAGENAME)
_LOGGER.debug('Initializing: {0}.'.format({_PACKAGENAME}))
__all__ = []
# -------------------------------------------------------------------------
@@ -0,0 +1,52 @@
# coding:utf-8
#!/usr/bin/python
#
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
#
# -- This line is 75 characters -------------------------------------------
"""DCCsi.azpy.core.py3.utils
This module contain versions of utils speciufic to py3 snyntax"""
import sys
import pathlib
import logging as _logging
__all__ = ['get_datadir']
_MODULENAME = 'azpy.core.py3.utils'
_LOGGER = _logging.getLogger(_MODULENAME)
_LOGGER.debug('Initializing: {0}.'.format({_MODULENAME}))
# -------------------------------------------------------------------------
def get_datadir() -> pathlib.Path:
"""
persistent application data.
# linux: ~/.local/share
# macOS: ~/Library/Application Support
# windows: C:/Users/<USER>/AppData/Roaming
"""
home = pathlib.Path.home()
if sys.platform.startswith('win'):
return home / "AppData/Roaming"
elif sys.platform == "linux":
return home / ".local/share"
elif sys.platform == "darwin":
return home / "Library/Application Support"
else: # unknown
return None
# -------------------------------------------------------------------------
###########################################################################
# Main Code Block, runs this script as main (testing)
# -------------------------------------------------------------------------
if __name__ == '__main__':
"""module testing"""
user_data_dir = get_datadir()
_LOGGER.info(user_data_dir.resolve())
@@ -12,29 +12,53 @@
# importing all of the modules
"""azpy.3dsmax.__init__"""
import os
from azpy.env_bool import env_bool
import logging as _logging
import azpy.env_bool as env_bool
from azpy.constants import ENVAR_DCCSI_GDEBUG
from azpy.constants import ENVAR_DCCSI_DEV_MODE
from azpy.constants import FRMT_LOG_LONG
# global space
_G_DEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_DCCSI_GDEBUG = env_bool.env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool.env_bool(ENVAR_DCCSI_DEV_MODE, False)
_PACKAGENAME = __name__
if _PACKAGENAME is '__main__':
_PACKAGENAME = 'azpy.3dsmax'
_PACKAGENAME = 'azpy.dcc.3dsmax'
import azpy
_LOGGER = azpy.initialize_logger(_PACKAGENAME)
_LOGGER.debug('Invoking __init__.py for {0}.'.format({_PACKAGENAME}))
# set up module logging
for handler in _logging.root.handlers[:]:
_logging.root.removeHandler(handler)
_LOGGER = _logging.getLogger(_PACKAGENAME)
_logging.basicConfig(format=FRMT_LOG_LONG)
_LOGGER.debug('Initializing: {0}.'.format({_PACKAGENAME}))
# -------------------------------------------------------------------------
# These are explicit imports for now
__all__ = []
# To Do: procedurally discover dcc access and extend __all__
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
def init():
"""If the 3dsmax api is required for a package/module to import,
then it should be initialized and added here so general imports
don't fail"""
# Make sure we can import the native apis
import pymxs
import MaxPlus
# extend all with submodules
#__all__.append('foo', 'bar')
# Importing local packages/modules
pass
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
if _DCCSI_DEV_MODE:
@@ -46,21 +70,4 @@ if _DCCSI_DEV_MODE:
_logger=_LOGGER)
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
def init():
"""If the 3dsmax api is required for a package/module to import,
then it should be initialized and added here so general imports
don't fail"""
# __all__.append()
# Make sure we can import the native apis
import pymxs
import MaxPlus
# Importing local packages/modules
pass
# -------------------------------------------------------------------------
del _LOGGER
@@ -0,0 +1,53 @@
# coding:utf-8
#!/usr/bin/python
#
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
#
# -- This line is 75 characters -------------------------------------------
"""azpy.shared.__init__"""
import logging as _logging
import azpy.env_bool as env_bool
from azpy.constants import ENVAR_DCCSI_GDEBUG
from azpy.constants import ENVAR_DCCSI_DEV_MODE
from azpy.constants import FRMT_LOG_LONG
# global space
_DCCSI_GDEBUG = env_bool.env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool.env_bool(ENVAR_DCCSI_DEV_MODE, False)
_PACKAGENAME = __name__
if _PACKAGENAME is '__main__':
_PACKAGENAME = 'azpy.dcc'
# set up module logging
for handler in _logging.root.handlers[:]:
_logging.root.removeHandler(handler)
_LOGGER = _logging.getLogger(_PACKAGENAME)
_logging.basicConfig(format=FRMT_LOG_LONG)
_LOGGER.debug('Initializing: {0}.'.format({_PACKAGENAME}))
# -------------------------------------------------------------------------
# These are explicit imports for now
__all__ = []
# To Do: procedurally discover dcc access and extend __all__
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
if _DCCSI_DEV_MODE:
# If in dev mode this will test imports of __all__
from azpy import test_imports
_LOGGER.debug('Testing Imports from {0}'.format(_PACKAGENAME))
test_imports(__all__,
_pkg=_PACKAGENAME,
_logger=_LOGGER)
# -------------------------------------------------------------------------
del _LOGGER
@@ -12,28 +12,49 @@
# importing all of the modules
"""azpy.blender.__init__"""
import os
import logging as _logging
from azpy.env_bool import env_bool
import azpy.env_bool as env_bool
from azpy.constants import ENVAR_DCCSI_GDEBUG
from azpy.constants import ENVAR_DCCSI_DEV_MODE
from azpy.constants import FRMT_LOG_LONG
# global space
_G_DEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_DCCSI_GDEBUG = env_bool.env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool.env_bool(ENVAR_DCCSI_DEV_MODE, False)
_PACKAGENAME = __name__
if _PACKAGENAME is '__main__':
_PACKAGENAME = 'azpy.blender'
import azpy
_LOGGER = azpy.initialize_logger(_PACKAGENAME)
#_LOGGER.debug('Invoking __init__.py for {0}.'.format({_PACKAGENAME}))
_PACKAGENAME = 'azpy.dcc.blender'
# set up module logging
for handler in _logging.root.handlers[:]:
_logging.root.removeHandler(handler)
_LOGGER = _logging.getLogger(_PACKAGENAME)
_logging.basicConfig(format=FRMT_LOG_LONG)
_LOGGER.debug('Initializing: {0}.'.format({_PACKAGENAME}))
# -------------------------------------------------------------------------
# These are explicit imports for now
__all__ = []
# To Do: procedurally discover dcc access and extend __all__
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
def init():
"""If the blender bpy api is required for a package/module to import,
then it should be initialized and added here so general imports
don't fail"""
# Make sure we can import the native apis
import bpy
# extend all with submodules
#__all__.append('foo', 'bar')
# Importing local packages/modules
pass
# -------------------------------------------------------------------------
@@ -47,20 +68,4 @@ if _DCCSI_DEV_MODE:
_logger=_LOGGER)
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
def init():
"""If the blender bpy api is required for a package/module to import,
then it should be initialized and added here so general imports
don't fail"""
# __all__.append()
# Make sure we can import the native apis
import bpy
# Importing local packages/modules
pass
# -------------------------------------------------------------------------
del _LOGGER
@@ -12,28 +12,32 @@
# importing all of the modules
"""azpy.houdini.__init__"""
import os
import logging as _logging
from azpy import env_bool
import azpy.env_bool as env_bool
from azpy.constants import ENVAR_DCCSI_GDEBUG
from azpy.constants import ENVAR_DCCSI_DEV_MODE
from azpy.constants import FRMT_LOG_LONG
# global space
_G_DEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_DCCSI_GDEBUG = env_bool.env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool.env_bool(ENVAR_DCCSI_DEV_MODE, False)
_PACKAGENAME = __name__
if _PACKAGENAME is '__main__':
_PACKAGENAME = 'azpy.houdini'
_PACKAGENAME = 'azpy.dcc.houdini'
import azpy
_LOGGER = azpy.initialize_logger(_PACKAGENAME)
#_LOGGER.debug('Invoking __init__.py for {0}.'.format({_PACKAGENAME}))
# set up module logging
for handler in _logging.root.handlers[:]:
_logging.root.removeHandler(handler)
_LOGGER = _logging.getLogger(_PACKAGENAME)
_logging.basicConfig(format=FRMT_LOG_LONG)
_LOGGER.debug('Initializing: {0}.'.format({_PACKAGENAME}))
# -------------------------------------------------------------------------
# These are explicit imports for now
__all__ = []
# To Do: procedurally discover dcc access and extend __all__
# -------------------------------------------------------------------------
@@ -53,12 +57,13 @@ def init():
"""If the houdini api is required for a package/module to import,
then it should be initialized and added here so general imports
don't fail"""
# __all__.append()
# Make sure we can import the native apis
import hou
# extend all with submodules
#__all__.append('foo', 'bar')
# Importing local packages/modules
pass
# -------------------------------------------------------------------------
@@ -12,28 +12,32 @@
# importing all of the modules
"""azpy.houdini.__init__"""
import os
import logging as _logging
from azpy.env_bool import env_bool
import azpy.env_bool as env_bool
from azpy.constants import ENVAR_DCCSI_GDEBUG
from azpy.constants import ENVAR_DCCSI_DEV_MODE
from azpy.constants import FRMT_LOG_LONG
# global space
_G_DEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_DCCSI_GDEBUG = env_bool.env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool.env_bool(ENVAR_DCCSI_DEV_MODE, False)
_PACKAGENAME = __name__
if _PACKAGENAME is '__main__':
_PACKAGENAME = 'azpy.marmoset'
_PACKAGENAME = 'azpy.dcc.marmoset'
import azpy
_LOGGER = azpy.initialize_logger(_PACKAGENAME)
_LOGGER.debug('Invoking __init__.py for {0}.'.format({_PACKAGENAME}))
# set up module logging
for handler in _logging.root.handlers[:]:
_logging.root.removeHandler(handler)
_LOGGER = _logging.getLogger(_PACKAGENAME)
_logging.basicConfig(format=FRMT_LOG_LONG)
_LOGGER.debug('Initializing: {0}.'.format({_PACKAGENAME}))
# -------------------------------------------------------------------------
# These are explicit imports for now
__all__ = []
# To Do: procedurally discover dcc access and extend __all__
# -------------------------------------------------------------------------
@@ -53,12 +57,13 @@ def init():
"""If the marmoset api is required for a package/module to import,
then it should be initialized and added here so general imports
don't fail"""
# __all__.append()
# Make sure we can import the native apis
import mset
# extend all with submodules
#__all__.append('foo', 'bar')
# Importing local packages/modules
pass
# -------------------------------------------------------------------------
@@ -10,40 +10,32 @@
# -- This line is 75 characters -------------------------------------------
# The __init__.py files help guide import statements without automatically
# importing all of the modules
"""azpy.maya.__init__"""
"""azpy.dcc.maya.__init__"""
from azpy.env_bool import env_bool
import logging as _logging
import azpy.env_bool as env_bool
from azpy.constants import ENVAR_DCCSI_GDEBUG
from azpy.constants import ENVAR_DCCSI_DEV_MODE
from azpy.constants import FRMT_LOG_LONG
# global space
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_DCCSI_GDEBUG = env_bool.env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool.env_bool(ENVAR_DCCSI_DEV_MODE, False)
_PACKAGENAME = __name__
if _PACKAGENAME is '__main__':
_PACKAGENAME = 'azpy.maya'
_PACKAGENAME = 'azpy.dcc.maya'
import azpy
_LOGGER = azpy.initialize_logger(_PACKAGENAME)
_LOGGER.debug('Invoking __init__.py for {0}.'.format({_PACKAGENAME}))
# -------------------------------------------------------------------------
# set up module logging
for handler in _logging.root.handlers[:]:
_logging.root.removeHandler(handler)
_LOGGER = _logging.getLogger(_PACKAGENAME)
_logging.basicConfig(format=FRMT_LOG_LONG)
_LOGGER.debug('Initializing: {0}.'.format({_PACKAGENAME}))
__all__ = []
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
if _DCCSI_DEV_MODE:
# If in dev mode this will test imports of __all__
from azpy import test_imports
_LOGGER.debug('Testing Imports from {0}'.format(_PACKAGENAME))
test_imports(__all__,
_pkg=_PACKAGENAME,
_logger=_LOGGER)
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
def init():
"""If the maya api is required for a package/module to import,
@@ -12,23 +12,26 @@
# importing all of the modules
"""azpy.maya.callbacks.__init__"""
import os
import logging as _logging
from azpy.env_bool import env_bool
import azpy.env_bool as env_bool
from azpy.constants import ENVAR_DCCSI_GDEBUG
from azpy.constants import ENVAR_DCCSI_DEV_MODE
from azpy.constants import FRMT_LOG_LONG
# global space
_G_DEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_DCCSI_GDEBUG = env_bool.env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool.env_bool(ENVAR_DCCSI_DEV_MODE, False)
_PACKAGENAME = __name__
if _PACKAGENAME is '__main__':
_PACKAGENAME = 'azpy.maya.callbacks'
import azpy
_LOGGER = azpy.initialize_logger(_PACKAGENAME)
_LOGGER.debug('Invoking __init__.py for {0}.'.format({_PACKAGENAME}))
# set up module logging
for handler in _logging.root.handlers[:]:
_logging.root.removeHandler(handler)
_LOGGER = _logging.getLogger(_PACKAGENAME)
_logging.basicConfig(format=FRMT_LOG_LONG)
_LOGGER.debug('Initializing: {0}.'.format({_PACKAGENAME}))
__all__ = ['event_callback_handler',
'node_message_callback_handler',
@@ -73,12 +73,12 @@ import maya.api.OpenMaya as openmaya
#--------------------------------------------------------------------------
# -- Misc Global Space Definitions
_G_DEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_GDEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_PACKAGENAME = __name__
if _PACKAGENAME is '__main__':
_PACKAGENAME = 'azpy.maya.callbacks.event_callback_handler'
_PACKAGENAME = 'azpy.dcc.maya.callbacks.event_callback_handler'
_LOGGER = azpy.initialize_logger(_PACKAGENAME, default_log_level=int(20))
_LOGGER.debug('Invoking:: {0}.'.format({_PACKAGENAME}))
@@ -80,12 +80,12 @@ import maya.cmds as mc
# -------------------------------------------------------------------------
# -- Misc Global Space Definitions
_G_DEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_GDEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_PACKAGENAME = __name__
if _PACKAGENAME is '__main__':
_PACKAGENAME = 'azpy.maya.callbacks.event_callback_handler'
_PACKAGENAME = 'azpy.dcc.maya.callbacks.event_callback_handler'
_LOGGER = azpy.initialize_logger(_PACKAGENAME, default_log_level=int(20))
_LOGGER.debug('Invoking:: {0}.'.format({_PACKAGENAME}))
@@ -85,12 +85,12 @@ import maya.cmds as mc
# --------------------------------------------------------------------------
# -- Misc Global Space Definitions
_G_DEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_GDEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_PACKAGENAME = __name__
if _PACKAGENAME is '__main__':
_PACKAGENAME = 'azpy.maya.callbacks.on_shader_rename'
_PACKAGENAME = 'azpy.dcc.maya.callbacks.on_shader_rename'
_LOGGER = azpy.initialize_logger(_PACKAGENAME, default_log_level=int(20))
_LOGGER.debug('Invoking:: {0}.'.format({_PACKAGENAME}))
@@ -10,25 +10,28 @@
# -- This line is 75 characters -------------------------------------------
# The __init__.py files help guide import statements without automatically
# importing all of the modules
"""azpy.maya.helpers.__init__"""
"""azpy.dcc.maya.helpers.__init__"""
import os
import logging as _logging
from azpy.env_bool import env_bool
import azpy.env_bool as env_bool
from azpy.constants import ENVAR_DCCSI_GDEBUG
from azpy.constants import ENVAR_DCCSI_DEV_MODE
from azpy.constants import FRMT_LOG_LONG
# global space
_G_DEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_DCCSI_GDEBUG = env_bool.env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool.env_bool(ENVAR_DCCSI_DEV_MODE, False)
_PACKAGENAME = __name__
if _PACKAGENAME is '__main__':
_PACKAGENAME = 'azpy.maya.callbacks'
_PACKAGENAME = 'azpy.dcc.maya.callbacks'
import azpy
_LOGGER = azpy.initialize_logger(_PACKAGENAME)
_LOGGER.debug('Invoking __init__.py for {0}.'.format({_PACKAGENAME}))
# set up module logging
for handler in _logging.root.handlers[:]:
_logging.root.removeHandler(handler)
_LOGGER = _logging.getLogger(_PACKAGENAME)
_logging.basicConfig(format=FRMT_LOG_LONG)
_LOGGER.debug('Initializing: {0}.'.format({_PACKAGENAME}))
__all__ = ['undo_context', 'utils']
@@ -42,12 +42,12 @@ import maya.cmds as mc
# -------------------------------------------------------------------------
# -- Misc Global Space Definitions
_G_DEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_GDEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_PACKAGENAME = __name__
if _PACKAGENAME is '__main__':
_PACKAGENAME = 'azpy.maya.helpers.undo_context'
_PACKAGENAME = 'azpy.dcc.maya.helpers.undo_context'
_LOGGER = initialize_logger(_PACKAGENAME, default_log_level=int(20))
_LOGGER.debug('Invoking:: {0}.'.format({_PACKAGENAME}))
@@ -10,7 +10,7 @@
# -- This line is 75 characters -------------------------------------------
"""
azpy.maya utility module
azpy.dcc.maya utility module
"""
# -------------------------------------------------------------------------
# built in's
@@ -32,12 +32,12 @@ import maya.cmds as cmds
# -------------------------------------------------------------------------
# -- Misc Global Space Definitions
_G_DEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_GDEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_PACKAGENAME = __name__
if _PACKAGENAME is '__main__':
_PACKAGENAME = 'azpy.maya.helpers.undo_context'
_PACKAGENAME = 'azpy.dcc.maya.helpers.undo_context'
_LOGGER = initialize_logger(_PACKAGENAME, default_log_level=int(20))
_LOGGER.debug('Invoking:: {0}.'.format({_PACKAGENAME}))
@@ -46,7 +46,7 @@ _LOGGER.debug('Invoking:: {0}.'.format({_PACKAGENAME}))
# -------------------------------------------------------------------------
# Initiate the Wing IDE debug connection.
if _G_DEBUG:
if _DCCSI_GDEBUG:
#import azpy.dev.connectDebugger as lyDevConnnect
# lyDevConnnect()
pass
@@ -0,0 +1,38 @@
# coding:utf-8
#!/usr/bin/python
#
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
#
# --------------------------------------------------------------------------
"""azpy.dcc.maya.toolbits.__init__"""
import logging as _logging
import azpy.env_bool as env_bool
from azpy.constants import ENVAR_DCCSI_GDEBUG
from azpy.constants import ENVAR_DCCSI_DEV_MODE
from azpy.constants import FRMT_LOG_LONG
_DCCSI_GDEBUG = env_bool.env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool.env_bool(ENVAR_DCCSI_DEV_MODE, False)
_PACKAGENAME = __name__
if _PACKAGENAME is '__main__':
_PACKAGENAME = 'azpy.dcc.maya.toolbits'
# set up module logging
for handler in _logging.root.handlers[:]:
_logging.root.removeHandler(handler)
_LOGGER = _logging.getLogger(_PACKAGENAME)
_logging.basicConfig(format=FRMT_LOG_LONG)
_LOGGER.debug('Initializing: {0}.'.format({_PACKAGENAME}))
__all__ = ['detach']
del _LOGGER
#--------------------------------------------------------------------------
@@ -44,12 +44,12 @@ from azpy.constants import ENVAR_DCCSI_GDEBUG
from azpy.constants import ENVAR_DCCSI_DEV_MODE
# global space
_G_DEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_GDEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_PACKAGENAME = __name__
if _PACKAGENAME is '__main__':
_PACKAGENAME = 'azpy.maya.toolbits.detatch'
_PACKAGENAME = 'azpy.dcc.maya.toolbits.detatch'
import azpy
_LOGGER = azpy.initialize_logger(_PACKAGENAME)
@@ -65,13 +65,13 @@ def clean_detach(detachType=0, args=None, name=None,
or duplicating those faces without harming the orignal
'''
sel = azpy.maya.helpers.utils.Selection()
sel = azpy.dcc.maya.helpers.utils.Selection()
for obj in sel.selection.keys():
print("~ cleanDetach:: Working on: {0}".format(obj))
# set up / open the maya undo context
with azpy.maya.helpers.UndoContext():
with azpy.dcc.maya.helpers.UndoContext():
if deletHistoyIn:
mc.delete( obj, constructionHistory = True)
@@ -43,13 +43,13 @@ def get_stub_check_path(in_path=__file__, check_stub='engineroot.txt'):
# -------------------------------------------------------------------------
# -- Global Definitions --
_MODULENAME = 'azpy.maya.utils.execute_wing_code'
_MODULENAME = 'azpy.dcc.maya.utils.execute_wing_code'
_LOGGER = _logging.getLogger(_MODULENAME)
_LY_DEV = get_stub_check_path()
_LOGGER.info('_LY_DEV: {}'.format(_LY_DEV))
_O3DE_DEV = get_stub_check_path()
_LOGGER.info('_O3DE_DEV: {}'.format(_O3DE_DEV))
_PROJ_CACHE = os.path.join(_LY_DEV, 'cache', 'DCCsi', 'wing')
_PROJ_CACHE = os.path.join(_O3DE_DEV, 'cache', 'DCCsi', 'wing')
_LOGGER.info('_PROJ_CACHE: {}'.format(_PROJ_CACHE))
_LOCAL_HOST = socket.gethostbyname(socket.gethostname())
@@ -24,7 +24,7 @@ import logging as _logging
# --------------------------------------------------------------------------
# -- Global Definitions --
_MODULENAME = 'azpy.maya.utils.simple_command_port'
_MODULENAME = 'azpy.dcc.maya.utils.simple_command_port'
_LOGGER = _logging.getLogger(_MODULENAME)
_LOCAL_HOST = socket.gethostbyname(socket.gethostname())
@@ -205,7 +205,7 @@ class SimpleCommandPort:
# Main Code Block, runs this script as main (testing)
# -------------------------------------------------------------------------
if __name__ == '__main__':
_G_DEBUG = True
_DCCSI_GDEBUG = True
_DCCSI_DEV_MODE = True
_LOGGER.setLevel(_logging.DEBUG) # force debugging
@@ -24,7 +24,7 @@ from simple_command_port import SimpleCommandPort
# --------------------------------------------------------------------------
# -- Global Definitions --
_MODULENAME = 'azpy.maya.utils.wing_to_maya'
_MODULENAME = 'azpy.dcc.maya.utils.wing_to_maya'
_LOGGER = _logging.getLogger(_MODULENAME)
_LOCAL_HOST = socket.gethostbyname(socket.gethostname())
@@ -11,30 +11,50 @@
# The __init__.py files help guide import statements without automatically
# importing all of the modules
"""azpy.lumberyard.__init__
All Lumberyard render related packages/modules should live here."""
All O3DE related extension packages/modules should live here."""
import os
import logging as _logging
from azpy.env_bool import env_bool
import azpy.env_bool as env_bool
from azpy.constants import ENVAR_DCCSI_GDEBUG
from azpy.constants import ENVAR_DCCSI_DEV_MODE
from azpy.constants import FRMT_LOG_LONG
# global space
_G_DEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_DCCSI_GDEBUG = env_bool.env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool.env_bool(ENVAR_DCCSI_DEV_MODE, False)
_PACKAGENAME = __name__
if _PACKAGENAME is '__main__':
_PACKAGENAME = 'azpy.lumberyard'
_PACKAGENAME = 'azpy.dcc.o3de'
import azpy
_LOGGER = azpy.initialize_logger(_PACKAGENAME)
_LOGGER.debug('Invoking __init__.py for {0}.'.format({_PACKAGENAME}))
# set up module logging
for handler in _logging.root.handlers[:]:
_logging.root.removeHandler(handler)
_LOGGER = _logging.getLogger(_PACKAGENAME)
_logging.basicConfig(format=FRMT_LOG_LONG)
_LOGGER.debug('Initializing: {0}.'.format({_PACKAGENAME}))
# -------------------------------------------------------------------------
# These are explicit imports for now
__all__ = []
# To Do: procedurally discover dcc access and extend __all__
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
def init():
"""If the lumberyard azlmbr api is required for a package/module to
import, then it should be initialized and added here so general imports
don't fail"""
import azlmbr
# extend all with submodules
__all__.append('atom')
# Importing local packages/modules
pass
# -------------------------------------------------------------------------
@@ -49,19 +69,4 @@ if _DCCSI_DEV_MODE:
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
def init():
"""If the lumberyard azlmbr api is required for a package/module to
import, then it should be initialized and added here so general imports
don't fail"""
# __all__.append()
# Make sure we can import the native apis
#import <some atom api>
# Importing local packages/modules
pass
# -------------------------------------------------------------------------
del _LOGGER
@@ -14,28 +14,33 @@
This package generically uses 'render' to refer to Atom (which is a code name.)
All Atom render related packages/modules should live here."""
import os
import logging as _logging
from azpy.env_bool import env_bool
import azpy.env_bool as env_bool
from azpy.constants import ENVAR_DCCSI_GDEBUG
from azpy.constants import ENVAR_DCCSI_DEV_MODE
from azpy.constants import FRMT_LOG_LONG
# global space
_G_DEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_DCCSI_GDEBUG = env_bool.env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool.env_bool(ENVAR_DCCSI_DEV_MODE, False)
_PACKAGENAME = __name__
if _PACKAGENAME is '__main__':
_PACKAGENAME = 'azpy.render'
_PACKAGENAME = 'azpy.dcc.o3de.atom'
_LOGGER = azpy.initialize_logger(_PACKAGENAME)
_LOGGER.debug('Invoking __init__.py for {0}.'.format({_PACKAGENAME}))
# set up module logging
for handler in _logging.root.handlers[:]:
_logging.root.removeHandler(handler)
_LOGGER = _logging.getLogger(_PACKAGENAME)
_logging.basicConfig(format=FRMT_LOG_LONG)
_LOGGER.debug('Initializing: {0}.'.format({_PACKAGENAME}))
# -------------------------------------------------------------------------
# These are explicit imports for now
__all__ = []
# To Do: procedurally discover dcc access and extend __all__
# -------------------------------------------------------------------------
@@ -55,12 +60,13 @@ def init():
"""If the atom render api is required for a package/module to import,
then it should be initialized and added here so general imports
don't fail"""
# __all__.append()
# Make sure we can import the native apis
# import <some atom api>
# extend all with submodules
#__all__.append('foo', 'bar')
# Importing local packages/modules
pass
# -------------------------------------------------------------------------
@@ -12,28 +12,49 @@
# importing all of the modules
"""azpy.substance.__init__"""
import os
import logging as _logging
from azpy.env_bool import env_bool
import azpy.env_bool as env_bool
from azpy.constants import ENVAR_DCCSI_GDEBUG
from azpy.constants import ENVAR_DCCSI_DEV_MODE
from azpy.constants import FRMT_LOG_LONG
# global space
_G_DEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_DCCSI_GDEBUG = env_bool.env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool.env_bool(ENVAR_DCCSI_DEV_MODE, False)
_PACKAGENAME = __name__
if _PACKAGENAME is '__main__':
_PACKAGENAME = 'azpy.substance'
_PACKAGENAME = 'azpy.dcc.substance'
import azpy
_LOGGER = azpy.initialize_logger(_PACKAGENAME)
_LOGGER.debug('Invoking __init__.py for {0}.'.format({_PACKAGENAME}))
# set up module logging
for handler in _logging.root.handlers[:]:
_logging.root.removeHandler(handler)
_LOGGER = _logging.getLogger(_PACKAGENAME)
_logging.basicConfig(format=FRMT_LOG_LONG)
_LOGGER.debug('Initializing: {0}.'.format({_PACKAGENAME}))
# -------------------------------------------------------------------------
# These are explicit imports for now
__all__ = []
# To Do: procedurally discover dcc access and extend __all__
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
def init():
"""If the substance api is required for a package/module to import,
then it should be initialized and added here so general imports
don't fail"""
# Make sure we can import the native apis
# import <some substance api>
# extend all with submodules
#__all__.append('foo', 'bar')
# Importing local packages/modules
pass
# -------------------------------------------------------------------------
@@ -47,21 +68,4 @@ if _DCCSI_DEV_MODE:
_logger=_LOGGER)
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
def init():
"""If the substance api is required for a package/module to import,
then it should be initialized and added here so general imports
don't fail"""
# __all__.append()
# Make sure we can import the native apis
# import <some substance api>
# Importing local packages/modules
pass
# -------------------------------------------------------------------------
del _LOGGER
@@ -15,7 +15,7 @@ from azpy.constants import ENVAR_DCCSI_GDEBUG
from azpy.constants import ENVAR_DCCSI_DEV_MODE
# global space
_G_DEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_GDEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_PACKAGENAME = 'azpy.dev.ide'
@@ -119,10 +119,10 @@ def get_stub_check_path(in_path=__file__, check_stub='engineroot.txt'):
# -------------------------------------------------------------------------
# globals
_LY_DEV = get_stub_check_path()
_LOGGER.info('_LY_DEV: {}'.format(_LY_DEV))
_O3DE_DEV = get_stub_check_path()
_LOGGER.info('_O3DE_DEV: {}'.format(_O3DE_DEV))
_PROJ_CACHE = os.path.join(_LY_DEV, 'cache', 'DCCsi', 'wing')
_PROJ_CACHE = os.path.join(_O3DE_DEV, 'cache', 'DCCsi', 'wing')
_LOGGER.info('_PROJ_CACHE: {}'.format(_PROJ_CACHE))
if not os.path.exists(_PROJ_CACHE):
@@ -339,7 +339,7 @@ mel_selection_to_maya.contexts = [
if __name__ == '__main__':
# there are not really tests to run here due to this being a list of
# constants for shared use.
_G_DEBUG = True
_DCCSI_GDEBUG = True
_DCCSI_DEV_MODE = True
_LOGGER.setLevel(_logging.DEBUG) # force debugging
@@ -73,7 +73,7 @@ dccsi_test_script.contexts = [
if __name__ == '__main__':
# there are not really tests to run here due to this being a list of
# constants for shared use.
_G_DEBUG = True
_DCCSI_GDEBUG = True
_DCCSI_DEV_MODE = True
_LOGGER.setLevel(_logging.DEBUG) # force debugging
@@ -25,10 +25,10 @@ from azpy.constants import ENVAR_DCCSI_DEV_MODE
# --------------------------------------------------------------------------
# -- Global Definitions --
_DCCSI_DCC_APP = None
_DCCSI_G_DCC_APP = None
# set up global space, logging etc.
_G_DEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_GDEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_MODULENAME = 'azpy.dev.utils.check.maya_app'
@@ -43,14 +43,14 @@ _LOGGER = _logging.getLogger(_MODULENAME)
def set_dcc_app(dcc_app='maya'):
"""
azpy.dev.utils.check.maya.set_dcc_app()
this will set global _DCCSI_DCC_APP = 'maya'
and os.environ["DCCSI_DCC_APP"] = 'maya'
this will set global _DCCSI_G_DCC_APP = 'maya'
and os.environ["DCCSI_G_DCC_APP"] = 'maya'
"""
_DCCSI_DCC_APP = dcc_app
_DCCSI_G_DCC_APP = dcc_app
_LOGGER.info('Setting DCCSI_DCC_APP to: {0}'.format(dcc_app))
_LOGGER.info('Setting DCCSI_G_DCC_APP to: {0}'.format(dcc_app))
return _DCCSI_DCC_APP
return _DCCSI_G_DCC_APP
# -------------------------------------------------------------------------
@@ -58,44 +58,44 @@ def set_dcc_app(dcc_app='maya'):
def clear_dcc_app(dcc_app=False):
"""
azpy.dev.utils.check.maya.set_dcc_app()
this will set global _DCCSI_DCC_APP = False
and os.environ["DCCSI_DCC_APP"] = False
this will set global _DCCSI_G_DCC_APP = False
and os.environ["DCCSI_G_DCC_APP"] = False
"""
_DCCSI_DCC_APP = dcc_app
_DCCSI_G_DCC_APP = dcc_app
_LOGGER.info('Setting DCCSI_DCC_APP to: {0}'.format(dcc_app))
_LOGGER.info('Setting DCCSI_G_DCC_APP to: {0}'.format(dcc_app))
return _DCCSI_DCC_APP
return _DCCSI_G_DCC_APP
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
def validate_state(DCCSI_DCC_APP=_DCCSI_DCC_APP):
def validate_state(DCCSI_G_DCC_APP=_DCCSI_G_DCC_APP):
'''
This will detect if we are running in Maya or not,
then will call either, set_dcc_app('maya') or clear_dcc_app(dcc_app=False)
'''
if _G_DEBUG:
if _DCCSI_GDEBUG:
_LOGGER.debug(autolog())
try:
import maya.cmds as cmds
DCCSI_DCC_APP = set_dcc_app('maya')
DCCSI_G_DCC_APP = set_dcc_app('maya')
except ImportError as e:
_LOGGER.warning('Can not perform: import maya.cmds as cmds')
DCCSI_DCC_APP = clear_dcc_app()
DCCSI_G_DCC_APP = clear_dcc_app()
else:
try:
if cmds.about(batch=True):
DCCSI_DCC_APP = set_dcc_app('maya')
DCCSI_G_DCC_APP = set_dcc_app('maya')
except AttributeError as e:
_LOGGER.warning("maya.cmds module isn't fully loaded/populated, "
"(cmds populates only in batch, maya.standalone, or maya GUI)")
# NO Maya
DCCSI_DCC_APP=clear_dcc_app()
DCCSI_G_DCC_APP=clear_dcc_app()
return DCCSI_DCC_APP
return DCCSI_G_DCC_APP
# -------------------------------------------------------------------------
@@ -120,7 +120,7 @@ def autolog():
# -------------------------------------------------------------------------
# run the check on import
_DCCSI_DCC_APP = validate_state()
_DCCSI_G_DCC_APP = validate_state()
# -------------------------------------------------------------------------
@@ -130,7 +130,7 @@ _DCCSI_DCC_APP = validate_state()
if __name__ == '__main__':
# there are not really tests to run here due to this being a list of
# constants for shared use.
_G_DEBUG = True
_DCCSI_GDEBUG = True
_DCCSI_DEV_MODE = True
_LOGGER.setLevel(_logging.DEBUG) # force debugging
@@ -150,5 +150,5 @@ if __name__ == '__main__':
_LOGGER.info('{} ... Running script as __main__'.format(_MODULENAME))
_LOGGER.info(STR_CROSSBAR)
_DCCSI_DCC_APP = validate_state()
_LOGGER.info('Is Maya Running? _DCCSI_DCC_APP = {}'.format(_DCCSI_DCC_APP))
_DCCSI_G_DCC_APP = validate_state()
_LOGGER.info('Is Maya Running? _DCCSI_G_DCC_APP = {}'.format(_DCCSI_G_DCC_APP))
@@ -21,10 +21,11 @@ import logging as _logging
# --------------------------------------------------------------------------
# -- Global Definitions --
_DCCSI_DCC_APP = None
_DCCSI_G_DCC_APP = None
_MODULENAME = 'azpy.dev.utils.check.running_state'
_LOGGER = _logging.getLogger(_MODULENAME)
_LOGGER.debug('Initializing: {0}.'.format({_MODULENAME}))
# -------------------------------------------------------------------------
@@ -36,7 +37,7 @@ class CheckRunningState(object):
"""
# Class Variables
DCCSI_DCC_APP = None
DCCSI_G_DCC_APP = None
def __init__(self, *args, **kwargs):
'''
@@ -82,32 +83,35 @@ class CheckRunningState(object):
def check_known(self):
# -- init --
# first let's check if any of these DCC apps are running
# To Do?: Add O3DE checks, treat as a DCC app?
# 0 - maya first
CheckRunningState.DCCSI_DCC_APP = self.maya_running()
CheckRunningState.DCCSI_G_DCC_APP = self.maya_running()
# 1 - then max
if not CheckRunningState.DCCSI_DCC_APP:
CheckRunningState.DCCSI_DCC_APP = self.max_running()
if not CheckRunningState.DCCSI_G_DCC_APP:
CheckRunningState.DCCSI_G_DCC_APP = self.max_running()
else:
_LOGGER.warning('DCCSI_DCC_APP is already set: {}'.format(CheckRunningState.DCCSI_DCC_APP))
_LOGGER.warning('DCCSI_G_DCC_APP is already set: {}'.format(CheckRunningState.DCCSI_G_DCC_APP))
# 2 - then blender
if not CheckRunningState.DCCSI_DCC_APP:
CheckRunningState.DCCSI_DCC_APP = self.blender_running()
if not CheckRunningState.DCCSI_G_DCC_APP:
CheckRunningState.DCCSI_G_DCC_APP = self.blender_running()
else:
_LOGGER.warning('DCCSI_DCC_APP is already set: {}'.format(CheckRunningState.DCCSI_DCC_APP))
_LOGGER.warning('DCCSI_G_DCC_APP is already set: {}'.format(CheckRunningState.DCCSI_G_DCC_APP))
# store checks for DCC info
if CheckRunningState.DCCSI_DCC_APP:
if CheckRunningState.DCCSI_G_DCC_APP:
self.dcc_py = True
# store check for is maya running headless
if CheckRunningState.DCCSI_DCC_APP == 'maya':
if CheckRunningState.DCCSI_G_DCC_APP == 'maya':
self.maya_headless = self.is_maya_headless()
# set a envar other modules can easily check
if CheckRunningState.DCCSI_DCC_APP:
os.environ['DCCSI_DCC_APP'] = CheckRunningState.DCCSI_DCC_APP
if CheckRunningState.DCCSI_G_DCC_APP:
os.environ['DCCSI_G_DCC_APP'] = CheckRunningState.DCCSI_G_DCC_APP
# ---------------------------------------------------------------------
@@ -164,13 +168,13 @@ class CheckRunningState(object):
"""< To Do: Need to document >"""
try:
import azpy.dev.utils.check.maya_app as check_dcc
DCCSI_DCC_APP = check_dcc.validate_state()
DCCSI_G_DCC_APP = check_dcc.validate_state()
except ImportError as e:
_LOGGER.info('Not Implemented: azpy.dev.utils.check.maya_app')
if DCCSI_DCC_APP:
CheckRunningState.DCCSI_DCC_APP = check_dcc.validate_state()
os.environ["DCCSI_DCC_APP"] = str(DCCSI_DCC_APP)
return CheckRunningState.DCCSI_DCC_APP
if DCCSI_G_DCC_APP:
CheckRunningState.DCCSI_G_DCC_APP = check_dcc.validate_state()
os.environ["DCCSI_G_DCC_APP"] = str(DCCSI_G_DCC_APP)
return CheckRunningState.DCCSI_G_DCC_APP
#----------------------------------------------------------------------
# --method-------------------------------------------------------------
@@ -200,13 +204,13 @@ class CheckRunningState(object):
"""
try:
import azpy.dev.utils.check.max_app as check_dcc
CheckRunningState.DCCSI_DCC_APP = check_dcc.validate_state()
CheckRunningState.DCCSI_G_DCC_APP = check_dcc.validate_state()
except ImportError as e:
_LOGGER.info('Not Implemented: azpy.dev.utils.check.max')
if CheckRunningState.DCCSI_DCC_APP:
CheckRunningState.DCCSI_DCC_APP = check_dcc.validate_state()
os.environ["DCCSI_DCC_APP"] = str(CheckRunningState.DCCSI_DCC_APP)
return CheckRunningState.DCCSI_DCC_APP
if CheckRunningState.DCCSI_G_DCC_APP:
CheckRunningState.DCCSI_G_DCC_APP = check_dcc.validate_state()
os.environ["DCCSI_G_DCC_APP"] = str(CheckRunningState.DCCSI_G_DCC_APP)
return CheckRunningState.DCCSI_G_DCC_APP
#----------------------------------------------------------------------
@@ -217,13 +221,13 @@ class CheckRunningState(object):
"""
try:
import azpy.dev.utils.check.blender_app as check_dcc
CheckRunningState.DCCSI_DCC_APP = check_dcc.validate_state()
CheckRunningState.DCCSI_G_DCC_APP = check_dcc.validate_state()
except ImportError as e:
_LOGGER.info('Not Implemented: azpy.dev.utils.check.blender')
if CheckRunningState.DCCSI_DCC_APP:
CheckRunningState.DCCSI_DCC_APP = check_dcc.validate_state()
os.environ["DCCSI_DCC_APP"] = str(CheckRunningState.DCCSI_DCC_APP)
return CheckRunningState.DCCSI_DCC_APP
if CheckRunningState.DCCSI_G_DCC_APP:
CheckRunningState.DCCSI_G_DCC_APP = check_dcc.validate_state()
os.environ["DCCSI_G_DCC_APP"] = str(CheckRunningState.DCCSI_G_DCC_APP)
return CheckRunningState.DCCSI_G_DCC_APP
#----------------------------------------------------------------------
@@ -231,7 +235,7 @@ class CheckRunningState(object):
# Class Test
#==========================================================================
if __name__ == '__main__':
_G_DEBUG = True
_DCCSI_GDEBUG = True
_DCCSI_DEV_MODE = True
_LOGGER.setLevel(_logging.DEBUG) # force debugging
@@ -251,4 +255,4 @@ if __name__ == '__main__':
_LOGGER.info(STR_CROSSBAR)
foo = CheckRunningState()
_LOGGER.info('DCCSI_DCC_APP: {}'.format(foo.DCCSI_DCC_APP))
_LOGGER.info('DCCSI_G_DCC_APP: {}'.format(foo.DCCSI_G_DCC_APP))
@@ -10,7 +10,7 @@
# -- This line is 75 characters -------------------------------------------
from __future__ import unicode_literals
'''
Module: <DCCsi>\azpy\shared\common\base_env.py
Module: <DCCsi>\\azpy\\shared\\common\\base_env.py
This module packs the most basic set of environment variables.
@@ -57,7 +57,7 @@ _LOGGER = _logging.getLogger(_PACKAGENAME)
_LOGGER.debug('Initializing: {0}.'.format({_PACKAGENAME}))
# global space
_G_DEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_GDEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
# set up base totally non-functional defauls (denoted with $<ENVAR>)
@@ -65,15 +65,15 @@ _DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_BASE_ENVVAR_DICT = OrderedDict()
# project tag
_BASE_ENVVAR_DICT[ENVAR_LY_PROJECT] = '${0}'.format(ENVAR_LY_PROJECT)
_BASE_ENVVAR_DICT[ENVAR_O3DE_PROJECT] = '${0}'.format(ENVAR_O3DE_PROJECT)
# paths
_BASE_ENVVAR_DICT[ENVAR_LY_DEV] = Path('${0}'.format(ENVAR_LY_DEV))
_BASE_ENVVAR_DICT[ENVAR_LY_PROJECT_PATH] = Path('${0}'.format(ENVAR_LY_PROJECT_PATH))
_BASE_ENVVAR_DICT[ENVAR_O3DE_DEV] = Path('${0}'.format(ENVAR_O3DE_DEV))
_BASE_ENVVAR_DICT[ENVAR_O3DE_PROJECT_PATH] = Path('${0}'.format(ENVAR_O3DE_PROJECT_PATH))
_BASE_ENVVAR_DICT[ENVAR_DCCSIG_PATH] = Path('${0}'.format(ENVAR_DCCSIG_PATH))
_BASE_ENVVAR_DICT[ENVAR_DCCSI_LOG_PATH] = Path('${0}'.format(ENVAR_DCCSI_LOG_PATH))
_BASE_ENVVAR_DICT[ENVAR_DCCSI_AZPY_PATH] = Path('${0}'.format(ENVAR_DCCSI_AZPY_PATH))
_BASE_ENVVAR_DICT[ENVAR_DCCSI_SDK_PATH] = Path('${0}'.format(ENVAR_DCCSI_SDK_PATH))
_BASE_ENVVAR_DICT[ENVAR_DCCSI_TOOLS_PATH] = Path('${0}'.format(ENVAR_DCCSI_TOOLS_PATH))
# dev env flags
_BASE_ENVVAR_DICT[ENVAR_DCCSI_GDEBUG] = '${0}'.format(ENVAR_DCCSI_GDEBUG)
@@ -110,16 +110,16 @@ if __name__ == '__main__':
# print(setEnvarDefaults(), '\r') #<-- not necissary, already called
# print(BASE_ENVVAR_VALUES, '\r')
_LOGGER.info('Pretty print: _BASE_ENVVAR_DICT')
print(json.dumps(_BASE_ENVVAR_DICT,
indent=4, sort_keys=False,
ensure_ascii=False), '\r')
_LOGGER.debug(json.dumps(_BASE_ENVVAR_DICT,
indent=4, sort_keys=False,
ensure_ascii=False), '\r')
# retreive a Path type key from the Box
foo = _BASE_ENVVAR_DICT[ENVAR_LY_DEV]
foo = _BASE_ENVVAR_DICT[ENVAR_O3DE_DEV]
_LOGGER.info('~ foo is: {0}'.format(type(foo), foo))
# simple tests
_ENV_TAG = 'LY_DEV'
_ENV_TAG = 'O3DE_DEV'
foo = get_envar_default(_ENV_TAG)
_LOGGER.info("~ Results of getVar on tag, '{0}':'{1}'\r".format(_ENV_TAG, foo))
@@ -1,37 +0,0 @@
# coding:utf-8
#!/usr/bin/python
#
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
#
# -- This line is 75 characters -------------------------------------------
# The __init__.py files help guide import statements without automatically
# importing all of the modules
"""azpy.maya.toolbits.__init__"""
mport os
from azpy.env_bool import env_bool
from azpy.constants import ENVAR_DCCSI_GDEBUG
from azpy.constants import ENVAR_DCCSI_DEV_MODE
# global space
_G_DEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_PACKAGENAME = __name__
if _PACKAGENAME is '__main__':
_PACKAGENAME = 'azpy.maya.toolbits'
import azpy
_LOGGER = azpy.initialize_logger(_PACKAGENAME)
_LOGGER.debug('Invoking __init__.py for {0}.'.format({_PACKAGENAME}))
__all__ = ['detach']
del _LOGGER
#--------------------------------------------------------------------------
@@ -19,7 +19,7 @@ import logging as _logging
# -------------------------------------------------------------------------
# global space debug flag, no fancy stuff here we use in bootstrap
_G_DEBUG = False # manually enable to debug this file
_DCCSI_GDEBUG = False # manually enable to debug this file
_PACKAGENAME = __name__
if _PACKAGENAME is '__main__':
@@ -44,7 +44,7 @@ def return_stub(stub):
break
if (len(tail) == 0):
path = ""
if _G_DEBUG:
if _DCCSI_GDEBUG:
_LOGGER.debug('~ Debug Message: I was not able to find the '
'path to that file (stub) in a walk-up '
'from currnet path')
@@ -11,23 +11,27 @@
"""azpy.shared.__init__"""
import os
import logging as _logging
from azpy.env_bool import env_bool
import azpy.env_bool as env_bool
from azpy.constants import ENVAR_DCCSI_GDEBUG
from azpy.constants import ENVAR_DCCSI_DEV_MODE
from azpy.constants import FRMT_LOG_LONG
# global space
_G_DEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_DCCSI_GDEBUG = env_bool.env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool.env_bool(ENVAR_DCCSI_DEV_MODE, False)
_PACKAGENAME = __name__
if _PACKAGENAME is '__main__':
_PACKAGENAME = 'azpy.shared'
import azpy
_LOGGER = azpy.initialize_logger(_PACKAGENAME)
_LOGGER.debug('Invoking __init__.py for {0}.'.format({_PACKAGENAME}))
# set up module logging
for handler in _logging.root.handlers[:]:
_logging.root.removeHandler(handler)
_LOGGER = _logging.getLogger(_PACKAGENAME)
_logging.basicConfig(format=FRMT_LOG_LONG)
_LOGGER.debug('Initializing: {0}.'.format({_PACKAGENAME}))
# -------------------------------------------------------------------------
@@ -1,17 +0,0 @@
{
"ordered_box": true,
"COMPANY": "Amazon.Lumberyard",
"LY_PROJECT": "DccScriptingInterface",
"LY_DEV": "G:\\depot\\JG_PC1_spectrAtom\\dev",
"LY_BUILD_DIR_NAME": "windows_vs2019",
"LY_BUILD_PATH": "G:\\depot\\JG_PC1_spectrAtom\\dev\\windows_vs2019",
"QT_PLUGIN_PATH": "G:\\depot\\JG_PC1_spectrAtom\\dev\\bin\\profile\\EditorPlugins",
"LY_PROJECT_PATH": "G:\\depot\\JG_PC1_spectrAtom\\dev\\Gems\\AtomLyIntegration\\TechnicalArt\\DccScriptingInterface",
"DCCSIG_PATH": "G:\\depot\\JG_PC1_spectrAtom\\dev\\Gems\\AtomLyIntegration\\TechnicalArt\\DccScriptingInterface",
"DCCSI_AZPY_PATH": "G:\\depot\\JG_PC1_spectrAtom\\dev\\Gems\\AtomLyIntegration\\TechnicalArt\\DccScriptingInterface\\azpy",
"DCCSI_SDK_PATH": "G:\\depot\\JG_PC1_spectrAtom\\dev\\Gems\\AtomLyIntegration\\TechnicalArt\\DccScriptingInterface\\SDK",
"DCCSI_WING_VERSION_MAJOR": "7",
"DCCSI_WING_VERSION_MINOR": "1",
"WINGHOME": "C:\\Program Files (x86)\\Wing Pro 7.1",
"DCCSI_PY_DEFAULT": "G:\\depot\\JG_PC1_spectrAtom\\dev\\Tools\\Python\\3.7.5\\windows\\python.exe"
}
@@ -12,23 +12,27 @@
# importing all of the modules
"""azpy.shared.common.__init__"""
import os
import logging as _logging
from azpy.env_bool import env_bool
import azpy.env_bool as env_bool
from azpy.constants import ENVAR_DCCSI_GDEBUG
from azpy.constants import ENVAR_DCCSI_DEV_MODE
from azpy.constants import FRMT_LOG_LONG
# global space
_G_DEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_DCCSI_GDEBUG = env_bool.env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool.env_bool(ENVAR_DCCSI_DEV_MODE, False)
_PACKAGENAME = __name__
if _PACKAGENAME is '__main__':
_PACKAGENAME = 'azpy.shared.common'
import azpy
_LOGGER = azpy.initialize_logger(_PACKAGENAME)
_LOGGER.debug('Invoking __init__.py for {0}.'.format({_PACKAGENAME}))
# set up module logging
for handler in _logging.root.handlers[:]:
_logging.root.removeHandler(handler)
_LOGGER = _logging.getLogger(_PACKAGENAME)
_logging.basicConfig(format=FRMT_LOG_LONG)
_LOGGER.debug('Initializing: {0}.'.format({_PACKAGENAME}))
# -------------------------------------------------------------------------
#
@@ -48,34 +48,34 @@ import os
import sys
import site
import fnmatch
import logging as _logging
# 3rd Party
from pathlib import Path
# from progress.spinner import Spinner # deprecate use (or refactor)
# Lumberyard extensions
from azpy.constants import *
from azpy import initialize_logger
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
# global space debug flag
from azpy.env_bool import env_bool
# global space
import azpy.env_bool as env_bool
from azpy.constants import ENVAR_DCCSI_GDEBUG
from azpy.constants import ENVAR_DCCSI_DEV_MODE
from azpy.constants import FRMT_LOG_LONG
# global space
_G_DEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_DCCSI_GDEBUG = env_bool.env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool.env_bool(ENVAR_DCCSI_DEV_MODE, False)
_PACKAGENAME = __name__
if _PACKAGENAME is '__main__':
_PACKAGENAME = 'azpy.shared.common.core_utils'
_MODULENAME = __name__
if _MODULENAME is '__main__':
_MODULENAME = 'azpy.shared.common.core_utils'
import azpy
_LOGGER = azpy.initialize_logger(_PACKAGENAME)
_LOGGER.debug('Invoking __init__.py for {0}.'.format({_PACKAGENAME}))
# set up module logging
for handler in _logging.root.handlers[:]:
_logging.root.removeHandler(handler)
_LOGGER = _logging.getLogger(_MODULENAME)
_logging.basicConfig(format=FRMT_LOG_LONG)
_LOGGER.debug('Initializing: {0}.'.format({_MODULENAME}))
# -------------------------------------------------------------------------
@@ -421,7 +421,7 @@ def return_stub(stub):
if __name__ == "__main__":
'''To Do: Document'''
# constants for shared use.
_G_DEBUG = True
_DCCSI_GDEBUG = True
# happy _LOGGER.info
_LOGGER.info("# {0} #".format('-' * 72))
@@ -435,7 +435,7 @@ if __name__ == "__main__":
_KNOWN_SITEDIR_PATHS = site._init_pathinfo()
# this is just a debug developer convenience _LOGGER.info (for testing acess)
if _G_DEBUG:
if _DCCSI_GDEBUG:
import pkgutil
_LOGGER.info('Current working dir: {0}'.format(cwd))
search_path = ['.'] # set to None to see all modules importable from sys.path
@@ -12,7 +12,7 @@ from __future__ import unicode_literals
# -------------------------------------------------------------------------
'''
Module: <DCCsi>\azpy\shared\common\config_utils.py
Module: <DCCsi>\\azpy\\shared\\common\\config_utils.py
A set of utility functions
@@ -33,28 +33,31 @@ import logging as _logging
# 3rd Party
from box import Box
from unipath import Path
# Lumberyard extensions
from azpy.constants import *
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
from azpy.env_bool import env_bool
# global space
import azpy.env_bool as env_bool
from azpy.constants import ENVAR_O3DE_DEV
from azpy.constants import ENVAR_O3DE_PROJECT
from azpy.constants import ENVAR_DCCSI_GDEBUG
from azpy.constants import ENVAR_DCCSI_DEV_MODE
from azpy.constants import FRMT_LOG_LONG
# global space
_G_DEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_DCCSI_GDEBUG = env_bool.env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool.env_bool(ENVAR_DCCSI_DEV_MODE, False)
_PACKAGENAME = __name__
if _PACKAGENAME is '__main__':
_PACKAGENAME = 'azpy.shared.common.envar_utils'
_MODULENAME = __name__
if _MODULENAME is '__main__':
_MODULENAME = 'azpy.shared.common.envar_utils'
import azpy
_LOGGER = azpy.initialize_logger(_PACKAGENAME)
_LOGGER.debug('Invoking __init__.py for {0}.'.format({_PACKAGENAME}))
# set up module logging
for handler in _logging.root.handlers[:]:
_logging.root.removeHandler(handler)
_LOGGER = _logging.getLogger(_MODULENAME)
_logging.basicConfig(format=FRMT_LOG_LONG)
_LOGGER.debug('Initializing: {0}.'.format({_MODULENAME}))
# -------------------------------------------------------------------------
@@ -65,7 +68,7 @@ def get_envar_default(envar, envar_default=None, envar_set=Box(ordered_box=True)
Get from the system environment, or the module dictionary (a Box):
like the test one in __main__ below,
TEST_ENV_VALUES = Box(ordered_box=True)
TEST_ENV_VALUES[ENVAR_LY_PROJECT] = '${0}'.format(ENVAR_LY_PROJECT)
TEST_ENV_VALUES[ENVAR_O3DE_PROJECT] = '${0}'.format(ENVAR_O3DE_PROJECT)
This dictionary provides a simple way to pack a default set into a
structure and decouple the getter implementation.
@@ -88,7 +91,7 @@ def get_envar_default(envar, envar_default=None, envar_set=Box(ordered_box=True)
# -- envar util ----------------------------------------------------------
def set_envar_defaults(envar_set, env_root=get_envar_default(ENVAR_LY_DEV)):
def set_envar_defaults(envar_set, env_root=get_envar_default(ENVAR_O3DE_DEV)):
"""
Set each environment variable if not alreay set with value.
Must be safe, will not over-write existing.
@@ -98,8 +101,8 @@ def set_envar_defaults(envar_set, env_root=get_envar_default(ENVAR_LY_DEV)):
env_root = Path(env_root)
if env_root.exists():
os.environ[ENVAR_LY_DEV] = env_root
envar_set[ENVAR_LY_DEV] = env_root
os.environ[ENVAR_O3DE_DEV] = env_root
envar_set[ENVAR_O3DE_DEV] = env_root
else:
raise ValueError("EnvVar Root is not valid: {0}".format(env_root))
@@ -107,7 +110,7 @@ def set_envar_defaults(envar_set, env_root=get_envar_default(ENVAR_LY_DEV)):
envar = str(envar)
value = os.getenv(envar)
if _G_DEBUG:
if _DCCSI_GDEBUG:
if not value:
_LOGGER.debug('~ EnVar value NOT found: {0}\r'.format(envar))
@@ -191,8 +194,8 @@ if __name__ == '__main__':
# it should be benign but leaving this comment here in case of funk
# tes envars
TEST_ENV_VALUES[ENVAR_LY_PROJECT] = '${0}'.format(ENVAR_LY_PROJECT)
TEST_ENV_VALUES[ENVAR_LY_DEV] = Path('${0}'.format(ENVAR_LY_DEV))
TEST_ENV_VALUES[ENVAR_O3DE_PROJECT] = '${0}'.format(ENVAR_O3DE_PROJECT)
TEST_ENV_VALUES[ENVAR_O3DE_DEV] = Path('${0}'.format(ENVAR_O3DE_DEV))
# try to fetch and set the base values from the environment
# this makes sure all envars set, are resolved on import
@@ -204,7 +207,7 @@ if __name__ == '__main__':
ensure_ascii=False), '\r')
# simple tests
_ENV_TAG = 'LY_DEV'
_ENV_TAG = 'O3DE_DEV'
foo = get_envar_default(_ENV_TAG)
_LOGGER.info("~ Results of getVar on tag, '{0}':'{1}'\r".format(_ENV_TAG, foo))
@@ -13,31 +13,35 @@ SPDX-License-Identifier: Apache-2.0 OR MIT
import os
from pathlib import Path
import logging as _logging
# -------------------------------------------------------------------------
from azpy.env_bool import env_bool
# -------------------------------------------------------------------------
# global space
import azpy.env_bool as env_bool
from azpy.constants import ENVAR_DCCSI_GDEBUG
from azpy.constants import ENVAR_DCCSI_DEV_MODE
from azpy.constants import FRMT_LOG_LONG
# global space
_G_DEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_DCCSI_GDEBUG = env_bool.env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool.env_bool(ENVAR_DCCSI_DEV_MODE, False)
_PACKAGENAME = __name__
if _PACKAGENAME is '__main__':
_PACKAGENAME = 'azpy.shared.noodely'
import azpy
_LOGGER = azpy.initialize_logger(_PACKAGENAME)
_LOGGER.debug('Invoking __init__.py for {0}.'.format({_PACKAGENAME}))
# -------------------------------------------------------------------------
#
# set up module logging
for handler in _logging.root.handlers[:]:
_logging.root.removeHandler(handler)
_LOGGER = _logging.getLogger(_PACKAGENAME)
_logging.basicConfig(format=FRMT_LOG_LONG)
_LOGGER.debug('Initializing: {0}.'.format({_PACKAGENAME}))
__all__ = ['find_arg',
'helpers',
'node',
'synth',
'synth_arg_kwarg',
'test_foo']
#
# -------------------------------------------------------------------------
@@ -74,7 +74,7 @@ if __name__ == "__main__":
print ('~ find_arg.py ... Running script as __main__')
print ("# ----------------------------------------------------------------------- #\r")
_G_DEBUG = True
_DCCSI_GDEBUG = True
from test_foo import Foo
@@ -102,7 +102,7 @@ if __name__ == "__main__":
self._kwargsDict[key] = value
# synthesize(self, '{0}'.format(key), value) <-- I have a method,
# which synthesizes properties... with gettr, settr, etc.
if _G_DEBUG:
if _DCCSI_GDEBUG:
print("{0}:{1}".format(key, value))
# representation
@@ -47,13 +47,13 @@ from azpy.constants import ENVAR_DCCSI_DEV_MODE
# global space
# To Do: update to dynaconf dynamic env and settings?
_G_DEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_GDEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_MODULENAME = 'azpy.shared.noodely.node'
_log_level = int(20)
if _G_DEBUG:
if _DCCSI_GDEBUG:
_log_level = int(10)
_LOGGER = azpy.initialize_logger(_MODULENAME,
log_to_file=False,
@@ -66,7 +66,7 @@ _LOGGER.debug('Starting:: {}.'.format({_MODULENAME}))
# quick test code (remove later)
from hashids import Hashids
hashids = Hashids(min_length=16, salt='DCCsi')
if _G_DEBUG:
if _DCCSI_GDEBUG:
print (hashids.encrypt(193487)) # test hash
# -------------------------------------------------------------------------
@@ -107,7 +107,7 @@ class Node(object):
"""Class constructor: makes a node."""
# share the debug state
_DEBUG = _G_DEBUG
_DEBUG = _DCCSI_GDEBUG
# logger
_LOGGER = _G_LOGGER
@@ -47,13 +47,13 @@ from azpy.constants import ENVAR_DCCSI_DEV_MODE
# -------------------------------------------------------------------------
# global space
# To Do: update to dynaconf dynamic env and settings?
_G_DEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_GDEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_MODULENAME = 'azpy.shared.noodely.pathnode'
_log_level = int(20)
if _G_DEBUG:
if _DCCSI_GDEBUG:
_log_level = int(10)
_LOGGER = azpy.initialize_logger(_MODULENAME,
log_to_file=False,
@@ -78,7 +78,7 @@ class PathNode(Node):
"""doc string"""
# share the debug state
_DEBUG = _G_DEBUG
_DEBUG = _DCCSI_GDEBUG
# class header
_message_header = 'noodly, PathNode(): Message'
@@ -11,24 +11,26 @@
"""azpy.shared.ui.__init__"""
import os
import logging as _logging
from azpy.env_bool import env_bool
import azpy.env_bool as env_bool
from azpy.constants import ENVAR_DCCSI_GDEBUG
from azpy.constants import ENVAR_DCCSI_DEV_MODE
from azpy.constants import FRMT_LOG_LONG
# global space
_G_DEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_DCCSI_GDEBUG = env_bool.env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool.env_bool(ENVAR_DCCSI_DEV_MODE, False)
_PACKAGENAME = __name__
if _PACKAGENAME is '__main__':
_PACKAGENAME = 'azpy.shared.ui'
import azpy
_LOGGER = azpy.initialize_logger(_PACKAGENAME)
_LOGGER.debug('Invoking __init__.py for {0}.'.format({_PACKAGENAME}))
# set up module logging
for handler in _logging.root.handlers[:]:
_logging.root.removeHandler(handler)
_LOGGER = _logging.getLogger(_PACKAGENAME)
_logging.basicConfig(format=FRMT_LOG_LONG)
_LOGGER.debug('Initializing: {0}.'.format({_PACKAGENAME}))
# -------------------------------------------------------------------------
#
__all__ = []
@@ -34,7 +34,7 @@ from shiboken2 import wrapInstance
# -------------------------------------------------------------------------
# global space debug flag
_G_DEBUG = settings.DCCSI_GDEBUG
_DCCSI_GDEBUG = settings.DCCSI_GDEBUG
# global space debug flag
_DCCSI_DEV_MODE = settings.DCCSI_DEV_MODE
@@ -30,7 +30,7 @@ import PySide2.QtGui as QtGui
# -------------------------------------------------------------------------
# global space
# To Do: update to dynaconf dynamic env and settings?
_G_DEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_GDEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_MODULE_PATH = Path(__file__)
@@ -38,7 +38,7 @@ _MODULE_PATH = Path(__file__)
_MODULENAME = 'azpy.shared.ui.custom_treemodel'
_log_level = int(20)
if _G_DEBUG:
if _DCCSI_GDEBUG:
_log_level = int(10)
_LOGGER = azpy.initialize_logger(_MODULENAME,
log_to_file=False,
@@ -27,7 +27,7 @@ import PySide2.QtWidgets as QtWidgets
# -------------------------------------------------------------------------
# global space debug flag
_G_DEBUG = os.getenv('DCCSI_GDEBUG', False)
_DCCSI_GDEBUG = os.getenv('DCCSI_GDEBUG', False)
# global space developer mode flag
_DCCSI_DEV_MODE = os.getenv('DCCSI_DEV_MODE', False)
@@ -32,7 +32,7 @@ from PySide2.QtCore import QTimer
# -------------------------------------------------------------------------
# global space debug flag
_G_DEBUG = os.getenv('DCCSI_GDEBUG', False)
_DCCSI_GDEBUG = os.getenv('DCCSI_GDEBUG', False)
# global space debug flag
_DCCSI_DEV_MODE = os.getenv('DCCSI_DEV_MODE', False)
@@ -48,7 +48,7 @@ _MODULENAME = __name__
if _MODULENAME is '__main__':
_MODULENAME = _TOOL_TAG
if _G_DEBUG:
if _DCCSI_GDEBUG:
_LOGGER = initialize_logger(_MODULENAME, log_to_file=True)
_LOGGER.debug('Something invoked :: {0}.'.format({_MODULENAME}))
else:
@@ -130,7 +130,7 @@ if __name__ == '__main__':
_TOOL_TAG = 'azpy.shared.ui.pyside2_qtextedit_stdout'
_TYPE_TAG = 'test'
if _G_DEBUG:
if _DCCSI_GDEBUG:
_LOGGER = initialize_logger('{0}-TEST'.format(_TOOL_TAG), log_to_file=True)
_LOGGER.debug('Something invoked :: {0}.'.format({_MODULENAME}))
@@ -155,7 +155,7 @@ if __name__ == '__main__':
_READER.start('python', ['-u', _TEST_PY_FILE]) # start the process
# after that starts, this will show the console
# LY_QSS = Path(_MODULE_PATH.parent, 'resources', 'stylesheets', 'LYstyle.qss')
# O3DE_QSS = Path(_MODULE_PATH.parent, 'resources', 'stylesheets', 'LYstyle.qss')
_DARK_STYLE = Path(_MODULE_PATH.parent, 'resources', 'qdarkstyle', 'style.qss')
_CONSOLE.qapp.setStyleSheet(_DARK_STYLE.read_file())
_CONSOLE.show() # make the console visible
@@ -51,7 +51,7 @@ import azpy.shared.ui.help_menu as help_menu
# -------------------------------------------------------------------------
# global space debug flag
_G_DEBUG = settings.DCCSI_GDEBUG
_DCCSI_GDEBUG = settings.DCCSI_GDEBUG
# global space debug flag
_DCCSI_DEV_MODE = settings.DCCSI_DEV_MODE
@@ -112,7 +112,7 @@ def from_ui_generate_form_and_base_class(filename, return_output=False):
ui_file.exists()
except FileNotFoundError as error:
output += 'File does not exist: {0}/r'.format(error)
if _G_DEBUG:
if _DCCSI_GDEBUG:
print(error)
if return_output:
return False, output
@@ -24,7 +24,7 @@ import azpy.config_utils
_config = azpy.config_utils.get_dccsi_config()
# ^ this is effectively an import and retreive of <dccsi>\config.py
# init lumberyard Qy/PySide2 access
_config.init_ly_pyside(settings.LY_DEV)
_config.init_o3de_pyside(settings.O3DE_DEV)
# now we can import lumberyards PySide2
import PySide2.QtCore as QtCore
@@ -32,7 +32,7 @@ import PySide2.QtWidgets as QtWidgets
# -------------------------------------------------------------------------
# global space debug flag
_G_DEBUG = settings.DCCSI_GDEBUG
_DCCSI_GDEBUG = settings.DCCSI_GDEBUG
# global space debug flag
_DCCSI_DEV_MODE = settings.DCCSI_DEV_MODE
@@ -47,7 +47,7 @@ import PySide2.QtUiTools as QtUiTools
# -------------------------------------------------------------------------
# global space debug flag
_G_DEBUG = settings.DCCSI_GDEBUG
_DCCSI_GDEBUG = settings.DCCSI_GDEBUG
# global space debug flag
_DCCSI_DEV_MODE = settings.DCCSI_DEV_MODE
@@ -40,12 +40,11 @@ Configures several useful environment config settings and paths,
[key] : [value]
# this is the required base environment
LY_PROJECT : name of project (project directory)
LY_DEV : path to Lumberyard \dev root
LY_PROJECT_PATH : path to project dir
O3DE_PROJECT : name of project (project directory)
O3DE_DEV : path to Lumberyard \dev root
O3DE_PROJECT_PATH : path to project dir
DCCSIG_PATH : path to the DCCsi Gem root
DCCSI_AZPY_PATH * : path to azpy Python API (code)
DCCSI_SDK_PATH : path to associated (non-api code) DCC SDK
DCCSI_TOOLS_PATH : path to associated (non-api code) DCC SDK
# nice to haves in base env to define core support
DCCSI_GDEBUG : sets global debug prints
@@ -59,7 +58,7 @@ Configures several useful environment config settings and paths,
:: Default version py37 has a launcher
(activates the env, starts py interpreter)
set DCCSI_PY_BASE=%DCCSI_PYTHON_INSTALL%\python.exe
set DCCSI_PY_BASE=%O3DE_PYTHON_INSTALL%\python.exe
:: shared location for 64bit python 3.7 BASE location
set DCCSI_PY_DCCSI=%DCCSI_LAUNCHERS_PATH%\Launch_pyBASE.bat
@@ -74,7 +73,7 @@ Configures several useful environment config settings and paths,
:: shared location for 64bit DCCSI_PY_MAYA python 2.7 DEV location
set DCCSI_PY_MAYA=%MAYA_LOCATION%\bin\mayapy.exe
:: wingIDE can use more then one defined/managed interpreters
:: allowing you to _G_DEBUG code in multiple runtimes in one session
:: allowing you to _DCCSI_GDEBUG code in multiple runtimes in one session
${DCCSI_PY_MAYA}
# related to the WING as the default DCCSI_GDEBUGGER
@@ -92,8 +91,9 @@ import os
import sys
import site
import re
#import inspect
import inspect
import json
import importlib.util
import logging as _logging
from collections import OrderedDict
@@ -110,35 +110,33 @@ _MODULE_PATH = os.path.realpath(__file__) # To Do: what if frozen?
_DCCSIG_PATH = os.path.normpath(os.path.join(_MODULE_PATH, '../..'))
_DCCSIG_PATH = os.getenv('DCCSIG_PATH', _DCCSIG_PATH)
site.addsitedir(_DCCSIG_PATH)
print(_DCCSIG_PATH)
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
# Lumberyard extensions
# O3DE extensions
from pathlib import Path
# set up global space, logging etc.
import azpy
from azpy.env_bool import env_bool
import azpy.env_bool as env_bool
from azpy.constants import ENVAR_DCCSI_GDEBUG
from azpy.constants import ENVAR_DCCSI_DEV_MODE
from azpy.constants import FRMT_LOG_LONG
_G_DEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_DCCSI_GDEBUG = env_bool.env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool.env_bool(ENVAR_DCCSI_DEV_MODE, False)
_PACKAGENAME = 'DCCsi.azpy.sunthetic_env'
_PACKAGENAME = 'DCCsi.azpy.synthetic_env'
_log_level = int(20)
if _G_DEBUG:
_log_level = int(10)
_LOGGER = azpy.initialize_logger(_PACKAGENAME,
log_to_file=True,
default_log_level=_log_level)
# set up module logging
for handler in _logging.root.handlers[:]:
_logging.root.removeHandler(handler)
_LOGGER = _logging.getLogger(_PACKAGENAME)
_logging.basicConfig(format=FRMT_LOG_LONG)
_LOGGER.debug('Initializing: {0}.'.format({_PACKAGENAME}))
_LOGGER.debug('Starting up: {0}.'.format({_PACKAGENAME}))
_LOGGER.debug('_DCCSIG_PATH: {}'.format(_DCCSIG_PATH))
_LOGGER.debug('_G_DEBUG: {}'.format(_G_DEBUG))
_LOGGER.debug('_DCCSI_GDEBUG: {}'.format(_DCCSI_GDEBUG))
_LOGGER.debug('_DCCSI_DEV_MODE: {}'.format(_DCCSI_DEV_MODE))
if _DCCSI_DEV_MODE:
@@ -170,7 +168,7 @@ if os.path.exists(_DCCSI_PYTHON_LIB_PATH):
# -------------------------------------------------------------------------
# post-bootstrap global space
_G_DEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_GDEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
# -------------------------------------------------------------------------
@@ -225,7 +223,7 @@ def return_stub(stub='dccsi_stub'):
break
if (len(tail) == 0):
path = ""
if _G_DEBUG:
if _DCCSI_GDEBUG:
_LOGGER.debug('~Not able to find the path to that file '
'(stub) in a walk-up from currnet path.')
break
@@ -262,7 +260,7 @@ def get_stub_check_path(in_path, check_stub='engineroot.txt'):
# -------------------------------------------------------------------------
# TO DO: Move to a util package or module
def resolve_envar_path(envar='LY_DEV',
def resolve_envar_path(envar='O3DE_DEV',
start_path=__file__,
check_stub='engineroot.txt',
dir_name='dev',
@@ -276,7 +274,7 @@ def resolve_envar_path(envar='LY_DEV',
That is a pretty safe indicator that we found the right '\dev'
Second it checks if the env var 'LY_DEV' is set, use that instead!
Second it checks if the env var 'O3DE_DEV' is set, use that instead!
"""
@@ -360,14 +358,14 @@ def stash_env(_SYNTH_ENV_DICT = OrderedDict()):
# <ly>\dev Lumberyard ROOT PATH
# someone decided to use this as a root stub (for similar reasons in C++?)
# STUB_LY_DEV = str('engineroot.txt')
# STUB_O3DE_DEV = str('engineroot.txt')
# I don't own \dev so I didn't want to check in anything new there
_LY_DEV = resolve_envar_path(ENVAR_LY_DEV, # envar
_O3DE_DEV = resolve_envar_path(ENVAR_O3DE_DEV, # envar
_THIS_MODULE_PATH, # search path
STUB_LY_DEV, # stub
TAG_DIR_LY_DEV) # dir
STUB_O3DE_DEV, # stub
TAG_DIR_O3DE_DEV) # dir
_SYNTH_ENV_DICT[ENVAR_LY_DEV] = _LY_DEV.as_posix()
_SYNTH_ENV_DICT[ENVAR_O3DE_DEV] = _O3DE_DEV.as_posix()
# project name is a string, it should be project dir name
# for siloed testing and a purely synthetc env (nothing previously set)
@@ -376,17 +374,17 @@ def stash_env(_SYNTH_ENV_DICT = OrderedDict()):
# for testing overrides of the default synthetic env
# we can do two things here,
# first we can try to fetch from the env os.getenv('LY_PROJECT')
# first we can try to fetch from the env os.getenv('O3DE_PROJECT')
# If comes back None, allows you to specify a default fallback
# changed to just make the fallback what is set in boostrap
# so now it's less of a fallnack and more correct if not
# explicitly set
_LY_PROJECT = os.getenv(ENVAR_LY_PROJECT)
_SYNTH_ENV_DICT[ENVAR_LY_PROJECT] = _LY_PROJECT
_O3DE_PROJECT = os.getenv(ENVAR_O3DE_PROJECT)
_SYNTH_ENV_DICT[ENVAR_O3DE_PROJECT] = _O3DE_PROJECT
_LY_BUILD_DIR_NAME = os.getenv(ENVAR_LY_BUILD_DIR_NAME,
TAG_DIR_LY_BUILD)
_SYNTH_ENV_DICT[ENVAR_LY_BUILD_DIR_NAME] = _LY_BUILD_DIR_NAME
_O3DE_BUILD_DIR_NAME = os.getenv(ENVAR_O3DE_BUILD_DIR_NAME,
TAG_DIR_O3DE_BUILD_FOLDER)
_SYNTH_ENV_DICT[ENVAR_O3DE_BUILD_DIR_NAME] = _O3DE_BUILD_DIR_NAME
# pattern for the above is (and will be repeated)
# _SOME_ENVAR = resolve_envar_path('ENVAR',
@@ -406,31 +404,31 @@ def stash_env(_SYNTH_ENV_DICT = OrderedDict()):
# so we guess based on how I set up the original dev environment
# -- envar --
_LY_BUILD_PATH = Path(os.getenv(ENVAR_LY_BUILD_PATH,
PATH_LY_BUILD_PATH))
_SYNTH_ENV_DICT[ENVAR_LY_BUILD_PATH] = _LY_BUILD_PATH.as_posix()
_O3DE_BUILD_PATH = Path(os.getenv(ENVAR_O3DE_BUILD_PATH,
PATH_O3DE_BUILD_PATH))
_SYNTH_ENV_DICT[ENVAR_O3DE_BUILD_PATH] = _O3DE_BUILD_PATH.as_posix()
# -- envar --
_LY_BIN_PATH = Path(os.getenv(ENVAR_LY_BIN_PATH,
PATH_LY_BIN_PATH))
_O3DE_BIN_PATH = Path(os.getenv(ENVAR_O3DE_BIN_PATH,
PATH_O3DE_BIN_PATH))
# some of these need hard checks
if not _LY_BIN_PATH.exists():
raise Exception('LY_BIN_PATH does NOT exist: {0}'.format(_LY_BIN_PATH))
if not _O3DE_BIN_PATH.exists():
raise Exception('O3DE_BIN_PATH does NOT exist: {0}'.format(_O3DE_BIN_PATH))
else:
_SYNTH_ENV_DICT[ENVAR_LY_BIN_PATH] = _LY_BIN_PATH.as_posix()
_SYNTH_ENV_DICT[ENVAR_O3DE_BIN_PATH] = _O3DE_BIN_PATH.as_posix()
# adding to sys.path apparently doesn't work for .dll locations like Qt
os.environ['PATH'] = _LY_BIN_PATH.as_posix() + os.pathsep + os.environ['PATH']
os.environ['PATH'] = _O3DE_BIN_PATH.as_posix() + os.pathsep + os.environ['PATH']
# -- envar --
# if that stub marker doesn't exist assume DCCsi path (fallback 1)
_LY_PROJECT_PATH = Path(os.getenv(ENVAR_LY_PROJECT_PATH,
Path(_LY_DEV, _LY_PROJECT)))
_SYNTH_ENV_DICT[ENVAR_LY_PROJECT_PATH] = _LY_PROJECT_PATH.as_posix()
_O3DE_PROJECT_PATH = Path(os.getenv(ENVAR_O3DE_PROJECT_PATH,
Path(_O3DE_DEV, _O3DE_PROJECT)))
_SYNTH_ENV_DICT[ENVAR_O3DE_PROJECT_PATH] = _O3DE_PROJECT_PATH.as_posix()
# -- envar --
_DCCSIG_PATH = resolve_envar_path(ENVAR_DCCSIG_PATH, # envar
_THIS_MODULE_PATH, # search path
STUB_LY_ROOT_DCCSI, # stub name
STUB_O3DE_ROOT_DCCSI, # stub name
TAG_DEFAULT_PROJECT) # dir
_SYNTH_ENV_DICT[ENVAR_DCCSIG_PATH] = _DCCSIG_PATH.as_posix()
@@ -440,9 +438,9 @@ def stash_env(_SYNTH_ENV_DICT = OrderedDict()):
_SYNTH_ENV_DICT[ENVAR_DCCSI_AZPY_PATH] = _AZPY_PATH.as_posix()
# -- envar --
_DCCSI_SDK_PATH = Path(os.getenv(ENVAR_DCCSI_SDK_PATH,
Path(_DCCSIG_PATH, TAG_DIR_DCCSI_SDK)))
_SYNTH_ENV_DICT[ENVAR_DCCSI_SDK_PATH] = _DCCSI_SDK_PATH.as_posix()
_DCCSI_TOOLS_PATH = Path(os.getenv(ENVAR_DCCSI_TOOLS_PATH,
Path(_DCCSIG_PATH, TAG_DIR_DCCSI_TOOLS)))
_SYNTH_ENV_DICT[ENVAR_DCCSI_TOOLS_PATH] = _DCCSI_TOOLS_PATH.as_posix()
# -- envar --
# external dccsi site-packages
@@ -497,7 +495,7 @@ def init_ly_pyside(env_dict=_SYNTH_ENV_DICT):
QTFORPYTHON_PATH = Path.joinpath(LY_DEV,
QTFORPYTHON_PATH = Path.joinpath(O3DE_DEV,
'Gems',
'QtForPython',
'3rdParty',
@@ -509,16 +507,16 @@ def init_ly_pyside(env_dict=_SYNTH_ENV_DICT):
sys.path.insert(1, str(QTFORPYTHON_PATH))
site.addsitedir(str(QTFORPYTHON_PATH))
LY_BIN_PATH = Path.joinpath(LY_DEV,
O3DE_BIN_PATH = Path.joinpath(O3DE_DEV,
'windows_vs2019',
'bin',
'profile').resolve()
os.environ["DYNACONF_LY_BIN_PATH"] = str(LY_BIN_PATH)
os.environ["LY_BIN_PATH"] = str(LY_BIN_PATH)
site.addsitedir(str(LY_BIN_PATH))
sys.path.insert(1, str(LY_BIN_PATH))
os.environ["DYNACONF_O3DE_BIN_PATH"] = str(O3DE_BIN_PATH)
os.environ["O3DE_BIN_PATH"] = str(O3DE_BIN_PATH)
site.addsitedir(str(O3DE_BIN_PATH))
sys.path.insert(1, str(O3DE_BIN_PATH))
QT_PLUGIN_PATH = Path.joinpath(LY_BIN_PATH,
QT_PLUGIN_PATH = Path.joinpath(O3DE_BIN_PATH,
'EditorPlugins').resolve()
os.environ["DYNACONF_QT_PLUGIN_PATH"] = str(QT_PLUGIN_PATH)
os.environ["QT_PLUGIN_PATH"] = str(QT_PLUGIN_PATH)
@@ -536,7 +534,7 @@ def init_ly_pyside(env_dict=_SYNTH_ENV_DICT):
if sys.platform.startswith('win'):
path = os.environ['PATH']
newPath = ''
newPath += str(LY_BIN_PATH) + os.pathsep
newPath += str(O3DE_BIN_PATH) + os.pathsep
newPath += str(Path.joinpath(QTFORPYTHON_PATH,
'shiboken2').resolve()) + os.pathsep
newPath += str(Path.joinpath(QTFORPYTHON_PATH,
@@ -591,12 +589,12 @@ def set_env(dict_object):
def test_Qt():
try:
import PySide2
print('PySide2: {0}'.format(Path(PySide2.__file__).as_posix()))
_LOGGER.info('PySide2: {0}'.format(Path(PySide2.__file__).as_posix()))
# builtins.ImportError: DLL load failed: The specified procedure could not be found.
from PySide2 import QtCore
from PySide2 import QtWidgets
except IOError as e:
print('ERROR: {0}'.format(e))
_LOGGER.error('ERROR: {0}'.format(e))
raise e
try:
@@ -610,7 +608,7 @@ def test_Qt():
qapp.instance().quit
qapp.exit()
except Exception as e:
print('ERROR: {0}'.format(e))
_LOGGER.error('ERROR: {0}'.format(e))
raise e
# -------------------------------------------------------------------------
@@ -620,14 +618,14 @@ def main(argv, env_dict_object, debug=False, devmode=False):
import getopt
try:
opts, args = getopt.getopt(argv, "hvt:", ["verbose=", "test="])
except getopt.GetoptError:
except getopt.GetoptError as e:
# not logging, print to cmd line console
print('synthetic_env.py -v <print_dict> -t <run_test>')
_LOGGER.error('synthetic_env.py -v <print_dict> -t <run_test>')
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print('synthetic_env.py -v <print_dict> -t <run test>')
_LOGGER.info('synthetic_env.py -v <print_dict> -t <run test>')
sys.exit()
elif opt in ("-t", "--test"):
@@ -639,14 +637,14 @@ def main(argv, env_dict_object, debug=False, devmode=False):
try:
from box import Box
except ImportError as e:
print('ERROR: {0}'.format(e))
_LOGGER.error('ERROR: {0}'.format(e))
raise e
try:
env_dict_object = Box(env_dict_object)
print(str(env_dict_object.to_json(sort_keys=False,
_LOGGER.info(str(env_dict_object.to_json(sort_keys=False,
indent=4)))
except Exception as e:
print('ERROR: {0}'.format(e))
_LOGGER.error('ERROR: {0}'.format(e))
raise e
# -------------------------------------------------------------------------
@@ -656,16 +654,16 @@ def main(argv, env_dict_object, debug=False, devmode=False):
# -------------------------------------------------------------------------
if __name__ == '__main__':
# run simple tests?
_G_DEBUG = True
_DCCSI_GDEBUG = True
_DCCSI_DEV_MODE = True
if _DCCSI_DEV_MODE:
try:
import azpy.test.entry_test
print('SUCCESS: import azpy.test.entry_test')
_LOGGER.info('SUCCESS: import azpy.test.entry_test')
azpy.test.entry_test.main(verbose=True, connect_debugger=True)
except ImportError as e:
print('ERROR: {0}'.format(e))
_LOGGER.error('ERROR: {0}'.format(e))
raise e
# init, stash and then activate
@@ -673,9 +671,9 @@ if __name__ == '__main__':
_SYNTH_ENV_DICT = stash_env(_SYNTH_ENV_DICT)
_SYNTH_ENV_DICT = set_env(_SYNTH_ENV_DICT)
main(sys.argv[1:], _SYNTH_ENV_DICT, _G_DEBUG, _DCCSI_DEV_MODE)
main(sys.argv[1:], _SYNTH_ENV_DICT, _DCCSI_GDEBUG, _DCCSI_DEV_MODE)
if _G_DEBUG:
if _DCCSI_GDEBUG:
tempBoxJsonFilePath = Path(_SYNTH_ENV_DICT['DCCSIG_PATH'], '.temp')
tempBoxJsonFilePath = Path(tempBoxJsonFilePath, 'boxDumpTest.json')
@@ -12,28 +12,44 @@
# importing all of the modules
"""azpy.test.__init__"""
import os
import logging as _logging
from azpy.env_bool import env_bool
import azpy.env_bool as env_bool
from azpy.constants import ENVAR_DCCSI_GDEBUG
from azpy.constants import ENVAR_DCCSI_DEV_MODE
from azpy.constants import FRMT_LOG_LONG
# global space
_G_DEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_DCCSI_GDEBUG = env_bool.env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool.env_bool(ENVAR_DCCSI_DEV_MODE, False)
_PACKAGENAME = __name__
if _PACKAGENAME is '__main__':
_PACKAGENAME = 'azpy.test'
import azpy
_LOGGER = azpy.initialize_logger(_PACKAGENAME)
_LOGGER.debug('Invoking __init__.py for {0}.'.format({_PACKAGENAME}))
# -------------------------------------------------------------------------
# set up module logging
for handler in _logging.root.handlers[:]:
_logging.root.removeHandler(handler)
_LOGGER = _logging.getLogger(_PACKAGENAME)
_logging.basicConfig(format=FRMT_LOG_LONG)
_LOGGER.debug('Initializing: {0}.'.format({_PACKAGENAME}))
__all__ = ['entry_test']
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
def init():
"""If the substance api is required for a package/module to import,
then it should be initialized and added here so general imports
don't fail"""
# Make sure we can import the native apis
# import <some substance api>
# __all__.append()
# Importing local packages/modules
pass
# -------------------------------------------------------------------------
@@ -48,20 +64,4 @@ if _DCCSI_DEV_MODE:
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
def init():
"""If the substance api is required for a package/module to import,
then it should be initialized and added here so general imports
don't fail"""
# __all__.append()
# Make sure we can import the native apis
# import <some substance api>
# Importing local packages/modules
pass
# -------------------------------------------------------------------------
del _LOGGER
@@ -11,9 +11,9 @@
from __future__ import unicode_literals
# -------------------------------------------------------------------------
import sys
import os
import site
import logging as _logging
# note: some modules not available in py2.7 unless we boostrap with config.py
# See example:
@@ -23,34 +23,34 @@ from pathlib import Path
# -------------------------------------------------------------------------
_BOOT_CHECK = False # set true to test breakpoint in this module directly
import azpy
from azpy.env_bool import env_bool
import azpy.env_bool as env_bool
from azpy.constants import ENVAR_DCCSI_GDEBUG
from azpy.constants import ENVAR_DCCSI_DEV_MODE
from azpy.constants import FRMT_LOG_LONG
# global space
# To Do: update to dynaconf dynamic env and settings?
_G_DEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_DCCSI_GDEBUG = env_bool.env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool.env_bool(ENVAR_DCCSI_DEV_MODE, False)
_MODULENAME = 'azpy.test.entry_test'
_MODULENAME = __name__
if _MODULENAME is '__main__':
_MODULENAME = 'azpy.test.entry_test'
_log_level = int(20)
if _G_DEBUG:
_log_level = int(10)
_LOGGER = azpy.initialize_logger(_MODULENAME,
log_to_file=False,
default_log_level=_log_level)
_LOGGER.debug('Starting:: {}.'.format({_MODULENAME}))
# set up module logging
for handler in _logging.root.handlers[:]:
_logging.root.removeHandler(handler)
_LOGGER = _logging.getLogger(_MODULENAME)
_logging.basicConfig(format=FRMT_LOG_LONG)
_LOGGER.debug('Initializing: {0}.'.format({_MODULENAME}))
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
def main(verbose=_G_DEBUG, connect_debugger=True):
_LOGGER.info('{}'.format('-' * 74))
_LOGGER.info('entry_test.main()')
_LOGGER.info('Root test import successful:')
_LOGGER.info('~ {}'.format(__file__))
def main(verbose=_DCCSI_GDEBUG, connect_debugger=True):
if verbose:
_LOGGER.info('{}'.format('-' * 74))
_LOGGER.info('entry_test.main()')
_LOGGER.info('Root test import successful:')
_LOGGER.info('~ {}'.format(__file__))
if connect_debugger:
status = connect_wing()
@@ -67,7 +67,7 @@ def connect_wing():
_WINGHOME = os.environ['WINGHOME'] # test
_LOGGER.info('~ WINGHOME: {0}'.format(_WINGHOME))
except Exception as e:
_LOGGER.warning(e)
_LOGGER.info(e)
from azpy.constants import PATH_DEFAULT_WINGHOME
_WINGHOME = PATH_DEFAULT_WINGHOME
os.environ['WINGHOME'] = PATH_DEFAULT_WINGHOME
@@ -134,5 +134,5 @@ def connect_wing():
# Main Code Block, runs this script as main (testing)
# -------------------------------------------------------------------------
if __name__ == '__main__':
_G_DEBUG = True
main(verbose=_G_DEBUG, connect_debugger=_G_DEBUG)
_DCCSI_GDEBUG = True
main(verbose=_DCCSI_GDEBUG, connect_debugger=_DCCSI_GDEBUG)