Compare commits


244 Commits

Author SHA1 Message Date
Davide Andreoli c8d7bddb47 Do not try to build with Cython3
Thanks goes @rafspiny for pointing this out
2023-11-26 08:36:10 +01:00
Davide Andreoli 4bb6d9fa9f Update package metadata 2023-11-26 08:35:02 +01:00
Davide Andreoli 0b089a5623 Silence pycharm warnings in 2023-11-26 08:34:14 +01:00
Davide Andreoli a7464e66e6 Maintenance release 1.26.1 2023-10-08 05:45:50 +02:00
Davide Andreoli d1b4512e52 open new development phase 2022-02-27 20:26:17 +01:00
Davide Andreoli 9896656574 Prepare release 1.26.0 2022-02-27 20:21:54 +01:00
Davide Andreoli fb649f30e7 packaging is required to build the wheel 2022-02-27 19:49:30 +01:00
Davide Andreoli f0ab762e16 Copyright 2022 2022-02-27 19:07:34 +01:00
Davide Andreoli 4548c5a01b Fixes a memory error
as reported at:

thanks goes to Andreas Schwab and Simotek
2022-02-27 11:19:23 +01:00
Davide Andreoli cadc757e7e setup: use packaging instead of distutils for version check
Distutils is deprecated in py3.10, and packaging is already a
dependency of setuptools
2022-02-27 10:52:50 +01:00
Davide Andreoli ed959b59af Update README 2021-12-06 14:27:47 +01:00
Davide Andreoli ec2b95ceab README: remove not maintained/broken apps
Also add some TODO items and fix an htts link
2021-12-06 11:00:13 +01:00
Davide Andreoli dcf362b03f Update README 2021-12-06 09:26:49 +01:00
Davide Andreoli d420f60e0d updated release instructions 2021-12-05 19:18:25 +01:00
Davide Andreoli 0848286409 fix pip uploading
...a really stupid fix
2021-12-05 18:56:44 +01:00
Davide Andreoli 3ca71a067e Dropped python 2.6 support
and deprecate all versions of python 2, with a big-fat warning.
Python2 support will be fully removed in a later release.
2021-12-05 16:13:22 +01:00
Davide Andreoli 9dce9ccad4 setup: stop importing the version from sources
This was creating all sort of issues, because the efl modules in sources
are not meant to work. And installation from sdist using pip was
complainig about efl not found (because it build in a restricted env)

So just read the file and extract the version from there
(to be DRY)
2021-12-05 12:24:38 +01:00
Davide Andreoli 7141f21f0b setup: disjoint pythonefl version from efl version
minor version of bindings and efl are not always the same
2021-12-05 12:04:09 +01:00
Davide Andreoli fabcef1278 setup: Factorize reading files and cmd exec 2021-12-05 12:00:47 +01:00
Davide Andreoli a0a6d756b5 Fix install using pip
pip run bdist_wheel so we need to take that into account

