[libgweather] Port to Python 3
- From: Giovanni Campagna <gcampagna src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgweather] Port to Python 3
- Date: Mon, 14 Jan 2013 22:40:45 +0000 (UTC)
commit b4c5a26a6ef574c8af50936c1e410da2c5db0feb
Author: Giovanni Campagna <gcampagna src gnome org>
Date: Wed Jan 2 19:16:08 2013 +0100
Port to Python 3
Part of the GNOME 3.8 Goal
https://live.gnome.org/GnomeGoals/Python3Porting
https://bugzilla.gnome.org/show_bug.cgi?id=690975
data/check-observations.py | 2 +-
data/locations_diff.py | 20 +++++-----
data/update-locations.py | 84 +++++++++++++++++++++----------------------
3 files changed, 52 insertions(+), 54 deletions(-)
---
diff --git a/data/check-observations.py b/data/check-observations.py
index 8bd7a1d..aeda3c8 100644
--- a/data/check-observations.py
+++ b/data/check-observations.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
from ftplib import FTP
import datetime
diff --git a/data/locations_diff.py b/data/locations_diff.py
index 4f3d311..9b75517 100755
--- a/data/locations_diff.py
+++ b/data/locations_diff.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
#
# locations_diff.py
#
@@ -27,7 +27,7 @@ except:
old_locations = old_dom.getElementsByTagName ('location')
new_locations = new_dom.getElementsByTagName ('location')
-print 'There are %i new locations' % (len (new_locations) - len (old_locations))
+print('There are %i new locations' % (len (new_locations) - len (old_locations)))
old_locations_dict = {}
new_locations_dict = {}
@@ -46,14 +46,14 @@ for location in new_locations:
location_name = node.childNodes[0].nodeValue
elif node.nodeType == 1 and node.tagName == 'code':
location_code = node.childNodes[0].nodeValue
- if not old_locations_dict.has_key (location_code):
- print 'New Location %s - %s' % (location_code, location_name)
+ if location_code not in old_locations_dict:
+ print('New Location %s - %s' % (location_code, location_name))
elif old_locations_dict[location_code] != location_name:
- print 'Location %s changed name %s => %s' % (location_code,
- old_locations_dict[location_code], location_name)
+ print('Location %s changed name %s => %s' % (location_code,
+ old_locations_dict[location_code], location_name))
new_locations_dict[location_code] = location_name
-for location in old_locations_dict.keys():
- if not new_locations_dict.has_key (location):
- print 'Location Removed %s - %s' % (location,
- old_locations_dict[location])
+for location in list(old_locations_dict.keys()):
+ if location not in new_locations_dict:
+ print('Location Removed %s - %s' % (location,
+ old_locations_dict[location]))
diff --git a/data/update-locations.py b/data/update-locations.py
index 386e755..c1daef7 100644
--- a/data/update-locations.py
+++ b/data/update-locations.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
import codecs
@@ -8,12 +8,10 @@ import os
import re
import sqlite3
import sys
-import urllib
+import urllib.request, urllib.parse, urllib.error
from xml.dom import minidom
from xml.sax import saxutils
-
-# Magic incantation to tell python to let us output UTF-8
-sys.stdout = codecs.getwriter(locale.getpreferredencoding())(sys.stdout)
+from functools import reduce
# The database...
db = sqlite3.connect('locationdb.sqlite')
@@ -80,7 +78,7 @@ def printComment(indent, comment, keep_newlines=False):
prefix = '%s<!-- ' % indent
width = 72 - len(prefix)
if len(comment) < width and comment.find('\n') == -1:
- print '%s<!-- %s -->' % (indent, comment)
+ print('%s<!-- %s -->' % (indent, comment))
return
while len(comment) > width or comment.find('\n') != -1:
@@ -91,13 +89,13 @@ def printComment(indent, comment, keep_newlines=False):
brk == comment.find(' ')
if brk == -1:
break
- print '%s%s' % (prefix, comment[:brk])
+ print('%s%s' % (prefix, comment[:brk]))
prefix = '%s ' % indent
brk += 1
comment = comment[brk:]
if len(comment):
- print '%s%s' % (prefix, comment)
- print '%s -->' % indent
+ print('%s%s' % (prefix, comment))
+ print('%s -->' % indent)
# other helpers
def getFipsCodes(node, container):
@@ -137,10 +135,10 @@ class Timezones:
self.zones = [Timezone(z) for z in getChildrenByName(node, 'timezone')]
def print_xml(self, indent):
- print '%s<timezones>' % indent
+ print('%s<timezones>' % indent)
for zone in self.zones:
zone.print_xml(indent + ' ')
- print '%s</timezones>' % indent
+ print('%s</timezones>' % indent)
class Timezone:
def __init__(self, node):
@@ -152,7 +150,7 @@ class Timezone:
def print_xml(self, indent):
if self.name is not None or len(self.obsoletes):
- print '%s<timezone id="%s">' % (indent, self.id)
+ print('%s<timezone id="%s">' % (indent, self.id))
if self.comment is not None:
printComment(indent + ' ', self.comment)
if self.name is not None:
@@ -160,12 +158,12 @@ class Timezone:
msgctxt=' msgctxt="Timezone"'
else:
msgctxt=''
- print '%s <_name%s>%s</_name>' % (indent, msgctxt, self.name)
+ print('%s <_name%s>%s</_name>' % (indent, msgctxt, self.name))
for obs in self.obsoletes:
- print '%s <obsoletes>%s</obsoletes>' % (indent, obs)
- print '%s</timezone>' % indent
+ print('%s <obsoletes>%s</obsoletes>' % (indent, obs))
+ print('%s</timezone>' % indent)
else:
- print '%s<timezone id="%s" />' % (indent, self.id)
+ print('%s<timezone id="%s" />' % (indent, self.id))
class LocBase:
def __init__(self, parent, arg):
@@ -204,22 +202,22 @@ class LocBase:
def print_xml(self, indent):
if self.iso_code is not None:
- print '%s <iso-code>%s</iso-code>' % (indent, self.iso_code)
+ print('%s <iso-code>%s</iso-code>' % (indent, self.iso_code))
if self.fips_codes is not None:
for value in self.fips_codes:
- print '%s <fips-code>%s</fips-code>' % (indent, value)
+ print('%s <fips-code>%s</fips-code>' % (indent, value))
if self.pref_lang is not None:
- print '%s <pref-lang>%s</pref-lang>' % (indent, self.pref_lang)
+ print('%s <pref-lang>%s</pref-lang>' % (indent, self.pref_lang))
if self.timezones is not None:
self.timezones.print_xml(indent + ' ')
if self.tz_hint is not None:
- print '%s <tz-hint>%s</tz-hint>' % (indent, self.tz_hint)
+ print('%s <tz-hint>%s</tz-hint>' % (indent, self.tz_hint))
if self.zone is not None:
- print '%s <zone>%s</zone>' % (indent, self.zone)
+ print('%s <zone>%s</zone>' % (indent, self.zone))
if self.radar is not None:
- print '%s <radar>%s</radar>' % (indent, self.radar)
+ print('%s <radar>%s</radar>' % (indent, self.radar))
if self.coordinates is not None:
- print '%s <coordinates>%s</coordinates>' % (indent, self.coordinates)
+ print('%s <coordinates>%s</coordinates>' % (indent, self.coordinates))
for item in self.contents:
item.print_xml(indent + ' ')
@@ -243,7 +241,7 @@ class LocBase:
else:
msgctxt = ''
- print '%s <_name%s>%s</_name>' % (indent, msgctxt, saxutils.escape(self.name))
+ print('%s <_name%s>%s</_name>' % (indent, msgctxt, saxutils.escape(self.name)))
def station_prefixes(self):
return reduce(set.__or__, [x.station_prefixes() for x in self.contents], set())
@@ -253,12 +251,12 @@ class Region(LocBase):
LocBase.__init__(self, None, elt)
def print_xml(self, indent):
- print '%s<region>' % indent
+ print('%s<region>' % indent)
if self.comment is not None:
printComment(indent + ' ', self.comment)
self.print_name(indent)
LocBase.print_xml(self, indent)
- print '%s</region>' % indent
+ print('%s</region>' % indent)
class Country(LocBase):
def __init__(self, elt):
@@ -280,7 +278,7 @@ class Country(LocBase):
self.in_name = self.name
def print_xml(self, indent):
- print '%s<country>' % indent
+ print('%s<country>' % indent)
if self.comment is not None:
printComment(indent + ' ', self.comment)
self.print_name(indent)
@@ -304,7 +302,7 @@ class Country(LocBase):
comment += ', %s' % city.name
printComment(indent + ' ', comment, True)
LocBase.print_xml(self, indent)
- print '%s</country>' % indent
+ print('%s</country>' % indent)
class State(LocBase):
def __init__(self, parent, elt):
@@ -313,12 +311,12 @@ class State(LocBase):
self.comment = 'A state/province/territory in %s' % self.parent.name
def print_xml(self, indent):
- print '%s<state>' % indent
+ print('%s<state>' % indent)
if self.comment is not None:
printComment(indent + ' ', self.comment)
self.print_name(indent)
LocBase.print_xml(self, indent)
- print '%s</state>' % indent
+ print('%s</state>' % indent)
class City(LocBase):
def __init__(self, arg):
@@ -361,7 +359,7 @@ class City(LocBase):
else:
self.comment = 'A city in %s' % self.parent.in_name
- print '%s<city>' % indent
+ print('%s<city>' % indent)
comment = self.comment or ''
if len(self.name_comment):
if len(comment):
@@ -373,10 +371,10 @@ class City(LocBase):
if len(comment):
printComment(indent + ' ', comment, True)
self.print_name(indent)
- print '%s <coordinates>%s</coordinates>' % (indent, self.coordinates)
+ print('%s <coordinates>%s</coordinates>' % (indent, self.coordinates))
for item in self.contents:
item.print_xml(indent + ' ', self)
- print '%s</city>' % indent
+ print('%s</city>' % indent)
class Location(LocBase):
def __init__(self, arg):
@@ -395,7 +393,7 @@ class Location(LocBase):
self.comment = station_comments[self.code]
def print_xml(self, indent, city=None):
- print '%s<location>' % indent
+ print('%s<location>' % indent)
name = self.name
if city is not None:
if name.startswith("%s, " % city.name):
@@ -408,10 +406,10 @@ class Location(LocBase):
name = name[:-len(city.name) - 2]
#if self.comment is not None:
# print '%s <!-- %s -->' % (indent, self.comment)
- print '%s <name>%s</name>' % (indent, saxutils.escape(name))
- print '%s <code>%s</code>' % (indent, self.code)
+ print('%s <name>%s</name>' % (indent, saxutils.escape(name)))
+ print('%s <code>%s</code>' % (indent, self.code))
LocBase.print_xml(self, indent)
- print '%s</location>' % indent
+ print('%s</location>' % indent)
def station_prefixes(self):
return set([self.code[:2]])
@@ -664,7 +662,7 @@ def dist_from_station(city, station, cmpcity):
return dist
observations_url = os.getenv('OBSERVATIONS_URL') or 'http://gnome.org/~danw/observations.txt'
-observations = urllib.urlopen(observations_url)
+observations = urllib.request.urlopen(observations_url)
recent = [obs.rstrip() for obs in observations.readlines()]
observations.close()
@@ -775,7 +773,7 @@ for id in cities:
if city.country_code != "" and city.country_code in fips_codes:
city.parent = fips_codes[city.country_code]
else:
- print "Could not find container for city %s in %s" % (city.name, city.country_code);
+ print("Could not find container for city %s in %s" % (city.name, city.country_code));
continue
city.parent.contents.append(city)
@@ -831,9 +829,9 @@ for country_code in fips_codes:
for code in fips_codes:
fips_codes[code].contents.sort()
-print '<?xml version="1.0" encoding="utf-8"?>'
-print '<!DOCTYPE gweather SYSTEM "locations.dtd">'
-print '<gweather format="1.0">'
+print('<?xml version="1.0" encoding="utf-8"?>')
+print('<!DOCTYPE gweather SYSTEM "locations.dtd">')
+print('<gweather format="1.0">')
for region in regions:
region.contents.sort()
region.print_xml(' ')
@@ -842,4 +840,4 @@ if len(recent):
for station_code in recent:
comment += '%s ' % station_code
printComment('', comment, True)
-print '</gweather>'
+print('</gweather>')
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]