<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Hi Denis<div class=""><br class=""></div><div class=""><br class=""></div><div class="">Wow this is fantastic work! Thank you so much for all the effort you have put into this. Considering how critical good documentation is for building a vibrant collection of plugins and applications for QGIS, a big<br class=""><div> +1 from me too if the PSC can make more funding available for this.</div><div><br class=""></div><div>One small feature request: Could you inject the class diagrams generated by doxygen into the py docs? The image urls seem to be predictable e.g.</div><div><br class=""></div><div><a href="https://qgis.org/api/classQgsVectorLayer__inherit__graph.png" class="">https://qgis.org/api/classQgsVectorLayer__inherit__graph.png</a></div><div><br class=""></div><div>and so you could just substitute the class name in the above string each time and insert the image at the top of the page. I find these diagrams really helpful in understanding the context of a given class.</div><div><br class=""></div><div>Regards</div><div><br class=""></div><div>Tim</div><div><br class=""><blockquote type="cite" class=""><div class="">On 12 Apr 2018, at 17:20, Denis Rouzaud <<a href="mailto:denis.rouzaud@gmail.com" class="">denis.rouzaud@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class="">Dear PSC,</div><div class=""><br class=""></div><div class="">Finally, I have finalized phase 2 of PyQGIS API docs project.</div><div class="">It was again a tedious job with again unexpected issues.</div><div class=""><br class=""></div><div class="">Here is what has been done:</div><div class=""><br class=""></div><div class="">1) Automatic building of QGIS docker images in Travis</div><div class="">These are used to later build the PyQGIS doc in another Travis job in QGISPythonAPIDocumentation repo.</div><div class=""><br class=""></div><div class="">2) Multi-version support</div><div class="">To enable support several API versions on a custom website (not readthedocs, but we use readthedocs theme), it was required to fork the theme since support of multiple version was rejected in main repo [0]. The fork is here [1].</div><div class=""><br class=""></div><div class="">3) Support for signal signatures</div><div class="">Support for signal signatures in SIP was missing [2] and I provided a patch [3]. This patch is in the upstream SIP library (maintained by Phil Thomson) and jumping into this code is really not an easy task.</div><div class=""><br class=""></div><div class="">4) Table of contents and grouping</div><div class="">In previous version, table of content was full of inherited class methods which were not bringing useful info (all methods from Qt parent classes).</div><div class="">Now, these are removed. </div><div class="">Moreover, there is a fine tuning in grouping and signals have their own dedicated category.</div><div class="">These is made possible by using a custom version of autoautosummary [4,5]</div><div class=""><br class=""></div><div class="">5) Online building of the Python API Docs</div><div class="">Everything has been setup in Travis to automatically build the docs using QGIS docker image (see pt 1).</div><div class="">Sadly, I was not able to set the dev version of SIP (upcoming 4.19.9) in the main docker. That means missing the nice signatures for signals. So, this is on hold (it's pushing to a temp folder) until new SIP is released (probably along new Qt version in may).</div><div class="">Hence last published version of the docs has been built on my computer, and server API is missing.</div><div class="">The logic is ass follows:</div><div class="">- master docs follows QGIS master branch and is built once a day</div><div class="">- release versions docs are built using tags on the main repo and hence will strictly correspond to the last point release of each branch</div><div class=""><br class=""></div><div class="">Original allocated time has again been largely overrun (mainly due to SIP modifications and trying to bring them in the build chain).</div><div class="">Since I considered signal for signatures was a first priority feature (although not mentionned before Gary's mail [6]), some were again left apart:</div><div class="">- Adapt sipify to move /Out/ parameters from parameters list to returns group</div><div class="">- Sipify doc</div><div class=""><br class=""></div><div class="">I think that the documentation is now in a much more accomplished state.</div><div class=""><br class=""></div><div class="">As far as I see it, here are the main remaining issues:</div><div class=""><br class=""></div><div class="">I1) as pointed by Richard [7], we need to fix redirections properly</div><div class=""><br class=""></div><div class="">I2) also mentionned [7], the categorization of classes originally thought by Tim can be improved by creating categories on our own (instead of automatically by class names). Maybe take it down to 10-20 sucategories for each module (core, gui, analysis, server).</div><div class=""><br class=""></div><div class="">I3) list of parameters still showing output only parameters, and the /Out/ arguments are not mentionned as output. This is a sipify enhancement.</div><div class=""><br class=""></div><div class="">I4) Finalizing the auto build toolchain (integrate coming SIP version in dependency docker image, automatic triggering of API docs build from main QGIS travis jobs).</div><div class=""><br class=""></div><div class="">I think someone from the PSC holding the info of the provider can easily handle I1.</div><div class=""><br class=""></div><div class="">I would propose <a href="http://QGIS.org" class="">QGIS.org</a> to sponsor a phase 3 for the remaining issues with the following estimate:</div><div class="">I2) 8h</div><div class="">I3) 16h</div><div class="">i4)  24h</div><div class=""><br class=""></div><div class="">At the usual rate for <a href="http://QGIS.org" class="">QGIS.org</a> sponsored project, the proposal is of 6 days.</div><div class=""><br class=""></div><div class="">Would you like to have this as grant proposal or shall we proceed similarly to the 2 previous phases?</div><div class=""><br class=""></div><div class="">I'd like to thanks again <a href="http://QGIS.org" class="">QGIS.org</a> for sponsoring this. It is worth mentioning though that a lot of time has been freely invested there, on behalf of Opengis, roughly doubling the time.</div><div class=""><br class=""></div><div class="">And last, but definitely not least, here are the docs!!!!</div><div class=""><a href="http://python.qgis.org/master" class="">http://python.qgis.org/master</a></div><div class=""><br class=""></div><div class="">Best regards,</div><div class="">Denis</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">[0] <a href="https://github.com/rtfd/sphinx_rtd_theme/pull/574" class="">https://github.com/rtfd/sphinx_rtd_theme/pull/574</a></div><div class="">[1] <a href="https://github.com/3nids/sphinx_rtd_theme.git" class="">https://github.com/3nids/sphinx_rtd_theme.git</a></div><div class="">[2] <a href="https://www.riverbankcomputing.com/pipermail/pyqt/2018-February/040036.html" class="">https://www.riverbankcomputing.com/pipermail/pyqt/2018-February/040036.html</a></div><div class="">[3] <a href="https://www.riverbankcomputing.com/hg/sip/rev/34a94ca0260d" class="">https://www.riverbankcomputing.com/hg/sip/rev/34a94ca0260d</a></div><div class="">[4] <a href="https://github.com/qgis/QGISPythonAPIDocumentation/blob/master/autoautosummary.py" class="">https://github.com/qgis/QGISPythonAPIDocumentation/blob/master/autoautosummary.py</a></div><div class="">[5] <a href="https://stackoverflow.com/a/30783465/1548052" class="">https://stackoverflow.com/a/30783465/1548052</a></div><div class="">[6] <a href="https://lists.osgeo.org/pipermail/qgis-developer/2018-February/052148.html" class="">https://lists.osgeo.org/pipermail/qgis-developer/2018-February/052148.html</a></div><div class="">[7] <a href="https://lists.osgeo.org/pipermail/qgis-developer/2018-April/052976.html" class="">https://lists.osgeo.org/pipermail/qgis-developer/2018-April/052976.html</a></div><div class=""><br class=""></div></div>
_______________________________________________<br class="">Qgis-psc mailing list<br class=""><a href="mailto:Qgis-psc@lists.osgeo.org" class="">Qgis-psc@lists.osgeo.org</a><br class="">https://lists.osgeo.org/mailman/listinfo/qgis-psc</div></blockquote></div><br class=""><div class="">
<div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-position: normal; font-variant-caps: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; font-weight: normal; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; line-height: normal; text-align: center;" class=""><span>—</span></div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-position: normal; font-variant-caps: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; line-height: normal; text-align: center;" class=""><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: center; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: initial; font-variant-ligatures: normal; font-variant-position: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; margin: 0px; line-height: normal; -webkit-text-stroke-color: rgb(0, 0, 0); min-height: 14px;" class=""><br class=""></div><br class="Apple-interchange-newline" style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: center; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"><span style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: center; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"><span><span><span><span><span><span><span><span><span><img apple-inline="yes" id="32930E17-B8A5-46DE-AEF0-7A13033FAAE9" src="cid:1A5DF6DE-E302-4C28-BFBD-29663CBF1351" class=""></span><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: center; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: initial; font-variant-ligatures: normal; font-variant-position: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; margin: 0px; line-height: normal; -webkit-text-stroke-color: rgb(0, 0, 0); min-height: 14px;" class=""><br class="Apple-interchange-newline"><br class="Apple-interchange-newline"><br class=""></div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: center; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: initial; font-variant-ligatures: normal; font-variant-position: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; margin: 0px; line-height: normal; -webkit-text-stroke-color: rgb(0, 0, 0); min-height: 14px;" class=""><br class=""></div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: center; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: initial; font-variant-ligatures: normal; font-variant-position: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; margin: 0px; line-height: normal; -webkit-text-stroke-color: rgb(0, 0, 0);" class=""><b class="">Tim Sutton</b></div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: center; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: initial; font-variant-ligatures: normal; font-variant-position: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; margin: 0px; line-height: normal; -webkit-text-stroke-color: rgb(0, 0, 0); min-height: 14px;" class=""><br class=""></div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: center; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: initial; font-variant-ligatures: normal; font-variant-position: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; margin: 0px; line-height: normal; -webkit-text-stroke-color: rgb(0, 0, 0);" class=""><b class="">Co-founder:</b><span class="Apple-converted-space"> </span>Kartoza</div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: center; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: initial; font-variant-ligatures: normal; font-variant-position: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; margin: 0px; line-height: normal; -webkit-text-stroke-color: rgb(0, 0, 0);" class=""><b class="">Project chair:</b><span style="font-weight: normal;" class=""><span class="Apple-converted-space"> </span><a href="http://QGIS.org" class="">QGIS.org</a></span></div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: center; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: initial; font-variant-ligatures: normal; font-variant-position: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; margin: 0px; line-height: normal; -webkit-text-stroke-color: rgb(0, 0, 0); min-height: 14px;" class=""><br class=""></div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: center; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: initial; font-variant-ligatures: normal; font-variant-position: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; margin: 0px; line-height: normal; -webkit-text-stroke-color: rgb(0, 0, 0);" class="">Visit <a href="http://kartoza.com/" class=""><span style="-webkit-text-stroke-color: rgb(71, 135, 255);" class="">http://kartoza.com</span></a> to find out about open source:</div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: center; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: initial; font-variant-ligatures: normal; font-variant-position: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; margin: 0px; line-height: normal; -webkit-text-stroke-color: rgb(0, 0, 0); min-height: 14px;" class=""><br class=""></div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: center; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: initial; font-variant-ligatures: normal; font-variant-position: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; margin: 0px; line-height: normal; -webkit-text-stroke-color: rgb(0, 0, 0);" class="">Desktop GIS programming services</div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: center; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: initial; font-variant-ligatures: normal; font-variant-position: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; margin: 0px; line-height: normal; -webkit-text-stroke-color: rgb(0, 0, 0);" class="">Geospatial web development</div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: center; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: initial; font-variant-ligatures: normal; font-variant-position: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; margin: 0px; line-height: normal; -webkit-text-stroke-color: rgb(0, 0, 0);" class="">GIS Training</div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: center; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: initial; font-variant-ligatures: normal; font-variant-position: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; margin: 0px; line-height: normal; -webkit-text-stroke-color: rgb(0, 0, 0);" class="">Consulting Services</div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: center; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: initial; font-variant-ligatures: normal; font-variant-position: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; margin: 0px; line-height: normal; -webkit-text-stroke-color: rgb(0, 0, 0); min-height: 14px;" class=""><br class=""></div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: center; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: initial; font-variant-ligatures: normal; font-variant-position: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; margin: 0px; line-height: normal; -webkit-text-stroke-color: rgb(0, 0, 0);" class=""><b class="">Skype</b>: timlinux </div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: center; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: initial; font-variant-ligatures: normal; font-variant-position: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; margin: 0px; line-height: normal; -webkit-text-stroke-color: rgb(0, 0, 0);" class=""><b class="">IRC:</b><span class="Apple-converted-space"> </span>timlinux on #qgis at <a href="http://freenode.net" class="">freenode.net</a></div>
</span></span></span></span></span></span></span></span></span></div>
</div>
<br class=""></div></body></html>