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.
- Synchronous and asynchronous SDK layers
- Built-in HTTP retries using
httpx-retries - Configurable
httpx.Timeout - Configurable sync/async concurrency limit
get_series(...)andsearch_series(...)- Output as
pandas.DataFrameorpolars.DataFrame - Standard
loggingintegration usinglogging.getLogger(__name__) - Typed configuration and credentials
- Python 3.12+
httpx[brotli,zstd]pydantichttpx-retries
Pandas and Polars are optional in v2. Install only the backend your application uses.
This project uses a src/ layout and exposes the bcch_sdk package.
Use Poetry if available:
poetry installFor 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 backendsOr install the runtime dependencies manually:
python -m pip install httpx[brotli,zstd] pydantic httpx-retriesIf you want to run code from the repository directly, make sure the src/ folder is on PYTHONPATH:
export PYTHONPATH=$(pwd)/srcImport the SDK classes and configure the client using BCChConfig.
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)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())from bcch_sdk.types import Frequency
result = sdk.search_series(Frequency.MONTHLY, polars_response=False)
print(result)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 withusernameandpasswordtimeout: anhttpx.Timeoutobject
The SDK clients use httpx under the hood and will apply retries and timeout settings automatically.
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)See CONTRIBUTING.md for contribution guidelines.
See SECURITY.md for security reporting and vulnerability handling.
See CODE_OF_CONDUCT.md for community expectations.