Skip to main content

finlens — Dữ liệu chứng khoán Việt Nam cho Python

PyPI Python License

Thư viện Python lấy dữ liệu thị trường chứng khoán Việt Nam — giá cuối ngày và trong phiên, khớp lệnh từng lệnh (tick-by-tick), dòng tiền theo nhóm nhà đầu tư, báo cáo tài chính và danh mục mã — trả về thẳng dưới dạng pandas.DataFrame.

Phủ HOSE (HSX), HNX và UPCOM: 1.645 cổ phiếu và chứng chỉ quỹ, 632 chứng quyền có bảo đảm, hợp đồng phái sinh VN30F1M, và các chỉ số VNINDEX, VN30, HNX-INDEX, UPCOM-INDEX.

Python library for Vietnam stock market data — daily and intraday OHLCV, tick-by-tick trades, foreign investor flows, financial statements. Covers HOSE, HNX and UPCOM. Returns pandas DataFrames.

pip install finlens
import finlens

client = finlens.client(api_key="flk_...")  # hoặc đặt biến FINLENS_API_KEY

df = client.eod.stock.ohlcv("HPG,VCB,FPT", start="2026-01-01", end="2026-01-05")
print(df)
#   symbol       date   open   high    low  close       volume
# 0    FPT 2026-01-05  94.40  94.40  91.93  93.71    7129300.0
# 1    HPG 2026-01-05  23.57  23.70  22.94  23.17   59427911.0
# 2    VCB 2026-01-05  ...

Giá ở đây tính bằng nghìn đồng — 23.17 nghĩa là 23.170 VND.


Mục lục


Vì sao dùng finlens

Trả về pandas.DataFrame trần, không phải wrapper. Ghi được to_parquet, nối được pd.concat, dùng được mọi tutorial pandas bạn từng đọc.

Nhiều mã trong một request. ohlcv("HPG,VCB,FPT,...") với 50 mã là một lời gọi HTTP chứ không phải 50 lời gọi tuần tự.

Đơn vị được khai báo, không phải đoán. Mỗi frame mang theo df.attrs["finlens"]["units"]. Giá cổ phiếu Việt Nam thường ghi bằng nghìn đồng còn chứng quyền bằng đồng — nhầm chỗ này sai đúng 1000 lần và không có lỗi nào báo. Thư viện tách chúng thành các namespace riêng nên một lời gọi không bao giờ trả về bảng trộn hai đơn vị.

Kết quả rỗng vẫn đúng cột, đúng kiểu. Ngày thị trường nghỉ, df["close"] vẫn chạy — không KeyError.

Type hint đầy đủ, docstring tiếng Việt. Autocomplete và help() hoạt động; mypy --strict chạy sạch.


Cài đặt và khoá API

pip install finlens

Yêu cầu Python 3.11+ và pandas 3.0+.

Lấy khoá API tại finlens.vn. Khoá có dạng flk_....

import finlens

# Cách 1 — truyền thẳng
client = finlens.client(api_key="flk_...")

# Cách 2 — biến môi trường FINLENS_API_KEY (khuyến nghị)
client = finlens.client()

# Dùng như context manager để đóng kết nối gọn gàng
with finlens.client() as client:
    df = client.eod.stock.ohlcv("HPG")

Tạo client không chạm mạng — an toàn để đặt ở cell đầu notebook hoặc trong __init__ của một lớp.

client.whoami()  # gói dịch vụ, hạn mức, ngày hết hạn
client.status()  # trạng thái service (không cần khoá)

Lấy được những dữ liệu gì

Giá cuối ngày (EOD)

client.eod.stock.ohlcv("HPG", start="2020-01-01", interval="1w")
client.eod.index.ohlcv("VNINDEX")
client.eod.derivative.ohlcv("VN30F1M")
client.eod.warrant.ohlcv("CHPG2628")
client.eod.sector.ohlcv("8355")  # chỉ số ngành ICB

Cổ phiếu có từ 2007, chỉ số ngành từ 2000. interval nhận 1d, 1w, 1mo, 3mo, 6mo, 1y — gộp nhóm chạy ở server.

Giá cổ phiếu mặc định đã điều chỉnh quyền; thêm adjusted=False để lấy giá thô đúng như phiên hôm đó.

Trong phiên và tick-by-tick

