diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..f71b482 --- /dev/null +++ b/CHANGELOG.md @@ -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. diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md new file mode 100644 index 0000000..29f0f46 --- /dev/null +++ b/CONTRIBUTORS.md @@ -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. diff --git a/README.md b/README.md index c8feff3..36b393b 100644 --- a/README.md +++ b/README.md @@ -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) @@ -36,7 +36,7 @@ Developers building Pakistani software applications often encounter issues with: --- -## 📦 Installation +## Installation ```bash pip install faker-pk @@ -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 @@ -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 | | :--- | :--- | :--- | :--- | @@ -85,7 +85,7 @@ print("University:", fake.institution(level="university", city="Lahore")) --- -### 🏠 Address Information +### Address Information | Function | Description | Options / Filters | Example Output | | :--- | :--- | :--- | :--- | @@ -95,7 +95,7 @@ print("University:", fake.institution(level="university", city="Lahore")) --- -### 🏢 Company & Financial Information +### Company & Financial Information | Function | Description | Options / Filters | Example Output | | :--- | :--- | :--- | :--- | @@ -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) @@ -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 | | :--- | :--- | :--- | :--- | @@ -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 | | :--- | :--- | :--- | :--- | @@ -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: @@ -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): @@ -184,7 +184,7 @@ print(fake.pk_student_profile()) --- -## 🛠️ Local Development & Testing +## Local Development & Testing 1. **Clone the repository**: ```bash @@ -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: @@ -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)