Name | phoney JSON |
Version |
0.3.1
JSON |
| download |
home_page | None |
Summary | A fake information generator for creating realistic personal data including names, phone numbers, emails, and more. |
upload_time | 2025-08-11 00:08:29 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.10 |
license | None |
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
[](https://pypi.org/project/phoney/)
[](https://opensource.org/licenses/MIT)
[](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[](https://pypi.org/project/phoney/)\n[](https://opensource.org/licenses/MIT)\n[](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"
}