client.intraday.stock.ohlcv("HPG", interval="5min")
client.intraday.stock.ticks("HPG", date="2026-08-03")  # từng lệnh khớp
client.intraday.stock.net_active_value("HPG", interval="1h")  # mua/bán chủ động

Tick có từ 2022. interval trong phiên: 1min, 5min, 15min, 30min, 1h, 4h.

Cột side của tick có ba giá trị: buy (bên mua nâng giá chạm bên bán), sell (bên bán hạ giá chạm bên mua), và auction (khớp lệnh định kỳ ATO/ATC). Phiên định kỳ không có bên chủ động nên xếp nó vào mua hay bán đều sai — nó chiếm 1,4%–8,6% khối lượng tuỳ mã, quá lớn để giấu.

ticks() lấy một mã, một phiên mỗi lần gọi: một phiên phái sinh sôi động là hơn 90.000 dòng.

Dòng tiền theo nhóm nhà đầu tư

client.eod.stock.investor.flow("HPG", group="foreign")
client.eod.stock.investor.breakdown("HPG")  # tất cả các nhóm
client.eod.sector.investor.flow("8355")  # theo ngành ICB
Nhóm Có từ Phạm vi
foreign 2010 cả ba sàn
foreign_individual, foreign_institutional 2024 HOSE
local_individual, local_institutional 2024 HOSE
proprietary (tự doanh) 2022 cả ba sàn

Bốn nhóm chi tiết cộng lại bằng 0 — mua ròng của nhóm này là bán ròng của nhóm kia. foreign và proprietary đến từ nguồn khác và nằm trên trục riêng; meta.additive_groups trong response nói rõ nhóm nào cộng được với nhau.

Báo cáo tài chính

client.financials.statement("HPG", kind="balance_sheet", period="quarterly")
client.financials.periods("HPG")  # kỳ nào có số liệu
client.financials.line_items(com_type="NH", kind="balance_sheet")

Có từ 2004. Bốn loại hình doanh nghiệp (CT phi tài chính, NH ngân hàng, CK chứng khoán, BH bảo hiểm) có cây chỉ tiêu khác nhau, nhưng frame ở dạng long và mỗi dòng mang company_type của chính nó — nên statement(["HPG", "VCB"]) chạy được dù hai mã khác loại hình.

Tra cứu danh mục

client.meta.symbols()  # 1.645 mã
client.meta.symbols(exchange="HOSE")  # 431 mã
client.meta.symbols(icb="8300")  # toàn ngành ngân hàng
client.meta.symbols(kind="fund")  # 24 chứng chỉ quỹ niêm yết
client.meta.sectors(level=2)  # 19 ngành ICB cấp 2
client.meta.sectors(level=4)  # 106 ngành ICB cấp 4
client.meta.warrants(underlying="HPG")  # chứng quyền của HPG

Tham số icb= nhận cả mã cấp 2 lẫn cấp 4 — bạn không cần biết mã mình cầm thuộc cấp nào.

# Lấy danh sách mã để lặp
tickers = client.meta.symbols(exchange="HOSE")["symbol"].tolist()

Đơn vị — đọc trước khi tính toán

Đây là nguồn lỗi số một khi làm việc với dữ liệu chứng khoán Việt Nam, và nó sai âm thầm: không exception nào, chỉ là một con số sai.

Loại Cột giá Khối lượng Giá trị tiền
Cổ phiếu, ETF, chứng chỉ quỹ nghìn VND (22.3 = 22.300 đ) cổ phiếu VND
Chỉ số điểm chỉ số cổ phiếu —
Phái sinh điểm chỉ số hợp đồng VND
Chứng quyền VND thô chứng quyền VND

Luôn đọc thay vì giả định:

df.attrs["finlens"]["units"]  # {'close': 'kVND', 'volume': 'share', ...}
df.attrs["finlens"]["price_basis"]  # 'adjusted' hoặc 'raw'
df.attrs["finlens"]["as_of"]  # mốc nước của dữ liệu

⚠️ DataFrame.attrs không sống sót qua pd.concat hay merge của pandas. Đọc đơn vị trước khi ghép frame.


Tra cứu nhanh

