jenkins-bot has submitted this change and it was merged.

Change subject: Drop WdqBase and subclasses
......................................................................


Drop WdqBase and subclasses

The Wikidata Query Service is reliable and preferred to WikidataQuery.
Dropping support for the latter significantly decreases the amount of
unreachable code.

https://phabricator.wikimedia.org/T122706#2718182

Change-Id: I16584ba1304f306b54da0f9e6e21782a8f1e4a5f
---
M base.py
M chemistry.py
M nuclides.py
M units.py
4 files changed, 3 insertions(+), 161 deletions(-)

Approvals:
  Ricordisamoa: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/base.py b/base.py
index bc01b1a..6d878f7 100644
--- a/base.py
+++ b/base.py
@@ -90,20 +90,6 @@
         raise NotImplementedError()
 
 
-class WdqBase:
-    """Load items from Wikidata Query."""
-
-    WDQ_API = 'http://wdq.wmflabs.org/api'
-
-    @classmethod
-    def get_wdq(cls):
-        return get_json(cls.WDQ_API, cls.get_query())
-
-    @classmethod
-    def get_query(cls):
-        raise NotImplementedError()
-
-
 class SparqlBase:
     """Load items from Wikidata SPARQL query service."""
 
diff --git a/chemistry.py b/chemistry.py
index 9ea7ac7..434634c 100644
--- a/chemistry.py
+++ b/chemistry.py
@@ -22,7 +22,7 @@
 from collections import defaultdict
 
 import data
-from base import BaseProvider, PropertyAlreadySetException, SparqlBase, 
TableCell, WdqBase, get_json
+from base import BaseProvider, PropertyAlreadySetException, SparqlBase, 
TableCell, get_json
 
 
 class ElementProvider(BaseProvider):
@@ -82,55 +82,6 @@
                     specials[period][i].__class__ = ElementCell  # XXX
                     special_series[sindex].append(specials[period][i])
         return elements, table, special_series, incomplete
-
-
-class WdqElementProvider(WdqBase, ElementProvider):
-    """Load elements from Wikidata Query."""
-    def __iter__(self):
-        wdq = self.get_wdq()
-        ids = ['Q%d' % item_id for item_id in wdq['items']]
-        entities = self.get_entities(ids, props='labels',
-                                     languages=self.language, 
languagefallback=1)
-        elements = defaultdict(Element)
-        subclass_of = defaultdict(list)
-        wdq['props'] = defaultdict(list, wdq.get('props', {}))
-        for item_id, datatype, value in wdq['props'][str(Element.number_pid)]:
-            if datatype != 'quantity':
-                continue
-            value = value.split('|')
-            if len(value) == 4:
-                value = list(map(float, value))
-                if len(set(value[:3])) == 1 and value[3] == 1 and value[0] == 
int(value[0]):
-                    elements[item_id].number = int(value[0])
-        for item_id, datatype, value in wdq['props'][str(Element.symbol_pid)]:
-            if datatype != 'string':
-                continue
-            elements[item_id].symbol = value
-        for item_id, datatype, value in 
wdq['props'][str(Element.subclass_pid)]:
-            if datatype != 'item':
-                continue
-            subclass_of[item_id].append(value)
-        for item_id, element in elements.items():
-            element.item_id = 'Q%d' % item_id
-            for prop in ('number', 'symbol'):
-                if not hasattr(element, prop):
-                    setattr(element, prop, None)
-            element.load_data_from_superclasses(subclass_of[item_id])
-            label = None
-            entity = entities.get(element.item_id)
-            if entity and 'labels' in entity and len(entity['labels']) == 1:
-                label = list(entity['labels'].values())[0]['value']
-            element.label = label
-            yield element
-
-    @classmethod
-    def get_query(cls):
-        pids = [str(getattr(Element, name))
-                for name in ('symbol_pid', 'subclass_pid', 'number_pid')]
-        return {
-            'q': 'claim[%d]' % Element.symbol_pid,
-            'props': ','.join(pids)
-        }
 
 
 class SparqlElementProvider(SparqlBase, ElementProvider):
diff --git a/nuclides.py b/nuclides.py
index d094b0c..76e83ae 100644
--- a/nuclides.py
+++ b/nuclides.py
@@ -22,8 +22,8 @@
 import operator
 from collections import defaultdict
 
-from base import BaseProvider, WdqBase, SparqlBase, 
PropertyAlreadySetException, TableCell
-from units import time_in_seconds_from_claim, time_in_seconds
+from base import BaseProvider, SparqlBase, PropertyAlreadySetException, 
TableCell
+from units import time_in_seconds
 
 
 class NuclideProvider(BaseProvider):
@@ -219,92 +219,6 @@
             magic_number = magic_result['magic_number']['value']
             magic_numbers.append(int(magic_number))
         return magic_numbers
