<div dir="ltr"><div>It turned out to be fairly simple to fix the Read Activity. It was complaining that it had no MICRO_VERSION attribute in the EvinceDocument object, so I just removed it from the _validate_min_version() method in evinceadapter.py:<br></div><div><br></div><div><div style="background-color:rgb(255,255,255);padding:0px 0px 0px 2px"><div style="color:rgb(0,0,0);background-color:rgb(255,255,255);font-family:"Monospace";font-size:10pt;white-space:pre"><div style="background-color:rgb(255,255,255);padding:0px 0px 0px 2px"><div style="color:rgb(0,0,0);background-color:rgb(255,255,255);font-family:"Monospace";font-size:10pt;white-space:pre"><p style="margin:0px"><span style="color:rgb(0,0,0)">    </span><span style="color:rgb(0,0,255)">def</span><span style="color:rgb(0,0,0)"> </span><span style="color:rgb(0,0,0);font-weight:bold">update_toc</span><span style="color:rgb(0,0,0)">(</span><span style="color:rgb(0,0,0);font-style:italic">self</span><span style="color:rgb(0,0,0)">, activity):</span></p><p style="margin:0px"><span style="color:rgb(0,0,0)">        </span><span style="color:rgb(0,0,255)">if</span><span style="color:rgb(0,0,0)"> </span><span style="color:rgb(0,0,0);font-style:italic">self</span><span style="color:rgb(0,0,0)">._validate_min_version(</span><span style="color:rgb(128,0,0)">3</span><span style="color:rgb(0,0,0)">, </span><span style="color:rgb(128,0,0)">5</span><span style="color:rgb(0,0,0)">):</span></p><p style="margin:0px"><span style="color:rgb(0,0,0)">            </span><span style="color:rgb(192,192,192)"># check version because does not work and crash with older evince</span></p><p style="margin:0px"><span style="color:rgb(0,0,0)">            doc = </span><span style="color:rgb(0,0,0);font-style:italic">self</span><span style="color:rgb(0,0,0)">._model.get_document()</span></p><p style="margin:0px"><span style="color:rgb(0,0,0)">            </span><span style="color:rgb(0,0,255)">if</span><span style="color:rgb(0,0,0)"> </span><span style="color:rgb(0,0,255)">not</span><span style="color:rgb(0,0,0)"> doc.has_document_links():</span></p><p style="margin:0px"><span style="color:rgb(0,0,0)">                logging.error(</span><span style="color:rgb(0,170,0);font-style:italic">'The </span><span style="color:rgb(0,170,0);font-style:italic;text-decoration:underline wavy rgb(255,128,64)">pdf</span><span style="color:rgb(0,170,0);font-style:italic"> file does not have a index'</span><span style="color:rgb(0,0,0)">)</span></p><p style="margin:0px"><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">return</span><span style="color:rgb(0,0,0)"> </span><span style="color:rgb(0,0,255)">False</span></p><p style="margin:0px"><span style="color:rgb(0,0,0)">            </span><span style="color:rgb(0,0,255)">else</span><span style="color:rgb(0,0,0)">:</span></p><p style="margin:0px"><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,0);font-style:italic">self</span><span style="color:rgb(0,0,0)">._job_links = EvinceView.JobLinks.new(document=doc)</span></p><p style="margin:0px"><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,0);font-style:italic">self</span><span style="color:rgb(0,0,0)">._job_links.connect(</span><span style="color:rgb(0,170,0);font-style:italic">'finished'</span><span style="color:rgb(0,0,0)">, </span><span style="color:rgb(0,0,0);font-style:italic">self</span><span style="color:rgb(0,0,0)">.__index_loaded_cb,</span></p><p style="margin:0px"><span style="color:rgb(0,0,0)">                                        activity)</span></p><p style="margin:0px"><span style="color:rgb(0,0,0)">                EvinceView.Job.scheduler_push_job(</span></p><p style="margin:0px"><span style="color:rgb(0,0,0)">                    </span><span style="color:rgb(0,0,0);font-style:italic">self</span><span style="color:rgb(0,0,0)">._job_links,</span></p><p style="margin:0px"><span style="color:rgb(0,0,0)">                    EvinceView.JobPriority.PRIORITY_NONE)</span></p><p style="margin:0px"><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">return</span><span style="color:rgb(0,0,0)"> </span><span style="color:rgb(0,0,255)">True</span></p><p style="margin:0px"><span style="color:rgb(0,0,0)">        </span><span style="color:rgb(0,0,255)">else</span><span style="color:rgb(0,0,0)">:</span></p><p style="margin:0px"><span style="color:rgb(0,0,0)">            </span><span style="color:rgb(0,0,255)">return</span><span style="color:rgb(0,0,0)"> </span><span style="color:rgb(0,0,255)">False</span></p><p style="margin:0px"><br></p><p style="margin:0px"><span style="color:rgb(0,0,0)">    </span><span style="color:rgb(0,0,255)">def</span><span style="color:rgb(0,0,0)"> </span><span style="color:rgb(0,0,0);font-weight:bold">handle_link</span><span style="color:rgb(0,0,0)">(</span><span style="color:rgb(0,0,0);font-style:italic">self</span><span style="color:rgb(0,0,0)">, link):</span></p><p style="margin:0px"><span style="color:rgb(0,0,0)">        </span><span style="color:rgb(0,0,0);font-style:italic">self</span><span style="color:rgb(0,0,0)">._view.handle_link(link)</span></p><p style="margin:0px"><br></p><p style="margin:0px"><span style="color:rgb(0,0,0)">    </span><span style="color:rgb(0,0,255)">def</span><span style="color:rgb(0,0,0)"> </span><span style="color:rgb(0,0,0);font-weight:bold">_validate_min_version</span><span style="color:rgb(0,0,0)">(</span><span style="color:rgb(0,0,0);font-style:italic">self</span><span style="color:rgb(0,0,0)">, major, minor):</span></p><p style="margin:0px"><span style="color:rgb(0,0,0)">        </span><span style="color:rgb(0,170,0);font-style:italic">"""</span></p><p style="margin:0px"><span style="color:rgb(0,170,0);font-style:italic">        Check if Evince version is at major or equal than the requested</span></p><p style="margin:0px"><span style="color:rgb(0,170,0);font-style:italic">        """</span></p><p style="margin:0px"><span style="color:rgb(0,0,0)">        evince_version = [EvinceDocument.MAJOR_VERSION,</span></p><p style="margin:0px"><span style="color:rgb(0,0,0)">                          EvinceDocument.MINOR_VERSION]</span></p><p style="margin:0px"><span style="color:rgb(0,0,0)">        </span><span style="color:rgb(0,0,255)">return</span><span style="color:rgb(0,0,0)"> evince_version >= [major, minor]</span></p><p style="margin:0px"><br></p><p style="margin:0px"></p></div></div><p style="margin:0px">Now it works. </p><p style="margin:0px"><br></p><p style="margin:0px">I was getting the same error from the version of Read Activity that shipped with Fedora 39.</p><p style="margin:0px"><br></p><p style="margin:0px">I made a pull request for Get IA Books. It looks like I can do the merge myself. Not sure of what the procedure is to get the revised Activity published.</p><p style="margin:0px"><br></p><p style="margin:0px">James Simmons</p><p style="margin:0px"><br></p><p style="margin:0px"><br></p></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Feb 16, 2024 at 5:47 PM James Cameron <<a href="mailto:quozl@laptop.org">quozl@laptop.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Thanks.  What about the activity provided by Fedora 39?<br>
<br>
On Fri, Feb 16, 2024 at 05:28:35PM -0600, James Simmons wrote:<br>
> I just confirmed that the master branch of the Read Activity has this problem<br>
> with Evince when running on Fedora 39:<br>
> <br>
> Traceback (most recent call last):<br>
>   File "/usr/bin/sugar-activity3", line 5, in <module><br>
>     activityinstance.main()<br>
>   File "/usr/lib/python3.12/site-packages/sugar3/activity/activityinstance.py",<br>
> line 230, in main<br>
>     instance = create_activity_instance(activity_constructor, activity_handle)<br>
>                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^<br>
>   File "/usr/lib/python3.12/site-packages/sugar3/activity/activityinstance.py",<br>
> line 59, in create_activity_instance<br>
>     activity = constructor(handle)<br>
>                ^^^^^^^^^^^^^^^^^^^<br>
>   File "/home/jamessimmons/git/read-activity/readactivity.py", line 374, in<br>
> __init__<br>
>     self.read_file(self._jobject.file_path)<br>
>   File "/home/jamessimmons/git/read-activity/readactivity.py", line 747, in<br>
> read_file<br>
>     self._load_document('file://' + tempfile)<br>
>   File "/home/jamessimmons/git/read-activity/readactivity.py", line 1054, in<br>
> _load_document<br>
>     self._update_toc()<br>
>   File "/home/jamessimmons/git/read-activity/readactivity.py", line 627, in<br>
> _update_toc<br>
>     if self._view.update_toc(self):<br>
>        ^^^^^^^^^^^^^^^^^^^^^^^^^^^<br>
>   File "/home/jamessimmons/git/read-activity/evinceadapter.py", line 275, in<br>
> update_toc<br>
>     if self._validate_min_version(3, 5, 92):<br>
>        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^<br>
>   File "/home/jamessimmons/git/read-activity/evinceadapter.py", line 301, in<br>
> _validate_min_version<br>
>     EvinceDocument.MICRO_VERSION]<br>
>     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^<br>
>   File "/usr/lib64/python3.12/site-packages/gi/module.py", line 126, in<br>
> __getattr__<br>
>     raise AttributeError("%r object has no attribute %r" % (<br>
> AttributeError: 'gi.repository.EvinceDocument' object has no attribute<br>
> 'MICRO_VERSION'. Did you mean: 'MINOR_VERSION'?<br>
> Exited with status 1, pid 106639 activity_id<br>
> 37db76336c5474c61078f525c28c1f9de48fab9a<br>
> <br>
> James Simmons<br>
> <br>
> On Fri, Feb 16, 2024 at 4:09 PM James Simmons <[1]<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a>> wrote:<br>
> <br>
>     James,<br>
> <br>
>     I'm using Fedora 39, a fresh install on a computer I just got and an older<br>
>     one I'm giving away. I'm using the version of Read that ships with Fedora.<br>
>     I just checked out the master branch of Read from Git and could run a<br>
>     python 3 setup.py dev on it to see if that version has the problem. I won't<br>
>     be able to do that right away, but when I do I'll let you know if it works.<br>
> <br>
>     James Simmons <br>
> <br>
>     On Fri, Feb 16, 2024 at 3:42 PM James Cameron <[2]<a href="mailto:quozl@laptop.org" target="_blank">quozl@laptop.org</a>> wrote:<br>
> <br>
>         That's surprising.  Thought we fixed that.<br>
> <br>
>         What Linux distribution and release are you doing this on?<br>
> <br>
>         On Fri, Feb 16, 2024 at 02:23:11PM -0600, James Simmons wrote:<br>
>         > James,<br>
>         ><br>
>         > I don't want to use Evince as part of Get IA Books. It is the Read<br>
>         Activity<br>
>         > itself that has a problem.<br>
>         ><br>
>         > When I tested opening books from the Journal the Read Activity would<br>
>         not start.<br>
>         > I thought the problem might be in the way Get IA Books was adding<br>
>         books to the<br>
>         > Journal, so as a sanity check I used the Browse activity to download<br>
>         some PDFs<br>
>         > to the Journal and also downloaded one EPUB. The Read Activity opened<br>
>         the EPUB<br>
>         > just fine but not the PDFs. There was a stack trace (copied to an<br>
>         earlier<br>
>         > email) that made it look like the code Evince needs to interface with<br>
>         Python<br>
>         > has changed. It was complaining about an Evince micro version number.<br>
>         That was<br>
>         > the thing I wanted to look at in the Read Activity.<br>
>         ><br>
>         > I'll probably send an email to the wider group explaining the issue.<br>
>         ><br>
>         > Thanks.<br>
>         ><br>
>         > James Simmons<br>
>         ><br>
>         > On Fri, Feb 16, 2024 at 2:01 PM James Cameron <[1][3]<a href="mailto:quozl@laptop.org" target="_blank">quozl@laptop.org</a><br>
>         > wrote:<br>
>         ><br>
>         >     There's also VScode and GitHub desktop if you want to try other<br>
>         >     methods.  It is difficult to keep up with GitHub's security<br>
>         posture<br>
>         >     lately.<br>
>         ><br>
>         >     The Read activity has the integration with Evince.  If you want<br>
>         your<br>
>         >     activity to show PDF inside it, rather than activate Read, then<br>
>         borrow<br>
>         >     code from Read.<br>
>         ><br>
>         >     By the way, you're using our membership team alias, which is just<br>
>         >     Alex, myself, and Ibiam.  If you'd like wider and public<br>
>         readership,<br>
>         >     there's the sugar-devel@ mailing list.<br>
>         ><br>
>         >     [2][4]<a href="http://lists.sugarlabs.org/listinfo/sugar-devel" rel="noreferrer" target="_blank">http://lists.sugarlabs.org/listinfo/sugar-devel</a><br>
>         ><br>
>         >     On Fri, Feb 16, 2024 at 08:03:20AM -0600, James Simmons wrote:<br>
>         >     > Ibiam,<br>
>         >     ><br>
>         >     > I think the problem is I need to use a Personal Access Token<br>
>         with<br>
>         >     Eclipse.<br>
>         >     > Somehow it worked with my regular password from Windows at work<br>
>         but it<br>
>         >     was<br>
>         >     > rejected when I used the command line at home from Linux. I had<br>
>         to use<br>
>         >     the PAT<br>
>         >     > instead of the regular password.<br>
>         >     ><br>
>         >     > I'm going to try to get the Read Activity working with Evince.<br>
>         I won't<br>
>         >     need Git<br>
>         >     > update permission unless I actually succeed.<br>
>         >     ><br>
>         >     > James Simmons<br>
>         >     ><br>
>         >     > On Fri, Feb 16, 2024 at 7:40 AM Chihurumnaya Ibiam <[1][3]<br>
>         >     [5]<a href="mailto:members@sugarlabs.org" target="_blank">members@sugarlabs.org</a>><br>
>         >     > wrote:<br>
>         >     ><br>
>         >     >     Maybe there's an issue with the integration in Eclipse.<br>
>         >     ><br>
>         >     >     Glad to hear it's working fine from the command line.<br>
>         >     ><br>
>         >     >     On Thu, Feb 15, 2024 at 5:32 PM James Simmons <[2][4]<br>
>         >     [6]<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a>><br>
>         >     >     wrote:<br>
>         >     ><br>
>         >     >         Chihurumnaya,<br>
>         >     ><br>
>         >     >       <br>
>         >     >         I did some testing with command line Git and my push<br>
>         worked fine.<br>
>         >     I was<br>
>         >     >         trying to use Eclipse as my IDE, which has Git<br>
>         integration built<br>
>         >     in.<br>
>         >     >         That works fine for pulls and for cloning the<br>
>         repository but not<br>
>         >     for<br>
>         >     >         pushes, at least not if you use the https:// URL.<br>
>         >     >       <br>
>         >     >         I can easily live with doing pushes from the command<br>
>         line.<br>
>         >     >       <br>
>         >     >         Thanks for your help.<br>
>         >     >       <br>
>         >     >         James Simmons<br>
>         >     >       <br>
>         >     >       <br>
>         >     >         On Thu, Feb 15, 2024 at 7:42 AM Chihurumnaya Ibiam <[3]<br>
>         >     >         [5][7]<a href="mailto:members@sugarlabs.org" target="_blank">members@sugarlabs.org</a>> wrote:<br>
>         >     ><br>
>         >     >             That's strange, can you use the -v arg so we can<br>
>         see some<br>
>         >     verbose<br>
>         >     >             output, I can confirm you have admin access to the<br>
>         repo.<br>
>         >     ><br>
>         >     >             On Thu, Feb 15, 2024 at 1:41 AM James Simmons <[4]<br>
>         >     >             [6][8]<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a>> wrote:<br>
>         >     ><br>
>         >     >                 Ibiam,<br>
>         >     ><br>
>         >     >                 I just tried it. I get this error:<br>
>         >     ><br>
>         >     >                 Can't connect to any repository: [5][7][9]<br>
>         <a href="https://github.com" rel="noreferrer" target="_blank">https://github.com</a><br>
>         >     /<br>
>         >     >                 sugarlabs/getiabooks.git ([6][8][10]https://<br>
>         <a href="http://github.com/" rel="noreferrer" target="_blank">github.com/</a><br>
>         >     sugarlabs/<br>
>         >     >                 getiabooks.git: not authorized)<br>
>         >     ><br>
>         >     >                 I try logging in as [7][9][11]<br>
>         <a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a> (as I log<br>
>         >     into the<br>
>         >     >                 website) and also jdsimmons. Both display the<br>
>         login<br>
>         >     dialog<br>
>         >     >                 multiple times and give up.<br>
>         >     ><br>
>         >     >                 It looks like I can create branches OK on the<br>
>         website.<br>
>         >     ><br>
>         >     >                 Any suggestions?<br>
>         >     ><br>
>         >     >                 James Simmons<br>
>         >     ><br>
>         >     >                 On Wed, Feb 14, 2024 at 11:33 AM James Simmons<br>
>         <[8]<br>
>         >     >                 [10][12]<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a>> wrote:<br>
>         >     ><br>
>         >     >                     Thanks. It looks OK. I won't be able to try<br>
>         it out<br>
>         >     until<br>
>         >     >                     this evening.<br>
>         >     ><br>
>         >     >                     James Simmons<br>
>         >     ><br>
>         >     >                     On Wed, Feb 14, 2024 at 11:18 AM<br>
>         Chihurumnaya Ibiam<br>
>         >     <[9]<br>
>         >     >                     [11][13]<a href="mailto:members@sugarlabs.org" target="_blank">members@sugarlabs.org</a>> wrote:<br>
>         >     ><br>
>         >     >                         I've added you as a collaborator to the<br>
>         repo with<br>
>         >     admin<br>
>         >     >                         access.<br>
>         >     ><br>
>         >     >                         On Wed, Feb 14, 2024 at 6:12 PM James<br>
>         Simmons<br>
>         >     <[10]<br>
>         >     >                         [12][14]<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a>> wrote:<br>
>         >     ><br>
>         >     >                             Many years ago I wrote Activities<br>
>         for Sugar<br>
>         >     and the<br>
>         >     >                             maintenance of those Activities has<br>
>         been<br>
>         >     taken over<br>
>         >     >                             by others. One such Activity is:<br>
>         >     ><br>
>         >     >                             [11][13][15]<a href="https://github.com/" rel="noreferrer" target="_blank">https://github.com/</a><br>
>         sugarlabs/<br>
>         >     getiabooks<br>
>         >     ><br>
>         >     >                             I'm preparing one of my used<br>
>         computers to<br>
>         >     give to a<br>
>         >     >                             bright eight year old boy and I<br>
>         wanted to<br>
>         >     give him<br>
>         >     >                             a working Sugar environment in<br>
>         addition to<br>
>         >     other<br>
>         >     >                             cool Linux stuff. Get IA Books<br>
>         stopped<br>
>         >     working<br>
>         >     >                             because the Internet Archive<br>
>         changed their<br>
>         >     advanced<br>
>         >     >                             search and also the formats that<br>
>         they<br>
>         >     generate for<br>
>         >     >                             their titles, but I've got it<br>
>         mostly working<br>
>         >     again<br>
>         >     >                             and I'd like to create a branch and<br>
>         a pull<br>
>         >     request<br>
>         >     >                             for this and other Activities I<br>
>         created which<br>
>         >     need<br>
>         >     >                             to be upgraded to Python 3. The Get<br>
>         Books<br>
>         >     Activity<br>
>         >     >                             needs to be upgraded also and I can<br>
>         do the<br>
>         >     work on<br>
>         >     >                             that one as well. They share a<br>
>         certain amount<br>
>         >     of<br>
>         >     >                             code.<br>
>         >     ><br>
>         >     >                             It appears that I am not allowed to<br>
>         create<br>
>         >     branches<br>
>         >     >                             and push changes to them. My id in<br>
>         GitHub is<br>
>         >     >                             jdsimmons and I'm shown as a past<br>
>         contributor<br>
>         >     to<br>
>         >     >                             this Activity. CAn I be given this<br>
>         access?<br>
>         >     ><br>
>         >     >                             Thanks,<br>
>         >     ><br>
>         >     >                             James Simmons<br>
>         >     ><br>
>         >     > References:<br>
>         >     ><br>
>         >     > [1] mailto:[14][16]<a href="mailto:members@sugarlabs.org" target="_blank">members@sugarlabs.org</a><br>
>         >     > [2] mailto:[15][17]<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
>         >     > [3] mailto:[16][18]<a href="mailto:members@sugarlabs.org" target="_blank">members@sugarlabs.org</a><br>
>         >     > [4] mailto:[17][19]<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
>         >     > [5] [18][20]<a href="https://github.com/sugarlabs/getiabooks.git" rel="noreferrer" target="_blank">https://github.com/sugarlabs/getiabooks.git</a><br>
>         >     > [6] [19][21]<a href="https://github.com/sugarlabs/getiabooks.git" rel="noreferrer" target="_blank">https://github.com/sugarlabs/getiabooks.git</a><br>
>         >     > [7] mailto:[20][22]<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
>         >     > [8] mailto:[21][23]<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
>         >     > [9] mailto:[22][24]<a href="mailto:members@sugarlabs.org" target="_blank">members@sugarlabs.org</a><br>
>         >     > [10] mailto:[23][25]<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
>         >     > [11] [24][26]<a href="https://github.com/sugarlabs/getiabooks" rel="noreferrer" target="_blank">https://github.com/sugarlabs/getiabooks</a><br>
>         ><br>
>         > References:<br>
>         ><br>
>         > [1] mailto:[27]<a href="mailto:quozl@laptop.org" target="_blank">quozl@laptop.org</a><br>
>         > [2] [28]<a href="http://lists.sugarlabs.org/listinfo/sugar-devel" rel="noreferrer" target="_blank">http://lists.sugarlabs.org/listinfo/sugar-devel</a><br>
>         > [3] mailto:[29]<a href="mailto:members@sugarlabs.org" target="_blank">members@sugarlabs.org</a><br>
>         > [4] mailto:[30]<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
>         > [5] mailto:[31]<a href="mailto:members@sugarlabs.org" target="_blank">members@sugarlabs.org</a><br>
>         > [6] mailto:[32]<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
>         > [7] [33]<a href="https://github.com/" rel="noreferrer" target="_blank">https://github.com/</a><br>
>         > [8] [34]<a href="https://github.com/sugarlabs/" rel="noreferrer" target="_blank">https://github.com/sugarlabs/</a><br>
>         > [9] mailto:[35]<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
>         > [10] mailto:[36]<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
>         > [11] mailto:[37]<a href="mailto:members@sugarlabs.org" target="_blank">members@sugarlabs.org</a><br>
>         > [12] mailto:[38]<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
>         > [13] [39]<a href="https://github.com/sugarlabs/getiabooks" rel="noreferrer" target="_blank">https://github.com/sugarlabs/getiabooks</a><br>
>         > [14] mailto:[40]<a href="mailto:members@sugarlabs.org" target="_blank">members@sugarlabs.org</a><br>
>         > [15] mailto:[41]<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
>         > [16] mailto:[42]<a href="mailto:members@sugarlabs.org" target="_blank">members@sugarlabs.org</a><br>
>         > [17] mailto:[43]<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
>         > [18] [44]<a href="https://github.com/sugarlabs/getiabooks.git" rel="noreferrer" target="_blank">https://github.com/sugarlabs/getiabooks.git</a><br>
>         > [19] [45]<a href="https://github.com/sugarlabs/getiabooks.git" rel="noreferrer" target="_blank">https://github.com/sugarlabs/getiabooks.git</a><br>
>         > [20] mailto:[46]<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
>         > [21] mailto:[47]<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
>         > [22] mailto:[48]<a href="mailto:members@sugarlabs.org" target="_blank">members@sugarlabs.org</a><br>
>         > [23] mailto:[49]<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
>         > [24] [50]<a href="https://github.com/sugarlabs/getiabooks" rel="noreferrer" target="_blank">https://github.com/sugarlabs/getiabooks</a><br>
> <br>
> References:<br>
> <br>
> [1] mailto:<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
> [2] mailto:<a href="mailto:quozl@laptop.org" target="_blank">quozl@laptop.org</a><br>
> [3] mailto:<a href="mailto:quozl@laptop.org" target="_blank">quozl@laptop.org</a><br>
> [4] <a href="http://lists.sugarlabs.org/listinfo/sugar-devel" rel="noreferrer" target="_blank">http://lists.sugarlabs.org/listinfo/sugar-devel</a><br>
> [5] mailto:<a href="mailto:members@sugarlabs.org" target="_blank">members@sugarlabs.org</a><br>
> [6] mailto:<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
> [7] mailto:<a href="mailto:members@sugarlabs.org" target="_blank">members@sugarlabs.org</a><br>
> [8] mailto:<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
> [9] <a href="https://github.com/" rel="noreferrer" target="_blank">https://github.com/</a><br>
> [10] <a href="https://github.com/" rel="noreferrer" target="_blank">https://github.com/</a><br>
> [11] mailto:<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
> [12] mailto:<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
> [13] mailto:<a href="mailto:members@sugarlabs.org" target="_blank">members@sugarlabs.org</a><br>
> [14] mailto:<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
> [15] <a href="https://github.com/sugarlabs/" rel="noreferrer" target="_blank">https://github.com/sugarlabs/</a><br>
> [16] mailto:<a href="mailto:members@sugarlabs.org" target="_blank">members@sugarlabs.org</a><br>
> [17] mailto:<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
> [18] mailto:<a href="mailto:members@sugarlabs.org" target="_blank">members@sugarlabs.org</a><br>
> [19] mailto:<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
> [20] <a href="https://github.com/sugarlabs/getiabooks.git" rel="noreferrer" target="_blank">https://github.com/sugarlabs/getiabooks.git</a><br>
> [21] <a href="https://github.com/sugarlabs/getiabooks.git" rel="noreferrer" target="_blank">https://github.com/sugarlabs/getiabooks.git</a><br>
> [22] mailto:<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
> [23] mailto:<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
> [24] mailto:<a href="mailto:members@sugarlabs.org" target="_blank">members@sugarlabs.org</a><br>
> [25] mailto:<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
> [26] <a href="https://github.com/sugarlabs/getiabooks" rel="noreferrer" target="_blank">https://github.com/sugarlabs/getiabooks</a><br>
> [27] mailto:<a href="mailto:quozl@laptop.org" target="_blank">quozl@laptop.org</a><br>
> [28] <a href="http://lists.sugarlabs.org/listinfo/sugar-devel" rel="noreferrer" target="_blank">http://lists.sugarlabs.org/listinfo/sugar-devel</a><br>
> [29] mailto:<a href="mailto:members@sugarlabs.org" target="_blank">members@sugarlabs.org</a><br>
> [30] mailto:<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
> [31] mailto:<a href="mailto:members@sugarlabs.org" target="_blank">members@sugarlabs.org</a><br>
> [32] mailto:<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
> [33] <a href="https://github.com/" rel="noreferrer" target="_blank">https://github.com/</a><br>
> [34] <a href="https://github.com/sugarlabs/" rel="noreferrer" target="_blank">https://github.com/sugarlabs/</a><br>
> [35] mailto:<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
> [36] mailto:<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
> [37] mailto:<a href="mailto:members@sugarlabs.org" target="_blank">members@sugarlabs.org</a><br>
> [38] mailto:<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
> [39] <a href="https://github.com/sugarlabs/getiabooks" rel="noreferrer" target="_blank">https://github.com/sugarlabs/getiabooks</a><br>
> [40] mailto:<a href="mailto:members@sugarlabs.org" target="_blank">members@sugarlabs.org</a><br>
> [41] mailto:<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
> [42] mailto:<a href="mailto:members@sugarlabs.org" target="_blank">members@sugarlabs.org</a><br>
> [43] mailto:<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
> [44] <a href="https://github.com/sugarlabs/getiabooks.git" rel="noreferrer" target="_blank">https://github.com/sugarlabs/getiabooks.git</a><br>
> [45] <a href="https://github.com/sugarlabs/getiabooks.git" rel="noreferrer" target="_blank">https://github.com/sugarlabs/getiabooks.git</a><br>
> [46] mailto:<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
> [47] mailto:<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
> [48] mailto:<a href="mailto:members@sugarlabs.org" target="_blank">members@sugarlabs.org</a><br>
> [49] mailto:<a href="mailto:nicestep@gmail.com" target="_blank">nicestep@gmail.com</a><br>
> [50] <a href="https://github.com/sugarlabs/getiabooks" rel="noreferrer" target="_blank">https://github.com/sugarlabs/getiabooks</a><br>
</blockquote></div>