phoney


Namephoney JSON
Version 0.3.1 PyPI version JSON
download
home_pageNone
SummaryA fake information generator for creating realistic personal data including names, phone numbers, emails, and more.
upload_time2025-08-11 00:08:29
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseNone
keywords fake data testing generator mock personal information
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            
# 🌐 Phoney - Realistic Fake Data Generator

[![PyPI Version](https://img.shields.io/pypi/v/phoney?color=blue)](https://pypi.org/project/phoney/)
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)
[![Python Versions](https://img.shields.io/pypi/pyversions/phoney)](https://pypi.org/project/phoney/)

Generate locale-aware fake personal data for testing, development, and anonymization. Perfect for populating databases and creating test users.

---

## πŸ†• What’s new in 0.3.1

- Resume/CV generator massively expanded: address, postal code, tools and soft skills, measurable project outcomes, volunteer work, publications, awards, references, languages with proficiency, education GPA/coursework, and richer text output.

---

## πŸ†• What’s new in 0.3.0

- New identifiers: IMEI, VIN, EAN-13, UPC-A, ISBN-13
- Resume/CV generator: assemble person + career + skills + employment history into a structured CV dict or formatted text
- All identifier generators are importable directly:
  - `from phoney import generate_imei, generate_vin, generate_ean13, generate_upca, generate_isbn13`
- The `Phoney` class exposes both explicit and generate_* convenience methods:
  - `p.imei()`, `p.vin()`, `p.ean13()`, `p.upca()`, `p.isbn13()`
  - `p.generate_imei()`, `p.generate_vin()`, `p.generate_ean13()`, ...
- Internet module hardened:
  - Locale/country-aware IPv4/IPv6 with regional fallbacks; canonical IPv6 formatting
  - TLD preferences per-country; robust domain/hostname/url builders
- Career module: job titles, salary ranges (by locale), skills, employment history
- CLI: `phoney-build-prefixes` to generate per-country IPv4/IPv6 prefix files from RIR datasets
- Packaging cleanup and Python >= 3.10

Quick test after install:
```python
from phoney import generate_imei, Phoney
print(generate_imei())
p = Phoney()
print(p.imei())
print(p.generate_imei())
print(p.resume(format='text')[:120])
```

---

## ✨ Features

- **50+ locales** including `en_US`, `fr_FR`, `ja_JP`, `de_DE`, and more
- **Complete profiles** with names, emails, phones, birthdates, and online presence
- **Gender-specific** name generation
- **Usernames, passwords, UUIDs, user agents, and social handles**
- **Financial data** (credit card, IBAN, BIC, etc.)
- **Zero dependencies** β€” lightweight and fast

---

## πŸ“¦ Installation

```bash
pip install phoney
```

---

## πŸš€ Basic Usage

```python
from phoney import Phoney

phoney = Phoney()

# Individual data
print(phoney.first_name(locale="it_IT"))  # β†’ "Marco"
print(phoney.phone(locale="ja_JP"))       # β†’ "+81 90-1234-5678"
print(phoney.email(first_name="Anna", last_name="Rossi", locale="it_IT"))

# Complete profile
profile = phoney.profile(locale="es_ES")
print(profile)

# Online presence
print(phoney.username("John", "Smith"))
print(phoney.password())
print(phoney.social_handle("John", "Smith", "twitter"))
print(phoney.online_presence("John", "Smith"))

# User agent and UUID
print(phoney.user_agent())
print(phoney.uuid())
```

---

## πŸ“š High-Level API: `Phoney` Class

| Method              | Description                                                      |
|---------------------|------------------------------------------------------------------|
| `first_name()`      | Generate first name (optionally by gender/locale)                |
| `last_name()`       | Generate last name (optionally by gender/locale)                 |
| `full_name()`       | Generate full name                                               |
| `gender()`          | Generate gender                                                  |
| `phone()`           | Generate phone number for locale                                 |
| `email()`           | Generate email address                                           |
| `age()`             | Generate random age                                              |
| `birthdate()`       | Generate random birthdate                                        |
| `profile()`         | Generate complete profile (see below)                            |
| `user_agent()`      | Generate browser user agent string                               |
| `uuid()`            | Generate UUID (v1, v3, v4, v5)                                   |
| `username()`        | Generate username from names                                     |
| `password()`        | Generate secure password                                         |
| `social_handle()`   | Generate social media handle for a platform                      |
| `online_presence()` | Generate dict of username, password, and social handles          |
| `tld(locale=None)`  | Generate a TLD with locale bias (e.g., GB β†’ co.uk, JP β†’ .jp)     |
| `domain(tld=None, locale=None)` | Generate a domain name honoring locale/TLD           |
| `hostname(domain=None, locale=None)` | Generate a hostname + domain                   |
| `url(scheme='https', domain=None, path_segments=None, query_params=None, locale=None)` | Generate a URL |
| `ipv4(country=None, locale=None)` | Generate a public-looking IPv4; country/locale-aware |
| `ipv6(global_unicast=True, country=None, locale=None)` | Generate a valid IPv6; country/locale-aware |
| `mac()`             | Generate a locally-administered unicast MAC                      |
| `resume(locale=None, family=None, years=8, format='dict|text')` | Generate a Resume/CV object or text |

---

## 🧩 Profile Structure

```python
{
  'first_name': 'Sophie',
  'last_name': 'Martin',
  'gender': 'female',
  'age': 34,
  'birthdate': datetime.date(1990, 5, 12),
  'email': 'sophie.martin@example.fr',
  'phone': '+33 6 12 34 56 78',
  'locale': 'fr_FR'
}
```

---

## πŸ› οΈ Low-Level API: Direct Functions

You can also import and use the following functions directly:

- `generate_person(locale, gender=None)` β€” dict with first/last name and gender
- `generate_phone(locale)` β€” phone number for locale
- `generate_email(first_name, last_name, locale, age=None, birth_year=None)`
- `generate_age(min_age=18, max_age=80)` β€” tuple of (age, birthdate)
- `generate_profile(locale, gender=None, domain=None, uuid_version=4)` β€” full profile
- `generate_user_agent(device_type="desktop")` β€” browser user agent string
- `generate_uuid(version=4, domain="example.com", name=None)` β€” UUID string
- `generate_username(first_name, last_name, locale='en_US')`
- `generate_password(min_length=12, max_length=18)`
- `generate_social_handles(first_name, last_name, platform)`
- `generate_online_presence(first_name, last_name)`
- `generate_resume(locale=None, family=None, years=8, format='dict|text')` β€” structured CV dict or a formatted plain-text resume

---

## πŸ“¦ Modules Overview
**phoney/age.py** β€” Age and birthdate generation
  - `generate_age(min_age=18, max_age=80)`

**phoney/agent.py** β€” User agent string generation
  - `generate_user_agent(device_type="desktop")`

**phoney/create_profile.py** β€” Complete profile generation
  - `generate_profile(locale, gender=None, domain=None, uuid_version=4)`

**phoney/data_loader.py** β€” Loads locale data, names, phone formats, email domains
  - `load_countries()`, `load_streets()`, `load_cities()`, `load_states()`
  - `get_available_locales()`, `load_names(locale)`, `load_phone_formats()`, `load_email_domains()`

**phoney/emailgen.py** β€” Email address generation
  - `generate_email(first_name, last_name, locale, age=None, birth_year=None, domain=None)`

**phoney/financial.py** β€” Financial data generator
  - `FinancialDataGenerator(locale='en_US')` class: `.generate()` for credit card, IBAN, BIC, etc.

**phoney/person.py** β€” Person name and gender generation
  - `generate_person(locale, gender=None)`

**phoney/phone.py** β€” Phone number generation
  - `generate_phone(locale=None, max_attempts=500)`

**phoney/username.py** β€” Username, password, and online presence generation
  - `generate_username()`, `generate_password()`, `generate_social_handles()`, `generate_online_presence()`

**phoney/uuidgen.py** β€” UUID generation
  - `generate_uuid(version=4, domain="example.com", name=None)`

---

## 🌍 Supported Locales

Phoney supports 50+ locales across Asia, Europe, the Middle East, and the Americas. To list all available locales:

```python
from phoney.data_loader import get_available_locales
print(get_available_locales())
```

---

## πŸ“œ License

**MIT** β€” Free for commercial and personal use.
Developed by **rarfile** β€’ [Report Issue](https://github.com/YTstyo/phoney/issues)

---

## πŸ§‘β€πŸ’Ό Career Module

Generate job titles, salary ranges, skills, and employment histories. Data loads from `phoney/data/career` when present.

Examples:
```python
from phoney import phoney
phoney.job_title()
phoney.salary(locale="en_US", family="software_engineer", level="Senior")
phoney.skills("software_engineer", level="Senior", count=10)
phoney.employment_history(years=8, locale="en_US", family="software_engineer")
phoney.experience_level(7)
```

Data files:
- `phoney/data/career/job_families.json`
- `phoney/data/career/skills.json`
- `phoney/data/career/salary_ranges.<locale>.json`
- `phoney/data/career/companies.<locale>.txt`

## 🌐 Internet Module

Generate domains, URLs, hostnames, IP addresses, and MAC addresses. Data loads from `phoney/data/internet` when present.

Examples:
```python
phoney.tld(locale="en_GB")            # β†’ 'co.uk'
phoney.domain(locale="en_GB")         # β†’ 'nova-1abc.co.uk'
phoney.hostname(locale="en_GB")       # β†’ 'api-xyz.nova-1abc.co.uk'
phoney.url(locale="ja_JP")            # β†’ 'https://alpha-zz9.jp/api/q8h2?page=3'
phoney.ipv4(locale="en_GB")           # country-aware IPv4 when data present; RIPE fallback otherwise
phoney.ipv6(locale="ja_JP")           # country/region-aware IPv6; always valid global-unicast
phoney.mac()
```

Data files:
- `phoney/data/internet/tlds.txt`
- `phoney/data/internet/words.txt`
 - `phoney/data/internet/ipv4_prefixes.<CC>.txt`  (optional, one IPv4 CIDR per line)
 - `phoney/data/internet/ipv6_prefixes.<CC>.txt`  (optional, one IPv6 CIDR per line)

Behavior notes:
- Locale parsing accepts `en_GB`, `en-GB`, or bare `GB`.
- IPv4: If `ipv4_prefixes.<CC>.txt` exists, IPs are drawn from those ranges; otherwise a regional fallback is used (e.g., RIPE for Europe, APNIC for Asia/Pacific) and private/reserved ranges are avoided.
- IPv6: If `ipv6_prefixes.<CC>.txt` exists, IPs are drawn from those ranges; otherwise a regional fallback /12 is used:
  - RIPE (Europe): `2a00::/12`
  - APNIC (Asia/Pacific): `2400::/12`
  - ARIN (North America): `2600::/12`
  - LACNIC (LatAm): `2800::/12`
  - AFRINIC (Africa): `2c00::/12`
  If no locale is provided, a valid global-unicast from `2000::/3` is generated. All IPv6 addresses are returned in canonical compressed form.

## πŸ†” Other Identifiers

Generate common test identifiers.

Examples:
```python
phoney.imei()                # 15-digit IMEI (Luhn-valid)
phoney.vin()                 # 17-char VIN with check digit
phoney.ean13()               # EAN-13 barcode
phoney.upca()                # UPC-A barcode
phoney.isbn13()              # ISBN-13 (default group '978')
```

Populate per-country prefixes automatically (offline):
1) Download the latest delegated-*-extended-latest files from each RIR to a folder (e.g., `C:/rir-data`):
  - delegated-apnic-extended-latest
  - delegated-arin-extended-latest
  - delegated-ripencc-extended-latest
  - delegated-lacnic-extended-latest
  - delegated-afrinic-extended-latest
2) Run the builder CLI to generate `ipv4_prefixes.<CC>.txt` and `ipv6_prefixes.<CC>.txt` files:
```powershell
phoney-build-prefixes --input-dir C:/rir-data
```
You can also specify a custom output directory:
```powershell
phoney-build-prefixes --input-dir C:/rir-data --output-dir C:/my-prefixes
```

## πŸ“ Resume/CV Generator

Create an in-depth resume by combining person, career, skills, and job history. Returns a structured dict or a readable text resume.

Examples:
```python
from phoney import generate_resume, Phoney

# Structured CV
cv = generate_resume(locale='en_GB', family='software_engineer', years=7, format='dict')
print(cv['headline'])
print(cv['skills']['core'])
print(len(cv['experience']))

# Text resume via Phoney
p = Phoney()
print(p.resume(locale='en_GB', years=5, format='text'))
```

Notes:
- `family` biases titles, skills, salary ranges, and responsibilities.
- `years` controls the history window and affects education year.
- Text output is a compact, single-file resume suitable for quick copying.
            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "phoney",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": "rarfile <d7276250@email.com>",
    "keywords": "fake data, testing, generator, mock, personal information",
    "author": null,
    "author_email": "rarfile <d7276250@email.com>",
    "download_url": "https://files.pythonhosted.org/packages/52/2c/d2be88f45b149aad56132248a6d88823ddcbf0313d28d16fe47eaf5dea30/phoney-0.3.1.tar.gz",
    "platform": null,
    "description": "\n# \ud83c\udf10 Phoney - Realistic Fake Data Generator\n\n[![PyPI Version](https://img.shields.io/pypi/v/phoney?color=blue)](https://pypi.org/project/phoney/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)\n[![Python Versions](https://img.shields.io/pypi/pyversions/phoney)](https://pypi.org/project/phoney/)\n\nGenerate locale-aware fake personal data for testing, development, and anonymization. Perfect for populating databases and creating test users.\n\n---\n\n## \ud83c\udd95 What\u2019s new in 0.3.1\n\n- Resume/CV generator massively expanded: address, postal code, tools and soft skills, measurable project outcomes, volunteer work, publications, awards, references, languages with proficiency, education GPA/coursework, and richer text output.\n\n---\n\n## \ud83c\udd95 What\u2019s new in 0.3.0\n\n- New identifiers: IMEI, VIN, EAN-13, UPC-A, ISBN-13\n- Resume/CV generator: assemble person + career + skills + employment history into a structured CV dict or formatted text\n- All identifier generators are importable directly:\n  - `from phoney import generate_imei, generate_vin, generate_ean13, generate_upca, generate_isbn13`\n- The `Phoney` class exposes both explicit and generate_* convenience methods:\n  - `p.imei()`, `p.vin()`, `p.ean13()`, `p.upca()`, `p.isbn13()`\n  - `p.generate_imei()`, `p.generate_vin()`, `p.generate_ean13()`, ...\n- Internet module hardened:\n  - Locale/country-aware IPv4/IPv6 with regional fallbacks; canonical IPv6 formatting\n  - TLD preferences per-country; robust domain/hostname/url builders\n- Career module: job titles, salary ranges (by locale), skills, employment history\n- CLI: `phoney-build-prefixes` to generate per-country IPv4/IPv6 prefix files from RIR datasets\n- Packaging cleanup and Python >= 3.10\n\nQuick test after install:\n```python\nfrom phoney import generate_imei, Phoney\nprint(generate_imei())\np = Phoney()\nprint(p.imei())\nprint(p.generate_imei())\nprint(p.resume(format='text')[:120])\n```\n\n---\n\n## \u2728 Features\n\n- **50+ locales** including `en_US`, `fr_FR`, `ja_JP`, `de_DE`, and more\n- **Complete profiles** with names, emails, phones, birthdates, and online presence\n- **Gender-specific** name generation\n- **Usernames, passwords, UUIDs, user agents, and social handles**\n- **Financial data** (credit card, IBAN, BIC, etc.)\n- **Zero dependencies** \u2014 lightweight and fast\n\n---\n\n## \ud83d\udce6 Installation\n\n```bash\npip install phoney\n```\n\n---\n\n## \ud83d\ude80 Basic Usage\n\n```python\nfrom phoney import Phoney\n\nphoney = Phoney()\n\n# Individual data\nprint(phoney.first_name(locale=\"it_IT\"))  # \u2192 \"Marco\"\nprint(phoney.phone(locale=\"ja_JP\"))       # \u2192 \"+81 90-1234-5678\"\nprint(phoney.email(first_name=\"Anna\", last_name=\"Rossi\", locale=\"it_IT\"))\n\n# Complete profile\nprofile = phoney.profile(locale=\"es_ES\")\nprint(profile)\n\n# Online presence\nprint(phoney.username(\"John\", \"Smith\"))\nprint(phoney.password())\nprint(phoney.social_handle(\"John\", \"Smith\", \"twitter\"))\nprint(phoney.online_presence(\"John\", \"Smith\"))\n\n# User agent and UUID\nprint(phoney.user_agent())\nprint(phoney.uuid())\n```\n\n---\n\n## \ud83d\udcda High-Level API: `Phoney` Class\n\n| Method              | Description                                                      |\n|---------------------|------------------------------------------------------------------|\n| `first_name()`      | Generate first name (optionally by gender/locale)                |\n| `last_name()`       | Generate last name (optionally by gender/locale)                 |\n| `full_name()`       | Generate full name                                               |\n| `gender()`          | Generate gender                                                  |\n| `phone()`           | Generate phone number for locale                                 |\n| `email()`           | Generate email address                                           |\n| `age()`             | Generate random age                                              |\n| `birthdate()`       | Generate random birthdate                                        |\n| `profile()`         | Generate complete profile (see below)                            |\n| `user_agent()`      | Generate browser user agent string                               |\n| `uuid()`            | Generate UUID (v1, v3, v4, v5)                                   |\n| `username()`        | Generate username from names                                     |\n| `password()`        | Generate secure password                                         |\n| `social_handle()`   | Generate social media handle for a platform                      |\n| `online_presence()` | Generate dict of username, password, and social handles          |\n| `tld(locale=None)`  | Generate a TLD with locale bias (e.g., GB \u2192 co.uk, JP \u2192 .jp)     |\n| `domain(tld=None, locale=None)` | Generate a domain name honoring locale/TLD           |\n| `hostname(domain=None, locale=None)` | Generate a hostname + domain                   |\n| `url(scheme='https', domain=None, path_segments=None, query_params=None, locale=None)` | Generate a URL |\n| `ipv4(country=None, locale=None)` | Generate a public-looking IPv4; country/locale-aware |\n| `ipv6(global_unicast=True, country=None, locale=None)` | Generate a valid IPv6; country/locale-aware |\n| `mac()`             | Generate a locally-administered unicast MAC                      |\n| `resume(locale=None, family=None, years=8, format='dict|text')` | Generate a Resume/CV object or text |\n\n---\n\n## \ud83e\udde9 Profile Structure\n\n```python\n{\n  'first_name': 'Sophie',\n  'last_name': 'Martin',\n  'gender': 'female',\n  'age': 34,\n  'birthdate': datetime.date(1990, 5, 12),\n  'email': 'sophie.martin@example.fr',\n  'phone': '+33 6 12 34 56 78',\n  'locale': 'fr_FR'\n}\n```\n\n---\n\n## \ud83d\udee0\ufe0f Low-Level API: Direct Functions\n\nYou can also import and use the following functions directly:\n\n- `generate_person(locale, gender=None)` \u2014 dict with first/last name and gender\n- `generate_phone(locale)` \u2014 phone number for locale\n- `generate_email(first_name, last_name, locale, age=None, birth_year=None)`\n- `generate_age(min_age=18, max_age=80)` \u2014 tuple of (age, birthdate)\n- `generate_profile(locale, gender=None, domain=None, uuid_version=4)` \u2014 full profile\n- `generate_user_agent(device_type=\"desktop\")` \u2014 browser user agent string\n- `generate_uuid(version=4, domain=\"example.com\", name=None)` \u2014 UUID string\n- `generate_username(first_name, last_name, locale='en_US')`\n- `generate_password(min_length=12, max_length=18)`\n- `generate_social_handles(first_name, last_name, platform)`\n- `generate_online_presence(first_name, last_name)`\n- `generate_resume(locale=None, family=None, years=8, format='dict|text')` \u2014 structured CV dict or a formatted plain-text resume\n\n---\n\n## \ud83d\udce6 Modules Overview\n**phoney/age.py** \u2014 Age and birthdate generation\n  - `generate_age(min_age=18, max_age=80)`\n\n**phoney/agent.py** \u2014 User agent string generation\n  - `generate_user_agent(device_type=\"desktop\")`\n\n**phoney/create_profile.py** \u2014 Complete profile generation\n  - `generate_profile(locale, gender=None, domain=None, uuid_version=4)`\n\n**phoney/data_loader.py** \u2014 Loads locale data, names, phone formats, email domains\n  - `load_countries()`, `load_streets()`, `load_cities()`, `load_states()`\n  - `get_available_locales()`, `load_names(locale)`, `load_phone_formats()`, `load_email_domains()`\n\n**phoney/emailgen.py** \u2014 Email address generation\n  - `generate_email(first_name, last_name, locale, age=None, birth_year=None, domain=None)`\n\n**phoney/financial.py** \u2014 Financial data generator\n  - `FinancialDataGenerator(locale='en_US')` class: `.generate()` for credit card, IBAN, BIC, etc.\n\n**phoney/person.py** \u2014 Person name and gender generation\n  - `generate_person(locale, gender=None)`\n\n**phoney/phone.py** \u2014 Phone number generation\n  - `generate_phone(locale=None, max_attempts=500)`\n\n**phoney/username.py** \u2014 Username, password, and online presence generation\n  - `generate_username()`, `generate_password()`, `generate_social_handles()`, `generate_online_presence()`\n\n**phoney/uuidgen.py** \u2014 UUID generation\n  - `generate_uuid(version=4, domain=\"example.com\", name=None)`\n\n---\n\n## \ud83c\udf0d Supported Locales\n\nPhoney supports 50+ locales across Asia, Europe, the Middle East, and the Americas. To list all available locales:\n\n```python\nfrom phoney.data_loader import get_available_locales\nprint(get_available_locales())\n```\n\n---\n\n## \ud83d\udcdc License\n\n**MIT** \u2014 Free for commercial and personal use.\nDeveloped by **rarfile** \u2022 [Report Issue](https://github.com/YTstyo/phoney/issues)\n\n---\n\n## \ud83e\uddd1\u200d\ud83d\udcbc Career Module\n\nGenerate job titles, salary ranges, skills, and employment histories. Data loads from `phoney/data/career` when present.\n\nExamples:\n```python\nfrom phoney import phoney\nphoney.job_title()\nphoney.salary(locale=\"en_US\", family=\"software_engineer\", level=\"Senior\")\nphoney.skills(\"software_engineer\", level=\"Senior\", count=10)\nphoney.employment_history(years=8, locale=\"en_US\", family=\"software_engineer\")\nphoney.experience_level(7)\n```\n\nData files:\n- `phoney/data/career/job_families.json`\n- `phoney/data/career/skills.json`\n- `phoney/data/career/salary_ranges.<locale>.json`\n- `phoney/data/career/companies.<locale>.txt`\n\n## \ud83c\udf10 Internet Module\n\nGenerate domains, URLs, hostnames, IP addresses, and MAC addresses. Data loads from `phoney/data/internet` when present.\n\nExamples:\n```python\nphoney.tld(locale=\"en_GB\")            # \u2192 'co.uk'\nphoney.domain(locale=\"en_GB\")         # \u2192 'nova-1abc.co.uk'\nphoney.hostname(locale=\"en_GB\")       # \u2192 'api-xyz.nova-1abc.co.uk'\nphoney.url(locale=\"ja_JP\")            # \u2192 'https://alpha-zz9.jp/api/q8h2?page=3'\nphoney.ipv4(locale=\"en_GB\")           # country-aware IPv4 when data present; RIPE fallback otherwise\nphoney.ipv6(locale=\"ja_JP\")           # country/region-aware IPv6; always valid global-unicast\nphoney.mac()\n```\n\nData files:\n- `phoney/data/internet/tlds.txt`\n- `phoney/data/internet/words.txt`\n - `phoney/data/internet/ipv4_prefixes.<CC>.txt`  (optional, one IPv4 CIDR per line)\n - `phoney/data/internet/ipv6_prefixes.<CC>.txt`  (optional, one IPv6 CIDR per line)\n\nBehavior notes:\n- Locale parsing accepts `en_GB`, `en-GB`, or bare `GB`.\n- IPv4: If `ipv4_prefixes.<CC>.txt` exists, IPs are drawn from those ranges; otherwise a regional fallback is used (e.g., RIPE for Europe, APNIC for Asia/Pacific) and private/reserved ranges are avoided.\n- IPv6: If `ipv6_prefixes.<CC>.txt` exists, IPs are drawn from those ranges; otherwise a regional fallback /12 is used:\n  - RIPE (Europe): `2a00::/12`\n  - APNIC (Asia/Pacific): `2400::/12`\n  - ARIN (North America): `2600::/12`\n  - LACNIC (LatAm): `2800::/12`\n  - AFRINIC (Africa): `2c00::/12`\n  If no locale is provided, a valid global-unicast from `2000::/3` is generated. All IPv6 addresses are returned in canonical compressed form.\n\n## \ud83c\udd94 Other Identifiers\n\nGenerate common test identifiers.\n\nExamples:\n```python\nphoney.imei()                # 15-digit IMEI (Luhn-valid)\nphoney.vin()                 # 17-char VIN with check digit\nphoney.ean13()               # EAN-13 barcode\nphoney.upca()                # UPC-A barcode\nphoney.isbn13()              # ISBN-13 (default group '978')\n```\n\nPopulate per-country prefixes automatically (offline):\n1) Download the latest delegated-*-extended-latest files from each RIR to a folder (e.g., `C:/rir-data`):\n  - delegated-apnic-extended-latest\n  - delegated-arin-extended-latest\n  - delegated-ripencc-extended-latest\n  - delegated-lacnic-extended-latest\n  - delegated-afrinic-extended-latest\n2) Run the builder CLI to generate `ipv4_prefixes.<CC>.txt` and `ipv6_prefixes.<CC>.txt` files:\n```powershell\nphoney-build-prefixes --input-dir C:/rir-data\n```\nYou can also specify a custom output directory:\n```powershell\nphoney-build-prefixes --input-dir C:/rir-data --output-dir C:/my-prefixes\n```\n\n## \ud83d\udcdd Resume/CV Generator\n\nCreate an in-depth resume by combining person, career, skills, and job history. Returns a structured dict or a readable text resume.\n\nExamples:\n```python\nfrom phoney import generate_resume, Phoney\n\n# Structured CV\ncv = generate_resume(locale='en_GB', family='software_engineer', years=7, format='dict')\nprint(cv['headline'])\nprint(cv['skills']['core'])\nprint(len(cv['experience']))\n\n# Text resume via Phoney\np = Phoney()\nprint(p.resume(locale='en_GB', years=5, format='text'))\n```\n\nNotes:\n- `family` biases titles, skills, salary ranges, and responsibilities.\n- `years` controls the history window and affects education year.\n- Text output is a compact, single-file resume suitable for quick copying.",
    "bugtrack_url": null,
    "license": null,
    "summary": "A fake information generator for creating realistic personal data including names, phone numbers, emails, and more.",
    "version": "0.3.1",
    "project_urls": {
        "Changelog": "https://github.com/YTstyo/phoney/releases",
        "Homepage": "https://github.com/YTstyo/phoney",
        "Issues": "https://github.com/YTstyo/phoney/issues",
        "Repository": "https://github.com/YTstyo/phoney"
    },
    "split_keywords": [
        "fake data",
        " testing",
        " generator",
        " mock",
        " personal information"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1a00f1cd4d35b68d61fcef575ea3fd6655b3f8366da1fafcfe1193b5d4e4adbf",
                "md5": "8192a525fb9381eac1209bf67be3c77d",
                "sha256": "b448dde2e0f66db763b7c23007d19bd641709253f8b1dcfb10c7086e0ae42c16"
            },
            "downloads": -1,
            "filename": "phoney-0.3.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "8192a525fb9381eac1209bf67be3c77d",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 225687,
            "upload_time": "2025-08-11T00:08:28",
            "upload_time_iso_8601": "2025-08-11T00:08:28.141205Z",
            "url": "https://files.pythonhosted.org/packages/1a/00/f1cd4d35b68d61fcef575ea3fd6655b3f8366da1fafcfe1193b5d4e4adbf/phoney-0.3.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "522cd2be88f45b149aad56132248a6d88823ddcbf0313d28d16fe47eaf5dea30",
                "md5": "bcec3dc1d332b96b81c9002882123d76",
                "sha256": "3e426988cc3af368c3ae6354f7a9b0aa162530e3904f9b507f7b9fe3b6f6a931"
            },
            "downloads": -1,
            "filename": "phoney-0.3.1.tar.gz",
            "has_sig": false,
            "md5_digest": "bcec3dc1d332b96b81c9002882123d76",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 227298,
            "upload_time": "2025-08-11T00:08:29",
            "upload_time_iso_8601": "2025-08-11T00:08:29.898973Z",
            "url": "https://files.pythonhosted.org/packages/52/2c/d2be88f45b149aad56132248a6d88823ddcbf0313d28d16fe47eaf5dea30/phoney-0.3.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-11 00:08:29",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "YTstyo",
    "github_project": "phoney",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "phoney"
}
        
Elapsed time: 0.75518s