Architecture

pyexcel uses loosely couple plugins to fullfil the promise to access various file formats. lml is the plugin management library that provide the specialized support for the loose coupling.

What is loose coupling?

The components of pyexcel is designed as building blocks. For your project, you can cherry-pick the file format support without affecting the core functionality of pyexcel. Each plugin will bring in additional dependences. For example, if you choose pyexcel-xls, xlrd and xlwt will be brought in as 2nd level depndencies.

Looking at the following architectural diagram, pyexcel hosts plugin interfaces for data source, data renderer and data parser. pyexcel-pygal, pyexcel-matplotlib, and pyexcel-handsontable extend pyexcel using data renderer interface. pyexcel-io package takes away the responsibilities to interface with excel libraries, for example: xlrd, openpyxl, ezodf.

As in A list of file formats supported by external plugins, there are overlapping capabilities in reading and writing xlsx, ods files. Because each third parties express different personalities although they may read and write data in the same file format, you as the pyexcel is left to pick which suit your task best.

Dotted arrow means the package or module is loaded later.

_images/architecture.svg