{{{#!div class="box" [[Image(https://xpra.org/icons/statistics.png)]] = Source Code Statistics = Each revision usually brings a number of structural changes that can easily be captured with simple statistics: ||=Tag=||=Modules=||||||=Python Code=||||||=Cython Code=||||||=C Code=|| ||= =||= =||= Files =||= Lines =||= Unique =||= Files =||= Lines =||= Unique =||= Files =||= Lines =||= Unique =|| ||[/browser/xpra/tags/v0.0.7.x v0.0.7.x]|| 8|| 63|| 13536|| 9990|| 2|| 2147|| 1679|| 0|| 0|| 0|| ||[/browser/xpra/tags/v0.1.x v0.1.x]|| 8|| 68|| 13640|| 9974|| 2|| 2134|| 1670|| 0|| 0|| 0|| ||[/browser/xpra/tags/v0.2.x v0.2.x]|| 10|| 73|| 14602|| 10581|| 2|| 2386|| 1770|| 3|| 472|| 281|| ||[/browser/xpra/tags/v0.3.x v0.3.x]|| 10|| 74|| 15987|| 11684|| 2|| 2387|| 1771|| 2|| 483|| 288|| ||[/browser/xpra/tags/v0.4.x v0.4.x]|| 10|| 58|| 15052|| 11028|| 2|| 2513|| 1831|| 2|| 506|| 286|| ||[/browser/xpra/tags/v0.5.x v0.5.x]|| 10|| 64|| 15811|| 11642|| 6|| 3111|| 2203|| 2|| 711|| 427|| ||[/browser/xpra/tags/v0.6.x v0.6.x]|| 12|| 66|| 16279|| 11943|| 6|| 3086|| 2193|| 2|| 742|| 427|| ||[/browser/xpra/tags/v0.7.x v0.7.x]|| 13|| 72|| 18687|| 13577|| 6|| 3239|| 2342|| 2|| 752|| 431|| ||[/browser/xpra/tags/v0.8.x v0.8.x]|| 17|| 96|| 23168|| 16713|| 8|| 3740|| 2701|| 2|| 925|| 555|| ||[/browser/xpra/tags/v0.9.x v0.9.x]|| 17|| 109|| 26309|| 18773|| 8|| 3704|| 2707|| 2|| 915|| 566|| ||[/browser/xpra/tags/v0.10.x v0.10.x]|| 34|| 202|| 32640|| 22428|| 22|| 6551|| 4015|| 4|| 676|| 412|| ||[/browser/xpra/tags/v0.11.x v0.11.x]|| 40|| 231|| 40125|| 27247|| 25|| 9919|| 6350|| 4|| 97|| 55|| ||[/browser/xpra/tags/v0.12.x v0.12.x]|| 43|| 242|| 44592|| 30288|| 27|| 11013|| 7137|| 6|| 105|| 67|| ||[/browser/xpra/tags/v0.13.x v0.13.x]|| 44|| 244|| 46246|| 31751|| 30|| 11782|| 7721|| 6|| 165|| 103|| ||[/browser/xpra/tags/v0.14.x v0.14.x]|| 41|| 244|| 50014|| 34727|| 29|| 9874|| 6236|| 4|| 136|| 82|| ||[/browser/xpra/tags/v0.15.x v0.15.x]|| 43|| 251|| 55389|| 38520|| 33|| 16346|| 8650|| 4|| 144|| 85|| ||[/browser/xpra/tags/v0.16.x v0.16.x]|| 52|| 285|| 64184|| 44328|| 35|| 15613|| 9198|| 4|| 144|| 85|| ||[/browser/xpra/tags/v0.17.x v0.17.x]|| 59|| 311|| 71418|| 48789|| 40|| 19962|| 10298|| 4|| 144|| 85|| ||[/browser/xpra/tags/v1.0.x v1.0.x]|| 59|| 320|| 79609|| 54399|| 41|| 17204|| 11623|| 4|| 144|| 85|| You can find an older but much more pretty version of these figures as a graph here: [https://xpra.org/stats/source/ source stats] {{{#!comment Command lines used: * Cleanup: find . -name "*pycache*" -exec rm -fr {} \; for x in `ls -d v*`; do echo $x; pushd $x/src sudo python ./setup.py clean popd done * Modules: for x in `ls -d v*`; do echo $x; find $x/src/xpra -type d -exec ls {}/__init__.py \; | wc -l; done * Python Files: for x in `ls -d v*`; do echo $x; find $x/src/xpra -type f -name "*py" -print | wc -l; done * Python Lines: for x in `ls -d v*`; do echo $x; find $x/src/xpra -type f -name "*.py" -exec cat {} \; | wc -l; done * Python Unique Lines: for x in `ls -d v*`; do echo $x; find $x/src/xpra -type f -name "*.py" -exec cat {} \; | sort -u | wc -l; done * Cython files: do the sum of: for x in `ls -d v*`; do echo $x; find $x/src/xpra -type f -name "*.pyx" | wc -l; done for x in `ls -d v*`; do echo $x; find $x/src/xpra -type f -name "*.pxd" | wc -l; done * Cython lines: do the sum of: for x in `ls -d v*`; do echo $x; find $x/src/xpra -type f -name "*.pyx" -exec cat {} \; | wc -l; done for x in `ls -d v*`; do echo $x; find $x/src/xpra -type f -name "*.pxd" -exec cat {} \; | wc -l; done etc.. }}} }}}