MCPcopy Create free account
hub / github.com/SeleniumHQ/selenium / CddlCommand

Class CddlCommand

py/generate_bidi.py:190–418  ·  view source on GitHub ↗

Represents a CDDL command definition.

Source from the content-addressed store, hash-verified

188
189@dataclass
190class CddlCommand:
191 """Represents a CDDL command definition."""
192
193 module: str
194 name: str
195 params: dict[str, str] = field(default_factory=dict)
196 required_params: set[str] = field(default_factory=set)
197 result: str | None = None
198 description: str = ""
199
200 def to_python_method(self, enhancements: dict[str, Any] | None = None) -> str:
201 """Generate Python method code for this command.
202
203 Args:
204 enhancements: Dictionary with enhancement rules for this method
205 """
206 enhancements = enhancements or {}
207 method_name = self._camel_to_snake(self.name)
208
209 # Build parameter list with type hints
210 # Check if there's a params_override for user-friendly named arguments
211 params_to_use = self.params
212 if "params_override" in enhancements:
213 params_to_use = enhancements["params_override"]
214
215 param_strs = []
216 param_names = [] # Keep track of parameter names for later use
217 for param_name, param_type in params_to_use.items():
218 if param_type in ["bool", "str", "int"]:
219 python_type = param_type
220 else:
221 python_type = CddlType.get_annotation(param_type)
222 snake_param = self._camel_to_snake(param_name)
223 param_names.append((param_name, snake_param))
224 param_strs.append(f"{snake_param}: {python_type} | None = None")
225
226 if param_strs:
227 # Check if full signature would exceed line length limit (120 chars)
228 single_line_signature = f" def {method_name}(self, {', '.join(param_strs)}):"
229 if len(single_line_signature) > 120:
230 # Format parameters on multiple lines
231 body = f" def {method_name}(\n"
232 body += " self,\n"
233 for i, param_str in enumerate(param_strs):
234 if i < len(param_strs) - 1:
235 body += f" {param_str},\n"
236 else:
237 body += f" {param_str},\n"
238 body += " ):\n"
239 else:
240 param_list = "self, " + ", ".join(param_strs)
241 body = f" def {method_name}({param_list}):\n"
242 else:
243 body = f" def {method_name}(self):\n"
244 docstring = enhancements.get("docstring") or self.description or f"Execute {self.module}.{self.name}."
245 body += _emit_docstring(docstring, 8)
246
247 # Add automatic validation for required parameters

Callers 1

_extract_commandsMethod · 0.85

Calls 1

fieldFunction · 0.50

Tested by

no test coverage detected