Tidy up whitespace

This commit is contained in:
Nick Hall 2016-05-25 17:13:51 +01:00
parent 5e89b0a417
commit 7ea7850331
4 changed files with 265 additions and 261 deletions

View File

@ -249,7 +249,8 @@ class Callback:
for (k, v) in s.items():
if k in self.__signal_map:
# signal name clash
sys.stderr.write("Warning: signal name clash: %s\n" % str(k))
sys.stderr.write("Warning: signal name clash: %s\n"
% str(k))
self.__signal_map[k] = v
# Set to None to prevent a memory leak in this recursive function
trav = None
@ -258,8 +259,8 @@ class Callback:
# of signals that this instance can emit.
self._log("registered signals: \n %s\n" %
"\n ".join([ "%s: %s" % (k, v) for (k, v)
in list(self.__signal_map.items()) ]))
"\n ".join(["%s: %s" % (k, v) for (k, v)
in list(self.__signal_map.items())]))
def connect(self, signal_name, callback):
@ -273,7 +274,7 @@ class Callback:
# Check that signal exists.
if signal_name not in self.__signal_map:
self._log("Warning: attempt to connect to unknown signal: %s\n"
% str(signal_name))
% str(signal_name))
return
# Add callable to callback_map

View File

@ -72,17 +72,17 @@ NOTECLASS = 'Note'
TAGCLASS = 'Tag'
CLASS2KEY = {
PERSONCLASS: PERSONKEY,
FAMILYCLASS: FAMILYKEY,
EVENTCLASS: EVENTKEY,
PLACECLASS: PLACEKEY,
MEDIACLASS: MEDIAKEY,
SOURCECLASS: SOURCEKEY,
CITATIONCLASS: CITATIONKEY,
REPOCLASS: REPOKEY,
NOTECLASS: NOTEKEY,
TAGCLASS: TAGKEY
}
PERSONCLASS: PERSONKEY,
FAMILYCLASS: FAMILYKEY,
EVENTCLASS: EVENTKEY,
PLACECLASS: PLACEKEY,
MEDIACLASS: MEDIAKEY,
SOURCECLASS: SOURCEKEY,
CITATIONCLASS: CITATIONKEY,
REPOCLASS: REPOKEY,
NOTECLASS: NOTEKEY,
TAGCLASS: TAGKEY
}
def _return(*args):
"""
@ -115,17 +115,17 @@ class CallbackManager:
#no handles to track
self.database = database
self.__handles = {
PERSONKEY: [],
FAMILYKEY: [],
EVENTKEY: [],
PLACEKEY: [],
MEDIAKEY: [],
SOURCEKEY: [],
CITATIONKEY: [],
REPOKEY: [],
NOTEKEY: [],
TAGKEY: [],
}
PERSONKEY: [],
FAMILYKEY: [],
EVENTKEY: [],
PLACEKEY: [],
MEDIAKEY: [],
SOURCEKEY: [],
CITATIONKEY: [],
REPOKEY: [],
NOTEKEY: [],
TAGKEY: [],
}
#no custom callbacks to do
self.custom_signal_keys = []
#set up callbacks to do nothing
@ -180,7 +180,7 @@ class CallbackManager:
handles = ahandledict.get(key)
if handles:
self.__handles[key] = list(
set(self.__handles[key]).union(handles))
set(self.__handles[key]).union(handles))
def unregister_handles(self, ahandledict):
"""
@ -199,17 +199,17 @@ class CallbackManager:
Unregister all handles that are registered
"""
self.__handles = {
PERSONKEY: [],
FAMILYKEY: [],
EVENTKEY: [],
PLACEKEY: [],
MEDIAKEY: [],
SOURCEKEY: [],
CITATIONKEY: [],
REPOKEY: [],
NOTEKEY: [],
TAGKEY: [],
}
PERSONKEY: [],
FAMILYKEY: [],
EVENTKEY: [],
PLACEKEY: [],
MEDIAKEY: [],
SOURCEKEY: [],
CITATIONKEY: [],
REPOKEY: [],
NOTEKEY: [],
TAGKEY: [],
}
def register_callbacks(self, callbackdict):
"""
@ -253,15 +253,12 @@ class CallbackManager:
signal = key + method
self.__do_unconnect(signal)
self.__callbacks[signal][1] = self.database.connect(
signal,
self.__callbackcreator(signal))
signal, self.__callbackcreator(signal))
for method in METHODS_NONE:
signal = key + method
self.__do_unconnect(signal)
self.__callbacks[signal][1] = self.database.connect(
signal,
self.__callbackcreator(signal,
noarg=True))
signal, self.__callbackcreator(signal, noarg=True))
def __do_callback(self, signal, *arg):
"""
@ -304,7 +301,8 @@ class CallbackManager:
managed automatically.
"""
if self.database:
self.custom_signal_keys.append(self.database.connect(name, callback))
self.custom_signal_keys.append(self.database.connect(name,
callback))
def __callbackcreator(self, signal, noarg=False):
"""
@ -338,17 +336,17 @@ def directhandledict(baseobj):
Build a handledict from baseobj with all directly referenced objects
"""
handles = {
PERSONKEY: [],
FAMILYKEY: [],
EVENTKEY: [],
PLACEKEY: [],
MEDIAKEY: [],
SOURCEKEY: [],
CITATIONKEY: [],
REPOKEY: [],
NOTEKEY: [],
TAGKEY: [],
}
PERSONKEY: [],
FAMILYKEY: [],
EVENTKEY: [],
PLACEKEY: [],
MEDIAKEY: [],
SOURCEKEY: [],
CITATIONKEY: [],
REPOKEY: [],
NOTEKEY: [],
TAGKEY: [],
}
for classn, handle in baseobj.get_referenced_handles():
handles[CLASS2KEY[classn]].append(handle)
return handles
@ -359,17 +357,17 @@ def handledict(baseobj):
referenced base obj that are present
"""
handles = {
PERSONKEY: [],
FAMILYKEY: [],
EVENTKEY: [],
PLACEKEY: [],
MEDIAKEY: [],
SOURCEKEY: [],
CITATIONKEY: [],
REPOKEY: [],
NOTEKEY: [],
TAGKEY: [],
}
PERSONKEY: [],
FAMILYKEY: [],
EVENTKEY: [],
PLACEKEY: [],
MEDIAKEY: [],
SOURCEKEY: [],
CITATIONKEY: [],
REPOKEY: [],
NOTEKEY: [],
TAGKEY: [],
}
for classn, handle in baseobj.get_referenced_handles_recursively():
handles[CLASS2KEY[classn]].append(handle)
return handles

View File

@ -48,14 +48,14 @@ import math
degrees = "1"
North = _("%(north_latitude)s N") % {'north_latitude' : degrees}
South = _("%(south_latitude)s S") % {'south_latitude' : degrees}
East = _("%(east_longitude)s E") % {'east_longitude' : degrees}
West = _("%(west_longitude)s W") % {'west_longitude' : degrees}
East = _("%(east_longitude)s E") % {'east_longitude' : degrees}
West = _("%(west_longitude)s W") % {'west_longitude' : degrees}
# extract letters we really need
North = North.replace("1"," ").strip()
South = South.replace("1"," ").strip()
East = East.replace("1"," ").strip()
West = West.replace("1"," ").strip()
North = North.replace("1", " ").strip()
South = South.replace("1", " ").strip()
East = East.replace("1", " ").strip()
West = West.replace("1", " ").strip()
# build dictionary with translation en to local language
translate_en_loc = {}
@ -79,7 +79,7 @@ if 'N' == South or 'S' == North or 'E' == West or 'W' == East:
#
#------------------
def __convert_structure_to_float(sign, degs, mins=0, secs=0.0) :
def __convert_structure_to_float(sign, degs, mins=0, secs=0.0):
"""helper function which converts a structure to a nice
representation
"""
@ -94,29 +94,29 @@ def __convert_using_float_repr(stringValue):
""" helper function that tries to convert the string using the float
representation
"""
try :
try:
v = float(stringValue)
return v
except ValueError :
return None;
except ValueError:
return None
def __convert_using_colon_repr(stringValue):
""" helper function that tries to convert the string using the colon
representation
"""
if stringValue.find(r':') == -1 :
if stringValue.find(r':') == -1:
return None
l = stringValue.split(':')
if len(l) < 2 or len(l) > 3:
return None
l[0]=l[0].strip()
l[0] = l[0].strip()
# if no characters before ':' nothing useful is input!
if len(l[0]) == 0:
return None
if l[0][0] in ['+', '-']:
sign = l[0][0]
l[0]=l[0][1:].strip()
l[0] = l[0][1:].strip()
# regard a second sign as an error
if l[0][0] in ['+', '-']:
return None
@ -134,7 +134,7 @@ def __convert_using_colon_repr(stringValue):
return None
except:
return None
secs=0.
secs = 0.
if len(l) == 3:
try:
secs = float(l[2])
@ -153,16 +153,16 @@ def __convert_using_classic_repr(stringValue, typedeg):
return None # not a valid lat or lon
#exchange some characters
stringValue = stringValue.replace('°',r'_')
stringValue = stringValue.replace('°', r'_')
#allow to input ° as #, UTF-8 code c2b00a
stringValue = stringValue.replace('º',r'_')
#allow to input º as #, UTF-8 code c2ba0a
stringValue = stringValue.replace(r'#',r'_')
stringValue = stringValue.replace('º', r'_')
#allow to input º as #, UTF-8 code c2b a0a
stringValue = stringValue.replace(r'#', r'_')
#allow to input " as ''
stringValue = stringValue.replace(r"''",r'"')
stringValue = stringValue.replace(r"''", r'"')
#allow some special unicode symbols
stringValue = stringValue.replace('\u2033',r'"')
stringValue = stringValue.replace('\u2032',r"'")
stringValue = stringValue.replace('\u2033', r'"')
stringValue = stringValue.replace('\u2032', r"'")
#ignore spaces, a regex with \s* would be better here...
stringValue = stringValue.replace(r' ', r'')
stringValue = stringValue.replace(r'\t', r'')
@ -193,9 +193,9 @@ def __convert_using_classic_repr(stringValue, typedeg):
l2[0] = l4[0]
# Convert the decimal part of minutes to seconds
try:
lsecs=float('0.' + l4[1]) * 60.0
# Set the seconds followed by direction letter N/S/W/E
l2[1] = str(lsecs) + '"' + l2[1]
lsecs = float('0.' + l4[1]) * 60.0
# Set the seconds followed by direction letter N/S/W/E
l2[1] = str(lsecs) + '"' + l2[1]
except:
return None
@ -269,13 +269,13 @@ def __convert_using_modgedcom_repr(val, typedeg):
stringValue = '-' + val[:pos]
else:
return None
try :
try:
v = float(stringValue)
return v
except ValueError :
return None;
except ValueError:
return None
def __convert_float_val(val, typedeg = "lat"):
def __convert_float_val(val, typedeg="lat"):
# function converting input to float, recognizing decimal input, or
# degree notation input. Only english input
# There is no check on maximum/minimum of degree
@ -287,7 +287,7 @@ def __convert_float_val(val, typedeg = "lat"):
#this is no problem, as a number like 100,000.20 cannot appear in
#lat/lon
#change XX,YY into XX.YY
if val.find(r'.') == -1 :
if val.find(r'.') == -1:
val = val.replace(',', '.')
# format: XX.YYYY
@ -297,17 +297,17 @@ def __convert_float_val(val, typedeg = "lat"):
# format: XX:YY:ZZ
v = __convert_using_colon_repr(val)
if v is not None :
if v is not None:
return v
# format: XX° YY' ZZ" [NSWE]
v = __convert_using_classic_repr(val, typedeg)
if v is not None :
if v is not None:
return v
# format XX.YYYY[NSWE]
v = __convert_using_modgedcom_repr(val, typedeg)
if v is not None :
if v is not None:
return v
# no format succeeded
@ -365,12 +365,12 @@ def conv_lat_lon(latitude, longitude, format="D.D4"):
# we start the function changing latitude/longitude in english
if latitude.find('N') == -1 and latitude.find('S') == -1:
# entry is not in english, convert to english
latitude = latitude.replace(translate_en_loc['N'],'N')
latitude = latitude.replace(translate_en_loc['S'],'S')
latitude = latitude.replace(translate_en_loc['N'], 'N')
latitude = latitude.replace(translate_en_loc['S'], 'S')
if longitude.find('E') == -1 and longitude.find('W') == -1:
# entry is not in english, convert to english
longitude = longitude.replace(translate_en_loc['W'],'W')
longitude = longitude.replace(translate_en_loc['E'],'E')
longitude = longitude.replace(translate_en_loc['W'], 'W')
longitude = longitude.replace(translate_en_loc['E'], 'E')
# take away leading spaces
latitude = latitude.lstrip()
@ -383,7 +383,7 @@ def conv_lat_lon(latitude, longitude, format="D.D4"):
longitude = longitude[1:] + longitude[0]
# convert to float
lat_float = __convert_float_val(latitude, 'lat')
lat_float = __convert_float_val(latitude, 'lat')
lon_float = __convert_float_val(longitude, 'lon')
# give output (localized if needed)
@ -403,19 +403,19 @@ def conv_lat_lon(latitude, longitude, format="D.D4"):
# correct possible roundoff error
str_lon = "%.4f" % (lon_float)
if str_lon == "180.0000":
str_lon ="-180.0000"
return ("%.4f" % lat_float , str_lon)
str_lon = "-180.0000"
return ("%.4f" % lat_float, str_lon)
if format == "D.D8" or format == "RT90":
# correct possible roundoff error
str_lon = "%.8f" % (lon_float)
if str_lon == "180.00000000":
str_lon ="-180.00000000"
str_lon = "-180.00000000"
if format == "RT90":
tx = __conv_WGS84_SWED_RT90(lat_float, lon_float)
return ("%i" % tx[0], "%i" % tx[1])
else:
return ("%.8f" % lat_float , str_lon)
return ("%.8f" % lat_float, str_lon)
if format == "GEDCOM":
# The 5.5.1 spec is inconsistent. Length is supposedly 5 to 8 chars,
@ -426,20 +426,21 @@ def conv_lat_lon(latitude, longitude, format="D.D4"):
if lon_float >= 0:
str_lon = "%.6f" % (lon_float)
if str_lon == "180.000000":
str_lon ="W180.000000"
str_lon = "W180.000000"
else:
str_lon = "E" + str_lon
else:
str_lon = "W" + "%.6f" % (-lon_float)
str_lon = str_lon[:-5] + str_lon[-5:].rstrip("0")
str_lat = ("%s%.6f" % (("N", lat_float) if lat_float >= 0 else ("S", -lat_float)))
str_lat = ("%s%.6f" % (("N", lat_float) if lat_float >= 0
else ("S", -lat_float)))
str_lat = str_lat[:-5] + str_lat[-5:].rstrip("0")
return (str_lat, str_lon)
deg_lat = int(lat_float)
deg_lon = int(lon_float)
min_lat = int(60. * (lat_float - float(deg_lat) ))
min_lon = int(60. * (lon_float - float(deg_lon) ))
min_lat = int(60. * (lat_float - float(deg_lat)))
min_lon = int(60. * (lon_float - float(deg_lon)))
sec_lat = 3600. * (lat_float - float(deg_lat) - float(min_lat) / 60.)
sec_lon = 3600. * (lon_float - float(deg_lon) - float(min_lon) / 60.)
@ -463,14 +464,14 @@ def conv_lat_lon(latitude, longitude, format="D.D4"):
dir_lat = translate_en_loc['N']
else:
dir_lat = translate_en_loc['S']
sign_lat= "-"
sign_lon= "+"
sign_lat = "-"
sign_lon = "+"
dir_lon = ""
if lon_float >= 0.:
dir_lon = translate_en_loc['E']
else:
dir_lon = translate_en_loc['W']
sign_lon= "-"
sign_lon = "-"
if format == "DEG":
str_lat = ("%d°%02d'%05.2f\"" % (deg_lat, min_lat, sec_lat)) + dir_lat
@ -497,10 +498,10 @@ def conv_lat_lon(latitude, longitude, format="D.D4"):
return (str_lat, str_lon)
if format == "DEG-:":
if sign_lat=="+":
if sign_lat == "+":
sign_lat = ""
sign_lon_h = sign_lon
if sign_lon=="+":
if sign_lon == "+":
sign_lon_h = ""
str_lat = sign_lat + ("%d:%02d:%05.2f" % (deg_lat, min_lat, sec_lat))
str_lon = sign_lon_h + ("%d:%02d:%05.2f" % (deg_lon, min_lon, sec_lon))
@ -598,7 +599,7 @@ def __conv_WGS84_SWED_RT90(lat, lon):
L0 = math.radians(15.8062845294) # 15 deg 48 min 22.624306 sec
k0 = 1.00000561024
a = 6378137.0 # meter
at = a/(1.0+n)*(1.0+ 1.0/4.0* pow(n,2)+1.0/64.0*pow(n,4))
at = a/(1.0+n)*(1.0+ 1.0/4.0* pow(n, 2)+1.0/64.0*pow(n, 4))
FN = -667.711 # m
FE = 1500064.274 # m
@ -606,20 +607,21 @@ def __conv_WGS84_SWED_RT90(lat, lon):
lat_rad = math.radians(lat)
lon_rad = math.radians(lon)
A = e2
B = 1.0/6.0*(5.0*pow(e2,2) - pow(e2,3))
C = 1.0/120.0*(104.0*pow(e2,3) - 45.0*pow(e2,4))
D = 1.0/1260.0*(1237.0*pow(e2,4))
B = 1.0/6.0*(5.0*pow(e2, 2) - pow(e2, 3))
C = 1.0/120.0*(104.0*pow(e2, 3) - 45.0*pow(e2, 4))
D = 1.0/1260.0*(1237.0*pow(e2, 4))
DL = lon_rad - L0
E = A + B*pow(math.sin(lat_rad),2) + \
C*pow(math.sin(lat_rad),4) + \
D*pow(math.sin(lat_rad),6)
E = A + B*pow(math.sin(lat_rad), 2) + \
C*pow(math.sin(lat_rad), 4) + \
D*pow(math.sin(lat_rad), 6)
psi = lat_rad - math.sin(lat_rad)*math.cos(lat_rad)*E
xi = math.atan2(math.tan(psi),math.cos(DL))
xi = math.atan2(math.tan(psi), math.cos(DL))
eta = atanh(math.cos(psi)*math.sin(DL))
B1 = 1.0/2.0*n - 2.0/3.0*pow(n,2) + 5.0/16.0*pow(n,3) + 41.0/180.0*pow(n,4)
B2 = 13.0/48.0*pow(n,2) - 3.0/5.0*pow(n,3) + 557.0/1440.0*pow(n,4)
B3 = 61.0/240.0*pow(n,3) - 103.0/140.0*pow(n,4)
B4 = 49561.0/161280.0*pow(n,4)
B1 = 1.0/2.0*n - 2.0/3.0*pow(n, 2) + 5.0/16.0*pow(n, 3) + \
41.0/180.0*pow(n, 4)
B2 = 13.0/48.0*pow(n, 2) - 3.0/5.0*pow(n, 3) + 557.0/1440.0*pow(n, 4)
B3 = 61.0/240.0*pow(n, 3) - 103.0/140.0*pow(n, 4)
B4 = 49561.0/161280.0*pow(n, 4)
X = xi + B1*math.sin(2.0*xi)*math.cosh(2.0*eta) + \
B2*math.sin(4.0*xi)*math.cosh(4.0*eta) + \
B3*math.sin(6.0*xi)*math.cosh(6.0*eta) + \
@ -644,16 +646,17 @@ def __conv_SWED_RT90_WGS84(X, Y):
L0 = math.radians(15.8062845294) # 15 deg 48 min 22.624306 sec
k0 = 1.00000561024
a = 6378137.0 # meter
at = a/(1.0+n)*(1.0+ 1.0/4.0* pow(n,2)+1.0/64.0*pow(n,4))
at = a/(1.0+n)*(1.0+ 1.0/4.0* pow(n, 2)+1.0/64.0*pow(n, 4))
FN = -667.711 # m
FE = 1500064.274 # m
xi = (X - FN)/(k0*at)
eta = (Y - FE)/(k0*at)
D1 = 1.0/2.0*n - 2.0/3.0*pow(n,2) + 37.0/96.0*pow(n,3) - 1.0/360.0*pow(n,4)
D2 = 1.0/48.0*pow(n,2) + 1.0/15.0*pow(n,3) - 437.0/1440.0*pow(n,4)
D3 = 17.0/480.0*pow(n,3) - 37.0/840.0*pow(n,4)
D4 = 4397.0/161280.0*pow(n,4)
D1 = 1.0/2.0*n - 2.0/3.0*pow(n, 2) + 37.0/96.0*pow(n, 3) - \
1.0/360.0*pow(n, 4)
D2 = 1.0/48.0*pow(n, 2) + 1.0/15.0*pow(n, 3) - 437.0/1440.0*pow(n, 4)
D3 = 17.0/480.0*pow(n, 3) - 37.0/840.0*pow(n, 4)
D4 = 4397.0/161280.0*pow(n, 4)
xip = xi - D1*math.sin(2.0*xi)*math.cosh(2.0*eta) - \
D2*math.sin(4.0*xi)*math.cosh(4.0*eta) - \
D3*math.sin(6.0*xi)*math.cosh(6.0*eta) - \
@ -663,15 +666,15 @@ def __conv_SWED_RT90_WGS84(X, Y):
D3*math.cos(6.0*xi)*math.sinh(6.0*eta) - \
D4*math.cos(8.0*xi)*math.sinh(8.0*eta)
psi = math.asin(math.sin(xip)/math.cosh(etap))
DL = math.atan2(math.sinh(etap),math.cos(xip))
DL = math.atan2(math.sinh(etap), math.cos(xip))
LON = L0 + DL
A = e2 + pow(e2,2) + pow(e2,3) + pow(e2,4)
B = -1.0/6.0*(7.0*pow(e2,2) + 17*pow(e2,3) + 30*pow(e2,4))
C = 1.0/120.0*(224.0*pow(e2,3) + 889.0*pow(e2,4))
D = 1.0/1260.0*(4279.0*pow(e2,4))
E = A + B*pow(math.sin(psi),2) + \
C*pow(math.sin(psi),4) + \
D*pow(math.sin(psi),6)
A = e2 + pow(e2, 2) + pow(e2, 3) + pow(e2, 4)
B = -1.0/6.0*(7.0*pow(e2, 2) + 17*pow(e2, 3) + 30*pow(e2, 4))
C = 1.0/120.0*(224.0*pow(e2, 3) + 889.0*pow(e2, 4))
D = 1.0/1260.0*(4279.0*pow(e2, 4))
E = A + B*pow(math.sin(psi), 2) + \
C*pow(math.sin(psi), 4) + \
D*pow(math.sin(psi), 6)
LAT = psi + math.sin(psi)*math.cos(psi)*E
LAT = math.degrees(LAT)
LON = math.degrees(LON)
@ -686,7 +689,7 @@ def __conv_SWED_RT90_WGS84(X, Y):
#-------------------------------------------------------------------------
if __name__ == '__main__':
def test_formats_success(lat1,lon1, text=''):
def test_formats_success(lat1, lon1, text=''):
format0 = "D.D4"
format1 = "D.D8"
format2 = "DEG"
@ -697,29 +700,29 @@ if __name__ == '__main__':
format7 = "RT90"
format8 = "GEDCOM"
print("Testing conv_lat_lon function, "+text+':')
res1, res2 = conv_lat_lon(lat1,lon1,format0)
print(lat1,lon1,"in format",format0, "is ",res1,res2)
res1, res2 = conv_lat_lon(lat1,lon1,format1)
print(lat1,lon1,"in format",format1, "is ",res1,res2)
res1, res2 = conv_lat_lon(lat1,lon1,format2)
print(lat1,lon1,"in format",format2, "is ",res1,res2)
res1, res2 = conv_lat_lon(lat1,lon1,format3)
print(lat1,lon1,"in format",format3, "is ",res1,res2)
res = conv_lat_lon(lat1,lon1,format4)
print(lat1,lon1,"in format",format4, "is ",res)
res = conv_lat_lon(lat1,lon1,format5)
print(lat1,lon1,"in format",format5, "is",res)
res = conv_lat_lon(lat1,lon1,format6)
print(lat1,lon1,"in format",format6, "is",res)
res1, res2 = conv_lat_lon(lat1,lon1,format7)
print(lat1,lon1,"in format",format7, "is",res1,res2,"\n")
res1, res2 = conv_lat_lon(lat1,lon1,format8)
print(lat1,lon1,"in format",format8, "is",res1,res2,"\n")
res1, res2 = conv_lat_lon(lat1, lon1, format0)
print(lat1, lon1, "in format", format0, "is ", res1, res2)
res1, res2 = conv_lat_lon(lat1, lon1, format1)
print(lat1, lon1, "in format", format1, "is ", res1, res2)
res1, res2 = conv_lat_lon(lat1, lon1, format2)
print(lat1, lon1, "in format", format2, "is ", res1, res2)
res1, res2 = conv_lat_lon(lat1, lon1, format3)
print(lat1, lon1, "in format", format3, "is ", res1, res2)
res = conv_lat_lon(lat1, lon1, format4)
print(lat1, lon1, "in format", format4, "is ", res)
res = conv_lat_lon(lat1, lon1, format5)
print(lat1, lon1, "in format", format5, "is", res)
res = conv_lat_lon(lat1, lon1, format6)
print(lat1, lon1, "in format", format6, "is", res)
res1, res2 = conv_lat_lon(lat1, lon1, format7)
print(lat1, lon1, "in format", format7, "is", res1, res2, "\n")
res1, res2 = conv_lat_lon(lat1, lon1, format8)
print(lat1, lon1, "in format", format8, "is", res1, res2, "\n")
def test_formats_fail(lat1,lon1,text=''):
def test_formats_fail(lat1, lon1, text=''):
print("This test should make conv_lat_lon function fail, "+text+":")
res1, res2 = conv_lat_lon(lat1,lon1)
print(lat1,lon1," fails to convert, result=", res1,res2,"\n")
res1, res2 = conv_lat_lon(lat1, lon1)
print(lat1, lon1, " fails to convert, result=", res1, res2, "\n")
def test_RT90_conversion():
"""
@ -728,128 +731,130 @@ if __name__ == '__main__':
la = 59.0 + 40.0/60. + 9.09/3600.0
lo = 12.0 + 58.0/60.0 + 57.74/3600.0
x, y = __conv_WGS84_SWED_RT90(la, lo)
lanew, lonew = __conv_SWED_RT90_WGS84(x,y)
lanew, lonew = __conv_SWED_RT90_WGS84(x, y)
assert math.fabs(lanew - la) < 1e-6, math.fabs(lanew - la)
assert math.fabs(lonew - lo) < 1e-6, math.fabs(lonew - lo)
lat, lon = '50.849888888888', '2.885897222222'
test_formats_success(lat,lon)
test_formats_success(lat, lon)
lat, lon = ' 50°50\'59.60"N', ' 2°53\'9.23"E'
test_formats_success(lat,lon)
test_formats_success(lat, lon)
lat, lon = ' 50 : 50 : 59.60 ', ' -2:53 : 9.23 '
test_formats_success(lat,lon)
test_formats_success(lat, lon)
lat, lon = ' dummy', ' 2#53 \' 9.23 " E '
test_formats_fail(lat,lon)
test_formats_fail(lat, lon)
lat, lon = ' 50:50: 59.60', ' d u m my'
test_formats_fail(lat,lon)
lat, lon = ' 50°59.60"N', ' 2°53\'E'
test_formats_success(lat,lon)
lat, lon = ' 11° 11\' 11" N, 11° 11\' 11" O', ' '
test_formats_fail(lat,lon)
test_formats_fail(lat, lon)
lat, lon = ' 50°59.60"N', ' 2°53\'E'
test_formats_success(lat, lon)
lat, lon = ' 11° 11\' 11" N, 11° 11\' 11" O', ' '
test_formats_fail(lat, lon)
# very small negative
lat, lon = '-0.00006', '-0.00006'
test_formats_success(lat,lon)
lat, lon = '-0.00006', '-0.00006'
test_formats_success(lat, lon)
# missing direction N/S
lat, lon = ' 50°59.60"', ' 2°53\'E'
test_formats_fail(lat,lon)
lat, lon = ' 50°59.60"', ' 2°53\'E'
test_formats_fail(lat, lon)
# wrong direction on latitude
lat, lon = ' 50°59.60"E', ' 2°53\'N'
test_formats_fail(lat,lon)
lat, lon = ' 50°59.60"E', ' 2°53\'N'
test_formats_fail(lat, lon)
# same as above
lat, lon = ' 50°59.99"E', ' 2°59\'59.99"N'
test_formats_fail(lat,lon)
lat, lon = ' 50°59.99"E', ' 2°59\'59.99"N'
test_formats_fail(lat, lon)
# test precision
lat, lon = ' 50°59.99"S', ' 2°59\'59.99"E'
test_formats_success(lat,lon)
lat, lon = ' 50°59.99"S', ' 2°59\'59.99"E'
test_formats_success(lat, lon)
lat, lon = 'N50.849888888888', 'E2.885897222222'
test_formats_success(lat,lon)
test_formats_success(lat, lon)
# to large value of lat
lat, lon = '90.849888888888', '2.885897222222'
test_formats_fail(lat,lon)
lat, lon = '90.849888888888', '2.885897222222'
test_formats_fail(lat, lon)
# extreme values allowed
lat, lon = '90', '-180'
test_formats_success(lat,lon)
lat, lon = '90', '-180'
test_formats_success(lat, lon)
# extreme values allowed
lat, lon = '90° 00\' 00.00" S ', '179° 59\'59.99"W'
test_formats_success(lat,lon)
lat, lon = '90° 00\' 00.00" S ', '179° 59\'59.99"W'
test_formats_success(lat, lon)
# extreme value not allowed
lat, lon = '90° 00\' 00.00" N', '180° 00\'00.00" E'
test_formats_fail(lat,lon)
lat, lon = '90° 00\' 00.00" N', '180° 00\'00.00" E'
test_formats_fail(lat, lon)
# extreme values allowed
lat, lon = '90: 00: 00.00 ', '-179: 59:59.99'
test_formats_success(lat,lon)
lat, lon = '90: 00: 00.00 ', '-179: 59:59.99'
test_formats_success(lat, lon)
# extreme value not allowed
lat, lon = '90° 00\' 00.00" N', '180:00:00.00'
test_formats_fail(lat,lon)
lat, lon = '90° 00\' 00.00" N', '180:00:00.00'
test_formats_fail(lat, lon)
# extreme values not allowed
lat, lon = '90', '180'
test_formats_fail(lat,lon)
lat, lon = ' 89°59\'60"N', ' 2°53\'W'
test_formats_fail(lat,lon)
lat, lon = ' 89°60\'00"N', ' 2°53\'W'
test_formats_fail(lat,lon)
lat, lon = ' 89.1°40\'00"N', ' 2°53\'W'
test_formats_fail(lat,lon)
lat, lon = ' 89°40\'00"N', ' 2°53.1\'W'
test_formats_fail(lat,lon)
lat, lon = '0', '0'
test_formats_success(lat,lon,
"Special 0 value, crossing 0-meridian and equator")
lat, lon = '90', '180'
test_formats_fail(lat, lon)
lat, lon = ' 89°59\'60"N', ' 2°53\'W'
test_formats_fail(lat, lon)
lat, lon = ' 89°60\'00"N', ' 2°53\'W'
test_formats_fail(lat, lon)
lat, lon = ' 89.1°40\'00"N', ' 2°53\'W'
test_formats_fail(lat, lon)
lat, lon = ' 89°40\'00"N', ' 2°53.1\'W'
test_formats_fail(lat, lon)
lat, lon = '0', '0'
test_formats_success(lat, lon,
"Special 0 value, crossing 0-meridian and equator")
# small values close to equator
lat, lon = ' 1°1"N', ' 1°1\'E'
test_formats_success(lat,lon)
lat, lon = ' 1°1"N', ' 1°1\'E'
test_formats_success(lat, lon)
# roundoff
lat, lon = ' 1°59.999"N', ' 1°59.999"E'
test_formats_success(lat,lon,'Examples of round off and how it behaves')
lat, lon = ' 1°59\'59.9999"N', ' 1°59\'59.9999"E'
test_formats_success(lat,lon,'Examples of round off and how it behaves')
lat, lon = '89°59\'59.9999"S', '179°59\'59.9999"W'
test_formats_success(lat,lon,'Examples of round off and how it behaves')
lat, lon = '89°59\'59.9999"N', '179°59\'59.9999"E'
test_formats_success(lat,lon,'Examples of round off and how it behaves')
lat, lon = ' 1°59.999"N', ' 1°59.999"E'
test_formats_success(lat, lon, 'Examples of round off and how it behaves')
lat, lon = ' 1°59\'59.9999"N', ' 1°59\'59.9999"E'
test_formats_success(lat, lon, 'Examples of round off and how it behaves')
lat, lon = '89°59\'59.9999"S', '179°59\'59.9999"W'
test_formats_success(lat, lon, 'Examples of round off and how it behaves')
lat, lon = '89°59\'59.9999"N', '179°59\'59.9999"E'
test_formats_success(lat, lon, 'Examples of round off and how it behaves')
#insane number of decimals:
lat, lon = '89°59\'59.99999999"N', '179°59\'59.99999999"E'
test_formats_success(lat,lon,'Examples of round off and how it begaves')
lat, lon = '89°59\'59.99999999"N', '179°59\'59.99999999"E'
test_formats_success(lat, lon, 'Examples of round off and how it begaves')
#recognise '' as seconds "
lat, lon = '89°59\'59.99\'\' N', '179°59\'59.99\'\'E'
test_formats_success(lat,lon, "input \" as ''")
lat, lon = '89°59\'59.99\'\' N', '179°59\'59.99\'\'E'
test_formats_success(lat, lon, "input \" as ''")
#test localisation of , and . as delimiter
lat, lon = '50.849888888888', '2,885897222222'
test_formats_success(lat,lon, 'localisation of . and , ')
lat, lon = '89°59\'59.9999"S', '179°59\'59,9999"W'
test_formats_success(lat,lon, 'localisation of . and , ')
lat, lon = '89°59\'1.599,999"S', '179°59\'59,9999"W'
test_formats_fail(lat,lon, 'localisation of . and , ')
test_formats_success(lat, lon, 'localisation of . and , ')
lat, lon = '89°59\'59.9999"S', '179°59\'59,9999"W'
test_formats_success(lat, lon, 'localisation of . and , ')
lat, lon = '89°59\'1.599,999"S', '179°59\'59,9999"W'
test_formats_fail(lat, lon, 'localisation of . and , ')
#rest
lat, lon = '81.2', '-182.3'
test_formats_fail(lat,lon)
lat, lon = '-91.2', '-1'
test_formats_fail(lat,lon)
lat, lon = '++50:10:1', '2:1:2'
test_formats_fail(lat,lon)
lat, lon = '-50:10:1', '-+2:1:2'
test_formats_success(lat,lon)
lat, lon = '-50::1', '-2:1:2'
test_formats_fail(lat,lon)
lat, lon = '- 50 : 2 : 1 ', '-2:1:2'
test_formats_success(lat,lon)
lat, lon = '+ 50:2 : 1', '-2:1:2'
test_formats_success(lat,lon)
lat, lon = '+50:', '-2:1:2'
test_formats_fail(lat,lon)
lat, lon = '+50:1', '-2:1:2'
test_formats_success(lat,lon)
lat, lon = '+50: 0 : 1 : 1', '-2:1:2'
test_formats_fail(lat,lon)
lat, lon = '81.2', '-182.3'
test_formats_fail(lat, lon)
lat, lon = '-91.2', '-1'
test_formats_fail(lat, lon)
lat, lon = '++50:10:1', '2:1:2'
test_formats_fail(lat, lon)
lat, lon = '-50:10:1', '-+2:1:2'
test_formats_success(lat, lon)
lat, lon = '-50::1', '-2:1:2'
test_formats_fail(lat, lon)
lat, lon = '- 50 : 2 : 1 ', '-2:1:2'
test_formats_success(lat, lon)
lat, lon = '+ 50:2 : 1', '-2:1:2'
test_formats_success(lat, lon)
lat, lon = '+50:', '-2:1:2'
test_formats_fail(lat, lon)
lat, lon = '+50:1', '-2:1:2'
test_formats_success(lat, lon)
lat, lon = '+50: 0 : 1 : 1', '-2:1:2'
test_formats_fail(lat, lon)
lat, lon = '+61° 43\' 60.00"', '+17° 7\' 60.00"'
test_formats_fail(lat,lon)
test_formats_fail(lat, lon)
lat, lon = '+61° 44\' 00.00"N', '+17° 8\' 00.00"E'
test_formats_success(lat,lon)
lat, lon = ': 0 : 1 : 1', ':1:2'
test_formats_fail(lat,lon)
test_formats_success(lat, lon)
lat, lon = ': 0 : 1 : 1', ':1:2'
test_formats_fail(lat, lon)
lat, lon = 'N 50º52\'21.92"', 'E 124º52\'21.92"'
test_formats_success(lat,lon, 'New format with N/E first and another º - character')
test_formats_success(lat, lon,
'New format with N/E first and another º - character')
lat, lon = 'S 50º52\'21.92"', 'W 124º52\'21.92"'
test_formats_success(lat,lon, 'New format with S/W first and another º - character')
test_formats_success(lat, lon,
'New format with S/W first and another º - character')
test_RT90_conversion()

View File

@ -48,7 +48,7 @@ gender = {
Person.UNKNOWN : _("gender|unknown"),
}
def format_gender( type):
def format_gender(type):
return gender.get(type[0], _("Invalid"))
conf_strings = {
@ -63,16 +63,16 @@ conf_strings = {
family_rel_descriptions = {
FamilyRelType.MARRIED : _("A legal or common-law relationship "
"between a husband and wife"),
"between a husband and wife"),
FamilyRelType.UNMARRIED : _("No legal or common-law relationship "
"between man and woman"),
"between man and woman"),
FamilyRelType.CIVIL_UNION : _("An established relationship between "
"members of the same sex"),
"members of the same sex"),
FamilyRelType.UNKNOWN : _("Unknown relationship between a man "
"and woman"),
"and woman"),
FamilyRelType.CUSTOM : _("An unspecified relationship between "
"a man and woman"),
"a man and woman"),
}
data_recover_msg = _('The data can only be recovered by Undo operation '
'or by quitting with abandoning changes.')
'or by quitting with abandoning changes.')