mirror of https://github.com/zulip/zulip.git
setup_path_on_import: Replace with setup_path function.
isort 5 knows not to reorder imports across function calls, so this will stop isort from breaking our code. Signed-off-by: Anders Kaseorg <anders@zulipchat.com>
This commit is contained in:
parent
5ba593f124
commit
687553a661
|
@ -184,8 +184,8 @@ highlighting. The system is largely managed by the code in
|
||||||
amounts of disk over time.
|
amounts of disk over time.
|
||||||
* **Scripts**. Often, we want a script running in production to use
|
* **Scripts**. Often, we want a script running in production to use
|
||||||
the Zulip virtualenv. To make that work without a lot of duplicated
|
the Zulip virtualenv. To make that work without a lot of duplicated
|
||||||
code, we have a helpful library,
|
code, we have a helpful function,
|
||||||
`scripts/lib/setup_path_on_import.py`, which on import will put the
|
`scripts.lib.setup_path.setup_path`, which on import will put the
|
||||||
currently running Python script into the Zulip virtualenv. This is
|
currently running Python script into the Zulip virtualenv. This is
|
||||||
called by `./manage.py` to ensure that our Django code always uses
|
called by `./manage.py` to ensure that our Django code always uses
|
||||||
the correct virtualenv as well.
|
the correct virtualenv as well.
|
||||||
|
|
|
@ -10,7 +10,10 @@ if sys.version_info <= (3, 0):
|
||||||
|
|
||||||
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
|
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||||
sys.path.append(BASE_DIR)
|
sys.path.append(BASE_DIR)
|
||||||
import scripts.lib.setup_path_on_import
|
from scripts.lib.setup_path import setup_path
|
||||||
|
|
||||||
|
setup_path()
|
||||||
|
|
||||||
from scripts.lib.zulip_tools import assert_not_running_as_root
|
from scripts.lib.zulip_tools import assert_not_running_as_root
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
|
@ -17,7 +17,9 @@ import os
|
||||||
|
|
||||||
sys.path.append('.')
|
sys.path.append('.')
|
||||||
sys.path.append('/home/zulip/deployments/current')
|
sys.path.append('/home/zulip/deployments/current')
|
||||||
import scripts.lib.setup_path_on_import
|
from scripts.lib.setup_path import setup_path
|
||||||
|
|
||||||
|
setup_path()
|
||||||
|
|
||||||
import django
|
import django
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,9 @@ Nagios plugin to check the length of the FTS update log.
|
||||||
import sys
|
import sys
|
||||||
sys.path.append('/home/zulip/deployments/current')
|
sys.path.append('/home/zulip/deployments/current')
|
||||||
try:
|
try:
|
||||||
import scripts.lib.setup_path_on_import
|
from scripts.lib.setup_path import setup_path
|
||||||
|
|
||||||
|
setup_path()
|
||||||
except ImportError:
|
except ImportError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
|
@ -9,14 +9,16 @@
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
# We want to use a virtualenv in production, which will be in /home/zulip/deployments/current.
|
# We want to use a virtualenv in production, which will be in /home/zulip/deployments/current.
|
||||||
# So we should add that path to sys.path and then import scripts.lib.setup_path_on_import.
|
# So we should add that path to sys.path and then call setup_path.
|
||||||
# But this file is also used in development, where the above path will not exist.
|
# But this file is also used in development, where the above path will not exist.
|
||||||
# So `import scripts.lib.setup_path_on_import` will raise an ImportError.
|
# So `from scripts.lib.setup_path import setup_path` will raise an ImportError.
|
||||||
# In development, we just want to skip this step since we know that virtualenv will already be in use.
|
# In development, we just want to skip this step since we know that virtualenv will already be in use.
|
||||||
# So catch the ImportError and do nothing.
|
# So catch the ImportError and do nothing.
|
||||||
sys.path.append('/home/zulip/deployments/current')
|
sys.path.append('/home/zulip/deployments/current')
|
||||||
try:
|
try:
|
||||||
import scripts.lib.setup_path_on_import
|
from scripts.lib.setup_path import setup_path
|
||||||
|
|
||||||
|
setup_path()
|
||||||
except ImportError:
|
except ImportError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,9 @@ import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
sys.path.append('/home/zulip/deployments/current')
|
sys.path.append('/home/zulip/deployments/current')
|
||||||
import scripts.lib.setup_path_on_import
|
from scripts.lib.setup_path import setup_path
|
||||||
|
|
||||||
|
setup_path()
|
||||||
|
|
||||||
import django
|
import django
|
||||||
from django.utils.timezone import now as timezone_now
|
from django.utils.timezone import now as timezone_now
|
||||||
|
|
|
@ -4,7 +4,9 @@ import sys
|
||||||
|
|
||||||
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||||
sys.path.append(BASE_DIR)
|
sys.path.append(BASE_DIR)
|
||||||
import scripts.lib.setup_path_on_import
|
from scripts.lib.setup_path import setup_path
|
||||||
|
|
||||||
|
setup_path()
|
||||||
|
|
||||||
os.environ['DJANGO_SETTINGS_MODULE'] = 'zproject.settings'
|
os.environ['DJANGO_SETTINGS_MODULE'] = 'zproject.settings'
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
|
@ -6,7 +6,9 @@ import sys
|
||||||
|
|
||||||
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||||
sys.path.append(BASE_DIR)
|
sys.path.append(BASE_DIR)
|
||||||
import scripts.lib.setup_path_on_import
|
from scripts.lib.setup_path import setup_path
|
||||||
|
|
||||||
|
setup_path()
|
||||||
|
|
||||||
os.environ['DJANGO_SETTINGS_MODULE'] = 'zproject.settings'
|
os.environ['DJANGO_SETTINGS_MODULE'] = 'zproject.settings'
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
"""
|
||||||
|
Use libraries from a virtualenv (by modifying sys.path) in production.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
def setup_path() -> None:
|
||||||
|
if os.path.basename(sys.prefix) != "zulip-py3-venv":
|
||||||
|
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||||
|
venv = os.path.join(BASE_DIR, "zulip-py3-venv")
|
||||||
|
activate_this = os.path.join(venv, "bin", "activate_this.py")
|
||||||
|
activate_locals = dict(__file__=activate_this)
|
||||||
|
exec(open(activate_this).read(), activate_locals)
|
||||||
|
if not os.path.exists(activate_locals["site_packages"]):
|
||||||
|
raise RuntimeError(venv + " was not set up for this Python version")
|
|
@ -1,15 +0,0 @@
|
||||||
"""
|
|
||||||
Use libraries from a virtualenv (by modifying sys.path) in production.
|
|
||||||
"""
|
|
||||||
|
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
|
|
||||||
if os.path.basename(sys.prefix) != "zulip-py3-venv":
|
|
||||||
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
||||||
venv = os.path.join(BASE_DIR, "zulip-py3-venv")
|
|
||||||
activate_this = os.path.join(venv, "bin", "activate_this.py")
|
|
||||||
activate_locals = dict(__file__=activate_this)
|
|
||||||
exec(open(activate_this).read(), activate_locals)
|
|
||||||
if not os.path.exists(activate_locals["site_packages"]):
|
|
||||||
raise RuntimeError(venv + " was not set up for this Python version")
|
|
|
@ -6,7 +6,10 @@ import sys
|
||||||
BASE_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), "../..")
|
BASE_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), "../..")
|
||||||
sys.path.append(BASE_DIR)
|
sys.path.append(BASE_DIR)
|
||||||
|
|
||||||
import scripts.lib.setup_path_on_import
|
from scripts.lib.setup_path import setup_path
|
||||||
|
|
||||||
|
setup_path()
|
||||||
|
|
||||||
from zproject import settings
|
from zproject import settings
|
||||||
import pylibmc
|
import pylibmc
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,9 @@ from typing import Dict, List
|
||||||
|
|
||||||
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||||
sys.path.append(BASE_DIR)
|
sys.path.append(BASE_DIR)
|
||||||
import scripts.lib.setup_path_on_import
|
from scripts.lib.setup_path import setup_path
|
||||||
|
|
||||||
|
setup_path()
|
||||||
|
|
||||||
os.environ['DJANGO_SETTINGS_MODULE'] = 'zproject.settings'
|
os.environ['DJANGO_SETTINGS_MODULE'] = 'zproject.settings'
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,9 @@ def restore_backup(tarball_file):
|
||||||
|
|
||||||
su_to_zulip(save_suid=True)
|
su_to_zulip(save_suid=True)
|
||||||
|
|
||||||
import scripts.lib.setup_path_on_import
|
from scripts.lib.setup_path import setup_path
|
||||||
|
|
||||||
|
setup_path()
|
||||||
|
|
||||||
# First, we unpack the /etc/zulip configuration, so we know how
|
# First, we unpack the /etc/zulip configuration, so we know how
|
||||||
# this server is supposed to be configured (and can import
|
# this server is supposed to be configured (and can import
|
||||||
|
|
|
@ -12,7 +12,6 @@ def check_pyflakes(files, options):
|
||||||
# type: (List[str], argparse.Namespace) -> bool
|
# type: (List[str], argparse.Namespace) -> bool
|
||||||
suppress_patterns = [
|
suppress_patterns = [
|
||||||
("scripts/lib/pythonrc.py", "imported but unused"),
|
("scripts/lib/pythonrc.py", "imported but unused"),
|
||||||
('', "'scripts.lib.setup_path_on_import' imported but unused"),
|
|
||||||
# Intentionally imported by zerver/lib/webhooks/common.py
|
# Intentionally imported by zerver/lib/webhooks/common.py
|
||||||
('', "'zerver.lib.exceptions.UnexpectedWebhookEventType' imported but unused"),
|
('', "'zerver.lib.exceptions.UnexpectedWebhookEventType' imported but unused"),
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,10 @@ import sys
|
||||||
|
|
||||||
# We need settings so we can figure out where the prod-static directory is.
|
# We need settings so we can figure out where the prod-static directory is.
|
||||||
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
|
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
|
||||||
import scripts.lib.setup_path_on_import
|
from scripts.lib.setup_path import setup_path
|
||||||
|
|
||||||
|
setup_path()
|
||||||
|
|
||||||
os.environ['DJANGO_SETTINGS_MODULE'] = 'zproject.settings'
|
os.environ['DJANGO_SETTINGS_MODULE'] = 'zproject.settings'
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from scripts.lib.node_cache import setup_node_modules
|
from scripts.lib.node_cache import setup_node_modules
|
||||||
|
|
|
@ -18,7 +18,9 @@ import sys
|
||||||
|
|
||||||
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||||
sys.path.append(BASE_DIR)
|
sys.path.append(BASE_DIR)
|
||||||
import scripts.lib.setup_path_on_import
|
from scripts.lib.setup_path import setup_path
|
||||||
|
|
||||||
|
setup_path()
|
||||||
|
|
||||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "zproject.settings")
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "zproject.settings")
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue