style: Add typing, sorted imports#

This commit is contained in:
Gavin D'souza 2022-01-17 15:07:44 +05:30
parent b403d67845
commit 429f839ea3
2 changed files with 36 additions and 26 deletions

View file

@ -314,7 +314,6 @@ def destroy():
release_local(local)
# memcache
redis_server = None
def cache() -> "RedisWrapper":
"""Returns redis connection."""

View file

@ -1,17 +1,22 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# Copyright (c) 2022, Frappe Technologies Pvt. Ltd. and Contributors
# License: MIT. See LICENSE
from typing import Optional
import frappe
import operator
import json
import base64
import re, datetime, math, time
import datetime
import json
import math
import operator
import re
import time
from code import compile_command
from urllib.parse import quote, urljoin
from frappe.desk.utils import slug
from click import secho
from enum import Enum
from typing import Any, Dict, List, Optional, Tuple, Union
from urllib.parse import quote, urljoin
from click import secho
import frappe
from frappe.desk.utils import slug
DATE_FORMAT = "%Y-%m-%d"
TIME_FORMAT = "%H:%M:%S.%f"
@ -201,7 +206,7 @@ def get_time_zone():
return frappe.cache().get_value("time_zone", _get_time_zone)
def convert_utc_to_timezone(utc_timestamp, time_zone):
from pytz import timezone, UnknownTimeZoneError
from pytz import UnknownTimeZoneError, timezone
utcnow = timezone('UTC').localize(utc_timestamp)
try:
return utcnow.astimezone(timezone(time_zone))
@ -726,7 +731,7 @@ def ceil(s):
def cstr(s, encoding='utf-8'):
return frappe.as_unicode(s, encoding)
def sbool(x):
def sbool(x: str) -> Union[bool, Any]:
"""Converts str object to Boolean if possible.
Example:
"true" becomes True
@ -920,13 +925,13 @@ number_format_info = {
"#.########": (".", "", 8)
}
def get_number_format_info(format):
def get_number_format_info(format: str) -> Tuple[str, str, int]:
return number_format_info.get(format) or (".", ",", 2)
#
# convert currency to words
#
def money_in_words(number, main_currency = None, fraction_currency=None):
def money_in_words(number: str, main_currency: Optional[str] = None, fraction_currency: Optional[str] = None):
"""
Returns string in words with currency and fraction currency.
"""
@ -1012,9 +1017,11 @@ def is_image(filepath):
def get_thumbnail_base64_for_image(src):
from os.path import exists as file_exists
from PIL import Image
from frappe import cache, safe_decode
from frappe.core.doctype.file.file import get_local_image
from frappe import safe_decode, cache
if not src:
frappe.throw('Invalid source for image: {0}'.format(src))
@ -1305,7 +1312,7 @@ operator_map = {
"None": lambda a, b: (not a) and True or False
}
def evaluate_filters(doc, filters):
def evaluate_filters(doc, filters: Union[Dict, List, Tuple]):
'''Returns true if doc matches filters'''
if isinstance(filters, dict):
for key, value in filters.items():
@ -1322,7 +1329,7 @@ def evaluate_filters(doc, filters):
return True
def compare(val1, condition, val2, fieldtype=None):
def compare(val1: Any, condition: str, val2: Any, fieldtype: Optional[str] = None):
ret = False
if fieldtype:
val2 = cast(fieldtype, val2)
@ -1331,7 +1338,7 @@ def compare(val1, condition, val2, fieldtype=None):
return ret
def get_filter(doctype, f, filters_config=None):
def get_filter(doctype: str, f: Union[Dict, List, Tuple], filters_config=None) -> "frappe._dict":
"""Returns a _dict like
{
@ -1418,8 +1425,10 @@ def make_filter_dict(filters):
return _filter
def sanitize_column(column_name):
from frappe import _
import sqlparse
from frappe import _
regex = re.compile("^.*[,'();].*")
column_name = sqlparse.format(column_name, strip_comments=True, keyword_case="lower")
blacklisted_keywords = ['select', 'create', 'insert', 'delete', 'drop', 'update', 'case', 'and', 'or']
@ -1495,9 +1504,10 @@ def strip(val, chars=None):
return (val or "").replace("\ufeff", "").replace("\u200b", "").strip(chars)
def to_markdown(html):
from html2text import html2text
from html.parser import HTMLParser
from html2text import html2text
text = None
try:
text = html2text(html or '')
@ -1507,7 +1517,8 @@ def to_markdown(html):
return text
def md_to_html(markdown_text):
from markdown2 import markdown as _markdown, MarkdownError
from markdown2 import MarkdownError
from markdown2 import markdown as _markdown
extras = {
'fenced-code-blocks': None,
@ -1532,14 +1543,14 @@ def md_to_html(markdown_text):
def markdown(markdown_text):
return md_to_html(markdown_text)
def is_subset(list_a, list_b):
def is_subset(list_a: List, list_b: List) -> bool:
'''Returns whether list_a is a subset of list_b'''
return len(list(set(list_a) & set(list_b))) == len(list_a)
def generate_hash(*args, **kwargs):
def generate_hash(*args, **kwargs) -> str:
return frappe.generate_hash(*args, **kwargs)
def guess_date_format(date_string):
def guess_date_format(date_string: str) -> str:
DATE_FORMATS = [
r"%d/%b/%y",
r"%d-%m-%Y",
@ -1614,13 +1625,13 @@ def guess_date_format(date_string):
if date_format and time_format:
return (date_format + ' ' + time_format).strip()
def validate_json_string(string):
def validate_json_string(string: str) -> None:
try:
json.loads(string)
except (TypeError, ValueError):
raise frappe.ValidationError
def get_user_info_for_avatar(user_id):
def get_user_info_for_avatar(user_id: str) -> Dict:
user_info = {
"email": user_id,
"image": "",