Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Changelog

All notable changes to the `faker-pk` project will be documented in this file.

## [v2.0.0]

### Added
- **SQLite Database Architecture**: Migrated data storage from static Python dictionaries to an optimized SQLite database backend (`faker_pk.db`) for faster, maintainable queries.
- **Education Module (`education.py`)**: Added support for generating localized Pakistani education data, including degree levels, majors, universities, grading metrics, and complete student profiles.
- **15 Industry Sectors**: Expanded company and job generation across 15 distinct industry sectors (IT/Software, Banking, Healthcare, Textile, Agriculture, Telecommunications, FMCG, Petroleum, Logistics, Media, etc.).
- **Industry-Aware Financial Data**: Added realistic job-level salary ranges (PKR), bank names, and valid formatted IBAN generation.
- **Faker Provider Integration**: Custom provider class `FakerPKProvider` for seamless integration into the standard `faker` library ecosystem.
- **GitHub Actions CI/CD Pipeline**: Configured automated test suites, pytest execution, and coverage tracking workflow.

### Changed
- **Modularized Test Suite**: Split test scripts into 26+ focused unit test modules in `tests/` covering personal, address, company, education, and provider interfaces.
- **Packaging & Build System**: Standardized package setup using `pyproject.toml` and setuptools configuration.
- **Documentation**: Overhauled `README.md` with complete API reference tables, installation instructions, usage examples, and author/maintainer metadata.

### Improved
- **Test Coverage**: Increased code coverage from unmonitored baseline to **>90%**.
- **CNIC & Gender Parity Validation**: Ensured strict formatting (`xxxxx-xxxxxxx-x`) and accurate gender matching based on CNIC last digit rules.

---

## [v1.0.0] - Initial Legacy Release

### Added
- Initial Pakistani personal data generation (male/female names, CNIC numbers, mobile numbers, network providers).
- Basic address generation (cities, provinces, full addresses).
- Basic company names and job titles.
- Initial package structure for PyPI distribution.
4 changes: 4 additions & 0 deletions CONTRIBUTORS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Contributors

* **Muhammad Khubaib Ahmad** - Creator, project lead, and maintainer.
* **Ayesha Anwar** - Major contributor to the v2.0 release, including feature development and code improvements as open-source contributor under INFERENCE Lab.
54 changes: 27 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,18 @@ It also fully integrates as a **Faker Provider** so you can seamlessly use it in

---

## 👥 Authors
## Authors

- **Muhammad Khubaib Ahmad** (`khubaib.ahmad@inference-lab.org`) - Original creator of `faker-pk`
- **INFERENCE Lab** (`contact@inference-lab.org`) - Organization

## 🔧 Maintainers
## Maintainers
- **Ayesha Anwar** (`hayesha1744@gmail.com`) - Lead developer of `faker-pk` v2.0
- **INFERENCE Lab** (`contact@inference-lab.org`) - Project organization

---

## 💡 Why Use `faker-pk`?
## Why Use `faker-pk`?

Developers building Pakistani software applications often encounter issues with:
- Generating realistic, localized user profiles (CNIC, phone numbers, addresses)
Expand All @@ -36,7 +36,7 @@ Developers building Pakistani software applications often encounter issues with:

---

## 📦 Installation
## Installation

```bash
pip install faker-pk
Expand All @@ -50,7 +50,7 @@ pip install --upgrade faker-pk

---

## 🚀 Quick Start (Standalone `FakerPK` Class)
## Quick Start (Standalone `FakerPK` Class)

```python
from faker_pk import FakerPK
Expand All @@ -68,9 +68,9 @@ print("University:", fake.institution(level="university", city="Lahore"))

---

## 🧩 Complete API Reference
## Complete API Reference

### 👤 Personal Information
### Personal Information

| Function | Description | Options / Filters | Example Output |
| :--- | :--- | :--- | :--- |
Expand All @@ -85,7 +85,7 @@ print("University:", fake.institution(level="university", city="Lahore"))

---

### 🏠 Address Information
### Address Information

| Function | Description | Options / Filters | Example Output |
| :--- | :--- | :--- | :--- |
Expand All @@ -95,7 +95,7 @@ print("University:", fake.institution(level="university", city="Lahore"))

---

### 🏢 Company & Financial Information
### Company & Financial Information

