Module transparentpath.gcsutils.methodtranslator
Expand source code
from typing import Dict, Tuple, List
class ValueError(ValueError):
def __init__(self, message: str = ""):
self.message = f"Error in TransparentPath: {message}"
super().__init__(self.message)
class MethodTranslator(object):
""" """
def __init__(
self, first_name: str, second_name: str, kwarg_names: Dict[str, str] = None,
):
self.first_name = first_name
self.second_name = second_name
self.kwargs = {key: kwarg_names[key] for key in kwarg_names if kwarg_names[key] != ""}
if self.kwargs is None:
self.kwargs = {}
def translate_str(self, *args: Tuple, **kwargs: Dict) -> str:
""" Tranlates the method as a string
Parameters
----------
*args: Tuple
**kwargs: Dict
Returns
-------
str
The string of the translated method
new_method(arg1, arg2..., kwargs1=val1, translated_kwargs2=val2...)
"""
tr = f"{self.second_name}("
for val in args:
tr = f"{tr}{val}, "
for kwarg in kwargs:
val = kwargs[kwarg]
if isinstance(val, str):
val = f"'{val}'"
if kwarg in self.kwargs:
tr = f"{tr}{self.kwargs[kwarg]}={val}, "
else:
tr = f"{tr}{kwarg}={val}, "
if len(tr) > 2 and tr[-2:] == ", ":
tr = tr[:-2]
tr = f"{tr})"
return tr
def translate(self, *args: Tuple, **kwargs: Dict) -> [str, Tuple, Dict]:
""" Translates the method
Parameters
----------
*args: Tuple
**kwargs: Dict
Returns
-------
[str, Tuple, Dict]
The translated method name along with the given args and the translated kwargs
"""
new_kwargs = {}
for kwarg in kwargs:
val = kwargs[kwarg]
if kwarg in self.kwargs:
new_kwargs[self.kwargs[kwarg]] = val
else:
new_kwargs[kwarg] = val
return self.second_name, args, new_kwargs
class MultiMethodTranslator(object):
""" """
def __init__(
self, first_name: str, cases: List[str], second_names: List[str], kwargs_names: [List[Dict[str, str]]] = None,
):
self.first_name = first_name
self.cases = cases
self.second_names = second_names
self.kwargs = kwargs_names
self.translators = {}
if self.kwargs is None:
self.kwargs = [{}] * len(self.cases)
for case, second_name, kwarg_names in zip(self.cases, self.second_names, self.kwargs):
self.translators[case] = MethodTranslator(self.first_name, second_name, kwarg_names)
def translate_str(self, case: str, *args: Tuple, **kwargs: Dict) -> str:
""" Tranlates the method as a string according to a case
Parameters
----------
case: str
The name of the translation case to use
*args: Tuple
**kwargs: Dict
Returns
-------
str:
The string of the translated method
new_method(arg1, arg2..., kwargs1=val1, translated_kwargs2=val2...)
"""
if case not in self.cases:
raise ValueError(f"Case {case} not fonud in object")
return self.translators[case].translate_str(*args, **kwargs)
def translate(self, case: str, *args: Tuple, **kwargs: Dict) -> [str, Tuple, Dict]:
""" Translates the method according to a case
Parameters
----------
case: str
The name of the translation case to use
*args: Tuple
**kwargs: Dict
Returns
-------
[str, Tuple, Dict]
The translated method name along with the given args and the
translated kwargs
"""
if case not in self.cases:
raise ValueError(f"Case {case} not fonud in object")
return self.translators[case].translate(*args, **kwargs)
Classes
class MethodTranslator (first_name: str, second_name: str, kwarg_names: Dict[str, str] = None)
-
Expand source code
class MethodTranslator(object): """ """ def __init__( self, first_name: str, second_name: str, kwarg_names: Dict[str, str] = None, ): self.first_name = first_name self.second_name = second_name self.kwargs = {key: kwarg_names[key] for key in kwarg_names if kwarg_names[key] != ""} if self.kwargs is None: self.kwargs = {} def translate_str(self, *args: Tuple, **kwargs: Dict) -> str: """ Tranlates the method as a string Parameters ---------- *args: Tuple **kwargs: Dict Returns ------- str The string of the translated method new_method(arg1, arg2..., kwargs1=val1, translated_kwargs2=val2...) """ tr = f"{self.second_name}(" for val in args: tr = f"{tr}{val}, " for kwarg in kwargs: val = kwargs[kwarg] if isinstance(val, str): val = f"'{val}'" if kwarg in self.kwargs: tr = f"{tr}{self.kwargs[kwarg]}={val}, " else: tr = f"{tr}{kwarg}={val}, " if len(tr) > 2 and tr[-2:] == ", ": tr = tr[:-2] tr = f"{tr})" return tr def translate(self, *args: Tuple, **kwargs: Dict) -> [str, Tuple, Dict]: """ Translates the method Parameters ---------- *args: Tuple **kwargs: Dict Returns ------- [str, Tuple, Dict] The translated method name along with the given args and the translated kwargs """ new_kwargs = {} for kwarg in kwargs: val = kwargs[kwarg] if kwarg in self.kwargs: new_kwargs[self.kwargs[kwarg]] = val else: new_kwargs[kwarg] = val return self.second_name, args, new_kwargs
Methods
def translate(self, *args: Tuple[], **kwargs: Dict[~KT, ~VT]) ‑> [
, typing.Tuple, typing.Dict] -
Translates the method
Parameters
*args
:Tuple
**kwargs
:Dict
Returns
[str, Tuple, Dict] The translated method name along with the given args and the translated kwargs
Expand source code
def translate(self, *args: Tuple, **kwargs: Dict) -> [str, Tuple, Dict]: """ Translates the method Parameters ---------- *args: Tuple **kwargs: Dict Returns ------- [str, Tuple, Dict] The translated method name along with the given args and the translated kwargs """ new_kwargs = {} for kwarg in kwargs: val = kwargs[kwarg] if kwarg in self.kwargs: new_kwargs[self.kwargs[kwarg]] = val else: new_kwargs[kwarg] = val return self.second_name, args, new_kwargs
def translate_str(self, *args: Tuple[], **kwargs: Dict[~KT, ~VT]) ‑> str
-
Tranlates the method as a string
Parameters
*args
:Tuple
**kwargs
:Dict
Returns
str
- The string of the translated method new_method(arg1, arg2…, kwargs1=val1, translated_kwargs2=val2…)
Expand source code
def translate_str(self, *args: Tuple, **kwargs: Dict) -> str: """ Tranlates the method as a string Parameters ---------- *args: Tuple **kwargs: Dict Returns ------- str The string of the translated method new_method(arg1, arg2..., kwargs1=val1, translated_kwargs2=val2...) """ tr = f"{self.second_name}(" for val in args: tr = f"{tr}{val}, " for kwarg in kwargs: val = kwargs[kwarg] if isinstance(val, str): val = f"'{val}'" if kwarg in self.kwargs: tr = f"{tr}{self.kwargs[kwarg]}={val}, " else: tr = f"{tr}{kwarg}={val}, " if len(tr) > 2 and tr[-2:] == ", ": tr = tr[:-2] tr = f"{tr})" return tr
class MultiMethodTranslator (first_name: str, cases: List[str], second_names: List[str], kwargs_names: [typing.List[typing.Dict[str, str]]] = None)
-
Expand source code
class MultiMethodTranslator(object): """ """ def __init__( self, first_name: str, cases: List[str], second_names: List[str], kwargs_names: [List[Dict[str, str]]] = None, ): self.first_name = first_name self.cases = cases self.second_names = second_names self.kwargs = kwargs_names self.translators = {} if self.kwargs is None: self.kwargs = [{}] * len(self.cases) for case, second_name, kwarg_names in zip(self.cases, self.second_names, self.kwargs): self.translators[case] = MethodTranslator(self.first_name, second_name, kwarg_names) def translate_str(self, case: str, *args: Tuple, **kwargs: Dict) -> str: """ Tranlates the method as a string according to a case Parameters ---------- case: str The name of the translation case to use *args: Tuple **kwargs: Dict Returns ------- str: The string of the translated method new_method(arg1, arg2..., kwargs1=val1, translated_kwargs2=val2...) """ if case not in self.cases: raise ValueError(f"Case {case} not fonud in object") return self.translators[case].translate_str(*args, **kwargs) def translate(self, case: str, *args: Tuple, **kwargs: Dict) -> [str, Tuple, Dict]: """ Translates the method according to a case Parameters ---------- case: str The name of the translation case to use *args: Tuple **kwargs: Dict Returns ------- [str, Tuple, Dict] The translated method name along with the given args and the translated kwargs """ if case not in self.cases: raise ValueError(f"Case {case} not fonud in object") return self.translators[case].translate(*args, **kwargs)
Methods
def translate(self, case: str, *args: Tuple[], **kwargs: Dict[~KT, ~VT]) ‑> [
, typing.Tuple, typing.Dict] -
Translates the method according to a case
Parameters
case
:str
- The name of the translation case to use
*args
:Tuple
**kwargs
:Dict
Returns
[str, Tuple, Dict] The translated method name along with the given args and the translated kwargs
Expand source code
def translate(self, case: str, *args: Tuple, **kwargs: Dict) -> [str, Tuple, Dict]: """ Translates the method according to a case Parameters ---------- case: str The name of the translation case to use *args: Tuple **kwargs: Dict Returns ------- [str, Tuple, Dict] The translated method name along with the given args and the translated kwargs """ if case not in self.cases: raise ValueError(f"Case {case} not fonud in object") return self.translators[case].translate(*args, **kwargs)
def translate_str(self, case: str, *args: Tuple[], **kwargs: Dict[~KT, ~VT]) ‑> str
-
Tranlates the method as a string according to a case
Parameters
case
:str
- The name of the translation case to use
*args
:Tuple
**kwargs
:Dict
Returns
str:
- The string of the translated method new_method(arg1, arg2…, kwargs1=val1, translated_kwargs2=val2…)
Expand source code
def translate_str(self, case: str, *args: Tuple, **kwargs: Dict) -> str: """ Tranlates the method as a string according to a case Parameters ---------- case: str The name of the translation case to use *args: Tuple **kwargs: Dict Returns ------- str: The string of the translated method new_method(arg1, arg2..., kwargs1=val1, translated_kwargs2=val2...) """ if case not in self.cases: raise ValueError(f"Case {case} not fonud in object") return self.translators[case].translate_str(*args, **kwargs)
class ValueError (message: str = '')
-
Inappropriate argument value (of correct type).
Expand source code
class ValueError(ValueError): def __init__(self, message: str = ""): self.message = f"Error in TransparentPath: {message}" super().__init__(self.message)
Ancestors
- builtins.ValueError
- builtins.Exception
- builtins.BaseException