[00:00:04] It's sandboxed to hell and back [00:00:23] You can't actually use like half of the standard library [00:01:17] Userscript idea: display outputed Wikitext as Wikitext [00:01:25] Will get to it perhaps [00:03:33] And is there a way to find a language name (translated, if possible), by the language code? [00:04:07] I mean you can create a function [00:04:27] You'd have to create a table that reverses the thingy [00:04:44] I guess I can write a very long code implementation, although it kind of sucks. [00:05:10] The table data can be generated with my query service [00:09:52] Z860? (re @amire80: And is there a way to find a language name (translated, if possible), by the language code?) [00:10:39] Ah, that actually seems good, thanks [00:11:08] Ahh yeah that one (re @wikilinksbot: Z860 – Language code to language) [00:12:00] Do we have a module to run a function call [00:12:13] If not I'll give one a go [00:12:56] It will only do strings as inputs and strings or references as output [00:13:23] From Lua? (re @Feeglgeef: Do we have a module to run a function call) [00:13:29] Yes (re @amire80: From Lua?) [00:13:41] We can call the API, no? [00:16:49] No comment :) [00:17:06] What does that mean? (re @amire80: No comment :)) [00:19:47] That means that I really don't have an answer [00:19:52] But I suspect that it's not possible [00:19:57] But I might be wrong [00:20:45] But sometimes Wikimedians do very weird things and use the sites in ways in which no one intended them to be used [00:24:33] Any idea why are its tests disconnected? (re @Al: Z860?) [00:24:59] Requires a function maintainer [00:25:09] Which we don't have yet [00:25:13] Besides staff [00:25:43] It’s a built-in function. What Feeglgeef says. (re @amire80: Any idea why are its tests disconnected?) [02:10:34] Another question about https://www.wikifunctions.org/view/en/Z860 : If I use the "Try this function" at the top and type "de" for example, I get: [02:10:37] Result [02:10:39] type [02:10:40] Natural language [02:10:42] language code [02:10:43] "de" [02:10:45] Details [02:12:14] Which is kind of correct, but also kind of useless, because it would be more useful to see a link to https://www.wikifunctions.org/view/en/Z1430 [02:12:35] Does anyone understand what I'm saying? Does anyone agree? [02:13:01] No (re @amire80: Does anyone understand what I'm saying? Does anyone agree?) [02:13:10] For the second question [02:14:13] A Z60 inherently makes more sense than a Z9 [02:14:51] Yeah, but in practice I don't see that it's Z60. [02:15:15] You said it showed a Z60 (re @amire80: Yeah, but in practice I don't see that it's Z60.) [02:15:28] Z60 isn't an identity type for now, so no [02:15:49] Like, I understand that it's the contents (but probably incomplete) of a natural language object, but it's shown in a useless way [02:16:12] Your crusade should be to make it an identity type, then (re @amire80: Like, I understand that it's the contents (but probably incomplete) of a natural language object, but it's shown in a useless wa...) [02:16:23] In practice, it looks like the same language code is returned [02:16:37] What is that and where can I read about it? (re @Feeglgeef: Your crusade should be to make it an identity type, then) [02:17:00] That's because a Z60K1 is a Z6 instead of a Z9 (re @amire80: In practice, it looks like the same language code is returned) [02:17:30] I think there's something about it in [[WF:Function model]] (re @amire80: What is that and where can I read about it?) [02:19:05] To point you to the correct parts [02:19:42] https://tools-static.wmflabs.org/bridgebot/abecb39c/file_67621.jpg [02:21:37] https://tools-static.wmflabs.org/bridgebot/1249fc06/file_67622.jpg [02:22:06] The function model document is probably the best and most useful documentation we have [02:23:12] Technically, "Imagine if Ninja got a Low Taper Fade" is a valid language code [02:23:43] Well no, that would return void. [02:23:57] You tried? (re @amire80: Well no, that would return void.) [02:24:25] Yes. [02:25:37] Maybe it does [02:32:23] Why does Wikifunctions need stewards to give permissions? Why doesn't it have its own bureaucrats? [02:32:41] We need 6 permanent administrators (re @amire80: Why does Wikifunctions need stewards to give permissions? Why doesn't it have its own bureaucrats?) [02:32:51] We technically have 3, actually have 0 [02:33:28] I would hypothetically be the first one (hint hint vote vote) [02:33:42] Oh boy, who on Earth came up with this pointless formality [02:33:59] A 2023 RFC IIRC (re @amire80: Oh boy, who on Earth came up with this pointless formality) [02:35:18] Do you have a link? (re @Feeglgeef: A 2023 RFC IIRC) [02:39:08] [[meta:Requests for comment/Minimum voting requirements]] [02:41:52] Oh my goodness what a horrible thing. I suspect that this obscure thing needs an update. A project like Wikifunctions is definitely not what it was made for, and it's not so good for anything else either. (re @wikilinksbot: [[meta:Requests for comment/Minimum voting requirements]]) [02:42:25] Start another RFC? (re @amire80: Oh my goodness what a horrible thing. I suspect that this obscure thing needs an update. A project like Wikifunctions is definit...) [02:42:48] [[w:WP:SOFIXIT]] [02:43:39] Maybe, maybe. I didn't even know it's written down in any way. (re @Feeglgeef: Start another RFC?) [02:45:08] The current requirement for 'crat is 25 votes and 6 permanent administrators [02:45:42] Perhaps if we create enough socks we can have a bureaucrat /s [09:36:57] Hmm… Yes. That’s slightly odd. All it’s doing is embedding the language code in an object of type Z60: {"Z1K1": "Z60", "Z60K1": "de"}. This is also what you would get from a reference to Z1430, because it is that object’s Z2K2, but the function is not returning a reference. Invalid language codes return an error, so it’s not a completely useless function, but it won’t [09:36:57] [09:36:58] do what you want, sorry. (re @amire80: Does anyone understand what I'm saying? Does anyone agree?) [09:47:56] Maybe that’s why it was closed in 2013 as beyond hope of consensus? It is entirely unclear what relevance it has today. (re @amire80: Oh my goodness what a horrible thing. I suspect that this obscure thing needs an update. A project like Wikifunctions is definit...) [10:08:49] [[ⓜ️MVR]]: ''These guidelines do not alter or override any local policies or guidelines approved by active wikis. The guidelines are a statement of how stewards wish to exercise their discretion.'' [12:16:38] https://phabricator.wikimedia.org/T382844 (re @Al: Hmm… Yes. That’s slightly odd. All it’s doing is embedding the language code in an object of type Z60: {"Z1K1": "Z60", "Z60K1": ...) [12:35:33] Forwarded from DylanCollins_bot: I deposited $100 by myself and allowed Mr Richard Mendez trade for me and I got my first payout of $1,000  within 24 hrs I can now understand why there are so many recommendations about him and I'm also recommending his services to you reading this post .. contact him via the link below. Don't miss out !!. [12:35:33] @TRADER_MENDEZ [12:47:33] Can someone delete this spam? [13:04:26] So back to this... I was curious about what Z860 can do, but because it's a built-in, it can't have its own tests (or maybe it can? but I'm kind of afraid of breaking it). So as a workaround, I made a wrapper function that just calls it: Z21233 [13:04:27] I made two tests for it. In the first, "de" is supposed to return the language object for German, and it passes. In the other, I give it an invalid string, and expect it to return void. This test fails. The failure is actually kind of sensible, because deep in the "Error" object, there's Z541, which means "Language code not found". But how can I make it into a test [13:04:27] that passes? ( [13:04:28] re @Al: It’s a built-in function. What Feeglgeef says.) [14:10:21] Sadly, checking that we get the right error is not something we can do right now. I haven’t seen plans for the coming quarter so I have no idea when this sorry state of affairs will be rectified. (re @amire80: So back to this... I was curious about what Z860 can do, but because it's a built-in, it can't have its own tests (or maybe it c...) [14:29:13] Is there a reported task about it? (re @Al: Sadly, checking that we get the right error is not something we can do right now. I haven’t seen plans for the coming quarter so...) [14:41:10] I’m not sure there is. I’d expect it to be the parent of T351472. (re @amire80: Is there a reported task about it?) [14:44:25] Note: https://t.me/Wikifunctions/19070 (re @amire80: Is there a reported task about it?) [14:47:23] Also: https://t.me/Wikifunctions/13280 (re @amire80: Is there a reported task about it?) [17:51:39] WAT [17:51:59] Z12/Multilingual text allows multiple values in the same language. [17:52:47] That's not entirely nonsensical, but nevertheless surprising. [18:04:10] That’s a bug. Its original definition is: “A list of Z11/MonolingualStrings, up to one for each Z60/Natural language, used to label things for humans to read in multiple languages.” Unfortunately, Z112 fails for a valid Z12. That’s another bug. (re @amire80: That's not entirely nonsensical, but nevertheless surprising.) [18:41:01] I created one once (re @Al: I’m not sure there is. I’d expect it to be the parent of T351472.) [18:41:21] It's in the product backlog last time I checked [18:42:26] That's a Z32's job (re @amire80: Z12/Multilingual text allows multiple values in the same language.) [18:51:55] On this, eventually function maintainers should be able to alter core validators (re @Al: That’s a bug. Its original definition is: “A list of Z11/MonolingualStrings, up to one for each Z60/Natural language, used to la...) [18:56:11] *T381361?* (re @Feeglgeef: It's in the product backlog last time I checked) [19:09:50] Yes (re @Al: T381361?) [19:10:03] It has 3 things in it [19:10:14] It’s a thought. I can see the benefit of a controlled release process for more fundamental changes, especially if they are shared with the core software. (re @Feeglgeef: On this, eventually function maintainers should be able to alter core validators) [19:12:02] Yeah. It depends how we go about it. Some of the things, like Z801, just can't be implemented in WF programming languages. (re @Al: It’s a thought. I can see the benefit of a controlled release process for more fundamental changes, especially if they are share...) [19:13:25] Something else that would be nice is if we were able to have classes in the type conversion. This would let us do more things with it and not require our compromise solutions [19:18:12] Even if type conversion can be suppressed? Maybe Quote or a new Raw JSON wrapper? (re @Feeglgeef: Yeah. It depends how we go about it. Some of the things, like Z801, just can't be implemented in WF programming languages.) [19:19:15] Yeah, we should suppress type conversion < Z10000 (re @Al: Even if type conversion can be suppressed? Maybe Quote or a new Raw JSON wrapper?) [19:20:06] Then I think it could work. Evaluator order is an issue though. We'd also have to make the validator extra lazy for things like Z802 [19:23:45] I guess it already is, by omission. Or is that what you meant? (re @Feeglgeef: Yeah, we should suppress type conversion < Z10000) [19:24:27] I mean, technically, the orchestrator isn't ever type converting for builtins (re @Al: I guess it already is, by omission. Or is that what you meant?) [19:27:02] We could use some of that anyway, but it’s a bit of a punt segmenting the evaluation so you know what not to orchestrate. (re @Feeglgeef: Then I think it could work. Evaluator order is an issue though. We'd also have to make the orchestrator extra lazy for things li...) [19:27:23] That's because the orchestrator code for Z802 looks something like if(resolveBool(resolveCall(condition)): a1, a2 [19:27:57] At least IIRC [19:28:51] So it doesn't resolve the calls it doesn't have to, and if it did, it'd be much slower [19:29:36] So if we implemented an if in Python it would be so much slower [19:31:03] Yeah, but that’s its lazy evaluation… it still has to orchestrate the whole thing, I think. (re @Feeglgeef: So it doesn't resolve the calls it doesn't have to, and if it did, it'd be much slower) [19:31:25] What do you mean? (re @Al: Yeah, but that’s its lazy evaluation… it still has to orchestrate the whole thing, I think.) [19:31:40] It completely ignores the wrong side of an if [19:33:15] It ignores it in evaluation, yes. I don’t think it ignores it in orchestration, because it hasn’t evaluated the condition at that point. I could be wrong. [19:34:34] I'm not sure what you mean (re @Al: It ignores it in evaluation, yes. I don’t think it ignores it in orchestration, because it hasn’t evaluated the condition at tha...) [19:34:49] The orchestrator figures out Z7s [19:35:07] The Z7 on the wrong side of Z802 is wiped from memory [19:38:52] It can have tests, but special permissions are required to connect them. 'crats or stewards or staff is needed to grant that permission. Staff have decided that only they will grant the permission right now (re @amire80: So back to this... I was curious about what Z860 can do, but because it's a built-in, it can't have its own tests (or maybe it c...) [19:39:34] I'll decide [19:44:35] I think the first thing the orchestrator does is re-write the entire call with full expansion, before it evaluates anything. I suppose it uses cached results where possible, so maybe it’s not a complete re-write. But it’s only after orchestration is complete that the evaluator evaluates the condition and whichever branch is appropriate. If I’m right, this means we have [19:44:35] lazy [19:44:36] evaluation but not lazy orchestration. (re @Feeglgeef: The Z7 on the wrong side of Z802 is wiped from memory) [19:45:09] Full expansion i.e. only terminal values? I think so (re @Al: I think the first thing the orchestrator does is re-write the entire call with full expansion, before it evaluates anything. I s...) [19:45:55] Orchestration being complete means we have a Z22 ready to send back from the API (re @Al: I think the first thing the orchestrator does is re-write the entire call with full expansion, before it evaluates anything. I s...) [19:46:19] Orchestration literally means orchestrating the evaluator [19:47:39] Or orchestrating calls to builtins which is inside of the evaluator [19:47:40] Fr [19:49:37] It's kinda cool that everything on Wikifunctions is composed of strings exclusively (re @Feeglgeef: Full expansion i.e. only terminal values? I think so) [19:50:00] It would make more sense to have a list of bytes in my opinion, but whatever [19:50:51] Indeed, so lazy orchestration would initially orchestrate only the condition and then, according to its evaluation, proceed to orchestrate one branch or the other and then evaluate that. (re @Feeglgeef: Orchestration literally means orchestrating the evaluator) [19:51:05] Yes (re @Al: Indeed, so lazy orchestration would initially orchestrate only the condition and then, according to its evaluation, proceed to o...)