IFSCFinder (Python)
IFSCFinder is a high-performance Python package that provides lightning-fast IFSC code lookups through an embedded SQLite database. With sub-millisecond query times and 40x cache acceleration, it's optimized for banking automation, fintech analytics, and high-throughput microservice architectures.
Performance Metrics:
- Average lookup time: 0.01ms per query
- Throughput: 136,845 lookups/second (uncached), 5.5M/second (cached)
- Cache speedup: 40x faster for repeated queries
- Database size: 42MB compressed SQLite with full Indian banking network coverage
- Memory footprint: Minimal with configurable caching
Installation
pip install git+https://github.com/IntegerAlex/IFSCFinder.git#subdirectory=python
For local development:
cd /home/akshat/projects/ifsc/python
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
Usage
from ifscfinder import ifsc_to_details, ifsc_to_bank
details = ifsc_to_details("SBIN0000001")
bank_name = ifsc_to_bank("SBIN0000001")
ifsc_to_details(code)returns a dictionary withBANK,BRANCH,ADDRESS,CITY1,CITY2,STATE, andSTD_CODEkeys.- Field-specific helpers (
ifsc_to_bank,ifsc_to_branch,ifsc_to_state, etc.) offer ergonomic access. clear_lookup_cache()invalidates the in-memory cache when the database changes.get_database(db_path=None)returns the underlyingIFSCDatabasesingleton if you need lower-level control.
Data Source
The packaged SQLite database lives under ifscfinder/data/ifsc.db. Replace this file with an updated dataset to refresh lookups. The package automatically validates the presence of the database and raises a descriptive FileNotFoundError if it is missing.
Testing & Quality
- Run
python3 -m compileall src/ifscfinderto sanity check syntax. - Upcoming automated tests will live under
python/testsand be executed viapytest. - The code uses strict IFSC normalization and structured logging to aid production diagnostics.
Roadmap
- Publish the package to PyPI with automated GitHub Actions builds.
- Provide a JSON export pipeline to feed JavaScript, Go, and Rust ports.
- Synchronize API contracts across the forthcoming TypeScript client and other language bindings.
Contributing
- Fork the repository and create a feature branch.
- Run sanity checks before submitting a pull request.
- Document any API changes in this README and sync cross-language specs.
License
LGPL-2.1 License. See LICENSE in the project root.
Copyright Notice: Copyright (c) 2024 Akshat Kotpalliwar. All rights reserved.
This package is distributed under the GNU Lesser General Public License v2.1. See the LICENSE file for full copyright information and license terms.
Metadata
Release files for ifscfinder 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| ifscfinder-0.2.0.tar.gz | 13.0 MB | Without provenance | Details for ifscfinder-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| ifscfinder-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for ifscfinder-0.2.0-py3-none-any.whl |
Total release size: 26.1 MB
Release files / ifscfinder-0.2.0.tar.gz
| Download URL | ifscfinder-0.2.0.tar.gz |
|---|---|
| Size | 13.0 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d677216437fa0a422721d83886cd44eea3f04a9b874d557256ee71fc82197bc3
|
|
BLAKE2b-256 checksum How to use checksums |
24c71db38adfca7434d5c0846b6f268af0b0acc5118a90ed1e944432e96100d4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.24 {"installer":{"name":"uv","version":"0.9.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / ifscfinder-0.2.0-py3-none-any.whl
| Download URL | ifscfinder-0.2.0-py3-none-any.whl |
|---|---|
| Size | 13.1 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
97d250337a7399964921d704e12615204db84811311c89a6675298c6c828aff6
|
|
BLAKE2b-256 checksum How to use checksums |
914ac12253a0eca28bd09951192764303e86eee3f4cc42490d726e2a19835407
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.24 {"installer":{"name":"uv","version":"0.9.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for ifscfinder 0.2.0
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.