[01:25:39] I made a thing. [01:25:50] You can read about it here: https://www.wikifunctions.org/wiki/User:Amire80/wikifunctionsanalytics [01:28:34] There are many kinds of edits that people can do on Wikifunctions: translating labels, creating tests, creating functions, creating and updating implementations, connecting and disconnecting implementation and tests, etc. However, it's practically impossible to see what kind of edits do people do because they all look the same in recent changes. So now... it's kind [01:28:34] of possible. [01:28:53] If you know how to run SQL on Quarry, you should be able to use it. [01:29:27] Over the last few weeks, I showed this thing to some people in this Telegram group, and received positive feedback, so I guess that it's time to show it to more people. [01:29:57] No one reviewed the Python and SQL code, and it's very, very possible that it has bugs. Bug reports, feature requests, and other comments are very welcome. [01:35:45] I've found a few bugs and oddities thanks to running this tool, and reported them, so I guess that it already contributed something :) [02:26:07] (I guess the failed test case is due to disconnected implementation.) (re @Winston_Sung: This would be a better approach, probably: [02:26:08] https://www.wikifunctions.org/wiki/Z33048 [02:26:10] https://www.wikifunctions.org/wiki/Z33037) [03:49:52] well, it's up to the WD community to decide what to include and not. [03:49:53] imagine a police officer using WD items and aliases to understand the dlang in an encrypted chat, do we want to cover all possible slang in the aliases despite their "taste" ie connotations? [03:49:55] maybe? (re @abartov: oh, I don't doubt its use as a pejorative (indeed, I have been aware it exists), and Lexeme should indeed document it, but the W...) [03:54:36] That just makes it more exciting to use 😁 (re @amire80: No one reviewed the Python and SQL code, and it's very, very possible that it has bugs. Bug reports, feature requests, and other...) [03:55:07] I think these should be deleted or improved https://quarry.wmcloud.org/query/103406 [03:58:03] This could easily be used to make useful database reports on-wiki, just like my dump analysis code did. [03:58:04] But the dumps are up to a month out of date so if this is up to date it's way more valuable! [03:58:05] nice work 🤩 (re @amire80: You can read about it here: https://www.wikifunctions.org/wiki/User:Amire80/wikifunctionsanalytics) [05:38:40] Sounds like it better fit as lexemes. (re @Npriskorn: well, it's up to the WD community to decide what to include and not. [05:38:41] imagine a police officer using WD items and aliases to unde...) [08:57:32] Exactly. In *lexeme* – a dictionary – we document every sense, including pejorative ones. [08:57:32] But in every *other* context, including Wikidata aliases, we must not allow offensive slurs to just live there among legitimate aliases. (re @Jan_ainali: Sounds like it better fit as lexemes.) [08:59:45] Perhaps they could be improved or added to [[Wikifunctions:Suggest a function]], if not already present, but I don’t think that a lack of tests and implementations is, by itself, grounds for deletion. (re @Npriskorn: I think these should be deleted or improved https://quarry.wmcloud.org/query/103406) [12:17:18] Yes, that's more or less what I made this for. I already proposed a few for deletion. You're welcome to go over more of them. (re @Npriskorn: I think these should be deleted or improved https://quarry.wmcloud.org/query/103406) [12:59:17] My thing is also based on a dump, because it's easy and fast and doesn't make anyone worry about performance. It can probably be adapted to being more up-to-date by reading periodically from the live site, and I'm thinking of doing it at some point. But now, I'm mostly interested in feedback about the current version. (re @Npriskorn: This could easily be used to make [12:59:17] useful datab [12:59:17] ase reports on-wiki, just like my dump analysis code enables (but it's broken beca...) [13:02:11] And I'm also trying to see if I can analyze something in the Abstract Wikipedia dump, but for now, there's very little to analyze there. [13:07:30] I'm comfortable with the monthly dump frequency for refreshing this kind of info. (re @amire80: My thing is also based on a dump, because it's easy and fast and doesn't make anyone worry about performance. It can probably be...) [13:14:35] There are some search queries like Functions with neither connected tests nor connected implementations (https://www.wikifunctions.org/w/index.php?fulltext=1&ns0=1&profile=advanced&search=%3A+%22Z8K3+Z20+Z8K4+Z14+Z8K5%22&title=Special%3ASearch) linked from [[Wikifunctions:Find#Help, I can’t find…]]. These are both live and performant, although limited by the absence of [13:14:35] joinin [13:14:35] g across objects. (re @amire80: My thing is also based on a dump, because it's easy and fast and doesn't make anyone worry about performance. It can probably be...) [13:59:28] FYI, I added in the description that UCoC applies here as well. Not that someone violated it, but I wanted to explicitly state that it applies here too. I trust that you will observe it. [14:01:36] My thing allows relatively easy finding of functions with no implementations or tests at all, even if they are not connected. They are stored differently. (re @Al: There are some search queries like Functions with neither connected tests nor connected implementations linked from [[Wikifuncti...) [14:18:44] I know… it’s just if someone wants up-to-date information (subject to the limitations). There’s also functions with unconnected test cases, (https://www.wikifunctions.org/w/index.php?title=Special:ListFunctionsByTests&max=1&min=1&status%5B0%5D=pending&wpFormIdentifier=testfilters&offset=&limit=335) for anyone who can understand it. (re @amire80: My thing allows relatively [14:18:44] e [14:18:46] asy finding of functions with no implementations or tests at all, even if they are not connected. Th...) [16:55:51] Hello. [16:55:52] For my exams, I need to stop working on [[abstract:Q15433043]] to have more time. I ask if the Page can be kept until I am back in July. [16:55:56] Thank you. [18:11:14] Hi y'all, [18:11:16] For https://www.wikifunctions.org/view/fr/Z11626 [18:11:17] Is there an elegant way in Python to keep the case (if lowercase then stay lowercase, if uppercase, then stay uppercase) ? [18:11:19] Or do I need to add the ifs (if k then g, if K then G, etc.), simple and efficient but a bit lengthy (doubling the size) [18:11:20] (I think I saw it in an other implementation but I don't remember how nor which one...) [18:12:52] I'm not exactly sure what you mean [18:13:33] Maybe make a variable for whether it's upper or lower case, force it to lower case, then convert it back to upper case if the variable is set? [18:13:43] look at the implementation and the new test I just added, right now it only works for lowercase (re @Feeglgeef: I'm not exactly sure what you mean) [18:14:15] Welcome! We now have as many members as days in a common Z20159! (re @Archies_04: ) [18:19:56] But it can be dangerous: what if the entire word is uppercase? (re @wmtelegram_bot: Maybe make a variable for whether it's upper or lower case, force it to lower case, then convert it back to upp...) [18:20:12] a bit convoluted (and now it will always work because of the letter "C'h"), for now I doubled the ifs (re @wmtelegram_bot: Maybe make a variable for whether it's upper or lower case, force it to lower case, then convert it back to upp...) [18:21:02] dvd_ccc27919: I hadn't thought about that. [18:21:16] ah yes, there is also this case, I think I'll stick with a lot of ifs (re @dvd_ccc27919: But it can be dangerous: what if the entire word is uppercase?) [18:22:36] anyway, the case "Gavr" mutates in "C'havr" (and not C'Havr) and "gavr" mutates in "c'havr" alone is enough to make it tricky and prefer a dumb solution [18:27:40] A different solution would be to enclose the mutation code inside a function (that handles all the uppercase/lowercase shenanigans), and call this function for each couple of unmutated-mutated word starts (re @NicolasVIGNERON: ah yes, there is also this case, I think I'll stick with a lot of ifs) [18:29:00] hmm, but isn't this already the fonction dealing with the mutation? (or am I missing something?) (re @dvd_ccc27919: A different solution would be to enclose the mutation code inside a function (that handles all the uppercase/lowercase shenaniga...) [18:30:07] but thanks for the comment, it makes me think that I could actually do a superfunction for all mutations (englobing the 4 existing functions) [18:31:29] and it shows that I definitely need to think of a better way to deal with this (it can appears in every words in a sentence in Breton so better to have an efficient way to mutate) [18:39:44] and maybe a simple dictionary would be enough : [18:39:44] soft: { "k": g", "t": "d", "p": "b", "gw": "w", "g": "c'h" etc. } [18:39:46] (but will it understand to apply "gw" before "g" ? 🤔) [18:40:40] I meant a function inside the Python implementation, not an entire Wikifunctions function (re @NicolasVIGNERON: hmm, but isn't this already the fonction dealing with the mutation? (or am I missing something?)) [18:41:07] ah I see, then it make sense (re @dvd_ccc27919: I meant a function inside the Python implementation, not an entire Wikifunctions function) [18:41:14] anyway, I'll stop for tonight but I'm very interrested to know what you all think [18:43:02] "Trugarez dit ma Zavide" (thank you my Davide) [18:43:02] (to show a weird example of how it works even for proper names :D) (re @dvd_ccc27919: I meant a function inside the Python implementation, not an entire Wikifunctions function) [18:53:45] 🤔 Would it be too painful to think of everything operating without mutation and only mutating the whole sentence/paragraph at the end? (re @NicolasVIGNERON: "Trugarez dit ma Zavide" (thank you my Davide) [18:53:46] (to show a weird example of how it works even for proper names :D)) [19:48:57] Can Q52558054 be limited to items that are P31 of something? i.e. make a constaint combined of Q52558054 and Q21503250 [21:31:25] Al would you take a look at the error here Z33128 I tried copying your item filter function to work for lexemes. Maybe we should have a single one that takes either item/property/lexeme instead so we dont have to maintain 3 exact same implementations? [21:31:40] Z26700 [21:39:52] Z32537 and Z28548 operate over lists of statements 🤷‍♂️ I thought we could just get the list by key and filter that. [21:45:19] i have no idea, I was working on a higher level function for definite article and needed the first combine-statement lexeme but found no function in the catalogue so I went on a DIY adventure and failed 😅 (re @Al: Z32537 and Z28548 operate over lists of statements 🤷‍♂️ I thought we could just get the list by key and filter that.) [21:54:24] Ah, well… it’s there now. It just needed to look for Z6005K5 rather than Z6001K5; that’s why it was ‘undefined’. (re @Npriskorn: i have no idea, I was working on a higher level function for definite article and needed the first combine-statement lexeme but ...) [22:03:48] Oh, and the test case provided only a reference, not a lexeme 😎 (re @Al: Ah, well… it’s there now. It just needed to look for Z6005K5 rather than Z6001K5; that’s why it was ‘undefined’.) [23:08:30] 1273