Skip to content

Commit

Permalink
Add signature to adapters so that GNU bash, version 4.4.20(1)-release…
Browse files Browse the repository at this point in the history
… (x86_64-redhat-linux-gnu)

These shell commands are defined internally.  Type `help' to see this list.
Type `help name' to find out more about the function `name'.
Use `info bash' to find out more about the shell in general.
Use `man -k' or `info' to find out more about commands not in this list.

A star (*) next to a name means that the command is disabled.

 job_spec [&]                                                                                                                    history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]
 (( expression ))                                                                                                                if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi
 . filename [arguments]                                                                                                          jobs [-lnprs] [jobspec ...] or jobs -x command [args]
 :                                                                                                                               kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
 [ arg... ]                                                                                                                      let arg [arg ...]
 [[ expression ]]                                                                                                                local [option] name[=value] ...
 alias [-p] [name[=value] ... ]                                                                                                  logout [n]
 bg [job_spec ...]                                                                                                               mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]
 bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-functio>  popd [-n] [+N | -N]
 break [n]                                                                                                                       printf [-v var] format [arguments]
 builtin [shell-builtin [arg ...]]                                                                                               pushd [-n] [+N | -N | dir]
 caller [expr]                                                                                                                   pwd [-LP]
 case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac                                                                      read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
 cd [-L|[-P [-e]] [-@]] [dir]                                                                                                    readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]
 command [-pVv] command [arg ...]                                                                                                readonly [-aAf] [name[=value] ...] or readonly -p
 compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist]  [-F function] [-C command] [-X filterpat] [-P pre>  return [n]
 complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-W wordlist]  [-F function] [-C command] [-X filte>  select NAME [in WORDS ... ;] do COMMANDS; done
 compopt [-o|+o option] [-DE] [name ...]                                                                                         set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]
 continue [n]                                                                                                                    shift [n]
 coproc [NAME] command [redirections]                                                                                            shopt [-pqsu] [-o] [optname ...]
 declare [-aAfFgilnrtux] [-p] [name[=value] ...]                                                                                 source filename [arguments]
 dirs [-clpv] [+N] [-N]                                                                                                          suspend [-f]
 disown [-h] [-ar] [jobspec ... | pid ...]                                                                                       test [expr]
 echo [-neE] [arg ...]                                                                                                           time [-p] pipeline
 enable [-a] [-dnps] [-f filename] [name ...]                                                                                    times
 eval [arg ...]                                                                                                                  trap [-lp] [[arg] signal_spec ...]
 exec [-cl] [-a name] [command [arguments ...]] [redirection ...]                                                                true
 exit [n]                                                                                                                        type [-afptP] name [name ...]
 export [-fn] [name[=value] ...] or export -p                                                                                    typeset [-aAfFgilnrtux] [-p] name[=value] ...
 false                                                                                                                           ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]
 fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]                                                                umask [-p] [-S] [mode]
 fg [job_spec]                                                                                                                   unalias [-a] name [name ...]
 for NAME [in WORDS ... ] ; do COMMANDS; done                                                                                    unset [-f] [-v] [-n] [name ...]
 for (( exp1; exp2; exp3 )); do COMMANDS; done                                                                                   until COMMANDS; do COMMANDS; done
 function name { COMMANDS ; } or name () { COMMANDS ; }                                                                          variables - Names and meanings of some shell variables
 getopts optstring name [arg]                                                                                                    wait [-n] [id ...]
 hash [-lr] [-p pathname] [-dt] [name ...]                                                                                       while COMMANDS; do COMMANDS; done
 help [-dms] [pattern ...]                                                                                                       { COMMANDS ; } works as part of #307

Signed-off-by: Pascal Tomecek <[email protected]>
  • Loading branch information
ptomecek committed Jul 15, 2024
1 parent 323122e commit 615a020
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 0 deletions.
15 changes: 15 additions & 0 deletions csp/impl/wiring/adapters.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import inspect
from datetime import timedelta

from csp.impl.__cspimpl import _cspimpl
Expand Down Expand Up @@ -43,6 +44,20 @@ def __call__(cls, *args, **kwargs):
def using(cls, name=None, **__forced_tvars):
return lambda *args, **kwargs: cls._instantiate(__forced_tvars, name, *args, **kwargs)

@property
def __signature__(cls):
# Implement so that `help` works properly on adapter definitions.
parameters = [
inspect.Parameter(
input_def.name,
inspect.Parameter.POSITIONAL_OR_KEYWORD,
annotation=input_def.typ,
default=cls._signature.defaults.get(input_def.name, inspect.Parameter.empty),
)
for input_def in cls._signature.inputs
]
return inspect.Signature(parameters)


# Every AdapterDef instance represents an instance of a wiring-time input or output adapter
class AdapterDef:
Expand Down
4 changes: 4 additions & 0 deletions csp/impl/wiring/signature.py
Original file line number Diff line number Diff line change
Expand Up @@ -273,3 +273,7 @@ def ts_inputs(self):
@property
def scalars(self):
return self._scalars

@property
def defaults(self):
return self._defaults
7 changes: 7 additions & 0 deletions csp/tests/impl/test_outputadapter.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
"""this test is derived from e_14_user_adapters_05 and e_14_user_adapters_06"""

import inspect
import random
import threading
import unittest
Expand Down Expand Up @@ -198,3 +199,9 @@ def test_with_manager(self):
self.assertIn("publication_data_1", entry)
elif "symbol=data_3" in entry:
self.assertIn("publication_data_3", entry)

def test_help(self):
# for `help` to work on output adapters, signature must be defined
sig = inspect.signature(MyBufferWriterAdapter)
self.assertEqual(sig.parameters["input"].annotation, ts["T"])
self.assertEqual(sig.parameters["output_buffer"].annotation, list)
10 changes: 10 additions & 0 deletions csp/tests/impl/test_pushadapter.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import inspect
import threading
import time
import unittest
Expand Down Expand Up @@ -240,6 +241,15 @@ def graph():
result = list(x[1] for x in result)
self.assertEqual(result, expected)

def test_help(self):
# for `help` to work on adapters, signature must be defined
sig = inspect.signature(test_adapter)
self.assertEqual(sig.parameters["typ"].annotation, "T")
self.assertEqual(sig.parameters["interval"].annotation, int)
self.assertEqual(sig.parameters["ticks_per_interval"].annotation, int)
self.assertEqual(sig.parameters["push_mode"].annotation, PushMode)
self.assertEqual(sig.parameters["push_group"].annotation, object)


if __name__ == "__main__":
unittest.main()

0 comments on commit 615a020

Please sign in to comment.