Pass extra info to argument parsers and add dateparser to temporary dockerfile dependencies
This commit is contained in:
parent
b137d0686f
commit
e565b99826
2 changed files with 8 additions and 7 deletions
|
@ -24,8 +24,8 @@ RUN apk add --no-cache \
|
|||
py3-pillow \
|
||||
py3-magic \
|
||||
py3-psycopg2 \
|
||||
&& pip3 install -r requirements.txt feedparser
|
||||
# TODO require pillow, magic and feedparser when maubot supports installing dependencies
|
||||
&& pip3 install -r requirements.txt feedparser dateparser
|
||||
# TODO remove pillow, magic and feedparser when maubot supports installing dependencies
|
||||
|
||||
VOLUME /data
|
||||
|
||||
|
|
|
@ -126,7 +126,8 @@ class CommandHandler:
|
|||
remaining_val: str) -> Tuple[bool, str]:
|
||||
for arg in self.__mb_arguments__:
|
||||
try:
|
||||
remaining_val, call_args[arg.name] = arg.match(remaining_val.strip())
|
||||
remaining_val, call_args[arg.name] = arg.match(remaining_val.strip(), evt=evt,
|
||||
instance=self.__bound_instance__)
|
||||
if arg.required and not call_args[arg.name]:
|
||||
raise ValueError("Argument required")
|
||||
except ArgumentSyntaxError as e:
|
||||
|
@ -260,7 +261,7 @@ class Argument(ABC):
|
|||
self.pass_raw = pass_raw
|
||||
|
||||
@abstractmethod
|
||||
def match(self, val: str) -> Tuple[str, Any]:
|
||||
def match(self, val: str, **kwargs) -> Tuple[str, Any]:
|
||||
pass
|
||||
|
||||
def __call__(self, func: Union[CommandHandler, CommandHandlerFunc]) -> CommandHandler:
|
||||
|
@ -277,7 +278,7 @@ class RegexArgument(Argument):
|
|||
matches = f"^{matches}" if self.pass_raw else f"^{matches}$"
|
||||
self.regex = re.compile(matches)
|
||||
|
||||
def match(self, val: str) -> Tuple[str, Any]:
|
||||
def match(self, val: str, **kwargs) -> Tuple[str, Any]:
|
||||
orig_val = val
|
||||
if not self.pass_raw:
|
||||
val = val.split(" ")[0]
|
||||
|
@ -294,7 +295,7 @@ class CustomArgument(Argument):
|
|||
super().__init__(name, label, required=required, pass_raw=pass_raw)
|
||||
self.matcher = matcher
|
||||
|
||||
def match(self, val: str) -> Tuple[str, Any]:
|
||||
def match(self, val: str, **kwargs) -> Tuple[str, Any]:
|
||||
if self.pass_raw:
|
||||
return self.matcher(val)
|
||||
orig_val = val
|
||||
|
@ -306,7 +307,7 @@ class CustomArgument(Argument):
|
|||
|
||||
|
||||
class SimpleArgument(Argument):
|
||||
def match(self, val: str) -> Tuple[str, Any]:
|
||||
def match(self, val: str, **kwargs) -> Tuple[str, Any]:
|
||||
if self.pass_raw:
|
||||
return "", val
|
||||
res = val.split(" ")[0]
|
||||
|
|
Loading…
Reference in a new issue