Python-клиент для ФИАС Public API — федеральной информационной адресной системы Российской Федерации. Поддерживает синхронные и асинхронные операции.
pip install fias-public-apipip install git+https://github.com/quonaro/fias-public-api| Пакет | Версия | Описание |
|---|---|---|
requests |
>=2.32.5 |
HTTP библиотека для API запросов |
httpx |
>=0.28.1 |
Асинхронная HTTP библиотека |
from fias_public_api import get_token_sync, SyncFPA
# Получаем токен автоматически
token = get_token_sync()
# Создаем клиент
api = SyncFPA(token)
# Ищем адрес
results = api.search("Москва, Красная площадь")
print(f"Найдено: {len(results)} результатов")
# Получаем детали первого результата
if results:
details = api.details_by_id(results[0]['id'])
print(f"Адрес: {details.get('address', 'N/A')}")import asyncio
from fias_public_api import get_token_async, AsyncFPA
async def main():
token = await get_token_async()
async with AsyncFPA(token) as api:
results = await api.search("Москва, Красная площадь")
print(f"Найдено: {len(results)} результатов")
if results:
details = await api.details_by_id(results[0]['id'])
print(f"Адрес: {details.get('address', 'N/A')}")
asyncio.run(main())# Простой поиск
results = api.search("Москва")
# Поиск с кастомным URL
results = api.search("Санкт-Петербург", url="https://custom-fias.ru/api")
# Обработка результатов
for result in results:
print(f"ID: {result['id']}")
print(f"Адрес: {result['address']}")
print(f"Тип: {result['type']}")regions = api.get_regions()
for region in regions:
print(region['name'])from fias_public_api import AddressType
object_id = 12345
details = api.details_by_id(object_id, address_type=AddressType.MUNICIPALITY)object_guid = "some-guid-string"
details = api.details_by_guid(object_guid, address_type=AddressType.ADMINISTRATIVE)location = api.get_location_by_ip("8.8.8.8")
print(location)items = api.get_address_items(
path="7700000000000",
address_level=7,
name_part="Тверская"
)hints = api.get_address_hint(
search_string="Москва",
up_to_level=5
)from fias_public_api import AddressType
api = SyncFPA(
token,
url="https://custom-fias.ru/api",
address_type=AddressType.ADMINISTRATIVE
)from fias_public_api import retry_on_error
from requests.exceptions import ConnectionError, HTTPError
@retry_on_error(
max_retries=5,
delay=1.0,
backoff=2.0,
exceptions=(ConnectionError, HTTPError)
)
def search_with_retry(search_string):
return api.search_address_items(search_string)from requests.exceptions import HTTPError, RequestException
try:
results = api.search("Несуществующий адрес")
except HTTPError as e:
if e.response.status_code == 404:
print("Адрес не найден")
elif e.response.status_code == 401:
print("Неверный токен")
else:
print(f"HTTP ошибка: {e}")
except RequestException as e:
print(f"Ошибка сети: {e}")search(search_string, url)— поиск адресов по текстовой строкеdetails_by_id(object_id, address_type)— детали по IDdetails_by_guid(object_guid, address_type)— детали по GUIDget_regions()— список регионовget_address_items(...)— фильтрация адресных объектовget_details(object_id)— дополнительные сведенияis_descendant(ancestor, descendant, address_type)— проверка вложенностиhas_descendants(parent, up_to_level, address_type)— проверка наличия потомковget_address_item_by_cadastral_number(number, address_type)— по кадастровому номеруget_fias_object_types()— типы объектов ФИАСsearch_address_items(search_string, address_type)— поиск по строкеget_address_hint(...)— подсказки по адресуsearch_address_item(search_string, address_type)— поиск одного объектаget_location_by_ip(ip, address_type)— местоположение по IP
Все методы из SyncFPA доступны в асинхронной версии с поддержкой async/await.
get_token_sync(url)— получить токен (синхронно)get_token_async(url)— получить токен (асинхронно)STANDART_HEADERS(token)— стандартные HTTP-заголовкиAddressType— перечисление типов адресов (ADMINISTRATIVE = 1,MUNICIPALITY = 2)retry_on_error(...)— декоратор для повторных попыток при ошибках
Все примеры доступны в папке examples/:
- 01_basic_usage.py — базовое использование API
- 02_address_types.py — работа с типами адресов
- 03_async_usage.py — асинхронное использование
- 04_retry_decorator.py — использование retry декоратора
- 05_address_info_methods.py — методы AddressInfo
- 06_search_methods.py — методы поиска
- 07_location_methods.py — определение локации по IP
- 08_error_handling.py — обработка ошибок
# Установка зависимостей для разработки
pip install -e ".[dev]"
# Запуск всех тестов
pytest
# Запуск с подробным выводом
pytest -vv
# Запуск конкретного теста
pytest tests/test_sync.py::TestSyncFPA::test_get_regionsMIT. Подробности см. в файле LICENSE.