IRC logs of #tryton for Thursday, 2008-11-06

chat.freenode.net #tryton log beginning Thu Nov 6 00:00:02 CET 2008
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 1189:04745f7ebab4 trytond/trytond/res/ (request.py request.xml):00:01
CIA-60tryton: Add some more field in request history for issue50700:01
CIA-60tryton: Prevent the write on request history00:01
CIA-60tryton: ced roundup * #507/Request History: Field subject and field reference_count missing.: [resolved] Fix with changeset 04745f7ebab400:01
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 961:971dacca5639 tryton/tryton/gui/window/view_form/screen/screen.py: Prevent to create new readonly model00:03
CIA-60tryton: Bertrand Chenal <bch@b2ck.com> default * 1190:30586983384d trytond/README: More explicit wording00:10
CIA-60tryton: Bertrand Chenal <bch@b2ck.com> default * 1191:367761d46145 trytond/trytond/ir/translation.py: Don't try to clean translations comming from xml, fix issue508.00:10
CIA-60tryton: bch roundup * #508/Clean translations: permission error: [resolved] Fixed with changeset 367761d46145.00:11
CIA-60tryton: Bertrand Chenal <bch@b2ck.com> default * 962:40c36f8c17bf tryton/README: More explicit wording00:14
CIA-60tryton: matb roundup * #510/Translation: dialog export shows translated short description instead of module name: [new] please change (back) to show the real module name to avoid errors when exporting translations to disk.00:17
CIA-60tryton: ced roundup * #509/Opening a model in list view from the menu, show status: record 1 /n - Editing Record m...: [resolved] Fix with changeset 47afffd40ca800:19
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 963:c0c112b1abb7 tryton/tryton/gui/window/view_form/view/list.py: Call grab_focus after set_cursor00:19
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 964:47afffd40ca8 tryton/tryton/gui/window/view_form/screen/screen.py: Set cursor after display for issue50900:19
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 965:7fe026ca6af8 tryton/: merge00:19
CIA-60tryton: Bertrand Chenal <bch@b2ck.com> default * 323:252771475b53 stock/move.py: Use a more performant implementation for name_search00:20
CIA-60tryton: Bertrand Chenal <bch@b2ck.com> default * 324:73207be16bf7 stock/packing.py: Use a more standart way of using default on copy00:20
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 1192:aaba31398e2f trytond/trytond/ir/translation.py: Use only module name in export translation for issue51000:22
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 1193:d72bcc3301f1 trytond/trytond/ir/translation.py: merge00:22
CIA-60tryton: ced roundup * #510/Translation: dialog export shows translated short description instead of module name: [resolved] Fix with changeset aaba31398e2f00:22
CIA-60tryton: matb roundup * #495/Translation: some other losing of translation of some fields on reimport: [chatting] Following items now reappearing as untranslated, that were surely translated before (and are contained in old de_DE.csv): "Closed" "" ...00:45
yangooncedk: ping, translation done01:02
CIA-60tryton: matb roundup * #511/Translation: another set of translation updates: [new] for de_DE as usual on intuxication.org Please merge, thx01:04
-!- ikks(n=igor@190.144.69.234) has joined #tryton01:19
-!- ikks(n=igor@190.12.153.202) has joined #tryton03:50
-!- yangoon(n=mathiasb@p549F5002.dip.t-dialin.net) has joined #tryton05:20
-!- udono(n=uspallek@dynamic-unidsl-85-197-20-125.westend.de) has joined #tryton06:41
-!- GeE(n=gzuerche@host2.raptus.com) has joined #tryton07:50
-!- LordVan(n=lordvan@gentoo/developer/LordVan) has joined #tryton08:32
-!- LordVan(n=lordvan@gentoo/developer/LordVan) has joined #tryton09:31
-!- gadaga(n=gael@sednaco19320-gw.clients.easynet.fr) has joined #tryton09:34
-!- Gedd(n=ged@77.109.115.164.adsl.dyn.edpnet.net) has joined #tryton09:35
-!- cedk(n=ced@gentoo/developer/cedk) has joined #tryton09:53
CIA-60tryton: ced roundup * #495/Translation: some other losing of translation of some fields on reimport: [resolved] No, this is new string from the issue50709:58
CIA-60tryton: Mathias Behrle <mathiasb@behrle.dyndns.org> default * 1194:0f9544d10532 trytond/trytond/ir/__tryton__.py: added translation for de_DE, changed double quotes to single quotes10:13
CIA-60tryton: Mathias Behrle <mathiasb@behrle.dyndns.org> default * 1195:ddff1ea4b89a trytond/trytond/res/__tryton__.py: added translation for de_DE, changed double quotes to single quotes10:13
CIA-60tryton: Mathias Behrle <mathiasb@behrle.dyndns.org> default * 1196:48fd2fc17019 trytond/trytond/webdav/__tryton__.py: added translation for de_DE, changed double quotes to single quotes10:13
CIA-60tryton: Mathias Behrle <mathiasb@behrle.dyndns.org> default * 1197:b9a57d9369af trytond/trytond/workflow/__tryton__.py: added translation for de_DE, changed double quotes to single quotes10:13
CIA-60tryton: Mathias Behrle <mathiasb@behrle.dyndns.org> default * 1198:e45c0c74c499 trytond/trytond/ (ir/de_DE.csv res/de_DE.csv): updated translation for de_DE10:13
CIA-60tryton: Mathias Behrle <mathiasb@behrle.dyndns.org> default * 262:eac2a7d1f674 account/__tryton__.py: added translation for de_DE, changed double quotes to single quotes10:13
CIA-60tryton: Mathias Behrle <mathiasb@behrle.dyndns.org> default * 166:cd6a3002a7cb account_invoice/__tryton__.py: added translation for de_DE, changed double quotes to single quotes10:13
CIA-60tryton: Mathias Behrle <mathiasb@behrle.dyndns.org> default * 167:22c1f8ba55b2 account_invoice/de_DE.csv: updated translation for de_DE10:13
CIA-60tryton: Mathias Behrle <mathiasb@behrle.dyndns.org> default * 12:060bebeebbfa account_product/__tryton__.py: added translation for de_DE, changed double quotes to single quotes10:13
CIA-60tryton: Mathias Behrle <mathiasb@behrle.dyndns.org> default * 67:dc7699fdc92c account_statement/__tryton__.py: added translation for de_DE, changed double quotes to single quotes10:13
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 68:eed7f73cf592 account_statement/__tryton__.py: Improve description of module10:13
CIA-60tryton: Mathias Behrle <mathiasb@behrle.dyndns.org> default * 32:0c7d698bac18 analytic_account/__tryton__.py: added translation for de_DE, changed double quotes to single quotes10:13
CIA-60tryton: Mathias Behrle <mathiasb@behrle.dyndns.org> default * 21:176a8c755e25 analytic_invoice/__tryton__.py: added translation for de_DE, changed double quotes to single quotes10:13
CIA-60tryton: Mathias Behrle <mathiasb@behrle.dyndns.org> default * 20:35f54dd14045 analytic_purchase/__tryton__.py: added translation for de_DE, changed double quotes to single quotes10:13
CIA-60tryton: Mathias Behrle <mathiasb@behrle.dyndns.org> default * 10:9fcc81fddcca analytic_sale/__tryton__.py: added translation for de_DE, changed double quotes to single quotes10:13
CIA-60tryton: Mathias Behrle <mathiasb@behrle.dyndns.org> default * 84:1c09c52901da company/__tryton__.py: added translation for de_DE, changed double quotes to single quotes10:14
CIA-60tryton: Mathias Behrle <mathiasb@behrle.dyndns.org> default * 10:9ecf2842283f country/__tryton__.py: added translation for de_DE, changed double quotes to single quotes10:14
CIA-60tryton: Mathias Behrle <mathiasb@behrle.dyndns.org> default * 34:fff46ddc3b32 currency/__tryton__.py: added translation for de_DE, changed double quotes to single quotes10:14
CIA-60tryton: Mathias Behrle <mathiasb@behrle.dyndns.org> default * 20:a37b091fa99c google_maps/__tryton__.py: added translation for de_DE, changed double quotes to single quotes10:14
CIA-60tryton: Mathias Behrle <mathiasb@behrle.dyndns.org> default * 180:9d9fecc5c939 party/__tryton__.py: added translation for de_DE, changed double quotes to single quotes10:14
CIA-60tryton: Mathias Behrle <mathiasb@behrle.dyndns.org> default * 181:f92d97d200d4 party/de_DE.csv: updated translation for de_DE10:14
CIA-60tryton: Mathias Behrle <mathiasb@behrle.dyndns.org> default * 101:921b263d4618 product/__tryton__.py: added translation for de_DE, changed double quotes to single quotes10:14
CIA-60tryton: Mathias Behrle <mathiasb@behrle.dyndns.org> default * 24:7f803346096e project/__tryton__.py: added translation for de_DE, changed double quotes to single quotes10:14
CIA-60tryton: Mathias Behrle <mathiasb@behrle.dyndns.org> default * 16:c308839382c4 project_revenue/__tryton__.py: added translation for de_DE, changed double quotes to single quotes10:14
CIA-60tryton: Mathias Behrle <mathiasb@behrle.dyndns.org> default * 131:7691ba845182 purchase/__tryton__.py: added translation for de_DE, changed double quotes to single quotes10:14
CIA-60tryton: Mathias Behrle <mathiasb@behrle.dyndns.org> default * 38:ea7969533c7b sale/__tryton__.py: added translation for de_DE, changed double quotes to single quotes10:14
CIA-60tryton: Mathias Behrle <mathiasb@behrle.dyndns.org> default * 325:87996b27550a stock/__tryton__.py: added translation for de_DE, changed double quotes to single quotes10:14
CIA-60tryton: Mathias Behrle <mathiasb@behrle.dyndns.org> default * 326:5a47bc35d48a stock/de_DE.csv: updated translation for de_DE10:14
CIA-60tryton: Mathias Behrle <mathiasb@behrle.dyndns.org> default * 116:f0464a2475b0 stock_supply/__tryton__.py: added translation for de_DE, changed double quotes to single quotes10:14
CIA-60tryton: Mathias Behrle <mathiasb@behrle.dyndns.org> default * 117:ee9534b3e8de stock_supply/de_DE.csv: updated translation for de_DE10:14
CIA-60tryton: Mathias Behrle <mathiasb@behrle.dyndns.org> default * 52:8cc83aa56462 timesheet/__tryton__.py: added translation for de_DE, changed double quotes to single quotes10:15
CIA-60tryton: ced roundup * #511/Translation: another set of translation updates: [resolved] Done10:15
udonocedk, yangoon: my first draft of the client documentation is ready in sphinx.10:23
udonocedk, yangoon But there are some things we need to discuss: nomenclature and client menu order...10:25
udono... but I dont have a good idea...10:43
cedkudono: what do you call nomenclature ?10:44
cedkand the menu order is set by the client10:45
udonoNomenclature is like a glossary of used terms and their description. Without Nomenclature its very hard to write technical documentation and even to translate them...10:53
udonocedk, about the menu order I fail with a good idea... so this topic is away10:54
cedkudono: sphinx create index10:54
udonocedk, not the sphinx menu :-) The client menu...10:55
udonocedk, I think I pack my things together today and send it to you.10:55
udonocedk, Sphinx works great.10:56
-!- bechamel(n=user@user-85-201-14-207.tvcablenet.be) has joined #tryton11:09
-!- ikks(n=igor@190.12.153.202) has joined #tryton11:28
udonocedk, did we use property widget any longer? Because you mentioned something about this in the past...13:34
cedkudono: there is still property fields13:37
cedkudono: but there is nothing about property in the client13:38
udonocedk, ok13:38
CIA-60tryton: Bertrand Chenal <bch@b2ck.com> default * 327:cb9b7d42c5bb stock/inventory.py: Fix arg name15:22
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 1199:baef2d62ebd8 trytond/trytond/res/group.xml: Fill the tree view of group15:51
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 1200:a32f8f281080 trytond/trytond/ (ir/rule.py osv/fields.py osv/orm.py): Add context to domain_get and use user context for root15:51
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 1201:0552b8de3130 trytond/trytond/osv/orm.py: Fix exception type when reading un authorized record15:51
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 1202:d67077244b70 trytond/trytond/res/user.py: Add ondelete CASCADE on both side of user group m2m15:51
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 1203:95a91a41fd8d trytond/trytond/res/group.xml: Fix typo group name15:51
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 1204:32f9b5e86d94 trytond/ (MANIFEST.in TODO): Add TODO15:51
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 1205:e041bfaccdb7 trytond/TODO: Add TODO on button15:51
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 263:a641dcb1cefc account/account.xml: Fix typo in group name15:51
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 168:cc3a53979070 account_invoice/invoice.xml: Add missing currency digits in view15:51
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 33:51ac3d92b763 analytic_account/analytic_account.xml: Remove unused group_analytic15:51
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 34:e5e2d4603421 analytic_account/line.xml: Add access right on lines15:52
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 35:ea1a32d4446b analytic_account/analytic_account.xml: Fix typo in group name15:52
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 85:5aea66fb0a8f company/cron.py: Fix sql query15:52
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 35:baee52f236be currency/currency.xml: Fix typo in group name15:52
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 102:381220f1f7b8 product/product.xml: Fix typo in group name15:52
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 132:8ae938f1f3cf purchase/purchase.xml: Set readonly on button and fix access rights15:52
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 133:e107f63122f4 purchase/purchase.py: Use root user to create invoices and stock moves15:52
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 134:5edf5f2fc570 purchase/ (MANIFEST.in TODO): Add TODO15:52
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 39:b30c6ea74edd sale/sale.xml: Set default search widget on one line15:52
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 40:add97db46ff8 sale/sale.xml: Set readonly on button and fix access right for only group sale15:52
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 41:416b613b50f4 sale/sale.py: Use root user to create invoices and packings15:52
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 42:8184385e613c sale/ (MANIFEST.in TODO): Add TODO15:52
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 328:25a9ea94975d stock/packing.xml: Set readonly on cancel button15:52
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 330:b94c0a6ab840 stock/: merge15:52
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 329:d110bb64e1d5 stock/product.py: Add contest to domain_get call15:52
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 118:2e8425c63abf stock_supply/purchase_request.py: Use root user to create purchase15:52
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 119:fad31a45bf93 stock_supply/purchase_request.xml: Add group_purchase_request on wizard to create purchase15:52
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 120:be5bc1eee680 stock_supply/purchase_request.xml: Don't allow anybody to delete purchase request15:53
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 121:8207d47c2f60 stock_supply/purchase_request.xml: Set group creation on top15:53
-!- ikks(n=igor@190.144.69.234) has joined #tryton16:05
-!- gael_(n=gael@sednaco19320-gw.clients.easynet.fr) has joined #tryton16:16
CIA-60tryton: cedric.krier@b2ck.com * r296 /wiki/Release_1_0_0.wiki: Edited wiki page through web user interface.17:22
cedkhttp://bazaar.launchpad.net/%7Eopenerp/openobject-addons/trunk/revision/183917:30
cedkthis is code stabilization :-)17:30
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 264:534c563f6d61 account/move.py: Reset reference, post_date, state and fix copy os lines when copying move17:33
-!- panthera(n=daniel@unable-to-package.org) has joined #tryton18:02
yangoonhi panthera18:03
pantheraaloha :)18:03
yangoonnice to see you;)18:03
yangoonif you want check old logs of this channel: http://www.tryton.org/~irclog/18:04
pantheranice ;)18:04
yangoonpanthera: you took already a look at repository?18:05
pantherai've just checked it out.18:06
yangoonpanthera: great, let us know your experiences18:06
pantherado you guys care about the names, meaning.. should the binary packages be called18:07
-!- ikks(n=igor@190.144.69.234) has joined #tryton18:07
pantheratryton and trytond, or is something more descriptive as tryton-client and tryton-server also acceptable (i'd prefere that)?18:07
cedkpanthera: we use trytond for the server and tryton for the client18:07
yangoonpanthera: it was just renamed to those names:D18:08
cedkas it is python module we are not allow to use "-" in the name18:08
pantherai think there is a missunderstanding;18:09
pantherai'm speaking about the name of the .deb package the users are going to install.18:09
pantherameans.. should they type 'apt-get install tryton' in order to install tryton,18:09
yangoonpanthera: there is no decision yet, how they are called18:09
pantheraor would be (which is from the debian point of view more 'beautiful') acceptable to name it18:09
pantheratryton-client.18:10
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 182:c9badd94a742 party/setup.py: Add extras_require18:10
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 183:d9d8eb19fa62 party/ (INSTALL MANIFEST.in README): Add README and INSTALL18:10
cedkpanthera: I don't know, but the client will be start with: tryton18:11
cedkand the server with: trytond18:11
pantherathat doesn't matter18:11
yangoonpanthera: I think, your proposition for name of the debian package  is ok. There are way of many packages named this way.18:11
pantherai'm only speaking about the debian binary package names; not about it's content.18:11
cedkgenerally when I install a software named "foo", I try to start "foo"18:11
yangoonpanthera: how would you name the module packages?18:12
yangooncedk: in debian if you install dante-server, you start afterwards danted18:12
pantherayangoon: tryton-module-foo or tryton-foo for the binary packages.18:12
cedkyangoon: I'm not a debian user, so if it is the rule, it is ok18:13
pantheracedk: normally, you don't start the binary itself; but call the initscript.18:13
pantheracedk: initscripts are named as the binary package (without -server if it's called foo-server)18:13
cedkpanthera: so I would  prefere to name the server trytond-server18:14
cedkas in the documentation, we make the difference between tryton and trytond18:14
yangooncedk: if you compare again to dante, they are named dante-server and dante-client18:15
panthera(or openssh-{client,server} and many more examples; it's not policy unfortunately, but quite consistent)18:15
cedkso ok if it is the rule18:15
yangoonit is more the name of the project, that is used18:15
ikkspanthera, I'm a Debian user, and tryton-client and tryton-server are just perfect :)18:16
yangoonhi ikks18:16
ikkshi yangoon18:16
CIA-60tryton: Bertrand Chenal <bch@b2ck.com> default * 36:b1053cb3769d analytic_account/ (__tryton__.py fr_FR.csv): Added french translation18:17
CIA-60tryton: Bertrand Chenal <bch@b2ck.com> default * 37:51f3718d67bf analytic_account/__tryton__.py: merge18:17
cedkikks: do you think you will be able to translate the __tryton__.py before the release date?18:17
ikkscedk, this weekend I'll be hands on it.18:18
cedkikks: ok great18:19
yangoonpanthera: and for modules I think  tryton-modules-foo will be perfect18:20
pantheraok :)18:20
yangoonpanthera: modules composition is rather "atomic"18:21
yangoonpanthera: because the concept of inheritance is widely used18:21
yangoonpanthera: so a lot of dependecies to handle18:21
pantherai've no idea about hg (i'm a git user); what is the command to output the 'revision' of the repository?18:21
cedkthe name of the modules package will be trytond_party18:22
cedkit is just fo info18:22
cedkpanthera: hg clone url18:22
pantheranot checkout, i mean.. the 'version number of the last commit'.18:22
bechamelpanthera: hg heads18:22
pantheraah, changeset is the term i was looking for..18:23
pantherachangeset:   965:7fe026ca6af818:23
yangoonpanthera: can those dependencies (in setup.py) be extracted automatically for builduing dependencies of debian packages?18:24
pantherais the 965 already unique, or is the hash also needed?18:24
yangoonpanthera: what about that chnageset?18:24
pantherayangoon: i want version numbers like 0~${date}+${hash}18:25
yangoonah, now  I see18:25
pantherawhereas hash is the unique revision id of the checkout it was made of18:25
yangoonlast revision in mercurial is hg tip18:25
cedkpanthera: number is normally unique18:25
cedkpanthera: but hash is more secure18:25
cedkyangoon: you need to run setup.py to have the dependency because their are generated based on __tryton__.py18:27
CIA-60tryton: C?dric Krier <ced@b2ck.com> default * 184:f16f3785c12c party/INSTALL: Fix typo18:31
cedkand for the module category, everybody aggree with the remove ?18:35
yangooncedk: no objection to delete category18:37
cedkand there will be later the classifier of pypi also18:37
cedkso ok, I start the remove18:38
yangoonpanthera: there is one python package needed for the server: relatorio, which is not yet in debian. Probably this has to be packaged, too?18:40
pantherayangoon: jup18:41
pantherayangoon: i guess it is this one: http://relatorio.openhex.org/18:41
cedkpanthera: yes18:41
cedkpanthera: there is release on pypi18:42
cedkpanthera: and trytond works with any release published18:42
yangoonpanthera: ok, same for optional dependencies PyWebDAV and openoffice.interact18:43
yangoonpanthera: dependencies are listed in http://code.google.com/p/tryton/wiki/InstallationMercurial18:43
cedkor better in the setup.py18:44
yangoonbut in setup.py you have no http://relatorio.openhex.org/ ;)18:44
yangoonor am I worng?18:44
cedkyangoon: relatorio >= 0.2.018:45
yangooncedk: yes, I know, but he asked for http://relatorio.openhex.org/18:45
cedkhttp://hg.openhex.org/hgwebdir.cgi/relatorio/file/3a19cb44ebdf/setup.py18:48
yangoonpanthera: if you didn't already see: there is a page for preliminary install on debian: http://code.google.com/p/tryton/wiki/InstallationOnDebian18:54
yangoonpanthera: just for those running a development environment18:54
pantherayangoon: yeah, thanks.19:03
pantheragoing to dinner now.. will finish afterwards.19:03
yangoonpanthera: bye, cu19:04
cedkyangoon: genshi is a dependency from relatorio not trytond19:04
yangooncedk: ok19:05
CIA-60tryton: mathias.behrle@gmx.de * r297 /wiki/InstallationOnDebian.wiki: added genshi19:20
yangoonafk19:35
-!- oversize(n=manuel@dslb-084-059-187-106.pools.arcor-ip.net) has joined #tryton21:11
-!- ikks(n=igor@190.144.69.234) has joined #tryton22:04
-!- CIA-58(n=CIA@208.69.182.149) has joined #tryton22:56
-!- oversize_(n=manuel@dslb-084-059-184-065.pools.arcor-ip.net) has joined #tryton23:47

Generated by irclog2html.py 2.11.0 by Marius Gedminas - find it at mg.pov.lt!