Files
zulip/tools/diagnose
Anders Kaseorg 365fe0b3d5 python: Sort imports with isort.
Fixes #2665.

Regenerated by tabbott with `lint --fix` after a rebase and change in
parameters.

Note from tabbott: In a few cases, this converts technical debt in the
form of unsorted imports into different technical debt in the form of
our largest files having very long, ugly import sequences at the
start.  I expect this change will increase pressure for us to split
those files, which isn't a bad thing.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
2020-06-11 16:45:32 -07:00

114 lines
3.0 KiB
Python
Executable File

#!/usr/bin/env python3
import os
import platform
import shlex
import subprocess
import sys
from typing import Callable, List
TOOLS_DIR = os.path.dirname(__file__)
ROOT_DIR = os.path.dirname(TOOLS_DIR)
sys.path.insert(0, ROOT_DIR)
from scripts.lib.zulip_tools import get_dev_uuid_var_path
UUID_VAR_PATH = get_dev_uuid_var_path()
def run(check_func: Callable[[], bool]) -> None:
'''
This decorator simply runs functions. It makes it more
convenient to add new checks without a big main() function.
'''
rc = check_func()
if not rc:
sys.exit(1)
def run_command(args: List[str]) -> None:
print(' '.join(map(shlex.quote, args)))
subprocess.check_call(args)
@run
def check_python_version() -> bool:
subprocess.check_call(['/usr/bin/env', 'python', '-V'])
return True
@run
def pwd() -> bool:
print(os.getcwd())
return True
@run
def host_info() -> bool:
print(platform.platform())
return True
@run
def check_django() -> bool:
try:
import django
print('Django version:', django.get_version())
return True
except ImportError:
print('''
ERROR!
We cannot import Django, which is usually a
symptom of not having your Python venv
set up correctly.
Make sure your shell does this at init time:
source /srv/zulip-py3-venv/bin/activate
Or maybe you forget to run inside your VM?
''')
return False
@run
def provision_version() -> bool:
fn = os.path.join(UUID_VAR_PATH, 'provision_version')
with open(fn) as f:
version = f.read().strip()
print('latest version provisioned:', version)
from version import PROVISION_VERSION
print('desired version:', PROVISION_VERSION)
if version != PROVISION_VERSION:
print('You need to provision!')
return False
return True
@run
def node_stuff() -> bool:
print('node version:')
subprocess.check_call(['node', '--version'])
return True
@run
def test_models() -> bool:
settings_module = "zproject.settings"
os.environ['DJANGO_SETTINGS_MODULE'] = settings_module
import django
django.setup()
from zerver.models import Realm, UserProfile
print('Num realms: ', Realm.objects.count())
print('Num users: ', UserProfile.objects.count())
return True
@run
def check_venv() -> bool:
path = os.path.join(ROOT_DIR, 'scripts', 'lib', 'hash_reqs.py')
cache_dir = '/srv/zulip-venv-cache/'
for fn in ['dev.txt']:
requirements_file = os.path.join(ROOT_DIR, "requirements", fn)
output = subprocess.check_output([path, requirements_file], universal_newlines=True)
sha1sum = output.split()[0]
print(fn, 'venv sha: ', sha1sum)
if not os.path.exists(os.path.join(cache_dir, sha1sum)):
print('Your venv may be improperly installed!')
return False
return True
@run
def check_migrations() -> bool:
print()
rc = subprocess.check_call('./tools/test-migrations')
return (rc == 0)