Skip to content

DaveMDS/python-efl

Repository files navigation

Python bindings for the EFL

EFL, or the Enlightenment Foundation Libraries, is a collection of libraries for handling many common tasks such as data structures, communication, rendering, widgets and more. Read more on the efl web site.

Python-EFL are the python bindings for the whole EFL stack (evas, ecore, edje, emotion, ethumb and elementary). You can use Python-EFL to build a portable GUI application in minutes.

The documentation for Python-EFL is available here.

Install from pypi

The last stable release is always available on pypi, and pip is the raccomanded way to install Python-EFL:

(sudo) pip install python-efl

The only requirement is to have the EFL already installed on your machine, see here for install instructions for various linux distro or for building EFL from sources.

NOTE: Currently only sources packages are available on pip, this means that the installation will be quite long as it need to compile all the modules, and that you need a C compiler for installation to work (we highly suggest to use clang as your C compiler). For the next release we have plans to also upload binary packages on pypi, so the installation will be blazing fast and will have zero dependencies!

Install from released tarballs

All the stable releases of python-efl can always be found at: https://download.enlightenment.org/rel/bindings/python/

Tarball only contain cython generated C files, the cython sources are not included. So cython is not needed to build from tarballs. If you need to rebuild the C files you must use a version from git (see below).

To install unpack the tarball and run:

(sudo) python -m pip install . --verbose

or use build to only create the sdist/wheel packages:

python -m build

NOTE: due to cython+gcc behaviour we highly suggest to build python-efl using clang, it's twice faster and eat less ram. If you experience issues using gcc (like memory exhausted or strange compile errors) just use clang in this way:

CC=clang python -m build

If you are building distro packages you will probably need something like this:

python -m build --wheel --no-isolation
python -m installer --destdir="${pkgdir}" dist/*.whl

To see more install options:

python -m pip install --help
python -m build --help

Source repository

If you would like to contribute to Python-EFL and make changes to the Python-EFL code you need to build from git. Development take place in the master branch, while we backport bugfixes in the release branches. You will find a branch for each released version, branches are named as python-efl-X.X.

Main repository

https://git.enlightenment.org/bindings/python/python-efl.git/

GitHub repository

https://github.com/DaveMDS/python-efl

The GitHub repo has been created to simplify the workflow for people that do not have a git account in the E repo, and thus improving collaboration. Feel free to make pull requests on GitHub.

Requirements

  • Python 3.6 or higher (http://www.python.org/)
  • Cython 3 or higher (http://cython.org/)
  • EFL must be the same minor version of the bindings, es. python-efl 1.24 need efl 1.24
  • To build the DOCS you will also need:
    • python-sphinx
    • [optional] graphviz
  • At least 4GB of free RAM to build to build

Documentation

Documentation for the last stable release can be found here.

To build the docs for the bindings you need to have Sphinx installed, for (optional) graphs you need Graphviz, for (optional) Youtube demonstration videos you need the YouTube module from sphinx contrib repository. packages: python-sphinx, graphviz, python-pygraphviz, libgv-python

To build the docs run:

python -m sphinx docs/ build/docs/

The HTML generated documentation will be available in the folder: build/docs/

Note: you must have python-efl installed for building the docs, or you will end up with empty documentation.

Tests and Examples

The tests/ folder contains all the unit tests available, you can run individual tests or use the 00_run_all_tests.py in each folder or even in the tests/ base dir to run all the tests at once.

The scripts in examples/ folder must be run by the user as they require user interaction.

Some of the projects using Python-EFL (in random order)

Project Website
EpyMC - Media Center https://github.com/DaveMDS/epymc
Espionage - D-Bus inspector https://phab.enlightenment.org/w/projects/espionage/
Epour - BitTorrent Client https://phab.enlightenment.org/w/projects/epour/
Eluminance - Fast photo browser https://github.com/DaveMDS/eluminance
Egitu - Git User Interface https://github.com/DaveMDS/egitu
Edone - GettingThingsDone https://github.com/DaveMDS/edone
Epack - Archive extractor https://github.com/wfx/epack

... and many more that cannot fit in this short list. If have some code and want it in this list just let us know.

A brief history of Python-EFL

Python-EFL was begun in 2007 by work of Gustavo Sverzut Barbieri and others while working for Nokia on the software project Canola Media Player. The language bindings were initially developed for the individual components of EFL, until merged together in 2013.

He was later joined by Ulisses Furquim Freire da Silva, who together formed the company ProFUSION embedded systems where the developement continued and a new software project called Editje was created, which uses the Python bindings for most of its functionality.

Python-EFL gained many more developers, also at this time an independent application project called EpyMC was created by Davide Andreoli.

In the beginning of the year 2011 the developement was practically halted. In 2012 Davide Andreoli picked up the developement and Kai Huuhko (@kuuko) joined him shortly after. Work at this time was focused on finishing the Python bindings for Elementary, the toolkit library.

In 2013 the individual components were merged together and a new documentation system was implemented, enabling easier access for the end-user developers.

Currently (as in 2025) the bindings are still actively maintained and improved by Davide Andreoli, in his effort to bring to python a powerfull and attractive UI toolkit.

About

Python bindings for EFL

Resources

License

LGPL-3.0, GPL-3.0 licenses found

Licenses found

LGPL-3.0
COPYING.LESSER
GPL-3.0
COPYING

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages