<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>