*** acozine1 has quit IRC | 00:04 | |
fungi | as has become typical of the summits, there's going to be an openstack foundation lounge where attendees who have random questions (really any kind you can imagine and a lot more you can't) and want to drop by can try to get answers... now that there's zuul and kata projects we're talking about trying to get some people from those communities to try and hang out in the lounge area when available... something to | 00:31 |
---|---|---|
fungi | keep in mind if any zuulies are interested in helping with that | 00:31 |
*** acozine1 has joined #zuul | 00:36 | |
openstackgerrit | Clark Boylan proposed openstack-infra/zuul master: Fix layout generation for trusted projects https://review.openstack.org/565624 | 00:54 |
*** acozine1 has quit IRC | 01:06 | |
*** swest has quit IRC | 01:06 | |
*** swest has joined #zuul | 01:22 | |
*** rlandy has quit IRC | 01:31 | |
*** spsurya has joined #zuul | 02:10 | |
openstackgerrit | Merged openstack-infra/zuul master: Fix setting a change queue in a template https://review.openstack.org/565581 | 04:20 |
*** swest has quit IRC | 04:24 | |
*** elyezer has quit IRC | 04:24 | |
*** elyezer has joined #zuul | 04:25 | |
tobiash | clarkb, corvus: question on 565624 | 04:33 |
clarkb | tobiash: that is a good question I will sleep on it | 04:38 |
*** swest has joined #zuul | 05:02 | |
*** bhavik1 has joined #zuul | 05:05 | |
*** swest has quit IRC | 05:06 | |
*** swest has joined #zuul | 05:21 | |
*** bhavik1 has quit IRC | 05:25 | |
SpamapS | fungi: that's good to know, I'll try and hang in that lounge. | 05:29 |
openstackgerrit | Felix Schmidt proposed openstack-infra/zuul master: Add start and end timestamp to task and play result in zuul_json callback https://review.openstack.org/563888 | 05:38 |
openstackgerrit | Merged openstack-infra/zuul master: Fix regex project templates https://review.openstack.org/565584 | 05:44 |
*** elyezer has quit IRC | 06:05 | |
*** elyezer has joined #zuul | 06:06 | |
*** sshnaidm|afk is now known as sshnaidm | 06:41 | |
*** bhavik1 has joined #zuul | 06:44 | |
*** bhavik1 has quit IRC | 06:50 | |
openstackgerrit | Tristan Cacqueray proposed openstack-infra/zuul master: mqtt: add basic reporter https://review.openstack.org/535543 | 07:20 |
*** gtema has joined #zuul | 07:44 | |
*** hashar has joined #zuul | 08:05 | |
*** ssbarnea_ has joined #zuul | 08:08 | |
*** xinliang has quit IRC | 08:42 | |
*** xinliang has joined #zuul | 08:42 | |
tobiash | wohoo, just noticed that I can use upstream nodepool without any patches now :) | 10:44 |
*** xinliang has quit IRC | 11:08 | |
tobiash | corvus, clarkb: any objection to +w 560700? | 11:20 |
*** ekan has joined #zuul | 12:05 | |
ekan | Hi, I have a small question. Following install/config procedures on https://docs.openstack.org/infra/zuul/admin/zuul-from-scratch.html, I thought that zuul-web would provide a web-interface on 9000 (default). However, visiting <server>:9000 gives me a "Empty reply from server" error. Visiting ex. <server>:9000/api or similar gives back a 404. Just | 12:15 |
ekan | wanted to jump in here to see if you guys have seen this before, or if it's something obvious that I'm missing... | 12:15 |
ekan | Logs doesn't give me much, so if nothing else some kind of pointer to how to enable debug for zuul-web maybe? | 12:15 |
ekan | Thanks a ton in advance | 12:15 |
*** rlandy has joined #zuul | 12:32 | |
rcarrillocruz | ekan: 9000 is the port to get webhooks from GH iirc | 12:49 |
rcarrillocruz | although... i think that may no longer the case after all the web refactor | 12:51 |
rcarrillocruz | mordred will know, he did all refactors of that code, there used to be to http endpoints | 12:52 |
rcarrillocruz | s/to/two | 12:52 |
pabelanger | yah, you'll need to POST for 9000, GET will fail | 13:08 |
pabelanger | actually, 1 minute | 13:09 |
pabelanger | I am wrong, only a sub path will require POST | 13:10 |
pabelanger | you should be able to do IP:9000/api/info | 13:10 |
*** dkranz has quit IRC | 13:11 | |
openstackgerrit | Paul Belanger proposed openstack-infra/zuul-jobs master: Update repo file for fedora-28 https://review.openstack.org/565758 | 13:26 |
openstackgerrit | Paul Belanger proposed openstack-infra/zuul-jobs master: Update repo file for fedora-28 https://review.openstack.org/565758 | 13:39 |
*** hashar is now known as hasharAway | 13:53 | |
clarkb | tobiash: ya I think we can fallback to pipeline layoit there. Lets see what corvus says | 14:10 |
mordred | ekan, rcarrillocruz: there should just be a web dashboard at server:9000/ and it should contain the tenant list | 14:15 |
openstackgerrit | Merged openstack-infra/zuul master: reporter: do not expect branch attribute in Tag object https://review.openstack.org/560700 | 14:16 |
openstackgerrit | Paul Belanger proposed openstack-infra/zuul-jobs master: Update repo file for fedora-28 https://review.openstack.org/565758 | 14:16 |
mordred | ekan, rcarrillocruz: you know - we might be missing some instrucitons about installing the javascript build tools - lemme read | 14:16 |
mordred | yup. that's missing - so the likely issue is that "sudo pip3 install ." worked, but since js build tools weren't there, it silently did not actually build the html/js | 14:17 |
corvus | clarkb, tobiash: i agree. | 14:22 |
*** dkranz has joined #zuul | 14:23 | |
clarkb | corvus: tobiash just rip out qll that logic and do else: layout = pipeline.layout? | 14:24 |
corvus | clarkb: yeah, i think so. | 14:25 |
*** openstackgerrit has quit IRC | 14:34 | |
*** openstackgerrit has joined #zuul | 14:35 | |
openstackgerrit | Clark Boylan proposed openstack-infra/zuul master: Fix layout generation for trusted projects https://review.openstack.org/565624 | 14:35 |
clarkb | corvus: tobiash ^ that should do it | 14:35 |
openstackgerrit | Paul Belanger proposed openstack-infra/zuul-jobs master: Update repo file for fedora-28 https://review.openstack.org/565758 | 14:39 |
dmsimard | pabelanger: TIL about version_compare | 14:46 |
pabelanger | all sorts of cool filters | 14:46 |
pabelanger | puppet has the same thing I believe | 14:47 |
mordred | neat | 14:50 |
*** acozine1 has joined #zuul | 15:17 | |
*** trishnag has joined #zuul | 15:20 | |
openstackgerrit | Paul Belanger proposed openstack-infra/zuul-jobs master: Update repo file for fedora-28 https://review.openstack.org/565758 | 15:20 |
*** acozine1 has quit IRC | 15:29 | |
*** acozine1 has joined #zuul | 15:29 | |
openstackgerrit | Paul Belanger proposed openstack-infra/zuul-jobs master: Update repo file for fedora-28 https://review.openstack.org/565758 | 15:30 |
openstackgerrit | Tobias Henkel proposed openstack-infra/zuul master: Fix race in test_bubblewrap_leak https://review.openstack.org/565813 | 15:50 |
tobiash | corvus, clarkb: I think that should fix http://logs.openstack.org/24/565624/2/gate/tox-py35/a3016ff/testr_results.html.gz ^ | 15:50 |
corvus | tobiash: lgtm, thx | 15:50 |
clarkb | tobiash: thanks. I'm at doctors office for the mroning so wasnt able to debug beyond not related to my change | 15:50 |
*** ssbarnea_ has quit IRC | 15:59 | |
*** ssbarnea_ has joined #zuul | 16:00 | |
*** gtema has quit IRC | 16:11 | |
openstackgerrit | Merged openstack-infra/zuul master: Fix layout generation for trusted projects https://review.openstack.org/565624 | 16:15 |
openstackgerrit | Merged openstack-infra/zuul master: Fix race in test_bubblewrap_leak https://review.openstack.org/565813 | 16:24 |
openstackgerrit | Paul Belanger proposed openstack-infra/zuul-jobs master: Update repo file for fedora-28 https://review.openstack.org/565758 | 16:28 |
*** sshnaidm is now known as sshnaidm|rover | 16:57 | |
*** myoung is now known as myoung|ruck | 16:59 | |
*** weshay|ruck is now known as weshay | 17:00 | |
*** openstackgerrit has quit IRC | 17:04 | |
pabelanger | could I get a review / +3 on ^ that fixes configure-mirror for fedora-28, while supporting fedora-27 still | 17:20 |
SpamapS | So.. | 17:31 |
SpamapS | when do we get Ansible 2.4+ in Zuul? | 17:31 |
SpamapS | Should I start working on a multi-ansible-version spec? | 17:31 |
pabelanger | SpamapS: Shrews suggested we go right to 2.5, I believe he has patches up | 17:32 |
corvus | SpamapS: i think there's some WIP patches to upgrade to 2.4 and then to 2.5. i'm not sure what the status or next steps are. we should ask Shrews and tobiash. i believe the thought is to go to 2.5 and then do multi-version after that -- just to keep things moving. | 17:33 |
corvus | SpamapS: a multi-version spec would be great -- we should start talking about the mechanics of that. | 17:33 |
Shrews | They're ready to go | 17:33 |
corvus | (i feel like we can probably move to 2.5 while we work that out) | 17:33 |
pabelanger | yan, so far is my testing 2.3 -> 2.5 ansible didn't break the world locally | 17:33 |
pabelanger | but we likey want all hands on deck to deal with edge cases fallout for jobs | 17:34 |
corvus | Shrews: so we're ready to send out a notice that version... 3.1.0? will use ansible 2.5, then merge them and release? | 17:34 |
SpamapS | Are we sure that all 2.3 playbooks will work on 2.5? | 17:34 |
pabelanger | no | 17:34 |
clarkb | SpamapS: no, and previous experience says likely they wont | 17:34 |
pabelanger | I'd expect some breakage | 17:34 |
pabelanger | but I haven't see anything major | 17:35 |
Shrews | corvus: yes, but I think the concern is the rollout | 17:35 |
corvus | i think the main concern would be zuul-jobs -- are there things in zuul-jobs that won't work with 2.5? | 17:35 |
Shrews | I think that's part of the rollout concern | 17:38 |
pabelanger | we might also need to discuss how long we're going to support ansible 2.3 in zuul-jobs once we move to 2.5. Not that I know of anything that won't work | 17:39 |
corvus | well, if we can't predict in advance whether anything will be broken in zuul-jobs, then our two choices are to schedule a time to just do it and apologize that we're breaking everyone, or wait for multi-version support. | 17:40 |
corvus | anyone have any other options? | 17:41 |
clarkb | run a single executor with newer ansible? | 17:41 |
clarkb | and then monitir it before full rollout maybe | 17:41 |
corvus | clarkb: so, have openstack-infra perform the testing? | 17:41 |
pabelanger | maybe setup 3pci with Shrews patches and run against devstack / tox-jobs to get coverage on zuul-jobs | 17:42 |
clarkb | corvus: ya | 17:42 |
clarkb | or ^ should give reasonable coverage too | 17:43 |
corvus | pabelanger: who's the third party in your suggestion? | 17:43 |
pabelanger | I have access to some hardware locally I could use | 17:44 |
corvus | pabelanger: how about instead, we make openstack-infra the (first) party, and run a zuul-dev with Shrews's patches? | 17:44 |
corvus | we can hook it up to openstack-infra's nodepool | 17:45 |
pabelanger | sure we can do that too | 17:45 |
*** electrofelix has quit IRC | 17:45 | |
corvus | that's probably not too much harder than clarkb's idea, and maybe a little more managable? | 17:46 |
corvus | so our options are now: (a) create a dev zuul in openstack-infra to help verify zuul-jobs under 2.5; then merge patches and release. (b) declare a flag day and folks can make local forks if they don't want to participate. (c) just stay on 2.3 until we have multi-version. | 17:47 |
corvus | SpamapS, Shrews, pabelanger, clarkb, tobiash: ^ what sounds palatable? :) | 17:47 |
pabelanger | order is okay for me | 17:50 |
Shrews | c seems fine as far as openstack is concerned. I know of no one pushing for a more recent version of ansible | 17:50 |
mordred | corvus: I like a and b the best | 17:50 |
corvus | Shrews: SpamapS and tobiash both want it I believe. | 17:50 |
pabelanger | I'm not sure how much time I have in the next 2 weeks to work on zuul-dev.o.o, I'm still preparing for opendevconf | 17:51 |
mordred | I agree with Shrews that c seems fine as far as openstack is concerned, but I worry that what we're shipping is still 2.3 | 17:51 |
mordred | I'd rather flag-day up to 2.5 and then say that we'll wait for multi-version to upgrade past that | 17:52 |
corvus | openstack is just one downstream user of zuul :) | 17:52 |
pabelanger | but likey can allocate time after summit to work on it and / or happy to review code if somebody else wants to work on it | 17:52 |
mordred | corvus: totes. just saying - the one downstream user, openstack, should be fine on 2.3 - but there are other concerns and reasons why upgrading might/should still be desirable | 17:53 |
Shrews | I was just giving the openstack perspective. I know others want it | 17:53 |
pabelanger | I want to say SF.io zuul is already using ansible 2.4, maybe we can see if there is any know issues on zuul-jobs too | 17:54 |
tobiash | I'm also on 2.4 because of not working windows modules in 2.3 (with py3) | 17:54 |
corvus | if someone can say "zuul-jobs generally works fine under 2.5" i think we can jump to the flag day. | 17:54 |
corvus | it doesn't have to be openstack-infra that validates that | 17:54 |
tobiash | but I'm only using little of zuul-jobs currently | 17:55 |
corvus | and it probably doesn't have to be perfect -- but knowing that, say, 'tox' works would be good to know. | 17:55 |
tobiash | I think we use 'tox' | 17:56 |
corvus | and maybe any fixes that we do have to make to zuul-jobs can have version checks, so we can continue to support 2.3 and allow folks to upgrade when ready? | 17:56 |
mordred | sounds reasonable | 17:57 |
pabelanger | +1 | 17:57 |
corvus | how about i send a msg to the ml asking (a) have you tested zuul-jobs with 2.4 or 2.5? (b) if folks would be okay with merging the 2.5 upgrade and releasing 3.1 on a specified date, soonish, with the idea that if we find that zuul-jobs needs any emergency fixes, we'll try our best to make them backwards compat. | 17:58 |
corvus | ? | 17:58 |
mordred | ++ | 17:59 |
clarkb | seems reasonable | 17:59 |
pabelanger | 3.1 ++ | 17:59 |
tobiash | sounds good | 17:59 |
pabelanger | could I get a final +3 https://review.openstack.org/565758/ | 18:06 |
pabelanger | thanks | 18:06 |
*** acozine1 has quit IRC | 18:27 | |
*** openstackgerrit has joined #zuul | 18:59 | |
openstackgerrit | Merged openstack-infra/zuul-jobs master: Update repo file for fedora-28 https://review.openstack.org/565758 | 18:59 |
*** spsurya has quit IRC | 19:09 | |
openstackgerrit | Paul Belanger proposed openstack-infra/zuul master: Add tox-py36 jobs https://review.openstack.org/565881 | 19:27 |
openstackgerrit | David Shrewsbury proposed openstack-infra/nodepool master: Add config read and node deletion notifications https://review.openstack.org/565882 | 19:29 |
openstackgerrit | David Shrewsbury proposed openstack-infra/nodepool master: WIP: Pre-register static nodes https://review.openstack.org/565883 | 19:29 |
Shrews | don't bother reviewing those ^^ | 19:29 |
Shrews | unless you just _want_ head pain | 19:30 |
openstackgerrit | Paul Belanger proposed openstack-infra/zuul-jobs master: Add tox-py36 job https://review.openstack.org/565884 | 19:33 |
openstackgerrit | Paul Belanger proposed openstack-infra/zuul master: Add tox-py36 jobs https://review.openstack.org/565881 | 19:34 |
*** acozine1 has joined #zuul | 19:35 | |
-openstackstatus- NOTICE: The Gerrit service at review.openstack.org will be offline starting at 20:00 (in roughly 25 minutes) for a server move and operating system upgrade: http://lists.openstack.org/pipermail/openstack-dev/2018-May/130118.html | 19:37 | |
openstackgerrit | Paul Belanger proposed openstack-infra/zuul master: Add tox-py36 jobs https://review.openstack.org/565881 | 19:48 |
openstackgerrit | Paul Belanger proposed openstack-infra/zuul master: Add tox-py36 jobs https://review.openstack.org/565881 | 19:49 |
-openstackstatus- NOTICE: The Gerrit service at review.openstack.org will be offline over the next 1-2 hours for a server move and operating system upgrade: http://lists.openstack.org/pipermail/openstack-dev/2018-May/130118.html | 20:07 | |
*** ChanServ changes topic to "The Gerrit service at review.openstack.org will be offline over the next 1-2 hours for a server move and operating system upgrade: http://lists.openstack.org/pipermail/openstack-dev/2018-May/130118.html" | 20:08 | |
*** dkranz has quit IRC | 20:23 | |
*** spsurya has joined #zuul | 20:27 | |
*** openstackgerrit has quit IRC | 20:27 | |
SpamapS | corvus: I'd like to accelerate multi-version if possible. But, I should probably finish my re2 stuff first. ;) | 21:00 |
SpamapS | corvus: so given that I'm not going to be able to *do* multi-version spec or implementation for many months, I like the flag day approach. | 21:00 |
SpamapS | Also worth noting that we're not debating raising the *minimum* ansible version | 21:00 |
SpamapS | so if we make a zuul-jobs gate that runs everything in 2.3 and 2.5, that would be pretty awesome. | 21:01 |
corvus | SpamapS: well, at the moment, Zuul works with exactly one ansible major version -- we don't have the facility for supporting the module overrides for more than one | 21:02 |
corvus | SpamapS: but hopefully we can keep zuul-jobs supporting older versions of zuul, therefore also older versions of ansible | 21:03 |
*** acozine1 has quit IRC | 21:03 | |
*** hasharAway has quit IRC | 21:09 | |
*** ssbarnea_ has quit IRC | 21:53 | |
clarkb | Probably the biggest question for me is should zuul have an upfront whitelist of versions that it creates envs for on start or should it just install any version specified by user as long as it can be found on pypi? | 22:11 |
clarkb | and then just install them on the fly and fail jobs if they specify an invalid ansible version | 22:11 |
SpamapS | corvus: right my thinking was that this gate would actually run ansible 2.3 and 2.5 as a simulation of what zuul really does. | 22:11 |
clarkb | (and can set a default version in the base job) | 22:12 |
SpamapS | Just basic stuff | 22:12 |
SpamapS | maybe even just syntax checks. | 22:12 |
SpamapS | clarkb: yeah that's the longer term solution | 22:12 |
SpamapS | I think if we can get somebody to work on that full time it won't take long to implement. | 22:12 |
SpamapS | But in the mean time, just trying to think of how we can aggressively move up to 2.5 without blowing up users of 2.3. | 22:13 |
*** ChanServ changes topic to "Discussion of the project gating system Zuul | Website: https://zuul-ci.org/ | Docs: https://zuul-ci.org/docs/ | Source: https://git.zuul-ci.org/ | Channel logs: http://eavesdrop.openstack.org/irclogs/%23zuul/ | Weekly updates: https://etherpad.openstack.org/p/zuul-update-email" | 22:13 | |
-openstackstatus- NOTICE: Gerrit maintenance has concluded successfully | 22:13 | |
clarkb | ya, I expect the most "fun" will be had dealing with the inevitable python env behavior we didn't expect upfront | 22:15 |
SpamapS | Another thought I've had is maybe something can be done to just have ansible versioned executors. | 22:17 |
clarkb | for example can venv create python2 venvs if we need python2 for ansible? | 22:17 |
clarkb | (I don't know but something we'll have to sort out if we use that approach) | 22:17 |
SpamapS | zuul:execute becomes "whatever you get" but then you can ask for a specific version and have a zuul:execute:ansible=2.3 and executors register the version they support. | 22:17 |
clarkb | SpamapS: one downside to that approach is job distribution becomes potentially really funny | 22:18 |
corvus | clarkb, SpamapS: i think we need to whitelist versions because each major version of ansible requires us to audit the modules we override | 22:18 |
clarkb | if job writers don't all update you'll have a really busy 2.3 executor and bored 2.5 executor | 22:18 |
clarkb | corvus: good point | 22:18 |
SpamapS | clarkb: that's assuming they all express 2.3. | 22:19 |
SpamapS | If the default updates from 2.3 to 2.5, most jobs just go forward with the default. The ones that fail, the authors need to pop down to lower version. | 22:19 |
SpamapS | Or fix their job | 22:19 |
corvus | i like the idea of executors supporting all the versions; i think if that's a feature of zuul, zuul should support it, not depend on the admin to implement it | 22:19 |
SpamapS | I'd like for all the versions to be supported too. | 22:20 |
SpamapS | And I do think venvs will be a relatively simple thing to have prepared at executor startup based on the whitelist. | 22:20 |
corvus | ++ | 22:20 |
SpamapS | So if the version of Zuul says "I can do Ansible 2.3, 2.4, and 2.5, then executors just make virtualenvs in a workspace using bubblewrap and then add that workspace into jobs, with unexpressed versions being whatever one is default. | 22:21 |
SpamapS | and I do think that won't be a mountain of work | 22:21 |
SpamapS | Just... I'm having trouble with my molehill of work thus far. ;) | 22:22 |
clarkb | I know the feeling | 22:22 |
clarkb | in fact that reminds me I promised fdegir I'd write some things I don't think I ever did | 22:22 |
clarkb | ugh | 22:22 |
clarkb | BUT tomorrow is a new day without doctor visits and gerrit upgrades :) | 22:22 |
*** rlandy has quit IRC | 22:24 | |
* SpamapS is currently writing zuul jobs to test legacy puppet deploys | 22:25 | |
SpamapS | SO MUCH FUN | 22:25 |
*** elyezer has quit IRC | 22:35 | |
*** elyezer has joined #zuul | 22:37 | |
*** openstackgerrit has joined #zuul | 22:54 | |
openstackgerrit | James E. Blair proposed openstack-infra/zuul-website master: Replace background image https://review.openstack.org/565908 | 22:54 |
openstackgerrit | James E. Blair proposed openstack-infra/zuul-website master: WIP: Add logo and move menu to top right https://review.openstack.org/565909 | 22:54 |
clarkb | corvus: ^ top right is weird with fullscreen browser and mega monitor | 23:00 |
clarkb | corvus: maybe align it right of the logo instead? | 23:00 |
clarkb | and then maybe the footer sections (get zuul, get involved) get added to the menu and docs gets added to footer too? | 23:01 |
corvus | clarkb: i'll expand the menus later; i just wanted to re-establish the structure first | 23:03 |
corvus | clarkb: can you screenshot what looks weird? | 23:03 |
clarkb | corvus: yup give me a few to finish this gerrit stuff first | 23:03 |
*** spsurya has quit IRC | 23:04 | |
corvus | clarkb: also, it doesn't quite look like the mockup yet -- it's too far to the right, and the underlines are too far away... maybe that's your objection? | 23:04 |
clarkb | corvus: ya its basically hidden in top right corner which is really far away on this montiro | 23:05 |
corvus | if so, i agree -- i'll tweak it a bit more later | 23:05 |
openstackgerrit | Paul Belanger proposed openstack-infra/zuul master: Update documentation URLs https://review.openstack.org/565910 | 23:06 |
*** andreaf has quit IRC | 23:09 | |
*** mnaser_ has joined #zuul | 23:09 | |
*** mhu` has joined #zuul | 23:15 | |
*** jlvillal_ has joined #zuul | 23:15 | |
*** robled- has joined #zuul | 23:16 | |
*** mnaser has quit IRC | 23:16 | |
*** mhu has quit IRC | 23:16 | |
*** jlvillal has quit IRC | 23:16 | |
*** robled has quit IRC | 23:16 | |
*** clarkb has quit IRC | 23:16 | |
*** robled- is now known as robled | 23:16 | |
*** robled has quit IRC | 23:16 | |
*** robled has joined #zuul | 23:16 | |
*** mnaser_ is now known as mnaser | 23:16 | |
*** jlvillal_ is now known as jlvillal | 23:19 | |
*** jlvillal is now known as Guest10014 | 23:19 | |
*** clarkb has joined #zuul | 23:24 | |
*** andreaf has joined #zuul | 23:25 | |
corvus | clarkb: we can give it padding on all the sizes, but also, because of the way it's set up to be responsive to screen sizes, we can also easily give it more padding on extra wide screens | 23:33 |
clarkb | corvus: ++ | 23:33 |
Generated by irclog2html.py 2.15.3 by Marius Gedminas - find it at mg.pov.lt!