changeset 369:181b02cea7ab

inspecting Python API
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 02 Apr 2020 08:39:41 +0200
parents 12f88a12d146
children 8f7e9ebf7c96
files Sphinx/source/plugins/python.rst
diffstat 1 files changed, 36 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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
 ---------------------------