pygeons package

Module contents

Top-level package for pygeons.

Implements low-level database structures and functions.

Expects you to call connect() before you do anything with the DB.

Expects the database to be initialized. If it is not, see pygeons.initialize.

By default, the database lives under $HOME/.pygeons. You can modify this behavior using the PYGEONS_HOME environment variable. You can also specify the subdirectory explicitly when you call connect().

class pygeons.db.CountryInfo(iso, iso3, iso_numeric, fips, country, capital, area, population, continent, tld, currency_code, currency_name, phone, postal_code_format, postal_code_regex, languages, geonameid, neighbors, equivalent_fips_code)

Bases: tuple

area

Alias for field number 6

capital

Alias for field number 5

continent

Alias for field number 8

country

Alias for field number 4

currency_code

Alias for field number 10

currency_name

Alias for field number 11

equivalent_fips_code

Alias for field number 18

fips

Alias for field number 3

geonameid

Alias for field number 16

iso

Alias for field number 0

iso3

Alias for field number 1

iso_numeric

Alias for field number 2

languages

Alias for field number 15

neighbors

Alias for field number 17

phone

Alias for field number 12

population

Alias for field number 7

postal_code_format

Alias for field number 13

postal_code_regex

Alias for field number 14

tld

Alias for field number 9

class pygeons.db.Geoname(geonameid, name, asciiname, alternatenames, latitude, longitude, feature_class, feature_code, country_code, cc2, admin1_code, admin2_code, admin3_code, admin4_code, population, elevation, dem, timezone, modification_date)

Bases: tuple

admin1_code

Alias for field number 10

admin2_code

Alias for field number 11

admin3_code

Alias for field number 12

admin4_code

Alias for field number 13

alternatenames

Alias for field number 3

asciiname

Alias for field number 2

cc2

Alias for field number 9

country_code

Alias for field number 8

dem

Alias for field number 16

elevation

Alias for field number 15

feature_class

Alias for field number 6

feature_code

Alias for field number 7

geonameid

Alias for field number 0

latitude

Alias for field number 4

longitude

Alias for field number 5

modification_date

Alias for field number 18

name

Alias for field number 1

population

Alias for field number 14

timezone

Alias for field number 17

pygeons.db.connect(subdir: str = '/home/docs/.pygeons') → None[source]
pygeons.db.country_info(name: str) → pygeons.db.CountryInfo[source]
>>> connect()
>>> i = country_info('ru')
>>> (i.country, i.population, i.currency_name)
('Russia', 144478050, 'Ruble')
pygeons.db.get_alternatenames(geonameid: str) → List[Tuple[str, str]][source]
pygeons.db.select_geonames(subcommand: str, params: Iterable[Any]) → List[pygeons.db.Geoname][source]
pygeons.db.select_geonames_ids(ids: Iterable[int], country_code: Optional[str] = None) → List[pygeons.db.Geoname][source]
pygeons.db.select_geonames_name(name: str) → List[pygeons.db.Geoname][source]

Initialize data structures.

Downloads approx. 500MB of data from geonames.org.

pygeons.initialize.build_trie(db_path: str, marisa_path: str) → None[source]
pygeons.initialize.init_alternatename(db_path: str, fin: IO[str]) → None[source]
pygeons.initialize.init_countryinfo(db_path: str) → None[source]
pygeons.initialize.init_geoname(db_path: str, fin: IO[str]) → None[source]
pygeons.initialize.init_postcode(db_path: str, fin: IO[str]) → None[source]
pygeons.initialize.main()[source]