Bạn muốn Gọi
Giá VNINDEX theo tháng client.eod.index.ohlcv("VNINDEX", interval="1mo")
Khối ngoại mua ròng HPG client.eod.stock.investor.flow("HPG")
Từng lệnh khớp một phiên client.intraday.stock.ticks("HPG", date="2026-08-03")
Cân đối kế toán theo quý client.financials.statement("HPG", kind="balance_sheet", period="quarterly")
Mọi mã ngành ngân hàng client.meta.symbols(icb="8300")
Chứng quyền còn hạn client.meta.warrants()
Giá thô, chưa điều chỉnh client.eod.stock.ohlcv("HPG", adjusted=False)

Mọi phương thức đều nhận refresh=True để bỏ qua cache, và on_error="raise" để một mã lỗi làm cả lời gọi thất bại thay vì chỉ cảnh báo.


Xử lý lỗi

Mọi lỗi kế thừa finlens.FinLensError và mang theo .code, .request_id, .doc_url.

import finlens

try:
    df = client.eod.stock.ohlcv("HPG")
except finlens.RateLimitError as e:
    print(f"Chờ {e.retry_after} giây")
except finlens.DailyQuotaExceededError as e:
    print(f"Hết hạn mức ngày, mở lại lúc {e.resets_at}")
except finlens.InvalidSymbolError:
    print("Mã không tồn tại")
except finlens.FinLensError as e:
    print(f"{e.code}: {e}")

Cây ngoại lệ:

FinLensError
├── AuthError          InvalidApiKeyError · ApiKeyExpiredError · AccountExpiredError
├── TierError          DatasetNotInTierError · SymbolNotInTierError
├── QuotaError         RateLimitError · DailyQuotaExceededError
├── ValidationError    InvalidSymbolError · InvalidDateRangeError · InvalidIntervalError
├── TransportError     ConnectionFailedError · TlsVerificationError · RequestTimeoutError
└── DataError          SchemaMismatchError · NoDataError

ValidationError cũng kế thừa ValueError, nên except ValueError vẫn bắt được.

Một mã lỗi không làm mất các mã còn lại. Mặc định on_error="warn": bạn nhận về những mã thành công kèm một cảnh báo, chi tiết ở df.attrs["finlens"]["failed"].


Async

Mọi thứ có bản async với cùng chữ ký:

import asyncio
import finlens


async def main():
    async with finlens.AsyncClient(api_key="flk_...") as client:
        df = await client.eod.stock.ohlcv("HPG,VCB")


asyncio.run(main())

Bản đồng bộ và bất đồng bộ dùng chung một lõi, nên không có chuyện một bên được sửa bug còn bên kia thì không.


Câu hỏi thường gặp

Giá cổ phiếu tính bằng đơn vị gì? Nghìn đồng. 22.3 nghĩa là 22.300 VND. Chứng quyền thì ngược lại — VND thô. Luôn đọc df.attrs["finlens"]["units"].

Dữ liệu có từ năm nào? Giá cuối ngày cổ phiếu từ 2007, chỉ số ngành từ 2000, khối ngoại từ 2010, báo cáo tài chính từ 2004, tick trong phiên từ 2022. Nhóm nhà đầu tư chi tiết (cá nhân/tổ chức, trong nước/nước ngoài) từ 2024 và chỉ có ở HOSE.

Lấy được dữ liệu của phiên đang chạy không? Được. Dữ liệu trong phiên cập nhật liên tục và meta.as_of cho biết mốc nước. Lưu ý giá trong phiên là giá thô, chưa điều chỉnh quyền — khác với EOD.

Lấy được bao nhiêu mã một lần? Tuỳ gói dịch vụ, xem client.limits(). Thư viện tự chia nhỏ và gọi song song, bạn cứ truyền cả danh sách. Riêng ticks() là một mã một phiên.

Có sổ lệnh (order book) không? Không. ticks() trả lệnh đã khớp, không phải độ sâu sổ lệnh. Giá đặt và khối lượng chờ theo bậc không có trong nguồn dữ liệu.

Có dữ liệu quỹ mở, trái phiếu, hàng hoá không? Chưa. Chứng chỉ quỹ niêm yết (kind="fund") thì có; quỹ mở, NAV, trái phiếu và hàng hoá thì không.

Cache hoạt động thế nào? Tự động. Dữ liệu lịch sử cache 7 ngày, phiên gần nhất 60 giây, danh mục và cây ngành 24 giờ. refresh=True để bỏ qua, client.cache.stats() để xem.

