build(python): simplify rpycdec vendor layout
This commit was merged in pull request #17.
This commit is contained in:
63
third_party/python/rpycdec/src/renpy/parameter.py
vendored
Normal file
63
third_party/python/rpycdec/src/renpy/parameter.py
vendored
Normal file
@@ -0,0 +1,63 @@
|
||||
from .. import util
|
||||
|
||||
|
||||
class Signature:
|
||||
def get_code(self, **kwargs) -> str:
|
||||
rv = []
|
||||
parameters = util.attr(self, "parameters")
|
||||
if isinstance(parameters, dict):
|
||||
for name, value in parameters.items():
|
||||
rv.append(util.get_code(value, **kwargs))
|
||||
else:
|
||||
for value in parameters:
|
||||
rv.append(str(value))
|
||||
if not rv:
|
||||
return ""
|
||||
return f"({', '.join(rv)})"
|
||||
|
||||
|
||||
class Parameter:
|
||||
|
||||
(
|
||||
POSITIONAL_ONLY,
|
||||
POSITIONAL_OR_KEYWORD,
|
||||
VAR_POSITIONAL,
|
||||
KEYWORD_ONLY,
|
||||
VAR_KEYWORD,
|
||||
) = range(5)
|
||||
|
||||
def _variable_or_default(self, name, default):
|
||||
return f"{name}={default}" if default is not None else f"{name}"
|
||||
|
||||
def get_code(self, **kwargs) -> str:
|
||||
name = util.attr(self, "name")
|
||||
kind = util.attr(self, "kind")
|
||||
default = util.attr(self, "default")
|
||||
if kind == self.POSITIONAL_ONLY:
|
||||
return self._variable_or_default(name, default)
|
||||
elif kind == self.POSITIONAL_OR_KEYWORD:
|
||||
return self._variable_or_default(name, default)
|
||||
elif kind == self.VAR_POSITIONAL:
|
||||
return f"*{name}"
|
||||
elif kind == self.KEYWORD_ONLY:
|
||||
return self._variable_or_default(name, default)
|
||||
elif kind == self.VAR_KEYWORD:
|
||||
return f"**{name}"
|
||||
else:
|
||||
raise ValueError(f"Unknown parameter kind: {kind}")
|
||||
|
||||
|
||||
class ArgumentInfo:
|
||||
|
||||
def get_code(self, **kwargs) -> str:
|
||||
rv = []
|
||||
for i, (keyword, expression) in enumerate(self.arguments):
|
||||
if i in self.starred_indexes:
|
||||
rv.append("*" + expression)
|
||||
elif i in self.doublestarred_indexes:
|
||||
rv.append("**" + expression)
|
||||
elif keyword is not None:
|
||||
rv.append("{}={}".format(keyword, expression))
|
||||
else:
|
||||
rv.append(str(expression))
|
||||
return "(" + ", ".join(rv) + ")"
|
||||
Reference in New Issue
Block a user