Page MenuHomePhabricator

fixing_redirects.py uses lower case page title in certain usecases
Open, MediumPublic

Description

When the linktext has a lowercase first character, the fixing_redirects.py script wrongly applies a first_lower to the page title. See a test run:

Wiki text:

[[Evgeni Plushenko]]
[[Evgeni Plushenko|test]]
[[Evgeni Plushenko|Jevgenij Pljusjtsjenko]]
[[Evgeni Plushenko|Jevgenij Pljusjtsjenkovitsj]]
[[Evgeni Plushenko|jevgenij Pljusjtsjenko]]
[[Evgeni Plushenko|jevgenij Pljusjtsjenkovitsj]]
[[Evgeni Plushenko]]:Jau
[[Evgeni Plushenko]]:hau
[[Evgeni Plushenko|:breakit]]
[[superkombinasjon]]
[[Superkombinasjon]]
[[superkombinasjon|kombinasjon]]
[[Superkombinasjon]]test
[[superkombinasjon|kombinasjon]]stest

Suggested edits from fixing_redirects.py:

@@ -1,14 +1,14 @@
- [[Evgeni Plushenko]]
+ [[Jevgenij Pljusjtsjenko|Evgeni Plushenko]]
- [[Evgeni Plushenko|test]]
+ [[jevgenij Pljusjtsjenko|test]]
- [[Evgeni Plushenko|Jevgenij Pljusjtsjenko]]
+ [[Jevgenij Pljusjtsjenko]]
- [[Evgeni Plushenko|Jevgenij Pljusjtsjenkovitsj]]
+ [[Jevgenij Pljusjtsjenko]]vitsj
- [[Evgeni Plushenko|jevgenij Pljusjtsjenko]]
+ [[jevgenij Pljusjtsjenko]]
- [[Evgeni Plushenko|jevgenij Pljusjtsjenkovitsj]]
- [[Evgeni Plushenko]]:Jau
- [[Evgeni Plushenko]]:hau
+ [[jevgenij Pljusjtsjenko]]vitsj
+ [[Jevgenij Pljusjtsjenko|Evgeni Plushenko]]:Jau
+ [[Jevgenij Pljusjtsjenko|Evgeni Plushenko]]:hau
- [[Evgeni Plushenko|:breakit]]
+ [[jevgenij Pljusjtsjenko|breakit]]
- [[superkombinasjon]]
- [[Superkombinasjon]]
+ [[alpin kombinasjon#Superkombinasjon|superkombinasjon]]
+ [[Alpin kombinasjon#Superkombinasjon|Superkombinasjon]]
- [[superkombinasjon|kombinasjon]]
+ [[alpin kombinasjon#Superkombinasjon|kombinasjon]]
- [[Superkombinasjon]]test
+ [[Alpin kombinasjon#Superkombinasjon|Superkombinasjontest]]
- [[superkombinasjon|kombinasjon]]stest
+ [[alpin kombinasjon#Superkombinasjon|kombinasjonstest]]

Event Timeline

Stigmj claimed this task.
Stigmj raised the priority of this task from to Needs Triage.
Stigmj updated the task description. (Show Details)
Stigmj added a project: Pywikibot-redirect.py.
Stigmj subscribed.

Change 264694 had a related patch set uploaded (by Stigmj):
case-error for certain cases in fixing_redirects.py

https://gerrit.wikimedia.org/r/264694

Stigmj set Security to None.

@Stigmj, 8a7c42f5 by @Xqt recently reverted this script, removing a large improvement by @XZise.

Could you retest with the version before the revert

i.e.

$ git checkout 8a7c42f5~1
...
$ git show
commit e56b4be99577e75019ac7b048635212ca0e61002
Merge: 69fe59e 97e9ac1
Author: jenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Date:   Sat Nov 28 14:01:18 2015 +0000

    Merge "flake8-docstrings 0.2.2-0.2.4 fail"

$ python pwb.py fixing_redirects.py ....

Here it is, and it also fails at the first lower case for some as well as not taking into account sections:

$ git show
commit e56b4be99577e75019ac7b048635212ca0e61002
Merge: 69fe59e 97e9ac1
Author: jenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Date:   Sat Nov 28 14:01:18 2015 +0000

    Merge "flake8-docstrings 0.2.2-0.2.4 fail"

$ python pwb.py fixing_redirects.py -simulate -page:"Bruker:Stigmj/Sandkasse"
Retrieving 1 pages from wikipedia:no.


>>> Bruker:Stigmj/Sandkasse <<<
@@ -1,14 +1,14 @@
- [[Evgeni Plushenko]]
+ [[Jevgenij Pljusjtsjenko|Evgeni Plushenko]]
- [[Evgeni Plushenko|test]]
+ [[Jevgenij Pljusjtsjenko|test]]
- [[Evgeni Plushenko|Jevgenij Pljusjtsjenko]]
+ [[Jevgenij Pljusjtsjenko]]
- [[Evgeni Plushenko|Jevgenij Pljusjtsjenkovitsj]]
+ [[Jevgenij Pljusjtsjenko]]vitsj
- [[Evgeni Plushenko|jevgenij Pljusjtsjenko]]
+ [[jevgenij Pljusjtsjenko]]
- [[Evgeni Plushenko|jevgenij Pljusjtsjenkovitsj]]
- [[Evgeni Plushenko]]:Jau
- [[Evgeni Plushenko]]:hau
+ [[jevgenij Pljusjtsjenko]]vitsj
+ [[Jevgenij Pljusjtsjenko|Evgeni Plushenko]]:Jau
+ [[Jevgenij Pljusjtsjenko|Evgeni Plushenko]]:hau
- [[Evgeni Plushenko|:breakit]]
+ [[Jevgenij Pljusjtsjenko|:breakit]]
- [[superkombinasjon]]
- [[Superkombinasjon]]
+ [[Alpin kombinasjon|superkombinasjon]]
+ [[Alpin kombinasjon|Superkombinasjon]]
- [[superkombinasjon|kombinasjon]]
+ [[Alpin kombinasjon|kombinasjon]]
- [[Superkombinasjon]]test
+ [[Alpin kombinasjon|Superkombinasjontest]]
- [[superkombinasjon|kombinasjon]]stest
+ [[Alpin kombinasjon|kombinasjonstest]]

Edit summary: Robot: Retter omdirigeringer
Do you want to accept these changes? ([y]es, [N]o, [a]ll, [q]uit): q

User quit FixingRedirectBot bot run...

0 pages read
0 pages written
Execution time: 2 seconds
Script terminated by exception:

ERROR: QuitKeyboardInterrupt: 

Why do you assume that this is a wrong behavior?

I will admit, after thinking a bit more, I'll concede it's not necessarily wrong behaviour, but the code doesn't cover all cases anyway. These may be more of a "cosmetic" bug character:

Running with master:

$ git checkout master
Already on 'master'
Your branch is up-to-date with 'origin/master'.
$ python pwb.py fixing_redirects.py -simulate -page:"Bruker:Stigmj/Sandkasse"
Retrieving 1 pages from wikipedia:no.

>>> Bruker:Stigmj/Sandkasse <<<
WARNING: Source section #Se_også and target section [[no:Alpin kombinasjon#Superkombinasjon]] found. Skipping.
WARNING: Source section #Se_også and target section [[no:Alpin kombinasjon#Superkombinasjon]] found. Skipping.
WARNING: Source section #Se_også and target section [[no:Alpin kombinasjon#Superkombinasjon]] found. Skipping.
WARNING: Source section #Se_også and target section [[no:Alpin kombinasjon#Superkombinasjon]] found. Skipping.
@@ -1,14 +1,14 @@
- * [[Evgeni Plushenko]]
+ * [[Jevgenij Pljusjtsjenko|Evgeni Plushenko]]
- * [[Evgeni Plushenko|test]]
+ * [[jevgenij Pljusjtsjenko|test]]
- * [[Evgeni Plushenko|Jevgenij Pljusjtsjenko]]
+ * [[Jevgenij Pljusjtsjenko]]
- * [[Evgeni Plushenko|Jevgenij Pljusjtsjenkovitsj]]
+ * [[Jevgenij Pljusjtsjenko]]vitsj
- * [[Evgeni Plushenko|jevgenij Pljusjtsjenko]]
+ * [[jevgenij Pljusjtsjenko]]
- * [[Evgeni Plushenko|jevgenij Pljusjtsjenkovitsj]]
+ * [[jevgenij Pljusjtsjenko]]vitsj
- * [[Evgeni Plushenko]]:Jau
- * [[Evgeni Plushenko]]:hau
+ * [[Jevgenij Pljusjtsjenko|Evgeni Plushenko]]:Jau
+ * [[Jevgenij Pljusjtsjenko|Evgeni Plushenko]]:hau
- * [[Evgeni Plushenko|:breakit]]
+ * [[jevgenij Pljusjtsjenko|breakit]]
- * [[superkombinasjon]]
- * [[Superkombinasjon]]
+ * [[alpin kombinasjon#Superkombinasjon|superkombinasjon]]
+ * [[Alpin kombinasjon#Superkombinasjon|Superkombinasjon]]
- * [[superkombinasjon|kombinasjon]]
+ * [[alpin kombinasjon#Superkombinasjon|kombinasjon]]
- * [[Superkombinasjon]]test
+ * [[Alpin kombinasjon#Superkombinasjon|Superkombinasjontest]]
- * [[superkombinasjon|kombinasjon]]stest
+ * [[alpin kombinasjon#Superkombinasjon|kombinasjonstest]]

@@ -21 +21 @@
- * [[ishockey-VM 2011 (elitedivisjonen)|ishockey-VM 2011]]
+ * [[ishockey-VM 2011 (toppdivisjonen)|ishockey-VM 2011]]

Now running with old version:

$ git checkout 8a7c42f5~1
Note: checking out '8a7c42f5~1'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b new_branch_name

HEAD is now at e56b4be... Merge "flake8-docstrings 0.2.2-0.2.4 fail"
$ python pwb.py fixing_redirects.py -simulate -page:"Bruker:Stigmj/Sandkasse"
Retrieving 1 pages from wikipedia:no.


>>> Bruker:Stigmj/Sandkasse <<<
@@ -1,18 +1,18 @@
- * [[Evgeni Plushenko]]
+ * [[Jevgenij Pljusjtsjenko|Evgeni Plushenko]]
- * [[Evgeni Plushenko|test]]
+ * [[Jevgenij Pljusjtsjenko|test]]
- * [[Evgeni Plushenko|Jevgenij Pljusjtsjenko]]
+ * [[Jevgenij Pljusjtsjenko]]
- * [[Evgeni Plushenko|Jevgenij Pljusjtsjenkovitsj]]
+ * [[Jevgenij Pljusjtsjenko]]vitsj
- * [[Evgeni Plushenko|jevgenij Pljusjtsjenko]]
+ * [[jevgenij Pljusjtsjenko]]
- * [[Evgeni Plushenko|jevgenij Pljusjtsjenkovitsj]]
+ * [[jevgenij Pljusjtsjenko]]vitsj
- * [[Evgeni Plushenko]]:Jau
- * [[Evgeni Plushenko]]:hau
+ * [[Jevgenij Pljusjtsjenko|Evgeni Plushenko]]:Jau
+ * [[Jevgenij Pljusjtsjenko|Evgeni Plushenko]]:hau
- * [[Evgeni Plushenko|:breakit]]
+ * [[Jevgenij Pljusjtsjenko|:breakit]]
- * [[superkombinasjon]]
- * [[Superkombinasjon]]
+ * [[Alpin kombinasjon|superkombinasjon]]
+ * [[Alpin kombinasjon|Superkombinasjon]]
- * [[superkombinasjon|kombinasjon]]
+ * [[Alpin kombinasjon|kombinasjon]]
- * [[Superkombinasjon]]test
+ * [[Alpin kombinasjon|Superkombinasjontest]]
- * [[superkombinasjon|kombinasjon]]stest
+ * [[Alpin kombinasjon|kombinasjonstest]]
- * [[Superkombinasjon#Se_også]]
+ * [[Alpin kombinasjon#Se_også|Superkombinasjon]]
- * [[Superkombinasjon#Se_også|testing]]
+ * [[Alpin kombinasjon#Se_også|testing]]
- * [[Superkombinasjon#Se_også|Testing]]
+ * [[Alpin kombinasjon#Se_også|Testing]]
- * [[Superkombinasjon#Se_også|testing]]inging
+ * [[Alpin kombinasjon#Se_også|testinginging]]

@@ -21 +21 @@
- * [[ishockey-VM 2011 (elitedivisjonen)|ishockey-VM 2011]]
+ * [[Ishockey-VM 2011 (toppdivisjonen)|ishockey-VM 2011]]

The discrepancies are shown best here:

$ master
@@ -21 +21 @@
- * [[ishockey-VM 2011 (elitedivisjonen)|ishockey-VM 2011]]
+ * [[ishockey-VM 2011 (toppdivisjonen)|ishockey-VM 2011]]

$ 8a7c42f5~1
@@ -21 +21 @@
- * [[ishockey-VM 2011 (elitedivisjonen)|ishockey-VM 2011]]
+ * [[Ishockey-VM 2011 (toppdivisjonen)|ishockey-VM 2011]]

I can't see any rationale for having the first letter of the targetPage be lower case as long as you have a linktext there as well. I may be wrong, though..

The other strange behaviour is here:

$ master
- * [[Evgeni Plushenko|:breakit]]
+ * [[jevgenij Pljusjtsjenko|breakit]]

$ 8a7c42f5~1
- * [[Evgeni Plushenko|:breakit]]
+ * [[Jevgenij Pljusjtsjenko|:breakit]]

In the example above, the new version strips the ":" from the linktext as well. Why?

The following shows the behaviour with patch set 8:

$ python pwb.py fixing_redirects.py -simulate -page:"Bruker:Stigmj/Redirect_tests" 
Retrieving 1 pages from wikipedia:no.

>>> Bruker:Stigmj/Redirect tests <<<
@@ -1,16 +1,16 @@
- * [[Bruker:Stigmj/Old title]]
- * [[bruker:Stigmj/Old title]]
+ * [[Bruker:Stigmj/New title|Bruker:Stigmj/Old title]]
+ * [[Bruker:Stigmj/New title|bruker:Stigmj/Old title]]
- * [[Bruker:Stigmj/Old title|page_title_upper_linktext_lower]]
+ * [[Bruker:Stigmj/New title|page_title_upper_linktext_lower]]
- * [[Bruker:Stigmj/Old title|Page_title_upper_Linktext_upper]]
+ * [[Bruker:Stigmj/New title|Page_title_upper_Linktext_upper]]
- * [[bruker:Stigmj/Old title|page_title_lower_linktext_lower]]
+ * [[Bruker:Stigmj/New title|page_title_lower_linktext_lower]]
- * [[bruker:Stigmj/Old title|Page_title_lower_Linktext_upper]]
+ * [[Bruker:Stigmj/New title|Page_title_lower_Linktext_upper]]
- * [[Bruker:Stigmj/Old title]]with_blend_and_page_title_upper
+ * [[Bruker:Stigmj/New title|Bruker:Stigmj/Old titlewith]]_blend_and_page_title_upper
- * [[bruker:Stigmj/Old title]]with_blend_and_page_title_lower
+ * [[Bruker:Stigmj/New title|bruker:Stigmj/Old titlewith]]_blend_and_page_title_lower
- * [[Bruker:Stigmj/Old title|page_title_upper_linktext_lower]]with_blend
+ * [[Bruker:Stigmj/New title|page_title_upper_linktext_lowerwith]]_blend
- * [[Bruker:Stigmj/Old title|Page_title_upper_Linktext_upper]]with_blend
+ * [[Bruker:Stigmj/New title|Page_title_upper_Linktext_upperwith]]_blend
- * [[bruker:Stigmj/Old title|page_title_lower_linktext_lower]]with_blend
+ * [[Bruker:Stigmj/New title|page_title_lower_linktext_lowerwith]]_blend
- * [[bruker:Stigmj/Old title|Page_title_lower_Linktext_upper]]with_blend
+ * [[Bruker:Stigmj/New title|Page_title_lower_Linktext_upperwith]]_blend
- * [[Bruker:Stigmj/Old title|page_title_upper_linktext_lower]]<nowiki />with_blend_and_nowiki
+ * [[Bruker:Stigmj/New title|page_title_upper_linktext_lower]]<nowiki />with_blend_and_nowiki
- * [[Bruker:Stigmj/Old title|Page_title_upper_Linktext_upper]]<nowiki />with_blend_and_nowiki
+ * [[Bruker:Stigmj/New title|Page_title_upper_Linktext_upper]]<nowiki />with_blend_and_nowiki
- * [[bruker:Stigmj/Old title|page_title_lower_linktext_lower]]<nowiki />with_blend_and_nowiki
+ * [[Bruker:Stigmj/New title|page_title_lower_linktext_lower]]<nowiki />with_blend_and_nowiki
- * [[bruker:Stigmj/Old title|Page_title_lower_Linktext_upper]]<nowiki />with_blend_and_nowiki
+ * [[Bruker:Stigmj/New title|Page_title_lower_Linktext_upper]]<nowiki />with_blend_and_nowiki

@@ -18,16 +18,16 @@
- * [[Bruker:Stigmj/Old title_with_section]]
- * [[bruker:Stigmj/Old title_with_section]]
+ * [[Bruker:Stigmj/New title#The section|Bruker:Stigmj/Old title_with_section]]
+ * [[Bruker:Stigmj/New title#The section|bruker:Stigmj/Old title_with_section]]
- * [[Bruker:Stigmj/Old title_with_section|page_title_upper_linktext_lower]]
+ * [[Bruker:Stigmj/New title#The section|page_title_upper_linktext_lower]]
- * [[Bruker:Stigmj/Old title_with_section|Page_title_upper_Linktext_upper]]
+ * [[Bruker:Stigmj/New title#The section|Page_title_upper_Linktext_upper]]
- * [[bruker:Stigmj/Old title_with_section|page_title_lower_linktext_lower]]
+ * [[Bruker:Stigmj/New title#The section|page_title_lower_linktext_lower]]
- * [[bruker:Stigmj/Old title_with_section|Page_title_lower_Linktext_upper]]
+ * [[Bruker:Stigmj/New title#The section|Page_title_lower_Linktext_upper]]
- * [[Bruker:Stigmj/Old title_with_section]]with_blend_and_page_title_upper
+ * [[Bruker:Stigmj/New title#The section|Bruker:Stigmj/Old title_with_sectionwith]]_blend_and_page_title_upper
- * [[bruker:Stigmj/Old title_with_section]]with_blend_and_page_title_lower
+ * [[Bruker:Stigmj/New title#The section|bruker:Stigmj/Old title_with_sectionwith]]_blend_and_page_title_lower
- * [[Bruker:Stigmj/Old title_with_section|page_title_upper_linktext_lower]]with_blend
+ * [[Bruker:Stigmj/New title#The section|page_title_upper_linktext_lowerwith]]_blend
- * [[Bruker:Stigmj/Old title_with_section|Page_title_upper_Linktext_upper]]with_blend
+ * [[Bruker:Stigmj/New title#The section|Page_title_upper_Linktext_upperwith]]_blend
- * [[bruker:Stigmj/Old title_with_section|page_title_lower_linktext_lower]]with_blend
+ * [[Bruker:Stigmj/New title#The section|page_title_lower_linktext_lowerwith]]_blend
- * [[bruker:Stigmj/Old title_with_section|Page_title_lower_Linktext_upper]]with_blend
+ * [[Bruker:Stigmj/New title#The section|Page_title_lower_Linktext_upperwith]]_blend
- * [[Bruker:Stigmj/Old title_with_section|page_title_upper_linktext_lower]]<nowiki />with_blend_and_nowiki
+ * [[Bruker:Stigmj/New title#The section|page_title_upper_linktext_lower]]<nowiki />with_blend_and_nowiki
- * [[Bruker:Stigmj/Old title_with_section|Page_title_upper_Linktext_upper]]<nowiki />with_blend_and_nowiki
+ * [[Bruker:Stigmj/New title#The section|Page_title_upper_Linktext_upper]]<nowiki />with_blend_and_nowiki
- * [[bruker:Stigmj/Old title_with_section|page_title_lower_linktext_lower]]<nowiki />with_blend_and_nowiki
+ * [[Bruker:Stigmj/New title#The section|page_title_lower_linktext_lower]]<nowiki />with_blend_and_nowiki
- * [[bruker:Stigmj/Old title_with_section|Page_title_lower_Linktext_upper]]<nowiki />with_blend_and_nowiki
+ * [[Bruker:Stigmj/New title#The section|Page_title_lower_Linktext_upper]]<nowiki />with_blend_and_nowiki

@@ -35,2 +35,2 @@
- * [[Bruker:Stigmj/Old title|Bruker:Stigmj/New title]]
- * [[Bruker:Stigmj/Old title|bruker:Stigmj/New title]]
+ * [[Bruker:Stigmj/New title]]
+ * [[bruker:Stigmj/New title]]

@@ -38,2 +38,2 @@
- * [[Bruker:Stigmj/Old title|:Bruker:Stigmj/New title]]
+ * [[Bruker:Stigmj/New title|:Bruker:Stigmj/New title]]
- * [[Bruker:Stigmj/Old title|:bruker:Stigmj/New title]]
+ * [[Bruker:Stigmj/New title|:bruker:Stigmj/New title]]

@@ -41,2 +41,2 @@
- * [[:Bruker:Stigmj/Old title|:Bruker:Stigmj/New title]]
+ * [[Bruker:Stigmj/New title|:Bruker:Stigmj/New title]]
- * [[:Bruker:Stigmj/Old title|:bruker:Stigmj/New title]]
+ * [[Bruker:Stigmj/New title|:bruker:Stigmj/New title]]

@@ -44,2 +44,2 @@
- * [[:Kategori:Test-redirect-kategori]]
- * [[:kategori:Test-redirect-kategori]]
+ * [[:Kategori:Test-redirect-kategori2|:Kategori:Test-redirect-kategori]]
+ * [[:Kategori:Test-redirect-kategori2|:kategori:Test-redirect-kategori]]

@@ -47,2 +47,2 @@
- * [[:Kategori:Test-redirect-kategori|:kategori:Test-redirect-kategori2]]
- * [[:kategori:Test-redirect-kategori|:Kategori:Test-redirect-kategori2]]
+ * [[:kategori:Test-redirect-kategori2]]
+ * [[:Kategori:Test-redirect-kategori2]]
Xqt triaged this task as Medium priority.Sep 13 2019, 5:07 AM
Xqt edited projects, added Pywikibot-Scripts; removed Pywikibot-redirect.py.

I assume it works in the right way with cc enabled.

Removing task assignee due to inactivity, as this open task has been assigned to the same person for more than two years (see the emails sent to the task assignee on Oct27 and Nov23). Please assign this task to yourself again if you still realistically [plan to] work on this task - it would be welcome.
(See https://www.mediawiki.org/wiki/Bug_management/Assignee_cleanup for tips how to best manage your individual work in Phabricator.)