Chạy sau proxy doanh nghiệp hoặc phần mềm diệt virus? Nếu gặp TlsVerificationError, trỏ tới CA bundle của tổ chức bạn: finlens.client(ca_bundle="/đường/dẫn/ca.pem") hoặc đặt biến môi trường FINLENS_CA_BUNDLE.


Nâng cấp từ 0.1.x

Phiên bản 1.0 là bản viết lại và có thay đổi phá vỡ tương thích. Danh sách đầy đủ nằm ở changelog. Đáng chú ý nhất:

  • Tên cột dùng snake_case — Date thành date.
  • interval="1M" bị từ chối vì nhập nhằng giữa một tháng và một phút; dùng 1mo hoặc 1min.
  • net_active_value() trước đây trả ba đơn vị khác nhau dưới cùng một tên cột; nay luôn là VND và có meta.value_unit khai rõ.
  • Mọi tham số sau mã chứng khoán là keyword-only.

Tài liệu và hỗ trợ

Khi báo lỗi, kèm theo finlens.build_info() và request_id trong thông báo lỗi — hai thứ đó cho biết chính xác bản build nào và request nào.

>>> finlens.build_info()
{'version': '1.0.1', 'commit': 'a1b2c3d', 'built_at': '...', 'cython': '3.2.9', ...}

Giấy phép

MIT — xem toàn văn giấy phép. File LICENSE cũng đi kèm trong gói.

Metadata

Release files for finlens 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for finlens 1.1.0
File
finlens-1.1.0-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
finlens-1.1.0-cp314-cp314-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ x86-64 Details
finlens-1.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
finlens-1.1.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 Details
finlens-1.1.0-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
finlens-1.1.0-cp314-cp314-macosx_10_15_x86_64.whl CPython 3.14 CPython 3.14 macOS 10.15+ x86-64 Details
finlens-1.1.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
finlens-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
finlens-1.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
finlens-1.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 Details
finlens-1.1.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
finlens-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.13+ x86-64 Details
finlens-1.1.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
finlens-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
finlens-1.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
finlens-1.1.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 Details
finlens-1.1.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
finlens-1.1.0-cp312-cp312-macosx_10_13_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.13+ x86-64 Details
finlens-1.1.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
finlens-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
finlens-1.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
finlens-1.1.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 Details
finlens-1.1.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
finlens-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.9+ x86-64 Details

Total release size: 19.0 MB

Release files / finlens-1.1.0-cp314-cp314-win_amd64.whl

Download URL finlens-1.1.0-cp314-cp314-win_amd64.whl
Size 758.6 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
21d3f23403e509dd05daad82c5c06cb505768deff06c456ccd9b938bb8740775
BLAKE2b-256 checksum
How to use checksums
24dec945cd4a29fe8fd3c90d1b4a1e0fa9daac3931a4fcd0c517c05a465f5452
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.

Transparency log

Release files / finlens-1.1.0-cp314-cp314-musllinux_1_2_x86_64.whl

Download URL finlens-1.1.0-cp314-cp314-musllinux_1_2_x86_64.whl
Size 852.3 kB
Tags CPython 3.14 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
6e04957fd2898545fd82777d03edb76aa38fd9e8f5dfda2be4fc60b3467a8242
BLAKE2b-256 checksum
How to use checksums
66cb81a267daf891b70e7d4d34fe1f47a83f7a7e691435f448a178ea8f8550be
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.

Transparency log

Release files / finlens-1.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL finlens-1.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 848.5 kB
Tags CPython 3.14 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
664202624c38e3919f27b9a70810432a291a47ee92ff88f198b5cc0b94c37eec
BLAKE2b-256 checksum
How to use checksums
1642bfe50376761a5c20a7303b88135d17c780449e0b28dc1724d8383b993998
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.

Transparency log

Release files / finlens-1.1.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL finlens-1.1.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 806.4 kB
Tags CPython 3.14 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
8b4ebeb3c8690c4f9822cac4ff5148462e64b89ee618a27eb59cc85d6f8987b9
BLAKE2b-256 checksum
How to use checksums
fc52dba0faa1c5f878ec966f509e0d66d95d882defb5f3e426aab9644c14d2d8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.

Transparency log

