Source code for google.appengine.ext.ndb.google_imports
#
# Copyright 2008 The ndb Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Dynamically decide from where to import Google App Engine modules.
All other NDB code should import its Google App Engine modules from
this module. If necessary, add new imports here (in both places).
"""
# pylint: disable=unused-import, g-import-not-at-top
import os
import sys
try:
import google
GOOGLE_PACKAGE_PATH = set(google.__path__)
except ImportError:
GOOGLE_PACKAGE_PATH = None
[docs]def set_appengine_imports():
gae_path = os.getenv('GAE')
if gae_path is None:
return
sys.path.insert(0, gae_path)
sys.modules.pop('google', None)
import dev_appserver
dev_appserver.fix_sys_path()
if GOOGLE_PACKAGE_PATH is not None:
import google
GOOGLE_PACKAGE_PATH.update(google.__path__)
google.__path__ = list(GOOGLE_PACKAGE_PATH)
try:
from google.appengine.datastore import entity_pb
normal_environment = True
except ImportError:
try:
from google3.storage.onestore.v3 import entity_pb
normal_environment = False
except ImportError:
# If we are running locally but outside the context of App Engine.
try:
set_appengine_imports()
from google.appengine.datastore import entity_pb
normal_environment = True
except ImportError:
raise ImportError('Unable to find the App Engine SDK. '
'Did you remember to set the "GAE" environment '
'variable to be the path to the App Engine SDK?')
if normal_environment:
from google.appengine.api.blobstore import blobstore as api_blobstore
from google.appengine.api import apiproxy_rpc
from google.appengine.api import apiproxy_stub_map
from google.appengine.api import datastore
from google.appengine.api import datastore_errors
from google.appengine.api import datastore_types
from google.appengine.api import memcache
from google.appengine.api import namespace_manager
from google.appengine.api import taskqueue
from google.appengine.api import urlfetch
from google.appengine.api import users
from google.appengine.datastore import datastore_pbs
from google.appengine.datastore import datastore_query
from google.appengine.datastore import datastore_rpc
# This line will fail miserably for any app using auto_import_fixer
# because auto_import_fixer only set up simple alias between
# google and google3. But entity_pb is move to a different path completely.
from google.appengine.datastore import entity_pb
from google.appengine.ext.blobstore import blobstore as ext_blobstore
from google.appengine.ext import db
from google.appengine.ext import gql
try:
# For the python-compat runtime.
from google.appengine.ext.vmruntime import callback
except ImportError:
# For the python 2.7 runtime.
try:
from google.appengine.runtime import apiproxy as callback
# Python 2.5 and dev_appserver is not supported.
if not hasattr(callback, 'SetRequestEndCallback'):
callback = None
except ImportError:
callback = None
from google.appengine.runtime import apiproxy_errors
from google.net.proto import ProtocolBuffer
else:
from google3.apphosting.api.blobstore import blobstore as api_blobstore
from google3.apphosting.api import apiproxy_rpc
from google3.apphosting.api import apiproxy_stub_map
from google3.apphosting.api import datastore
from google3.apphosting.api import datastore_errors
from google3.apphosting.api import datastore_types
from google3.apphosting.api import memcache
from google3.apphosting.api import namespace_manager
from google3.apphosting.api import taskqueue
from google3.apphosting.api import urlfetch
from google3.apphosting.api import users
from google3.apphosting.datastore import datastore_pbs
from google3.apphosting.datastore import datastore_query
from google3.apphosting.datastore import datastore_rpc
from google3.storage.onestore.v3 import entity_pb
from google3.apphosting.ext.blobstore import blobstore as ext_blobstore
from google3.apphosting.ext import db
from google3.apphosting.ext import gql
from google3.apphosting.ext.vmruntime import callback
from google3.apphosting.runtime import apiproxy_errors
from google3.net.proto import ProtocolBuffer