Pārlūkot izejas kodu

chore(cli): Add pending deprecation warning

* Add PDW for --as-dict in command set-config
* Move all top level imports inside each util to optimize imports for
  CLI
* Set always show filter for DeprecationWarning, PendingDeprecationWarning via frappe module
version-14
Gavin D'souza pirms 4 gadiem
vecāks
revīzija
bf9fcb3ff6
4 mainītis faili ar 25 papildinājumiem un 18 dzēšanām
  1. +4
    -10
      frappe/__init__.py
  2. +8
    -2
      frappe/commands/utils.py
  3. +3
    -3
      frappe/tests/test_commands.py
  4. +10
    -3
      frappe/utils/commands.py

+ 4
- 10
frappe/__init__.py Parādīt failu

@@ -10,11 +10,10 @@ be used to build database driven apps.

Read the documentation: https://frappeframework.com/docs
"""
from __future__ import unicode_literals, print_function

from six import iteritems, binary_type, text_type, string_types, PY2
from six import iteritems, binary_type, text_type, string_types
from werkzeug.local import Local, release_local
import os, sys, importlib, inspect, json
import os, sys, importlib, inspect, json, warnings
import typing
from past.builtins import cmp
import click
@@ -27,19 +26,14 @@ from .utils.lazy_loader import lazy_import
# Lazy imports
faker = lazy_import('faker')


# Harmless for Python 3
# For Python 2 set default encoding to utf-8
if PY2:
reload(sys)
sys.setdefaultencoding("utf-8")

__version__ = '14.0.0-dev'

__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"""


+ 8
- 2
frappe/commands/utils.py Parādīt failu

@@ -691,12 +691,18 @@ def make_app(destination, app_name):
@click.argument('key')
@click.argument('value')
@click.option('-g', '--global', 'global_', is_flag=True, default=False, help='Set value in bench config')
@click.option('-p', '--parse', '--as-dict', is_flag=True, default=False, help='Evaluate as Python Object')
@click.option('-p', '--parse', is_flag=True, default=False, help='Evaluate as Python Object')
@click.option('--as-dict', is_flag=True, default=False, help='Legacy: Evaluate as Python Object')
@pass_context
def set_config(context, key, value, global_=False, parse=False):
def set_config(context, key, value, global_=False, parse=False, as_dict=False):
"Insert/Update a value in site_config.json"
from frappe.installer import update_site_config

if as_dict:
from frappe.utils.commands import warn
warn("--as-dict will be deprecated in v14. Use --parse instead", category=PendingDeprecationWarning)
parse = as_dict

if parse:
import ast
value = ast.literal_eval(value)


+ 3
- 3
frappe/tests/test_commands.py Parādīt failu

@@ -216,7 +216,7 @@ class TestCommands(BaseTestCommands):

# test 7: take a backup with frappe.conf.backup.includes
self.execute(
"bench --site {site} set-config backup '{includes}' --as-dict",
"bench --site {site} set-config backup '{includes}' --parse",
{"includes": json.dumps(backup["includes"])},
)
self.execute("bench --site {site} backup --verbose")
@@ -226,7 +226,7 @@ class TestCommands(BaseTestCommands):

# test 8: take a backup with frappe.conf.backup.excludes
self.execute(
"bench --site {site} set-config backup '{excludes}' --as-dict",
"bench --site {site} set-config backup '{excludes}' --parse",
{"excludes": json.dumps(backup["excludes"])},
)
self.execute("bench --site {site} backup --verbose")
@@ -383,7 +383,7 @@ class TestCommands(BaseTestCommands):

# test 2: test keys in table text
self.execute(
"bench --site {site} set-config test_key '{second_order}' --as-dict",
"bench --site {site} set-config test_key '{second_order}' --parse",
{"second_order": json.dumps({"test_key": "test_value"})},
)
self.execute("bench --site {site} show-config")


+ 10
- 3
frappe/utils/commands.py Parādīt failu

@@ -1,11 +1,10 @@
import functools
import requests
from terminaltables import AsciiTable


@functools.lru_cache(maxsize=1024)
def get_first_party_apps():
"""Get list of all apps under orgs: frappe. erpnext from GitHub"""
import requests

apps = []
for org in ["frappe", "erpnext"]:
req = requests.get(f"https://api.github.com/users/{org}/repos", {"type": "sources", "per_page": 200})
@@ -15,6 +14,8 @@ def get_first_party_apps():


def render_table(data):
from terminaltables import AsciiTable

print(AsciiTable(data).table)


@@ -49,3 +50,9 @@ def log(message, colour=''):
colour = colours.get(colour, "")
end_line = '\033[0m'
print(colour + message + end_line)


def warn(message, category=None):
from warnings import warn

warn(message=message, category=category, stacklevel=2)

Notiek ielāde…
Atcelt
Saglabāt