Skip to main content

High-quality Python client for KR Public Data Portal

Project description

kr-data-portal-client

Production-ready, async-first Python client for the KR Public Data Portal (공공데이터포털).

Features

  • Async First: Built on httpx for high-performance asynchronous operations.
  • Spec-Driven: Generated from YAML specifications to ensure accuracy.
  • Robust Models: Uses Pydantic for strict response validation and easy data access.
  • Rate Limiting: Built-in async rate limiter to comply with portal usage policies.
  • Google-Style Docstrings: Full IDE support with detailed parameter descriptions and data update policies.

Installation

pip install kr-data-portal-client

[!IMPORTANT] Recommended Version: 0.1.8+
Previous versions (0.1.7 and below) are considered deprecated (yanked) due to critical API encoding and consistency issues. Version 0.1.8 introduces a custom URL construction logic to properly handle Service Key encoding requirements of the KR Public Data Portal.

Quick Start

import asyncio
from kr_data_portal.financial_services import FinancialClient
from kr_data_portal.models.financial_services import StockPriceInfoItem

async def main():
    service_key = "YOUR_SERVICE_KEY"
    
    async with FinancialClient(service_key=service_key) as client:
        # Fetch stock price info
        response = await client.getStockPriceInfo(itmsNm="삼성전자")
        
        # Access validated items
        items = response.items(StockPriceInfoItem)
        for item in items:
            print(f"{item.itmsNm}: {item.clpr} KRW")

if __name__ == "__main__":
    asyncio.run(main())

Development

Project Structure

  • src/kr_data_portal/: Core package.
  • specs/: API specification files (YAML).
  • scripts/: Code generation scripts.
  • tests/: Unit tests.

Code Generation

To regenerate the client from specifications:

python scripts/generate_client.py

Running Tests

uv run pytest

Contributing

Please see CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests. We use Conventional Commits for automated release management.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kr_data_portal_client-0.1.9.tar.gz (81.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kr_data_portal_client-0.1.9-py3-none-any.whl (7.4 kB view details)

Uploaded Python 3

File details

Details for the file kr_data_portal_client-0.1.9.tar.gz.

File metadata

  • Download URL: kr_data_portal_client-0.1.9.tar.gz
  • Upload date:
  • Size: 81.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kr_data_portal_client-0.1.9.tar.gz
Algorithm Hash digest
SHA256 a4f5866939f4b247f389944ea87f2da426e4cedcc3c6a7cee76876b360933a5e
MD5 2a3458b99d7ba05df145d40b068ff425
BLAKE2b-256 f6ae9d7f643412eea3b1ed39558619638b6155368e585b9c66f16f4de09182b5

See more details on using hashes here.

File details

Details for the file kr_data_portal_client-0.1.9-py3-none-any.whl.

File metadata

File hashes

Hashes for kr_data_portal_client-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 5c587baa6e954a35112a46a26aa4dd523088545185cd61186ee8456189207fac
MD5 f80fdbbaaff11eb018ab4f8353d76afd
BLAKE2b-256 7369a3f9de37cf2da06d6100a1ae36de873b77644efa0d977d8345421734eec8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page