Visitar URL original
GitHub - ezer-mackenzie/bcch-sdk: Python SDK and API wrapper for Banco Central de Chile (BCCh) statistical database and economic indicators. · GitHub
Skip to content
ezer-mackenziePublic

About

Python SDK and API wrapper for Banco Central de Chile (BCCh) statistical database and economic indicators.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

6 stars

Watchers

0 watching

Forks

Repository files navigation

Banco Central Chile SDK

CI Codecov Documentation PyPI Python License

A Python client library for the Banco Central de Chile SieteRestWS API.

This repository provides sync and async wrappers over the API, returning data as pandas.DataFrame or polars.DataFrame and managing retries, timeout configuration, and error handling.

Features

  • Synchronous and asynchronous SDK layers
  • Built-in HTTP retries using httpx-retries
  • Configurable httpx.Timeout
  • Configurable sync/async concurrency limit
  • get_series(...) and search_series(...)
  • Output as pandas.DataFrame or polars.DataFrame
  • Standard logging integration using logging.getLogger(__name__)
  • Typed configuration and credentials

Requirements

  • Python 3.12+
  • httpx[brotli,zstd]
  • pydantic
  • httpx-retries

Pandas and Polars are optional in v2. Install only the backend your application uses.

Installation

This project uses a src/ layout and exposes the bcch_sdk package.

Use Poetry if available:

poetry install

For an installed package, choose an extra:

python -m pip install "bcch-sdk[polars]"
python -m pip install "bcch-sdk[pandas]"
python -m pip install "bcch-sdk[dataframe]"  # both backends

Or install the runtime dependencies manually:

python -m pip install httpx[brotli,zstd] pydantic httpx-retries

If you want to run code from the repository directly, make sure the src/ folder is on PYTHONPATH:

export PYTHONPATH=$(pwd)/src

Quickstart

Import the SDK classes and configure the client using BCChConfig.

Sync example

from httpx import Timeout
from bcch_sdk import BCChSyncSDK
from bcch_sdk.types import BCChConfig

config = BCChConfig(
    credentials={"username": "your_user", "password": "your_pass"},
    timeout=Timeout(10.0),
    max_concurrency=8,
)

sdk = BCChSyncSDK(configuration=config)

series_data = sdk.get_series(
    time_series="SF6041",
    first_date="2023-01-01",
    last_date="2023-12-31",
    polars_response=False,
)

print(series_data)

Async example

import asyncio
from httpx import Timeout
from bcch_sdk import BCChAsyncSDK
from bcch_sdk.types import BCChConfig

async def main() -> None:
    config = BCChConfig(
        credentials={"username": "your_user", "password": "your_pass"},
        timeout=Timeout(10.0),
    )

    sdk = BCChAsyncSDK(configuration=config)

    series_data = await sdk.get_series(
        time_series=["SF6041", "SF6060"],
        first_date="2023-01-01",
        last_date="2023-12-31",
        polars_response=True,
    )

    print(series_data)

asyncio.run(main())

Search series example

from bcch_sdk.types import Frequency

result = sdk.search_series(Frequency.MONTHLY, polars_response=False)
print(result)

Configuration

The main configuration object is BCChConfig from bcch_sdk.types.config.

max_concurrency controls both the maximum thread workers used by the sync SDK and in-flight tasks used by the async SDK. It defaults to 8 and must be greater than zero.

The Banco Central API requires credentials in its query string. The SDK does not log query parameters, but HTTPX logs complete request URLs at INFO; keep the httpx logger at WARNING or higher in production.

Requesting a DataFrame backend that is not installed raises MissingDataFrameDependencyException with the corresponding installation command. The low-level sync/async clients and Pydantic models work with the base installation and do not require either DataFrame library.

  • credentials: a typed dict with username and password
  • timeout: an httpx.Timeout object

The SDK clients use httpx under the hood and will apply retries and timeout settings automatically.

Logging

This library uses logging.getLogger(__name__) in each module. Consumers should configure handlers and levels in their own applications.

Example:

import logging

logging.basicConfig(level=logging.INFO)

Contributing

See CONTRIBUTING.md for contribution guidelines.

Security

See SECURITY.md for security reporting and vulnerability handling.

Code of Conduct

See CODE_OF_CONDUCT.md for community expectations.

About

Python SDK and API wrapper for Banco Central de Chile (BCCh) statistical database and economic indicators.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages