New Command
Jump to navigation
Jump to search
IN ACTIVE DEVELOPMENT
new_command is an API-only feature which exposes a developer defined Python function as a command to other users.
In a brief
If you need more examples, here a non exhaustive list of examples: [1]
from pymol import cmd
from pathlib import Path
from typing import List, Tuple, Union, Any
Point = Tuple[float, float, float]
@cmd.new_command
def nice_tool(
my_var: Union[int | float],
a_point: Point,
title: str,
other_point: Tuple[int, int, int] = (0, 0, 0),
dirname: Path = '.', # a bit ugly, but works as expected on command-line
this_list: Union[List[bool], None] = None,
extended_calculation: bool = True,
old_style: Any = "Support anything as raw string",
quiet: bool = 1, # special 'quiet=False' on command-line
_self=cmd # special for multi-threaded applications
):
"A cool docstring."
print(this_list)
Details
It improves on extend, the consolidated exposing mechanism, and works by parsing arguments given by users at command-line, enforcing correct types at runtime, freeing developers from it and ensuring typing strictness. It is also advantageous for developers consuming the exposed function/command directly by the API as types can also be enforced statically by MyPy.