From ae710f485460ebca26ba0f9e4cf035ff385ef07f Mon Sep 17 00:00:00 2001 From: El Mau Date: Sun, 27 Feb 2022 23:28:06 -0600 Subject: [PATCH] Doc for tools finish --- docs/source/_static/images/tools_23.png | Bin 0 -> 49069 bytes docs/source/_static/images/tools_24.png | Bin 0 -> 54237 bytes docs/source/generated/easymacro.rst | 4 + docs/source/paths.rst | 74 +++- docs/source/tools.rst | 88 +++-- source/easymacro.py | 460 ++++++++++++++++++++++-- 6 files changed, 554 insertions(+), 72 deletions(-) create mode 100644 docs/source/_static/images/tools_23.png create mode 100644 docs/source/_static/images/tools_24.png diff --git a/docs/source/_static/images/tools_23.png b/docs/source/_static/images/tools_23.png new file mode 100644 index 0000000000000000000000000000000000000000..c528b211a7329e6d4c67502623bb6f7956ea7dc1 GIT binary patch literal 49069 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 z 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 + +.. code-block:: python + + path = app.path.config() + app.debug(path) + + path = app.path.config('UserConfig') + app.debug(path) + +.. note:: + + Some paths can be more than one path separated by a semicolon, in this case, you get a `list` of paths. + + +Path join +--------- + +.. code-block:: python + + path = app.path.join('/home/mau', 'test', 'file.ods') + app.debug(path) + + +Exists path +----------- + +.. code-block:: python + + exists = app.path.exists('/home/mau/test/file.ods') + app.debug(exists) + + +Verify if application exists +---------------------------- + +.. code-block:: python + + app_name = 'nosoffice' + app.debug(app.path.exists_app(app_name)) + + app_name = 'soffice' + app.debug(app.path.exists_app(app_name)) + + + + + diff --git a/docs/source/tools.rst b/docs/source/tools.rst index 487067d..69eb486 100644 --- a/docs/source/tools.rst +++ b/docs/source/tools.rst @@ -660,17 +660,24 @@ You can save any data. 'save_data': True, } - app.set_config('config', data, my_app) + if app.config.set(my_app, data): + app.msgbox('Save config') - app.msgbox('Save config') - - data = app.get_config('config', my_app) + path = app.config.get(my_app) app.msgbox(data) +You can get any key + +.. code-block:: python + + path = app.config.get(my_app, 'path') + app.msgbox(path) + + Render string -^^^^^^^^^^^^^ +------------- .. code-block:: python @@ -688,72 +695,63 @@ Render string app.msgbox(render) -Encrypt decrypt -^^^^^^^^^^^^^^^ - -You need install library `cryptography`_ - -.. code-block:: python - - import easymacro as app - from conf import PASSWORD - - def encrypt_decrypt(): - - data = 'My super secret data' - token = app.encrypt(data, PASSWORD) - app.msgbox(token) - - data = app.decrypt(token, PASSWORD) - app.msgbox(data) - - return - - Simple url open -^^^^^^^^^^^^^^^ +--------------- -* Get text data +Get text data +^^^^^^^^^^^^^ .. code-block:: python url = 'https://api.ipify.org' - data = app.url_open(url) - app.msgbox(data) + result, headers, err = app.url.get(url) + if err: + app.error(err) + else: + app.debug(type(result), result) + app.debug(headers) -* Get json data +.. image:: _static/images/tools_23.png + +| + +Get json data +^^^^^^^^^^^^^ .. code-block:: python url = 'https://api.ipify.org?format=json' - data = app.url_open(url, get_json=True) - app.msgbox(data) + result, headers, err = app.url.get(url, json=True) + if err: + app.error(err) + else: + app.debug(type(result), result) + app.debug(headers) -For more complex case, you can used `requests`_ or `httpx`_ +.. image:: _static/images/tools_24.png + +| Color -^^^^^ +----- Look colors that you can used in `web colors`_ .. code-block:: python color_name = 'darkblue' - color = app.get_color(color_name) - app.msgbox(color) + color = app.color(color_name) + app.debug(color) color_rgb = (125, 200, 10) - color = app.get_color(color_rgb) - app.msgbox(color) + color = app.color(color_rgb) + app.debug(color) color_html = '#008080' - color = app.get_color(color_html) - app.msgbox(color) + color = app.color(color_html) + app.debug(color) .. _Unix Time: https://en.wikipedia.org/wiki/Unix_time -.. _cryptography: https://github.com/pyca/cryptography -.. _requests: https://docs.python-requests.org -.. _httpx: https://www.python-httpx.org/ .. _web colors: https://en.wikipedia.org/wiki/Web_colors diff --git a/source/easymacro.py b/source/easymacro.py index d3496b3..327acab 100644 --- a/source/easymacro.py +++ b/source/easymacro.py @@ -28,6 +28,7 @@ import platform import shlex import shutil import socket +import ssl import subprocess import sys import tempfile @@ -38,7 +39,13 @@ import traceback from functools import wraps from pathlib import Path from pprint import pprint -from typing import Any +from string import Template +from typing import Any, Union + +from socket import timeout +from urllib import parse +from urllib.request import Request, urlopen +from urllib.error import URLError, HTTPError import uno from com.sun.star.awt import MessageBoxButtons as MSG_BUTTONS @@ -46,15 +53,6 @@ from com.sun.star.awt.MessageBoxResults import YES from com.sun.star.beans import PropertyValue, NamedValue -LOG_FORMAT = '%(asctime)s - %(levelname)s - %(message)s' -LOG_DATE = '%d/%m/%Y %H:%M:%S' -logging.addLevelName(logging.ERROR, '\033[1;41mERROR\033[1;0m') -logging.addLevelName(logging.DEBUG, '\x1b[33mDEBUG\033[1;0m') -logging.addLevelName(logging.INFO, '\x1b[32mINFO\033[1;0m') -logging.basicConfig(level=logging.DEBUG, format=LOG_FORMAT, datefmt=LOG_DATE) -log = logging.getLogger(__name__) - - # Global variables OS = platform.system() DESKTOP = os.environ.get('DESKTOP_SESSION', '') @@ -64,9 +62,23 @@ IS_WIN = OS == 'Windows' IS_MAC = OS == 'Darwin' +LOG_FORMAT = '%(asctime)s - %(levelname)s - %(message)s' +LOG_DATE = '%d/%m/%Y %H:%M:%S' +if IS_WIN: + logging.addLevelName(logging.ERROR, 'ERROR') + logging.addLevelName(logging.DEBUG, 'DEBUG') + logging.addLevelName(logging.INFO, 'INFO') +else: + logging.addLevelName(logging.ERROR, '\033[1;41mERROR\033[1;0m') + logging.addLevelName(logging.DEBUG, '\x1b[33mDEBUG\033[1;0m') + logging.addLevelName(logging.INFO, '\x1b[32mINFO\033[1;0m') +logging.basicConfig(level=logging.DEBUG, format=LOG_FORMAT, datefmt=LOG_DATE) +log = logging.getLogger(__name__) + + _info_debug = f"Python: {sys.version}\n\n{platform.platform()}\n\n" + '\n'.join(sys.path) - +TIMEOUT = 10 SALT = b'00a1bfb05353bb3fd8e7aa7fe5efdccc' _EVENTS = {} @@ -74,6 +86,11 @@ PYTHON = 'python' if IS_WIN: PYTHON = 'python.exe' +FILES = { + 'CONFIG': 'zaz-{}.json', +} +DIRS = {} + CTX = uno.getComponentContext() SM = CTX.getServiceManager() @@ -462,6 +479,14 @@ def data_to_dict(data) -> dict: return d +def render(template, data): + s = Template(template) + return s.safe_substitute(**data) + + +# Classes + + class _classproperty: def __init__(self, method=None): self.fget = method @@ -486,7 +511,7 @@ class Dates(object): :return: Return the current local date and time :rtype: datetime """ - return datetime.datetime.now() + return datetime.datetime.now().replace(microsecond=0) @_classproperty def today(cls): @@ -936,17 +961,6 @@ class Paths(object): """Get temporary directory in system""" return tempfile.gettempdir() - @_classproperty - def python(self): - """Get path executable python""" - if IS_WIN: - path = self.join(self.config('Module'), PYTHON) - elif IS_MAC: - path = self.join(self.config('Module'), '..', 'Resources', PYTHON) - else: - path = sys.executable - return path - @_classproperty def user_profile(self): """Get path user profile""" @@ -960,6 +974,17 @@ class Paths(object): path = self.config('UserConfig') return path + @_classproperty + def python(self): + """Get path executable python""" + if IS_WIN: + path = self.join(self.config('Module'), PYTHON) + elif IS_MAC: + path = self.join(self.config('Module'), '..', 'Resources', PYTHON) + else: + path = sys.executable + return path + @classmethod def to_system(cls, path:str) -> str: """Convert paths in URL to system @@ -987,18 +1012,20 @@ class Paths(object): return path @classmethod - def config(cls, name: str='Work') -> str: + def config(cls, name: str='Work') -> Union[str, list]: """Return path from config :param name: Name in service PathSettings, default get path documents :type name: str :return: Path in config, if exists. - :rtype: str + :rtype: str or list `See Api XPathSettings `_ """ path = create_instance('com.sun.star.util.PathSettings') - path = cls.to_system(getattr(path, name)) + path = cls.to_system(getattr(path, name)).split(';') + if len(path) == 1: + path = path[0] return path @classmethod @@ -1038,6 +1065,384 @@ class Paths(object): result = bool(shutil.which(name_app)) return result + # ~ Save/read data + + @classmethod + def save(cls, path: str, data: str, encoding: str='utf-8') -> bool: + """Save data in path with encoding + + :param path: Path to file save + :type path: str + :param data: Data to save + :type data: str + :param encoding: Encoding for save data, default utf-8 + :type encoding: str + :return: True, if save corrrectly + :rtype: bool + """ + result = bool(Path(path).write_text(data, encoding=encoding)) + return result + + @classmethod + def save_bin(cls, path: str, data: bytes) -> bool: + """Save binary data in path + + :param path: Path to file save + :type path: str + :param data: Data to save + :type data: bytes + :return: True, if save corrrectly + :rtype: bool + """ + result = bool(Path(path).write_bytes(data)) + return result + + @classmethod + def read(cls, path: str, get_lines: bool=False, encoding: str='utf-8') -> Union[str, list]: + """Read data in path + + :param path: Path to file read + :type path: str + :param get_lines: If read file line by line + :type get_lines: bool + :return: File content + :rtype: str or list + """ + if get_lines: + with Path(path).open(encoding=encoding) as f: + data = f.readlines() + else: + data = Path(path).read_text(encoding=encoding) + return data + + @classmethod + def read_bin(cls, path: str) -> bytes: + """Read binary data in path + + :param path: Path to file read + :type path: str + :return: File content + :rtype: bytes + """ + data = Path(path).read_bytes() + return data + + # ~ Import/export data + + @classmethod + def from_json(cls, path: str) -> Any: + """Read path file and load json data + + :param path: Path to file + :type path: str + :return: Any data + :rtype: Any + """ + data = json.loads(cls.read(path)) + return data + + @classmethod + def to_json(cls, path: str, data: str): + """Save data in path file like json + + :param path: Path to file + :type path: str + :return: True if save correctly + :rtype: bool + """ + data = json.dumps(data, indent=4, ensure_ascii=False, sort_keys=True) + return cls.save(path, data) + + +class Config(object): + """Class for set and get configurations + """ + @classmethod + def set(cls, prefix: str, value: Any, key: str='') -> bool: + """Save data config in user config like json + + :param prefix: Unique prefix for this data + :type prefix: str + :param value: Value for save + :type value: Any + :param key: Key for value + :type key: str + :return: True if save correctly + :rtype: bool + """ + name_file = FILES['CONFIG'].format(prefix) + path = Paths.join(Paths.user_config, name_file) + data = value + if key: + data = cls.get(prefix) + data[key] = value + result = Paths.to_json(path, data) + return result + + @classmethod + def get(cls, prefix: str, key: str='', default: Any={}) -> Any: + """Get data config from user config like json + + :param prefix: Unique prefix for this data + :type prefix: str + :param key: Key for value + :type key: str + :param default: Get if not exists key + :type default: Any + :return: data + :rtype: Any + """ + data = {} + name_file = FILES['CONFIG'].format(prefix) + path = Paths.join(Paths.user_config, name_file) + if not Paths.exists(path): + return data + + data = Paths.from_json(path) + if key: + data = data.get(key, default) + + return data + + +class Url(object): + """Class for simple url open + """ + @classmethod + def _open(cls, url: str, data: Any=None, headers: dict={}, verify: bool=True, \ + json: bool=False, timeout: int=TIMEOUT, method: str='GET') -> tuple: + """URL Open""" + + debug(url) + result = None + context = None + rheaders = {} + err = '' + + if verify: + if not data is None and isinstance(data, str): + data = data.encode() + else: + context = ssl._create_unverified_context() + + try: + req = Request(url, data=data, headers=headers, method=method) + response = urlopen(req, timeout=timeout, context=context) + except HTTPError as e: + error(e) + err = str(e) + except URLError as e: + error(e.reason) + err = str(e.reason) + # ToDo + # ~ except timeout: + # ~ err = 'timeout' + # ~ error(err) + else: + rheaders = dict(response.info()) + result = response.read().decode() + if json: + result = Json.loads(result) + + return result, rheaders, err + + @classmethod + def get(cls, url: str, data: Any=None, headers: dict={}, verify: bool=True, \ + json: bool=False, timeout: int=TIMEOUT) -> tuple: + """Method GET + + :param url: Url to open + :type url: str + :return: result, headers and error + :rtype: tuple + """ + return cls._open(url, data, headers, verify, json, timeout) + + # ToDo + @classmethod + def _post(cls, url: str, data: Any=None, headers: dict={}, verify: bool=True, \ + json: bool=False, timeout: int=TIMEOUT) -> tuple: + """Method POST + """ + data = parse.urlencode(data).encode('ascii') + return cls._open(url, data, headers, verify, json, timeout, 'POST') + + +class Color(object): + """Class for colors + + `See Web Colors `_ + """ + COLORS = { + 'aliceblue': 15792383, + 'antiquewhite': 16444375, + 'aqua': 65535, + 'aquamarine': 8388564, + 'azure': 15794175, + 'beige': 16119260, + 'bisque': 16770244, + 'black': 0, + 'blanchedalmond': 16772045, + 'blue': 255, + 'blueviolet': 9055202, + 'brown': 10824234, + 'burlywood': 14596231, + 'cadetblue': 6266528, + 'chartreuse': 8388352, + 'chocolate': 13789470, + 'coral': 16744272, + 'cornflowerblue': 6591981, + 'cornsilk': 16775388, + 'crimson': 14423100, + 'cyan': 65535, + 'darkblue': 139, + 'darkcyan': 35723, + 'darkgoldenrod': 12092939, + 'darkgray': 11119017, + 'darkgreen': 25600, + 'darkgrey': 11119017, + 'darkkhaki': 12433259, + 'darkmagenta': 9109643, + 'darkolivegreen': 5597999, + 'darkorange': 16747520, + 'darkorchid': 10040012, + 'darkred': 9109504, + 'darksalmon': 15308410, + 'darkseagreen': 9419919, + 'darkslateblue': 4734347, + 'darkslategray': 3100495, + 'darkslategrey': 3100495, + 'darkturquoise': 52945, + 'darkviolet': 9699539, + 'deeppink': 16716947, + 'deepskyblue': 49151, + 'dimgray': 6908265, + 'dimgrey': 6908265, + 'dodgerblue': 2003199, + 'firebrick': 11674146, + 'floralwhite': 16775920, + 'forestgreen': 2263842, + 'fuchsia': 16711935, + 'gainsboro': 14474460, + 'ghostwhite': 16316671, + 'gold': 16766720, + 'goldenrod': 14329120, + 'gray': 8421504, + 'grey': 8421504, + 'green': 32768, + 'greenyellow': 11403055, + 'honeydew': 15794160, + 'hotpink': 16738740, + 'indianred': 13458524, + 'indigo': 4915330, + 'ivory': 16777200, + 'khaki': 15787660, + 'lavender': 15132410, + 'lavenderblush': 16773365, + 'lawngreen': 8190976, + 'lemonchiffon': 16775885, + 'lightblue': 11393254, + 'lightcoral': 15761536, + 'lightcyan': 14745599, + 'lightgoldenrodyellow': 16448210, + 'lightgray': 13882323, + 'lightgreen': 9498256, + 'lightgrey': 13882323, + 'lightpink': 16758465, + 'lightsalmon': 16752762, + 'lightseagreen': 2142890, + 'lightskyblue': 8900346, + 'lightslategray': 7833753, + 'lightslategrey': 7833753, + 'lightsteelblue': 11584734, + 'lightyellow': 16777184, + 'lime': 65280, + 'limegreen': 3329330, + 'linen': 16445670, + 'magenta': 16711935, + 'maroon': 8388608, + 'mediumaquamarine': 6737322, + 'mediumblue': 205, + 'mediumorchid': 12211667, + 'mediumpurple': 9662683, + 'mediumseagreen': 3978097, + 'mediumslateblue': 8087790, + 'mediumspringgreen': 64154, + 'mediumturquoise': 4772300, + 'mediumvioletred': 13047173, + 'midnightblue': 1644912, + 'mintcream': 16121850, + 'mistyrose': 16770273, + 'moccasin': 16770229, + 'navajowhite': 16768685, + 'navy': 128, + 'oldlace': 16643558, + 'olive': 8421376, + 'olivedrab': 7048739, + 'orange': 16753920, + 'orangered': 16729344, + 'orchid': 14315734, + 'palegoldenrod': 15657130, + 'palegreen': 10025880, + 'paleturquoise': 11529966, + 'palevioletred': 14381203, + 'papayawhip': 16773077, + 'peachpuff': 16767673, + 'peru': 13468991, + 'pink': 16761035, + 'plum': 14524637, + 'powderblue': 11591910, + 'purple': 8388736, + 'red': 16711680, + 'rosybrown': 12357519, + 'royalblue': 4286945, + 'saddlebrown': 9127187, + 'salmon': 16416882, + 'sandybrown': 16032864, + 'seagreen': 3050327, + 'seashell': 16774638, + 'sienna': 10506797, + 'silver': 12632256, + 'skyblue': 8900331, + 'slateblue': 6970061, + 'slategray': 7372944, + 'slategrey': 7372944, + 'snow': 16775930, + 'springgreen': 65407, + 'steelblue': 4620980, + 'tan': 13808780, + 'teal': 32896, + 'thistle': 14204888, + 'tomato': 16737095, + 'turquoise': 4251856, + 'violet': 15631086, + 'wheat': 16113331, + 'white': 16777215, + 'whitesmoke': 16119285, + 'yellow': 16776960, + 'yellowgreen': 10145074, + } + + def _get_color(self, index): + if isinstance(index, tuple): + color = (index[0] << 16) + (index[1] << 8) + index[2] + else: + if index[0] == '#': + r, g, b = bytes.fromhex(index[1:]) + color = (r << 16) + (g << 8) + b + else: + color = self.COLORS.get(index.lower(), -1) + return color + + def __call__(self, index): + return self._get_color(index) + + def __getitem__(self, index): + return self._get_color(index) + + +COLOR_ON_FOCUS = Color()('LightYellow') + def __getattr__(name): classes = { @@ -1048,6 +1453,9 @@ def __getattr__(name): 'timer': Timer, 'hash': Hash, 'path': Paths, + 'config': Config, + 'url': Url, + 'color': Color(), } if name in classes: return classes[name]