# HG changeset patch # User Sebastien Jodogne # Date 1585809581 -7200 # Node ID 181b02cea7ab2e8de07d5710c13925f1af22bec4 # Parent 12f88a12d14645aba9281e3d8698bf9bbfe77434 inspecting Python API diff -r 12f88a12d146 -r 181b02cea7ab Sphinx/source/plugins/python.rst --- a/Sphinx/source/plugins/python.rst Wed Apr 01 08:49:06 2020 +0200 +++ b/Sphinx/source/plugins/python.rst Thu Apr 02 08:39:41 2020 +0200 @@ -348,6 +348,42 @@ orthanc.RegisterRestCallback('/pydicom/(.*)', DecodeInstance) # (*) +.. _python-introspection: + +Inspecting the available API +............................ + +.. highlight:: python + +Thanks to Python's introspection primitives, it is possible to inspect +the API of the ``orthanc`` module in order to dump all the available +features:: + + import inspect + import numbers + import orthanc + + # Loop over the members of the "orthanc" module + for (name, obj) in inspect.getmembers(orthanc): + if inspect.isroutine(obj): + print('Function %s():\n Documentation: %s\n' % (name, inspect.getdoc(obj))) + + elif inspect.isclass(obj): + print('Class %s:\n Documentation: %s' % (name, inspect.getdoc(obj))) + + # Loop over the members of the class + for (subname, subobj) in inspect.getmembers(obj): + if isinstance(subobj, numbers.Number): + print(' - Enumeration value %s: %s' % (subname, subobj)) + elif (not subname.startswith('_') and + inspect.ismethoddescriptor(subobj)): + print(' - Method %s(): %s' % (subname, inspect.getdoc(subobj))) + print('') + + + + + Performance and concurrency ---------------------------