46 lines
1.6 KiB
Python
46 lines
1.6 KiB
Python
# pylint:disable=C0111
|
|
import os
|
|
|
|
import maxminddb.reader
|
|
|
|
try:
|
|
import maxminddb.extension
|
|
except ImportError:
|
|
maxminddb.extension = None
|
|
|
|
from maxminddb.const import (MODE_AUTO, MODE_MMAP, MODE_MMAP_EXT, MODE_FILE,
|
|
MODE_MEMORY)
|
|
from maxminddb.decoder import InvalidDatabaseError
|
|
|
|
|
|
def open_database(database, mode=MODE_AUTO):
|
|
"""Open a Maxmind DB database
|
|
|
|
Arguments:
|
|
database -- A path to a valid MaxMind DB file such as a GeoIP2
|
|
database file.
|
|
mode -- mode to open the database with. Valid mode are:
|
|
* MODE_MMAP_EXT - use the C extension with memory map.
|
|
* MODE_MMAP - read from memory map. Pure Python.
|
|
* MODE_FILE - read database as standard file. Pure Python.
|
|
* MODE_MEMORY - load database into memory. Pure Python.
|
|
* MODE_AUTO - tries MODE_MMAP_EXT, MODE_MMAP, MODE_FILE in that
|
|
order. Default mode.
|
|
"""
|
|
if (mode == MODE_AUTO and maxminddb.extension and
|
|
hasattr(maxminddb.extension, 'Reader')) or mode == MODE_MMAP_EXT:
|
|
return maxminddb.extension.Reader(database)
|
|
elif mode in (MODE_AUTO, MODE_MMAP, MODE_FILE, MODE_MEMORY):
|
|
return maxminddb.reader.Reader(database, mode)
|
|
raise ValueError('Unsupported open mode: {0}'.format(mode))
|
|
|
|
|
|
def Reader(database): # pylint: disable=invalid-name
|
|
"""This exists for backwards compatibility. Use open_database instead"""
|
|
return open_database(database)
|
|
|
|
__title__ = 'maxminddb'
|
|
__version__ = '1.2.0'
|
|
__author__ = 'Gregory Oschwald'
|
|
__license__ = 'Apache License, Version 2.0'
|
|
__copyright__ = 'Copyright 2014 Maxmind, Inc.'
|