Re-organize directory structure (#4971)

See discussion in #2491

Co-authored-by: Ivan Levkivskyi <ilevkivskyi@dropbox.com>
This commit is contained in:
Ivan Levkivskyi
2021-01-27 12:00:39 +00:00
committed by GitHub
parent 869238e587
commit 16ae4c6120
1399 changed files with 601 additions and 97 deletions

View File

@@ -0,0 +1,3 @@
version = "0.1"
python2 = true
requires = ["types-maxminddb"]

View File

View File

@@ -0,0 +1,27 @@
from types import TracebackType
from typing import Optional, Sequence, Text, Type
from geoip2.models import ASN, ISP, AnonymousIP, City, ConnectionType, Country, Domain, Enterprise
from maxminddb.reader import Metadata
_Locales = Optional[Sequence[Text]]
class Reader:
def __init__(self, filename: Text, locales: _Locales = ..., mode: int = ...) -> None: ...
def __enter__(self) -> Reader: ...
def __exit__(
self,
exc_type: Optional[Type[BaseException]] = ...,
exc_val: Optional[BaseException] = ...,
exc_tb: Optional[TracebackType] = ...,
) -> None: ...
def country(self, ip_address: Text) -> Country: ...
def city(self, ip_address: Text) -> City: ...
def anonymous_ip(self, ip_address: Text) -> AnonymousIP: ...
def asn(self, ip_address: Text) -> ASN: ...
def connection_type(self, ip_address: Text) -> ConnectionType: ...
def domain(self, ip_address: Text) -> Domain: ...
def enterprise(self, ip_address: Text) -> Enterprise: ...
def isp(self, ip_address: Text) -> ISP: ...
def metadata(self) -> Metadata: ...
def close(self) -> None: ...

View File

@@ -0,0 +1,14 @@
from typing import Optional, Text
class GeoIP2Error(RuntimeError): ...
class AddressNotFoundError(GeoIP2Error): ...
class AuthenticationError(GeoIP2Error): ...
class HTTPError(GeoIP2Error):
http_status: Optional[int]
uri: Optional[Text]
def __init__(self, message: Text, http_status: Optional[int] = ..., uri: Optional[Text] = ...) -> None: ...
class InvalidRequestError(GeoIP2Error): ...
class OutOfQueriesError(GeoIP2Error): ...
class PermissionRequiredError(GeoIP2Error): ...

View File

@@ -0,0 +1,3 @@
class SimpleEquality:
def __eq__(self, other: object) -> bool: ...
def __ne__(self, other: object) -> bool: ...

View File

@@ -0,0 +1,62 @@
from typing import Any, Mapping, Optional, Sequence, Text
from geoip2 import records
from geoip2.mixins import SimpleEquality
_Locales = Optional[Sequence[Text]]
_RawResponse = Mapping[Text, Mapping[Text, Any]]
class Country(SimpleEquality):
continent: records.Continent
country: records.Country
registered_country: records.Country
represented_country: records.RepresentedCountry
maxmind: records.MaxMind
traits: records.Traits
raw: _RawResponse
def __init__(self, raw_response: _RawResponse, locales: _Locales = ...) -> None: ...
class City(Country):
city: records.City
location: records.Location
postal: records.Postal
subdivisions: records.Subdivisions
def __init__(self, raw_response: _RawResponse, locales: _Locales = ...) -> None: ...
class Insights(City): ...
class Enterprise(City): ...
class SimpleModel(SimpleEquality): ...
class AnonymousIP(SimpleModel):
is_anonymous: bool
is_anonymous_vpn: bool
is_hosting_provider: bool
is_public_proxy: bool
is_tor_exit_node: bool
ip_address: Optional[Text]
raw: _RawResponse
def __init__(self, raw: _RawResponse) -> None: ...
class ASN(SimpleModel):
autonomous_system_number: Optional[int]
autonomous_system_organization: Optional[Text]
ip_address: Optional[Text]
raw: _RawResponse
def __init__(self, raw: _RawResponse) -> None: ...
class ConnectionType(SimpleModel):
connection_type: Optional[Text]
ip_address: Optional[Text]
raw: _RawResponse
def __init__(self, raw: _RawResponse) -> None: ...
class Domain(SimpleModel):
domain: Optional[Text]
ip_address: Optional[Text]
raw: Optional[Text]
def __init__(self, raw: _RawResponse) -> None: ...
class ISP(ASN):
isp: Optional[Text]
organization: Optional[Text]
def __init__(self, raw: _RawResponse) -> None: ...

View File

@@ -0,0 +1,83 @@
from typing import Any, Mapping, Optional, Sequence, Text, Tuple
from geoip2.mixins import SimpleEquality
_Locales = Optional[Sequence[Text]]
_Names = Mapping[Text, Text]
class Record(SimpleEquality):
def __init__(self, **kwargs: Any) -> None: ...
def __setattr__(self, name: Text, value: Any) -> None: ...
class PlaceRecord(Record):
def __init__(self, locales: _Locales = ..., **kwargs: Any) -> None: ...
@property
def name(self) -> Text: ...
class City(PlaceRecord):
confidence: int
geoname_id: int
names: _Names
class Continent(PlaceRecord):
code: Text
geoname_id: int
names: _Names
class Country(PlaceRecord):
confidence: int
geoname_id: int
is_in_european_union: bool
iso_code: Text
names: _Names
def __init__(self, locales: _Locales = ..., **kwargs: Any) -> None: ...
class RepresentedCountry(Country):
type: Text
class Location(Record):
average_income: int
accuracy_radius: int
latitude: float
longitude: float
metro_code: int
population_density: int
time_zone: Text
class MaxMind(Record):
queries_remaining: int
class Postal(Record):
code: Text
confidence: int
class Subdivision(PlaceRecord):
confidence: int
geoname_id: int
iso_code: Text
names: _Names
class Subdivisions(Tuple[Subdivision]):
def __new__(cls, locales: _Locales, *subdivisions: Subdivision) -> Subdivisions: ...
def __init__(self, locales: _Locales, *subdivisions: Subdivision) -> None: ...
@property
def most_specific(self) -> Subdivision: ...
class Traits(Record):
autonomous_system_number: int
autonomous_system_organization: Text
connection_type: Text
domain: Text
ip_address: Text
is_anonymous: bool
is_anonymous_proxy: bool
is_anonymous_vpn: bool
is_hosting_provider: bool
is_legitimate_proxy: bool
is_public_proxy: bool
is_satellite_provider: bool
is_tor_exit_node: bool
isp: Text
organization: Text
user_type: Text
def __init__(self, **kwargs: Any) -> None: ...