this also fix generation of wheels in general
2021-12-05 10:43:36 +01:00
Davide Andreoli e467b3e871 Change build tool from distutils to setuptools
This is needed for publishing on pip
2021-12-03 08:37:56 +01:00
Davide Andreoli 69cfc2c7fc Docs: always show the breadcumb 2021-11-30 09:21:20 +01:00
Davide Andreoli f70d7c949f Docs: a better flax layout, also with sticky sidebar 2021-11-30 09:19:48 +01:00
Davide Andreoli 838d4b38c5 Docs: comment out unused js 2021-11-29 22:25:05 +01:00
Davide Andreoli b821107688 Docs: updated links 2021-11-29 08:21:38 +01:00
Davide Andreoli e7545e3185 Docs: a bit of style 2021-11-29 08:12:32 +01:00
Davide Andreoli 5ac4f71131 Docs: set pygment style in theme, not in config 2021-11-29 04:56:53 +01:00
Davide Andreoli 7e4116335a Docs: updated sphinx base html theme 2021-11-29 04:55:20 +01:00
Davide Andreoli 26e2b89a9d Docs: use png for inheritance graphs
svg looks a bit better, but the links are then broken :(
2021-11-18 08:21:47 +01:00
Davide Andreoli 2d0668c548 A bit of linting 2021-11-18 07:22:27 +01:00
Davide Andreoli a83da00bc7 Docs: cleanup the conf file
Regenerate from a fresh sphinx-quickstart
2021-11-18 07:02:41 +01:00
Davide Andreoli 31a147fc7c Docs: remove an old workaround
The ClassName(...) on each class was an old hack that is
not needed anymore
2021-11-18 06:25:19 +01:00
Davide Andreoli 1f441a18c8 typo in README 2021-11-17 08:58:51 +01:00
Davide Andreoli d7275844f1 Docs: fix generation of class methods
autodoc_default_flags is deprecated and do not work anymore with sphinx 4.1
Use autodoc_default_options instead

Also separate __init__ and class docs, seems more explicit to me
2021-11-17 08:50:12 +01:00
Davide Andreoli f3c99eeafa gitignore++ 2021-11-14 23:25:02 +01:00
Davide Andreoli 3dfacc01ab Docs: added infra for tutorials
Also remove some really old presentation text,
we should write some new intro
2021-11-14 23:24:18 +01:00
Davide Andreoli 22274ae81d Docs: remove not needed files 2021-11-14 23:21:00 +01:00
Davide Andreoli 25ed1cc567 Fix build after README rename
2021-11-14 20:24:02 +01:00
Davide Andreoli 22203c0838 Remove the old TODO file 2021-11-12 07:58:46 +01:00
Davide Andreoli 0253f9e178 New markdown README 2021-11-12 07:51:27 +01:00
Davide Andreoli 55e9e51f69 Open 1.26 development phase 2020-09-24 19:31:13 +02:00
Davide Andreoli 5a81c2c944 Prepare 1.25 release 2020-09-24 19:04:53 +02:00
Davide Andreoli 5a02f13210 Do not fail when build with CC="clang"
clang seems much better in building elementary, while gcc need a lot
of ram and tend to fail badly

So for now on clang is the suggested compiler to use
2020-06-25 18:54:03 +02:00
Davide Andreoli 22cc200a61 Back to devel mode 2020-04-30 08:13:09 +02:00
Davide Andreoli 09e016bdbd Update release instructions 2020-04-30 07:57:59 +02:00
Davide Andreoli bd81c36cd0 Prepare the 1.24 release 2020-04-30 07:46:20 +02:00
Davide Andreoli 81c48dd2d9 Explicitly declare efl submodules
seems to make editors happier
2020-04-29 08:37:53 +02:00
Davide Andreoli b9117cb590 Update INSTALL 2020-04-27 20:04:16 +02:00
Davide Andreoli 32aec52918 Fix tests 2020-04-27 20:02:57 +02:00
Davide Andreoli a7e86793c3 Follow efl rename Efl.Canvas.Text -> Efl.Canvas.Textblock 2020-04-27 20:02:08 +02:00
Davide Andreoli a1eeae15f8 gitignore++ 2020-04-27 19:16:23 +02:00
Davide Andreoli 9ba5210a6a Open up development phase 2019-10-06 11:29:09 +02:00
Davide Andreoli d61c596278 Prepeare the 1.23 release 2019-10-06 08:45:57 +02:00
Davide Andreoli e2ce1b49a3 Open up 1.23 development 2019-04-26 11:30:26 +02:00
Davide Andreoli 8ff30f9edd Prepare 1.22 release 2019-04-23 09:18:32 +02:00
Davide Andreoli d544412cd1 Follow Eo class name changes 2019-04-23 09:13:45 +02:00
Davide Andreoli 3b0552259d Silence Cython warnings
I'm keeping python 2 style for compatibility reasons
2019-04-23 08:55:29 +02:00
Davide Andreoli 4fa39916ee Fix for 1.22 Eo api changes 2019-04-23 08:54:13 +02:00
Davide Andreoli 42ee207c16 In development mode again 2018-08-26 11:42:24 +02:00
Davide Andreoli c9f5b53e28 Try to fix tests on jenkins
Seems this test do not have enough time,
lets try with an higher timeout
2018-08-23 19:56:04 +02:00
Davide Andreoli 8cc259ca26 Remove Systray leftovers 2018-08-23 19:55:46 +02:00
Davide Andreoli d25784cca8 Prepare the 1.21 release 2018-08-23 19:07:46 +02:00
Davide Andreoli 7c555cc9da Say goodbye to the Systray widget
This is a really bad break !!!

... shame on us to have used an efl beta api :(
2018-08-22 21:01:20 +02:00
Davide Andreoli 3e198f7294 Disable a failing test
This is failing only when used in the full suite (00_run_all_tests)

it works normally if launched directly, so I think it's just a
test suite issue
2018-08-21 20:08:23 +02:00
Davide Andreoli b855a82160 This test now work as expected 2018-08-17 11:02:15 +02:00
Davide Andreoli 583f42b131 Setup warnings-- 2018-08-17 10:52:42 +02:00
Davide Andreoli 2991a6683e Fix elm.Image.file.__get__
This is to hide a behaviour changes in elm, quite a corner case, but
spotted by our tests.

If you do a file_get before a file_set, elm is nomore nullifying the
pointers, thus we try to ctouni our garbage. Just initialize well
our vars
2018-08-17 10:46:00 +02:00
Davide Andreoli fb9b06931e Ctxpopup: add slow test with many items
just to replicate the C example
2018-07-22 08:14:12 +02:00
Davide Andreoli 48d9c26945 New 1.21 API: edje.Object.part_text_prediction_hint_hash_set/del 2018-07-22 08:04:09 +02:00
Davide Andreoli 4721842b1e New 1.21 API: elm.Entry.prediction_hint_hash_set/del 2018-07-22 07:51:16 +02:00
Davide Andreoli 6aa3501136 New 1.21 API: Ecore_Exe_Flags.ECORE_EXE_ISOLATE_IO
just a new enum value
2018-07-16 20:16:16 +02:00
Davide Andreoli 18ca98e66f New 1.21 API: Ctxpopup item_insert_before/after
with test
2018-07-16 20:00:50 +02:00
Davide Andreoli 006052543f Fix 2 changed class names
2018-07-15 08:15:44 +02:00
Davide Andreoli 30c9c60b5d Fix warnings spotted by cython 0.28
Those are all simbols redeclared in different places
2018-03-24 08:42:31 +01:00
Davide Andreoli 26607a0986 Changes to make cython 0.28 happy
This just refactor how the extensions are named, nothing
is changed in the final layout of the package.

Renamed the dbus extension, that was indeed the only
one with a different naming scheme.

Also raised the minimum cython version a bit, min is
now at 0.23.5, that is still quite old. The oldest
ones seems to not like the new naming scheme.
2018-03-19 21:16:53 +01:00
Davide Andreoli ffc3c337dc Elm: fix Layout.content_swallow_list_get() to not leak
The eina_list_free was wrongly used and was leaking
the whole list. Fixed.
2018-03-04 09:46:21 +01:00
Davide Andreoli 4b8ddcff7d Elm: add test for elm_image_get() before a set() call 2018-03-01 18:32:46 +01:00
Davide Andreoli 00d92cbebe Changed (again) all the elm class names
2018-02-17 01:18:14 +01:00
Davide Andreoli f81fc890bb systray do not work anymore as the widget has been removed from efl :(
... we still need to decide what to do with this breakage
2017-12-12 19:25:39 +01:00
Davide Andreoli 28c9775898 rename Edje.Object to Efl.Canvas.Layout

also fix a small typo in the Makefile
2017-12-09 20:42:20 +01:00
Davide Andreoli 344da31ceb Efl.Ui.Spinner downgraded to Elm.Spinner
2017-09-07 19:30:34 +02:00
Davide Andreoli bc9d5648e7 Fix an evas test
...not that I really understand the utility nor the root cause of tha fail
but this test was segfaulting
2017-09-03 20:33:26 +02:00
Davide Andreoli 58ab1d26f7 Some new OE widget names
2017-09-03 20:28:07 +02:00
Davide Andreoli fe144b8f96 Pypi is migrating, adjust the release instructions 2017-08-16 21:51:59 +02:00
Davide Andreoli efcebb52bf open up the 1.21 development cycle 2017-08-09 08:54:06 +02:00
Davide Andreoli 7d3799d7fa Prepare the 1.20.0 release 2017-08-05 19:05:00 +02:00
Davide Andreoli 85e23f2851 Prepare the 1.20.0-beta1 pre-release 2017-07-22 18:10:16 +02:00
Davide Andreoli c5759b6d67 New 1.20 API: 2017-07-22 17:39:23 +02:00
Davide Andreoli 5bbaba2a6e New 1.20 API: elm.Genlist.multi_select_mode
with test
2017-07-22 17:24:06 +02:00
Davide Andreoli 74ed9e86a4 Use the buffer engine for elm tests
This should make tests work also on jenkins
2017-07-22 11:35:28 +02:00
Davide Andreoli 3ef64e685c Some more tests cleanups
Now I get 100% success on my machine :)
2017-07-22 11:22:15 +02:00
Davide Andreoli 6e2b444712 Use new style import in elm tests
For some obscure reasons the elm tests was failing here (only when run from the command) with the old style imports
2017-07-22 11:09:15 +02:00
Davide Andreoli 7d8049b0c5 Adjust some more tests 2017-07-22 10:57:24 +02:00
Davide Andreoli 741000d423 Move elm external test from edje to elm
elm widgets need an elm parent to work correctly, so it's better to use an elm win instead of a ecore evas one.
2017-07-22 10:55:04 +02:00
Davide Andreoli fecc0c2604 Edje: remove custom __repr__ implementation
to be consistent with the others
2017-07-22 09:08:03 +02:00
Davide Andreoli 9d5efd8aef Do not test Combobox widget
it is deprecated
2017-07-22 08:46:19 +02:00
Davide Andreoli 25f620ef19 python-edje do not exists anymore 2017-07-22 08:42:14 +02:00
Davide Andreoli 6e80968778 test list: use a correct FDO icon name 2017-07-20 21:29:46 +02:00
Davide Andreoli 64584362b7 clean ecore_input files in CleanGenerated 2017-07-16 20:28:44 +02:00
Davide Andreoli 8ad73b3e69 Ecore.Poller is no more an Eo object in C :( 2017-07-16 14:12:32 +02:00
Davide Andreoli 5b9ba62e8f Fix a nasty ecore.x and ecore.input conflict
Both modules register the ECORE_EVENT_* events, so if you use them toghether one of the 2 was failing to run because the events was already registered by the other.

I'm fixing this by keeping a local event map in ecore.input, not the cleaner solution but it's the safer one I can found (in term of backward compatibility)

This fix (at least) epymc in standalone mode (without a wm)
2017-07-15 22:52:39 +02:00
Davide Andreoli 26a4c38d67 New 1.20 API: evas.Map.coords_get 2017-07-15 17:30:19 +02:00
Davide Andreoli 15b29e3ce8 New 1.20 API: elm/edje text_prediction_hint
no tests, as I have no idea on how to use this feature
2017-07-15 17:07:08 +02:00
Davide Andreoli 6bd7daa883 New 1.20 API: elm.Spinner min/max,reached events
with test
2017-07-15 10:44:58 +02:00
Kai Huuhko 5864a9dd2d Documentation: Add better documentation about object lifetime 2017-07-09 16:50:24 +03:00
Kai Huuhko a475ecba44 Elementary: Add import to efl.edje
Since we can't always anticipate when Elm will return a pointer to
an Edje object, let's just have the type always available.
2017-06-18 20:30:52 +03:00
Davide Andreoli eace418f9b Some new widget names
2017-06-18 18:38:25 +02:00
Davide Andreoli bb2a45f013 Open up 1.20 dev cycle 2017-04-21 09:25:30 +02:00
Davide Andreoli 8c7ad9f31f Prepare the 1.19 release 2017-04-18 19:40:42 +02:00
Davide Andreoli d9f06e72a2 Fix evas.Box test
testing the color for a box do not make much sense, and its failing...
2017-04-18 19:22:17 +02:00
Davide Andreoli df221788f0 Fix file_download test
the old url was not reporting the total size anymore, thus making the test fail
2017-04-18 19:21:04 +02:00
Davide Andreoli 6a7e698368 New 1.19 API: evas.Image.load_head_skip 2017-04-15 20:41:14 +02:00
Davide Andreoli 4557daa602 EcoreConUrl is no more an Eo object :(
2017-04-15 20:20:08 +02:00
Kai Huuhko a70c42e681 elm: Don't allow FontProperties to be freed manually
This could easily lead to segfaults and double frees if the lifetime of the Python object is not managed carefully.

We now do the free automatically when the object no longer has references to it.
2017-04-15 16:50:27 +03:00
Davide Andreoli d87e0a5484 another win stack piece 2017-04-04 20:35:29 +02:00
Davide Andreoli 89bb6a1998 Revert "New 1.19 API: elm.Win.stack_*"
This reverts commit f76e272990.

The win stack api has gone in beta,
we can re-revert after the release
2017-04-04 20:22:35 +02:00
Kai Huuhko b06c3151f7 elm: Fix font_properties_get 2017-03-31 17:51:00 +03:00
Davide Andreoli add166fb62 New 1.19 API: elm.Calendar.date_{min,max}
with test
2017-03-15 21:07:10 +01:00
Davide Andreoli 7aec398ede New 1.19 API: elm.ELM_INPUT_PANEL_LAYOUT_VOICE 2017-03-15 19:54:43 +01:00
Davide Andreoli da9258f474 New 1.19 API: elm.GengridItem.custom_size 2017-03-15 19:41:17 +01:00
Davide Andreoli 9c00cbb0fe New 1.19 API: elm.Naviframe "item,activated" cb
with test refactor/reformat
2017-02-27 20:23:02 +01:00
Davide Andreoli 18e2d9c102 Make the new image test py2 compat 2017-02-26 22:54:18 +01:00
Davide Andreoli 71354b3bb8 New 1.19 API: elm.Image.async_open + 4 new callbacks
with test
2017-02-26 22:50:25 +01:00
Davide Andreoli a293b4e124 Split 2 elm.Image tests in 2 files 2017-02-26 21:29:11 +01:00
Davide Andreoli e3224c882a whops, forgot compat wrappers for added enums 2017-02-26 21:08:03 +01:00
Davide Andreoli dccd0ed62f New 1.19 API: ELM_CALENDAR_REVERSE_DAILY 2017-02-26 20:59:38 +01:00
Davide Andreoli 9231e530bf New 1.19 API: elm.Progressbar.is_pulsing
with a stipid test
2017-02-26 10:30:29 +01:00
Davide Andreoli 6f92607ba4 New 1.19 API: elm.Panel "toggled" signal
with test
2017-02-26 09:43:15 +01:00
Davide Andreoli f76e272990 New 1.19 API: elm.Win.stack_*
with test
2017-02-25 12:58:42 +01:00
Davide Andreoli 3e0dbeb7f7 New 1.19 API: elm.Panel.scrollable_content_size_get 2017-02-25 10:57:19 +01:00
Davide Andreoli 98b7b2408f Rename class names accordly to Eo recent changes
This will lead do break sooner or later, for example:
Datetime is internally an Efl.Ui.Clock, so once Clock will be renamed we will be at a closed corner :(

2016-12-28 14:11:48 +01:00
Davide Andreoli ac7013064f Silence lots of Eo errors
more info in the code comment
2016-11-05 17:51:00 +01:00
Davide Andreoli f2f8906968 Respect pep8 2016-11-05 15:14:41 +01:00
Davide Andreoli 032750af77 Fix Gengrid.item_insert_after to do the right thing 2016-11-05 15:01:48 +01:00
Davide Andreoli 16fa850f24 Fix for cython 0.25
New cython do not like our cdef @DEPRECATED decorator implementation,
I'm not able to fix it, so I just rewrite it in pure python.

The new one is a bit simpler, it do not print the source file anymore,
but still augment the documentation.

Tested with Cython 0.24.1 and 0.25.1 on both python 2.7 and 3.5, hope is enough.

2016-11-05 11:42:26 +01:00
Davide Andreoli 0b03f8b2f3 some cc don't like the way cython use EINA_LOG macros
In some system we saw the compilation fail with this error:
efl/eo/efl.eo.c:1137:60: error: format not a string literal and no format arguments [-Werror=format-security]
   EINA_LOG_DOM_INFO(__pyx_v_3efl_2eo_PY_EFL_EO_LOG_DOMAIN, __pyx_k_Initializing_efl_eo);

so just ignore those warnings
2016-10-24 21:15:03 +02:00
Davide Andreoli 810623dbe4 Tests: use correct FDO icon names
Hope I catched them all
2016-10-22 12:33:32 +02:00
Davide Andreoli 01220931fc Evas: Do not call xxx_callback_del if obj is NULL
2016-10-22 11:43:25 +02:00
Davide Andreoli 924f291660 Test External: more readable indentation 2016-10-22 11:30:51 +02:00
Davide Andreoli 2e5e96a8dd Test Externals: keep in sync with the C test 2016-10-22 11:25:30 +02:00
Davide Andreoli ea4bc8790d warnings -- 2016-10-14 23:16:25 +02:00
Davide Andreoli 9e25d34920 warnings-- 2016-10-14 23:04:27 +02:00
Davide Andreoli 953f468229 Edje_External: fix a wrong var name
spotted by (now readable) warnings
2016-10-14 22:54:50 +02:00
Davide Andreoli f872e7b8c6 Fix usage of EINA_LOG_* functions
spotted by warnings :)
2016-10-14 22:45:32 +02:00
Davide Andreoli e0d892ecaa Silence some false compiler warnings
This make the output a lot more readable, we can now spot real warnings
2016-10-14 22:43:19 +02:00
Davide Andreoli cb062511b2 Makefile: go with py3 by default
this do not affect normal build (python xxx)
the Makefile is just a shortcut for devs
2016-10-14 22:41:03 +02:00
Davide Andreoli fa5b944f31 Eo: Eo_Event -> Efl_Event
#FollowTheWhiteRabbit (tm)
2016-10-14 21:29:15 +02:00
Davide Andreoli 99c618fc2b Remove ecore warning about subprocess incompatibility
This conflict seems to not exists anymore, the added test should prove it

Also removed unused return values from the existing exe test

(cherry picked from commit 191af7ac380ab87d29e4886fe07cd02b8dd5afa9)
2016-10-02 09:56:27 +02:00
Davide Andreoli 1a2b8e64f8 small doc fix 2016-09-24 13:58:12 +02:00
Kai Huuhko 6ad9bb3521 Emotion: Document module names and mark module options as deprecated 2016-09-03 22:37:49 +03:00
Kai Huuhko 0217da6c1f Emotion: Change default module_name to gstreamer1 2016-09-03 22:37:19 +03:00
Kai Huuhko f7e96cf0af Elm.Spinner: Add two missing signals and fix documentation issues 2016-08-29 18:44:35 +03:00
Kai Huuhko 58cfedf5af Elm.Genlist: Document new "indent" item style 2016-08-26 21:47:46 +03:00
Kai Huuhko 818e7db2e6 Tests: Disable edje edit test that segfaults 2016-08-21 20:02:01 +03:00
Kai Huuhko 6fa2d3ff95 Follow Eo -> Efl renames 2016-08-21 19:53:41 +03:00
Davide Andreoli 212eca4321 1.19 development starts now 2016-08-21 15:57:21 +02:00
Davide Andreoli cca359974a Prepare the 1.18.0 release 2016-08-20 09:32:49 +02:00
Kai Huuhko f652b6e18f Evas.Smart: Store event string in the spec to ensure it doesn't get decreffed
This fixes event string corruption and segfault in epymc
2016-08-16 22:57:09 +03:00
Kai Huuhko fdab8ed5b6 tests: Fix edje decorators test
Commit dd584b9f79ec41b53ca620ae534fcf84f12e30a9 fixed bad behaviour in edje entry.

Our test was picking up the "changed" and "cursor,changed" signals emitted by edje entry
when its text was set to "" on creation. Raster changed this behaviour, removing the
emissions, so let's do the same in our test and add some future proofing as well.

Fixes T4374
2016-08-16 21:57:21 +03:00
Kai Huuhko b2af779d7d Switch enums to use the old system we had previously
This allows us to support Cython 0.23+
2016-08-16 10:11:34 +03:00
Davide Andreoli 4bd421562d Improve the ecore test suite
no more print and lots more asserts
2016-08-14 13:02:19 +02:00
Davide Andreoli d6fc38ea59 ecore.Exe: implement is_deleted for consistency with other classes 2016-08-14 11:58:49 +02:00
Davide Andreoli 380e7a58ff ecore.FdHandler: implement is_deleted for consistency with other classes 2016-08-14 10:35:58 +02:00
Davide Andreoli 939cd71702 Small Timer docs improvement 2016-08-14 08:55:01 +02:00
Kai Huuhko 0ef56b3a58 Fix error handling in uninstall command 2016-08-14 05:03:34 +03:00
Kai Huuhko c955d488f9 Blacklist Cython 0.24 2016-08-14 04:41:11 +03:00
Kai Huuhko a575effa6b Check that pregenerated files are available when requested 2016-08-14 04:27:45 +03:00
Davide Andreoli 3d31901da7 new 1.18 API: elm.Window.noblank
with test
2016-08-13 15:18:26 +02:00
Davide Andreoli 79979d9d2d New 1.18 API: elm.Slider.indicator_show_on_focus
with test
2016-08-13 13:44:22 +02:00
Davide Andreoli a8c1486aad New 1.18 API: elm.Entry.file_text_format 2016-08-13 12:59:43 +02:00
Kai Huuhko 54adcd9970 Bump copyright year 2016-08-13 01:13:30 +03:00
Kai Huuhko 96ae57ed6a Elm.Photo: Add callback prints to example 2016-08-12 23:57:15 +03:00
Davide Andreoli eaa09b6b16 New 1.18 API: elm.Popup.scrollable 2016-08-12 22:46:27 +02:00
Davide Andreoli 6ff9589e83 New 1.18 API: elm.Popup.align
with test, also added test for the existing orient property
2016-08-12 22:28:00 +02:00
Davide Andreoli 222f32eaf2 New 1.18 API: elm.Configuration.vsync 2016-08-12 13:26:58 +02:00
Davide Andreoli 5258779d41 New 1.18 API: elm.Configuration.icon_theme 2016-08-12 13:22:43 +02:00
Davide Andreoli 5342d77d60 New 1.18 API: elm-Configuration.font_hint_type 2016-08-12 12:59:27 +02:00
Davide Andreoli 7066070992 New 1.18 API: elm.Configuration.first_item_focus_on_first_focusin
Also this one was there from 1.11
2016-08-12 10:23:50 +02:00
Davide Andreoli cfb967333d New 1.18 API: elm.Configuration.accel_preference_override
This one was in real there from 1.11, but we missed it
2016-08-12 10:17:20 +02:00
Davide Andreoli 78d90dd467 New 1.18 API: 3 new getters for elm.Photo
NOTE: the test for the editable property is failing...need to recheck this!
2016-08-12 10:04:49 +02:00
Kai Huuhko 30c2ce90c3 Partial revert of ecd93319ee
This API was never meant to be exposed.
2016-08-12 05:52:23 +03:00
Kai Huuhko 55039295f2 Elm.List: Sync with C API 2016-08-12 02:46:30 +03:00
Kai Huuhko ad2ead12f7 Ignore systray 2016-08-12 02:44:22 +03:00
Kai Huuhko ecd93319ee Elm.Image: Sync with C API 2016-08-12 00:13:51 +03:00
Davide Andreoli 187ca5249b Fix the genlist reusable contents test 2016-08-11 11:31:07 +02:00
Davide Andreoli a1bef554e0 New 1.18 API: elm.Object.focus_move_policy_automatic
TBH I think that "automatic" should just have been a new value in the
elm.Object.focus_move_policy enum.... but I really don't have any more
energy to discuss this thing.
2016-08-10 20:59:53 +02:00
Davide Andreoli 23c6ffc8cf Docs and tests for new elm.Label styles
2016-08-10 19:06:50 +02:00
Davide Andreoli 71946bffb3 Mark the ComboBox widget as broken/deprecated.
This is really sad, but the combobox is broken by design and should have been never used in legacy code.

Really, really, sorry about the inconvenience!!
2016-08-10 18:38:32 +02:00
Davide Andreoli bc411cd774 New 1.18 API: elm.Configuration.web_backend 2016-08-10 11:41:49 +02:00
Kai Huuhko aeeee73fda Ecore: Include traceback with subprocess warning 2016-08-09 22:24:11 +03:00
Davide Andreoli 9fb954433e New 1.18 API: elm.Configuration.popup_scrollable 2016-08-09 21:20:44 +02:00
Davide Andreoli 4e57019e1e New 1.18 API: elm.Entry.select_allow
with test
2016-08-09 21:10:16 +02:00
Davide Andreoli f59e7c0c18 New 1.18 API: edje.Edje.part_box_insert_after() 2016-08-09 20:40:02 +02:00
Davide Andreoli e47f403a0b New 1.18 API: elm.Slider.range_enabled/range
with test
2016-08-09 18:52:55 +02:00
Davide Andreoli 2f1aff95c5 New 1.18 API: elm.Configuration.scroll_animation_disabled 2016-08-09 17:22:08 +02:00
Davide Andreoli 01d334b5f6 New 1.18 API: elm.Genlist.filtered_items_count()
with test
2016-08-09 16:21:43 +02:00
Davide Andreoli 105743d304 New 1.18 API: elm.Configuration.scroll_accel_factor 2016-08-09 15:56:25 +02:00
Davide Andreoli c11a7cf227 New 1.18 API: elm Genlist reusable content functionality
with a FAILING test (failing also in C)

(I love to implement broken stuff)
2016-08-09 15:39:35 +02:00
Davide Andreoli 99113cd990 Fix implementation of elm.GenlistItem.all_contents_unset()
the old implementation was not working at all, so I marked it @since 1.18
also added a test for it
2016-08-09 12:56:00 +02:00
Davide Andreoli 9381d46765 New 1.18 API: elm.GengridItem.all_contents_unset()
with test
2016-08-09 12:22:11 +02:00
Davide Andreoli 83656bff33 New 1.18 API: elm.Entry.select_region (get + property)
with test
2016-08-09 10:19:14 +02:00
Davide Andreoli 48eec126bb New 1.18 API: elm.Transit.revert()
with test
2016-08-09 09:51:24 +02:00
Davide Andreoli b37c970587 Fix definition of oe functions
#FollowTheWhiteRabbit (tm)
2016-08-08 18:01:39 +02:00
Davide Andreoli 5a3c19b521 dbus: do not segv atexit under py3
This is a workaround as I cannot find a better way to fix this :(

The real issue is that dbus run some callback in our code after
our shutdown of ecore and eina
2016-08-08 17:20:16 +02:00
Davide Andreoli 02f7eb07dd dbus: fix watch cleanups
EINA_LIST_FREE is wrong here, because the handler is already
removed from the list inside e_dbus_fd_handler_del.
Use EINA_LIST_FOREACH_SAFE to be more correct
2016-08-08 17:08:53 +02:00
Davide Andreoli 4a0310140a dbus: actually make timeouts works
dbus timeout are in millisecs, while ecore need seconds...
so timeouts was broken... since the time of e_dbus
2016-08-08 16:59:59 +02:00
Davide Andreoli d87b3bb9d0 dbus: cleanup timeouts
now timeouts should be much more stable
2016-08-08 16:43:35 +02:00
Davide Andreoli a19f0ad434 dbus: code cleanup
no functional changes
2016-08-08 15:47:35 +02:00
Davide Andreoli 11d23a94f1 dbus: remove unuse field in timer struct
td->interval is never used, so remove it
2016-08-08 15:41:45 +02:00
Davide Andreoli f287a1f98c dbus: rename globals to be consistent
no functional changes
2016-08-08 15:32:44 +02:00
Davide Andreoli ffb294b82f dbus: remove unused code
refcount is never incremented nor used, thus the connection was never properly closed

...shutdown bug still there
2016-08-08 15:29:01 +02:00
Kai Huuhko 78c9fe21af Revert "Remove NullHandler from C library logger"
This reverts commit bc8bac1f1a.
2016-08-05 19:43:28 +03:00
Kai Huuhko 13ea0cbe1d Logger: Fix unicode handling with message file and function string parts 2016-08-05 19:30:26 +03:00
Kai Huuhko f86234dd25 Evas.Smart: Comment out a warning for an issue we can't fix
When a smart event has event_info we need to convert it to a Python object.
We rely on the C library documentation to inform us when an event includes event_info
and assign a conversion function to the event handler based on this and pass the Python
object as an extra parameter to the callback. However when the documentation has omitted
this information we erroneously leave the extra parameter out, making the callbacks have
one less parameter, which our users rely on. Finding out the error after release is
useless since fixing it would mean breaking user callbacks.

This warning informed us at runtime when event_info was non-null but it's pretty much
useless so let's remove it.

Our smart callbacks should never have had two different signatures.
2016-08-05 19:12:44 +03:00
Davide Andreoli fbabb111d8 Fix (and optimize) smart callbacks add/del 2016-08-05 17:20:33 +02:00
Davide Andreoli 283efd1a28 Logger: do not fail if the error msg contain invalid chars
now invalid chars are replaced by an "?"
2016-08-05 15:09:06 +02:00
Davide Andreoli 12217e9c2a Add docs (and repr) for ECORE_EXE_TERM_WITH_PARENT 2016-08-05 14:23:42 +02:00
Kai Huuhko bc8bac1f1a Remove NullHandler from C library logger
This makes py-efl spew out an error if your app hasn't been setup to handle the logging.

If you don't like this, complain to Dave.
2016-08-04 14:31:21 +03:00
Kai Huuhko 0916eae9ff Add logging to the rest of the individual unit tests 2016-08-03 14:47:42 +03:00
Kai Huuhko d6bad7a838 Enable logging in elm image icon unit test 2016-08-03 12:10:12 +03:00
Davide Andreoli 2ebc0dcf74 2 more class name tests 2016-08-02 19:30:49 +02:00
Davide Andreoli e2edab7b1c tests: 2 small fixes
* ElmWeb external test skipped for the moment.
* Decorators test fixed by adding the new "edje,language,none" signal ti the list of expected.
2016-08-01 20:05:04 +02:00
Davide Andreoli 11c7d38a56 rename Elm_Frame -> Efl_Ui_frame
#FollowTheWhiteRabbit (tm)
2016-08-01 17:24:15 +02:00
Davide Andreoli 9b5b526620 Ecore.Idlers are no more an Eo object in C :(
2016-08-01 17:09:22 +02:00
Davide Andreoli 8f23c26d89 Ecore.Animator is no more an Eo object in C :(
2016-08-01 16:50:57 +02:00
Davide Andreoli 5680c76a49 Adjust dns lookup test
something changed in the lookup behaviour as this test was passing in the past,
but indeed the new behaviour seems more correct
2016-07-24 14:37:14 +02:00
Davide Andreoli 082456600a Rename some classes to new Eo names
#FollowTheWhiteRabbit (tm)
2016-06-26 16:17:20 +02:00
Davide Andreoli be3069b280 Update to new Eo callback stop mechanism
#FollowTheWhiteRabbit (tm)
2016-06-26 15:54:36 +02:00
Davide Andreoli 36ca39e015 Follow recent Eo class names change 2016-06-03 14:21:22 +02:00
Davide Andreoli 243664d738 Add a test to check eo class names
a bit hackish, but do his work.
And is important to check those names now that efl class names are going to be shuffled around :P
2016-06-03 14:20:41 +02:00
Davide Andreoli e0456df2a2 better indent 2016-06-03 11:45:08 +02:00
Davide Andreoli 51946aaf8b Follow eo class rename 2016-06-03 11:14:40 +02:00
Davide Andreoli cadf409404 Going back to use eo_del instead of eo_unref
...still untested as the bindings are broken for something else atm
2016-06-03 09:14:31 +02:00
Davide Andreoli 7fd0f973ca Safer version of the parent hack
not all objects have a bindable parent, Timer fe have Loop as parent and we don't have bindings for Loop.
2016-05-29 15:49:17 +02:00
Davide Andreoli c2c09d4dc9 Hack to keep the legacy behavior of Eo.parent 2016-05-29 15:41:46 +02:00
Davide Andreoli bae6125061 Slideshow: Fix doc to reflect the real behaviour of the widget. 2016-05-23 19:50:01 +02:00
Bernhard M. Wiedemann 5bbbed95c0 Allow to skip last_updated and sphinx_version
this part is a copied from Sphinx-1.3.6 's

and allows distributions to drop the build date
to have reproducible builds

Test Plan:
in doc/ set
html_last_updated_fmt = None
and make sure that generated html files do not contain
Last updated on None

Reviewers: DaveMDS

Differential Revision:
2016-05-23 19:22:12 +02:00
Davide Andreoli eca2dfaa0b Follow Eo changes
eo_del -> eo_unref
eo_key_del -> eo_key_set(NULL)
2016-05-18 21:38:46 +02:00
Davide Andreoli aba5250634 Follow recent Eo changes 2016-04-24 12:11:07 +02:00
Kai Huuhko 41c1779e81 Shuffle in the latest Eo memes 2016-03-19 01:08:33 +02:00
Kai Huuhko 77d023dfe1 More Eo updates 2016-03-09 20:07:05 +02:00
Kai Huuhko 05c19962dc Follow changes in Eo
- version 4 (eo_add changes coming later)
- events
2016-03-04 11:10:11 +02:00
Davide Andreoli fea03a787c Fix 2 examples to work with py2 2016-02-08 19:42:22 +01:00
Davide Andreoli b6f729dc3a Open the 1.18 development cycle 2016-02-07 20:22:44 +01:00
331 changed files with 9232 additions and 6289 deletions

.gitignore vendored
View File

@ -28,4 +28,9 @@ pip-log.txt
# Cython generated files
# Various editors trash

.pylintrc Normal file
View File

@ -0,0 +1,10 @@
disable=consider-using-f-string, # for older python we still support
redundant-u-string-prefix, # for older python we still support
invalid-name, # seems too pedantic to me

View File

@ -1,3 +1,28 @@
* Automatically build and publish binary wheels on pypi
- for py: 36,37,38,39,310
- for linux x86 and rpi
- see
- see
- also include efl itsef in the wheels? PySide is doing this
* Drop python 2 compatibility
- Switch to cython3
- remove all the workarounds for py2 (see strings and enums)
* Improved editors support, at least on VSCode and PyCharm
* Try to implement better the elementary module, removing
the __init__ module hack (that create problems in the docs)
* Make the examples a first citizen!
- install them with python efl
- make them easily runnable
- show them in the docs
- show the code inside the examples themself?
- make the code editable on the fly?
@ -98,65 +123,54 @@ Tips
Release process instructions
* Announce at and that you are planning for the release
* Change versions in efl/ (ex: 1.9.0)
* use " --python elementary" to see the missing bindings
* Version:
- change versions in efl/ (ex: 1.9.0)
- update EFL_MIN_VER in (if needed)
* Update the ChangeLog file: build_doc -b changes ...and manually merge from the html file
* Git push and wait jenkins to generate the 2 tarballs
* Test the generated tarballs
* scp tarballs & md5sums to:
* Announce at and that tarballs are ready for testing
- build_doc -b changes ...and manually merge from the html file
... wait 24 hours, fix any issues found. In the mean time you can prepare the
release announcement for phame/ml.
* Generate the source (tar) and binary (wheel) distributions:
- make maintainer-clean (just to be sure nothing is cached)
- make dist
* Test the generated tarball and wheel:
- the targz must work by extracting and running: python install [--user]
- the targz must be installable using: pip install python-efl-1.9.0.tar.gz
- the wheel must be installable using: pip install python_efl-1.9.0-xxxx.whl
* Publish the 2 tar archive on
- scp tarballs & md5sums to:
- update download link on the wiki (
* Publish the .tar.gz archive on pypi:
- twine upload python-efl-1.9.0.tar.gz [--repository testpypy]
- TODO: also upload binary wheels for linux py36,37,38,39,310 (see manylinux on pypa)
* Documentation:
- make doc (check that inheritance graphs are there)
- scp the generated html documentation to:
- update the 'current' link on the server (ssh)
* ssh to and mv tarballs & md5sums to:
* Upload the .tar.gz archive to pypi:
- first upload the PKG-INFO file from the "edit" section on pypi
- then upload the tarball from the "files" section
* Create and push the tag for the release
git tag -a v1.9.0 && git push origin v1.9.0
- git tag -a v1.9.0 && git push origin v1.9.0
* Create and push the branch for stable backporting
git branch python-efl-1.9 && git push origin python-efl-1.9
* scp the generated html documentation to:
and update the 'current' link on the server (ssh)
* Update download link on the wiki (
* Publish the blog post on phame (Official Announcements)
* Announce the release to
* Announce the release to and
* Change versions again in efl/ (ex: 1.9.99)
more info at:
for more info:
* Internal utility functions used in the bindings must start with an
underscore and must have the shortest name as possible.
This needs further discussion/expansion.
When we define a function with cdef it is not exposed to Python API.
This should be explicit enough to not need the underscore prefix, which
at best looks ugly, and at worst just plain confusing.
A function name should summarize its functionality in one clear text,
short sentence. We have both too long and too short names. And I admit to
being guilty of adding many of both.
Let's build up a short review so we can see where we stand with this and
make necessary corrections.
/ kuuko
The underscore usage is a coding standard in all the EFL, we should try
to follow the efl style also here (where is possible and make sense)
/ davemds

View File

@ -1,3 +1,185 @@
2023-10-08 v1.26.1
Maintenance release:
* rebuilt using Cython 0.29.34 to fix install on python 3.11
2022-02-27 v1.26.0
* Switched to setuptools for the build system (can now install from pip again)
* Dropped py2.6 support, minimum is now 2.7
* Deprecated python2 support, with a big-fat-slow warning
* Improved documentation
* Fixed a memory allocation error in EvasSmart
2020-09-24 v1.25.0
* Switched to Cython 0.29.21 for the tarball generation
2020-04-30 v1.24.0
* Switched to Cython 0.29.16 for the tarball generation
* No more pypi packages uploaded, you must install from tarball
2019-10-06 v1.23.0
* Switched to Cython 0.29.13 for the tarball generation
2019-04-23 v1.22.0
* Switched to Cython 0.29.7 for the tarball generation
2018-08-24 v1.21.0
* systray.pxi do not work anymore as the widget has been removed from efl.
The widget has been completly removed and the function elm_need_systray
now always return False that means systray is not available.
Apologies for the inconvenient.
* Switched to Cython 0.28.4 for the tarball generation, should fix build
issues with python3.7
* edje.part_text_prediction_hint_hash_del
* edje.part_text_prediction_hint_hash_set
* elm.Entry.prediction_hint_hash_del
* elm.Entry.prediction_hint_hash_set
* elm.Ctxpopup.item_insert_after
* elm.Ctxpopup.item_insert_before
2017-05-06 v1.20.0
* ecore.input and ecore.x can now coexsist
* ecore.Poller is no more an Eo object in C (nothing should be changed in py)
* removed edje.Object custom __repr__ implementation
* Use Cython 23.5 to generate the C source in dist tarball (see T5589)
* elm.Entry.prediction_hint
* elm.Genlist.multi_select_mode
* elm.Spinner.callback_max_reached_add()
* elm.Spinner.callback_max_reached_del()
* edje.part_text_prediction_hint_set()
* evas.Map.coords_get()
2017-04-18 v1.19.0
* Fixes for cython 0.25 compatibility
* elm.font_properties_get
* elm.Gengrid.item_insert_after now work as expected
* Removed ecore warning about subprocess incompatibility, with test to prove it
* Emotion: changed default module_name to "gstreamer1"
* elm.font_properties_free: Changed to no-op as we now do the free
automatically when there are no more references to the FontProperties object
* elm.Panel.scrollable_content_size is now also readable
* EcoreConUrl is no more an Eo object in C
* evas.Image.load_head_skip
* elm.Calendar.date_max
* elm.Calendar.date_min
* elm.GengridItem.custom_size
* elm.Image.async_open
* elm.Image.callback_load_cancel_add
* elm.Image.callback_load_error_add
* elm.Image.callback_load_open_add
* elm.Image.callback_load_ready_add
* elm.Naviframe.callback_item_activated_add
* elm.Panel.callback_toggled_add
* elm.Progressbar.is_pulsing
* elm.Spinner.callback_drag_start_add
* elm.Spinner.callback_drag_stop_add
2016-08-22 v1.18.0
* Fixed (workaround) dbus crash on python >= 3.5
* Fixed Logger module to not fail on unicode error messages
* Changed enums implementation to gain compatibility with Cython > 0.22
* Docs: Allow to skip last_updated and sphinx_version
* elm.Combobox: The combobox widget has been deprecated.
* elm.Photo.editable property is now also readable
* elm.Photo.fill_inside property is now also readable
* elm.Photo.size property is now also readable
* ecore.Exe.is_deleted
* ecore.FdHandler.is_deleted
* edje.Edje.part_box_insert_after
* elm.Configuration.accel_preference_override
* elm.Configuration.first_item_focus_on_first_focusin
* elm.Configuration.font_hint_type
* elm.Configuration.icon_theme
* elm.Configuration.popup_scrollable
* elm.Configuration.scroll_accel_factor
* elm.Configuration.scroll_animation_disabled
* elm.Configuration.vsync
* elm.Configuration.web_backend
* elm.Entry.file_text_format
* elm.Entry.select_allow
* elm.Entry.select_region
* elm.GengridItem.all_contents_unset
* elm.Genlist.filtered_items_count
* elm.GenlistItem.all_contents_unset
* elm.List.multi_select_mode (and the Elm_Object_Multi_Select_Mode enum)
* elm.Object.focus_move_policy_automatic
* elm.Popup.align
* elm.Popup.scrollable
* elm.Slider.range
* elm.Slider.range_enabled
* elm.Slider.indicator_show_on_focus
* elm.Transit.revert
* elm.Window.noblank
2016-01-7 v1.17.0

View File

@ -3,22 +3,19 @@
* Python 2.6 or higher, 3.2 or higher (
- Tested with Python 2.7 / 3.3 / 3.4
- Tested with Python 3.8
* Cython 0.21 or higher (
- Tested with Cython 0.21.2
- Tested with Cython 0.29.16
* EFL core library
- eo, evas, ecore, edje, emotion and elementary
* pkg-config (
- Windows executable (and GLib dependency) can be downloaded from
* 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
@ -29,6 +26,11 @@
python build
To build the bindings you will need at least 4GB of free ram!
Otherwise the build process will badly fail.
Distribution tarballs include pre-generated C source files, so
cython usage is disabled by default, while is enabled in development git
versions. You can always force the usage of cython using two environment

View File

@ -16,7 +16,7 @@
PY = python
PY = python3
.PHONY: build
@ -29,6 +29,11 @@ install:
$(PY) install
.PHONY: uninstall
$(PY) uninstall
.PHONY: doc
$(PY) build build_doc
@ -44,12 +49,20 @@ clean:
$(PY) clean --all
.PHONY: maintaner-clean
.PHONY: maintainer-clean
$(PY) clean --all clean_generated_files
rm -rf build/
rm -rf dist/
rm -rf python_efl.egg-info/
rm -f installed_files-*.txt
.PHONY: dist
$(PY) sdist --formats=gztar,bztar
$(PY) sdist --formats=gztar,xztar
$(PY) bdist_wheel
@cd dist/; for f in `ls *.tar.*` ; do \
echo Generating sha256 for: $$f ; \
sha256sum $$f > $$f.sha256; \

View File

@ -1,7 +0,0 @@
EFL is a collection of libraries for handling many common tasks a
developer man have such as data structures, communication, rendering,
widgets and more.
PYTHON-EFL are the python bindings for the whole EFL stack (eo, evas, ecore,
edje, emotion, ethumb and elementary)

92 Normal file
View File

@ -0,0 +1,92 @@
# 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:
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:
To install download and unpack a tarball and run:
python build
python install --user
sudo python install (for sistem-wide installation)
NOTE: due to strange cython+gcc behaviour we highly suggest to build python-efl using clang. If you experience issues using gcc (like memory exhausted or strange compile errors) just use clang in this way:
CC=clang python build
## 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**.
To build from git you also need to have [Cython]( installed.
### Main repository
### GitHub repository
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.
## Documentation
Documentation for the last stable release can be found [here](
Additionally you can generate the documentation yourself from the source code using the following command:
python build build_doc
The HTML generated documentation will be available in the folder: `build/sphinx/html/`
## Some of the projects using Python-EFL (in random order)
| **Project** | **Website** |
| **EpyMC** - Media Center | |
| **Espionage** - D-Bus inspector | |
| **Epour** - BitTorrent Client | |
| **Eluminance** - Fast photo browser | |
| **Egitu** - Git User Interface | |
| **Edone** - GettingThingsDone | |
| **Epack** - Archive extractor | |
... 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 short 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 2022) the bindings are still actively maintained and improved by Davide Andreoli, in his effort to bring to python a powerfull and attractive UI toolkit.

View File

@ -1,37 +0,0 @@
* EdjeEdit: PartState API does not work
* Elm.Map: overlays_show segfaults, scrollers in examples are jumpy
* Genlist: "filter,done" event is sometimes fired before filter callbacks are done (see the test)
Failing unit tests
* tests.edje.test_04_edit: testPartEffect (marked as known failure)
* tests.edje.test_04_edit: testGroupDel (skipped, segfault)
* tests.edje.test_04_edit: testExternal (skipped, TODO)
* update links and text on:
(requires shell account?)
* Review the internal functions and name them consistently
* edje: complete the unit tests
* Initial Evas GL support (for Elm)
* Add more documentation for callbacks, events, etc.
* Check for missing Eo type mappings
* Automate compilation of the example edje files.
* Add more examples
* Prefs (only supports simple types, not so great for us)
* GLView
* Unit tests
* Images missing in the documentation:
- datetime
- systray
- video
- web
- window ?

View File

@ -24,6 +24,12 @@ c_exclude_list = [
"elm_access", # Access disabled until 1.9
"elm_config_access", # Access disabled until 1.9
"elm_object_item_access", # Access disabled until 1.9
"elm_systray", # We currently have this in using Eo API
"elm_code_", # The code widget is still in beta
"elm_need_e_dbus", # has been deprecated long time ago
"elm_check_selected_get", # We already provide state_get
"elm_check_selected_set", # We already provide state_set
c_excludes = "|".join(c_exclude_list)
@ -165,6 +171,8 @@ def get_pyapis(pxd_path, header_name, prefix):
for f in files:
# if not f.endswith(".pxd"):
# continue
if f.endswith(".pyc"):
open_args = (os.path.join(path, f),)
open_kwargs = dict(mode="r")
if sys.version_info[0] > 2:

View File

@ -1,153 +0,0 @@
# Makefile for Sphinx documentation
# You can set these variables from the command line.
SPHINXBUILD = sphinx-build
BUILDDIR = _build
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
# the i18n builder cannot share the environment and doctrees with the others
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " singlehtml to make a single large HTML file"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " devhelp to make HTML files and a Devhelp project"
@echo " epub to make an epub"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " latexpdf to make LaTeX files and run them through pdflatex"
@echo " text to make text files"
@echo " man to make manual pages"
@echo " texinfo to make Texinfo files"
@echo " info to make Texinfo files and run them through makeinfo"
@echo " gettext to make PO message catalogs"
@echo " changes to make an overview of all changed/added/deprecated items"
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
-rm -rf $(BUILDDIR)/*
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
@echo "Build finished; now you can process the pickle files."
@echo "Build finished; now you can process the JSON files."
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in $(BUILDDIR)/htmlhelp."
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/PythonBindingsforEnlightenmentFoundationLibraries.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/PythonBindingsforEnlightenmentFoundationLibraries.qhc"
@echo "Build finished."
@echo "To view the help file:"
@echo "# mkdir -p $$HOME/.local/share/devhelp/PythonBindingsforEnlightenmentFoundationLibraries"
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/PythonBindingsforEnlightenmentFoundationLibraries"
@echo "# devhelp"
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
@echo "Run \`make' in that directory to run these through (pdf)latex" \
"(use \`make latexpdf' here to do that automatically)."
@echo "Running LaTeX files through pdflatex..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
@echo "Build finished. The text files are in $(BUILDDIR)/text."
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
@echo "Run \`make' in that directory to run these through makeinfo" \
"(use \`make info' here to do that automatically)."
@echo "Running Texinfo files through makeinfo..."
make -C $(BUILDDIR)/texinfo info
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
@echo "The overview file is in $(BUILDDIR)/changes."
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
@echo "Link check complete; look for any errors in the above output " \
"or in $(BUILDDIR)/linkcheck/output.txt."
@echo "Testing of doctests in the sources finished, look at the " \
"results in $(BUILDDIR)/doctest/output.txt."

View File

@ -1,40 +1,47 @@
# -*- coding: utf-8 -*-
# Python Bindings for EFL Elementary documentation build configuration file, created by
# sphinx-quickstart on Thu Jun 28 09:21:25 2012.
# Configuration file for the Sphinx documentation builder.
# This file is execfile()d with the current directory set to its containing dir.
# Note that not all possible configuration values are present in this
# autogenerated file.
# All configuration values have a default; values that are commented out
# serve to show the default.
# This file only contains a selection of the most common options. For a full
# list see the documentation:
import sys, os, platform
# pylint: disable=invalid-name
import os
import sys
import platform
# -- Path setup --------------------------------------------------------------
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
d = "lib.%s-%s-%d.%d" % (
sys.path.insert(0, os.path.abspath("../build/"+d))
#sys.path.insert(0, os.path.abspath('../build/lib.linux-i686-3.2'))
# add these directories to sys.path here.
d = 'lib.%s-%s-%d.%d' % (
sys.path.insert(0, os.path.abspath('../build/' + d))
# sys.path.insert(0, os.path.abspath('../build/lib.linux-i686-3.2'))
# Delete any previously imported efl package
if "efl" in sys.modules: