# -*- coding: utf-8 -*- import os import platform import site import pkg_resources import builtins def pre_init_plugin(): if platform.system() == "Windows": extlib_path = "extlibs_windows" if platform.system() == "Darwin": extlib_path = "extlibs_darwin" if platform.system() == "Linux": extlib_path = "extlibs_linux" extra_libs_path = os.path.abspath( os.path.join(os.path.dirname(__file__), extlib_path) ) # add to python path site.addsitedir(extra_libs_path) # pkg_resources doesn't listen to changes on sys.path. pkg_resources.working_set.add_entry(extra_libs_path) def import_ee(): """This is a wrapper of the Google Earth engine library for the purpose of initializing or starting ee authentication when the user or the plugin import ee library. """ # we can now import the libraries # Work around bug https://github.com/google/earthengine-api/issues/181 import httplib2 from ee_plugin.ee_auth import authenticate def __wrapping_ee_import__(name, *args, **kwargs): _module_ = __builtin_import__(name, *args, **kwargs) if name == "ee": if not _module_.data._credentials: try: _module_.Initialize(http_transport=httplib2.Http()) except _module_.ee_exception.EEException: if authenticate(ee=_module_): # retry initialization once the user logs in _module_.Initialize(http_transport=httplib2.Http()) else: print("\nGoogle Earth Engine authorization failed!\n") return _module_ __builtin_import__ = builtins.__import__ builtins.__import__ = __wrapping_ee_import__ # noinspection PyPep8Naming def classFactory(iface): # pylint: disable=invalid-name """Instantiates Google Earth Engine Plugin. :param iface: A QGIS interface instance. :type iface: QgsInterface """ # load extra python dependencies pre_init_plugin() # wrap the ee library import import_ee() # start from .ee_plugin import GoogleEarthEnginePlugin return GoogleEarthEnginePlugin(iface)