On Sun, Jan 14, 2018 at 9:18 AM, Andrew Williams <a...@andywilliams.me> wrote:
> Hi, > > Thanks for pointing out the bug in the API docs that have been generated. I > have now updated this to show the true impact of incomplete namespaces. > Go to https://www.enlightenment.org/develop/api/start now and you will see > a very long list of classes and interfaces at the top which are not part of > a larger namespace. > > This does look more confusing (for example: Efl.Canas is not in the same > space as Efl.Canvas.Group) but it highlights this issue well. > We should come up with a method for fixing these in a way that our bound > languages will be happy with too. > Any proposal? Efl.Canvas -> Efl.Canvas.Canvas would be fine to me, but then need the C names to remain unchanged (EFL_CANVAS_CLASS, efl_canvas_blah_call, etc...) Same for Efl.Selection. Efl.VG has been mentioned too, does it belong to Efl.Gfx? Should Efl.Vg itself be Efl.Vg.Object / Efl.Vg.Node? Or Efl.Gfx.Vector.Node? Same for Animation & Interpolator, Player & Playable, Gesture, etc... Should we have a "Util" namespace for non ui common tools, like Interpolator, Observable/Observer, Config, Vpath?, Whatever the solution I doubt we can find a solution that works beautifully in all languages. C has its own restrictions unless we accept awkward & long names (then how would that be any better than legacy?) while various languages have their own issues. C++ and C# are now fine with having a As a side note, the documentation lacks a section "these classes use / implement / inherit from this class / interface". > Thanks, > Andy > > On Sat, 13 Jan 2018 at 10:45 Davide Andreoli <d...@gurumeditation.it> > wrote: > > > 2018-01-11 6:18 GMT+01:00 Jean-Philippe André <j...@videolan.org>: > > > > > Hi Dave, > > > > > > On Thu, Jan 11, 2018 at 7:43 AM, Davide Andreoli < > d...@gurumeditation.it > > > > > > wrote: > > > > > > > 2018-01-08 19:52 GMT+01:00 Cedric Bail <ced...@ddlm.me>: > > > > > > > > > Hi Dave, > > > > > > > > > > > -------- Original Message -------- > > > > > > Subject: [E-devel] Eo/Eolian namespace definition > > > > > > Local Time: January 7, 2018 9:28 AM > > > > > > UTC Time: January 7, 2018 5:28 PM > > > > > > From: d...@gurumeditation.it > > > > > > To: Enlightenment <enlightenment-devel@lists.sourceforge.net> > > > > > > > > > > > > Hi all, > > > > > > > > > > > > I'm playing again with eolian and python, and I'm facing an issue > > > with > > > > > > regards class names and namespaces separation (I already raised > > this > > > in > > > > > the > > > > > > past) > > > > > > > > > > > > A first intro to python namespaces (I think apply to any other > > > > high-level > > > > > > language): > > > > > > > > > > > > - in py every class must live in a given namespace and you use > the > > > > class > > > > > as: > > > > > > from <namespace> import <class> > > > > > > - every namespace in python is a separate .so file > > > > > > > > > > > > The basic question is: > > > > > > is the Efl.Text (interface) inside the Efl.Text namespace? > > > > > > do I need to put the Text interface inide the Efl.Text .so file? > > > > > > > > > > > > NO) if the resonse is no, then in python will become: > > > > > > from efl.ui import Button > > > > > > from efl import Text > > > > > > from efl.text import Font > > > > > > > > > > > > this feels wrong to me, as Text is not in the text namespace > > > > > > > > > > > > YES) if the response is YES: > > > > > > from efl.ui import Button > > > > > > from efl.text import Text > > > > > > from efl.text import Font > > > > > > > > > > Would interfaces need to be imported in Python? > > > Can't we just use obj.font_foo() and obj.text_bar()? > > > > > > > nono, in py you need to import the simbols you want to explicity use. > > C objecs that implement the Text interface will translate to Python in an > > object that inherit from the Text interface, thus all the interface > > method/properties will be available in the obect itself. > > > > So there is no need to import the Text interface to just use an object > that > > implement it, > > but you need to import the iface if you want (fe) to create a new class > > that implement > > that interface (not sure if this will make sense in practice) or you need > > to use that name > > for other means, maybe you want to check if a given object implement a > > specific interface: > > > > from efl.text import Text > > ... > > if isinstance(obj, Text): > > blah, blah > > > > In this case you need to import the interface as you are using it's name. > > > > > > > > > > > > > > from efl.text import Text > > > With a Text obj -> obj.font_foo()? > > > > > > > > > > > > > > > > > > > > > this one seems correct to me, but this means that the full name > of > > > the > > > > > Text > > > > > > class should be Efl.Text.Text (this is a must in python, and > > probably > > > > in > > > > > > all other langs) > > > > > > > > > > I think that Text is maybe a bad example as it might be best to > move > > it > > > > to > > > > > the Efl.Gfx namespace. In general I think our Efl top namespace is > to > > > > > crowded and would be better cleaned up. I am guessing this would > > solve > > > > many > > > > > problem for python, no ? In general, do you have rules for naming > and > > > > > namespaces that you would like us enforcing ? If we had, we could > > > enforce > > > > > them in eolian. > > > > > > > > > > > > > For the moment the only problem I found for python is that a > name-space > > > > cannot have the same name as a class, f.e. Efl.Text (class) and > > Efl.Text > > > > (namespace) cannot be made available to python with this exact > names. I > > > > already "fixed" this issue using lowercased namespace names like: > > > efl.Text > > > > (class) and efl.text.* (namespace). At the end this is a no-problem > for > > > py > > > > because lowercased namespaces is the raccomended standard in python, > > so > > > it > > > > fit well. > > > > > > > > > > Yes, this is what's done for C++ and C# as well. > > > That was the intent since we started allowing some classes to have the > > same > > > name as a namespace (eg. efl.Canvas and efl.canvas.Object). > > > > > > > If all the bindings we have written so far need this > > lowercase-on-namespaces hack > > then It's probably correct to lowercase them directly in eo files, so > that > > Efl.Ui.Button will > > become efl.ui.Button > > > > This way we will have: > > * consistent names between different languages > > * no more clashes between namespaces and class names. > > * lowered namespaces also seems more readable to me, as it give more > weight > > to the > > class name and a bit less to the namespace. > > > > > > > > > > > > > > > The main intent of this thread is to try to define and standardize the > > way > > > > we are naming classes, in particular wrt to the namespace hierarchy. > > > > I understand that coding in C this seems a no-problem, but for > > languages > > > > that support/require namespaces this must be defined cleanly, at the > > > eolian > > > > level; > > > > to ensure that we will produce/generate conformant and standardized > > > > namespace hierarchy in differetn bindings. > > > > I mean: the Button class should be in the same namespace (Efl.Ui) in > > all > > > > different bindings we will produce. > > > > > > > > > > That is the intent. And in C we probably could (ab)use eo_prefix more > to > > > have nice names despite long namespaces. > > > > > > > > > TBH I'm really surprised that a plan has not been done on this, I > cannot > > > > really undestand how we expect to create a consistent and clean API > if > > > > everyone choose "quite random names" (exageration intended and for > > > joking) > > > > imo we really need to write down the full hierarchy (also with > planned > > > > classes) and discuss on that ! > > > > > > > > > > Believe me or not, we've actually been trying to have consistent names > :) > > > > > > I was actually assuming the generated doc would be a good way to verify > > > that the names are good. > > > The amazing work that's been done on the docs can help us already :) > > > https://www.enlightenment.org/develop/api/start > > > > > > Yes, that page should be our primary reference... but note that > namespaces > > on that page are not the original ones, they are somehow manipulated to > > make > > the page more readable (IMO that page is "hiding a bug") > > > > for example, in the start page, the Efl.Text interface is inside the > > Efl.Text namespace, > > while the correct place (giving the actual name) is in the Efl namespace > > > > Tomorrow I will generate and post a hierachy of namespaces/classes as > they > > will > > come up in bindings (without doing any manipulations), so that we can > > discuss on that > > one. > > > > > > > > > > Should we open a phab ticket and list names that are thought to be > > > problematic? > > > Andy suggested to at least try to reduce the number of top-level > > > namespaces. > > > Some namespaces (Efl.Ui) are also quite messy. > > > > > > -- > > > Jean-Philippe André > > > ------------------------------------------------------------ > > > ------------------ > > > Check out the vibrant tech community on one of the world's most > > > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > > > _______________________________________________ > > > enlightenment-devel mailing list > > > enlightenment-devel@lists.sourceforge.net > > > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > > > > > > > ------------------------------------------------------------ > ------------------ > > Check out the vibrant tech community on one of the world's most > > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > > _______________________________________________ > > enlightenment-devel mailing list > > enlightenment-devel@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > > > > > -- > http://andywilliams.me > http://ajwillia.ms > ------------------------------------------------------------ > ------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > _______________________________________________ > enlightenment-devel mailing list > enlightenment-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > -- Jean-Philippe André ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel