Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(255)

Unified Diff: appengine/predator/app/__init__.py

Issue 2447253002: [Findit & Predator] Code reorg of Findit. (Closed)
Patch Set: Clean up. Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: appengine/predator/app/__init__.py
diff --git a/appengine/predator/app/__init__.py b/appengine/predator/app/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..8d92f74623dce7b504e5ad60a5d64b709a75435a
--- /dev/null
+++ b/appengine/predator/app/__init__.py
@@ -0,0 +1,41 @@
+import os
+import sys
+
+
+# Note: this hacky file will be excluded during deployment to AppEngine.
+# Add the checking of APPLICATION_ID is to avoid possible side-effect for local
+# AppEngine dev-server.
+
+if not os.environ.get('APPLICATION_ID'): # pragma: no branch.
+ _THIS_DIR = os.path.dirname(os.path.realpath(__file__))
+
+ # This hack is due to testing setup and code structure.
+ #
+ # In testing setup, the root directory appengine/predator would be the current
+ # working directory during execution of unittests; and it is automatically
+ # added to sys.path or PYTHONPATH.
+ #
+ # For code structure, we wanted the AppEngine modules or services in separate
+ # sub-directories from the root directory in order to separate the code for
+ # AppEngine from those for the actual analysis -- core algorithm.
+ #
+ # With a module or service config file app.yaml or backend-*.yaml being in a
+ # sub-directory, that sub-directory would become the current working directory
+ # when the code is deployed to AppEngine or runs with AppEngine dev-server.
+ # This constraint requires that module importing in the code is based off the
+ # sub-directory.
+ #
+ # To avoid naming conflicts for module importing, we shouldn't put the *.yaml
+ # files to the sub-directories app/frontend and app/backend. Otherwise
+ # app/frontend and app/backend have to be added to sys.path or PYTHONPATH as
+ # explained above, and that will cause naming conflicts, because both of them
+ # will have same module names like handlers/, model/, etc.
+ #
+ # As the module or service config files *.yaml are in predator/app, it should
+ # be added to sys.path so that unittests won't complain about modules being
+ # not found.
+ sys.path.insert(0, _THIS_DIR)
+
+ # This hack is because the appengine_config.py is loaded by the testing setup
+ # only if it is in the root directory appengine/predator.
+ import appengine_config # Unused Variable pylint: disable=W0612

Powered by Google App Engine
This is Rietveld 408576698