Pontus & Eliza, Please consider me a resource for your efforts. I have little development time available and I wrote txdbus quite a while back but I should at least be able to answer some questions and serve as a sounding board for design and implementation ideas. Good luck!
Tom Cocagne On Tuesday, May 26, 2015 at 2:07:32 AM UTC-5, Pontus Karlsson wrote: > > How are you running the tests? Using tox I’m not getting that import > error so try that and verify that the issue still exists. > > Could you enable issues on the repository and start an initial branch for > the abstraction? > > I suggest we keep a branch for the abstraction and when that’s done we’ll > start with the asyncio branch. > > I’ve added a Gitter room as well for general talks regarding how to > proceed, unless you prefer keeping those discussions in this mailing list? > > — > Sent from Mailbox <https://www.dropbox.com/mailbox> > > > On Tue, May 26, 2015 at 6:34 AM, Elizaveta Guseva <[email protected] > <javascript:>> wrote: > >> Hello, >> >> I've added you as collaborator to my fork. >> >> So for planing and dividing the work I suggest we start of by mapping the >>> work needed to be done and start creating issues on the repository. >>> >> >> OK. That sounds like a plan. >> Last time I worked together with a collaborator. I kept a plan in the >> Wiki of gitHub in order to remember what was the last step and who is >> responsible for which task. >> I don't know if you'd like to use it for coordination. >> https://github.com/gelisa/txdbus/wiki/Plan >> >> I also keep some notes there too. Mainly for myself to keep track of >> things. You can disregard them >> >> My vacation doesn’t start until July really but I do have some spare time >>> on the evenings on which I will work on this. >>> >> That's fine. >> >> The first thing I noticed was that three tests fails on Python 3.4, these >>> seems to be related to string -> bytes differences in the socket >>> implementation which needs to be taken care of first. >>> >> >> Ugh, I run the tests too and saw them. I am going to look into it. >> Did you have issues with import UNIXServerEndpoint/UNIXClientEndpoint in >> Python 3.4? >> It's looks similar to the endpoints, which can be imported in the source >> file of Twisted 15.2.1. Which puzzles me. >> >> Eliza >> >> >> >> >> >> On Mon, May 25, 2015 at 2:59 AM, <[email protected] <javascript:>> >> wrote: >> >>> Actually I just remembered twisted can interact with the stdlib logging >>> library as well through `twisted.python.log.PythonLoggingObserver`. >>> >>> So I would change it to using `logging` and in the twisted interface >>> implementation use that. >>> >>> That leaves us with twisted specific code only in: >>> * protocol.py >>> * client.py >>> * object.py >>> * endpoints.py >>> >>> And also the tests needs a bit of abstraction as well, preferably by >>> testing the D-Bus protocol implementation by itself. >>> >>> — >>> Sent from Mailbox <https://www.dropbox.com/mailbox> >>> >>> >>> On Mon, May 25, 2015 at 8:41 AM, [email protected] <javascript:> < >>> [email protected] <javascript:>> wrote: >>> >>>> I forked the project yesterday (github.com/wolfhechel/txdbus) and had >>>> another look at it. >>>> >>>> The first thing I noticed was that three tests fails on Python 3.4, >>>> these seems to be related to string -> bytes differences in the socket >>>> implementation which needs to be taken care of first. >>>> >>>> Six is already a requirement so I would probably use that in order to >>>> normalise the output from the protocols. >>>> >>>> Second step would be to separate all Twisted related code into its own >>>> interfaces and place that code in its own package. >>>> >>>> From those interfaces I would create the abstraction and then create >>>> the asyncio implementation on top of that. >>>> >>>> As for the logging, two approaches came to mind: >>>> 1. Initialize logging alongside the event loop abstraction and pass the >>>> log object to all involved classes. >>>> 2. Setup a global logging object in txdbus.log and upon initalization >>>> setup the appropriate logging facility (default to stdlib logging). >>>> >>>> I would prefer alternative number 1 since IMHO global objects with >>>> common names (such as logger, log, logging) tend to collide with a lot of >>>> other packages and increase chances of circular import dependencies. >>>> >>>> Since this is really your project, do you wish to start your own fork >>>> so that the main code is held in your account? Otherwise I’ll just give >>>> you >>>> write permission in the fork I’ve already done. >>>> >>>> My vacation doesn’t start until July really but I do have some spare >>>> time on the evenings on which I will work on this. >>>> >>>> So for planing and dividing the work I suggest we start of by mapping >>>> the work needed to be done and start creating issues on the repository. >>>> >>>> — >>>> Sent from Mailbox <https://www.dropbox.com/mailbox> >>>> >>>> >>>> On Sun, May 24, 2015 at 11:33 PM, Elizaveta Guseva <[email protected] >>>> <javascript:>> wrote: >>>> >>>>> Ultimately it is your choice, but it sounds like there is interest in >>>>>> this project from the txdbus community, which never hurt a project's >>>>>> chances of success :) >>>>> >>>>> >>>>> Awesome. For me, with my primary scientific programming experience, >>>>> help is never bad =) >>>>> >>>>> OK, I'll start with planning. Will keep you updated. >>>>> >>>>> *Pontus,* >>>>> >>>>> I will start figuring out how to abstract the event loop. >>>>> Do you have any specific plan of action in mind? >>>>> >>>>> With regards, to your plans of participation... >>>>> I don't have much of the collaborative coding experience. >>>>> I am not sure what would be the best way of work organization. >>>>> >>>>> Eliza >>>>> >>>>> >>>>> On Sun, May 24, 2015 at 4:57 PM, Tycho Andersen <[email protected] >>>>> <javascript:>> wrote: >>>>> >>>>>> On Sat, May 23, 2015 at 09:42:21PM -0400, Elizaveta Guseva wrote: >>>>>> > Hi, >>>>>> > >>>>>> > *Pontus,* >>>>>> > >>>>>> > As I understood from the discussion you mentioned, the author of >>>>>> txbus >>>>>> > cogane wants to keep one code base in order to wait for kdbus merge. >>>>>> > >>>>>> > I think it's not compatible with asyncio, because asyncio isn't >>>>>> supported >>>>>> > in 2.7. >>>>>> >>>>>> asyncio is supported in 2.7 (and <3.3), just not as an stdlib module, >>>>>> so I don't think this is a big factor for us, as we already require >>>>>> users to install it (qtile's event loop is asyncio based no matter >>>>>> which version of python you're running). >>>>>> >>>>>> > Besides that as I saw from code txdbus relies not only on twisted >>>>>> event >>>>>> > loop but also on logger for example. I don't know how it would be >>>>>> possible >>>>>> > to separate twisted and asyncio in that framework without fork, to >>>>>> be. >>>>>> > >>>>>> > I'm also not sure if we should worry about kdbus anytime soon, >>>>>> judging from >>>>>> > the heated discussion about merge into kernel. Maybe I am wrong. >>>>>> > >>>>>> > *Tycho,* >>>>>> > >>>>>> > Where do you think is better to start from txdbus or python-dbus? >>>>>> > >>>>>> > Pontus listed files in txdbus which rely on Twisted. >>>>>> > >>>>>> > As for python-dbus, it's: >>>>>> > >>>>>> > >>>>>> > - *bus.py -- calls for abstract async from connection.py* >>>>>> > - _compat.py -- None >>>>>> > - *connection.py -- has abstract async function* >>>>>> > - *_dbus.py -- asks for abstract loop* >>>>>> > - *decorators.py -- calls for abstract async* >>>>>> > - exceptions.py -- None >>>>>> > - *_expat_introspect_parser.py -- None* >>>>>> > - >>>>>> > *gi_service.py -- uses gobjects * >>>>>> > - >>>>>> > *glib.py -- glib.. * >>>>>> > - gobject_service.py -- depricated >>>>>> > - lowlevel.py -- None >>>>>> > - *mainloop -- import from glib bindings* >>>>>> > - *proxies.py -- uses connections' abstract async* >>>>>> > - *server.py **-- asks for abstract loop* >>>>>> > - *service.py -- calls for abstract async* >>>>>> > - types.py -- None >>>>>> > >>>>>> > To me it seems python-dbus hid its gobject dependencies pretty well >>>>>> and it >>>>>> > might be rather easy to add asyncio without touching most of the >>>>>> code. >>>>>> >>>>>> It sounds to me like you might get some help doing it in txdbus, >>>>>> whereas you wouldn't doing it in dbus-python, which is a benefit. >>>>>> >>>>>> A pure python implementation also causes less of a problem with >>>>>> distribution, although again I'm not sure this is a big concern for us >>>>>> since the majority of our users are Linux with a handful of OpenBSD >>>>>> folks. >>>>>> >>>>>> Ultimately it is your choice, but it sounds like there is interest in >>>>>> this project from the txdbus community, which never hurt a project's >>>>>> chances of success :) >>>>>> >>>>>> Tycho >>>>>> >>>>>> > Eliza >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > On Sat, May 23, 2015 at 6:54 AM, <[email protected] >>>>>> <javascript:>> wrote: >>>>>> > >>>>>> > > I’ve mentioned this on an issue in txdbus >>>>>> > > https://github.com/cocagne/txdbus/issues/11 and the author had >>>>>> some >>>>>> > > pretty good points on implementing a twisted/asyncio abstraction >>>>>> > > in the txdbus library. >>>>>> > > >>>>>> > > I would be willing to contribute to this as well if the decision >>>>>> is taken >>>>>> > > to simply work on top of txdbus. >>>>>> > > >>>>>> > > >>>>>> > > >>>>>> > > On Wed, May 20, 2015 at 5:01 AM, Elizaveta Guseva < >>>>>> [email protected] <javascript:>> >>>>>> > > wrote: >>>>>> > > >>>>>> > >> Hello Pontus, >>>>>> > >> >>>>>> > >> Oh, cool! Thanks a lot for your recommendation! >>>>>> > >> I will definitely look into it. >>>>>> > >> >>>>>> > >> Eliza >>>>>> > >> >>>>>> > >> On Tue, May 19, 2015 at 7:47 AM, Pontus Karlsson < >>>>>> > >> [email protected] <javascript:>> wrote: >>>>>> > >> >>>>>> > >>> Not sure on how far you've gotten on researching this, but as >>>>>> the model >>>>>> > >>> of asyncio is heavily inspired by the Twisted structure >>>>>> > >>> I would recommend trying to port txdbus >>>>>> > >>> <https://github.com/cocagne/txdbus> to asyncio. >>>>>> > >>> >>>>>> > >>> I was actually looking into doing this a month back and started >>>>>> to map >>>>>> > >>> the code structure and looking into what needs to be altered: >>>>>> > >>> >>>>>> > >>> - *authentication.py* - Zope interfaces, twisted logger >>>>>> > >>> - *bus.py* - twisted logger and Factory? >>>>>> > >>> - *client.py* - Heavy twisted usage >>>>>> > >>> - *endpoints.py* - Heavy twisted usage >>>>>> > >>> - error.py - No Twisted API usage >>>>>> > >>> - interface.py - No Twisted API usage >>>>>> > >>> - introspection.py - No Twisted API usage >>>>>> > >>> - marshal.py - No Twisted API usage >>>>>> > >>> - message.py - No Twisted API usage >>>>>> > >>> - *objects.py* - Zope interfaces, twisted defer >>>>>> > >>> - *protocol.py* - Zope interfaces, heavy twisted usage >>>>>> > >>> - *router.py* - Twisted log >>>>>> > >>> >>>>>> > >>> My recommended approach here is to fork it and abstract the >>>>>> event loop >>>>>> > >>> to work with both Twisted and asyncio. >>>>>> > >>> >>>>>> > >>> Den måndag 4 maj 2015 kl. 22:54:20 UTC+2 skrev Eliza Guseva: >>>>>> > >>>> >>>>>> > >>>> Hello all, >>>>>> > >>>> >>>>>> > >>>> First. Thanks a lot for choosing me as a student for your >>>>>> project!! >>>>>> > >>>> >>>>>> > >>>> As an international student in USA, I'm having some challenges >>>>>> with >>>>>> > >>>> bureaucratic system in my University. >>>>>> > >>>> It starts taking too long at the moment. So I'd better not >>>>>> wait even >>>>>> > >>>> longer and start communication now. >>>>>> > >>>> I have to warn: there might be issues with the system, but I'm >>>>>> trying >>>>>> > >>>> hard to get it work. >>>>>> > >>>> >>>>>> > >>>> On the brighter topic:) >>>>>> > >>>> As I understand it's time to read the documentation now. >>>>>> > >>>> Could you recommend me the reading, which suits the best for >>>>>> the >>>>>> > >>>> purposes of the project? >>>>>> > >>>> What source codes do you think, I should look into to get a >>>>>> better >>>>>> > >>>> understanding? >>>>>> > >>>> I will be asking questions, in the progress. >>>>>> > >>>> >>>>>> > >>>> Thanks a lot! >>>>>> > >>>> >>>>>> > >>> -- >>>>>> > >>> You received this message because you are subscribed to the >>>>>> Google >>>>>> > >>> Groups "qtile-dev" group. >>>>>> > >>> To unsubscribe from this group and stop receiving emails from >>>>>> it, send >>>>>> > >>> an email to [email protected] <javascript:>. >>>>>> > >>> For more options, visit https://groups.google.com/d/optout. >>>>>> > >>> >>>>>> > >> >>>>>> > >> -- >>>>>> > >> You received this message because you are subscribed to a topic >>>>>> in the >>>>>> > >> Google Groups "qtile-dev" group. >>>>>> > >> To unsubscribe from this topic, visit >>>>>> > >> >>>>>> https://groups.google.com/d/topic/qtile-dev/eica8sXohwI/unsubscribe. >>>>>> > >> To unsubscribe from this group and all its topics, send an email >>>>>> to >>>>>> > >> [email protected] <javascript:>. >>>>>> > >> For more options, visit https://groups.google.com/d/optout. >>>>>> > >> >>>>>> > > >>>>>> > > -- >>>>>> > > You received this message because you are subscribed to the >>>>>> Google Groups >>>>>> > > "qtile-dev" group. >>>>>> > > To unsubscribe from this group and stop receiving emails from it, >>>>>> send an >>>>>> > > email to [email protected] <javascript:>. >>>>>> > > For more options, visit https://groups.google.com/d/optout. >>>>>> > > >>>>>> > >>>>>> > -- >>>>>> > You received this message because you are subscribed to the Google >>>>>> Groups "qtile-dev" group. >>>>>> > To unsubscribe from this group and stop receiving emails from it, >>>>>> send an email to [email protected] <javascript:>. >>>>>> > For more options, visit https://groups.google.com/d/optout. >>>>>> >>>>>> -- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "qtile-dev" group. >>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>> send an email to [email protected] <javascript:>. >>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>> >>>>> >>>>> -- >>>>> You received this message because you are subscribed to a topic in the >>>>> Google Groups "qtile-dev" group. >>>>> To unsubscribe from this topic, visit >>>>> https://groups.google.com/d/topic/qtile-dev/eica8sXohwI/unsubscribe. >>>>> To unsubscribe from this group and all its topics, send an email to >>>>> [email protected] <javascript:>. >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>> >>>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "qtile-dev" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected] <javascript:>. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> -- >> You received this message because you are subscribed to a topic in the >> Google Groups "qtile-dev" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/qtile-dev/eica8sXohwI/unsubscribe. >> To unsubscribe from this group and all its topics, send an email to >> [email protected] <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > > -- You received this message because you are subscribed to the Google Groups "qtile-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