| Function | Description | Options / Filters | Example Output |
| :--- | :--- | :--- | :--- |
Expand All @@ -105,7 +105,7 @@ print("University:", fake.institution(level="university", city="Lahore"))
| `iban(count=1, bank=None)` | Valid Pakistani IBAN format | `bank='HBL'/...` | `"PK27UNIL8060952103358359"` |
| `salary(count=1, industry=None)` | Realistic salary in PKR| `industry='IT'/...` | `115500` |

#### 📊 Supported Industry Codes & Names:
#### Supported Industry Codes & Names:
When filtering `company_name()`, `job_title()`, or `salary()`, you can pass any of the following codes or full names:

- `IT` (Information Technology)
Expand All @@ -126,7 +126,7 @@ When filtering `company_name()`, `job_title()`, or `salary()`, you can pass any

---

### 💼 Job Information
### Job Information

| Function | Description | Options / Filters | Example Output |
| :--- | :--- | :--- | :--- |
Expand All @@ -135,7 +135,7 @@ When filtering `company_name()`, `job_title()`, or `salary()`, you can pass any

---

### 🎓 Education & Student Profiles
### Education & Student Profiles

| Function | Description | Options / Filters | Example Output |
| :--- | :--- | :--- | :--- |
Expand All @@ -145,7 +145,7 @@ When filtering `company_name()`, `job_title()`, or `salary()`, you can pass any

---

## 🔁 Generating Multiple Records
## Generating Multiple Records

Passing `count > 1` returns a list of items:

Expand All @@ -164,7 +164,7 @@ profiles = fake.student_profile(count=5, level="university")

---

## 🔌 Standard `faker` Integration (`FakerPKProvider`)
## Standard `faker` Integration (`FakerPKProvider`)

You can register `FakerPKProvider` with Python's standard `faker` library. All methods are available prefixed with `pk_` (or as alias methods):

Expand All @@ -184,7 +184,7 @@ print(fake.pk_student_profile())

---

## 🛠️ Local Development & Testing
## Local Development & Testing

1. **Clone the repository**:
```bash
Expand All @@ -204,7 +204,7 @@ print(fake.pk_student_profile())

---

## 🤝 Contributing
## Contributing

We welcome contributions from the community! Whether you are expanding datasets, adding validation rules, or improving performance, here is how you can help:

Expand All @@ -217,29 +217,29 @@ We welcome contributions from the community! Whether you are expanding datasets,

---

## 👤 Authors & Contact Info
## Authors & Contact Info

### **Muhammad Khubaib Ahmad**
- 📧 **Email**: [khubaib.ahmad@inference-lab.org](mailto:khubaib.ahmad@inference-lab.org)
- 🌐 **GitHub**: [Khubaib8281](https://github.com/Khubaib8281)
- 🐍 **PyPI**: [Khubaib_01](https://pypi.org/project/faker-pk)
- 💼 **LinkedIn**: [Muhammad Khubaib Ahmad](https://www.linkedin.com/in/muhammad-khubaib-ahmad-/)
- **Email**: [khubaib.ahmad@inference-lab.org](mailto:khubaib.ahmad@inference-lab.org)
- **GitHub**: [Khubaib8281](https://github.com/Khubaib8281)
- **PyPI**: [Khubaib_01](https://pypi.org/project/faker-pk)
- **LinkedIn**: [Muhammad Khubaib Ahmad](https://www.linkedin.com/in/muhammad-khubaib-ahmad-/)

### **Ayesha Anwar**
- 📧 **Email**: [hayesha1744@gmail.com](mailto:hayesha1744@gmail.com)
- 🌐 **GitHub**: [Ayesha-Anwar607](https://github.com/Ayesha-Anwar607)
- 💼 **LinkedIn**: [Ayesha Anwar](https://www.linkedin.com/in/ayesha-anwar-3b73b8349/)
- **Email**: [hayesha1744@gmail.com](mailto:hayesha1744@gmail.com)
- **GitHub**: [Ayesha-Anwar607](https://github.com/Ayesha-Anwar607)
- **LinkedIn**: [Ayesha Anwar](https://www.linkedin.com/in/ayesha-anwar-3b73b8349/)

---

## 📄 License
## License

Distributed under the **MIT License**. See `LICENSE` for more information.

---

## ⭐ Support
## Support

If `faker-pk` was helpful for your project or application, please consider giving the repository a star on GitHub!
👉 [https://github.com/Inference-LAB/faker-pk](https://github.com/Inference-LAB/faker-pk)
[https://github.com/Inference-LAB/faker-pk](https://github.com/Inference-LAB/faker-pk)

Loading