diff --git a/frappe/__init__.py b/frappe/__init__.py index 02b8d71e40..9b208f7c2d 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -10,9 +10,16 @@ be used to build database driven apps. Read the documentation: https://frappeframework.com/docs """ +import os, warnings + +_dev_server = os.environ.get('DEV_SERVER', False) + +if _dev_server: + warnings.simplefilter('always', DeprecationWarning) + warnings.simplefilter('always', PendingDeprecationWarning) from werkzeug.local import Local, release_local -import os, sys, importlib, inspect, json, warnings +import sys, importlib, inspect, json import typing from past.builtins import cmp import click @@ -31,8 +38,6 @@ __title__ = "Frappe Framework" local = Local() controllers = {} -warnings.simplefilter('always', DeprecationWarning) -warnings.simplefilter('always', PendingDeprecationWarning) class _dict(dict): """dict like object that exposes keys as attributes""" @@ -197,7 +202,7 @@ def init(site, sites_path=None, new_site=False): local.meta_cache = {} local.form_dict = _dict() local.session = _dict() - local.dev_server = os.environ.get('DEV_SERVER', False) + local.dev_server = _dev_server setup_module_map() diff --git a/frappe/build.py b/frappe/build.py index d710cd04f6..c970ae3a28 100644 --- a/frappe/build.py +++ b/frappe/build.py @@ -317,13 +317,20 @@ def clear_broken_symlinks(): -def unstrip(message): +def unstrip(message: str) -> str: + """Pads input string on the right side until the last available column in the terminal + """ + _len = len(message) try: max_str = os.get_terminal_size().columns except Exception: max_str = 80 - _len = len(message) - _rem = max_str - _len + + if _len < max_str: + _rem = max_str - _len + else: + _rem = max_str % _len + return f"{message}{' ' * _rem}" @@ -336,6 +343,7 @@ def make_asset_dirs(hard_link=False): start_message = unstrip(f"{'Copying assets from' if hard_link else 'Linking'} {source} to {target}") fail_message = unstrip(f"Cannot {'copy' if hard_link else 'link'} {source} to {target}") + # Used '\r' instead of '\x1b[1K\r' to print entire lines in smaller terminal sizes try: print(start_message, end="\r") link_assets_dir(source, target, hard_link=hard_link) diff --git a/frappe/commands/utils.py b/frappe/commands/utils.py index 2fff120852..4da0f6bb78 100644 --- a/frappe/commands/utils.py +++ b/frappe/commands/utils.py @@ -507,8 +507,6 @@ frappe.db.connect() @pass_context def console(context): "Start ipython console for a site" - import warnings - site = get_site(context) frappe.init(site=site) frappe.connect() @@ -529,7 +527,6 @@ def console(context): if failed_to_import: print("\nFailed to import:\n{}".format(", ".join(failed_to_import))) - warnings.simplefilter('ignore') IPython.embed(display_banner="", header="", colors="neutral") diff --git a/frappe/utils/bench_helper.py b/frappe/utils/bench_helper.py index 633d867306..2fb0bda058 100644 --- a/frappe/utils/bench_helper.py +++ b/frappe/utils/bench_helper.py @@ -6,6 +6,7 @@ import json import importlib import frappe.utils import traceback +import warnings click.disable_unicode_literals_warning = True @@ -98,5 +99,6 @@ def get_apps(): return frappe.get_all_apps(with_internal_apps=False, sites_path='.') if __name__ == "__main__": + if not frappe._dev_server: + warnings.simplefilter('ignore') main() - diff --git a/frappe/utils/safe_exec.py b/frappe/utils/safe_exec.py index 6c1fa21685..643812b226 100644 --- a/frappe/utils/safe_exec.py +++ b/frappe/utils/safe_exec.py @@ -119,7 +119,7 @@ def get_safe_globals(): scrub=scrub, guess_mimetype=mimetypes.guess_type, html2text=html2text, - dev_server=1 if os.environ.get('DEV_SERVER', False) else 0, + dev_server=1 if frappe._dev_server else 0, run_script=run_script )