Release files / finlens-1.1.0-cp314-cp314-macosx_11_0_arm64.whl

Download URL finlens-1.1.0-cp314-cp314-macosx_11_0_arm64.whl
Size 734.3 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
523a63fa8bb1bf2089621c855e196f673f5d3c1d90f0c770effdb0167cfd122e
BLAKE2b-256 checksum
How to use checksums
310a2050321e0ac6c00ebec7208c7402cb53adaec2b2b4a62c17d303d1ddd20f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.

Transparency log

Release files / finlens-1.1.0-cp314-cp314-macosx_10_15_x86_64.whl

Download URL finlens-1.1.0-cp314-cp314-macosx_10_15_x86_64.whl
Size 759.6 kB
Tags CPython 3.14 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
19135780dbd24e6d34d7f6ade99fd6add030f197acd6ff5346b685cd37205ce3
BLAKE2b-256 checksum
How to use checksums
dea55aa75f72cfe4f50b5ee7fa810c371db047c7eb486ecfd6abc54037d2887b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.

Transparency log

Release files / finlens-1.1.0-cp313-cp313-win_amd64.whl

Download URL finlens-1.1.0-cp313-cp313-win_amd64.whl
Size 741.6 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
bad4307e3956ce0ed9ff023bb2ffb4ccd2d77eea5cb5964a060d6cd6aa6803e3
BLAKE2b-256 checksum
How to use checksums
63405f59e2f0a387bd1a2551b77d73bcb17e5f9f045b83f27f795c9dac8f0cfa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.

Transparency log

Release files / finlens-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL finlens-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl
Size 848.4 kB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
0d6d8bd0fd9c2edb6abd6c1d6286fae1db037e0984a1ebe3e8e8c81f3c509eb0
BLAKE2b-256 checksum
How to use checksums
ab7224e5cbf8415c7047576b273d4936ef665fcde4a07fe1c0b216fed222cafb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.

Transparency log

Release files / finlens-1.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL finlens-1.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 845.0 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
d949a7cfc51e7373de4288e89ade6e5fd06958032df492869250805a44db4544
BLAKE2b-256 checksum
How to use checksums
6df076fd1f5acd1c922b445bca3b53d6f7db1d7a7d688f3053e08e93cfe0754f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.

Transparency log

Release files / finlens-1.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL finlens-1.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 795.5 kB
Tags CPython 3.13 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
650f72dca4de0ec84cf587768d7e5a90e7d42fcc788c9d9139fd002ebd487e32
BLAKE2b-256 checksum
How to use checksums
df0e0ef880cf22953069549ed711e755ee54ae676bca7269c01f8cf379c93ab0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.

Transparency log

Release files / finlens-1.1.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL finlens-1.1.0-cp313-cp313-macosx_11_0_arm64.whl
Size 731.7 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
88a5f2069a8b784a6a2a342f153f00178b0f5031d565765edbb2f6f051624f0a
BLAKE2b-256 checksum
How to use checksums
ee42614a801807509d88d30371d8771c08ae0f9db2bd6f857ea030170ba66a17
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.

Transparency log

Release files / finlens-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl

Download URL finlens-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl
Size 757.5 kB
Tags CPython 3.13 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
2fd9ff42a77609bd3f69a75dcd657a13d461fcc10dcf394b4c27209529e97aee
BLAKE2b-256 checksum
How to use checksums
7f0a5b41396f18716d21e4daa08b9bc1d73ed655c631103588a2937cf99e8615
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.

Transparency log

Release files / finlens-1.1.0-cp312-cp312-win_amd64.whl

Download URL finlens-1.1.0-cp312-cp312-win_amd64.whl
Size 748.7 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
f2be61664f00cb0ef3fa44f9c3fd4e50efc3727852ce19712e35a41b618db3c4
BLAKE2b-256 checksum
How to use checksums
7dc87b9eb552f023c7832345145f5a80d99b7ca923b551a701e3aa383765cfcd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.

Transparency log

Release files / finlens-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL finlens-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl
Size 854.6 kB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
5dc92f6a801cd6c4aa295488c129c5ecf2bd790a5504078db58a3dab72180ab9
BLAKE2b-256 checksum
How to use checksums
0247813eb2b1a35b28a6bcdc2e7c18a0fc95436b663a0eeab2bc23c9bda55436
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.

Transparency log

