def radius(self, code, subs=None, city=None, default=REGION_RADIUS): """ Return the best radius guess for the given region code. :param code: A two-letter region code. :type code: str :param subs: A list of ISO subdivision codes. :type code: list :param city: A geoname_id from a city record or None. :type city: int :returns: A tuple of radius/region radius guesses in meters. :rtype: tuple """ region_radius = GEOCODER.region_max_radius(code) if region_radius is None: # No region code or no successful radius lookup region_radius = default # Use region radius as an upper bound for city / subdivision # radius for really small regions. E.g. Vatican City cannot # be larger than the Vatican as a region. radius = region_radius if subs: radius = min(SUB_RADII.get(code, SUB_RADIUS), radius) if city: radius = min(CITY_RADII.get(city, CITY_RADIUS), radius) return (radius, region_radius)
def radius(self, code, subs=None, city=None, default=REGION_RADIUS): """ Return the best radius guess for the given region code. :param code: A two-letter region code. :type code: str :param subs: A list of ISO subdivision codes. :type code: list :param city: A geoname_id from a city record or None. :type city: int :returns: A tuple of radius/region radius guesses in meters. :rtype: tuple """ region_radius = GEOCODER.region_max_radius(code) if region_radius is None: # No region code or no successful radius lookup region_radius = default # Use region radius as an upper bound for city / subdivision # radius for really small regions. E.g. Vatican City cannot # be larger than the Vatican as a region. radius = region_radius if subs: radius = min(SUB_RADII.get(code, SUB_RADIUS), radius) if city: radius = min(CITY_RADII.get(city, CITY_RADIUS), radius) return (radius, region_radius)
'ratelimit_expire': '60', 'ratelimit_interval': '5', 'cache_expire': '60', }, }) GEOIP_DATA = { 'London': { 'city': True, 'region_code': 'GB', 'region_name': 'United Kingdom', 'ip': '81.2.69.192', 'latitude': 51.5142, 'longitude': -0.0931, 'radius': CITY_RADII[2643743], 'region_radius': GEOCODER.region_max_radius('GB'), 'score': 0.8, }, 'Bhutan': { 'city': False, 'region_code': 'BT', 'region_name': 'Bhutan', 'ip': '67.43.156.1', 'latitude': 27.5, 'longitude': 90.5, 'radius': GEOCODER.region_max_radius('BT'), 'region_radius': GEOCODER.region_max_radius('BT'), 'score': 0.9, }, }
def test_max_radius_fail(self): for invalid in (None, 42, 'A', 'us', 'USA', 'AA'): self.assertTrue(GEOCODER.region_max_radius(invalid) is None)
def test_max_radius(self): self.assertEqual(GEOCODER.region_max_radius('US'), 2971000.0) self.assertEqual(GEOCODER.region_max_radius('LI'), 14000.0) self.assertEqual(GEOCODER.region_max_radius('VA'), 1000.0)
'ratelimit_expire': '60', 'ratelimit_interval': '5', 'cache_expire': '60', }, }) GEOIP_DATA = { 'London': { 'city': True, 'region_code': 'GB', 'region_name': 'United Kingdom', 'ip': '81.2.69.192', 'latitude': 51.5142, 'longitude': -0.0931, 'radius': CITY_RADII[2643743], 'region_radius': GEOCODER.region_max_radius('GB'), 'score': 0.8, }, 'Bhutan': { 'city': False, 'region_code': 'BT', 'region_name': 'Bhutan', 'ip': '67.43.156.1', 'latitude': 27.5, 'longitude': 90.5, 'radius': GEOCODER.region_max_radius('BT'), 'region_radius': GEOCODER.region_max_radius('BT'), 'score': 0.9, }, }
GB_LAT = 51.5 GB_LON = -0.1 GB_MCC = 234 GB_MNC = 30 GEOIP_DATA = { "London": { "city": True, "region_code": "GB", "region_name": "United Kingdom", "ip": "81.2.69.192", "latitude": 51.5142, "longitude": -0.0931, "radius": CITY_RADII[2643743], "region_radius": GEOCODER.region_max_radius("GB"), "score": 0.8, }, "London2": { "city": True, "region_code": "GB", "region_name": "United Kingdom", "ip": "81.2.69.144", "latitude": 51.5142, "longitude": -0.0931, "radius": 3000.0, "region_radius": GEOCODER.region_max_radius("GB"), "score": 0.8, }, "Bhutan": { "city": False,
def test_max_radius_fail(self): for invalid in (None, 42, "A", "us", "USA", "AA"): assert GEOCODER.region_max_radius(invalid) is None
def test_max_radius(self): assert GEOCODER.region_max_radius("US") == 2971000.0 assert GEOCODER.region_max_radius("LI") == 14000.0 assert GEOCODER.region_max_radius("VA") == 1000.0
def test_max_radius(self): assert GEOCODER.region_max_radius('US') == 2971000.0 assert GEOCODER.region_max_radius('LI') == 14000.0 assert GEOCODER.region_max_radius('VA') == 1000.0