-
-
-class WdqNuclideProvider(WdqBase, NuclideProvider):
-    """Load nuclides from Wikidata Query."""
-    def __iter__(self):
-        wdq = self.get_wdq()
-        ids = ['Q%d' % item_id for item_id in wdq['items']]
-        entities = self.get_entities(ids, props='labels|claims',
-                                     languages=self.language, 
languagefallback=1)
-        nuclides = defaultdict(Nuclide)
-        wdq['props'] = defaultdict(list, wdq.get('props', {}))
-        for item_id, datatype, value in 
wdq['props'][str(Nuclide.atomic_number_pid)]:
-            if datatype != 'quantity':
-                continue
-            value = value.split('|')
-            if len(value) == 4:
-                value = list(map(float, value))
-                if len(set(value[:3])) == 1 and value[3] == 1 and value[0] == 
int(value[0]):
-                    nuclides[item_id].atomic_number = int(value[0])
-        for item_id, datatype, value in 
wdq['props'][str(Nuclide.neutron_number_pid)]:
-            if datatype != 'quantity':
-                continue
-            value = value.split('|')
-            if len(value) == 4:
-                value = list(map(float, value))
-                if len(set(value[:3])) == 1 and value[3] == 1 and value[0] == 
int(value[0]):
-                    nuclides[item_id].neutron_number = int(value[0])
-        for item_id, nuclide in nuclides.items():
-            nuclide.item_id = 'Q%d' % item_id
-            for prop in ('atomic_number', 'neutron_number'):
-                if not hasattr(nuclide, prop):
-                    setattr(nuclide, prop, None)
-# ??            nuclide.load_data_from_superclasses(subclass_of[item_id])
-            label = None
-            entity = entities.get(nuclide.item_id)
-            if entity and 'labels' in entity and len(entity['labels']) == 1:
-                label = list(entity['labels'].values())[0]['value']
-            nuclide.label = label
-
-            if entity:
-                claims = entity['claims']
-                instance_prop = 'P%d' % Nuclide.instance_pid
-                if instance_prop in claims:
-                    instance_claims = claims[instance_prop]
-                    for instance_claim in instance_claims:
-                        class_id = 
instance_claim['mainsnak']['datavalue']['value']['numeric-id']
-                        if class_id == Nuclide.stable_qid:
-                            nuclide.classes.append('stable')
-
-            half_life = None
-            if entity:
-                claims = entity['claims']
-                hlprop = 'P%d' % Nuclide.half_life_pid
-                if hlprop in claims:
-                    hl_claims = claims[hlprop]
-                    for hl_claim in hl_claims:
-                        half_life = time_in_seconds_from_claim(hl_claim)
-            nuclide.half_life = half_life
-
-            if entity:
-                claims = entity['claims']
-                decay_prop = 'P%d' % Nuclide.decays_to_pid
-                if decay_prop in claims:
-                    decay_claims = claims[decay_prop]
-                    for decay_claim in decay_claims:
-                        if 'qualifiers' in decay_claim:
-                            decay_mode_prop = 'P%d' % Nuclide.decay_mode_pid
-                            qualifiers = decay_claim['qualifiers']
-                            if decay_mode_prop in qualifiers:
-                                for qualifier in qualifiers[decay_mode_prop]:
-                                    nuclide.decay_modes.append(
-                                        
qualifier['datavalue']['value']['numeric-id'])
-
-            yield nuclide
-
-    @classmethod
-    def get_query(cls):
-        pids = [str(getattr(Nuclide, name))
-                for name in ('atomic_number_pid', 'neutron_number_pid')]
-        return {
-            'q': 'claim[%d:(tree[%d][][%d])] AND noclaim[%d:%d]' %
-                 (Nuclide.instance_pid, Nuclide.isotope_qid,
-                  Nuclide.subclass_pid, Nuclide.instance_pid,
-                  Nuclide.isomer_qid),
-            'props': ','.join(pids)
-        }
 
 
 class Nuclide:
diff --git a/units.py b/units.py
index 18ac062..65a718a 100644
--- a/units.py
+++ b/units.py
@@ -37,15 +37,6 @@
 }
 
 
-def time_in_seconds_from_claim(claim):
-    amount = None
-    if 'mainsnak' in claim:
-        if 'datavalue' in claim['mainsnak']:
-            quantity = claim['mainsnak']['datavalue']['value']
-            amount = time_in_seconds(quantity['amount'], quantity['unit'])
-    return amount
-
-
 def time_in_seconds(amount_str, unit_uri):
     amount = float(amount_str)
     unit_id = int(unit_uri.split('/')[-1].replace('Q', ''))

-- 
To view, visit https://gerrit.wikimedia.org/r/316050
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I16584ba1304f306b54da0f9e6e21782a8f1e4a5f
Gerrit-PatchSet: 2
Gerrit-Project: labs/tools/ptable
Gerrit-Branch: master
Gerrit-Owner: Ricordisamoa <ricordisa...@openmailbox.org>
Gerrit-Reviewer: ArthurPSmith <arthurpsm...@gmail.com>
Gerrit-Reviewer: Ricordisamoa <ricordisa...@openmailbox.org>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to