Metadata-Version: 2.4
Name: smartfaker
Version: 3.25.5
Summary: Fake address and IBAN generator for 200+ countries — async-first Python library
Project-URL: Homepage, https://github.com/abirxdhack/TheSmartFaker
Project-URL: Source, https://github.com/abirxdhack/TheSmartFaker
Project-URL: Issues, https://github.com/abirxdhack/TheSmartFaker/issues
Project-URL: Community, https://t.me/TheSmartDev
Project-URL: Author, https://t.me/ISmartCoder
Author-email: ISmartCoder <abirxdhackz@gmail.com>
License-Expression: LGPL-3.0-or-later
License-File: COPYING
License-File: COPYING.lesser
Keywords: address,bank,countries,data,fake,faker,generator,iban,mock,testing
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Software Development :: Testing
Requires-Python: >=3.8
Requires-Dist: pycountry
Provides-Extra: dev
Requires-Dist: hatch; extra == 'dev'
Requires-Dist: pytest; extra == 'dev'
Requires-Dist: pytest-asyncio; extra == 'dev'
Requires-Dist: pytest-cov; extra == 'dev'
Requires-Dist: twine; extra == 'dev'
Provides-Extra: docs
Requires-Dist: furo; extra == 'docs'
Requires-Dist: sphinx; extra == 'docs'
Requires-Dist: sphinx-copybutton; extra == 'docs'
Description-Content-Type: text/markdown

# SmartFaker

**Fake address & IBAN generator for 200+ countries — async-first Python library**

[![PyPI version](https://img.shields.io/pypi/v/smartfaker.svg)](https://pypi.org/project/smartfaker)
[![Python](https://img.shields.io/pypi/pyversions/smartfaker.svg)](https://pypi.org/project/smartfaker)
[![License](https://img.shields.io/pypi/l/smartfaker.svg)](https://pypi.org/project/smartfaker)

SmartFaker generates realistic fake postal addresses and IBAN numbers for
over 200 countries. It is async-first with synchronous wrappers, requires no
external API, and ships bundled country data.

## Installation

```bash
pip install smartfaker
```

## Quick Start

```python
from smartfaker import Faker

faker = Faker()

# Sync usage
addr = faker.address_sync("us")
iban = faker.iban_sync("DE")

print(addr["city"], addr["zip"])
print(iban["iban"])
```

```python
# Async usage
import asyncio
from smartfaker import Faker

faker = Faker()

async def main():
    addr = await faker.address("gb")
    iban = await faker.iban("FR")
    print(addr, iban["iban"])

asyncio.run(main())
```

## Features

- **200+ countries** — bundled JSON address data for every country and territory
- **IBAN generation** — 57 countries with country-specific algorithms and MOD-97 validation
- **Async-first** — all generation methods are `async`; sync wrappers included
- **Field filtering** — request only the fields you need
- **Batch generation** — generate addresses for multiple countries in one call
- **Zero external dependencies** beyond `pycountry`

## Documentation

- GitHub Pages: https://abirxdhack.github.io/TheSmartFaker/
- Repository: https://github.com/abirxdhack/TheSmartFaker

## API

### Address generation

```python
# Single address
addr = faker.address_sync("us")

# Multiple addresses
addrs = faker.address_sync("fr", amount=5)

# Specific fields only
addr = faker.address_sync("de", fields=["city", "zip", "street"])

# Batch — multiple countries
import asyncio
results = asyncio.run(faker.batch_addresses(["us", "gb", "de"]))
```

### IBAN generation

```python
# Single IBAN
iban = faker.iban_sync("DE")
print(iban["iban"])     # DE...
print(iban["details"])  # {"bank_code": ..., "account_number": ...}

# Multiple IBANs
ibans = faker.iban_sync("GB", amount=3)

# List supported countries
for c in faker.iban_countries():
    print(c["country_code"], c["country_name"])
```

## License

LGPL-3.0-or-later © ISmartCoder | [t.me/TheSmartDev](https://t.me/TheSmartDev)