Release files / finlens-1.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL finlens-1.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 850.9 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
e1e15551e3e5a7069d8c41eee52c0f905ed117ea12ead389f27626db06a83b3a
BLAKE2b-256 checksum
How to use checksums
b57783446d4b5156f98ec0af93d0ded13415cbd09c0e04efcf5cae9a3b158225
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.

Transparency log

Release files / finlens-1.1.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL finlens-1.1.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 800.7 kB
Tags CPython 3.12 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
958dddde9348e79a29fb90e0c5f1ce76f2c658c62ddf587926beacfaceb829f9
BLAKE2b-256 checksum
How to use checksums
1f6d8f37c3aab07ef6681a62e6dd1f67b27513d14c037c2612f751264d70a32d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.

Transparency log

Release files / finlens-1.1.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL finlens-1.1.0-cp312-cp312-macosx_11_0_arm64.whl
Size 736.5 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
fca4beab2698c4a3c8d5acce1dd2f697cdd79b942d078b92bcc56dea515ebfa6
BLAKE2b-256 checksum
How to use checksums
5badceebe35df2cb7b7cfaf0cdc59561d6adacd8030c301f6359bc0ac8536706
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.

Transparency log

Release files / finlens-1.1.0-cp312-cp312-macosx_10_13_x86_64.whl

Download URL finlens-1.1.0-cp312-cp312-macosx_10_13_x86_64.whl
Size 759.7 kB
Tags CPython 3.12 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
ec13eea19f0a91f18d13fc6a1f700b404d8f245b46d938a1d4c5ac46291f3698
BLAKE2b-256 checksum
How to use checksums
60b8f431d4a5232d11d560e61f78ba248a2b641e3a910be6c22a8bc35c38bbfb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.

Transparency log

Release files / finlens-1.1.0-cp311-cp311-win_amd64.whl

Download URL finlens-1.1.0-cp311-cp311-win_amd64.whl
Size 767.3 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
980403050d5fa0e915e77efef105620da8436b4889f2329bcd2c0f414f154884
BLAKE2b-256 checksum
How to use checksums
40d9f4ac1f926ffa1ee010f1571f7f93feff2a8c41eed121cc583e41e6039766
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.

Transparency log

Release files / finlens-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL finlens-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl
Size 843.2 kB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
0bc3d9a78e85013ffdb3dee6ab5753563765032d2da9d9845f7c7181282f6a7a
BLAKE2b-256 checksum
How to use checksums
ff717b678b8ac823133a808cfa82095649297742f151d0bf2e5f8fcef669338c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.

Transparency log

Release files / finlens-1.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL finlens-1.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 840.5 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
960bbfa6743e40286131fe1f5d839336fb107fa5a8f6676951b5d6cc587f9e4e
BLAKE2b-256 checksum
How to use checksums
b1fe139642201db93b3eb302e8faa34e1fe57f8d516d154645126e0cc031daf1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.

Transparency log

Release files / finlens-1.1.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL finlens-1.1.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 801.7 kB
Tags CPython 3.11 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
9a5a3789d53c4ac5c4d253dc028121fc2fd7baebaba86cc68422f093169d2156
BLAKE2b-256 checksum
How to use checksums
5489b380350f097c811b66f3249366a44b479055976d89f2853a2b869a2c4aed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.

Transparency log

Release files / finlens-1.1.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL finlens-1.1.0-cp311-cp311-macosx_11_0_arm64.whl
Size 735.8 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
cfbb99f0812b7c28ad492d028fe0859325e01164fede5066c80bab6000e9b752
BLAKE2b-256 checksum
How to use checksums
8290f3d38757dbd1c528115bdd96742ee0e2ed0abfa7659afbc7bb33d9b78edd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.

Transparency log

Release files / finlens-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl

Download URL finlens-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl
Size 760.2 kB
Tags CPython 3.11 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
1a9213b4bb7318984006e9a90135e4eb99b00fb5ae61703eb8ed44391909cfdb
BLAKE2b-256 checksum
How to use checksums
d8cba5480dabbf89402673b16598c9839269fdbc0fe6c0ea74349d3c7b1af517
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.

Transparency log

Release history Release notifications | RSS feed

1.5.0

6 release files

1.4.0

6 release files

1.3.0

6 release files

This release

1.1.0 This release

24 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page