Python bindings for SAF-AIS APIs offer many advantages to middleware developers, application developers, tool developers and testers. The bindings help to speed up the software development lifecycle and enable rapid deployment of architecture-independent components and services. This session will describe main principles guiding Python bindings implementation, and will have extensive in-depth application Python code examples using SAF-AIS services.
1 of 24
Download to read offline
More Related Content
OpenSAF Symposium_Python Bindings_9.21.11
1. Python Bindings for SA Forum AIS APIs
Hans Feldt
Ericsson
Currie Reid
Linux Product Division
Wind River
2. Outline of Presentation
• Objectives
• What is Python?
• Mapping Python to Objectives
• How Python bindings are implemented
• (Demonstration)
• Future Works
3. Objectives
• Enable testing in all phases of the software
lifecycle.
• Simplify development across different
architectures.
• Simplify presentation to developers and
engineers.
• Quickly create tools that make it easy to
investigate and monitor the system.
• Make it easy to create and modify prototypes.
4. What is Python?
• General purpose, high-level, interpreted
language.
• Design philosophy emphasizes code readability.
• Designed to be extensible
• Large, comprehensive standard library.
• Supports object-oriented, imperative, and (lesser
degree) functional programming paradigms.
• Dynamic type system, automatic memory
management.
• Free, open-source, many 3rd party packages.
5. Popularity and Usage
• Twice awarded as “Programming language of the
Year” by TIOBE (2007 & 2010)
• Ranked number 8 in the TIOBE popularity index
• Used as a scripting language for web applications
(Django, Pylons, …)
• Used as an embedded scripting language in other
programs (GIMP, GDB, ..)
• OpenSAF related: Mercurial, Buildbot, Trac, Yum
• Standard component in Linux distributions
6. Enable testing in all phases of software
lifecycle
• Test coverage more complete if easy to write
tests; test-driven development encouraged!
• Tests are portable across architectures.
• Built-in modules for testing include unittest and
doctest.
• Modules available for unit testing, mock testing,
fuzz testing, web testing, gui testing, etc.
• i.e.: nose, py.test, zope.testing.
7. Simplify development across different
architectures
• Python scripts are portable across different
architectures.
• Edit-compile-run cycle is greatly reduced.
• Python code can be edited/patched on the target
system if required.
• Huge collection of native and 3rd-party bindings
available to aid/speed development.
8. Simplify presentation to developers and
engineers
• Python syntax reads like pseudo-code.
• Most Python programs much smaller than lower-
level implementations.
• Easier to examine the problem domain when
you abstract-away programming details and
challenges associated with the machine.
• Do more with less
9. Make it easy to create and modify
prototypes
• Components and applications can be rapidly
prototyped in Python.
• Designs can then be hardened in another
implementation language.
• Ideal glue language.
• Working code can be developed much faster
than lower-level languages.
• Identify “hot spots” in application and possibly
optimize by extending with C/C++
10. Ctypes module: Wrap Libraries in Python
• Advanced FFI (Foreign Function Interface) for
Python 2.3 and higher.
• Included in Python 2.5
• Provides C compatible data types
• Call functions in shared libraries (DLLs).
• Create, access and manipulate simple and
complicated C data types in Python.
• Enables C callbacks to be implemented in
Python.
11. Python Bindings Implementation
• Conversion of SAF types to ctypes
• Definition of Const
• Definition of Enumeration
• Definition of Struct
• Definition of Union
• Dynamic Loading of Libraries and CDLL
• Definition of Functions
• Definition of callbacks and CFUNCTYPE