Update Faker & make length of lipsum (Paragraphs) configurable

- Many new locales
- Update Alfred-Workflow
- Number of sentences per paragraph now configurable
- Add useful links to `fakeconf`
- Make keyword configurable via configuration sheet
This commit is contained in:
Dean Jackson 2017-12-02 14:31:04 +01:00
parent 86abbd639d
commit a33e39c4d3
427 changed files with 43249 additions and 7560 deletions

2
.gitignore vendored
View file

@ -1,6 +1,8 @@
# Created by https://www.gitignore.io/api/vim,python,sublimetext
*.dist-info
### Python ###
# Byte-compiled / optimized / DLL files
__pycache__/

Binary file not shown.

BIN
Fakeum-2.0.alfredworkflow Normal file

Binary file not shown.

117
README.md
View file

@ -1,28 +1,42 @@
# Alfred Fakeum #
Alfred Fakeum
=============
Generate fake test data in Alfred for testing.
![][demo]
## Download ##
Get the workflow from [GitHub][gh-releases] or [Packal][packal].
Download & installation
-----------------------
## Usage ##
Download the workflow from [GitHub][gh-releases], then double-click to install.
**Note**: Files with the extension `alfred3workflow` are not compatible with Alfred 2.
Usage
-----
- `fake [<query>]` — List/filter available fake data types
- `↩`, `⌘+C` or `⌘+NUM` — Copy one fake datum to clipboard
- `⌘+↩` — Paste fake datum into frontmost app
- `⇥` — Specify number of datasets to copy to clipboard
- `⌘+L` — Show generated data in Alfred's Large Text window
- `fakeconfig [<query>]` — Activate and deactivate locales for fake data
- `↩` — Toggle selected locale on or off
- `fakeconfig [<query>]` — Edit workflow settings
- `An update is available` / `Check for update` — Check for and/or install an updated version of the workflow
- `Notifications` — Turn notifications on/off
- `↩` — Toggle on/off
- `Locales` — Turn locales for fake data on/off
- `↩` — Show & edit active locales
- `[<query>]` — Filter locales
- `↩` — Toggle locale on/off
- `Documentation` — Open GitHub README in your browser
- `Report Problem` — Open the issue tracker in your brower
- `Get Help` — Open the workflow's thread on AlfredForum.com in your browser
If you specify multiple data, e.g. `fake Name ⟩ 10` for 10 names, the data
will be separated by newlines (`\n`).
If you specify multiple data, e.g. `fake Name ✕ 10` for 10 names, the data will be separated by newlines (`\n`).
In the case of `Paragraph` and `Address` types, the data will be separated
by two newlines (`\n\n`).
In the case of `Paragraph` and `Address` types, the data will be separated by two newlines (`\n\n`).
## Supported data types ##
@ -68,51 +82,84 @@ by two newlines (`\n\n`).
## Supported locales ##
Supported locales
-----------------
**Note**: Not all locales support all data types.
- Bulgarian
- Czech
- English
- German
- Danish
- Greek
- English (CA)
- English (GB)
- English (US)
- Spanish (ES)
- Spanish (MX)
- Persian
- Finnish
- Spanish
- French
- Hindi
- Italian
- Korean
- Lithuanian
- Latvian
- Arabic
- Arabic (Egypt)
- Arabic (Jordan)
- Arabic (Palestine)
- Arabic (Saudi Arabia)
- Bosnian
- Bulgarian
- Chinese (China)
- Chinese (Taiwan)
- Croatian
- Czech
- Danish
- Dutch
- Dutch (Belgium)
- English (Australia)
- English (Canada)
- English (Great Britain)
- English (Thailand)
- English (United States)
- Estonian
- Finnish
- French (Switzerland)
- Georgian
- German (Austria)
- Ghanaian
- Greek
- Hebrew
- Hindi
- Hungarian
- Indonesian
- Italian
- Japanese
- Korean
- Latin
- Latvian
- Lithuanian
- Nepali
- Norwegian
- Persian
- Polish
- Portuguese (BR)
- Portuguese (Brazil)
- Portuguese (Portugal)
- Russian
- Slovakian
- Slovenian
- Chinese (CN)
- Chinese (TW)
- Spanish (Mexico)
- Spanish (Spain)
- Swedish
- Thai
- Turkish
- Ukranian
## Licensing, thanks ##
Icons are from [Font Awesome][font-awesome] ([SIL OFL 1.1 Licence][sil]).
Licensing, thanks
-----------------
Icons are from [Font Awesome][font-awesome] and [Material Design Iconic Font](material-icons) (both [SIL OFL 1.1 Licence][sil]).
Alfred Fakum uses the following libraries:
- [Faker][faker] ([licence][faker-licence])
- [Faker][faker] ([MIT Licence][faker-licence])
- [docopt][docopt] ([MIT Licence][mit])
- [Alfred-Workflow][alfred-workflow] ([MIT Licence][mit])
[gh-releases]: https://github.com/deanishe/alfred-fakeum/releases
[packal]: http://www.packal.org/workflow/fakeum
[gh-releases]: https://github.com/deanishe/alfred-fakeum/releases/latest
[mit]: http://opensource.org/licenses/MIT
[alfred-workflow]: http://www.deanishe.net/alfred-workflow/
[font-awesome]: http://fortawesome.github.io/Font-Awesome/
[material-icons]: http://zavoloklom.github.io/material-design-iconic-font/
[docopt]: http://docopt.org/
[faker]: http://www.joke2k.net/faker/
[faker-licence]: https://github.com/joke2k/faker/blob/master/LICENSE.txt

37
bin/example-data Executable file
View file

@ -0,0 +1,37 @@
#!/usr/bin/env python
# encoding: utf-8
#
# Copyright (c) 2014 deanishe@deanishe.net
#
# MIT Licence. See http://opensource.org/licenses/MIT
#
# Created on 2014-12-29
#
"""Print sample fake data to STDOUT."""
from __future__ import print_function, absolute_import
import sys
import os
sys.path.insert(0, os.path.abspath(os.path.dirname(__file__) + '/../src/libs'))
sys.path.insert(0, os.path.abspath(os.path.dirname(__file__) + '/../src'))
def main():
"""Print sample fake data."""
from workflow import Workflow
import fakeum
wf = Workflow()
fakeum.wf = wf
print('| Name | Example |')
print('|-- |--|')
for name in fakeum.FAKERS:
ex = fakeum.get_fake_datum(name)
print(u'| {} | {} |'.format(name, ex).encode('utf-8'))
if __name__ == '__main__':
sys.exit(main())

137
bin/icons Executable file
View file

@ -0,0 +1,137 @@
#!/usr/bin/env zsh
set -e
# URL of icon generator
api="http://icons.deanishe.net/icon"
here="$( cd "$( dirname "$0" )"; pwd )"
root="$( cd "$here/../"; pwd )"
# where workflow icons belong
icondir="${root}/src/icons"
# icon config file
iconfile="${root}/icons.txt"
prog="$( basename "$0" )"
force=false
verbose=false
vopt=
icons=()
# log <arg>... | Echo arguments to STDERR
log() {
echo "$@" >&2
}
# info <arg>.. | Write args to STDERR if VERBOSE is true
info() {
$verbose && log $(print -P "%F{blue}..%f") "$@"
return 0
}
# success <arg>.. | Write green "ok" and args to STDERR if VERBOSE is true
success() {
$verbose && log $(print -P "%F{green}ok%f") "$@"
return 0
}
# error <arg>.. | Write red "error" and args to STDERR
error() {
log $(print -P '%F{red}error%f') "$@"
}
# fail <arg>.. | Write red "error" and args to STDERR, then exit with status 1
fail() {
error "$@"
exit 1
}
# load | Read configuration file from STDIN
load() {
typeset -g icons
while read line; do
# ignore lines that start with # or are empty
[[ $line =~ "#" ]] || test -z "$line" && continue
read fname font colour name <<< "$line"
icons+=($fname $font $colour $name)
done
}
usage() {
cat <<EOF
$prog [options]
Download icons from server.
Usage:
$prog [-v] [-f]
$prog -h
Options:
-f Force re-download
-h Show this help message and exit
-v Be verbose
EOF
}
while getopts ":fhv" opt; do
case $opt in
f)
force=true;;
h)
usage
exit 0;;
v)
verbose=true
vopt='-v'
;;
\?)
fail "invalid option: -$OPTARG";;
esac
done
shift $((OPTIND-1))
cat "$iconfile" | load
success "loaded config from $iconfile"
total=$(( ${#icons} / 4 ))
fetched=0
j=0
for (( i=1; i<${#icons}; i=i+4 )); do
j=$(( j + 1 ))
fname=$icons[$i]
font=$icons[$i+1]
colour=$icons[$i+2]
name=$icons[$i+3]
# info "j=$j, name=$name, font=$font, fname=$fname"
url="${api}/${font}/${colour}/${name}"
n="${fname}.png"
p="$icondir/$n"
pc="[$j/$total]"
# download source icon
copts=(-L)
$verbose && copts+=(-#) || copts+=(-sS)
$force || ! test -s "$p" && {
curl $copts -o "$p" "$url"
[[ $? -ne 0 ]] && fail "couldn't download $n"
success "downloaded $n"
fetched=$(( fetched + 1 ))
} || {
info "skipped existing $n"
}
done
verbose=true
success "downloaded $fetched icon(s)"
exit 0

104
bin/locale-list Executable file
View file

@ -0,0 +1,104 @@
#!/usr/bin/env python
# encoding: utf-8
#
# Copyright (c) 2014 deanishe@deanishe.net
#
# MIT Licence. See http://opensource.org/licenses/MIT
#
# Created on 2014-12-29
#
"""Generate a list of locales supported by Faker."""
from __future__ import print_function, absolute_import
from pprint import pprint
import sys
import os
sys.path.insert(0, os.path.dirname(__file__) + '/../src/libs')
sys.path.insert(0, os.path.dirname(__file__) + '/../src')
locale_names = {
'ar_AA': 'Arabic',
'ar_EG': 'Arabic (Egypt)',
'ar_JO': 'Arabic (Jordan)',
'ar_PS': 'Arabic (Palestine)',
'ar_SA': 'Arabic (Saudi Arabia)',
'bg_BG': 'Bulgarian',
'bs_BA': 'Bosnian',
'cs_CZ': 'Czech',
'de_AT': 'German (Austria)',
'de_DE': 'German',
'dk_DK': 'Danish',
'el_GR': 'Greek',
'en_AU': 'English (Australia)',
'en': 'English',
'en_CA': 'English (Canada)',
'en_GB': 'English (Great Britain)',
'en_TH': 'English (Thailand)',
'en_US': 'English (United States)',
'es': 'Spanish',
'es_ES': 'Spanish (Spain)',
'es_MX': 'Spanish (Mexico)',
'et_EE': 'Estonian',
'fa_IR': 'Persian',
'fi_FI': 'Finnish',
'fr_CH': 'French (Switzerland)',
'fr_FR': 'French',
'he_IL': 'Hebrew',
'hi_IN': 'Hindi',
'hr_HR': 'Croatian',
'hu_HU': 'Hungarian',
'id_ID': 'Indonesian',
'it_IT': 'Italian',
'ja_JP': 'Japanese',
'ka_GE': 'Georgian',
'ko_KR': 'Korean',
'la': 'Latin',
'lt_LT': 'Lithuanian',
'lv_LV': 'Latvian',
'ne_NP': 'Nepali',
'nl_BE': 'Dutch (Belgium)',
'nl_NL': 'Dutch',
'no_NO': 'Norwegian',
'pl_PL': 'Polish',
'pt_BR': 'Portuguese (Brazil)',
'pt_PT': 'Portuguese (Portugal)',
'ru_RU': 'Russian',
'sk_SK': 'Slovakian',
'sl_SI': 'Slovenian',
'sv_SE': 'Swedish',
'th_TH': 'Thai',
'tr_TR': 'Turkish',
'tw_GH': 'Ghanaian',
'uk_UA': 'Ukranian',
'zh_CN': 'Chinese (China)',
'zh_TW': 'Chinese (Taiwan)',
}
def main():
"""Print list of supported locales."""
import faker
locales = []
missing = []
for abbr in faker.config.AVAILABLE_LOCALES:
if abbr not in locale_names:
missing.append(abbr)
continue
# locales[abbr] = locale_names.get(abbr, '')
locales.append((abbr, locale_names[abbr]))
locales.sort(key=lambda t: t[1])
pprint(locales)
missing.sort()
for abbr in missing:
print('[ERROR] locale not found:', abbr, file=sys.stderr)
if __name__ == '__main__':
sys.exit(main())

View file

@ -1,38 +0,0 @@
#!/usr/bin/env python
# encoding: utf-8
#
# Copyright © 2014 deanishe@deanishe.net
#
# MIT Licence. See http://opensource.org/licenses/MIT
#
# Created on 2014-12-29
#
"""
"""
from __future__ import print_function, unicode_literals, absolute_import
import sys
import os
sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(__file__)),
'src'))
from workflow import Workflow
import fakum
def main():
wf = Workflow()
fakum.wf = wf
print('| Name | Example |')
print('|-- |--|')
for name in fakum.FAKERS:
ex = fakum.get_fake_datum(name)
print('| {} | {} |'.format(name, ex).encode('utf-8'))
if __name__ == '__main__':
sys.exit(main())

View file

@ -1,69 +0,0 @@
#!/usr/bin/env python
# encoding: utf-8
#
# Copyright © 2014 deanishe@deanishe.net
#
# MIT Licence. See http://opensource.org/licenses/MIT
#
# Created on 2014-12-29
#
"""
Generate a list of locales supported by Faker
"""
from __future__ import print_function, unicode_literals, absolute_import
from pprint import pprint
import re
import sys
import os
dirpath = os.path.join(os.path.dirname(os.path.dirname(__file__)),
'src', 'faker', 'providers')
is_locale = re.compile(r'[a-z]{2}_[A-Z]{2}').match
locale_names = {
'bg_BG': 'Bulgarian',
'cs_CZ': 'Czech',
'de_DE': 'German',
'dk_DK': 'Danish',
'el_GR': 'Greek',
'en_CA': 'English (CA)',
'en_GB': 'English (GB)',
'en_US': 'English (US)',
'es_ES': 'Spanish (ES)',
'es_MX': 'Spanish (MX)',
'fa_IR': 'Persian',
'fi_FI': 'Finnish',
'fr_FR': 'French',
'hi_IN': 'Hindi',
'it_IT': 'Italian',
'ko_KR': 'Korean',
'lt_LT': 'Lithuanian',
'lv_LV': 'Latvian',
'nl_NL': 'Dutch',
'no_NO': 'Norwegian',
'pl_PL': 'Polish',
'pt_BR': 'Portuguese (BR)',
'ru_RU': 'Russian',
'sl_SI': 'Slovenian',
'zh_CN': 'Chinese (CN)',
'zh_TW': 'Chinese (TW)',
}
def main():
locales = {}
for filename in os.listdir(dirpath):
path = os.path.join(dirpath, filename)
if not os.path.isdir(path) or not is_locale(filename):
continue
locales[filename] = locale_names.get(filename, '')
pprint(locales)
if __name__ == '__main__':
sys.exit(main())

1
icon.png Symbolic link
View file

@ -0,0 +1 @@
./src/icons/icon.png

24
icons.txt Normal file
View file

@ -0,0 +1,24 @@
# Icons from webfonts via http://icons.deanishe.net
#
# Script bin/icons reads this file and downloads the
# specified icons to src/icons
#
# Colours
# purple: 843CBD
# yellow: F8AC30
# red: B00000
# green: 03AE03
#
# filename font name colour icon name
# Workflow icons
icon fontawesome 843CBD random
locales material 843CBD settings
on fontawesome 03AE03 dot-circle-o
off fontawesome B00000 circle-o
update-available material F8AC30 cloud-download
update-check material 03AE03 cloud-download
docs material 03AE03 help-outline
issue fontawesome B00000 bug
help material 843CBD help-outline

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

197
src/common.py Normal file
View file

@ -0,0 +1,197 @@
#!/usr/bin/env python
# encoding: utf-8
#
# Copyright (c) 2017 Dean Jackson <deanishe@deanishe.net>
#
# MIT Licence. See http://opensource.org/licenses/MIT
#
# Created on 2017-11-14
#
"""Common workflow variables and functions."""
from __future__ import print_function, absolute_import
from collections import OrderedDict
import logging
import os
import subprocess
from workflow import Variables
log = logging.getLogger('workflow')
# Default workflow settings
DEFAULT_SETTINGS = {
'locales': [
'en',
'de_DE',
'es_ES',
'fr_FR',
],
}
DOCS_URL = 'https://github.com/deanishe/alfred-fakeum/blob/master/README.md'
HELP_URL = 'https://www.alfredforum.com/topic/5319-fakeum-—-generate-fake-test-datasets-in-alfred/'
ISSUE_URL = 'https://github.com/deanishe/alfred-fakeum/issues'
UPDATE_SETTINGS = {'github_slug': 'deanishe/alfred-fakeum'}
# Workflow icons
ICON_DOCS = 'icons/docs.png'
ICON_HELP = 'icons/help.png'
ICON_ISSUE = 'icons/issue.png'
ICON_ON = 'icons/on.png'
ICON_OFF = 'icons/off.png'
ICON_LOCALES = 'icons/locales.png'
ICON_UPDATE_CHECK = 'icons/update-check.png'
ICON_UPDATE_AVAILABLE = 'icons/update-available.png'
# All locales supported by faker
ALL_LOCALES = OrderedDict((
('en', 'English'),
('de_DE', 'German'),
('es', 'Spanish'),
('fr_FR', 'French'),
('ar_AA', 'Arabic'),
('ar_EG', 'Arabic (Egypt)'),
('ar_JO', 'Arabic (Jordan)'),
('ar_PS', 'Arabic (Palestine)'),
('ar_SA', 'Arabic (Saudi Arabia)'),
('bs_BA', 'Bosnian'),
('bg_BG', 'Bulgarian'),
('zh_CN', 'Chinese (China)'),
('zh_TW', 'Chinese (Taiwan)'),
('hr_HR', 'Croatian'),
('cs_CZ', 'Czech'),
('dk_DK', 'Danish'),
('nl_NL', 'Dutch'),
('nl_BE', 'Dutch (Belgium)'),
('en_AU', 'English (Australia)'),
('en_CA', 'English (Canada)'),
('en_GB', 'English (Great Britain)'),
('en_TH', 'English (Thailand)'),
('en_US', 'English (United States)'),
('et_EE', 'Estonian'),
('fi_FI', 'Finnish'),
('fr_CH', 'French (Switzerland)'),
('ka_GE', 'Georgian'),
('de_AT', 'German (Austria)'),
('tw_GH', 'Ghanaian'),
('el_GR', 'Greek'),
('he_IL', 'Hebrew'),
('hi_IN', 'Hindi'),
('hu_HU', 'Hungarian'),
('id_ID', 'Indonesian'),
('it_IT', 'Italian'),
('ja_JP', 'Japanese'),
('ko_KR', 'Korean'),
('la', 'Latin'),
('lv_LV', 'Latvian'),
('lt_LT', 'Lithuanian'),
('ne_NP', 'Nepali'),
('no_NO', 'Norwegian'),
('fa_IR', 'Persian'),
('pl_PL', 'Polish'),
('pt_BR', 'Portuguese (Brazil)'),
('pt_PT', 'Portuguese (Portugal)'),
('ru_RU', 'Russian'),
('sk_SK', 'Slovakian'),
('sl_SI', 'Slovenian'),
('es_MX', 'Spanish (Mexico)'),
('es_ES', 'Spanish (Spain)'),
('sv_SE', 'Swedish'),
('th_TH', 'Thai'),
('tr_TR', 'Turkish'),
('uk_UA', 'Ukranian'),
))
# Workflow's bundle IDs
BUNDLE_ID = os.getenv('alfred_workflow_bundleid')
# Script Filter keyword
KEYWORD = os.getenv('keyword')
# AppleScript to call an External Trigger
TRIGGER_AS = (u'tell application "Alfred 3" to run trigger "{trigger}" '
u'in workflow "{bundleid}"')
# AppleScript to run an Alfred search
SEARCH_AS = u'tell application "Alfred 3" to search "{query}"'
def escape_as(s):
"""Escape string for inserting into AppleScript."""
return s.replace('"', '" & quote & "')
def boolvar(name, default=False):
"""Return `True` or `False` for a workflow variable."""
v = os.getenv(name)
if v is not None:
if v.lower() in ('1', 'on', 'yes'):
return True
if v.lower() in ('0', 'off', 'no'):
return False
log.debug('no value set for workflow variable "%s", '
'using default: %r', name, default)
return default
def intvar(name, default=0):
"""Return `int` for a workflow variable."""
v = os.getenv(name)
if v is not None:
try:
v = int(v)
except ValueError:
log.error('bad value for "%s": "%s" is not a number', name, v)
return default
return v
log.debug('no value set for workflow variable "%s", '
'using default: %r', name, default)
return default
def savevar(name, value):
"""Save a workflow variable by adding it to ``info.plist``."""
from plistlib import readPlist, writePlist
if not isinstance(value, basestring):
value = str(value)
data = readPlist('info.plist')
data['variables'][name] = value
writePlist(data, 'info.plist')
log.debug(u'set workflow variable "%s" to "%s"', name, value)
def run_trigger(name, arg=None):
"""Run an external trigger."""
script = TRIGGER_AS.format(trigger=name, bundleid=BUNDLE_ID)
if arg:
script += u' with argument "{}"'.format(escape_as(arg))
msg = u'calling external trigger "{}"'.format(name)
if arg:
msg += u' with arg "{}"'.format(arg)
log.debug(msg + ' ...')
subprocess.call(['osascript', '-e', script.encode('utf-8')])
def run_workflow(query=None):
"""Run workflow with query."""
query = KEYWORD + u' ' + (query or '')
script = SEARCH_AS.format(query=query)
log.debug(u'calling Alfred with query "%s" ...', query)
subprocess.call(['osascript', '-e', script.encode('utf-8')])
def notify(title, text=''):
"""Show a notification."""
if not boolvar('SHOW_NOTIFICATIONS'):
return
v = Variables(title=title, text=text)
print(v)

View file

@ -1,7 +1,7 @@
#!/usr/bin/python
# encoding: utf-8
#
# Copyright © 2014 deanishe@deanishe.net
# Copyright (c) 2014 deanishe@deanishe.net
#
# MIT Licence. See http://opensource.org/licenses/MIT
#
@ -10,75 +10,134 @@
"""config.py [options] [args]
Show and alter configuration options.
Usage:
config.py --toggle <locale>
config.py <query>
config.py locales [<query>]
config.py settings [<query>]
config.py --toggle-locale <locale>
config.py --toggle-notifications
Options:
--toggle <locale> Turn locale on/off
-h, --help Show this help message
-l, --toggle-locale <locale> Turn locale on/off
-n, --toggle-notifications Turn notifications on/off
-h, --help Show this help message and exit
"""
from __future__ import print_function, unicode_literals, absolute_import
from __future__ import print_function, absolute_import
import subprocess
import sys
from workflow import Workflow
from fakeum import ALL_LOCALES, DEFAULT_SETTINGS, UPDATE_SETTINGS, HELP_URL
from workflow import Workflow3, ICON_WARNING
from common import (
ALL_LOCALES,
DEFAULT_SETTINGS,
DOCS_URL,
HELP_URL,
ISSUE_URL,
ICON_DOCS,
ICON_HELP,
ICON_ISSUE,
ICON_ON,
ICON_OFF,
ICON_LOCALES,
ICON_UPDATE_AVAILABLE,
ICON_UPDATE_CHECK,
UPDATE_SETTINGS,
boolvar,
notify,
run_trigger,
savevar,
)
ALFRED_AS = 'tell application "Alfred 2" to search "fakeconfig "'
log = None
def main(wf):
from docopt import docopt
args = docopt(__doc__, wf.args)
log.debug('args : {!r}'.format(args))
if args.get('--toggle'):
loc = args.get('--toggle')
active = wf.settings.get('locales', [])
is_active = loc in active
if is_active:
msg = 'Deactivated locale {}'.format(ALL_LOCALES.get(loc))
active.remove(loc)
wf.settings['locales'] = active
else:
msg = 'Activated locale {}'.format(ALL_LOCALES.get(loc))
active.append(loc)
wf.settings['locales'] = active
log.info(msg)
print(msg)
subprocess.call(['osascript', '-e', ALFRED_AS])
return 0
def filter_options(query):
"""Show available options."""
options = []
if wf.update_available:
wf.add_item('A newer version is available',
'↩ to install update',
autocomplete='workflow:update',
icon='update-available.png')
title = 'An update is available'
subtitle = u'↩ or ⇥ to install update'
icon = ICON_UPDATE_AVAILABLE
else:
title = 'Check for update'
subtitle = u'↩ or ⇥ to check for update'
icon = ICON_UPDATE_CHECK
query = args.get('<query>')
options = [
dict(title=title,
subtitle=subtitle,
valid=False,
autocomplete='workflow:update',
icon=icon),
locales = sorted([(v, k) for (k, v) in ALL_LOCALES.items()])
dict(title='Notifications',
subtitle='Turn notifications on/off',
valid=True,
arg='notifications',
icon=ICON_ON if boolvar('SHOW_NOTIFICATIONS') else ICON_OFF),
dict(title='Locales',
subtitle='Turn locales on/off',
valid=True,
arg='locales',
icon=ICON_LOCALES),
dict(title='Documentation',
subtitle='Open workflow docs in browser',
valid=True,
arg=DOCS_URL,
icon=ICON_DOCS),
dict(title='Report Problem',
subtitle='Open GitHub issues in browser',
valid=True,
arg=ISSUE_URL,
icon=ICON_ISSUE),
dict(title='Get Help',
subtitle='Open Alfred forum thread in browser',
valid=True,
arg=HELP_URL,
icon=ICON_HELP),
]
if query:
options = wf.filter(query, options, key=lambda d: d['title'],
min_score=30)
if not options:
wf.add_item('No matches', 'Try a different query?', valid=False,
icon=ICON_WARNING)
for opt in options:
wf.add_item(**opt)
wf.send_feedback()
def filter_locales(query):
"""Show list of available locales."""
locales = [(v, k) for (k, v) in ALL_LOCALES.items()]
if query:
locales = wf.filter(query, locales, key=lambda t: '{} {}'.format(*t),
min_score=30)
if not locales:
wf.add_item('No matches', 'Try a different query?', valid=False,
icon=ICON_WARNING)
for name, loc in locales:
icon = ICON_OFF
if loc in wf.settings.get('locales', []):
icon = 'active.png'
else:
icon = 'inactive.png'
icon = ICON_ON
wf.add_item(name, loc,
arg=loc,
valid=True,
@ -87,9 +146,77 @@ def main(wf):
wf.send_feedback()
def toggle_locale(loc):
"""Toggle a locale on or off."""
active = wf.settings.get('locales', [])
is_active = loc in active
if is_active:
msg = u'Deactivated locale {}'.format(ALL_LOCALES.get(loc))
active.remove(loc)
wf.settings['locales'] = active
else:
msg = u'Activated locale {}'.format(ALL_LOCALES.get(loc))
active.append(loc)
wf.settings['locales'] = active
log.info(msg)
notify(msg)
run_trigger('locales')
def toggle_notifications():
"""Turn notifications on/off."""
name = 'SHOW_NOTIFICATIONS'
is_active = boolvar(name)
what = 'on'
value = '1'
if is_active:
what = 'off'
value = '0'
msg = 'Turned notifications ' + what
savevar(name, value)
log.info(msg)
notify(msg)
run_trigger('config')
def main(wf):
"""Run configuration."""
from docopt import docopt
args = docopt(__doc__, wf.args)
log.debug('args : %r', args)
# ----------------------------------------------------------
# Toggle actions
if args.get('--toggle-locale'):
return toggle_locale(args.get('--toggle-locale'))
if args.get('--toggle-notifications'):
return toggle_notifications()
# ----------------------------------------------------------
# List actions
query = args.get('<query>')
if args['settings']:
return filter_options(query)
else:
return filter_locales(query)
if __name__ == '__main__':
wf = Workflow(default_settings=DEFAULT_SETTINGS,
update_settings=UPDATE_SETTINGS,
help_url=HELP_URL)
wf = Workflow3(default_settings=DEFAULT_SETTINGS,
update_settings=UPDATE_SETTINGS,
help_url=HELP_URL)
log = wf.logger
sys.exit(wf.run(main))

View file

@ -1,58 +0,0 @@
# coding=utf-8
VERSION = '0.4.2'
AVAILABLE_LOCALES = [
'bg_BG',
'cs_CZ',
'de_DE',
'dk_DK',
'el_GR',
'en_CA',
'en_GB',
'en_US',
'es_ES',
'es_MX',
'fa_IR',
'fi_FI',
'fr_FR',
'hi_IN',
'it_IT',
'ko_KR',
'lt_LT',
'lv_LV',
'nl_NL',
'pl_PL',
'pt_BR',
'ru_RU',
'sl_SI',
'zh_CN',
'zh_TW'
]
DEFAULT_LOCALE = 'en_US'
DEFAULT_PROVIDERS = (
'address',
'color',
'company',
'credit_card',
'date_time',
'file',
'internet',
'job',
'lorem',
'misc',
'person',
'profile',
'python',
'phone_number',
'ssn',
'user_agent',
)
from faker.generator import Generator
from faker.factory import Factory
Faker = Factory.create

View file

@ -1 +0,0 @@

View file

@ -1,70 +0,0 @@
# coding=utf-8
from __future__ import unicode_literals
from ..internet import Provider as InternetProvider
import re
class Provider(InternetProvider):
user_name_formats = (
'{{last_name_female}}.{{first_name_female}}',
'{{last_name_male}}.{{first_name_male}}',
'{{last_name_male}}.{{first_name_male}}',
'{{first_name_male}}.{{last_name_male}}',
'{{first_name}}##',
'?{{last_name}}',
'{{first_name}}{{year}}'
)
@staticmethod
def _to_ascii(string):
replacements = (
('Б', 'b'), ('Г', 'r'), ('Д', 'd'), ('Ж', 'zh'), ('З', 'z'), ('И', 'i'),
('Й', 'i'), ('Л', 'l'), ('П', 'p'), ('Ф', 'f'), ('Ц', 'ts'), ('Ч', 'ch'),
('Ш', 'sh'), ('Щ', 'sht'), ('Ъ', 'u'), ('Ь', ''), ('Ю', 'yu'), ('Я', 'ya'),
('б', 'b'), ('в', 'v'), ('д', 'd'), ('ж', 'zh'), ('з', 'z'), ('и', 'i'),
('й', 'i'), ('к', 'k'), ('л', 'l'), ('м', 'm'), ('н', 'n'), ('п', 'p'),
('т', 't'), ('ф', 'f'), ('ц', 'ts'), ('ч', 'ch'), ('ш', 'sh'), ('щ', 'sht'),
('ъ', 'u'), ('ь', ''), ('ю', 'yu'), ('я', 'ya'), ('Б', 'b'), ('Г', 'r'),
('Д', 'd'), ('Ж', 'zh'), ('З', 'z'), ('И', 'i'), ('Й', 'i'), ('Л', 'l'),
('П', 'p'), ('Ф', 'f'), ('Ц', 'ts'), ('Ч', 'ch'), ('Ш', 'sh'), ('Щ', 'sht'),
('Ъ', 'u'), ('Ь', ''), ('Ю', 'yu'), ('Я', 'ya'), ('б', 'b'), ('в', 'v'),
('д', 'd'), ('ж', 'zh'), ('з', 'z'), ('и', 'i'), ('й', 'i'), ('к', 'k'),
('л', 'l'), ('м', 'm'), ('н', 'n'), ('п', 'p'), ('т', 't'), ('ф', 'f'),
('ц', 'ts'), ('ч', 'ch'), ('ш', 'sh'), ('щ', 'sht'), ('ъ', 'u'), ('ь', ''),
('ю', 'yu'), ('я', 'ya')
)
for search, replace in replacements:
string = string.replace(search, replace)
return string
email_formats = (
'{{user_name}}@{{free_email_domain}}',
'{{user_name}}@{{domain_name}}')
free_email_domains = (
'gmail.com', 'yahoo.com', 'hotmail.com', 'mail.bg', 'abv.bg', 'dir.bg'
)
tlds = ('bg', 'com', 'biz', 'info', 'net', 'org', 'edu')
def user_name(self):
pattern = self.random_element(self.user_name_formats)
return self._to_ascii(
self.bothify(self.generator.parse(pattern)
).lower())
def domain_word(self):
company = self.generator.format('company')
company_elements = company.split(' ')
company = self._to_ascii(company_elements.pop(0))
return re.sub(r'\W', '', company).lower()
def domain_name(self):
return self.domain_word() + '.' + self.tld()
def tld(self):
return self.random_element(self.tlds)

View file

@ -1,83 +0,0 @@
# coding=utf-8
from faker.providers import BaseProvider
__author__ = 'joke2k'
class Provider(BaseProvider):
all_colors = {
"AliceBlue": "#F0F8FF", "AntiqueWhite": "#FAEBD7", "Aqua": "#00FFFF", "Aquamarine": "#7FFFD4",
"Azure": "#F0FFFF", "Beige": "#F5F5DC", "Bisque": "#FFE4C4", "Black": "#000000", "BlanchedAlmond": "#FFEBCD",
"Blue": "#0000FF", "BlueViolet": "#8A2BE2", "Brown": "#A52A2A", "BurlyWood": "#DEB887", "CadetBlue": "#5F9EA0",
"Chartreuse": "#7FFF00", "Chocolate": "#D2691E", "Coral": "#FF7F50", "CornflowerBlue": "#6495ED", "Cornsilk":
"#FFF8DC", "Crimson": "#DC143C", "Cyan": "#00FFFF", "DarkBlue": "#00008B", "DarkCyan": "#008B8B",
"DarkGoldenRod": "#B8860B", "DarkGray": "#A9A9A9", "DarkGreen": "#006400", "DarkKhaki": "#BDB76B",
"DarkMagenta": "#8B008B", "DarkOliveGreen": "#556B2F", "DarkOrange": "#FF8C00", "DarkOrchid": "#9932CC",
"DarkRed": "#8B0000", "DarkSalmon": "#E9967A", "DarkSeaGreen": "#8FBC8F", "DarkSlateBlue": "#483D8B",
"DarkSlateGray": "#2F4F4F", "DarkTurquoise": "#00CED1", "DarkViolet": "#9400D3", "DeepPink": "#FF1493",
"DeepSkyBlue": "#00BFFF", "DimGray": "#696969", "DodgerBlue": "#1E90FF", "FireBrick": "#B22222",
"FloralWhite": "#FFFAF0", "ForestGreen": "#228B22", "Fuchsia": "#FF00FF", "Gainsboro": "#DCDCDC",
"GhostWhite": "#F8F8FF", "Gold": "#FFD700", "GoldenRod": "#DAA520", "Gray": "#808080", "Green": "#008000",
"GreenYellow": "#ADFF2F", "HoneyDew": "#F0FFF0", "HotPink": "#FF69B4", "IndianRed": "#CD5C5C",
"Indigo": "#4B0082", "Ivory": "#FFFFF0", "Khaki": "#F0E68C", "Lavender": "#E6E6FA", "LavenderBlush": "#FFF0F5",
"LawnGreen": "#7CFC00", "LemonChiffon": "#FFFACD", "LightBlue": "#ADD8E6", "LightCoral": "#F08080",
"LightCyan": "#E0FFFF", "LightGoldenRodYellow": "#FAFAD2", "LightGray": "#D3D3D3", "LightGreen": "#90EE90",
"LightPink": "#FFB6C1", "LightSalmon": "#FFA07A", "LightSeaGreen": "#20B2AA", "LightSkyBlue": "#87CEFA",
"LightSlateGray": "#778899", "LightSteelBlue": "#B0C4DE", "LightYellow": "#FFFFE0", "Lime": "#00FF00",
"LimeGreen": "#32CD32", "Linen": "#FAF0E6", "Magenta": "#FF00FF", "Maroon": "#800000",
"MediumAquaMarine": "#66CDAA", "MediumBlue": "#0000CD", "MediumOrchid": "#BA55D3", "MediumPurple": "#9370DB",
"MediumSeaGreen": "#3CB371", "MediumSlateBlue": "#7B68EE", "MediumSpringGreen": "#00FA9A",
"MediumTurquoise": "#48D1CC", "MediumVioletRed": "#C71585", "MidnightBlue": "#191970", "MintCream": "#F5FFFA",
"MistyRose": "#FFE4E1", "Moccasin": "#FFE4B5", "NavajoWhite": "#FFDEAD", "Navy": "#000080",
"OldLace": "#FDF5E6", "Olive": "#808000", "OliveDrab": "#6B8E23", "Orange": "#FFA500", "OrangeRed": "#FF4500",
"Orchid": "#DA70D6", "PaleGoldenRod": "#EEE8AA", "PaleGreen": "#98FB98", "PaleTurquoise": "#AFEEEE",
"PaleVioletRed": "#DB7093", "PapayaWhip": "#FFEFD5", "PeachPuff": "#FFDAB9", "Peru": "#CD853F",
"Pink": "#FFC0CB", "Plum": "#DDA0DD", "PowderBlue": "#B0E0E6", "Purple": "#800080", "Red": "#FF0000",
"RosyBrown": "#BC8F8F", "RoyalBlue": "#4169E1", "SaddleBrown": "#8B4513", "Salmon": "#FA8072",
"SandyBrown": "#F4A460", "SeaGreen": "#2E8B57", "SeaShell": "#FFF5EE", "Sienna": "#A0522D", "Silver": "#C0C0C0",
"SkyBlue": "#87CEEB", "SlateBlue": "#6A5ACD", "SlateGray": "#708090", "Snow": "#FFFAFA",
"SpringGreen": "#00FF7F", "SteelBlue": "#4682B4", "Tan": "#D2B48C", "Teal": "#008080", "Thistle": "#D8BFD8",
"Tomato": "#FF6347", "Turquoise": "#40E0D0", "Violet": "#EE82EE", "Wheat": "#F5DEB3", "White": "#FFFFFF",
"WhiteSmoke": "#F5F5F5", "Yellow": "#FFFF00", "YellowGreen": "#9ACD3",
}
safe_colors = [
'black', 'maroon', 'green', 'navy', 'olive',
'purple', 'teal', 'lime', 'blue', 'silver',
'gray', 'yellow', 'fuchsia', 'aqua', 'white'
]
@classmethod
def color_name(cls):
return cls.random_element(cls.all_colors.keys())
@classmethod
def safe_color_name(cls):
return cls.random_element(cls.safe_colors)
@classmethod
def hex_color(cls):
return "#{0}".format(("%x" % cls.random_int(1, 16777215)).ljust(6, '0'))
@classmethod
def safe_hex_color(cls):
color = ("%x" % cls.random_int(0, 255)).ljust(3, '0')
return "#{0}{0}{1}{1}{2}{2}".format(*color)
@classmethod
def rgb_color_list(cls):
color = cls.hex_color()
return (
int(color[1:3], 16),
int(color[3:5], 16),
int(color[5:7], 16),
)
@classmethod
def rgb_color(cls):
return ','.join(map(str, cls.rgb_color_list()))
@classmethod
def rgb_css_color(cls):
return 'rgb(%s)' % ','.join(map(str, cls.rgb_color_list()))

View file

@ -1,24 +0,0 @@
# coding=utf-8
from __future__ import unicode_literals
from . import BaseProvider
class Provider(BaseProvider):
formats = ['{{last_name}} {{company_suffix}}', ]
company_suffixes = ['Ltd', ]
def company(self):
"""
:example 'Acme Ltd'
"""
pattern = self.random_element(self.formats)
return self.generator.parse(pattern)
@classmethod
def company_suffix(cls):
"""
:example 'Ltd'
"""
return cls.random_element(cls.company_suffixes)

View file

@ -1,187 +0,0 @@
# coding=utf-8
from __future__ import unicode_literals
from . import BaseProvider
from .date_time import Provider as DateTimeProvider
import copy
import re
class CreditCard(object):
valid_characters_pattern = re.compile('^[0-9 ]*$')
def __init__(self, name, prefixes, length=16, security_code='CVC', security_code_length=3):
self.name = name
self.prefixes = prefixes
self.length = length
self.security_code = security_code
self.security_code_length = security_code_length
class Provider(BaseProvider):
visa_prefix_list = [['4', '5', '3', '9'],
['4', '5', '5', '6'],
['4', '9', '1', '6'],
['4', '5', '3', '2'],
['4', '9', '2', '9'],
['4', '0', '2', '4', '0', '0', '7', '1'],
['4', '4', '8', '6'],
['4', '7', '1', '6'],
['4']]
mastercard_prefix_list = [['5', '1'],
['5', '2'],
['5', '3'],
['5', '4'],
['5', '5']]
amex_prefix_list = [['3', '4'],
['3', '7']]
discover_prefix_list = [['6', '0', '1', '1']]
diners_prefix_list = [['3', '0', '0'],
['3', '0', '1'],
['3', '0', '2'],
['3', '0', '3'],
['3', '6'],
['3', '8']]
enroute_prefix_list = [['2', '0', '1', '4'],
['2', '1', '4', '9']]
jcb16_prefix_list = [['3', '0', '8', '8'],
['3', '0', '9', '6'],
['3', '1', '1', '2'],
['3', '1', '5', '8'],
['3', '3', '3', '7'],
['3', '5', '2', '8']]
jcb15_prefix_list = [['2', '1', '0', '0'],
['1', '8', '0', '0']]
voyager_prefix_list = [['8', '6', '9', '9']]
credit_card_types = {
'mastercard': CreditCard('Mastercard', mastercard_prefix_list, 16, 'CVV', 4),
'visa16': CreditCard('VISA 16 digit', visa_prefix_list),
'visa13': CreditCard('VISA 13 digit', visa_prefix_list, 13),
'amex': CreditCard('American Express', amex_prefix_list, 15),
'discover': CreditCard('Discover', discover_prefix_list),
'diners': CreditCard('Diners Club / Carte Blanche', diners_prefix_list, 14),
'enroute': CreditCard('enRoute', enroute_prefix_list, 15),
'jcb15': CreditCard('JCB 15 digit', jcb16_prefix_list, 15),
'jcb16': CreditCard('JCB 16 digit', jcb15_prefix_list),
'voyager': CreditCard('Voyager', voyager_prefix_list, 15),
}
credit_card_types['visa'] = credit_card_types['visa16']
credit_card_types['jcb'] = credit_card_types['jcb16']
@classmethod
def credit_card_provider(cls, card_type=None):
if card_type is None:
card_type = cls.random_element(cls.credit_card_types.keys())
return cls._credit_card_type(card_type).name
@classmethod
def credit_card_number(cls, card_type=None, validate=False, max_check=10):
card = cls._credit_card_type(card_type)
number = ''
for i in range(0, max_check):
number = cls._generate_number(cls.random_element(card.prefixes), card.length)
if not validate or cls._validate_credit_card_number(card, number):
break
return number
@classmethod
def credit_card_expire(cls, start='now', end='+10y', date_format='%m/%y'):
expire_date = DateTimeProvider.date_time_between(start, end)
return expire_date.strftime(date_format)
def credit_card_full(self, card_type=None, validate=False, max_check=10):
card = self._credit_card_type(card_type)
template = """
{provider}
{owner}
{number} {expire_date}
{security}: {security_nb}""".format(
provider=card.name,
owner=self.generator.parse("{{first_name}} {{last_name}}"),
number=self.credit_card_number(card, validate, max_check),
expire_date=self.credit_card_expire(),
security=card.security_code,
security_nb=self.credit_card_security_code(card)
)
return self.generator.parse(template)
@classmethod
def credit_card_security_code(cls, card_type=None):
return cls.random_number(cls._credit_card_type(card_type).security_code_length)
@classmethod
def _credit_card_type(cls, card_type=None):
"""returns a random credit card type instance"""
if card_type is None:
card_type = cls.random_element(cls.credit_card_types.keys())
elif isinstance(card_type, CreditCard):
return card_type
return cls.credit_card_types[card_type]
@classmethod
def _generate_number(cls, prefix, length):
"""
'prefix' is the start of the CC number as a string, any number of digits.
'length' is the length of the CC number to generate. Typically 13 or 16
"""
# add list() to copy prefixes
number = list(prefix)
# generate digits
while len(number) < (length - 1):
number.append(str(cls.random_digit()))
# Calculate sum
tot = 0
pos = 0
reversed_number = []
reversed_number.extend(number)
reversed_number.reverse()
while pos < length - 1:
odd = int(reversed_number[pos]) * 2
if odd > 9:
odd -= 9
tot += odd
if pos != (length - 2):
tot += int(reversed_number[pos+1])
pos += 2
# Calculate check digit
check_digit = ((tot / 10 + 1) * 10 - tot) % 10
number.append(str(check_digit))
return ''.join(number)
@classmethod
def _validate_credit_card_number(cls, card, number):
if card.valid_characters_pattern.match(number) is not None:
return cls._validate_luhn_checksum(number)
return False
@staticmethod
def _validate_luhn_checksum(number_as_string):
""" checks to make sure that the card passes a luhn mod-10 checksum """
number = 0
num_digits = len(number_as_string)
odd_even = num_digits & 1
for i in range(0, num_digits):
digit = int(number_as_string[i])
if not ((i & 1) ^ odd_even):
digit *= 2
if digit > 9:
digit -= 9
number += digit
return (number % 10) == 0

View file

@ -1,190 +0,0 @@
# coding=utf-8
from __future__ import unicode_literals
from ..address import Provider as AddressProvider
class Provider(AddressProvider):
city_formats = ('{{city_name}}', )
street_name_formats = ('{{street_name}}', )
street_address_formats = ('{{street_name}} {{building_number}}', )
address_formats = ('{{street_address}}\n{{postcode}} {{city}}', )
building_number_formats = ('###', '##', '#', '#/#')
street_suffixes_long = ('náměstí', )
street_suffixes_short = ('nám.', )
postcode_formats = ('### ##', )
cities = (
'Abertamy', 'Adamov', 'Andělská Hora', 'Bakov nad Jizerou', 'Bavorov', 'Bechyně', 'Benešov nad Ploučnicí',
'Benátky nad Jizerou', 'Bezdružice', 'Bečov nad Teplou', 'Blatná', 'Blovice', 'Blšany', 'Bochov',
'Bohušovice nad Ohří', 'Bojkovice', 'Bor', 'Borohrádek', 'Borovany', 'Boží Dar', 'Brandýs nad Orlicí', 'Brno',
'Broumov', 'Brtnice', 'Brumov-Bylnice', 'Brušperk', 'Budišov nad Budišovkou', 'Budyně nad Ohří', 'Bučovice',
'Buštěhrad', 'Bystré', 'Bystřice', 'Bystřice nad Pernštejnem', 'Bystřice pod Hostýnem', 'Bzenec', 'Bílovec',
'Bělá nad Radbuzou', 'Bělá pod Bezdězem', 'Březnice', 'Březová', 'Březová nad Svitavou', 'Břidličná',
'Chabařovice', 'Chlumec', 'Chlumec nad Cidlinou', 'Choceň', 'Chomutov', 'Chotěboř', 'Chrast', 'Chrastava',
'Chropyně', 'Chvaletice', 'Chyše', 'Chýnov', 'Chřibská', 'Cvikov', 'Dačice', 'Dašice', 'Desná', 'Deštná',
'Dobrovice', 'Dobruška', 'Dobřany', 'Dobřichovice', 'Dobříš', 'Doksy', 'Dolní Benešov', 'Dolní Bousov',
'Dolní Kounice', 'Dolní Poustevna', 'Dubá', 'Dubí', 'Dubňany', 'Duchcov', 'Děčín', 'Františkovy Lázně',
'Fryšták', 'Frýdek-Místek', 'Frýdlant', 'Frýdlant nad Ostravicí', 'Fulnek', 'Golčův Jeníkov', 'Habartov',
'Habry', 'Hanušovice', 'Harrachov', 'Hartmanice', 'Havířov', 'Hejnice', 'Heřmanův Městec', 'Hlinsko',
'Hluboká nad Vltavou', 'Hluk', 'Hodkovice nad Mohelkou', 'Holice', 'Holýšov', 'Hora Svaté Kateřiny', 'Horažďovice',
'Horní Benešov', 'Horní Blatná', 'Horní Bříza', 'Horní Cerekev', 'Horní Jelení', 'Horní Jiřetín', 'Horní Planá',
'Horní Slavkov', 'Horšovský Týn', 'Hostinné', 'Hostivice', 'Hostomice', 'Hostouň', 'Hořice', 'Hořovice', 'Hoštka',
'Hradec Králové', 'Hradec nad Moravicí', 'Hranice (okres Cheb)', 'Hrob', 'Hrochův Týnec', 'Hronov', 'Hrotovice',
'Hroznětín', 'Hrušovany nad Jevišovkou', 'Hrádek', 'Hrádek nad Nisou', 'Hulín', 'Husinec', 'Hustopeče',
'Ivanovice na Hané', 'Ivančice', 'Jablonec nad Jizerou', 'Jablonec nad Nisou', 'Jablonné nad Orlicí',
'Jablonné v Podještědí', 'Jablunkov', 'Janov', 'Janovice nad Úhlavou', 'Janské Lázně', 'Jaroměřice nad Rokytnou',
'Javorník', 'Jemnice', 'Jesenice (okres Rakovník)', 'Jevišovice', 'Jevíčko', 'Jihlava', 'Jilemnice', 'Jistebnice',
'Jiříkov', 'Jáchymov', 'Jílové', 'Jílové u Prahy', 'Kamenice nad Lipou', 'Kamenický Šenov', 'Kaplice', 'Kardašova Řečice',
'Karlovy Vary', 'Karolinka', 'Karviná', 'Kasejovice', 'Kaznějov', 'Kašperské Hory', 'Kdyně', 'Kelč', 'Kladno', 'Kladruby',
'Klecany', 'Klimkovice', 'Klobouky u Brna', 'Kojetín', 'Konice', 'Kopidlno', 'Koryčany', 'Kosmonosy',
'Kostelec na Hané', 'Kostelec nad Labem', 'Kostelec nad Orlicí', 'Kostelec nad Černými lesy', 'Kouřim', 'Košťany',
'Kožlany', 'Kralovice', 'Kraslice', 'Kravaře', 'Kryry', 'Králíky', 'Králův Dvůr', 'Krásno', 'Krásná Hora nad Vltavou',
'Krásná Lípa', 'Krásné Údolí', 'Kunovice', 'Kunštát', 'Kynšperk nad Ohří', 'Lanžhot', 'Ledeč nad Sázavou', 'Ledvice',
'Letohrad', 'Letovice', 'Liberec', 'Libochovice', 'Libušín', 'Libáň', 'Libčice nad Vltavou', 'Liběchov', 'Lipník nad Bečvou',
'Litovel', 'Lišov', 'Loket', 'Lom', 'Lomnice nad Lužnicí', 'Lomnice nad Popelkou', 'Loučná pod Klínovcem',
'Lovosice', 'Loštice', 'Luby', 'Luhačovice', 'Lučany nad Nisou', 'Luže', 'Lysá nad Labem', 'Lázně Bohdaneč', 'Lázně Bělohrad',
'Lázně Kynžvart', 'Manětín', 'Mašťov', 'Meziboří', 'Meziměstí', 'Mikulov', 'Mikulášovice', 'Miletín', 'Milevsko',
'Milovice', 'Mimoň', 'Miroslav', 'Mirotice', 'Mirovice', 'Mirošov', 'Mladá Boleslav', 'Mladá Vožice', 'Mnichovice',
'Mnichovo Hradiště', 'Mníšek pod Brdy', 'Modřice', 'Mohelnice', 'Moravské Budějovice', 'Moravský Beroun', 'Moravský Krumlov',
'Morkovice-Slížany', 'Most', 'Mýto', 'Městec Králové', 'Město Albrechtice', 'Město Touškov', 'Měčín', 'Mšeno', 'Nalžovské Hory',
'Napajedla', 'Nasavrky', 'Nechanice', 'Nejdek', 'Nepomuk', 'Netolice', 'Neveklov', 'Nová Bystřice', 'Nová Paka',
'Nová Role', 'Nová Včelnice', 'Nové Hrady', 'Nové Město nad Metují', 'Nové Město pod Smrkem', 'Nové Sedlo',
'Nové Strašecí', 'Nový Bydžov', 'Nový Knín', 'Náměšť nad Oslavou', 'Nýrsko', 'Nýřany', 'Němčice nad Hanou',
'Odolena Voda', 'Odry', 'Olešnice', 'Olomouc', 'Oloví', 'Opava', 'Opočno', 'Osek', 'Osečná', 'Oslavany', 'Ostrava',
'Pacov', 'Pardubice', 'Paskov', 'Pec pod Sněžkou', 'Petřvald', 'Pečky', 'Pilníkov', 'Planá', 'Planá nad Lužnicí', 'Plasy',
'Plesná', 'Plumlov', 'Plzeň', 'Plánice', 'Poběžovice', 'Podbořany', 'Podivín', 'Pohořelice', 'Police nad Metují',
'Polička', 'Polná', 'Postoloprty', 'Potštát', 'Počátky', 'Praha', 'Proseč', 'Prostějov', 'Protivín', 'Pyšely',
'Přebuz', 'Přelouč', 'Přerov', 'Přeštice', 'Přibyslav', 'Přimda', 'Příbor', 'Rabí', 'Radnice', 'Rajhrad', 'Ralsko',
'Raspenava', 'Rejštejn', 'Rokytnice nad Jizerou', 'Rokytnice v Orlických horách', 'Ronov nad Doubravou', 'Rosice',
'Rotava', 'Rousínov', 'Rovensko pod Troskami', 'Roztoky', 'Rožmberk nad Vltavou', 'Rožmitál pod Třemšínem', 'Rožďalovice',
'Rtyně v Podkrkonoší', 'Rudná', 'Rudolfov', 'Rychnov u Jablonce nad Nisou', 'Rychvald', 'Rájec-Jestřebí', 'Rýmařov',
'Sadská', 'Sedlec-Prčice', 'Sedlice', 'Sedlčany', 'Semily', 'Sezemice', 'Sezimovo Ústí', 'Seč', 'Skalná', 'Skuteč',
'Slatiňany', 'Slavičín', 'Slavkov u Brna', 'Slavonice', 'Slušovice', 'Smečno', 'Smiřice', 'Smržovka', 'Sobotka',
'Soběslav', 'Solnice', 'Spálené Poříčí', 'Staré Město (okres Uherské Hradiště)', 'Staré Město (okres Šumperk)',
'Starý Plzenec', 'Staňkov', 'Stochov', 'Stod', 'Strmilov', 'Stráž nad Nežárkou', 'Stráž pod Ralskem', 'Strážnice',
'Strážov', 'Studénka', 'Stárkov', 'Stříbro', 'Suchdol nad Lužnicí', 'Svoboda nad Úpou', 'Svratka', 'Světlá nad Sázavou',
'Sázava', 'Tanvald', 'Telč', 'Teplice', 'Teplice nad Metují', 'Teplá', 'Terezín', 'Tišnov', 'Toužim', 'Tovačov', 'Trhové Sviny',
'Trhový Štěpánov', 'Trmice', 'Týn nad Vltavou', 'Týnec nad Labem', 'Týnec nad Sázavou', 'Týniště nad Orlicí', 'Třebechovice pod Orebem',
'Třebenice', 'Třeboň', 'Třemošnice', 'Třemošná', 'Třešť', 'Uherský Ostroh', 'Uhlířské Janovice', 'Unhošť',
'Valašské Klobouky', 'Valtice', 'Vamberk', 'Vejprty', 'Velešín', 'Velká Bystřice', 'Velká Bíteš', 'Velké Bílovice',
'Velké Hamry', 'Velké Opatovice', 'Velké Pavlovice', 'Velký Šenov', 'Veltrusy', 'Velvary', 'Verneřice', 'Veselí nad Lužnicí',
'Vidnava', 'Vimperk', 'Vizovice', 'Vlachovo Březí', 'Vodňany', 'Volary', 'Volyně', 'Votice', 'Vracov', 'Vratimov', 'Vrbno pod Pradědem',
'Vroutek', 'Vysoké Veselí', 'Vysoké nad Jizerou', 'Vyšší Brod', 'Vítkov', 'Výsluní', 'Všeruby', 'Zbiroh', 'Zbýšov', 'Zdice', 'Zlaté Hory',
'Zliv', 'Zlín', 'Zruč nad Sázavou', 'Zubří', 'Zákupy', 'Zásmuky', 'Újezd u Brna', 'Úpice', 'Úsov', 'Ústí nad Labem',
'Úterý', 'Úvaly', 'Úštěk', 'Černovice', 'Černošice', 'Černošín', 'Červená Řečice', 'Červený Kostelec', 'Česká Kamenice', 'Česká Skalice',
'České Budějovice', 'České Velenice', 'Český Brod', 'Český Dub', 'Řevnice', 'Šenov', 'Šlapanice', 'Šluknov', 'Špindlerův Mlýn', 'Štramberk',
'Štíty', 'Štětí', 'Švihov', 'Žacléř', 'Žamberk', 'Žandov', 'Ždánice', 'Ždírec nad Doubravou', 'Žebrák', 'Železnice', 'Železná Ruda', 'Železný Brod',
'Židlochovice', 'Žirovnice', 'Žlutice', 'Žulová'
)
streets = (
'Horní Stromky', 'Vizovická', 'K Brusce', 'Mírová', 'Rašínská', 'Boušova', 'Pobřežní', 'Dolnobřežanská', 'Černá',
'Šůrova', 'Červenkova', 'Nad Mostem', 'Libuňská', 'Chotovická', 'Petříkova', 'Pod Vodárenskou Věží', 'Na Fišerce',
'Ke Březině', 'Za Lázeňkou', 'Nad Šafránkou', 'Na Laurové', 'Nám. Republiky', 'Vlašimská', 'Nad Rohatci', 'Tylišovská',
'Nábřeží Kapitána Jaroše', 'Lešovská', 'U Podjezdu', 'Průškova', 'Estonská', 'Máslova', 'K Otočce', 'Jižní', 'Švecova',
'Mongolská', 'Kalská', 'Nad Rokytkou', 'Malešovská', 'Plzeňská', 'V Hájkách', 'Úpská', 'Ambrožova', 'Pikovická',
'Neužilova', 'Na Staré Vinici', 'Vstupní', 'Nýdecká', 'U Společenské Zahrady', 'Ostrovského', 'Bazovského', 'Lešenská',
'Na Štamberku', 'Na Svahu', 'Výhledské Nám.', 'K Lipám', 'Za Stadionem', 'Opletalova', 'Nábřeží Ludvíka Svobody', 'Komenského Nám.',
'Křimická', 'Domkovská', 'Pyšelská', 'Štychova', 'Horákova', 'Nad Zavážkou', 'K Prelátům', 'Vašátkova', 'Benákova', 'Náměstí Prezidenta Masaryka',
'Mílovská', 'U Hostivařského Nádraží', 'Jihovýchodní I', 'Hostivařské Nám.', 'Zbynická', 'Heineho', 'U Dobešky',
'Doubická', 'Ke Břvům', 'Na Záhonech', 'Kloboukova', 'Kostnické Náměstí', 'Pelclova', 'Smotlachova', 'Pod Spiritkou',
'Hůlkova', 'Matenská', 'Do Zahrádek Ii', 'Dobrošovská', 'Lovčenská', 'Jasná I', 'Škrétova', 'Moravanů', 'Budapešťská',
'Kojetická', 'Náměstí I. P. Pavlova', 'Bajkalská', 'U Větrolamu', 'Vlčická', 'Jarešova', 'Sámova', 'Kotrčová', 'Musílkova', 'Ingrišova',
'U Nových Domů I', 'Dělostřelecká', 'Ke Hrázi', 'Mochovská', 'Rýmařovská', 'Dolní Chaloupky', 'Za Arielem', 'U Rajské Zahrady', 'K Šedivce',
'Březová', 'Doubravínova', 'Mládkova', 'Tachovské Náměstí', 'Lehárova', 'Severní X', 'V Tehovičkách', 'Bermanova', 'Grammova', 'Spojovací', 'Verdunská',
'Závrchy', 'Čerpadlová', 'Vítězná', 'Nad Plynovodem', 'U Smíchovského Hřbitova', 'Nedvědovo Náměstí', 'Bachova', 'U Dálnice', 'Všejanská', 'Maňákova', 'Rokytnická',
'Loděnická', 'U Pumpy', 'Michnova', 'Záblatská', 'Poslední', 'Hněvkovského', 'Za Křížem', 'Nad Návsí', 'Jablonecká', 'Súdánská', 'Mazancova', 'Pod Čertovou Skalou',
'Weilova', 'Čajkovského', 'Nad Zátiším', 'Moldavská', 'Juarézova', 'Žižkova', 'Pod Lochkovem', 'Nad Vernerákem', 'Žherská', 'Prusíkova', 'Výtoňská', 'Na Srážku',
'Šachovská', 'Nučická', 'Novákovo Náměstí', 'Sitteho', 'U Vápenice', 'Na Kuthence', 'Čelakovského Sady', 'V Závitu', 'Na Vartě', 'Oválová', 'Machovická',
'Nad Olšinami', 'Vajgarská', 'Kulhavého', 'Kodaňská', 'Kralupská', 'Lednická', 'Pod Velkým Hájem', 'Hvězdonická', 'Na Kozinci', 'Semická', 'K Dálnici',
'Trytova', 'Vyhlídkova', 'Pohnertova', 'U Nového Dvora', 'K Vodě', 'Nad Libří', 'K Matěji', 'V Kotcích', 'Kohoutových', 'Na Cikánce', 'Chládkova',
'Slatiňanská', 'Pod Kostelem', 'Na Spojce', 'Na Zahrádkách', 'Nad Obcí', 'K Přehradám', 'Na Náspu', 'V Nížinách', 'Josefa Houdka',
'Na Pěšině', 'Hnězdenská', 'Za Statky', 'Kremnická', 'Čestmírova', 'U Rakovky', 'Kodicilova', 'K Lučinám', 'Nouzov', 'Krátký Lán',
'Anny Drabíkové', 'Kadaňská', 'Stroupežnického', 'Jírova', 'U Dětského Hřiště', 'Žofie Podlipské', 'Nad Šancemi', 'Lošáková',
'Roblínská', 'Mezi Sklady', 'Na Pomezí', 'U Mlýnského Rybníka', 'Makedonská', 'K Dýmači', 'V Zátiší', 'Pohořelec',
'Jiřinková', 'U Nové Dálnice', 'Čuprova', 'Vraňanská', 'Severovýchodní Vi', 'Petřínská', 'K Hořavce', 'Sádovská', 'Pod Průsekem',
'Konžská', 'Dřítenská', 'Pirinská', 'U Hřiště', 'Kukelská', 'Moravanská', 'Koclířova', 'Žilinská', 'Ve Žlíbku', 'Veronské Nám.',
'U Větrníku', 'Svojsíkova', 'Izraelská', 'Staňkovka', 'Na Viničních Horách', 'Čankovská', 'Na Špitálce', 'Valdovská', 'Rudoltická',
'Ke Strašnické', 'Paťanka', 'Panuškova', 'Pankrácké Nám.', 'Budčická', 'Šermířská', 'Medlovská', 'K Vidouli', 'Horní Chaloupky', 'V Americe',
'Dejvická', 'Klášterecká', 'Šárovo Kolo', 'Mladoboleslavská', 'Palackého', 'Lumiérů', 'Ivančická', 'Za Valem', 'Na Břevnovské Pláni',
'Tichonická', 'Náměstí Hrdinů', 'Mistřínská', 'Křížkovského', 'Tanvaldská', 'V Padolině', 'Před Skalkami Ii', 'Na Křivce',
'Nad Zámečkem', 'Nad Krocínkou', 'Podlešínská', 'Nad Popelkou', 'Oderská', 'Jeruzalémská', 'Smolenská', 'Lebeděvova', 'Libichovská',
'Na Šafránce', 'Průjezdná', 'Záluské', 'Branišovská', 'Spinozova', 'K Betáni', 'Machuldova', 'Podohradská', 'Cerhenická', 'V Brůdku',
'U Vlachovky', 'Pod Letištěm', 'Vlastislavova', 'Klecanská', 'Žinkovská', 'Maltézské Náměstí', 'Boršov', 'Mukařovského',
'Josefa Šimůnka', 'Suchdolská', 'Opočínská', 'Heydukova', 'Vršovka', 'Thurnova', 'Mezilesní', 'Za Pivovarem', 'Uljanovská', 'Panenská',
'Sladovnická', 'Plynární', 'Kozácká', 'Vlasákova', 'Javornická', 'Ševčíkova', 'Podle Náhonu', 'Doubravická', 'Františka Černého',
'Chotětovská', 'K Háječku', 'Pod Výšinkou', 'U Šesté Baterie', 'Drahanská', 'Augustova', 'U Balabenky', 'Boční I', 'Jirčanská',
'Na Šubě', 'Brixiho', 'Klímova', 'Kazín', 'Fügnerovo Náměstí', 'Na Příčné Mezi', 'Plánická', 'Africká', 'Vratislavova', 'Olympijská',
'Na Bojišti', 'K Nádrži', 'Vokrojova', 'Bořetínská', 'Kováříkova', 'Lánovská', 'U Staré Pošty', 'Na Poustkách', 'V Poli', 'Meziškolská',
'Pajerova', 'Habartovská', 'Mlékárenská', 'Dělnická', 'U Štěpu', 'Družná', 'Klouzková', 'Před Rybníkem', 'Nad Košinkou', 'Spolupráce',
'V Humenci', 'Adélčina', 'Březanova', 'Pod Kesnerkou', 'Kosmonoská', 'Do Dubin', 'Nad Lávkou', 'Mezi Lysinami', 'Na Topolce', 'Snopkova',
'Severní Viii', 'Okrová', 'Třebihošťská', 'Mádrova', 'Na Lázeňce', 'Slivenecká', 'Nám. Barikád', 'Nad Strouhou', 'Jindřicha Plachty',
'Pod Srázem', 'U Waltrovky', 'Bratří Čapků', 'Onšovecká', 'Machnova', 'Kostková', 'Rožmberská', 'Zapských', 'Přípřežní', 'Výravská',
'Podléšková', 'Štěchovická', 'Poleradská', 'Jilmová', 'Hostýnská'
)
states = (
'Hlavní město Praha',
'Středočeský kraj',
'Jihočeský kraj',
'Plzeňský kraj',
'Karlovarský kraj',
'Ústecký kraj',
'Liberecký kraj',
'Královéhradecký kraj',
'Pardubický kraj',
'Kraj Vysočina',
'Jihomoravský kraj',
'Olomoucký kraj',
'Moravskoslezský kraj',
'Zlínský kraj',
)
countries = (
'Afghánistán', 'Albánie', 'Alžírsko', 'Andorra', 'Angola', 'Antigua a Barbuda', 'Argentina', 'Arménie', 'Austrálie',
'Bahamy', 'Bahrajn', 'Bangladéš', 'Barbados', 'Belgie', 'Belize', 'Benin', 'Bhútán', 'Bolívie', 'Bosna a Hercegovina',
'Botswana', 'Brazílie', 'Brunej', 'Bulharsko', 'Burkina Faso', 'Burundi', 'Bělorusko', 'Chile', 'Chorvatsko',
'Cookovy ostrovy', 'Demokratická republika Kongo', 'Dominika', 'Dominikánská republika', 'Dánsko', 'Džibutsko',
'Egypt', 'Ekvádor', 'Eritrea', 'Estonsko', 'Etiopie', 'Federativní státy Mikronésie', 'Fidži', 'Filipíny', 'Finsko',
'Francie', 'Gabon', 'Gambie', 'Ghana', 'Gruzie', 'Guatemala', 'Guinea', 'Guinea-Bissau', 'Guyana', 'Haiti', 'Honduras',
'Indie', 'Irsko', 'Irák', 'Island', 'Itálie', 'Izrael', 'Jamajka', 'Japonsko', 'Jemen', 'Jihoafrická republika',
'Jižní Súdán', 'Jordánsko', 'Kambodža', 'Kamerun', 'Kanada', 'Kapverdy', 'Katar', 'Kazachstán', 'Keňa', 'Kiribati',
'Kolumbie', 'Kostarika', 'Kuba', 'Kypr', 'Kyrgyzstán', 'Laos', 'Lesotho', 'Libanon', 'Libye', 'Lichtenštejnsko',
'Litva', 'Lotyšsko', 'Lucembursko', 'Madagaskar', 'Makedonie', 'Malajsie', 'Malawi', 'Maledivy', 'Mali', 'Malta',
'Maroko', 'Marshallovy ostrovy', 'Mauricius', 'Mauritánie', 'Maďarsko', 'Mexiko', 'Moldavsko', 'Monako', 'Mongolsko',
'Mosambik', 'Myanmar', 'Namibie', 'Nauru', 'Nepál', 'Niger', 'Nigérie', 'Nikaragua', 'Niue', 'Nizozemsko', 'Norsko',
'Nový Zéland', 'Německo', 'Omán', 'Palau', 'Panama', 'Papua-Nová Guinea', 'Paraguay', 'Peru', 'Pobřeží slonoviny',
'Polsko', 'Portugalsko', 'Pákistán', 'Rakousko', 'Republika Kongo', 'Rovníková Guinea', 'Rumunsko', 'Rusko',
'Rwanda', 'Salvador', 'Samoa', 'San Marino', 'Saúdská Arábie', 'Senegal', 'Severní Korea', 'Seychely', 'Sierra Leone',
'Singapur', 'Slovensko', 'Slovinsko', 'Somálsko', 'Spojené arabské emiráty', 'Spojené království', 'Spojené státy americké',
'Srbsko', 'Středoafrická republika', 'Surinam', 'Svatá Lucie', 'Svatý Kryštof a Nevis', 'Svatý Tomáš a Princův ostrov',
'Svatý Vincenc a Grenadiny', 'Svazijsko', 'Súdán', 'Sýrie', 'Tanzanie', 'Thajsko', 'Togo', 'Tonga', 'Trinidad a Tobago',
'Tunisko', 'Turecko', 'Turkmenistán', 'Tuvalu', 'Tádžikistán', 'Uganda', 'Ukrajina', 'Uruguay', 'Uzbekistán', 'Vanuatu',
'Vatikán', 'Venezuela', 'Vietnam', 'Východní Timor', 'Zambie', 'Zimbabwe', 'Ázerbájdžán', 'Írán', 'Čad', 'Černá Hora',
'Česko', 'Čína', 'Řecko', 'Šalamounovy ostrovy', 'Španělsko', 'Srí Lanka', 'Švédsko', 'Švýcarsko'
)
@classmethod
def street_suffix_short(cls):
return cls.random_element(cls.street_suffixes_short)
@classmethod
def street_suffix_long(cls):
return cls.random_element(cls.street_suffixes_long)
@classmethod
def city_name(cls):
return cls.random_element(cls.cities)
@classmethod
def street_name(cls):
return cls.random_element(cls.streets)
@classmethod
def state(cls):
return cls.random_element(cls.states)

View file

@ -1 +0,0 @@
# coding=utf-8

View file

@ -1,42 +0,0 @@
# coding=utf-8
from __future__ import unicode_literals
from ..internet import Provider as InternetProvider
from faker.utils.decorators import slugify_domain
class Provider(InternetProvider):
free_email_domains = (
'aol.de', 'gmail.com', 'gmx.de', 'googlemail.com', 'hotmail.de',
'web.de', 'yahoo.de',
)
tlds = ('com', 'com', 'com', 'net', 'org', 'de', 'de', 'de', )
@staticmethod
def _to_ascii(string):
# ``slugify`` doesn't replace `ß` and normalize
# other glyphs as single letters
replacements = (
('ä', 'ae'), ('Ä', 'Ae'),
('ö', 'oe'), ('Ö', 'Oe'),
('ü', 'ue'), ('Ü', 'Ue'),
('ß', 'ss'),
)
for search, replace in replacements:
string = string.replace(search, replace)
return string
@slugify_domain
def user_name(self):
pattern = self.random_element(self.user_name_formats)
return self._to_ascii(
self.bothify(self.generator.parse(pattern)))
@slugify_domain
def domain_word(self):
company = self.generator.format('company')
company_elements = company.split(' ')
company = self._to_ascii(company_elements.pop(0))
return company

View file

@ -1,496 +0,0 @@
# coding=utf-8
from __future__ import unicode_literals
from ..person import Provider as PersonProvider
class Provider(PersonProvider):
formats = (
'{{first_name_male}} {{last_name}}',
'{{first_name_male}} {{last_name}}',
'{{first_name_male}} {{last_name}}',
'{{first_name_male}} {{last_name}}',
'{{first_name_male}} {{last_name}}-{{last_name}}',
'{{first_name_female}} {{last_name}}',
'{{first_name_female}} {{last_name}}',
'{{first_name_female}} {{last_name}}',
'{{first_name_female}} {{last_name}}',
'{{first_name_female}} {{last_name}}-{{last_name}}',
'{{prefix_male}} {{first_name_male}} {{last_name}}',
'{{prefix_female}} {{first_name_female}} {{last_name}}',
'{{first_name_male}} {{last_name}} {{suffix}}',
'{{first_name_female}} {{last_name}} {{suffix}}',
'{{prefix_male}} {{first_name_male}} {{last_name}} {{suffix}}',
'{{prefix_female}} {{first_name_female}} {{last_name}} {{suffix}}',
)
first_names_male = (
'Abel', 'Abraham', 'Adalbero', 'Adam', 'Adamo', 'Adolfo', 'Adrian',
'Adriano', 'Adrianus', 'Adrien', 'Alain', 'Alajos', 'Alan', 'Albain',
'Alban', 'Albano', 'Alberto', 'Albin', 'Alec', 'Alejandro',
'Alessandro', 'Alessio', 'Alex', 'Alexander', 'Alexandre',
'Alexandros', 'Alexej', 'Alexis', 'Alfons', 'Alfonso', 'Aljoscha',
'Allan', 'Allen', 'Alois', 'Alon', 'Alonzo', 'Alphonse', 'Alwin',
'Amadeo', 'Amadeus', 'Amandus', 'Amos', 'Anatol', 'Anatole',
'Anatolij', 'Anders', 'Andi', 'Andor', 'Andre', 'Andreas', 'Andrej',
'Andrew', 'Andrijan', 'Andy', 'Angelus', 'Ansgar', 'Anthony',
'Antoine', 'Anton', 'Antonio', 'Araldo', 'Aram', 'Argus', 'Arjan',
'Armin', 'Arminio', 'Arnaldo', 'Arnault', 'Arndt', 'Arne', 'Arno',
'Arnold', 'Arrigo', 'Art', 'Arthur', 'Artur', 'Arturo', 'August',
'Auguste', 'Augustin', 'Aurelius', 'Axel', 'Balduin', 'Balthasar',
'Bardo', 'Barnabas', 'Barnard', 'Barney', 'Baruch', 'Basil',
'Basilius', 'Bastian', 'Bastien', 'Battista', 'Beatus', 'Beltrame',
'Beltran', 'Ben', 'Benedetto', 'Benedict', 'Benedikt', 'Bengt',
'Beniamino', 'Benignus', 'Benito', 'Benjamin', 'Benjy', 'Bennett',
'Benno', 'Benny', 'Benoit', 'Beppe', 'Bernard', 'Bernardo', 'Bernd',
'Bernhard', 'Bernie', 'Bert', 'Berthold', 'Bertoldo', 'Bertram',
'Bertrame', 'Bill', 'Billy', 'Birger', 'Bjarne', 'Björn', 'Bob',
'Bobby', 'Bodo', 'Bonifatius', 'Boris', 'Bosco', 'Brendan', 'Brian',
'Bruno', 'Bryan', 'Burkhard', 'Camillo', 'Camilo', 'Carl', 'Carlo',
'Carlos', 'Carol', 'Carsten', 'Casimir', 'Caspar', 'Cecil', 'Ceddric',
'Cedric', 'Celestino', 'Charles', 'Charlie', 'Chico', 'Chip', 'Chris',
'Christian', 'Christoph', 'Christophe', 'Christopher', 'Christy',
'Chuck', 'Cian', 'Cillian', 'Clarence', 'Clark', 'Clas', 'Claude',
'Claudio', 'Claudius', 'Claus', 'Clayton', 'Clemens', 'Cliff',
'Clifford', 'Clint', 'Clinton', 'Cody', 'Colin', 'Collin', 'Conan',
'Connor', 'Conny', 'Conor', 'Conrad', 'Constantine', 'Cooper',
'Cordell', 'Cornelius', 'Corvinus', 'Cristobal', 'Curd', 'Curt',
'Curtis', 'Curtiz', 'Cyril', 'Cyrill', 'Cäsar', 'Damian', 'Damon',
'Dan', 'Daniel', 'Daniele', 'Danilo', 'Danny', 'Dario', 'Darius',
'Dave', 'David', 'Davide', 'Dawson', 'Dean', 'Demetrius', 'Denis',
'Deniz', 'Dennis', 'Derek', 'Desiderius', 'Detlef', 'Detlev', 'Dick',
'Diego', 'Dieter', 'Dimitrij', 'Dirk', 'Dolf', 'Domenico', 'Domingo',
'Dominic', 'Dominik', 'Dominikus', 'Dominique', 'Donald', 'Donatello',
'Donato', 'Donatus', 'Dorian', 'Douglas', 'Dragan', 'Duarte', 'Duncan',
'Dylan', 'Earnest', 'Earvin', 'Eike', 'Eleasar', 'Elia', 'Elian',
'Elias', 'Elijah', 'Ellison', 'Elmar', 'Elroy', 'Emanuel', 'Emanuele',
'Emil', 'Emile', 'Emilian', 'Emiliano', 'Emilio', 'Emmanuel', 'Endrik',
'Enrico', 'Enrique', 'Enzo', 'Ephraim', 'Erasmus', 'Eric', 'Erik',
'Ermanno', 'Ernest', 'Ernestin', 'Ernesto', 'Eros', 'Errol', 'Etienne',
'Eugen', 'Eugene', 'Eugenio', 'Eusebius', 'Everett', 'Ezra', 'Fabiano',
'Fabien', 'Fabio', 'Fabius', 'Fabrice', 'Fabricius', 'Fabrizio',
'Falco', 'Falk', 'Falko', 'Faruk', 'Faustus', 'Favian', 'Federico',
'Federigo', 'Fedor', 'Felice', 'Feliciano', 'Felicien', 'Felipe',
'Felix', 'Felton', 'Feodor', 'Ferdinand', 'Fergus', 'Fernand',
'Fernando', 'Ferrante', 'Ferris', 'Fidel', 'Fidelio', 'Fidelis',
'Fidelius', 'Filippo', 'Finan', 'Finn', 'Fiore', 'Fjodor', 'Flavian',
'Flemming', 'Fletcher', 'Flint', 'Florens', 'Florentin', 'Florian',
'Florin', 'Florus', 'Floyd', 'Forrest', 'Forrester', 'Forster',
'Foster', 'Fox', 'Francesco', 'Francis', 'Francisco', 'Franco',
'Francois', 'Franek', 'Frank', 'Frankie', 'Franklin', 'Franziskus',
'Frasier', 'Frayne', 'Fred', 'Freddy', 'Frederic', 'Frederick',
'Frederik', 'Freeman', 'Fremont', 'Fridericus', 'Fridolin', 'Friedel',
'Frye', 'Gabriel', 'Gaetan', 'Gaetano', 'Gallus', 'Garcia', 'Garfield',
'Garin', 'Garnier', 'Garrick', 'Garrison', 'Garron', 'Garry', 'Garson',
'Gaspar', 'Gaspard', 'Gaspare', 'Gaston', 'Gastonne', 'Gates',
'Gauthier', 'Gavin', 'Gene', 'Geoffrey', 'Geoffroy', 'Geordi', 'Georg',
'George', 'Georges', 'Gerald', 'Geraldo', 'Gerard', 'Geraud', 'Gerd',
'Gereon', 'Germain', 'German', 'Germano', 'Gernot', 'Gerold',
'Geronimo', 'Gerrit', 'Gerry', 'Gert', 'Gerulf', 'Gerwin', 'Giacomo',
'Gian', 'Giancarlo', 'Gianni', 'Gibson', 'Gideon', 'Gil', 'Gilbert',
'Gilberto', 'Gilles', 'Gillian', 'Gino', 'Gioacchino', 'Giorgio',
'Giovanni', 'Giraldo', 'Gisbert', 'Gitano', 'Giuliano', 'Giulio',
'Giuseppe', 'Giusto', 'Glen', 'Glenn', 'Goliath', 'Goran', 'Gordon',
'Gordy', 'Goswin', 'Graciano', 'Graham', 'Grayson', 'Greg', 'Gregg',
'Gregoire', 'Gregor', 'Gregory', 'Griffin', 'Grover', 'Gualtier',
'Gualtiero', 'Guglielmo', 'Guido', 'Guillaume', 'Guillermo', 'Gunnar',
'Gunter', 'Gunther', 'Gus', 'Gustavo', 'Gustl', 'Gutierre', 'Guy',
'Götz', 'Günter', 'Günther', 'Hajo', 'Hamilton', 'Hamlet', 'Hampton',
'Hanley', 'Hannes', 'Hans', 'Harald', 'Hardy', 'Harley', 'Harlow',
'Harold', 'Haroun', 'Harrison', 'Harry', 'Harvey', 'Hasso', 'Hauke',
'Havel', 'Hector', 'Heiko', 'Heiner', 'Heino', 'Hektor', 'Helge',
'Helmut', 'Helmuth', 'Hendrick', 'Hendrik', 'Hennes', 'Henning',
'Henri', 'Henrick', 'Henrik', 'Henry', 'Herald', 'Herbie', 'Hercules',
'Herold', 'Herwig', 'Hieronymus', 'Hilarius', 'Holger', 'Holm',
'Homer', 'Horace', 'Horatio', 'Horaz', 'Howard', 'Howie', 'Hugh',
'Hugo', 'Humphrey', 'Hunter', 'Ignatius', 'Ignaz', 'Ignazio', 'Igor',
'Ilian', 'Ilja', 'Immanuel', 'Ingo', 'Ingolf', 'Ingvar', 'Irenäus',
'Irvin', 'Irving', 'Irwin', 'Isaac', 'Isaak', 'Isai', 'Isaiah',
'Isidor', 'Istvan', 'Ivan', 'Ivo', 'Jackson', 'Jacky', 'Jacob',
'Jacques', 'Jacquin', 'Jadon', 'Jago', 'Jaime', 'Jake', 'Jakob',
'Jamal', 'James', 'Jan', 'Janis', 'Jannes', 'Jannik', 'Janning',
'Janos', 'Janosch', 'Jaques', 'Jared', 'Jarik', 'Jarl', 'Jarno',
'Jaro', 'Jaromir', 'Jarrett', 'Jascha', 'Jason', 'Jasper', 'Jay',
'Jean', 'Jeff', 'Jefferson', 'Jeffrey', 'Jendrick', 'Jens', 'Jered',
'Jeremiah', 'Jeremias', 'Jeremie', 'Jeremy', 'Jerold', 'Jerom',
'Jerome', 'Jerrick', 'Jerry', 'Jesaja', 'Jesko', 'Jesse', 'Jim',
'Jimmy', 'Jirko', 'Jo', 'Joakim', 'Joao', 'Joaquin', 'Joe', 'Joel',
'Joey', 'John', 'Johnny', 'Jokim', 'Jonah', 'Jonas', 'Jonathan',
'Jonny', 'Jordan', 'Jordano', 'Jorge', 'Jose', 'Josef', 'Joseph',
'Josh', 'Joshua', 'Josias', 'Jost', 'Josua', 'Josue', 'Jourdain',
'Juan', 'Juanito', 'Jud', 'Jules', 'Julien', 'Julio', 'Julius',
'Jurij', 'Justin', 'Justinian', 'Justus', 'Jörg', 'Jürgen', 'Kain',
'Kaj', 'Kajetan', 'Kallistus', 'Karsten', 'Kasimir', 'Kaspar',
'Keamon', 'Keith', 'Ken', 'Kenan', 'Kenneth', 'Keno', 'Kersten',
'Kerwin', 'Kevin', 'Kian', 'Kilian', 'Kim', 'Kiran', 'Klaas', 'Klaus',
'Klemens', 'Kleopas', 'Knud', 'Knut', 'Kolja', 'Konrad', 'Konstantin',
'Korbin', 'Korbinian', 'Kordt', 'Kristian', 'Kristof', 'Kristoffer',
'Kuno', 'Kurt', 'Kyros', 'LLoyd', 'Lajos', 'Lambert', 'Lamberto',
'Larry', 'Lars', 'Laslo', 'Lasse', 'Laurent', 'Laurente', 'Laurentius',
'Laurenz', 'Laurenzo', 'Lawrence', 'Lazarus', 'Lazlo', 'Leander',
'Lee', 'Leif', 'Leigh', 'Lennart', 'Lenny', 'Lenz', 'Leo', 'Leon',
'Leonard', 'Leonardo', 'Leonce', 'Leone', 'Leonello', 'Leonhard',
'Leopold', 'Leopoldo', 'Leroy', 'Lesley', 'Lester', 'Leverett', 'Levi',
'Lew', 'Lewis', 'Lex', 'Liborius', 'Lienhard', 'Linus', 'Lion',
'Lionel', 'Lobo', 'Loic', 'Lorenz', 'Lorenzo', 'Loris', 'Lothaire',
'Lou', 'Louie', 'Louis', 'Lovis', 'Luc', 'Luca', 'Lucan', 'Lucas',
'Luciano', 'Lucien', 'Lucius', 'Ludovico', 'Ludwig', 'Luigi', 'Luis',
'Lukas', 'Luke', 'Lutger', 'Luther', 'Lutz', 'Lyonel', 'Maik', 'Malte',
'Malwin', 'Manolito', 'Manolo', 'Manuel', 'Marc', 'Marcel', 'Marcello',
'Marcellus', 'Marco', 'Marcus', 'Marek', 'Marian', 'Marin', 'Marino',
'Marinus', 'Mario', 'Marius', 'Mark', 'Markus', 'Marlon', 'Maro',
'Marten', 'Martin', 'Marvin', 'Massimo', 'Mathias', 'Mathieu',
'Mathis', 'Matt', 'Matteo', 'Matthes', 'Matthew', 'Matthias',
'Matthieu', 'Matthäus', 'Maurice', 'Mauritius', 'Mauritz', 'Maurizio',
'Mauro', 'Maurus', 'Max', 'Maxence', 'Maxi', 'Maxime', 'Maximilian',
'Maximilien', 'Melchior', 'Merlin', 'Michael', 'Michail', 'Michel',
'Michele', 'Mick', 'Mickey', 'Miguel', 'Mika', 'Mikael', 'Mike',
'Mikel', 'Miklos', 'Milan', 'Milo', 'Mirko', 'Miro', 'Miroslav',
'Mischa', 'Mitja', 'Morgan', 'Moritz', 'Morris', 'Morten', 'Nat',
'Nathan', 'Nathanael', 'Nathaniel', 'Nepomuk', 'Nero', 'Neron',
'Newton', 'Niccolo', 'Nicholas', 'Nick', 'Nicki', 'Nico', 'Nicola',
'Nicolai', 'Nicolaj', 'Nicolas', 'Niels', 'Nigel', 'Nikita', 'Niklas',
'Niklaus', 'Niko', 'Nikodemus', 'Nikolai', 'Nikolaus', 'Nils', 'Noah',
'Noel', 'Norbert', 'Norberto', 'Norman', 'Odin', 'Odo', 'Odysseus',
'Olaf', 'Oleg', 'Oliver', 'Olivier', 'Oliviero', 'Olof', 'Oluf',
'Omar', 'Omer', 'Orlando', 'Orson', 'Oskar', 'Osvaldo', 'Oswin',
'Otello', 'Othello', 'Otto', 'Ove', 'Owain', 'Owen', 'Paco', 'Paddy',
'Palmiro', 'Pancho', 'Paolo', 'Pascal', 'Pat', 'Patrice', 'Patricio',
'Patricius', 'Patrick', 'Patrizio', 'Patrizius', 'Paul', 'Paulin',
'Paulus', 'Pawel', 'Pedro', 'Peer', 'Pepe', 'Pepito', 'Peppone', 'Per',
'Percy', 'Perez', 'Pete', 'Peter', 'Phil', 'Philip', 'Philipp',
'Philippe', 'Philo', 'Piedro', 'Pier', 'Piero', 'Pierre', 'Piet',
'Pieter', 'Pietro', 'Pinkus', 'Pippin', 'Pitt', 'Pius', 'Placide',
'Placido', 'Placidus', 'Poldi', 'Quint', 'Quintin', 'Quintinus',
'Quintus', 'Quirin', 'Quirino', 'Raffaele', 'Raffaello', 'Raffaelo',
'Raimondo', 'Raimund', 'Raimundo', 'Rainer', 'Rainier', 'Ralf',
'Ralph', 'Ramon', 'Randolf', 'Randolph', 'Randy', 'Raoul', 'Raphael',
'Rasmus', 'Rasul', 'Raul', 'Ray', 'Raymond', 'Regnier', 'Reik',
'Reiner', 'Remo', 'Renato', 'Renatus', 'Renaud', 'Rene', 'Renja',
'Reto', 'Reynold', 'Ricardo', 'Riccardo', 'Rick', 'Ricky', 'Rico',
'Rinaldo', 'Robby', 'Robert', 'Roberto', 'Robin', 'Rocco', 'Rock',
'Rocky', 'Rod', 'Rodolfo', 'Rodolphe', 'Rodrigo', 'Rodrigue',
'Rodrique', 'Roger', 'Roland', 'Rolando', 'Rolf', 'Romain', 'Roman',
'Romano', 'Romeo', 'Romero', 'Ronald', 'Ronan', 'Ronny', 'Rory',
'Ross', 'Rowan', 'Rowland', 'Roy', 'Ruben', 'Rudolf', 'Rudolph',
'Ruggero', 'Rupert', 'Ryan', 'Salomon', 'Salomone', 'Salvador',
'Salvator', 'Salvatore', 'Sam', 'Sammy', 'Samuel', 'Samuele', 'Sander',
'Sandor', 'Sandro', 'Sandy', 'Sascha', 'Sauveur', 'Schorsch', 'Scipio',
'Scott', 'Sean', 'Sebastian', 'Sebastiano', 'Sebastien', 'Selim',
'Semjon', 'Sepp', 'Serenus', 'Serge', 'Sergej', 'Sergio', 'Sergius',
'Servatius', 'Severiano', 'Severin', 'Severo', 'Sidney', 'Sidonius',
'Silas', 'Silvain', 'Silvan', 'Silvano', 'Silvanus', 'Silverio',
'Silverius', 'Silvester', 'Silvestro', 'Silvio', 'Silvius', 'Simjon',
'Simon', 'Simone', 'Sinclair', 'Sixt', 'Sixtus', 'Slade', 'Solomon',
'Spencer', 'Stan', 'Stanislaus', 'Stanislaw', 'Stanley', 'Stefan',
'Stefano', 'Steffen', 'Sten', 'Stephan', 'Stephen', 'Steve', 'Steven',
'Stewart', 'Stig', 'Stuart', 'Sven', 'Sylvain', 'Sylvester', 'Söncke',
'Sören', 'Tam', 'Tarek', 'Tassilo', 'Tasso', 'Ted', 'Teddy',
'Teobaldo', 'Thaddäus', 'Theo', 'Theodor', 'Theodore', 'Thierry',
'Thimotheus', 'Thomas', 'Thommy', 'Thoralf', 'Thorben', 'Thore',
'Thorsten', 'Tiberio', 'Tiberius', 'Tibor', 'Till', 'Tim', 'Timmy',
'Timo', 'Timofej', 'Timon', 'Timoteo', 'Timothee', 'Timotheus',
'Timothy', 'Tin', 'Tito', 'Titus', 'Tizian', 'Tiziano', 'Tjade',
'Tjark', 'Tobi', 'Tobia', 'Tobiah', 'Tobias', 'Tobie', 'Tobis', 'Toby',
'Tom', 'Tommaso', 'Tommy', 'Toni', 'Tonio', 'Tony', 'Torben', 'Torin',
'Torsten', 'Tristan', 'Tycho', 'Tyler', 'Tyson', 'Udo', 'Ugo',
'Ugolino', 'Ulf', 'Uli', 'Ulli', 'Ulric', 'Ulrich', 'Ulrico',
'Umberto', 'Urbain', 'Urban', 'Urbano', 'Urias', 'Uriel', 'Ursus',
'Uwe', 'Valentiano', 'Valentin', 'Valentino', 'Valerian', 'Valerio',
'Valerius', 'Valery', 'Vasco', 'Veit', 'Veltin', 'Vernon', 'Vicente',
'Vico', 'Victor', 'Viktor', 'Vincent', 'Vincenzo', 'Vinzenez',
'Vinzenz', 'Virgil', 'Vitalis', 'Vito', 'Vittore', 'Vittoriano',
'Vittorio', 'Volker', 'Wallace', 'Walt', 'Warner', 'Warren', 'Wido',
'Wigand', 'Wilbur', 'Willi', 'William', 'Wilpert', 'Winston', 'Wolf',
'Wolfgang', 'Woodrow', 'Woody', 'Xaver',
)
first_names_female = (
'Abby', 'Abelina', 'Abigail', 'Adelaide', 'Adeline', 'Adina',
'Adriana', 'Adrienne', 'Afra', 'Agatha', 'Agnes', 'Aida', 'Aimee',
'Aischa', 'Albertine', 'Alea', 'Aleksandra', 'Alena', 'Alessa',
'Alessandra', 'Alessia', 'Alexa', 'Alexandra', 'Alexia', 'Alexis',
'Alice', 'Alicia', 'Alida', 'Alina', 'Aline', 'Alisa', 'Alissa',
'Alisson', 'Amabella', 'Amadea', 'Amanda', 'Amelia', 'Amelie', 'Amina',
'Amy', 'Ana', 'Anastasia', 'Andrea', 'Andrina', 'Anette', 'Angela',
'Angelika', 'Angelina', 'Angelique', 'Anina', 'Anine', 'Anita', 'Anja',
'Anjalie', 'Anke', 'Ann', 'Anna', 'Annabel', 'Annabell', 'Annabella',
'Annabelle', 'Anne', 'Annett', 'Annette', 'Annika', 'Annina', 'Antje',
'Antoinette', 'Antonella', 'Antonia', 'Arabella', 'Ariadne', 'Ariana',
'Ariane', 'Arianna', 'Ariella', 'Arielle', 'Arlene', 'Arlette',
'Arwenna', 'Ashley', 'Asta', 'Astrid', 'Audrey', 'Aurelia', 'Barbara',
'Bastiane', 'Bea', 'Beata', 'Beatrice', 'Beatrix', 'Becky', 'Belinda',
'Bella', 'Bellana', 'Belle', 'Benedikta', 'Benita', 'Bente', 'Beppina',
'Berenike', 'Berit', 'Bernadett', 'Bernadette', 'Bernadine', 'Betina',
'Betsy', 'Bettina', 'Betty', 'Bianca', 'Bianka', 'Bibiana', 'Bibiane',
'Birgit', 'Birgitt', 'Bodil', 'Bridget', 'Brigitta', 'Brigitte',
'Britta', 'Bärbel', 'Caitlin', 'Cameron', 'Camilla', 'Camille',
'Cammy', 'Cara', 'Carin', 'Carina', 'Carinna', 'Carla', 'Carmela',
'Carmelia', 'Carmen', 'Carol', 'Carola', 'Carole', 'Carolin',
'Carolina', 'Caroline', 'Carolyn', 'Carolyne', 'Cassandra', 'Cassie',
'Catalin', 'Caterina', 'Catharina', 'Catherine', 'Cathrin', 'Cathrine',
'Cathy', 'Catina', 'Catrin', 'Catriona', 'Cecile', 'Cecilia',
'Cecilie', 'Celeste', 'Celestine', 'Celina', 'Celine', 'Chantal',
'Charleen', 'Charlotte', 'Chatrina', 'Chelsea', 'Chiara', 'Chloe',
'Chrissy', 'Christa', 'Christiana', 'Christiane', 'Christin',
'Christina', 'Christine', 'Chyna', 'Ciara', 'Cinderella', 'Cindy',
'Cinja', 'Cira', 'Claire', 'Clara', 'Clarissa', 'Claudette', 'Claudia',
'Claudine', 'Clea', 'Cleannis', 'Clementia', 'Clementine', 'Cleo',
'Clio', 'Cliona', 'Clodia', 'Cloris', 'Coletta', 'Colette', 'Connie',
'Conny', 'Constance', 'Constanze', 'Cora', 'Coral', 'Coralie',
'Cordelia', 'Cordula', 'Corin', 'Corina', 'Corinna', 'Corinne',
'Cornelia', 'Cosette', 'Cosima', 'Cynthia', 'Daisy', 'Dajana',
'Daliah', 'Damaris', 'Damia', 'Damiana', 'Dana', 'Dania', 'Danica',
'Daniela', 'Daniele', 'Daniella', 'Danielle', 'Danja', 'Daphne',
'Darcie', 'Daria', 'Darina', 'Dawn', 'Dayna', 'Debbie', 'Debby',
'Debora', 'Deborah', 'Deetya', 'Delia', 'Delphine', 'Dena', 'Denise',
'Desdemona', 'Desideria', 'Desiree', 'Diana', 'Diane', 'Didina',
'Dina', 'Dinah', 'Dolly', 'Dolores', 'Domenica', 'Dominika',
'Dominique', 'Donna', 'Dora', 'Doreen', 'Dorina', 'Doris', 'Dorit',
'Doro', 'Dorothea', 'Dorothee', 'Dorothy', 'Dunja', 'Ebony', 'Edda',
'Edita', 'Edvige', 'Edwina', 'Eike', 'Eila', 'Eileen', 'Ela', 'Elaine',
'Eleanor', 'Elektra', 'Elena', 'Eleonora', 'Eleonore', 'Eliane',
'Elisa', 'Elisabeth', 'Elise', 'Elizabeth', 'Elke', 'Ella', 'Ellen',
'Elly', 'Eloise', 'Elsa', 'Elsbeth', 'Elvira', 'Elvire', 'Emanuela',
'Emanuelle', 'Emilia', 'Emilie', 'Emily', 'Emma', 'Enrica', 'Enya',
'Erika', 'Erin', 'Ernesta', 'Ernestina', 'Ernestine', 'Esmerelda',
'Esra', 'Estella', 'Estelle', 'Ester', 'Esther', 'Etiennette',
'Eudoxia', 'Eugenia', 'Eunike', 'Euphemia', 'Euphrasia', 'Eusebia',
'Eva', 'Evangelina', 'Evania', 'Eve', 'Evelien', 'Evelin', 'Eveline',
'Evelyn', 'Evelyne', 'Evette', 'Evi', 'Evita', 'Fabiane', 'Fabienne',
'Fabiola', 'Faith', 'Fanny', 'Farrah', 'Fatima', 'Faustina',
'Faustine', 'Fay', 'Faye', 'Faylinn', 'Federica', 'Fedora', 'Fee',
'Feli', 'Felice', 'Felicia', 'Felicitas', 'Felicity', 'Felizitas',
'Feodora', 'Fergie', 'Fidelia', 'Filia', 'Filiz', 'Finetta', 'Finja',
'Fiona', 'Fjodora', 'Flavia', 'Fleur', 'Fleur', 'Flo', 'Flora',
'Florence', 'Florentina', 'Florentine', 'Floria', 'Floriane',
'Florida', 'Florinda', 'Floris', 'Fortuna', 'Frances', 'Francesca',
'Francisca', 'Franka', 'Franzi', 'Franziska', 'Frauke', 'Freya',
'Friederike', 'Gabriela', 'Gabriele', 'Gabriella', 'Gabrielle', 'Gaby',
'Gail', 'Galatea', 'Galina', 'Gazelle', 'Gela', 'Geneva', 'Genoveva',
'Georgette', 'Georgia', 'Georgina', 'Geraldene', 'Geraldine',
'Germain', 'Germaine', 'Germana', 'Ghita', 'Gianna', 'Gigi', 'Gill',
'Gillian', 'Gina', 'Ginevra', 'Ginger', 'Ginny', 'Giovanna', 'Gisela',
'Gisele', 'Gisella', 'Giselle', 'Gitta', 'Giulia', 'Giuliana',
'Giulietta', 'Giuseppa', 'Giuseppina', 'Giustina', 'Gladys', 'Gloria',
'Glory', 'Goldie', 'Goldy', 'Grace', 'Gratia', 'Gratiana', 'Grazia',
'Greta', 'Gretel', 'Gunda', 'Gwen', 'Gwenda', 'Gwendolin', 'Gwendolyn',
'Gypsy', 'Hannah', 'Hanne', 'Harmony', 'Harriet', 'Hazel', 'Hedi',
'Hedy', 'Heide', 'Heidi', 'Heike', 'Helen', 'Helena', 'Helene',
'Helin', 'Hella', 'Hemma', 'Henrietta', 'Henriette', 'Henrike', 'Hera',
'Hetty', 'Hilary', 'Hilda', 'Hilde', 'Holiday', 'Holli', 'Holly',
'Hope', 'Ilana', 'Ilaria', 'Iliana', 'Iljana', 'Ilka', 'Ilona', 'Ilse',
'Ilyssa', 'Imke', 'Ina', 'India', 'Indira', 'Indra', 'Ines', 'Inga',
'Inge', 'Ingrid', 'Inka', 'Inken', 'Innozentia', 'Iona', 'Ira',
'Irena', 'Irene', 'Irina', 'Iris', 'Irisa', 'Irma', 'Isabel',
'Isabell', 'Isabella', 'Isabelle', 'Isis', 'Iva', 'Ivana', 'Ivona',
'Ivonne', 'Jaclyn', 'Jacqueline', 'Jacqui', 'Jael', 'Jamari', 'Jan',
'Jana', 'Jane', 'Janet', 'Janette', 'Janin', 'Janina', 'Janine',
'Janique', 'Janna', 'Jannine', 'Jarla', 'Jasmin', 'Jasmina', 'Jasmine',
'Jeanette', 'Jeanine', 'Jeanne', 'Jeannette', 'Jeannine', 'Jekaterina',
'Jelena', 'Jenifer', 'Jenna', 'Jennelle', 'Jennessa', 'Jennie',
'Jennifer', 'Jenny', 'Jennyfer', 'Jess', 'Jessica', 'Jessie',
'Jessika', 'Jill', 'Joan', 'Joana', 'Joann', 'Joanna', 'Joelle',
'Johanna', 'Jolanda', 'Jona', 'Jordana', 'Josee', 'Josefa', 'Josefina',
'Josefine', 'Josepha', 'Josephine', 'Josiane', 'Josie', 'Jovita',
'Joy', 'Joyce', 'Juana', 'Juanita', 'Judith', 'Judy', 'Julia',
'Juliana', 'Juliane', 'Julianne', 'Julie', 'Juliet', 'Juliette',
'July', 'June', 'Justina', 'Justine', 'Justise', 'Jutta', 'Jördis',
'Kamilia', 'Kamilla', 'Karen', 'Karima', 'Karin', 'Karina', 'Karla',
'Karola', 'Karolin', 'Karolina', 'Karoline', 'Kassandra', 'Katalin',
'Katarina', 'Kate', 'Katharina', 'Katharine', 'Katherina', 'Katherine',
'Kathleen', 'Kathrin', 'Kathrina', 'Kathryn', 'Kathy', 'Katinka',
'Katja', 'Katjana', 'Katrin', 'Katrina', 'Katrine', 'Kayla', 'Keala',
'Keelin', 'Kendra', 'Kerstin', 'Kiana', 'Kiara', 'Kim', 'Kira',
'Kirsten', 'Kirstin', 'Kita', 'Klara', 'Klarissa', 'Klaudia',
'Kleopatra', 'Kolina', 'Konstanze', 'Kora', 'Kordula', 'Kori',
'Kornelia', 'Krista', 'Kristiane', 'Kristin', 'Kristina', 'Kristine',
'Kyra', 'Käthe', 'Laila', 'Lana', 'Lara', 'Laria', 'Larissa', 'Laurel',
'Lauren', 'Laurence', 'Laurentia', 'Lauretta', 'Lavina', 'Laya', 'Lea',
'Leah', 'Leandra', 'Lee', 'Leigh', 'Leila', 'Lena', 'Leona', 'Leonie',
'Leontine', 'Leopoldine', 'Lesley', 'Leslie', 'Levana', 'Levia', 'Lia',
'Liane', 'Libusa', 'Licia', 'Lidia', 'Liesa', 'Liesbeth', 'Liese',
'Liesel', 'Lilian', 'Liliane', 'Lilith', 'Lilli', 'Lillian', 'Lilo',
'Lily', 'Lina', 'Linda', 'Lioba', 'Lisa', 'Lisbeth', 'Lise', 'Lisette',
'Liv', 'Livana', 'Livia', 'Liz', 'Liza', 'Lizzie', 'Lola', 'Lora',
'Lorena', 'Loretta', 'Lori', 'Lorraine', 'Lotte', 'Lotus', 'Louise',
'Luana', 'Luca', 'Lucia', 'Luciana', 'Lucie', 'Lucy', 'Luigia',
'Luisa', 'Luise', 'Luna', 'Luzia', 'Lydia', 'Lydie', 'Lynette', 'Lynn',
'Lätizia', 'Maddalena', 'Madelaine', 'Madeleine', 'Madeline',
'Madison', 'Madita', 'Madleine', 'Madlen', 'Madlene', 'Mae', 'Magda',
'Magdalena', 'Maggy', 'Magret', 'Maia', 'Maike', 'Maiken', 'Mailin',
'Maja', 'Malea', 'Malee', 'Malin', 'Malina', 'Mandy', 'Manja', 'Manon',
'Manuela', 'Mara', 'Maraike', 'Marcella', 'Marcelle', 'Marcia',
'Mareike', 'Maren', 'Margaret', 'Margareta', 'Margarete', 'Margaretha',
'Margarita', 'Margaritha', 'Margherita', 'Margit', 'Margitta',
'Margot', 'Margret', 'Margreth', 'Marguerite', 'Maria', 'Mariam',
'Marian', 'Mariana', 'Marianna', 'Marianne', 'Marie', 'Marieke',
'Mariella', 'Marielle', 'Marietta', 'Marija', 'Marika', 'Marilies',
'Marilyn', 'Marina', 'Marion', 'Marisa', 'Marissa', 'Marita',
'Maritta', 'Marjorie', 'Marla', 'Marleen', 'Marlen', 'Marlena',
'Marlene', 'Marlies', 'Marlis', 'Marsha', 'Martha', 'Marthe',
'Martina', 'Mary', 'Maryse', 'Mascha', 'Mathilda', 'Mathilde',
'Matilde', 'Mattea', 'Maude', 'Maura', 'Maureen', 'Maximiliane', 'May',
'Maya', 'Meg', 'Megan', 'Meike', 'Melanie', 'Melia', 'Melina',
'Melinda', 'Melissa', 'Melitta', 'Melodie', 'Meloney', 'Mercedes',
'Meret', 'Meri', 'Merle', 'Merline', 'Meryem', 'Mia', 'Micaela',
'Michaela', 'Michele', 'Michelle', 'Milena', 'Milla', 'Milva', 'Mimi',
'Minerva', 'Minna', 'Mira', 'Mirabella', 'Mireille', 'Mirella',
'Mireya', 'Miriam', 'Mirijam', 'Mirjam', 'Moesha', 'Moira', 'Mona',
'Moni', 'Monica', 'Monika', 'Monique', 'Monja', 'Morgane', 'Muriel',
'Myriam', 'Nadin', 'Nadine', 'Nadja', 'Nadjana', 'Naemi', 'Nancy',
'Nanette', 'Nani', 'Naomi', 'Nastasja', 'Natalia', 'Natalie',
'Natanja', 'Natascha', 'Nathalie', 'Neeja', 'Nena', 'Neria', 'Nerine',
'Nicol', 'Nicola', 'Nicole', 'Nicoletta', 'Nicolette', 'Nike',
'Nikola', 'Nina', 'Ninja', 'Ninon', 'Noa', 'Noelle', 'Noemi', 'Noemie',
'Nora', 'Norma', 'Nuala', 'Olga', 'Olivia', 'Ophelia', 'Orania',
'Orla', 'Ornella', 'Orsola', 'Ottilie', 'Paloma', 'Pam', 'Pamela',
'Pandora', 'Paola', 'Paolina', 'Pascale', 'Pat', 'Patrice', 'Patricia',
'Patrizia', 'Patsy', 'Patty', 'Paula', 'Paulette', 'Paulina',
'Pauline', 'Penelope', 'Pepita', 'Petra', 'Philine', 'Philippa',
'Philomele', 'Philomena', 'Phoebe', 'Phyllis', 'Pia', 'Pier', 'Prica',
'Prisca', 'Priscilla', 'Priscille', 'Priska', 'Rachel', 'Rachel',
'Rachelle', 'Radomila', 'Rafaela', 'Raffaela', 'Raffaella', 'Ragna',
'Rahel', 'Raja', 'Ramona', 'Raphaela', 'Raquel', 'Rebecca', 'Rebekka',
'Regina', 'Regine', 'Reisha', 'Renata', 'Renate', 'Renee', 'Resi',
'Rhea', 'Rhoda', 'Rhonda', 'Ricarda', 'Riccarda', 'Rike', 'Rita',
'Roberta', 'Romana', 'Romina', 'Romy', 'Ronja', 'Rosa', 'Rosalia',
'Rosalie', 'Rosalinda', 'Rosalinde', 'Rosaline', 'Rose', 'Roseline',
'Rosetta', 'Rosette', 'Rosi', 'Rosina', 'Rosine', 'Rossana',
'Roswitha', 'Roxana', 'Roxane', 'Roxanne', 'Roxy', 'Rubina', 'Ruth',
'Sabine', 'Sabrina', 'Sahra', 'Sally', 'Salome', 'Salvina', 'Samanta',
'Samantha', 'Samira', 'Sandra', 'Sandrina', 'Sandrine', 'Sandy',
'Sanne', 'Sanya', 'Saphira', 'Sara', 'Sarah', 'Sarina', 'Sascha',
'Saskia', 'Scarlet', 'Scarlett', 'Schirin', 'Selina', 'Selma',
'Serafina', 'Seraina', 'Seraphin', 'Seraphina', 'Seraphine', 'Serena',
'Severina', 'Severine', 'Shana', 'Shanaya', 'Shantala', 'Shari',
'Sharlene', 'Sharon', 'Sheena', 'Sheila', 'Sheryl', 'Shirin',
'Shirley', 'Shirlyn', 'Sibilla', 'Sibyl', 'Sibylle', 'Siegrid',
'Sigrid', 'Sigrun', 'Silja', 'Silke', 'Silvana', 'Silvia', 'Silviane',
'Simona', 'Simone', 'Simonette', 'Simonne', 'Sina', 'Sindy', 'Sinja',
'Sissy', 'Skyla', 'Smarula', 'Smilla', 'Sofia', 'Sofie', 'Sonia',
'Sonja', 'Sonnele', 'Sonya', 'Sophia', 'Sophie', 'Soraya', 'Stefanie',
'Steffi', 'Stella', 'Stephanie', 'Sumehra', 'Summer', 'Susan',
'Susanna', 'Susanne', 'Susi', 'Suzan', 'Suzanne', 'Suzette', 'Svea',
'Svenja', 'Swane', 'Sybilla', 'Sybille', 'Sydney', 'Sylvana', 'Sylvia',
'Sylvie', 'Tabitha', 'Taissa', 'Tamara', 'Tamina', 'Tania', 'Tanita',
'Tanja', 'Tara', 'Tatiana', 'Tatjana', 'Taya', 'Tecla', 'Telka',
'Teodora', 'Teona', 'Teresa', 'Terry', 'Tess', 'Tessa', 'Tessie',
'Thea', 'Thekla', 'Theodora', 'Theres', 'Theresa', 'Therese',
'Theresia', 'Tiana', 'Tiffany', 'Tilly', 'Timna', 'Tina', 'Tiziana',
'Tonja', 'Toril', 'Tosca', 'Tracey', 'Traudl', 'Trixi', 'Tycho',
'Tyra', 'Ulla', 'Ulli', 'Ulrica', 'Ulrike', 'Undine', 'Urania',
'Ursel', 'Ursina', 'Ursula', 'Ursule', 'Uschi', 'Uta', 'Ute',
'Valentina', 'Valentine', 'Valeria', 'Valerie', 'Valeska', 'Vanadis',
'Vanessa', 'Vanja', 'Varinka', 'Venetia', 'Vera', 'Verena', 'Verona',
'Veronica', 'Veronika', 'Veronique', 'Vesla', 'Vicky', 'Victoire',
'Victoria', 'Viki', 'Viktoria', 'Vilja', 'Viola', 'Violet', 'Violetta',
'Violette', 'Virginia', 'Virginie', 'Vittoria', 'Viviana', 'Viviane',
'Vivien', 'Vivienne', 'Vreneli', 'Vreni', 'Vroni', 'Wencke', 'Weneke',
'Wibke', 'Wilja', 'Willow', 'Wilma',
)
last_names = (
'Ackermann', 'Adler', 'Adolph', 'Albers', 'Anders', 'Atzler', 'Aumann',
'Austermühle', 'Bachmann', 'Barkholz', 'Barth', 'Bauer', 'Baum',
'Becker', 'Beckmann', 'Beer', 'Beier', 'Bender', 'Benthin', 'Berger',
'Beyer', 'Bien', 'Biggen', 'Binner', 'Birnbaum', 'Bloch', 'Blümel',
'Bohlander', 'Bohnbach', 'Bolander', 'Bolnbach', 'Bolzmann', 'Bonbach',
'Boucsein', 'Briemer', 'Bruder', 'Buchholz', 'Budig', 'Butte', 'Bähr',
'Bärer', 'Börner', 'Carsten', 'Caspar', 'Christoph', 'Cichorius',
'Conradi', 'Davids', 'Dehmel', 'Dickhard', 'Dietz', 'Dippel',
'Ditschlerin', 'Dobes', 'Dowerg', 'Drewes', 'Drub', 'Drubin', 'Dussen',
'Dussen van', 'Döhn', 'Döring', 'Dörr', 'Dörschner', 'Eberhardt',
'Ebert', 'Eberth', 'Eckbauer', 'Ehlert', 'Eigenwillig', 'Eimer',
'Ernst', 'Etzler', 'Etzold', 'Faust', 'Fechner', 'Fiebig', 'Finke',
'Fischer', 'Flantz', 'Fliegner', 'Franke', 'Freudenberger', 'Fritsch',
'Fröhlich', 'Förster', 'Gehringer', 'Geisel', 'Geisler', 'Geißler',
'Gerlach', 'Gertz', 'Gierschner', 'Gieß', 'Girschner', 'Gnatz',
'Gorlitz', 'Gotthard', 'Graf', 'Grein Groth', 'Gröttner', 'Gude',
'Gumprich', 'Gunpf', 'Gute', 'Gutknecht', 'Haase', 'Haering', 'Hahn',
'Hamann', 'Hande', 'Harloff', 'Hartmann', 'Hartung', 'Hauffer',
'Hecker', 'Heidrich', 'Hein', 'Heinrich', 'Heintze', 'Heinz',
'Hellwig', 'Henck', 'Hendriks', 'Henk', 'Henschel', 'Hentschel',
'Hering', 'Hermann', 'Hermighausen', 'Herrmann', 'Hertrampf', 'Heser',
'Hesse', 'Hethur', 'Hettner', 'Heuser', 'Heydrich', 'Heß', 'Hiller',
'Hoffmann', 'Hofmann', 'Holsten', 'Holt', 'Holzapfel', 'Hornich',
'Hornig', 'Huhn', 'Hänel', 'Häring', 'Höfig', 'Hölzenbecher', 'Hörle',
'Hövel', 'Hübel', 'Jacob', 'Jacobi', 'Jessel', 'Jockel', 'Johann',
'Jopich', 'Junck', 'Juncken', 'Jungfer', 'Junitz', 'Junk', 'Junken',
'Jäckel', 'Jähn', 'Jäkel', 'Jäntsch', 'Jüttner', 'Kabus', 'Kade',
'Kallert', 'Kambs', 'Karge', 'Karz', 'Kaul', 'Kensy', 'Keudel',
'Killer', 'Kitzmann', 'Klapp', 'Klemm', 'Klemt', 'Klingelhöfer',
'Klotz', 'Knappe', 'Kobelt', 'Koch', 'Koch II', 'Kohl', 'Kostolzin',
'Kramer', 'Kranz', 'Krause', 'Kraushaar', 'Krebs', 'Krein', 'Kreusel',
'Kroker', 'Kruschwitz', 'Kuhl', 'Kusch', 'Käster', 'Köhler', 'Köster',
'Kühnert', 'Lachmann', 'Ladeck', 'Lange', 'Langern', 'Lehmann',
'Liebelt', 'Lindau', 'Lindner', 'Linke', 'Loos', 'Lorch', 'Losekann',
'Löchel', 'Löffler', 'Löwer', 'Lübs', 'Mangold', 'Mans', 'Margraf',
'Martin', 'Matthäi', 'Meister', 'Mende', 'Mentzel', 'Metz', 'Meyer',
'Mielcarek', 'Mies', 'Misicher', 'Mitschke', 'Mohaupt', 'Mosemann',
'Mude', 'Mälzer', 'Möchlichen', 'Mühle', 'Mülichen', 'Müller', 'Naser',
'Nerger', 'Nette', 'Neureuther', 'Neuschäfer', 'Niemeier', 'Noack',
'Nohlmans', 'Oderwald', 'Oestrovsky', 'Ortmann', 'Otto', 'Paffrath',
'Patberg', 'Pechel', 'Pergande', 'Peukert', 'Pieper', 'Plath', 'Pohl',
'Preiß', 'Pruschke', 'Putz', 'Pärtzelt', 'Pölitz', 'Radisch',
'Reichmann', 'Reinhardt', 'Reising', 'Renner', 'Reuter', 'Riehl',
'Ring', 'Ritter', 'Rogge', 'Rogner', 'Rohleder', 'Roht', 'Rose',
'Rosemann', 'Rosenow', 'Roskoth', 'Rudolph', 'Ruppersberger',
'Ruppert', 'Rust', 'Rädel', 'Röhrdanz', 'Röhricht', 'Römer',
'Rörricht', 'Sager', 'Salz', 'Sauer', 'Schaaf', 'Schacht', 'Scheel',
'Scheibe', 'Schenk', 'Scheuermann', 'Schinke', 'Schleich', 'Schleich',
'Schlosser', 'Schmidt', 'Schmidtke', 'Schmiedecke', 'Schmiedt',
'Scholl', 'Scholtz', 'Scholz', 'Schomber', 'Schottin', 'Schuchhardt',
'Schulz', 'Schuster', 'Schweitzer', 'Schwital', 'Schäfer', 'Schönland',
'Schüler', 'Segebahn', 'Seidel', 'Seifert', 'Seifert', 'Seip',
'Siering', 'Sontag', 'Sorgatz', 'Speer', 'Spieß', 'Stadelmann',
'Stahr', 'Staude', 'Steckel', 'Steinberg', 'Stey', 'Stiebitz',
'Stiffel', 'Stoll', 'Stolze', 'Striebitz', 'Stroh', 'Stumpf', 'Sucker',
'Säuberlich', 'Söding', 'Sölzer', 'Süßebier', 'Textor', 'Thanel',
'Thies', 'Tintzmann', 'Tlustek', 'Trapp', 'Trommler', 'Trub', 'Trubin',
'Trupp', 'Tröst', 'Trüb', 'Tschentscher', 'Täsche', 'Ullmann',
'Ullrich', 'Vogt', 'Vollbrecht', 'Wagenknecht', 'Wagner', 'Walter',
'Warmer', 'Weihmann', 'Weimer', 'Weinhage', 'Weinhold', 'Weitzel',
'Weiß', 'Weller', 'Wende', 'Wernecke', 'Werner', 'Wesack', 'Wiek',
'Wieloch', 'Wilms', 'Wilmsen', 'Winkler', 'Wirth', 'Wohlgemut', 'Wulf',
'Wulff', 'Wähner', 'Zahn', 'Ziegert', 'Zimmer', 'Zirme', 'Zobel',
'Zorbach', 'Zänker', 'auch Schlauchin',
)
prefixes_male = (
'Herr', 'Dr.', 'Ing.', 'Dipl.-Ing.', 'Prof.', 'Univ.Prof.',
)
prefixes_female = (
'Frau', 'Dr.', 'Ing.', 'Dipl.-Ing.', 'Prof.', 'Univ.Prof.',
)
suffixes = ('B.Sc.', 'B.A.', 'B.Eng.', 'MBA.', )
@classmethod
def first_name(cls):
return cls.random_element(
(cls.first_name_male(), cls.first_name_female()))
@classmethod
def first_name_male(cls):
return cls.random_element(cls.first_names_male)
@classmethod
def first_name_female(cls):
return cls.random_element(cls.first_names_female)
@classmethod
def prefix(cls):
return cls.random_element((cls.prefix_male(), cls.prefix_female()))
@classmethod
def prefix_male(cls):
return cls.random_element(cls.prefixes_male)
@classmethod
def prefix_female(cls):
return cls.random_element(cls.prefixes_female)
@classmethod
def suffix(cls):
return cls.random_element(cls.suffixes)

View file

@ -1,38 +0,0 @@
# coding=utf-8
"""
fake.address(): Μαστρογιαννίδου 7,
ΤΚ 36777 Αλεξανδρούπολη
fake.line_address(): Αργυροπούλου 3, 34924 Δράμα
fake.street_name(): Αρδείας
fake.street_address(): Λεωφ. Ευόσμου 44
fake.building_number(): 131
fake.postcode(): ΤΚ 991 51
fake.city(): Καστοριά
fake.region(): Πέλλα
fake.country(): Μπρουνέι
fake.latitude(): 38.818785
fake.longitude(): 27.367441
fake.latlng(): (36.706833, 28.523434)
fake.name(): Θεοδώρα Αλεξανδράκη
fake.name_male(): Σόλων-Αγγελής Πετράκης
fake.name_female(): Μαρία Ξυγκάκου
fake.first_name(): Μάριος
fake.first_name_male(): Επαμεινώνδας
fake.first_name_female(): Ρεβέκα
fake.last_name(): Φραγκόπουλος
fake.last_name_male(): Αποστολάκης
fake.last_name_female(): Χαλκίδου
fake.text(): Πιο προγραμματιστής παραδώσεις γραμμή στη νιρβάνα
κι. Πολύ έγραψες ημέρα τι συνεντεύξεις. Γραμμής
βρίσκονται αποθηκευτικού από συνάδελφος μέχρι τα.
fake.phone_number(): 210 761 8331
fake.email(): aimilia.lioliopoulou@doukatziskapetanios.gr
fake.free_email(): yzygouris@gmail.com
fake.company_email(): eutychia.tsachaki@ioakeim.gr
fake.user_name(): konstantina.maniotis
fake.url(): http://www.anastasiou.org/
"""

View file

@ -1,169 +0,0 @@
from __future__ import unicode_literals
import re
from ..address import Provider as AddressProvider
class Provider(AddressProvider):
postal_code_letters = ('A','B','C','E','G','H','J',
'K','L','M','N','P','R','S','T','V','X','Y')
city_prefixes = ('North', 'East', 'West', 'South', 'New', 'Lake', 'Port')
city_suffixes = (
'town', 'ton', 'land', 'ville', 'berg', 'burgh', 'borough', 'bury', 'view', 'port', 'mouth', 'stad', 'furt',
'chester', 'mouth', 'fort', 'haven', 'side', 'shire')
building_number_formats = ('#####', '####', '###')
street_suffixes = (
'Alley', 'Avenue', 'Branch', 'Bridge', 'Brook', 'Brooks', 'Burg', 'Burgs', 'Bypass', 'Camp', 'Canyon', 'Cape',
'Causeway', 'Center', 'Centers', 'Circle', 'Circles', 'Cliff', 'Cliffs', 'Club', 'Common', 'Corner', 'Corners',
'Course', 'Court', 'Courts', 'Cove', 'Coves', 'Creek', 'Crescent', 'Crest', 'Crossing', 'Crossroad', 'Curve',
'Dale', 'Dam', 'Divide', 'Drive', 'Drive', 'Drives', 'Estate', 'Estates', 'Expressway', 'Extension',
'Extensions',
'Fall', 'Falls', 'Ferry', 'Field', 'Fields', 'Flat', 'Flats', 'Ford', 'Fords', 'Forest', 'Forge', 'Forges',
'Fork',
'Forks', 'Fort', 'Freeway', 'Garden', 'Gardens', 'Gateway', 'Glen', 'Glens', 'Green', 'Greens', 'Grove',
'Groves',
'Harbor', 'Harbors', 'Haven', 'Heights', 'Highway', 'Hill', 'Hills', 'Hollow', 'Inlet', 'Inlet', 'Island',
'Island',
'Islands', 'Islands', 'Isle', 'Isle', 'Junction', 'Junctions', 'Key', 'Keys', 'Knoll', 'Knolls', 'Lake',
'Lakes',
'Land', 'Landing', 'Lane', 'Light', 'Lights', 'Loaf', 'Lock', 'Locks', 'Locks', 'Lodge', 'Lodge', 'Loop',
'Mall',
'Manor', 'Manors', 'Meadow', 'Meadows', 'Mews', 'Mill', 'Mills', 'Mission', 'Mission', 'Motorway', 'Mount',
'Mountain', 'Mountain', 'Mountains', 'Mountains', 'Neck', 'Orchard', 'Oval', 'Overpass', 'Park', 'Parks',
'Parkway',
'Parkways', 'Pass', 'Passage', 'Path', 'Pike', 'Pine', 'Pines', 'Place', 'Plain', 'Plains', 'Plains', 'Plaza',
'Plaza', 'Point', 'Points', 'Port', 'Port', 'Ports', 'Ports', 'Prairie', 'Prairie', 'Radial', 'Ramp', 'Ranch',
'Rapid', 'Rapids', 'Rest', 'Ridge', 'Ridges', 'River', 'Road', 'Road', 'Roads', 'Roads', 'Route', 'Row', 'Rue',
'Run', 'Shoal', 'Shoals', 'Shore', 'Shores', 'Skyway', 'Spring', 'Springs', 'Springs', 'Spur', 'Spurs',
'Square',
'Square', 'Squares', 'Squares', 'Station', 'Station', 'Stravenue', 'Stravenue', 'Stream', 'Stream', 'Street',
'Street', 'Streets', 'Summit', 'Summit', 'Terrace', 'Throughway', 'Trace', 'Track', 'Trafficway', 'Trail',
'Trail',
'Tunnel', 'Tunnel', 'Turnpike', 'Turnpike', 'Underpass', 'Union', 'Unions', 'Valley', 'Valleys', 'Via',
'Viaduct',
'View', 'Views', 'Village', 'Village', 'Villages', 'Ville', 'Vista', 'Vista', 'Walk', 'Walks', 'Wall', 'Way',
'Ways', 'Well', 'Wells')
postal_code_formats = ('?%? %?%', '?%?%?%')
provinces = (
'Alberta', 'British Columbia', 'Manitoba', 'New Brunswick',
'Newfoundland and Labrador', 'Northwest Territories',
'New Brunswick', 'Nova Scotia', 'Nunavut', 'Ontario',
'Prince Edward Island', 'Quebec', 'Saskatchewan', 'Yukon Territory')
provinces_abbr = (
'AB', 'BC', 'MB', 'NB', 'NL', 'NT', 'NS',
'NV', 'ON', 'PE', 'QC', 'SK', 'YT')
countries = (
'Afghanistan', 'Albania', 'Algeria', 'American Samoa', 'Andorra', 'Angola', 'Anguilla',
'Antarctica (the territory South of 60 deg S)', 'Antigua and Barbuda', 'Argentina', 'Armenia', 'Aruba',
'Australia', 'Austria', 'Azerbaijan',
'Bahamas', 'Bahrain', 'Bangladesh', 'Barbados', 'Belarus', 'Belgium', 'Belize', 'Benin', 'Bermuda', 'Bhutan',
'Bolivia', 'Bosnia and Herzegovina', 'Botswana', 'Bouvet Island (Bouvetoya)', 'Brazil',
'British Indian Ocean Territory (Chagos Archipelago)', 'British Virgin Islands', 'Brunei Darussalam',
'Bulgaria', 'Burkina Faso', 'Burundi',
'Cambodia', 'Cameroon', 'Canada', 'Cape Verde', 'Cayman Islands', 'Central African Republic', 'Chad', 'Chile',
'China', 'Christmas Island', 'Cocos (Keeling) Islands', 'Colombia', 'Comoros', 'Congo', 'Congo', 'Cook Islands',
'Costa Rica', 'Cote d\'Ivoire', 'Croatia', 'Cuba', 'Cyprus', 'Czech Republic',
'Denmark', 'Djibouti', 'Dominica', 'Dominican Republic',
'Ecuador', 'Egypt', 'El Salvador', 'Equatorial Guinea', 'Eritrea', 'Estonia', 'Ethiopia',
'Faroe Islands', 'Falkland Islands (Malvinas)', 'Fiji', 'Finland', 'France', 'French Guiana',
'French Polynesia', 'French Southern Territories',
'Gabon', 'Gambia', 'Georgia', 'Germany', 'Ghana', 'Gibraltar', 'Greece', 'Greenland', 'Grenada', 'Guadeloupe',
'Guam', 'Guatemala', 'Guernsey', 'Guinea', 'Guinea-Bissau', 'Guyana',
'Haiti', 'Heard Island and McDonald Islands', 'Holy See (Vatican City State)', 'Honduras', 'Hong Kong',
'Hungary',
'Iceland', 'India', 'Indonesia', 'Iran', 'Iraq', 'Ireland', 'Isle of Man', 'Israel', 'Italy',
'Jamaica', 'Japan', 'Jersey', 'Jordan',
'Kazakhstan', 'Kenya', 'Kiribati', 'Korea', 'Korea', 'Kuwait', 'Kyrgyz Republic',
'Lao People\'s Democratic Republic', 'Latvia', 'Lebanon', 'Lesotho', 'Liberia', 'Libyan Arab Jamahiriya',
'Liechtenstein', 'Lithuania', 'Luxembourg',
'Macao', 'Macedonia', 'Madagascar', 'Malawi', 'Malaysia', 'Maldives', 'Mali', 'Malta', 'Marshall Islands',
'Martinique', 'Mauritania', 'Mauritius', 'Mayotte', 'Mexico', 'Micronesia', 'Moldova', 'Monaco', 'Mongolia',
'Montenegro', 'Montserrat', 'Morocco', 'Mozambique', 'Myanmar',
'Namibia', 'Nauru', 'Nepal', 'Netherlands Antilles', 'Netherlands', 'New Caledonia', 'New Zealand', 'Nicaragua',
'Niger', 'Nigeria', 'Niue', 'Norfolk Island', 'Northern Mariana Islands', 'Norway',
'Oman',
'Pakistan', 'Palau', 'Palestinian Territory', 'Panama', 'Papua New Guinea', 'Paraguay', 'Peru', 'Philippines',
'Pitcairn Islands', 'Poland', 'Portugal', 'Puerto Rico',
'Qatar',
'Reunion', 'Romania', 'Russian Federation', 'Rwanda',
'Saint Barthelemy', 'Saint Helena', 'Saint Kitts and Nevis', 'Saint Lucia', 'Saint Martin',
'Saint Pierre and Miquelon', 'Saint Vincent and the Grenadines', 'Samoa', 'San Marino', 'Sao Tome and Principe',
'Saudi Arabia', 'Senegal', 'Serbia', 'Seychelles', 'Sierra Leone', 'Singapore', 'Slovakia (Slovak Republic)',
'Slovenia', 'Solomon Islands', 'Somalia', 'South Africa', 'South Georgia and the South Sandwich Islands',
'Spain', 'Sri Lanka', 'Sudan', 'Suriname', 'Svalbard & Jan Mayen Islands', 'Swaziland', 'Sweden', 'Switzerland',
'Syrian Arab Republic',
'Taiwan', 'Tajikistan', 'Tanzania', 'Thailand', 'Timor-Leste', 'Togo', 'Tokelau', 'Tonga',
'Trinidad and Tobago', 'Tunisia', 'Turkey', 'Turkmenistan', 'Turks and Caicos Islands', 'Tuvalu',
'Uganda', 'Ukraine', 'United Arab Emirates', 'United Kingdom', 'United States of America',
'United States Minor Outlying Islands', 'United States Virgin Islands', 'Uruguay', 'Uzbekistan',
'Vanuatu', 'Venezuela', 'Vietnam',
'Wallis and Futuna', 'Western Sahara',
'Yemen',
'Zambia', 'Zimbabwe'
)
city_formats = (
'{{city_prefix}} {{first_name}}{{city_suffix}}',
'{{city_prefix}} {{first_name}}',
'{{first_name}}{{city_suffix}}',
'{{last_name}}{{city_suffix}}',
)
street_name_formats = (
'{{first_name}} {{street_suffix}}',
'{{last_name}} {{street_suffix}}'
)
street_address_formats = (
'{{building_number}} {{street_name}}',
'{{building_number}} {{street_name}} {{secondary_address}}',
)
address_formats = (
"{{street_address}}\n{{city}}, {{province_abbr}} {{postalcode}}",
)
secondary_address_formats = ('Apt. ###', 'Suite ###')
@classmethod
def province(cls):
"""
"""
return cls.random_element(cls.provinces)
@classmethod
def province_abbr(cls):
return cls.random_element(cls.provinces_abbr)
@classmethod
def city_prefix(cls):
return cls.random_element(cls.city_prefixes)
@classmethod
def secondary_address(cls):
return cls.numerify(cls.random_element(cls.secondary_address_formats))
@classmethod
def postal_code_letter(cls):
"""
Returns a random letter from the list of allowable
letters in a canadian postal code
"""
return cls.random_element(cls.postal_code_letters)
@classmethod
def postalcode(cls):
"""
Replaces all question mark ('?') occurrences with a random letter
from postal_code_formats then passes result to
numerify to insert numbers
"""
temp = re.sub(r'\?',
lambda x: cls.postal_code_letter(),
cls.random_element(cls.postal_code_formats))
return cls.numerify(temp)

View file

@ -1,38 +0,0 @@
# coding=utf-8
from __future__ import unicode_literals
from ..ssn import Provider as SsnProvider
import random
class Provider(SsnProvider):
#in order to create a valid SIN we need to provide a number that passes a simple modified Luhn Algorithmn checksum
#this function essentially reverses the checksum steps to create a random valid SIN (Social Insurance Number)
@classmethod
def ssn(cls):
#create an array of 8 elements initialized randomly
digits = random.sample(range(10), 8)
# All of the digits must sum to a multiple of 10.
# sum the first 8 and set 9th to the value to get to a multiple of 10
digits.append(10 - (sum(digits) % 10))
#digits is now the digital root of the number we want multiplied by the magic number 121 212 121
#reverse the multiplication which occurred on every other element
for i in range(1, len(digits), 2):
if digits[i] % 2 == 0:
digits[i] = (digits[i] / 2)
else:
digits[i] = (digits[i] + 9) / 2
#build the resulting SIN string
sin = ""
for i in range(0, len(digits), 1):
sin += str(digits[i])
#add a space to make it conform to normal standards in Canada
if i % 3 == 2:
sin += " "
#finally return our random but valid SIN
return sin

View file

@ -1 +0,0 @@

View file

@ -1 +0,0 @@

View file

@ -1,219 +0,0 @@
from __future__ import unicode_literals
import random
from ..address import Provider as AddressProvider
class Provider(AddressProvider):
city_prefixes = ('North', 'East', 'West', 'South', 'New', 'Lake', 'Port')
city_suffixes = (
'town', 'ton', 'land', 'ville', 'berg', 'burgh', 'borough', 'bury', 'view', 'port', 'mouth', 'stad', 'furt',
'chester', 'mouth', 'fort', 'haven', 'side', 'shire')
building_number_formats = ('#####', '####', '###')
street_suffixes = (
'Alley', 'Avenue', 'Branch', 'Bridge', 'Brook', 'Brooks', 'Burg', 'Burgs', 'Bypass', 'Camp', 'Canyon', 'Cape',
'Causeway', 'Center', 'Centers', 'Circle', 'Circles', 'Cliff', 'Cliffs', 'Club', 'Common', 'Corner', 'Corners',
'Course', 'Court', 'Courts', 'Cove', 'Coves', 'Creek', 'Crescent', 'Crest', 'Crossing', 'Crossroad', 'Curve',
'Dale', 'Dam', 'Divide', 'Drive', 'Drive', 'Drives', 'Estate', 'Estates', 'Expressway', 'Extension',
'Extensions',
'Fall', 'Falls', 'Ferry', 'Field', 'Fields', 'Flat', 'Flats', 'Ford', 'Fords', 'Forest', 'Forge', 'Forges',
'Fork',
'Forks', 'Fort', 'Freeway', 'Garden', 'Gardens', 'Gateway', 'Glen', 'Glens', 'Green', 'Greens', 'Grove',
'Groves',
'Harbor', 'Harbors', 'Haven', 'Heights', 'Highway', 'Hill', 'Hills', 'Hollow', 'Inlet', 'Inlet', 'Island',
'Island',
'Islands', 'Islands', 'Isle', 'Isle', 'Junction', 'Junctions', 'Key', 'Keys', 'Knoll', 'Knolls', 'Lake',
'Lakes',
'Land', 'Landing', 'Lane', 'Light', 'Lights', 'Loaf', 'Lock', 'Locks', 'Locks', 'Lodge', 'Lodge', 'Loop',
'Mall',
'Manor', 'Manors', 'Meadow', 'Meadows', 'Mews', 'Mill', 'Mills', 'Mission', 'Mission', 'Motorway', 'Mount',
'Mountain', 'Mountain', 'Mountains', 'Mountains', 'Neck', 'Orchard', 'Oval', 'Overpass', 'Park', 'Parks',
'Parkway',
'Parkways', 'Pass', 'Passage', 'Path', 'Pike', 'Pine', 'Pines', 'Place', 'Plain', 'Plains', 'Plains', 'Plaza',
'Plaza', 'Point', 'Points', 'Port', 'Port', 'Ports', 'Ports', 'Prairie', 'Prairie', 'Radial', 'Ramp', 'Ranch',
'Rapid', 'Rapids', 'Rest', 'Ridge', 'Ridges', 'River', 'Road', 'Road', 'Roads', 'Roads', 'Route', 'Row', 'Rue',
'Run', 'Shoal', 'Shoals', 'Shore', 'Shores', 'Skyway', 'Spring', 'Springs', 'Springs', 'Spur', 'Spurs',
'Square',
'Square', 'Squares', 'Squares', 'Station', 'Station', 'Stravenue', 'Stravenue', 'Stream', 'Stream', 'Street',
'Street', 'Streets', 'Summit', 'Summit', 'Terrace', 'Throughway', 'Trace', 'Track', 'Trafficway', 'Trail',
'Trail',
'Tunnel', 'Tunnel', 'Turnpike', 'Turnpike', 'Underpass', 'Union', 'Unions', 'Valley', 'Valleys', 'Via',
'Viaduct',
'View', 'Views', 'Village', 'Village', 'Villages', 'Ville', 'Vista', 'Vista', 'Walk', 'Walks', 'Wall', 'Way',
'Ways', 'Well', 'Wells')
postcode_formats = ('#####', '#####-####')
states = (
'Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Connecticut', 'Delaware', 'Florida',
'Georgia', 'Hawaii', 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana', 'Maine',
'Maryland',
'Massachusetts', 'Michigan', 'Minnesota', 'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada',
'NewHampshire', 'NewJersey', 'NewMexico', 'NewYork', 'NorthCarolina', 'NorthDakota', 'Ohio', 'Oklahoma',
'Oregon',
'Pennsylvania', 'RhodeIsland', 'SouthCarolina', 'SouthDakota', 'Tennessee', 'Texas', 'Utah', 'Vermont',
'Virginia',
'Washington', 'WestVirginia', 'Wisconsin', 'Wyoming' )
states_abbr = (
'AL', 'AK', 'AS', 'AZ', 'AR', 'CA', 'CO', 'CT', 'DE', 'DC', 'FM', 'FL', 'GA', 'GU', 'HI', 'ID', 'IL', 'IN',
'IA',
'KS', 'KY', 'LA', 'ME', 'MH', 'MD', 'MA', 'MI', 'MN', 'MS', 'MO', 'MT', 'NE', 'NV', 'NH', 'NJ', 'NM', 'NY',
'NC',
'ND', 'MP', 'OH', 'OK', 'OR', 'PW', 'PA', 'PR', 'RI', 'SC', 'SD', 'TN', 'TX', 'UT', 'VT', 'VI', 'VA', 'WA',
'WV',
'WI', 'WY')
military_state_abbr = ('AE', 'AA', 'AP')
military_ship_prefix = ('USS', 'USNS', 'USNV', 'USCGC')
military_apo_format = ("PSC ####, Box ####")
military_dpo_format = ("Unit #### Box ####")
countries = (
'Afghanistan', 'Albania', 'Algeria', 'American Samoa', 'Andorra', 'Angola', 'Anguilla',
'Antarctica (the territory South of 60 deg S)', 'Antigua and Barbuda', 'Argentina', 'Armenia', 'Aruba',
'Australia', 'Austria', 'Azerbaijan',
'Bahamas', 'Bahrain', 'Bangladesh', 'Barbados', 'Belarus', 'Belgium', 'Belize', 'Benin', 'Bermuda', 'Bhutan',
'Bolivia', 'Bosnia and Herzegovina', 'Botswana', 'Bouvet Island (Bouvetoya)', 'Brazil',
'British Indian Ocean Territory (Chagos Archipelago)', 'British Virgin Islands', 'Brunei Darussalam',
'Bulgaria', 'Burkina Faso', 'Burundi',
'Cambodia', 'Cameroon', 'Canada', 'Cape Verde', 'Cayman Islands', 'Central African Republic', 'Chad', 'Chile',
'China', 'Christmas Island', 'Cocos (Keeling) Islands', 'Colombia', 'Comoros', 'Congo', 'Congo', 'Cook Islands',
'Costa Rica', 'Cote d\'Ivoire', 'Croatia', 'Cuba', 'Cyprus', 'Czech Republic',
'Denmark', 'Djibouti', 'Dominica', 'Dominican Republic',
'Ecuador', 'Egypt', 'El Salvador', 'Equatorial Guinea', 'Eritrea', 'Estonia', 'Ethiopia',
'Faroe Islands', 'Falkland Islands (Malvinas)', 'Fiji', 'Finland', 'France', 'French Guiana',
'French Polynesia', 'French Southern Territories',
'Gabon', 'Gambia', 'Georgia', 'Germany', 'Ghana', 'Gibraltar', 'Greece', 'Greenland', 'Grenada', 'Guadeloupe',
'Guam', 'Guatemala', 'Guernsey', 'Guinea', 'Guinea-Bissau', 'Guyana',
'Haiti', 'Heard Island and McDonald Islands', 'Holy See (Vatican City State)', 'Honduras', 'Hong Kong',
'Hungary',
'Iceland', 'India', 'Indonesia', 'Iran', 'Iraq', 'Ireland', 'Isle of Man', 'Israel', 'Italy',
'Jamaica', 'Japan', 'Jersey', 'Jordan',
'Kazakhstan', 'Kenya', 'Kiribati', 'Korea', 'Korea', 'Kuwait', 'Kyrgyz Republic',
'Lao People\'s Democratic Republic', 'Latvia', 'Lebanon', 'Lesotho', 'Liberia', 'Libyan Arab Jamahiriya',
'Liechtenstein', 'Lithuania', 'Luxembourg',
'Macao', 'Macedonia', 'Madagascar', 'Malawi', 'Malaysia', 'Maldives', 'Mali', 'Malta', 'Marshall Islands',
'Martinique', 'Mauritania', 'Mauritius', 'Mayotte', 'Mexico', 'Micronesia', 'Moldova', 'Monaco', 'Mongolia',
'Montenegro', 'Montserrat', 'Morocco', 'Mozambique', 'Myanmar',
'Namibia', 'Nauru', 'Nepal', 'Netherlands Antilles', 'Netherlands', 'New Caledonia', 'New Zealand', 'Nicaragua',
'Niger', 'Nigeria', 'Niue', 'Norfolk Island', 'Northern Mariana Islands', 'Norway',
'Oman',
'Pakistan', 'Palau', 'Palestinian Territory', 'Panama', 'Papua New Guinea', 'Paraguay', 'Peru', 'Philippines',
'Pitcairn Islands', 'Poland', 'Portugal', 'Puerto Rico',
'Qatar',
'Reunion', 'Romania', 'Russian Federation', 'Rwanda',
'Saint Barthelemy', 'Saint Helena', 'Saint Kitts and Nevis', 'Saint Lucia', 'Saint Martin',
'Saint Pierre and Miquelon', 'Saint Vincent and the Grenadines', 'Samoa', 'San Marino', 'Sao Tome and Principe',
'Saudi Arabia', 'Senegal', 'Serbia', 'Seychelles', 'Sierra Leone', 'Singapore', 'Slovakia (Slovak Republic)',
'Slovenia', 'Solomon Islands', 'Somalia', 'South Africa', 'South Georgia and the South Sandwich Islands',
'Spain', 'Sri Lanka', 'Sudan', 'Suriname', 'Svalbard & Jan Mayen Islands', 'Swaziland', 'Sweden', 'Switzerland',
'Syrian Arab Republic',
'Taiwan', 'Tajikistan', 'Tanzania', 'Thailand', 'Timor-Leste', 'Togo', 'Tokelau', 'Tonga',
'Trinidad and Tobago', 'Tunisia', 'Turkey', 'Turkmenistan', 'Turks and Caicos Islands', 'Tuvalu',
'Uganda', 'Ukraine', 'United Arab Emirates', 'United Kingdom', 'United States of America',
'United States Minor Outlying Islands', 'United States Virgin Islands', 'Uruguay', 'Uzbekistan',
'Vanuatu', 'Venezuela', 'Vietnam',
'Wallis and Futuna', 'Western Sahara',
'Yemen',
'Zambia', 'Zimbabwe'
)
city_formats = (
'{{city_prefix}} {{first_name}}{{city_suffix}}',
'{{city_prefix}} {{first_name}}',
'{{first_name}}{{city_suffix}}',
'{{last_name}}{{city_suffix}}',
)
street_name_formats = (
'{{first_name}} {{street_suffix}}',
'{{last_name}} {{street_suffix}}'
)
street_address_formats = (
'{{building_number}} {{street_name}}',
'{{building_number}} {{street_name}} {{secondary_address}}',
)
address_formats = (
"{{street_address}}\n{{city}}, {{state_abbr}} {{postcode}}",
)
address_formats = {
"{{street_address}}\n{{city}}, {{state_abbr}} {{postcode}}": 25,
#military address formatting.
"{{military_apo}}\nAPO {{military_state}} {{postcode}}": 1,
"{{military_ship}} {{last_name}}\nFPO {{military_state}} {{postcode}}": 1,
"{{military_dpo}}\nDPO {{military_state}} {{postcode}}": 1
}
secondary_address_formats = ('Apt. ###', 'Suite ###')
@classmethod
def city_prefix(cls):
return cls.random_element(cls.city_prefixes)
@classmethod
def secondary_address(cls):
return cls.numerify(cls.random_element(cls.secondary_address_formats))
@classmethod
def state(cls):
return cls.random_element(cls.states)
@classmethod
def state_abbr(cls):
return cls.random_element(cls.states_abbr)
@classmethod
def zipcode(cls):
return "%05d" % random.randint(501, 99950)
@classmethod
def zipcode_plus4(cls):
return "%s-%04d" % (cls.zipcode(), random.randint(1, 9999))
@classmethod
def military_ship(cls):
"""
:example 'USS'
"""
return cls.random_element(cls.military_ship_prefix)
@classmethod
def military_state(cls):
"""
:example 'APO'
"""
return cls.random_element(cls.military_state_abbr)
@classmethod
def military_apo(cls):
"""
:example 'PSC 5394 Box 3492
"""
return cls.numerify(cls.military_apo_format)
@classmethod
def military_dpo(cls):
"""
:example 'Unit 3333 Box 9342'
"""
return cls.numerify(cls.military_dpo_format)
# Aliases
@classmethod
def postalcode(cls):
return cls.zipcode()
@classmethod
def postalcode_plus4(cls):
return cls.zipcode_plus4()

View file

@ -1,10 +0,0 @@
# coding=utf-8
from __future__ import unicode_literals
from ..ssn import Provider as SsnProvider
class Provider(SsnProvider):
ssn_formats = ("###-##-####",)
@classmethod
def ssn(cls):
return cls.bothify(cls.random_element(cls.ssn_formats))

View file

@ -1,105 +0,0 @@
# coding=utf-8
from __future__ import unicode_literals
from ..address import Provider as AddressProvider
class Provider(AddressProvider):
building_number_formats = ('%', '%#', '%#', '%#', '%##')
street_prefixes = (
'Plaza', 'Calle', 'Avenida', 'Via', 'Vial', 'Rambla', 'Glorieta', 'Urbanización', 'Callejón', 'Cañada',
'Alameda', 'Acceso', 'C.', 'Ronda', 'Pasaje', 'Cuesta', 'Pasadizo', 'Paseo', 'Camino'
)
postcode_formats = ('#####', )
states = (
'Álava', 'Albacete', 'Alicante', 'Almería', 'Asturias', 'Ávila', 'Badajoz',
'Baleares', 'Barcelona', 'Burgos', 'Cáceres', 'Cádiz', 'Cantabria', 'Castellón',
'Ceuta', 'Ciudad', 'Córdoba', 'Cuenca', 'Girona', 'Granada', 'Guadalajara',
'Guipúzcoa', 'Huelva', 'Huesca', 'Jaén', 'La Coruña', 'La Rioja', 'Las Palmas',
'León', 'Lleida', 'Lugo', 'Madrid', 'Málaga', 'Melilla', 'Murcia', 'Navarra',
'Ourense', 'Palencia', 'Pontevedra', 'Salamanca', 'Santa Cruz de Tenerife',
'Segovia', 'Sevilla', 'Soria', 'Tarragona', 'Teruel', 'Toledo', 'Valencia',
'Valladolid', 'Vizcaya', 'Zamora', 'Zaragoza'
)
countries = (
'Afganistán', 'Akrotiri', 'Albania', 'Alemania', 'Andorra', 'Angola', 'Anguila',
'Antártida', 'Antigua y Barbuda', 'Antillas Neerlandesas', 'Arabia Saudí',
'Arctic Ocean', 'Argelia', 'Argentina', 'Armenia', 'Aruba', 'Ashmore and Cartier Islands',
'Atlantic Ocean', 'Australia', 'Austria', 'Azerbaiyán', 'Bahamas',
'Bahráin', 'Bangladesh', 'Barbados', 'Bélgica', 'Belice', 'Benín', 'Bermudas',
'Bielorrusia', 'Birmania Myanmar', 'Bolivia', 'Bosnia y Hercegovina',
'Botsuana', 'Brasil', 'Brunéi', 'Bulgaria', 'Burkina Faso', 'Burundi', 'Bután',
'Cabo Verde', 'Camboya', 'Camerún', 'Canadá', 'Chad', 'Chile', 'China',
'Chipre', 'Clipperton Island', 'Colombia', 'Comoras', 'Congo', 'Coral Sea Islands',
'Corea del Norte', 'Corea del Sur', 'Costa de Marfil', 'Costa Rica',
'Croacia', 'Cuba', 'Dhekelia', 'Dinamarca', 'Dominica', 'Ecuador', 'Egipto', 'El Salvador',
'El Vaticano', 'Emiratos Árabes Unidos', 'Eritrea', 'Eslovaquia',
'Eslovenia', 'España', 'Estados Unidos', 'Estonia', 'Etiopía', 'Filipinas',
'Finlandia', 'Fiyi', 'Francia', 'Gabón', 'Gambia', 'Gaza Strip', 'Georgia',
'Ghana', 'Gibraltar', 'Granada', 'Grecia', 'Groenlandia', 'Guam', 'Guatemala',
'Guernsey', 'Guinea', 'Guinea Ecuatorial', 'Guinea-Bissau', 'Guyana', 'Haití',
'Honduras', 'Hong Kong', 'Hungría', 'India', 'Indian Ocean', 'Indonesia',
'Irán', 'Iraq', 'Irlanda', 'Isla Bouvet', 'Isla Christmas', 'Isla Norfolk',
'Islandia', 'Islas Caimán', 'Islas Cocos', 'Islas Cook', 'Islas Feroe', 'Islas Georgia del Sur y Sandwich del Sur',
'Islas Heard y McDonald', 'Islas Malvinas', 'Islas Marianas del Norte', 'Islas Marshall',
'Islas Pitcairn', 'Islas Salomón', 'Islas Turcas y Caicos', 'Islas Vírgenes Americanas',
'Islas Vírgenes Británicas', 'Israel', 'Italia', 'Jamaica', 'Jan Mayen', 'Japón', 'Jersey',
'Jordania', 'Kazajistán', 'Kenia', 'Kirguizistán', 'Kiribati', 'Kuwait', 'Laos',
'Lesoto', 'Letonia', 'Líbano', 'Liberia', 'Libia', 'Liechtenstein', 'Lituania',
'Luxemburgo', 'Macao', 'Macedonia', 'Madagascar', 'Malasia', 'Malaui',
'Maldivas', 'Malí', 'Malta', 'Man, Isle of', 'Marruecos', 'Mauricio',
'Mauritania', 'Mayotte', 'México', 'Micronesia', 'Moldavia', 'Mónaco',
'Mongolia', 'Montserrat', 'Mozambique', 'Namibia', 'Nauru', 'Navassa Island',
'Nepal', 'Nicaragua', 'Níger', 'Nigeria', 'Niue', 'Noruega', 'Nueva Caledonia',
'Nueva Zelanda', 'Omán', 'Pacific Ocean', 'Países Bajos', 'Pakistán', 'Palaos',
'Panamá', 'Papúa-Nueva Guinea', 'Paracel Islands', 'Paraguay', 'Perú',
'Polinesia Francesa', 'Polonia', 'Portugal', 'Puerto Rico', 'Qatar', 'Reino Unido',
'República Centroafricana', 'República Checa', 'República Democrática del Congo',
'República Dominicana', 'Ruanda', 'Rumania', 'Rusia', 'Sáhara Occidental', 'Samoa',
'Samoa Americana', 'San Cristóbal y Nieves', 'San Marino',
'San Pedro y Miquelón', 'San Vicente y las Granadinas', 'Santa Helena', 'Santa Lucía',
'Santo Tomé y Príncipe', 'Senegal', 'Seychelles', 'Sierra Leona',
'Singapur', 'Siria', 'Somalia', 'Southern Ocean', 'Spratly Islands', 'Sri Lanka',
'Suazilandia', 'Sudáfrica', 'Sudán', 'Suecia', 'Suiza', 'Surinam',
'Svalbard y Jan Mayen', 'Tailandia', 'Taiwán', 'Tanzania', 'Tayikistán',
'TerritorioBritánicodel Océano Indico', 'Territorios Australes Franceses',
'Timor Oriental', 'Togo', 'Tokelau', 'Tonga', 'Trinidad y Tobago', 'Túnez',
'Turkmenistán', 'Turquía', 'Tuvalu', 'Ucrania', 'Uganda', 'Unión Europea',
'Uruguay', 'Uzbekistán', 'Vanuatu', 'Venezuela', 'Vietnam', 'Wake Island',
'Wallis y Futuna', 'West Bank', 'World', 'Yemen', 'Yibuti', 'Zambia', 'Zimbabue'
)
city_formats = (
'{{state_name}}',
)
street_name_formats = (
'{{street_prefix}} {{first_name}} {{last_name}}',
'{{street_prefix}} de {{first_name}} {{last_name}}',
)
street_address_formats = (
'{{street_name}} {{building_number}}',
'{{street_name}} {{building_number}} {{secondary_address}} ',
)
address_formats = (
"{{street_address}}\n{{city}}, {{postcode}}",
)
secondary_address_formats = ('Apt. ##', 'Piso #', 'Puerta #')
@classmethod
def state_name(cls):
return cls.random_element(cls.states)
@classmethod
def street_prefix(cls):
return cls.random_element(cls.street_prefixes)
@classmethod
def secondary_address(cls):
return cls.numerify(cls.random_element(cls.secondary_address_formats))
@classmethod
def state(cls):
return cls.random_element(cls.states)

View file

@ -1 +0,0 @@

View file

@ -1,168 +0,0 @@
# -*- encoding: utf-8 -*-
from __future__ import unicode_literals
from ..address import Provider as AddressProvider
#import locale
class Provider(AddressProvider):
#current_locale = locale.setlocale(locale.LC_ALL, "es_MX.UTF-8")
city_prefixes = ('Sur', 'Norte',)
city_adjetives = ('Nueva', 'Vieja',)
city_suffixies = ('de la Montaña', 'los bajos', 'los altos', )
street_prefixes = (
'Ampliación', 'Andador', 'Avenida', 'Boulevard', 'Calle', 'Callejón',
'Calzada', 'Cerrada', 'Circuito', 'Circunvalación', 'Continuación',
'Corredor', 'Diagonal', 'Eje vial', 'Pasaje', 'Peatonal', 'Periférico',
'Privada', 'Prolongación', 'Retorno', 'Viaducto'
)
building_number_formats = ('#####', '####', '###')
postcode_formats = ('#####', '#####-####')
## States and abbrs from Mexico from INEGI
## http://www.inegi.org.mx/geo/contenidos/geoestadistica/CatalogoClaves.aspx
states = (
('AGS','Aguascalientes'), ('BC','Baja California'),
('BCS','Baja California Sur'), ('CAMP','Campeche'),
('COAH', 'Coahuila de Zaragoza'), ('COL', 'Colima'),
('CHIS', 'Chiapas'), ('CHIH', 'Chihuahua'),
('DF','Distrito Federal'), ('DGO', 'Durango'),
('GTO', 'Guanajuato'), ('GRO', 'Guerrero'), ('HGO', 'Hidalgo'),
('JAL', 'Jalisco'), ('MEX', 'México'),
('MICH', 'Michoacán de Ocampo'), ('MOR', 'Morelos'),
('NAY', 'Nayarit'), ('NL', 'Nuevo León'), ('OAX', 'Oaxaca'),
('PUE','Puebla'), ('QRO', 'Querétaro'),
('Q. ROO', 'Quintana Roo'), ('SLP', 'San Luis Potosí'),
('SIN', 'Sinaloa'), ('SON', 'Sonora'), ('TAB', 'Tabasco'),
('TAMPS','Tamaulipas'), ('TLAX','Tlaxcala'),
('VER', 'Veracruz de Ignacio de la Llave'),
('YUC', 'Yucatán'), ('ZAC','Zacatecas'),)
zip_codes = {
## The ZipCodes has a begin & final range
## Source: Norma Técnica de Domicilios INEGI
'AGS': (20000, 20999), 'BC' : (21000, 22999),
'BCS': (23000, 23999), 'CAMP' : (24000, 24999),
'COAH': (25000, 27999), 'COL': (28000, 28999),
'CHIS': (29000, 30999), 'CHIH': (31000, 33999),
'DF': (1000, 19999), 'DGO': (36000, 35999),
'GTO': (36000, 38999), 'GRO': (39000, 41999),
'HGO': (42000, 43999), 'JAL': (44000, 49999),
'MEX': (50000, 57999), 'MICH': (58000, 61999),
'MOR': (62000, 62999), 'NAY': (63000, 63999),
'NL': (64000, 67999), 'OAX': (68000, 71999),
'PUE': (72000, 75999), 'QRO': (76000, 76999),
'Q. ROO': (77000, 75999), 'SLP': (78000, 79999),
'SIN': (80000, 82999), 'SON': (83000, 85999),
'TAB': (86000, 86999), 'TAMPS': (87000, 89999),
'TLAX': (90000, 90999), 'VER': (91000, 97999),
'YUC': (97000, 97999), 'ZAC': (98000, 99999)
}
## List of Countries https://www.un.org/es/members/
countries = (
'Afganistán', 'Albania', 'Alemania', 'Andorra', 'Angola',
'Antigua y Barbuda', 'Arabia Saudita', 'Argelia', 'Argentina',
'Armenia', 'Australia', 'Austria', 'Azerbaiyán',
'Bahamas', 'Bahrein', 'Bangladesh', 'Barbados', 'Belarús',
'Bélgica', 'Belice', 'Benin', 'Bhután', 'Bolivia',
'Bosnia y Herzegovina', 'Botswana', 'Brasil', 'Brunei Darussalam',
'Bulgaria', 'Burkina Faso', 'Burundi', 'Cabo Verde', 'Camboya',
'Camerún', 'Canadá', 'Chad', 'Chile', 'China', 'Chipre','Colombia',
'Comoras', 'Congo', 'Costa Rica', 'Côte d\'Ivoire', 'Croacia',
'Cuba', 'Dinamarca', 'Djibouti', 'Dominicana', 'Ecuador', 'Egipto',
'El Salvador', 'Emiratos Árabes Unidos', 'Eritrea', 'Eslovaquia',
'Eslovenia', 'España', 'Estados Unidos de América', 'Estonia',
'Etiopía', 'ex República Yugoslava de Macedonia',
'Federación de Rusia', 'Fiji', 'Filipinas', 'Finlandia', 'Francia',
'Gabón', 'Gambia', 'Georgia', 'Ghana', 'Granada', 'Grecia',
'Guatemala', 'Guinea', 'Guinea Bissau', 'Guinea Ecuatorial',
'Guyana', 'Haití', 'Honduras', 'Hungría', 'India', 'Indonesia',
'Irán', 'Iraq', 'Irlanda', 'Islandia', 'Islas Marshall',
'Islas Salomón', 'Israel', 'Italia', 'Jamaica', 'Japón',
'Jordania', 'Kazajstán', 'Kenya', 'Kirguistán', 'Kiribati',
'Kuwait', 'Lesotho', 'Letonia', 'Líbano', 'Liberia', 'Libia',
'Liechtenstein', 'Lituania', 'Luxemburgo', 'Madagascar',
'Malasia', 'Malawi', 'Maldivas', 'Mali', 'Malta','Marruecos',
'Mauricio', 'Mauritania', 'México', 'Micronesia', 'Mónaco',
'Mongolia', 'Montenegro','Mozambique','Myanmar', 'Namibia',
'Nauru', 'Nicaragua', 'Niger', 'Nigeria', 'Noruega',
'Nueva Zelandia', 'Omán', 'Países Bajos', 'Pakistán', 'Palau',
'Panamá', 'Papua Nueva Guinea', 'Paraguay', 'Perú', 'Polonia',
'Portugal', 'Qatar',
'Reino Unido de Gran Bretaña e Irlanda del Norte',
'República Árabe Siria', 'República Centroafricana',
'República Checa', 'República de Corea', 'República de Moldova',
'República Democrática del Congo',
'República Democrática Popular Lao',
'República Dominicana',
'República Federal Democrática de Nepal',
'República Popular Democrática de Corea',
'República Unida de Tanzanía', 'Rumania', 'Rwanda',
'Saint Kitts y Nevis', 'Samoa', 'San Marino', 'Santa Lucía',
'Santo Tomé y Príncipe', 'San Vicente y las Granadinas',
'Senegal', 'Serbia', 'Seychelles', 'Sierra Leona', 'Singapur',
'Somalia', 'Sri Lanka', 'Sudáfrica', 'Sudán', 'Sudán del Sur',
'Suecia', 'Suiza', 'Suriname', 'Swazilandia', 'Tailandia',
'Tayikistán', 'Timor-Leste', 'Togo', 'Tonga', 'Trinidad y Tabago',
'Túnez', 'Turkmenistán', 'Turquía', 'Tuvalu', 'Ucrania', 'Uganda',
'Uruguay', 'Uzbekistán', 'Vanuatu', 'Venezuela', 'Vietman',
'Yemen', 'Zambia', 'Zimbabwe'
)
city_formats = (
'{{city_adjetive}} {{country}}',
'San {{first_name}} {{city_suffix}}',
)
street_name_formats = (
'{{street_prefix}} {{last_name}}',
'{{street_prefix}} {{country}}',
'{{street_prefix}} {{state}}',
'{{street_prefix}} {{city_prefix}} {{last_name}}'
)
street_address_formats = (
#'{{building_number}} {{street_name}}',
'{{street_name}} {{secondary_address}}',
#'{{building_number}} {{street_name}} {{secondary_address}}',
)
address_formats = (
"{{street_address}}\n{{city}}, {{state_abbr}} {{postcode}}",
)
secondary_address_formats = ('### ###', '### Interior ###',
'### Edif. ### , Depto. ###')
@classmethod
def city_prefix(cls):
return cls.random_element(cls.city_prefixes)
@classmethod
def city_suffix(cls):
return cls.random_element(cls.city_suffixies)
@classmethod
def city_adjetive(cls):
return cls.random_element(cls.city_adjetives)
@classmethod
def street_prefix(cls):
"""
:example 'Avenida'
"""
return cls.random_element(cls.street_prefixes)
@classmethod
def secondary_address(cls):
"""
:example '020 Interior 999'
"""
return cls.numerify(cls.random_element(cls.secondary_address_formats))
@classmethod
def state(cls):
"""
example: u'Guerrero'
"""
return cls.random_element(cls.states)[1]
@classmethod
def state_abbr(cls):
"""
example: u'GRO'
"""
return cls.random_element(cls.states)[0]

View file

@ -1 +0,0 @@

View file

@ -1,47 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from ..address import Provider as AddressProvider
class Provider(AddressProvider):
city_prefixes = ('شمال', 'غرب', 'شرق', 'جنوب', 'بندر', 'شهر', 'روستای', 'دهستان', 'شهرستان', 'باغات', 'استان')
building_number_formats = ('#####', '####', '###')
street_suffixes = (
'کوچه', 'خیابان', 'پل', 'دره', 'میدان', 'چهار راه', 'بن بست', 'بلوار', 'جنب', 'تقاطع', 'آزاد راه', 'بزرگ راه', 'جزیره', 'کوه', 'جاده', 'تونل'
)
postcode_formats = ('###', '####', '#####','######', '##########')
states = (
'آذربایجان شرقی', 'آذربایجان غربی', 'اردبیل', 'خراسان', 'کردستان', 'گیلان', 'اصفهان', 'البرز', 'ایلام', 'بوشهر', 'تهران', 'چهارمحال و بختیاری', 'خراسان جنوبی', 'خراسان رضوی', 'خراسان شمالی', 'خوزستان', 'زنجان', 'سمنان', 'سیستان و بلوچستان', 'فارس', 'قزوین', 'قم', 'کرمان', 'کرمانشاه', 'کهگیلویه و بویراحمد', 'گلستان', 'لرستان', 'مازندران', 'مرکزی', 'هرمزگان', 'همدان', 'یزد'
)
countries = (
'جمهوری آذربایجان', 'آرژانتین', 'آفریقای جنوبی', 'جمهوری آفریقای مرکزی', 'آلبانی', 'آلمان', 'آنتیگوا و باربودا', 'آندورا', 'آنگولا', 'اتریش', 'اتیوپی', 'اردن', 'ارمنستان', 'اروگوئه', 'اریتره', 'ازبکستان', 'اسپانیا', 'استرالیا', 'استونی', 'اسرائیل', 'اسلواکی', 'اسلوونی', 'افغانستان', 'اکوادور', 'الجزایر', 'السالوادور', 'امارات متحده عربی', 'اندونزی', 'اوکراین', 'اوگاندا', 'ایالات متحده آمریکا', 'ایتالیا', 'ایران', 'جمهوری ایرلند', 'ایسلند', 'باربادوس', 'باهاما', 'بحرین', 'برزیل', 'برونئی', 'بریتانیا', 'بلاروس', 'بلژیک', 'بلغارستان', 'بلیز', 'بنگلادش', 'بنین', 'پادشاهی بوتان', 'بوتسوانا', 'بورکینافاسو', 'بوروندی', 'بوسنی و هرزگوین', 'بولیوی', 'پاپوآ گینه نو', 'پاراگوئه', 'پاناما', 'پاکستان', 'پرتغال', 'پرو', 'پورتوریکو', 'تاجیکستان', 'تانزانیا', 'تایلند', 'جمهوری چین', 'ترکمنستان', 'ترکیه', 'ترینیداد و توباگو', 'توگو', 'تونس', 'تونگا', 'تووالو', 'تیمور شرقی', 'جامائیکا', 'جزایر سلیمان', 'جزایر مارشال', 'جمهوری چک', 'جمهوری دومینیکن', 'جیبوتی', 'چاد', 'چین', 'دانمارک', 'دومینیکا', 'جمهوری دومینیکن', 'رواندا', 'روسیه', 'رومانی', 'زامبیا', 'نیوزیلند', 'زیمباوه', 'جمهوری دموکراتیک کنگو (زئیر)', 'ژاپن', 'سائوتومه و پرینسیپ', 'ساحل عاج', 'ساموآی غربی', 'سن مارینو', 'سری‌لانکا', 'سنت کیتس و نویس', 'سنت لوسیا', 'سنت وینسنت و گرنادین‌ها', 'سنگاپور', 'سنگال', 'سوئد', 'سوئیس', 'سوازیلند', 'سودان', 'سودان جنوبی', 'سورینام', 'سوریه', 'سومالی', 'سیرالئون', 'سیشل', 'شیلی', 'صربستان', 'عراق', 'عربستان سعودی', 'عمان', 'غنا', 'فرانسه', 'فلسطین', 'فنلاند', 'فیجی', 'فیلیپین', 'قبرس', 'قرقیزستان', 'قزاقستان', 'قطر', 'کامبوج', 'کامرون', 'کانادا', 'کره جنوبی', 'کره شمالی', 'کرواسی', 'کاستاریکا', 'کلمبیا', 'جمهوری کنگو', 'جمهوری دموکراتیک کنگو', 'کنیا', 'کوبا', 'کوزوو', 'مجمع‌الجزایر قمر', 'کویت', 'کیپ ورد', 'کیریباتی', 'گابن', 'گامبیا', 'گرجستان', 'گرنادا', 'گرینلند(از مستعمرات دانمارک)', 'گواتمالا', 'گویان', 'گینه', 'گینه استوایی', 'گینه بیسائو', 'لائوس', 'لبنان', 'لتونی', 'لسوتو', 'لهستان', 'لوکزامبورگ', 'لیبریا', 'لیبی', 'لیتوانی', 'لیختن‌اشتاین', 'ماداگاسکار', 'مالاوی', 'مالت', 'مالدیو', 'مالزی', 'مالی', 'مجارستان', 'مراکش', 'مصر', 'مغولستان', 'مقدونیه', 'مکزیک', 'موریتانی', 'موریس', 'موزامبیک', 'مولداوی', 'موناکو', 'مونته‌نگرو', 'میانمار', 'ایالات فدرال میکرونزی', 'نائورو', 'نامیبیا', 'نپال', 'نروژ', 'نیجریه', 'نیکاراگوئه', 'نیوزیلند', 'واتیکان', 'وانواتو', 'ونزوئلا', 'ویتنام', 'هائیتی', 'هلند', 'هندوراس', 'هند', 'یمن', 'یونان'
)
city_formats = (
'{{city_prefix}} {{first_name}}'
)
street_name_formats = (
'{{first_name}} {{street_suffix}}',
'{{last_name}} {{street_suffix}}'
)
street_address_formats = (
'{{building_number}} {{street_name}}',
'{{building_number}} {{street_name}} {{secondary_address}}',
)
address_formats = (
"{{street_address}}\n{{city}}, {{state}} {{postcode}}",
)
secondary_address_formats = ('سوئیت ###', 'واحد ###')
@classmethod
def city_prefix(cls):
return cls.random_element(cls.city_prefixes)
@classmethod
def secondary_address(cls):
return cls.numerify(cls.random_element(cls.secondary_address_formats))
@classmethod
def state(cls):
return cls.random_element(cls.states)

View file

@ -1,39 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from ..person import Provider as PersonProvider
class Provider(PersonProvider):
formats = (
'{{first_name}} {{last_name}}',
'{{first_name}} {{last_name}}',
'{{first_name}} {{last_name}}',
'{{first_name}} {{last_name}}',
'{{first_name}} {{last_name}}',
'{{prefix}} {{first_name}} {{last_name}}',
'{{first_name}} {{last_name}} {{suffix}}',
'{{prefix}} {{first_name}} {{last_name}} {{suffix}}'
)
first_names = (
# top 50 Female Names in Iran: http://www.sabteahval.ir/Upload/Modules/Contents/asset100/name/d1391.htm
'فاطمه', 'اسما', 'زهرا', 'عسل', 'نازنین زهرا', 'النا', 'زینب', 'سارا', 'یسنا', 'آتنا', 'ریحانه', 'آیناز', 'هستی', 'محیا', 'ستایش', 'باران', 'ثنا', 'هلیا', 'مریم', 'یلدا', 'فاطمه زهرا', 'ملیكا', 'سارینا', 'نازنین', 'مهسا', 'آیلین', 'نرگس', 'حنانه', 'رقیه', 'كیانا', 'كوثر', 'هانیه', 'مبینا', 'مهدیس', 'رها', 'آوا', 'اسرا', 'یگانه', 'نیایش', 'حدیث', 'الینا', 'سوگند', 'مائده', 'پریا', 'معصومه', 'مهدیه', 'آیدا', 'الناز', 'محدثه', 'یاسمین',
# top 50 male Names in Iran: http://www.sabteahval.ir/Upload/Modules/Contents/asset100/name/p1391.htm
'امیر علی', 'پرهام', 'ابوالفضل', 'كیان', 'امیرحسین', 'متین', 'محمد طاها', 'عرفان', 'محمد', 'دانیال', 'علی', 'آرمین', 'امیرمحمد', 'آرتین', 'حسین', 'سبحان', 'مهدی', 'سینا', 'محمد مهدی', 'آریا', 'محمدرضا', 'محمدپارسا', 'طاها', 'سجاد', 'امیررضا', 'آرش', 'امیرعباس', 'نیما', 'علیرضا', 'عرشیا', 'محمدامین', 'مبین', 'محمدحسین', 'یوسف', 'رضا', 'احسان', 'علی اصغر', 'آرین', 'امیرمهدی', 'محمدیاسین', 'ماهان', 'عباس', 'پارسا', 'حسام', 'یاسین', 'علی رضا', 'ایلیا', 'علی اكبر', 'محمدجواد', 'بنیامین'
)
last_names = (
'محمدی', 'محمد پور', 'اکبر پور', 'رضا زاده', 'مجتهدی', 'دایی', 'حمیدی', 'کابلی', 'عبدالعلی', 'احمدی', 'اشرفی', 'علیجانی', 'ابوطالبی', 'علی شاهی', 'الوندی', 'بهمنی', 'بهرامی', 'هنری', 'ایروانی', 'حریریان', 'جعفر پور', 'جلالی', 'جلیلی', 'روحانی', 'خسروجردی', 'منصوری', 'مهدیان', 'نوروزی', 'نوری', 'رسته', 'سماوات', 'سمسار', 'شادروان', 'شاکری', 'سلطانی', 'شبیری', 'تحسینی', 'تنزیلی', 'طلوعی', 'ولاشجردی', 'وثاق', 'ظفری', 'زمانی', 'زارع', 'زارعی', 'ربانی', 'شمشیری', 'صارمی', 'صیادی', 'سرخوشیان',
'رستمی', 'رسولی', 'رفیعی', 'کریمی', 'کرمانی', 'سعیدی', 'عباسی', 'پویان', 'ترکاشوند', 'زنجانی', 'تهرانی', 'جنتی', 'صنایعی', 'جهانی', 'اشتری', 'چنگیزی', 'دادفر', 'سغیری', 'پارسا', 'ضابطی', 'میردامادی', 'عقیلی', 'نامور', 'حسنی', 'لاهوتی', 'محجوب', 'هاشمی', 'معروف', 'معین', 'هوشیار', 'هومن', 'هدایت', 'قاضی', 'ملکیان', 'ضرغامی', 'یزدی', 'نوبختی', 'مجتبوی', 'نیلوفری', 'لاچینی', 'علی پور', 'عبدالمالکی', 'فرجی', 'موسوی', 'همدانی', 'موحد', 'کمالی', 'گلپایگانی', 'نعمتی', 'عزیزی'
)
prefixes = ('جناب آقای', 'سرکار خانم', 'جناب آقای دکتر', 'سرکار خانم دکتر')
@classmethod
def prefix(cls):
return cls.random_element(cls.prefixes)
@classmethod
def suffix(cls):
return ''

View file

@ -1,25 +0,0 @@
from __future__ import unicode_literals
from ..phone_number import Provider as PhoneNumberProvider
class Provider(PhoneNumberProvider):
formats = (
# Mobile
'+98 91# ### ####',
'091# ### ####',
'+98 920 ### ####',
'0920 ### ####',
'+98 921 ### ####',
'0921 ### ####',
'+98 93# ### ####',
'093# ### ####',
# Land lines
'+98 21 #### ####',
'021 #### ####',
'+98 25 #### ####',
'025 #### ####',
'+98 26 #### ####',
'026 #### ####',
'+98 ### #### ####',
'0### #### ####'
)

View file

@ -1 +0,0 @@

View file

@ -1 +0,0 @@

View file

@ -1,55 +0,0 @@
# coding=utf-8
from __future__ import unicode_literals
from ..address import Provider as AddressProvider
class Provider(AddressProvider):
city_formats = ('{{city_name}}', )
street_name_formats = (
'{{first_name}} {{last_name}}',
'{{last_name}}'
)
street_address_formats = ('{{building_number}} {{street_name}}', )
address_formats = ('{{street_address}}\n{{city}} {{postcode}}','{{street_address}}\n{{city}}-{{postcode}}' )
building_number_formats = ('####','###', '##', '#', '#/#','##/##','##/###','##/####')
postcode_formats = ('######', )
cities = (
'आदिलाबाद','अगरतला','अहमदाबाद', 'अहमदनगर' , 'अजमेर' ,'अम्बाजी' ,'अमरपुर' ,'इलाहाबाद' ,'अकोला' 'अखनूर',
'अन्तर्गत' , 'अलांग' ,'अलीगढ' ,'दादरा और नागर हवेली', 'अमरावती' , 'अमरोहा', 'अनन्तपुर', 'करना', 'जिससेबेलारी',
'अनंतनाग','भागलपुर', 'पेपरबोर्डस','त्रिबेनी', 'टिसूज', 'भद्रक', 'बचेली' ,'बहादुरगंज' ,'बहादुरगढ' ,'चिरमिरी', 'चिराला', 'चित्रदुर्ग' ,
'चित्तूर' ,'चित्रकूट' ,'देवगढ़' , 'दालखोला' , 'देवास', 'चंडीगढ', 'फादर', 'चिन्नफ', 'चिपलुन', 'चक्रधरपुर', 'चंबा', 'फतहपुर', 'फतेहपुर',
'फतेहगढ', 'फतहपुर' ,'फतहपुर' ,'चित्तूर' ,'चित्रकूट', 'सभापतिने', 'देवगढ़', 'द्वारारस्वीकृति', 'दालखोला',
'धर्मापुरी', 'पाकाला', 'धारवाड' ,'असम', 'देहरा' , 'रानीताल' ,'खडगपुर', 'मोकामा', 'मोकोकचुंग' ,'जिलोंपर' ,'विस्तारण' ,'मोतिहारी'
)
states = (
'अरूणाचल प्रदेश', 'बिहार', 'असम' ,'आंध्र प्रदेश' ,'छत्तीसगढ','हरियाणा' ,'गुजरात' ,'हिमाचल प्रदेश', 'गोवा', 'मध्य प्रदेश', 'महाराष्ट्र', 'कश्मीर',
'केरल' , 'कर्नाटक', 'मणिपुर' ,'मिजोरम', 'मेघालय', 'सिबक्कम' ,'राजस्थान','पंजाब', 'उडीसा' ,'उत्तरांचल' ,'उत्तर प्रदेश', 'तमिलनाडु', 'त्रिपुरा',
'पश्चिमी बंगाल', 'अंडमान और निकोबार', 'द्वीप समूह' , 'दमन और दीव', 'दादरा और नागर हवेली', 'दिल्ली','पांडिचेरी', 'लक्षद्वीप'
)
countries = (
'आर्मेनिया', 'यू.के.','फ्रांस', 'अजेपटीना', 'ब्राजील' ,'ईरान', 'यूनान', 'स्पेन' ,'हमारे' , 'जॉजिऩया', 'लेबनान' , 'सायप्रस', 'सीरिया', 'कनाडा', 'रूस' ,
'संयुक्त राज्य अमरीका' ,'नेदर्लान्ड', 'फ्रांस','ऑस्ट्रेलिया', 'एंटीगुआ', 'बार्बुडा' ,'अर्जेंटीना', 'आर्मेनिया' ,'ऑस्ट्रिया', 'अज़रबाइजान','बारबाडोस', 'बेलारूस', 'बेल्जियम',
'बेलीज़' ,'बेनिन', 'बहामास' ,'बहरीन', 'बांग्लादेश', 'भूटान', 'बोलिविया', 'बोस्निया' ,'हर्जेगोविना', 'बोत्सवाना' , 'ब्राजील' ,'ब्रुनेई' ,'बुल्गारिया', 'बुर्किना', 'फ़ासो',
'बर्मा', 'बुरूंडी','डोमिनिकन रिपब्लिक','गिनिया', 'टीमोर','फ़िनलैंड','गेबोन', 'गाम्बिया', 'जर्मनी', 'जार्जिया ग्रेनेडा','घाना' ,'यूनान' ,'ग्रेट ब्रिटेन', 'हंगरी',
'भारत', 'इराक', 'आयरलैंड', 'इंडोनेशिया' , 'इसराइल' , 'आइलैंड', 'ईरान' ,'इटली','जमैका' ,'जॉर्डन','जापान','क़जाख़स्तान', 'केन्या', 'किरिबाती', 'दक्षिण कोरिया', 'लातविया',
'लाओस' , 'उत्तर कोरिया', 'दक्षिण कोसोवो', 'कुवैत', 'लेबनान', 'लिचटीनस्टीन', 'लिथुआनिया' ,'लक्समबर्ग', 'लीबिया' ,'लाइबेरिया', 'लेसोथो',
'नेपाल' ,'न्यूजीलैंड', 'निकारागुआ', 'नाइजर', 'नाउरू','लुसिया', 'रूस', 'रोमानिया', 'अरब', 'अमीरात', 'यूएई' ,'युगांडा', 'यूक्रेन', 'उरूग्वे',
'उज़बेकिस्तान', 'यूनाइटेड किंगडम', 'वानुआतू', 'वेटिकन सिटी' , 'वेनेजुएला', 'पश्चिमी सहारा' , 'वियतनाम', 'यमन', 'ज़ायर' , 'जाबम्बया', 'जिम्बाब्वे'
)
@classmethod
def city_name(cls):
return cls.random_element(cls.cities)
@classmethod
def state(cls):
return cls.random_element(cls.states)

View file

@ -1,140 +0,0 @@
# coding=utf-8
from __future__ import unicode_literals
from . import BaseProvider
import random
from faker.providers.lorem import Provider as Lorem
from faker.utils.decorators import slugify, slugify_domain
class Provider(BaseProvider):
safe_email_tlds = ('org', 'com', 'net')
free_email_domains = ('gmail.com', 'yahoo.com', 'hotmail.com')
tlds = ('com', 'com', 'com', 'com', 'com', 'com', 'biz', 'info', 'net', 'org')
uri_pages = (
'index', 'home', 'search', 'main', 'post', 'homepage', 'category', 'register', 'login', 'faq', 'about', 'terms',
'privacy', 'author')
uri_paths = (
'app', 'main', 'wp-content', 'search', 'category', 'tag', 'categories', 'tags', 'blog', 'posts', 'list', 'explore')
uri_extensions = ('.html', '.html', '.html', '.htm', '.htm', '.php', '.php', '.jsp', '.asp')
user_name_formats = (
'{{last_name}}.{{first_name}}',
'{{first_name}}.{{last_name}}',
'{{first_name}}##',
'?{{last_name}}',
)
email_formats = (
'{{user_name}}@{{domain_name}}',
'{{user_name}}@{{free_email_domain}}',
)
url_formats = (
'http://www.{{domain_name}}/',
'http://{{domain_name}}/',
)
uri_formats = (
'{{url}}',
'{{url}}{{uri_page}}/',
'{{url}}{{uri_page}}{{uri_extension}}',
'{{url}}{{uri_path}}/{{uri_page}}/',
'{{url}}{{uri_path}}/{{uri_page}}{{uri_extension}}',
)
image_placeholder_services = (
'http://placekitten.com/{width}/{height}',
'http://placehold.it/{width}x{height}',
'http://www.lorempixum.com/{width}/{height}',
'http://dummyimage.com/{width}x{height}',
)
def email(self):
pattern = self.random_element(self.email_formats)
return "".join(self.generator.parse(pattern).split(" "))
def safe_email(self):
return self.user_name() + '@example.' + self.random_element(self.safe_email_tlds)
def free_email(self):
return self.user_name() + '@' + self.free_email_domain()
def company_email(self):
return self.user_name() + '@' + self.domain_name()
@classmethod
def free_email_domain(cls):
return cls.random_element(cls.free_email_domains)
@slugify_domain
def user_name(self):
pattern = self.random_element(self.user_name_formats)
return self.bothify(self.generator.parse(pattern))
def domain_name(self):
return self.domain_word() + '.' + self.tld()
@slugify
def domain_word(self):
company = self.generator.format('company')
company_elements = company.split(' ')
company = company_elements.pop(0)
return company
def tld(self):
return self.random_element(self.tlds)
def url(self):
pattern = self.random_element(self.url_formats)
return self.generator.parse(pattern)
def ipv4(self):
"""
Convert 32-bit integer to dotted IPv4 address.
"""
return ".".join(map(lambda n: str(random.randint(-2147483648, 2147483647) >> n & 0xFF), [24, 16, 8, 0]))
def ipv6(self):
res = [hex(random.randint(0, 65535))[2:].zfill(4) for i in range(0, 8)]
return ":".join(res)
def mac_address(self):
mac = [random.randint(0x00, 0xff) for i in range(0, 6)]
return ":".join(map(lambda x: "%02x" % x, mac))
@classmethod
def uri_page(cls):
return cls.random_element(cls.uri_pages)
@classmethod
def uri_path(cls, deep=None):
deep = deep if deep else random.randint(1, 3)
return "/".join([cls.random_element(cls.uri_paths) for _ in range(0, deep)])
@classmethod
def uri_extension(cls):
return cls.random_element(cls.uri_extensions)
def uri(self):
pattern = self.random_element(self.uri_formats)
return self.generator.parse(pattern)
@classmethod
@slugify
def slug(cls, value=None):
"""
Django algorithm
"""
if value is None:
value = Lorem.text(20)
return value
@classmethod
def image_url(cls, width=None, height=None):
"""
Returns URL to placeholder image
Example: http://placehold.it/640x480
"""
width_ = width or cls.random_int(max=1024)
height_ = height or cls.random_int(max=1024)
placeholder_url = cls.random_element(cls.image_placeholder_services)
return placeholder_url.format(width=width_, height=height_)

View file

@ -1 +0,0 @@

View file

@ -1,121 +0,0 @@
# coding=utf-8
from __future__ import unicode_literals
from ..address import Provider as AddressProvider
class Provider(AddressProvider):
city_prefixes = ('San', 'Borgo', 'Sesto', 'Quarto', 'Settimo')
city_suffixes = (
'a mare', 'lido', 'ligure', 'del friuli', 'salentino', 'calabro', 'veneto', 'nell\'emilia', 'umbro', 'laziale',
'terme', 'sardo')
building_number_formats = ('###', '##', '#')
street_suffixes = (
'Piazza', 'Strada', 'Via', 'Borgo', 'Contrada', 'Rotonda', 'Incrocio', 'Viale', 'Stretto', 'Vicolo', 'Canale')
postcode_formats = ('#####',)
states = ('Agrigento', 'Alessandria', 'Ancona', 'Aosta', 'Arezzo', 'Ascoli Piceno', 'Asti', 'Avellino', 'Bari',
'Barletta-Andria-Trani', 'Belluno', 'Benevento', 'Bergamo', 'Biella', 'Bologna', 'Bolzano', 'Brescia',
'Brindisi', 'Cagliari', 'Caltanissetta', 'Campobasso', 'Carbonia-Iglesias', 'Caserta', 'Catania',
'Catanzaro', 'Chieti', 'Como', 'Cosenza', 'Cremona', 'Crotone', 'Cuneo', 'Enna', 'Fermo', 'Ferrara',
'Firenze', 'Foggia', 'Forlì-Cesena', 'Frosinone', 'Genova', 'Gorizia', 'Grosseto', 'Imperia', 'Isernia',
'La Spezia', 'L\'Aquila', 'Latina', 'Lecce', 'Lecco', 'Livorno', 'Lodi', 'Lucca', 'Macerata', 'Mantova',
'Massa-Carrara', 'Matera', 'Messina', 'Milano', 'Modena', 'Monza e della Brianza', 'Napoli', 'Novara',
'Nuoro', 'Olbia-Tempio', 'Oristano', 'Padova', 'Palermo', 'Parma', 'Pavia', 'Perugia', 'Pesaro e Urbino',
'Pescara', 'Piacenza', 'Pisa', 'Pistoia', 'Pordenone', 'Potenza', 'Prato', 'Ragusa', 'Ravenna',
'Reggio Calabria', 'Reggio Emilia', 'Rieti', 'Rimini', 'Roma', 'Rovigo', 'Salerno', 'Medio Campidano',
'Sassari', 'Savona', 'Siena', 'Siracusa', 'Sondrio', 'Taranto', 'Teramo', 'Terni', 'Torino', 'Ogliastra',
'Trapani', 'Trento', 'Treviso', 'Trieste', 'Udine', 'Varese', 'Venezia', 'Verbano-Cusio-Ossola',
'Vercelli', 'Verona', 'Vibo Valentia', 'Vicenza', 'Viterbo' )
states_abbr = (
'AG', 'AL', 'AN', 'AO', 'AR', 'AP', 'AT', 'AV', 'BA', 'BT', 'BL', 'BN', 'BG', 'BI', 'BO', 'BZ', 'BS', 'BR',
'CA',
'CL', 'CB', 'CI', 'CE', 'CT', 'CZ', 'CH', 'CO', 'CS', 'CR', 'KR', 'CN', 'EN', 'FM', 'FE', 'FI', 'FG', 'FC',
'FR',
'GE', 'GO', 'GR', 'IM', 'IS', 'SP', 'AQ', 'LT', 'LE', 'LC', 'LI', 'LO', 'LU', 'MC', 'MN', 'MS', 'MT', 'ME',
'MI',
'MO', 'MB', 'NA', 'NO', 'NU', 'OT', 'OR', 'PD', 'PA', 'PR', 'PV', 'PG', 'PU', 'PE', 'PC', 'PI', 'PT', 'PN',
'PZ',
'PO', 'RG', 'RA', 'RC', 'RE', 'RI', 'RN', 'RM', 'RO', 'SA', 'VS', 'SS', 'SV', 'SI', 'SR', 'SO', 'TA', 'TE',
'TR',
'TO', 'OG', 'TP', 'TN', 'TV', 'TS', 'UD', 'VA', 'VE', 'VB', 'VC', 'VR', 'VV', 'VI', 'VT' )
countries = (
'Afghanistan', 'Albania', 'Algeria', 'American Samoa', 'Andorra', 'Angola', 'Anguilla',
'Antartide (territori a sud del 60° parallelo)', 'Antigua e Barbuda', 'Argentina', 'Armenia', 'Aruba',
'Australia', 'Austria', 'Azerbaijan',
'Bahamas', 'Bahrain', 'Bangladesh', 'Barbados', 'Bielorussia', 'Belgio', 'Belize', 'Benin', 'Bermuda', 'Bhutan',
'Bolivia', 'Bosnia e Herzegovina', 'Botswana', 'Bouvet Island (Bouvetoya)', 'Brasile',
'Territorio dell\'arcipelago indiano', 'Isole Vergini Britanniche', 'Brunei Darussalam', 'Bulgaria',
'Burkina Faso', 'Burundi',
'Cambogia', 'Cameroon', 'Canada', 'Capo Verde', 'Isole Cayman', 'Repubblica Centrale Africana', 'Chad', 'Cile',
'Cina', 'Isola di Pasqua', 'Isola di Cocos (Keeling)', 'Colombia', 'Comoros', 'Congo', 'Isole Cook',
'Costa Rica', 'Costa d\'Avorio', 'Croazia', 'Cuba', 'Cipro', 'Repubblica Ceca',
'Danimarca', 'Gibuti', 'Repubblica Dominicana',
'Equador', 'Egitto', 'El Salvador', 'Guinea Equatoriale', 'Eritrea', 'Estonia', 'Etiopia',
'Isole Faroe', 'Isole Falkland (Malvinas)', 'Fiji', 'Finlandia', 'Francia', 'Guyana Francese',
'Polinesia Francese', 'Territori Francesi del sud',
'Gabon', 'Gambia', 'Georgia', 'Germania', 'Ghana', 'Gibilterra', 'Grecia', 'Groenlandia', 'Grenada',
'Guadalupa', 'Guam', 'Guatemala', 'Guernsey', 'Guinea', 'Guinea-Bissau', 'Guyana',
'Haiti', 'Heard Island and McDonald Islands', 'Città del Vaticano', 'Honduras', 'Hong Kong', 'Ungheria',
'Islanda', 'India', 'Indonesia', 'Iran', 'Iraq', 'Irlanda', 'Isola di Man', 'Israele', 'Italia',
'Giamaica', 'Giappone', 'Jersey', 'Giordania',
'Kazakhstan', 'Kenya', 'Kiribati', 'Korea', 'Kuwait', 'Republicca Kirgiza',
'Repubblica del Laos', 'Latvia', 'Libano', 'Lesotho', 'Liberia', 'Libyan Arab Jamahiriya', 'Liechtenstein',
'Lituania', 'Lussemburgo',
'Macao', 'Macedonia', 'Madagascar', 'Malawi', 'Malesia', 'Maldive', 'Mali', 'Malta', 'Isole Marshall',
'Martinica', 'Mauritania', 'Mauritius', 'Mayotte', 'Messico', 'Micronesia', 'Moldova', 'Principato di Monaco',
'Mongolia', 'Montenegro', 'Montserrat', 'Marocco', 'Mozambico', 'Myanmar',
'Namibia', 'Nauru', 'Nepal', 'Antille Olandesi', 'Olanda', 'Nuova Caledonia', 'Nuova Zelanda', 'Nicaragua',
'Niger', 'Nigeria', 'Niue', 'Isole Norfolk', 'Northern Mariana Islands', 'Norvegia',
'Oman',
'Pakistan', 'Palau', 'Palestina', 'Panama', 'Papua Nuova Guinea', 'Paraguay', 'Peru', 'Filippine',
'Pitcairn Islands', 'Polonia', 'Portogallo', 'Porto Rico',
'Qatar',
'Reunion', 'Romania', 'Russia', 'Rwanda',
'San Bartolomeo', 'Sant\'Elena', 'Saint Kitts and Nevis', 'Saint Lucia', 'Saint Martin',
'Saint Pierre and Miquelon', 'Saint Vincent and the Grenadines', 'Samoa', 'San Marino', 'Sao Tome and Principe',
'Arabia Saudita', 'Senegal', 'Serbia', 'Seychelles', 'Sierra Leone', 'Singapore', 'Slovenia', 'Isole Solomon',
'Somalia', 'Sud Africa', 'Georgia del sud e South Sandwich Islands', 'Spagna', 'Sri Lanka', 'Sudan', 'Suriname',
'Svalbard & Jan Mayen Islands', 'Swaziland', 'Svezia', 'Svizzera', 'Siria',
'Taiwan', 'Tajikistan', 'Tanzania', 'Tailandia', 'Timor-Leste', 'Togo', 'Tokelau', 'Tonga', 'Trinidad e Tobago',
'Tunisia', 'Turchia', 'Turkmenistan', 'Isole di Turks and Caicos', 'Tuvalu',
'Uganda', 'Ucraina', 'Emirati Arabi Uniti', 'Regno Unito', 'Stati Uniti d\'America',
'United States Minor Outlying Islands', 'Isole Vergini Statunitensi', 'Uruguay', 'Uzbekistan',
'Vanuatu', 'Venezuela', 'Vietnam',
'Wallis and Futuna', 'Western Sahara',
'Yemen',
'Zambia', 'Zimbabwe'
)
city_formats = (
'{{city_prefix}} {{first_name}} {{city_suffix}}',
'{{city_prefix}} {{first_name}}',
'{{first_name}} {{city_suffix}}',
'{{last_name}} {{city_suffix}}',
)
street_name_formats = (
'{{street_suffix}} {{first_name}}',
'{{street_suffix}} {{last_name}}'
)
street_address_formats = (
'{{street_name}} {{building_number}}',
'{{street_name}} {{building_number}} {{secondary_address}}',
)
address_formats = (
"{{street_address}}\n{{city}}, {{postcode}} {{state}} ({{state_abbr}})",
)
secondary_address_formats = ('Appartamento ##', 'Piano #')
@classmethod
def city_prefix(cls):
return cls.random_element(cls.city_prefixes)
@classmethod
def secondary_address(cls):
return cls.numerify(cls.random_element(cls.secondary_address_formats))
@classmethod
def state(cls):
return cls.random_element(cls.states)
@classmethod
def state_abbr(cls):
return cls.random_element(cls.states_abbr)

View file

@ -1,14 +0,0 @@
from __future__ import unicode_literals
from ..phone_number import Provider as PhoneNumberProvider
class Provider(PhoneNumberProvider):
formats = (
'+## ### ## ## ####',
'+## ## #######',
'+## ## ########',
'+## ### #######',
'+## ### ########',
'+## #### #######',
'+## #### ########'
)

View file

@ -1,634 +0,0 @@
# coding=utf-8
from . import BaseProvider
from .. import Generator
class Provider(BaseProvider):
jobs=["Academic librarian",
"Accommodation manager",
"Accountant, chartered",
"Accountant, chartered certified",
"Accountant, chartered management",
"Accountant, chartered public finance",
"Accounting technician",
"Actor",
"Actuary",
"Acupuncturist",
"Administrator",
"Administrator, arts",
"Administrator, charities/voluntary organisations",
"Administrator, Civil Service",
"Administrator, education",
"Administrator, local government",
"Administrator, sports",
"Adult guidance worker",
"Adult nurse",
"Advertising account executive",
"Advertising account planner",
"Advertising art director",
"Advertising copywriter",
"Advice worker",
"Aeronautical engineer",
"Agricultural consultant",
"Agricultural engineer",
"Aid worker",
"Air broker",
"Air cabin crew",
"Air traffic controller",
"Airline pilot",
"Ambulance person",
"Amenity horticulturist",
"Analytical chemist",
"Animal nutritionist",
"Animal technologist",
"Animator",
"Applications developer",
"Arboriculturist",
"Archaeologist",
"Architect",
"Architectural technologist",
"Archivist",
"Armed forces logistics/support/administrative officer",
"Armed forces operational officer",
"Armed forces technical officer",
"Armed forces training and education officer",
"Art gallery manager",
"Art therapist",
"Artist",
"Arts administrator",
"Arts development officer",
"Astronomer",
"Audiological scientist",
"Automotive engineer",
"Banker",
"Barrister",
"Barrister's clerk",
"Best boy",
"Biochemist, clinical",
"Biomedical engineer",
"Biomedical scientist",
"Bonds trader",
"Bookseller",
"Brewing technologist",
"Broadcast engineer",
"Broadcast journalist",
"Broadcast presenter",
"Building control surveyor",
"Building services engineer",
"Building surveyor",
"Buyer, industrial",
"Buyer, retail",
"Cabin crew",
"Call centre manager",
"Camera operator",
"Careers adviser",
"Careers information officer",
"Cartographer",
"Catering manager",
"Ceramics designer",
"Charity fundraiser",
"Charity officer",
"Chartered accountant",
"Chartered certified accountant",
"Chartered legal executive (England and Wales)",
"Chartered loss adjuster",
"Chartered management accountant",
"Chartered public finance accountant",
"Chemical engineer",
"Chemist, analytical",
"Child psychotherapist",
"Chiropodist",
"Chiropractor",
"Civil engineer, consulting",
"Civil engineer, contracting",
"Civil Service administrator",
"Civil Service fast streamer",
"Claims inspector/assessor",
"Clinical biochemist",
"Clinical cytogeneticist",
"Clinical embryologist",
"Clinical molecular geneticist",
"Clinical psychologist",
"Clinical research associate",
"Clinical scientist, histocompatibility and immunogenetics",
"Clothing/textile technologist",
"Colour technologist",
"Commercial art gallery manager",
"Commercial horticulturist",
"Commercial/residential surveyor",
"Commissioning editor",
"Communications engineer",
"Community arts worker",
"Community development worker",
"Community education officer",
"Community pharmacist",
"Company secretary",
"Computer games developer",
"Conference centre manager",
"Conservation officer, historic buildings",
"Conservation officer, nature",
"Conservator, furniture",
"Conservator, museum/gallery",
"Consulting civil engineer",
"Contracting civil engineer",
"Control and instrumentation engineer",
"Copy",
"Copywriter, advertising",
"Corporate investment banker",
"Corporate treasurer",
"Counselling psychologist",
"Counsellor",
"Curator",
"Customer service manager",
"Cytogeneticist",
"Dance movement psychotherapist",
"Dancer",
"Data processing manager",
"Database administrator",
"Dealer",
"Dentist",
"Designer, blown glass/stained glass",
"Designer, ceramics/pottery",
"Designer, exhibition/display",
"Designer, fashion/clothing",
"Designer, furniture",
"Designer, graphic",
"Designer, industrial/product",
"Designer, interior/spatial",
"Designer, jewellery",
"Designer, multimedia",
"Designer, television/film set",
"Designer, textile",
"Development worker, community",
"Development worker, international aid",
"Diagnostic radiographer",
"Dietitian",
"Diplomatic Services operational officer",
"Dispensing optician",
"Doctor, general practice",
"Doctor, hospital",
"Dramatherapist",
"Drilling engineer",
"Early years teacher",
"Ecologist",
"Economist",
"Editor, commissioning",
"Editor, film/video",
"Editor, magazine features",
"Editorial assistant",
"Education administrator",
"Education officer, community",
"Education officer, environmental",
"Education officer, museum",
"Educational psychologist",
"Electrical engineer",
"Electronics engineer",
"Embryologist, clinical",
"Emergency planning/management officer",
"Energy engineer",
"Energy manager",
"Engineer, aeronautical",
"Engineer, agricultural",
"Engineer, automotive",
"Engineer, biomedical",
"Engineer, broadcasting (operations)",
"Engineer, building services",
"Engineer, chemical",
"Engineer, civil (consulting)",
"Engineer, civil (contracting)",
"Engineer, communications",
"Engineer, control and instrumentation",
"Engineer, drilling",
"Engineer, electrical",
"Engineer, electronics",
"Engineer, energy",
"Engineer, land",
"Engineer, maintenance",
"Engineer, maintenance (IT)",
"Engineer, manufacturing",
"Engineer, manufacturing systems",
"Engineer, materials",
"Engineer, mining",
"Engineer, petroleum",
"Engineer, production",
"Engineer, site",
"Engineer, structural",
"Engineer, technical sales",
"Engineer, water",
"Engineering geologist",
"English as a foreign language teacher",
"English as a second language teacher",
"Environmental consultant",
"Environmental education officer",
"Environmental health practitioner",
"Environmental manager",
"Equality and diversity officer",
"Equities trader",
"Ergonomist",
"Estate agent",
"Estate manager/land agent",
"Event organiser",
"Exercise physiologist",
"Exhibition designer",
"Exhibitions officer, museum/gallery",
"Facilities manager",
"Farm manager",
"Fashion designer",
"Fast food restaurant manager",
"Field seismologist",
"Field trials officer",
"Film/video editor",
"Financial adviser",
"Financial controller",
"Financial manager",
"Financial planner",
"Financial risk analyst",
"Financial trader",
"Fine artist",
"Firefighter",
"Fish farm manager",
"Fisheries officer",
"Fitness centre manager",
"Food technologist",
"Forensic psychologist",
"Forensic scientist",
"Forest/woodland manager",
"Freight forwarder",
"Furniture conservator/restorer",
"Furniture designer",
"Further education lecturer",
"Futures trader",
"Gaffer",
"Games developer",
"Garment/textile technologist",
"General practice doctor",
"Geneticist, molecular",
"Geochemist",
"Geographical information systems officer",
"Geologist, engineering",
"Geologist, wellsite",
"Geophysical data processor",
"Geophysicist/field seismologist",
"Geoscientist",
"Glass blower/designer",
"Government social research officer",
"Graphic designer",
"Haematologist",
"Health and safety adviser",
"Health and safety inspector",
"Health physicist",
"Health promotion specialist",
"Health service manager",
"Health visitor",
"Herbalist",
"Heritage manager",
"Higher education careers adviser",
"Higher education lecturer",
"Historic buildings inspector/conservation officer",
"Holiday representative",
"Homeopath",
"Horticultural consultant",
"Horticultural therapist",
"Horticulturist, amenity",
"Horticulturist, commercial",
"Hospital doctor",
"Hospital pharmacist",
"Hotel manager",
"Housing manager/officer",
"Human resources officer",
"Hydrogeologist",
"Hydrographic surveyor",
"Hydrologist",
"Illustrator",
"Immigration officer",
"Immunologist",
"Industrial buyer",
"Industrial/product designer",
"Information officer",
"Information systems manager",
"Insurance account manager",
"Insurance broker",
"Insurance claims handler",
"Insurance risk surveyor",
"Insurance underwriter",
"Intelligence analyst",
"Interior and spatial designer",
"International aid/development worker",
"Interpreter",
"Investment analyst",
"Investment banker, corporate",
"Investment banker, operational",
"IT consultant",
"IT sales professional",
"IT technical support officer",
"IT trainer",
"Jewellery designer",
"Journalist, broadcasting",
"Journalist, magazine",
"Journalist, newspaper",
"Land",
"Land/geomatics surveyor",
"Landscape architect",
"Lawyer",
"Lawyer",
"Learning disability nurse",
"Learning mentor",
"Lecturer, further education",
"Lecturer, higher education",
"Legal executive",
"Legal secretary",
"Leisure centre manager",
"Lexicographer",
"Librarian, academic",
"Librarian, public",
"Licensed conveyancer",
"Lighting technician, broadcasting/film/video",
"Lobbyist",
"Local government officer",
"Location manager",
"Logistics and distribution manager",
"Loss adjuster, chartered",
"Magazine features editor",
"Magazine journalist",
"Maintenance engineer",
"Make",
"Management consultant",
"Manufacturing engineer",
"Manufacturing systems engineer",
"Marine scientist",
"Market researcher",
"Marketing executive",
"Materials engineer",
"Mechanical engineer",
"Media buyer",
"Media planner",
"Medical illustrator",
"Medical laboratory scientific officer",
"Medical physicist",
"Medical sales representative",
"Medical secretary",
"Medical technical officer",
"Mental health nurse",
"Merchandiser, retail",
"Merchant navy officer",
"Metallurgist",
"Meteorologist",
"Microbiologist",
"Midwife",
"Minerals surveyor",
"Mining engineer",
"Mudlogger",
"Multimedia programmer",
"Multimedia specialist",
"Museum education officer",
"Museum/gallery conservator",
"Museum/gallery curator",
"Museum/gallery exhibitions officer",
"Music therapist",
"Music tutor",
"Musician",
"Nature conservation officer",
"Naval architect",
"Network engineer",
"Newspaper journalist",
"Nurse, adult",
"Nurse, children's",
"Nurse, learning disability",
"Nurse, mental health",
"Nutritional therapist",
"Occupational hygienist",
"Occupational psychologist",
"Occupational therapist",
"Oceanographer",
"Office manager",
"Oncologist",
"Operational investment banker",
"Operational researcher",
"Operations geologist",
"Ophthalmologist",
"Optician, dispensing",
"Optometrist",
"Orthoptist",
"Osteopath",
"Outdoor activities/education manager",
"Paediatric nurse",
"Paramedic",
"Passenger transport manager",
"Patent attorney",
"Patent examiner",
"Pathologist",
"Pension scheme manager",
"Pensions consultant",
"Personal assistant",
"Personnel officer",
"Petroleum engineer",
"Pharmacist, community",
"Pharmacist, hospital",
"Pharmacologist",
"Photographer",
"Physicist, medical",
"Physiological scientist",
"Physiotherapist",
"Phytotherapist",
"Pilot, airline",
"Planning and development surveyor",
"Plant breeder/geneticist",
"Podiatrist",
"Police officer",
"Politician's assistant",
"Presenter, broadcasting",
"Press photographer",
"Press sub",
"Primary school teacher",
"Print production planner",
"Printmaker",
"Prison officer",
"Private music teacher",
"Probation officer",
"Producer, radio",
"Producer, television/film/video",
"Product designer",
"Product/process development scientist",
"Production assistant, radio",
"Production assistant, television",
"Production designer, theatre/television/film",
"Production engineer",
"Production manager",
"Programme researcher, broadcasting/film/video",
"Programmer, applications",
"Programmer, multimedia",
"Programmer, systems",
"Proofreader",
"Psychiatric nurse",
"Psychiatrist",
"Psychologist, clinical",
"Psychologist, counselling",
"Psychologist, educational",
"Psychologist, forensic",
"Psychologist, occupational",
"Psychologist, prison and probation services",
"Psychologist, sport and exercise",
"Psychotherapist",
"Psychotherapist, child",
"Psychotherapist, dance movement",
"Public affairs consultant",
"Public house manager",
"Public librarian",
"Public relations account executive",
"Public relations officer",
"Publishing copy",
"Publishing rights manager",
"Purchasing manager",
"Quality manager",
"Quantity surveyor",
"Quarry manager",
"Race relations officer",
"Radiation protection practitioner",
"Radio broadcast assistant",
"Radio producer",
"Radiographer, diagnostic",
"Radiographer, therapeutic",
"Ranger/warden",
"Records manager",
"Recruitment consultant",
"Recycling officer",
"Regulatory affairs officer",
"Research officer, government",
"Research officer, political party",
"Research officer, trade union",
"Research scientist (life sciences)",
"Research scientist (maths)",
"Research scientist (medical)",
"Research scientist (physical sciences)",
"Restaurant manager",
"Restaurant manager, fast food",
"Retail banker",
"Retail buyer",
"Retail manager",
"Retail merchandiser",
"Risk analyst",
"Risk manager",
"Runner, broadcasting/film/video",
"Rural practice surveyor",
"Sales executive",
"Sales professional, IT",
"Sales promotion account executive",
"Science writer",
"Scientific laboratory technician",
"Scientist, audiological",
"Scientist, biomedical",
"Scientist, clinical (histocompatibility and immunogenetics)",
"Scientist, forensic",
"Scientist, marine",
"Scientist, physiological",
"Scientist, product/process development",
"Scientist, research (life sciences)",
"Scientist, research (maths)",
"Scientist, research (medical)",
"Scientist, research (physical sciences)",
"Scientist, water quality",
"Secondary school teacher",
"Secretary/administrator",
"Secretary, company",
"Seismic interpreter",
"Senior tax professional/tax inspector",
"Set designer",
"Ship broker",
"Site engineer",
"Social research officer, government",
"Social researcher",
"Social worker",
"Software engineer",
"Soil scientist",
"Solicitor",
"Solicitor, Scotland",
"Sound technician, broadcasting/film/video",
"Special educational needs teacher",
"Special effects artist",
"Speech and language therapist",
"Sport and exercise psychologist",
"Sports administrator",
"Sports coach",
"Sports development officer",
"Sports therapist",
"Stage manager",
"Statistician",
"Structural engineer",
"Sub",
"Surgeon",
"Surveyor, building",
"Surveyor, building control",
"Surveyor, commercial/residential",
"Surveyor, hydrographic",
"Surveyor, insurance",
"Surveyor, land/geomatics",
"Surveyor, minerals",
"Surveyor, mining",
"Surveyor, planning and development",
"Surveyor, quantity",
"Surveyor, rural practice",
"Systems analyst",
"Systems developer",
"Tax adviser",
"Tax inspector",
"Teacher, adult education",
"Teacher, early years/pre",
"Teacher, English as a foreign language",
"Teacher, music",
"Teacher, primary school",
"Teacher, secondary school",
"Teacher, special educational needs",
"Teaching laboratory technician",
"Technical author",
"Technical brewer",
"Technical sales engineer",
"TEFL teacher",
"Telecommunications researcher",
"Television camera operator",
"Television floor manager",
"Television production assistant",
"Television/film/video producer",
"Textile designer",
"Theatre director",
"Theatre manager",
"Theatre stage manager",
"Theme park manager",
"Therapeutic radiographer",
"Therapist, art",
"Therapist, drama",
"Therapist, horticultural",
"Therapist, music",
"Therapist, nutritional",
"Therapist, occupational",
"Therapist, speech and language",
"Therapist, sports",
"Tour manager",
"Tourism officer",
"Tourist information centre manager",
"Town planner",
"Toxicologist",
"Trade mark attorney",
"Trade union research officer",
"Trading standards officer",
"Training and development officer",
"Translator",
"Transport planner",
"Travel agency manager",
"Tree surgeon",
"Veterinary surgeon",
"Video editor",
"Visual merchandiser",
"Volunteer coordinator",
"Warden/ranger",
"Warehouse manager",
"Waste management officer",
"Water engineer",
"Water quality scientist",
"Web designer",
"Wellsite geologist",
"Writer",
"Youth worker"]
@classmethod
def job(cls):
return cls.random_element(cls.jobs)

View file

@ -1 +0,0 @@

View file

@ -1,70 +0,0 @@
# coding=utf-8
from __future__ import unicode_literals
from ..address import Provider as AddressProvider
class Provider(AddressProvider):
city_suffixes = ('마을', '', '', '')
building_number_formats = ('#', '####', '###')
street_suffixes = ('', '', '거리')
postcode_formats = ('###-###', '###-###')
states = (
'서울특별시', '부산광역시', '대구광역시', '인천광역시', '광주광역시', '대전광역시', '울산광역시',
'세종특별자치시', '경기도', '강원도', '충청북도', '충청남도', '전라북도', '전라남도', '경상북도',
'경상남도', '제주특별자치도')
countries = ('가나', '가봉', '가이아나', '감비아', '과테말라', '그레나다', '그리스', '기니', '기니비사우',
'나미비아', '나우루', '나이지리아', '남수단', '남아프리카 공화국', '네덜란드 왕국', '네팔',
'노르웨이', '뉴질랜드', '니제르', '니카라과', '대한민국', '덴마크', '도미니카 공화국',
'도미니카 연방', '독일', '동티모르', '라오스', '라이베리아', '라트비아', '러시아', '레바논',
'레소토', '루마니아', '룩셈부르크', '르완다', '리비아', '리투아니아', '리히텐슈타인',
'마다가스카르', '마셜 제도', '마케도니아 공화국', '말라위', '말레이시아', '말리', '멕시코',
'모나코', '모로코', '모리셔스', '모리타니', '모잠비크', '몬테네그로', '몰도바', '몰디브',
'몰타', '몽골', '미국', '미얀마', '미크로네시아 연방', '바누아투', '바레인', '바베이도스',
'바하마', '방글라데시', '베냉', '베네수엘라', '베트남', '벨기에', '벨라루스', '벨리즈',
'보스니아 헤르체고비나', '보츠와나', '볼리비아', '부룬디', '부르키나파소', '부탄', '불가리아',
'브라질', '브루나이', '사모아', '사우디아라비아', '산마리노', '상투메 프린시페', '세네갈',
'세르비아', '세이셸', '세인트루시아', '세인트빈센트 그레나딘', '세인트키츠 네비스',
'소말리아', '솔로몬 제도', '수단', '수리남', '스리랑카', '스와질란드', '스웨덴', '스위스',
'스페인', '슬로바키아', '슬로베니아', '시리아', '시에라리온 공화국', '싱가포르',
'아랍에미리트', '아르메니아', '아르헨티나', '아이슬란드', '아이티', '아일랜드',
'아제르바이잔', '아프가니스탄', '안도라', '알바니아', '알제리', '앙골라', '앤티가 바부다',
'에리트레아', '에스토니아', '에콰도르', '에티오피아', '엘살바도르', '영국', '예멘', '오만',
'오스트레일리아', '오스트리아', '온두라스', '요르단', '우간다', '우루과이', '우즈베키스탄',
'우크라이나', '이라크', '이란', '이스라엘', '이집트', '이탈리아', '인도네시아', '일본',
'자메이카', '잠비아', '적도 기니', '조선민주주의인민공화국', '조지아', '중앙아프리카 공화국',
'중화인민공화국', '지부티', '짐바브웨', '차드', '체코', '칠레', '카메룬', '카보베르데',
'카자흐스탄', '카타르', '캄보디아', '캐나다', '케냐', '코모로', '코스타리카', '코트디부아르',
'콜롬비아', '콩고 공화국', '콩고 민주 공화국', '쿠바', '쿠웨이트', '크로아티아',
'키르기스스탄', '키리바시', '키프로스', '타이', '타지키스탄', '탄자니아', '터키',
'토고', '통가', '투르크메니스탄', '투발루', '튀니지', '트리니다드 토바고', '파나마',
'파라과이', '파키스탄', '파푸아 뉴기니', '팔라우', '페루', '포르투갈', '폴란드', '프랑스',
'피지', '핀란드', '필리핀', '헝가리'
)
city_formats = (
'{{last_name}}{{last_name}}{{city_suffix}}',
'{{first_name}}{{last_name}}{{last_name}}{{city_suffix}}'
)
street_name_formats = (
'{{last_name}}{{last_name}}{{last_name}}{{city_suffix}}',
'{{last_name}}{{last_name}}{{last_name}}{{street_suffix}}',
'{{first_name}}{{last_name}}{{last_name}}{{street_suffix}}',
'{{last_name}}{{last_name}}{{street_suffix}}'
)
street_address_formats = (
'{{street_name}} {{building_number}}',
'{{street_name}} {{building_number}} {{secondary_address}}'
)
address_formats = (
"{{state}} {{city}} {{street_address}} ({{postcode}})",
"{{state}} {{city}} \n {{street_address}} {{postcode}}"
)
secondary_address_formats = ('###동 ###호', '#-#', '###', '###-#', '##-#')
@classmethod
def state(cls):
return cls.random_element(cls.states)
@classmethod
def secondary_address(cls):
return cls.numerify(cls.random_element(cls.secondary_address_formats))

View file

@ -1,169 +0,0 @@
# coding=utf-8
from __future__ import unicode_literals
from . import BaseProvider
class Provider(BaseProvider):
word_list = (
'alias', 'consequatur', 'aut', 'perferendis', 'sit', 'voluptatem',
'accusantium', 'doloremque', 'aperiam', 'eaque', 'ipsa', 'quae', 'ab',
'illo', 'inventore', 'veritatis', 'et', 'quasi', 'architecto',
'beatae', 'vitae', 'dicta', 'sunt', 'explicabo', 'aspernatur', 'aut',
'odit', 'aut', 'fugit', 'sed', 'quia', 'consequuntur', 'magni',
'dolores', 'eos', 'qui', 'ratione', 'voluptatem', 'sequi', 'nesciunt',
'neque', 'dolorem', 'ipsum', 'quia', 'dolor', 'sit', 'amet',
'consectetur', 'adipisci', 'velit', 'sed', 'quia', 'non', 'numquam',
'eius', 'modi', 'tempora', 'incidunt', 'ut', 'labore', 'et', 'dolore',
'magnam', 'aliquam', 'quaerat', 'voluptatem', 'ut', 'enim', 'ad',
'minima', 'veniam', 'quis', 'nostrum', 'exercitationem', 'ullam',
'corporis', 'nemo', 'enim', 'ipsam', 'voluptatem', 'quia', 'voluptas',
'sit', 'suscipit', 'laboriosam', 'nisi', 'ut', 'aliquid', 'ex', 'ea',
'commodi', 'consequatur', 'quis', 'autem', 'vel', 'eum', 'iure',
'reprehenderit', 'qui', 'in', 'ea', 'voluptate', 'velit', 'esse',
'quam', 'nihil', 'molestiae', 'et', 'iusto', 'odio', 'dignissimos',
'ducimus', 'qui', 'blanditiis', 'praesentium', 'laudantium', 'totam',
'rem', 'voluptatum', 'deleniti', 'atque', 'corrupti', 'quos',
'dolores', 'et', 'quas', 'molestias', 'excepturi', 'sint',
'occaecati', 'cupiditate', 'non', 'provident', 'sed', 'ut',
'perspiciatis', 'unde', 'omnis', 'iste', 'natus', 'error',
'similique', 'sunt', 'in', 'culpa', 'qui', 'officia', 'deserunt',
'mollitia', 'animi', 'id', 'est', 'laborum', 'et', 'dolorum', 'fuga',
'et', 'harum', 'quidem', 'rerum', 'facilis', 'est', 'et', 'expedita',
'distinctio', 'nam', 'libero', 'tempore', 'cum', 'soluta', 'nobis',
'est', 'eligendi', 'optio', 'cumque', 'nihil', 'impedit', 'quo',
'porro', 'quisquam', 'est', 'qui', 'minus', 'id', 'quod', 'maxime',
'placeat', 'facere', 'possimus', 'omnis', 'voluptas', 'assumenda',
'est', 'omnis', 'dolor', 'repellendus', 'temporibus', 'autem',
'quibusdam', 'et', 'aut', 'consequatur', 'vel', 'illum', 'qui',
'dolorem', 'eum', 'fugiat', 'quo', 'voluptas', 'nulla', 'pariatur',
'at', 'vero', 'eos', 'et', 'accusamus', 'officiis', 'debitis', 'aut',
'rerum', 'necessitatibus', 'saepe', 'eveniet', 'ut', 'et',
'voluptates', 'repudiandae', 'sint', 'et', 'molestiae', 'non',
'recusandae', 'itaque', 'earum', 'rerum', 'hic', 'tenetur', 'a',
'sapiente', 'delectus', 'ut', 'aut', 'reiciendis', 'voluptatibus',
'maiores', 'doloribus', 'asperiores', 'repellat'
)
@classmethod
def word(cls):
"""
:example 'Lorem'
"""
return cls.random_element(cls.word_list)
@classmethod
def words(cls, nb=3):
"""
Generate an array of random words
:example array('Lorem', 'ipsum', 'dolor')
:param nb how many words to return
"""
return [cls.word() for _ in range(0, nb)]
@classmethod
def sentence(cls, nb_words=6, variable_nb_words=True):
"""
Generate a random sentence
:example 'Lorem ipsum dolor sit amet.'
:param nb_words around how many words the sentence should contain
:param variable_nb_words set to false if you want exactly $nbWords returned,
otherwise $nbWords may vary by +/-40% with a minimum of 1
"""
if nb_words <= 0:
return ''
if variable_nb_words:
nb_words = cls.randomize_nb_elements(nb_words)
words = cls.words(nb_words)
words[0] = words[0].title()
return " ".join(words) + '.'
@classmethod
def sentences(cls, nb=3):
"""
Generate an array of sentences
:example array('Lorem ipsum dolor sit amet.', 'Consectetur adipisicing eli.')
:param nb how many sentences to return
:return list
"""
return [cls.sentence() for _ in range(0, nb)]
@classmethod
def paragraph(cls, nb_sentences=3, variable_nb_sentences=True):
"""
Generate a single paragraph
:example 'Sapiente sunt omnis. Ut pariatur ad autem ducimus et. Voluptas rem voluptas sint modi dolorem amet.'
:param nb_sentences around how many sentences the paragraph should contain
:param variable_nb_sentences set to false if you want exactly $nbSentences returned,
otherwise $nbSentences may vary by +/-40% with a minimum of 1
:return string
"""
if nb_sentences <= 0:
return ''
if variable_nb_sentences:
nb_sentences = cls.randomize_nb_elements(nb_sentences)
return " ".join(cls.sentences(nb_sentences))
@classmethod
def paragraphs(cls, nb=3):
"""
Generate an array of paragraphs
:example array($paragraph1, $paragraph2, $paragraph3)
:param nb how many paragraphs to return
:return array
"""
return [cls.paragraph() for _ in range(0, nb)]
@classmethod
def text(cls, max_nb_chars=200):
"""
Generate a text string.
Depending on the $maxNbChars, returns a string made of words, sentences, or paragraphs.
:example 'Sapiente sunt omnis. Ut pariatur ad autem ducimus et. Voluptas rem voluptas sint modi dolorem amet.'
:param max_nb_chars Maximum number of characters the text should contain (minimum 5)
:return string
"""
text = []
if max_nb_chars < 5:
raise ValueError('text() can only generate text of at least 5 characters')
if max_nb_chars < 25:
# join words
while not text:
size = 0
# determine how many words are needed to reach the $max_nb_chars once;
while size < max_nb_chars:
word = (' ' if size else '') + cls.word()
text.append(word)
size += len(word)
text.pop()
text[0] = text[0][0].upper() + text[0][1:]
last_index = len(text) - 1
text[last_index] += '.'
elif max_nb_chars < 100:
# join sentences
while not text:
size = 0
# determine how many sentences are needed to reach the $max_nb_chars once
while size < max_nb_chars:
sentence = (' ' if size else '') + cls.sentence()
text.append(sentence)
size += len(sentence)
text.pop()
else:
# join paragraphs
while not text:
size = 0
# determine how many paragraphs are needed to reach the $max_nb_chars once
while size < max_nb_chars:
paragraph = ('\n' if size else '') + cls.paragraph()
text.append(paragraph)
size += len(paragraph)
text.pop()
return "".join(text)

View file

@ -1,91 +0,0 @@
# coding=utf-8
from __future__ import unicode_literals
from . import BaseProvider
from . import date_time
import random
import hashlib
import string
class Provider(BaseProvider):
language_codes = ('cn', 'de', 'el', 'en', 'es', 'fr', 'it', 'pt', 'ru')
@classmethod
def boolean(cls, chance_of_getting_true=50):
return random.randint(1, 100) <= chance_of_getting_true
@classmethod
def null_boolean(cls):
return {
0: None,
1: True,
-1: False
}[random.randint(-1, 1)]
@classmethod
def md5(cls, raw_output=False):
"""
Calculates the md5 hash of a given string
:example 'cfcd208495d565ef66e7dff9f98764da'
"""
res = hashlib.md5(str(random.random()).encode('utf-8'))
if raw_output:
return res.digest()
return res.hexdigest()
@classmethod
def sha1(cls, raw_output=False):
"""
Calculates the sha1 hash of a given string
:example 'b5d86317c2a144cd04d0d7c03b2b02666fafadf2'
"""
res = hashlib.sha1(str(random.random()).encode('utf-8'))
if raw_output:
return res.digest()
return res.hexdigest()
@classmethod
def sha256(cls, raw_output=False):
"""
Calculates the sha256 hash of a given string
:example '85086017559ccc40638fcde2fecaf295e0de7ca51b7517b6aebeaaf75b4d4654'
"""
res = hashlib.sha256(str(random.random()).encode('utf-8'))
if raw_output:
return res.digest()
return res.hexdigest()
def locale(self):
return self.language_code() + '_' + self.country_code()
@classmethod
def country_code(cls):
return cls.random_element(date_time.Provider.countries)['code']
@classmethod
def language_code(cls):
return cls.random_element(cls.language_codes)
@classmethod
def password(cls,length=10, special_chars=True, digits=True, upper_case=True, lower_case=True):
"""
Generates a random password.
@param length: Integer. Length of a password
@param special_chars: Boolean. Whether to use special characters !@#$%^&*()_+
@param digits: Boolean. Whether to use digits
@param upper_case: Boolean. Whether to use upper letters
@param lower_case: Boolean. Whether to use lower letters
@return: String. Random password
"""
chars = ""
if special_chars:
chars += "!@#$%^&*()_+"
if digits:
chars += string.digits
if upper_case:
chars += string.ascii_uppercase
if lower_case:
chars += string.ascii_lowercase
return ''.join(random.choice(chars) for x in range(length))

View file

@ -1,4 +0,0 @@
# coding=utf-8
# module provided just for backward compatibility
from .misc import *

View file

@ -1 +0,0 @@
# coding=utf-8

View file

@ -1,37 +0,0 @@
# coding=utf-8
from __future__ import unicode_literals
from ..internet import Provider as InternetProvider
import re
class Provider(InternetProvider):
tlds = ('com', 'com', 'com', 'net', 'org', 'no', 'no', 'no', 'no', 'no')
@staticmethod
def _to_ascii(string):
replacements = (
('æ', 'ae'), ('Æ', 'Ae'),
('ø', 'oe'), ('Ø', 'Oe'),
('å', 'aa'), ('Å', 'Aa'),
('ä', 'ae'), ('Ä', 'Ae'),
('ö', 'oe'), ('Ö', 'Oe'),
('ü', 'ue'), ('Ü', 'Ue'),
)
for search, replace in replacements:
string = string.replace(search, replace)
return string
def user_name(self):
pattern = self.random_element(self.user_name_formats)
return self._to_ascii(
self.bothify(self.generator.parse(pattern)
).lower())
def domain_word(self):
company = self.generator.format('company')
company_elements = company.split(' ')
company = self._to_ascii(company_elements.pop(0))
return re.sub(r'\W', '', company).lower()

View file

@ -1,27 +0,0 @@
# coding=utf-8
from __future__ import unicode_literals
from . import BaseProvider
class Provider(BaseProvider):
formats = ['{{first_name}} {{last_name}}', ]
first_names = ['John', 'Jane']
last_names = ['Doe', ]
def name(self):
"""
:example 'John Doe'
"""
pattern = self.random_element(self.formats)
return self.generator.parse(pattern)
@classmethod
def first_name(cls):
return cls.random_element(cls.first_names)
@classmethod
def last_name(cls):
return cls.random_element(cls.last_names)

View file

@ -1,12 +0,0 @@
# coding=utf-8
from __future__ import unicode_literals
from . import BaseProvider
class Provider(BaseProvider):
formats = ('###-###-###',)
@classmethod
def phone_number(cls):
return cls.numerify(cls.random_element(cls.formats))

View file

@ -1,621 +0,0 @@
# coding=utf-8
from __future__ import unicode_literals
from ..address import Provider as AddressProvider
class Provider(AddressProvider):
cities = (
'Warszawa',
'Kraków',
'Łódź',
'Wrocław',
'Poznań',
'Gdańsk',
'Szczecin',
'Bydgoszcz',
'Lublin',
'Katowice',
'Białystok',
'Gdynia',
'Częstochowa',
'Radom',
'Sosnowiec',
'Toruń',
'Kielce',
'Gliwice',
'Rzeszów',
'Zabrze',
'Bytom',
'Olsztyn',
'Bielsko-Biała',
'Ruda Śląska',
'Rybnik',
'Tychy',
'Dąbrowa Górnicza',
'Gorzów Wielkopolski',
'Elbląg',
'Płock',
'Opole',
'Wałbrzych',
'Zielona Góra',
'Włocławek',
'Tarnów',
'Chorzów',
'Koszalin',
'Kalisz',
'Legnica',
'Grudziądz',
'Słupsk',
'Jaworzno',
'Jastrzębie-Zdrój',
'Nowy Sącz',
'Jelenia Góra',
'Konin',
'Piotrków Trybunalski',
'Siedlce',
'Inowrocław',
'Mysłowice',
'Piła',
'Lubin',
'Ostrów Wielkopolski',
'Ostrowiec Świętokrzyski',
'Gniezno',
'Stargard Szczeciński',
'Siemianowice Śląskie',
'Suwałki',
'Głogów',
'Pabianice',
'Chełm',
'Zamość',
'Tomaszów Mazowiecki',
'Leszno',
'Przemyśl',
'Stalowa Wola',
'Kędzierzyn-Koźle',
'Łomża',
'Żory',
'Mielec',
'Tarnowskie Góry',
'Tczew',
'Bełchatów',
'Świdnica',
'Ełk',
'Pruszków',
'Będzin',
'Biała Podlaska',
'Zgierz',
'Piekary Śląskie',
'Racibórz',
'Legionowo',
'Ostrołęka',
'Świętochłowice',
'Starachowice',
'Zawiercie',
'Wejherowo',
'Puławy',
'Wodzisław Śląski',
'Starogard Gdański',
'Skierniewice',
'Tarnobrzeg',
'Skarżysko-Kamienna',
'Radomsko',
'Krosno',
'Rumia',
'Dębica',
'Kołobrzeg',
'Kutno',
'Nysa',
'Ciechanów',
'Otwock',
'Piaseczno',
'Zduńska Wola',
'Sieradz',
'Świnoujście',
'Żyrardów',
'Szczecinek',
'Świdnik',
'Chojnice',
'Nowa Sól',
'Oświęcim',
'Bolesławiec',
'Mińsk Mazowiecki',
'Mikołów',
'Jarosław',
'Sanok',
'Knurów',
'Malbork',
'Żary',
'Kwidzyn',
'Chrzanów',
'Sopot',
'Sochaczew',
'Wołomin',
'Oleśnica',
'Brzeg',
'Olkusz',
'Jasło',
'Cieszyn',
'Kraśnik',
'Lębork',
'Czechowice-Dziedzice',
'Dzierżoniów',
'Ostróda',
'Police',
'Nowy Targ',
'Iława',
'Czeladź',
'Myszków',
'Żywiec',
'Zgorzelec',
'Oława',
'Bielawa',
'Swarzędz',
'Mława',
'Ząbki',
'Łuków',
'Augustów',
'Śrem',
'Bochnia',
'Luboń',
'Giżycko',
'Grodzisk Mazowiecki',
'Łowicz',
'Krotoszyn',
'Września',
'Turek',
'Pruszcz Gdański',
'Brodnica',
'Gorlice',
'Czerwionka-Leszczyny',
'Kłodzko',
'Marki',
'Nowy Dwór Mazowiecki',
'Kętrzyn',
'Zakopane',
'Wyszków',
'Biłgoraj',
'Żagań',
'Bielsk Podlaski',
'Świecie',
'Wałcz',
'Jarocin',
'Pszczyna',
'Wągrowiec',
'Szczytno',
'Białogard',
'Sandomierz',
'Bartoszyce',
'Kluczbork',
'Lubliniec',
'Skawina',
'Jawor',
'Kościan',
'Wieluń',
'Kościerzyna',
'Nowa Ruda',
'Świebodzice',
'Koło',
'Piastów',
'Goleniów',
'Ostrów Mazowiecka',
'Polkowice',
'Lubartów',
'Zambrów',
'Płońsk',
'Reda',
'Łaziska Górne',
'Środa Wielkopolska'
)
streets = (
'Polna',
'Lesna',
'Sloneczna',
'Krótka',
'Szkolna',
'Ogrodowa',
'Lipowa',
'Brzozowa',
'Lakowa',
'Kwiatowa',
'Sosnowa',
'Koscielna',
'Akacjowa',
'Parkowa',
'Zielona',
'Kolejowa',
'Sportowa',
'Debowa',
'Kosciuszki',
'Maja',
'Mickiewicza',
'Cicha',
'Spokojna',
'Klonowa',
'Spacerowa',
'Swierkowa',
'Kasztanowa',
'Nowa',
'Piaskowa',
'Sienkiewicza',
'Rózana',
'Topolowa',
'Wisniowa',
'Dworcowa',
'Wiejska',
'Graniczna',
'Slowackiego',
'Dluga',
'Wrzosowa',
'Konopnickiej',
'Boczna',
'Waska',
'Wierzbowa',
'Jasminowa',
'Wspólna',
'Modrzewiowa',
'Kopernika',
'Jana Pawla II',
'Poprzeczna',
'Wesola',
'Pogodna',
'Zeromskiego',
'Rynek',
'Bukowa',
'Wojska Polskiego',
'Sadowa',
'Górna',
'Jodlowa',
'Wolnosci',
'Glówna',
'Mlynska',
'Strazacka',
'Prusa',
'Jesionowa',
'Przemyslowa',
'Osiedlowa',
'Wiosenna',
'Sikorskiego',
'Chopina',
'Poludniowa',
'Malinowa',
'Stawowa',
'Reymonta',
'Pilsudskiego',
'Zacisze',
'Cmentarna',
'Okrezna',
'Kochanowskiego',
'Armii Krajowej',
'Mila',
'Jasna',
'Wodna',
'Zamkowa',
'Witosa',
'Reja',
'Warszawska',
'Miodowa',
'Partyzantów',
'Krzywa',
'Kilinskiego',
'Dolna',
'Podgórna',
'Kreta',
'Jarzebinowa',
'Moniuszki',
'Targowa',
'Prosta',
'Orzeszkowej',
'Spóldzielcza',
'Jagodowa',
'Dzialkowa',
'Staszica',
'Orzechowa',
'Rzemieslnicza',
'Rzeczna',
'Boleslawa Chrobrego',
'Fabryczna',
'Teczowa',
'Chabrowa',
'Poziomkowa',
'Konwaliowa',
'Wyszynskiego',
'Kalinowa',
'Pólnocna',
'Matejki',
'Grunwaldzka',
'Cisowa',
'Nadrzeczna',
'Pocztowa',
'Zachodnia',
'Dabrowskiego',
'Grabowa',
'Norwida',
'Zródlana',
'Asnyka',
'Gajowa',
'Paderewskiego',
'Listopada',
'Wyspianskiego',
'Mostowa',
'Broniewskiego',
'Tuwima',
'Wschodnia',
'Jaworowa',
'Poznanska',
'Makowa',
'Bema',
'Jeziorna',
'Piekna',
'Czeresniowa',
'Mala',
'Krakowska',
'Radosna',
'Leszczynowa',
'Traugutta',
'Jadwigi',
'Rolna',
'Wyzwolenia',
'Piastowska',
'Grzybowa',
'Krasickiego',
'Podlesna',
'Zytnia',
'Zlota',
'Bursztynowa',
'Zwirowa',
'Stycznia',
'Widokowa',
'Kazimierza Wielkiego',
'Kamienna',
'Jalowcowa',
'Morelowa',
'Mieszka I',
'Mysliwska',
'Laczna',
'Szpitalna',
'Wczasowa',
'Zurawia',
'Fiolkowa',
'Glowackiego',
'Rolnicza',
'Tulipanowa',
'Wladyslawa Jagielly',
'Dworska',
'Letnia',
'Liliowa',
'Owocowa',
'Pulaskiego',
'Stefana Batorego',
'Harcerska',
'Kollataja',
'Strzelecka',
'Kraszewskiego',
'Wladyslawa Lokietka',
'Zwirki i Wigury',
'Wroclawska',
'Gdanska',
'Turystyczna',
'Niepodleglosci',
'Poniatowskiego',
'Korczaka',
'Rybacka',
'Narutowicza',
'Okrzei',
'Krucza',
'Jagiellonska',
'Swierczewskiego',
'Kasprowicza',
'Szeroka',
'Jana III Sobieskiego',
'Mlynarska',
'Olchowa',
'Powstanców Slaskich',
'Rumiankowa',
'Stroma',
'Starowiejska',
'Mazowiecka',
'Lawendowa',
'Robotnicza',
'Zbozowa',
'Mokra',
'Powstanców Wielkopolskich',
'Towarowa',
'Dobra',
'Srodkowa',
'Willowa',
'Zielna',
'Zdrojowa',
'Opolska',
'Agrestowa',
'Ksiezycowa',
'Zwyciestwa',
'Fredry',
'Letniskowa',
'Andersa',
'Baczynskiego',
'Batalionów Chlopskich',
'Dabrowskiej',
'Orla',
'Sklodowskiej-Curie',
'Blekitna',
'Rubinowa',
'Brzoskwiniowa',
'Urocza',
'Galczynskiego',
'Krasinskiego',
'Pomorska',
'Szymanowskiego',
'Jezynowa',
'Czarnieckiego',
'Nalkowskiej',
'Zaciszna',
'Porzeczkowa',
'Krancowa',
'Jesienna',
'Klasztorna',
'Irysowa',
'Niecala',
'Wybickiego',
'Nadbrzezna',
'Szarych Szeregów',
'Walowa',
'Slowicza',
'Strumykowa',
'Drzymaly',
'Golebia',
'Torowa',
'Cegielniana',
'Cyprysowa',
'Slowianska',
'Diamentowa',
'Warynskiego',
'Czestochowska',
'Dojazdowa',
'Przechodnia',
'Hallera',
'Lubelska',
'Plater',
'Popieluszki',
'Borówkowa',
'Chelmonskiego',
'Daszynskiego',
'Plazowa',
'Tartaczna',
'Jabloniowa',
'Kossaka',
'Skargi',
'Ludowa',
'Sokola',
'Azaliowa',
'Szmaragdowa',
'Lipca',
'Staffa',
'Tysiaclecia',
'Brzechwy',
'Jastrzebia',
'Kusocinskiego',
'Storczykowa',
'Wilcza',
'Górnicza',
'Szafirowa',
'Dlugosza',
'Handlowa',
'Krokusowa',
'Skladowa',
'Widok',
'Perlowa',
'Skosna',
'Wypoczynkowa',
'Chmielna',
'Jaskólcza',
'Nowowiejska',
'Piwna',
'Slaska',
'Zaulek',
'Glogowa',
'Górska',
'Truskawkowa',
'Kaszubska',
'Kosynierów',
'Mazurska',
'Srebrna',
'Bociania',
'Ptasia',
'Cedrowa',
'Rycerska',
'Wieniawskiego',
'Zabia',
'Torunska',
'Podmiejska',
'Slonecznikowa',
'Sowia',
'Stolarska',
'Powstanców',
'Sucharskiego',
'Boleslawa Krzywoustego',
'Konarskiego',
'Szczesliwa',
'Lazurowa',
'Miarki',
'Narcyzowa',
'Browarna',
'Konstytucji 3 Maja',
'Majowa',
'Milosza',
'Malczewskiego',
'Orkana',
'Skrajna',
'Bankowa',
'Bydgoska',
'Piekarska',
'Zeglarska',
'Jana',
'Turkusowa',
'Tylna',
'Wysoka',
'Zakatek',
'Maczka',
'Morska',
'Rataja',
'Szewska',
'Podwale',
'Palacowa',
'Magnoliowa',
'Ceglana',
'Sawickiej',
'Sciegiennego',
'Wiklinowa',
'Zakole',
'Borowa',
'Kolorowa',
'Lisia',
'Lotnicza',
'Sarnia',
'Wiazowa',
'Grottgera',
'Kolonia',
'Królewska',
'Promienna',
'Daleka',
'Jana Sobieskiego',
'Rejtana',
'Wiatraczna',
'Kaliska',
'Lanowa',
'Srednia',
'Wislana',
'Wróblewskiego',
'Koralowa',
'Kruczkowskiego',
'Lelewela',
'Makuszynskiego',
'Sybiraków',
'Kowalska',
'Morcinka',
'Odrzanska',
'Okulickiego',
'Solidarnosci',
'Zapolskiej',
'Labedzia',
'Wojciecha',
'Baltycka',
'Lwowska',
'Rajska',
'Korfantego',
'Pszenna',
'Ciasna',
'Floriana',
'Hutnicza',
'Kielecka'
)
postcode_formats = ('##-###',)
@classmethod
def street_name(cls):
return cls.random_element(cls.streets)
@classmethod
def city(cls):
return cls.random_element(cls.cities)

View file

@ -1,12 +0,0 @@
from __future__ import unicode_literals
from ..phone_number import Provider as PhoneNumberProvider
class Provider(PhoneNumberProvider):
formats = (
'+48 5## ### ###',
'+48 6## ### ###',
'+48 7## ### ###',
'+48 8## ### ###',
'+48 ## ### ## ##',
)

View file

@ -1,52 +0,0 @@
# coding=utf-8
from . import BaseProvider
from .. import Generator
import itertools
class Provider(BaseProvider):
"""
This provider is a collection of functions to generate personal profiles and identities.
"""
def simple_profile(self):
"""
Generates a basic profile with personal informations
"""
return {"username":self.generator.user_name(),
"name":self.generator.name(),
"sex": self.random_element(["M","F"]),
"address":self.generator.address(),
"mail":self.generator.free_email(),
#"password":self.generator.password()
"birthdate":self.generator.date(),
}
def profile(self,fields=[]):
"""
Generates a complete profile.
If "fields" is not empty, only the fields in the list will be returned
"""
d={
"job":self.generator.job(),
"company":self.generator.company(),
"ssn":self.generator.ssn(),
"residence":self.generator.address(),
"current_location":(self.generator.latitude(),self.generator.longitude()),
"blood_group":"".join(self.random_element(list(itertools.product(["A","B","AB","0"],["+","-"]))))
}
d["website"]=[self.generator.url() for i in range(1,self.random_int(2,5))]
d= dict(d,**self.generator.simple_profile())
#field selection
if len(fields)>0:
d=dict((k,v) for (k,v) in d.items() if k in fields)
return d

View file

@ -1 +0,0 @@

View file

@ -1,70 +0,0 @@
# coding=utf-8
from __future__ import unicode_literals
from ..person import Provider as PersonProvider
class Provider(PersonProvider):
formats = (
'{{first_name}} {{last_name}}',
'{{first_name}} {{last_name}}',
'{{first_name}} {{last_name}}',
'{{first_name}} {{last_name}}',
'{{first_name}} {{last_name}}',
'{{first_name}} {{last_name}}',
'{{first_name}} {{last_name}}',
'{{first_name}} {{prefix}} {{last_name}}',
'{{first_name}} {{last_name}}-{{last_name}}',
'{{first_name}}-{{first_name}} {{last_name}}',
)
first_names = (
'Sofia', 'Julia', 'Isabella', 'Alice', 'Manuela', 'Maria Eduarda', 'Giovanna', 'Laura', 'Luiza', 'Beatriz',
'Mariana',
'Ana Clara', 'Maria Clara', 'Maria Luiza', 'Yasmin', 'Rafaela', 'Gabriela', 'Isabelly', 'Ana Julia',
'Valentina',
'Letícia', 'Lara', 'Ana Luiza', 'Lorena', 'Helena', 'Nicole', 'Isadora', 'Lívia', 'Sarah', 'Marina',
'Ana Beatriz',
'Melissa', 'Heloísa', 'Vitória', 'Cecília', 'Emanuelly', 'Lavínia', 'Maria Fernanda', 'Amanda', 'Gabrielly',
'Larissa', 'Bianca', 'Esther', 'Clara', 'Rebeca', 'Eduarda', 'Alícia', 'Carolina', 'Emilly', 'Maria Julia',
'Fernanda',
'Pietra', 'Milena', 'Ana Laura', 'Catarina', 'Maria Alice', 'Ana Carolina', 'Agatha', 'Natália', 'Laís',
'Elisa',
'Camila', 'Maria Vitória', 'Luana', 'Olivia', 'Mirella', 'Maria', 'Maria Cecília', 'Marcela', 'Ana Sophia',
'Kamilly', 'Joana', 'Eloah', 'Stella', 'Sophie', 'Maria Sophia', 'Bruna', 'Juliana', 'Bárbara', 'Maitê',
'Clarice',
'Ana Vitória', 'Caroline', 'Ana', 'Ana Lívia', 'Evelyn', 'Luna', 'Stephany', 'Isabel', 'Alexia', 'Mariane',
'Brenda',
'Alana', 'Maysa', 'Raquel', 'Nina', 'Sabrina', 'Emanuella', 'Daniela', 'Miguel', 'Arthur', 'Davi', 'Gabriel',
'Lucas', 'Matheus', 'Pedro', 'Guilherme', 'Enzo', 'Rafael', 'Bernardo', 'Gustavo', 'Nicolas', 'Felipe',
'Pedro Henrique',
'João Pedro', 'Henrique', 'Samuel', 'Cauã', 'Eduardo', 'Vitor', 'Heitor', 'Murilo', 'Daniel', 'Pietro',
'João Vitor',
'Vinicius', 'Leonardo', 'Caio', 'Lorenzo', 'Thiago', 'Lucca', 'Isaac', 'Theo', 'Enzo Gabriel', 'João',
'João Gabriel',
'Emanuel', 'Yuri', 'Bryan', 'Luiz Felipe', 'Ryan', 'Joaquim', 'Antonio', 'Carlos Eduardo', 'Bruno',
'Davi Lucas',
'João Guilherme', 'Erick', 'Calebe', 'Benjamin', 'Vitor Hugo', 'Rodrigo', 'Ian', 'Fernando', 'Otávio', 'Breno',
'Igor', 'Francisco', 'Thomas', 'André', 'Juan', 'Luiz Gustavo', 'Augusto', 'Kaique', 'Nathan', 'João Miguel',
'João Lucas',
'Pedro Lucas', 'Raul', 'Luiz Miguel', 'Cauê', 'Luiz Henrique', 'Benício', 'Anthony', 'Vitor Gabriel', 'Yago',
'Marcelo', 'Luiz Otávio', 'Renan', 'Alexandre', 'Levi', 'Danilo', 'Thales', 'Lucas Gabriel', 'Diogo',
'Davi Lucca',
'Paulo', 'Enrico', 'Diego', 'Vicente', 'Marcos Vinicius', 'Luiz Fernando', 'Pedro Miguel', 'Gustavo Henrique',
'Leandro',
'Noah', 'Kevin', 'João Felipe', 'Luigi',
)
last_names = (
'Silva', 'Santos', 'Oliveira', 'Souza', 'Pereira', 'Costela', 'Carvalho', 'Almeida', 'Ferreira', 'Ribeiro',
'Rodrigues',
'Gomes', 'Lima', 'Martins', 'Rocha', 'Alves', 'Araújo', 'Pinto', 'Barbosa', 'Castro', 'Fernandes', 'Melo',
'Azevedo',
'Barros', 'Cardoso', 'Correia', 'Cunha', 'Dias'
)
prefixes = ('de', 'da', 'do')
@classmethod
def prefix(cls):
return cls.random_element(cls.prefixes)

View file

@ -1 +0,0 @@

View file

@ -1,46 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from ..lorem import Provider as LoremProvider
class Provider(LoremProvider):
word_list = (
'алььтыра', 'дэлььынётё', 'вэртырэм', 'вэрыар', 'ты', 'рэгяонэ',
'црял', 'квюальизквюэ', 'квюоджё', 'зюаз', 'конгуы', 'антеопам',
'прё', 'этёам', 'форынчйбюж', 'альиквуандо', 'зэнтынтиаэ', 'хёз',
'адепйжкйнг', 'ыюм', 'льаборэж', 'вим', 'фабулаз', 'нэ', 'толлйт',
'эож', 'ажжюм', 'лыгимуз', 'пэртинакёа', 'видишчы', 'рэпудёандаэ',
'еюж', 'бонорюм', 'про', 'но', 'анкилльаы', 'доктюж', 'адипижкй',
'зигнёфэрумквюы', 'дэлььиката', 'мютат', 'амэт', 'едквюэ', 'апыирёан',
'мэя', 'латины', 'ед', 'дытракжйт', 'констятюам', 'ку', 'дольор',
'игнота', 'льаорыыт', 'хэндрэрет', 'магна', 'мэль', 'дыфяниэбаж',
'дэльэнйт', 'агам', 'эффикеэнди', 'дикунт', 'хабэо', 'ыт', 'ёужто',
'долорэж', 'ипзум', 'аппэтырэ', 'ючю', 'брутэ', 'долорэм',
'интылльэгэбат', 'вёжи', 'эвэртё', 'татион', 'зймюл', 'эи',
'юрбанйтаж', 'кибо', 'прима', 'ад', 'попюльо', 'вирйз', 'незл',
'тальэ', 'ан', 'жолюм', 'лебыр', 'эюрйпйдяч', 'вёртюты', 'зыд',
'пауло', 'омныз', 'хонэзтатёз', 'тебиквюэ', 'шэа', 'оффекйяж', 'ат',
'рыквюы', 'декат', 'торквюатоз', 'дюиж', 'номинатй', 'жкаывола',
'ведят', 'аккузата', 'пхйложопхяа', 'аппарэат', 'порро', 'эю',
'эрюдитя', 'адмодум', 'эррорибуз', 'чэнзэрет', 'мэльёуз', 'бландит',
'молыжтйаы', 'пошжим', 'тамквюам', 'ажжынтиор', 'вяш', 'ывыртятюр',
'эпикюре', 'квуёдам', 'граэкйж', 'конжтетуто', 'такематыш', 'мацим',
'шынчебюз', 'витюпэраторебуз', 'дытыррюизщэт', 'граэко', 'граэки',
'щуавятатэ', 'пырикульа', 'квюандо', 'факёльиси', 'дычэрунт', 'кюм',
'аккюжамюз', 'омнэжквюы', 'экз', 'индоктум', 'рэктэквуэ', 'дектаж',
'фюгит', 'хабымуч', 'фалля', 'нонумй', 'апэриам', 'июварыт', 'квуй',
'мыис', 'дежпютатионй', 'мыдиокрым', 'ылоквюэнтиам', 'нюлльам', 'ут',
'аугюэ', 'ыам', 'фырре', 'азжюывырит', 'квуым', 'йн', 'ножтро',
'зючкёпит', 'конкыптам', 'майыжтатйж', 'дуо', 'ыт', 'элыктрам',
'ёнэрмйщ', 'ыпикурэи', 'ыёюз', 'инимёкюж', 'шапэрэт', 'выро',
'либриз', 'кевёбюж', 'эа', 'коммюны', 'лэгыры', 'рыпрэхэндунт',
'дёзсэнтёаш', 'лаборамюз', 'элитр', 'чадипжкёнг', 'мёнём', 'нык',
'мыа', 'тота', 'квюот', 'ратионебюж', 'пырфэкто', 'факэр', 'пэрчёус',
'ёнанй', 'кончэтытюр', 'одео', 'зкрипторэм', 'чонэт', 'факилиз',
'жэмпэр', 'атоморюм', 'эжт', 'дылыктуч', 'тинкидюнт', 'аэквюы',
'глориатюр', 'пэркйпет', 'модо', 'жят', 'эзшэ', 'хаж', 'аюдирэ',
'вокынт', 'векж', 'квюоджёныглэгэнтур', 'луптатум', 'мюндй',
'опортэры', 'дэлььякатезшимя', 'квюиж', 'витюпырата', 'вэл',
'ыльигэнди', 'янтэрэсщэт', 'оффэндйт', 'нихйл', 'квюаэчтио', 'пэр',
'квюо', 'пырикюлёз', 'нам', 'атквюе'
)

View file

@ -1,132 +0,0 @@
# coding=utf-8
from __future__ import unicode_literals
from ..person import Provider as PersonProvider
class Provider(PersonProvider):
formats = (
'{{first_name}} {{last_name}}',
'{{first_name}} {{last_name}}',
'{{first_name}} {{last_name}}',
'{{first_name}} {{last_name}}',
'{{first_name}} {{last_name}}',
'{{prefix}} {{first_name}} {{last_name}}',
'{{first_name}} {{last_name}}',
'{{prefix}} {{first_name}} {{last_name}}'
)
first_names = (
'Август', 'Авдей', 'Аверкий', 'Аверьян', 'Авксентий', 'Автоном',
'Агап', 'Агафон', 'Аггей', 'Адам', 'Адриан', 'Азарий',
'Аким', 'Александр', 'Алексей', 'Амвросий', 'Амос', 'Ананий',
'Анатолий', 'Андрей', 'Андрон', 'Андроник', 'Аникей', 'Аникита',
'Анисим', 'Антип', 'Антонин', 'Аполлинарий', 'Аполлон', 'Арефий',
'Аристарх', 'Аркадий', 'Арсений', 'Артемий', 'Артем', 'Архип',
'Аскольд', 'Афанасий', 'Афиноген', 'Бажен', 'Богдан', 'Болеслав',
'Борис', 'Борислав', 'Боян', 'Бронислав', 'Будимир', 'Вадим',
'Валентин', 'Валерий', 'Валерьян', 'Варлаам', 'Варфоломей', 'Василий',
'Вацлав', 'Велимир', 'Венедикт', 'Вениамин', 'Викентий', 'Виктор',
'Викторин', 'Виссарион', 'Виталий', 'Владилен', 'Владлен', 'Владимир',
'Владислав', 'Влас', 'Всеволод', 'Всемил', 'Всеслав', 'Вышеслав',
'Вячеслав', 'Гаврила', 'Галактион', 'Гедеон', 'Геннадий', 'Георгий',
'Герасим', 'Герман', 'Глеб', 'Гордей', 'Гостомысл', 'Гремислав',
'Григорий', 'Гурий', 'Давыд', 'Данила', 'Дементий', 'Демид',
'Демьян', 'Денис', 'Дмитрий', 'Добромысл', 'Доброслав', 'Дорофей',
'Евгений', 'Евграф', 'Евдоким', 'Евлампий', 'Евсей', 'Евстафий',
'Евстигней', 'Егор', 'Елизар', 'Елисей', 'Емельян', 'Епифан',
'Еремей', 'Ермил', 'Ермолай', 'Ерофей', 'Ефим', 'Ефрем',
'Захар', 'Зиновий', 'Зосима', 'Иван', 'Игнатий', 'Игорь',
'Измаил', 'Изот', 'Изяслав', 'Иларион', 'Илья', 'Иннокентий',
'Иосиф', 'Ипат', 'Ипатий', 'Ипполит', 'Ираклий', 'Исай',
'Исидор', 'Казимир', 'Каллистрат', 'Капитон', 'Карл', 'Карп',
'Касьян', 'Ким', 'Кир', 'Кирилл', 'Клавдий', 'Климент',
'Кондрат', 'Кондратий', 'Конон', 'Константин', 'Корнил', 'Кузьма',
'Куприян', 'Лавр', 'Лаврентий', 'Ладимир', 'Ладислав', 'Лазарь',
'Лев', 'Леон', 'Леонид', 'Леонтий', 'Лонгин', 'Лука',
'Лукьян', 'Лучезар', 'Любим', 'Любомир', 'Любосмысл', 'Макар',
'Максим', 'Максимильян', 'Мариан', 'Марк', 'Мартын', 'Мартьян',
'Матвей', 'Мефодий', 'Мечислав', 'Милан', 'Милен', 'Милий',
'Милован', 'Мина', 'Мир', 'Мирон', 'Мирослав', 'Митофан',
'Михаил', 'Михей', 'Модест', 'Моисей', 'Мокей', 'Мстислав',
'Назар', 'Наркис', 'Натан', 'Наум', 'Нестор', 'Никандр',
'Никанор', 'Никита', 'Никифор', 'Никодим', 'Николай', 'Никон',
'Нифонт', 'Олег', 'Олимпий', 'Онуфрий', 'Орест', 'Осип',
'Остап', 'Остромир', 'Павел', 'Панкратий', 'Панкрат', 'Пантелеймон',
'Панфил', 'Парамон', 'Парфен', 'Пахом', 'Петр', 'Пимен',
'Платон', 'Поликарп', 'Порфирий', 'Потап', 'Пров', 'Прокл',
'Прокофий', 'Прохор', 'Радим', 'Радислав', 'Радован', 'Ратибор',
'Ратмир', 'Родион', 'Роман', 'Ростислав', 'Рубен', 'Руслан',
'Рюрик', 'Савва', 'Савватий', 'Савелий', 'Самсон', 'Самуил',
'Светозар', 'Святополк', 'Святослав', 'Севастьян', 'Селиван', 'Селиверст',
'Семен', 'Серафим', 'Сергей', 'Сигизмунд', 'Сидор', 'Сила',
'Силантий', 'Сильвестр', 'Симон', 'Сократ', 'Соломон', 'Софон',
'Софрон', 'Спартак', 'Спиридон', 'Станимир', 'Станислав', 'Степан',
'Стоян', 'Тарас', 'Твердислав', 'Творимир', 'Терентий', 'Тимофей',
'Тимур', 'Тит', 'Тихон', 'Трифон', 'Трофим', 'Ульян',
'Устин', 'Фадей', 'Федор', 'Федосий', 'Федот', 'Феликс',
'Феоктист', 'Феофан', 'Ферапонт', 'Филарет', 'Филимон', 'Филипп',
'Фирс', 'Флорентин', 'Фока', 'Фома', 'Фортунат', 'Фотий',
'Фрол', 'Харитон', 'Харлампий', 'Христофор', 'Чеслав', 'Эдуард',
'Эммануил', 'Эмиль', 'Эраст', 'Эрнест', 'Эрнст', 'Ювеналий',
'Юлиан', 'Юлий', 'Юрий', 'Яков', 'Ян', 'Якуб',
'Януарий', 'Ярополк', 'Ярослав'
)
last_names = (
'Смирнов', 'Иванов', 'Кузнецов', 'Попов', 'Соколов',
'Лебедев', 'Козлов', 'Новиков', 'Морозов', 'Петров',
'Волков', 'Соловьев', 'Васильев', 'Зайцев', 'Павлов',
'Семенов', 'Голубев', 'Виноградов', 'Богданов', 'Воробьев',
'Федоров', 'Михайлов', 'Беляев', 'Тарасов', 'Белов',
'Комаров', 'Орлов', 'Киселев', 'Макаров', 'Андреев',
'Ковалев', 'Ильин', 'Гусев', 'Титов', 'Кузьмин',
'Кудрявцев', 'Баранов', 'Куликов', 'Алексеев', 'Степанов',
'Яковлев', 'Сорокин', 'Сергеев', 'Романов', 'Захаров',
'Борисов', 'Королев', 'Герасимов', 'Пономарев', 'Григорьев',
'Лазарев', 'Медведев', 'Ершов', 'Никитин', 'Соболев',
'Рябов', 'Поляков', 'Цветков', 'Данилов', 'Жуков',
'Фролов', 'Журавлев', 'Николаев', 'Крылов', 'Максимов',
'Сидоров', 'Осипов', 'Белоусов', 'Федотов', 'Дорофеев',
'Егоров', 'Матвеев', 'Бобров', 'Дмитриев', 'Калинин',
'Анисимов', 'Петухов', 'Антонов', 'Тимофеев', 'Никифоров',
'Веселов', 'Филиппов', 'Марков', 'Большаков', 'Суханов',
'Миронов', 'Ширяев', 'Александров', 'Коновалов', 'Шестаков',
'Казаков', 'Ефимов', 'Денисов', 'Громов', 'Фомин',
'Давыдов', 'Мельников', 'Щербаков', 'Блинов', 'Колесников',
'Карпов', 'Афанасьев', 'Власов', 'Маслов', 'Исаков',
'Тихонов', 'Аксенов', 'Гаврилов', 'Родионов', 'Котов',
'Горбунов', 'Кудряшов', 'Быков', 'Зуев', 'Третьяков',
'Савельев', 'Панов', 'Рыбаков', 'Суворов', 'Абрамов',
'Воронов', 'Мухин', 'Архипов', 'Трофимов', 'Мартынов',
'Емельянов', 'Горшков', 'Чернов', 'Овчинников', 'Селезнев',
'Панфилов', 'Копылов', 'Михеев', 'Галкин', 'Назаров',
'Лобанов', 'Лукин', 'Беляков', 'Потапов', 'Некрасов',
'Хохлов', 'Жданов', 'Наумов', 'Шилов', 'Воронцов',
'Ермаков', 'Дроздов', 'Игнатьев', 'Савин', 'Логинов',
'Сафонов', 'Капустин', 'Кириллов', 'Моисеев', 'Елисеев',
'Кошелев', 'Костин', 'Горбачев', 'Орехов', 'Ефремов',
'Исаев', 'Евдокимов', 'Калашников', 'Кабанов', 'Носков',
'Юдин', 'Кулагин', 'Лапин', 'Прохоров', 'Нестеров',
'Харитонов', 'Агафонов', 'Муравьев', 'Ларионов', 'Федосеев',
'Зимин', 'Пахомов', 'Шубин', 'Игнатов', 'Филатов',
'Крюков', 'Рогов', 'Кулаков', 'Терентьев', 'Молчанов',
'Владимиров', 'Артемьев', 'Гурьев', 'Зиновьев', 'Гришин',
'Кононов', 'Дементьев', 'Ситников', 'Симонов', 'Мишин',
'Фадеев', 'Комиссаров', 'Мамонтов', 'Носов', 'Гуляев',
'Шаров', 'Устинов', 'Вишняков', 'Евсеев', 'Лаврентьев',
'Брагин', 'Константинов', 'Корнилов', 'Авдеев', 'Зыков',
'Бирюков', 'Шарапов', 'Никонов', 'Щукин', 'Дьячков',
'Одинцов', 'Сазонов', 'Якушев', 'Красильников', 'Гордеев',
'Самойлов', 'Князев', 'Беспалов', 'Уваров', 'Шашков',
'Бобылев', 'Доронин', 'Белозеров', 'Рожков', 'Самсонов',
'Мясников', 'Лихачев', 'Буров', 'Сысоев', 'Фомичев',
'Русаков', 'Стрелков', 'Гущин', 'Тетерин', 'Колобов',
'Субботин', 'Фокин', 'Блохин', 'Селиверстов', 'Пестов',
'Кондратьев', 'Силин', 'Меркушев', 'Лыткин', 'Туров'
)
prefixes = ('г-н.', 'тов.')
@classmethod
def prefix(cls):
return cls.random_element(cls.prefixes)

View file

@ -1,12 +0,0 @@
# coding=utf-8
from __future__ import unicode_literals
from . import BaseProvider
class Provider(BaseProvider):
ssn_formats = ("###-##-####",)
@classmethod
def ssn(cls):
return cls.bothify(cls.random_element(cls.ssn_formats))

View file

@ -1,175 +0,0 @@
# coding=utf-8
from __future__ import unicode_literals
from . import BaseProvider
from . import date_time
from datetime import datetime
import random
class Provider(BaseProvider):
user_agents = (
'chrome', 'firefox', 'internet_explorer', 'opera', 'safari',
)
windows_platform_tokens = (
'Windows 95', 'Windows 98', 'Windows 98; Win 9x 4.90', 'Windows CE',
'Windows NT 4.0', 'Windows NT 5.0', 'Windows NT 5.01',
'Windows NT 5.1', 'Windows NT 5.2', 'Windows NT 6.0', 'Windows NT 6.1',
'Windows NT 6.2',
)
linux_processors = ('i686', 'x86_64',)
mac_processors = ('Intel', 'PPC', 'U; Intel', 'U; PPC',)
langs = ('en-US', 'sl-SI', 'it-IT',)
@classmethod
def mac_processor(cls):
return cls.random_element(cls.mac_processors)
@classmethod
def linux_processor(cls):
return cls.random_element(cls.linux_processors)
@classmethod
def user_agent(cls):
name = cls.random_element(cls.user_agents)
return getattr(cls, name)()
@classmethod
def chrome(cls):
saf = str(random.randint(531, 536)) + str(random.randint(0, 2))
tmplt = '({0}) AppleWebKit/{1} (KHTML, like Gecko)' \
' Chrome/{2}.0.{3}.0 Safari/{4}'
platforms = (
tmplt.format(cls.linux_platform_token(),
saf,
random.randint(13, 15),
random.randint(800, 899),
saf),
tmplt.format(cls.windows_platform_token(),
saf,
random.randint(13, 15),
random.randint(800, 899),
saf),
tmplt.format(cls.mac_platform_token(),
saf,
random.randint(13, 15),
random.randint(800, 899),
saf),
)
return 'Mozilla/5.0 ' + cls.random_element(platforms)
@classmethod
def firefox(cls):
ver = (
'Gecko/{0} Firefox/{1}.0'.format(
date_time.Provider.date_time_between(
datetime(2011, 1, 1)), random.randint(4, 15)),
'Gecko/{0} Firefox/3.6.{1}'.format(
date_time.Provider.date_time_between(
datetime(2010, 1, 1)), random.randint(1, 20)),
'Gecko/{0} Firefox/3.8'.format(
date_time.Provider.date_time_between(
datetime(2010, 1, 1)), ),
)
tmplt_win = '({0}; {1}; rv:1.9.{2}.20) {3}'
tmplt_lin = '({0}; rv:1.9.{1}.20) {2}'
tmplt_mac = '({0}; rv:1.9.{1}.20) {2}'
platforms = (
tmplt_win.format(cls.windows_platform_token(),
cls.random_element(cls.langs),
random.randint(0, 2),
random.choice(ver)),
tmplt_lin.format(cls.linux_platform_token(),
random.randint(5, 7),
random.choice(ver)),
tmplt_mac.format(cls.mac_platform_token(),
random.randint(2, 6),
random.choice(ver)),
)
return 'Mozilla/5.0 ' + cls.random_element(platforms)
@classmethod
def safari(cls):
saf = "{0}.{1}.{2}".format(random.randint(531, 535),
random.randint(1, 50),
random.randint(1, 7))
if random.randint(0, 1) == 0:
ver = "{0}.{1}".format(random.randint(4, 5),
random.randint(0, 1))
else:
ver = "{0}.0.{1}".format(random.randint(4, 5),
random.randint(1, 5))
tmplt_win = '(Windows; U; {0}) AppleWebKit/{1} (KHTML, like Gecko)' \
' Version/{2} Safari/{3}'
tmplt_mac = '({0} rv:{1}.0; {2}) AppleWebKit/{3} (KHTML, like Gecko)' \
' Version/{4} Safari/{5}'
tmplt_ipod = '(iPod; U; CPU iPhone OS {0}_{1} like Mac OS X; {2})' \
' AppleWebKit/{3} (KHTML, like Gecko) Version/{4}.0.5' \
' Mobile/8B{5} Safari/6{6}'
platforms = (
tmplt_win.format(cls.windows_platform_token(),
saf,
ver,
saf),
tmplt_mac.format(cls.mac_platform_token(),
random.randint(2, 6),
cls.random_element(cls.langs),
saf,
ver,
saf),
tmplt_ipod.format(random.randint(3, 4),
random.randint(0, 3),
cls.random_element(cls.langs),
saf,
random.randint(3, 4),
random.randint(111, 119),
saf),
)
return 'Mozilla/5.0 ' + cls.random_element(platforms)
@classmethod
def opera(cls):
tmplt = '({0}; {1}) Presto/2.9.{2} Version/{3}.00'
platforms = (
tmplt.format(cls.linux_platform_token(),
cls.random_element(cls.langs),
random.randint(160, 190),
random.randint(10, 12)),
tmplt.format(cls.windows_platform_token(),
cls.random_element(cls.langs),
random.randint(160, 190),
random.randint(10, 12)),
)
return 'Opera/{0}.{1}.{2}'.format(random.randint(8, 9),
random.randint(10, 99),
cls.random_element(platforms))
@classmethod
def internet_explorer(cls):
tmplt = 'Mozilla/5.0 (compatible; MSIE {0}.0; {1}; Trident/{2}.{3})'
return tmplt.format(random.randint(5, 9),
cls.windows_platform_token(),
random.randint(3, 5),
random.randint(0, 1))
@classmethod
def windows_platform_token(cls):
return cls.random_element(cls.windows_platform_tokens)
@classmethod
def linux_platform_token(cls):
return 'X11; Linux {0}'.format(
cls.random_element(cls.linux_processors))
@classmethod
def mac_platform_token(cls):
return 'Macintosh; {0} Mac OS X 10_{1}_{2}'.format(
cls.random_element(cls.mac_processors),
random.randint(5, 8), random.randint(0, 9))

View file

@ -1,69 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from ..address import Provider as AddressProvider
class Provider(AddressProvider):
city_suffixes = ["", ]
city_formats = ["{{first_name}}{{city_suffix}}", ]
building_number_formats = ["?座", ]
postcode_formats = ["%#####", ]
street_suffixes = ["", ""]
street_name_formats = ["{{last_name}}{{street_suffix}}", ]
street_address_formats = ["{{street_name}}{{building_number}}", ]
address_formats = ["{{city}}{{street_address}} {{postcode}}", ]
states = ["西夏区", "永川区", "秀英区", "高港区", "清城区", "兴山区",
"锡山区", "清河区", "龙潭区", "华龙区", "海陵区", "滨城区",
"东丽区", "高坪区", "沙湾区", "平山区", "城北区", "海港区",
"沙市区", "双滦区", "长寿区", "山亭区", "南湖区", "浔阳区",
"南长区", "友好区", "安次区", "翔安区", "沈河区", "魏都区",
"西峰区", "萧山区", "金平区", "沈北新区", "孝南区", "上街区",
"城东区", "牧野区", "大东区", "白云区", "花溪区", "吉利区",
"新城区", "怀柔区", "六枝特区", "涪城区", "清浦区", "南溪区",
"淄川区", "高明区"]
cities = ["北京", "上海", "天津", "重庆", "哈尔滨", "长春", "沈阳",
"呼和浩特", "石家庄", "乌鲁木齐", "兰州", "西宁", "西安",
"银川", "郑州", "济南", "太原", "合肥", "武汉", "长沙",
"南京", "成都", "贵阳", "昆明", "南宁", "拉萨", "杭州",
"南昌", "广州", "福州", "台北", "海口", "香港", "澳门"]
countries = ["阿富汗", "阿拉斯加", "阿尔巴尼亚", "阿尔及利亚", "安道尔", "安哥拉", "安圭拉岛英", "安提瓜和巴布达",
"阿根廷", "亚美尼亚", "阿鲁巴岛", "阿森松", "澳大利亚", "奥地利", "阿塞拜疆", "巴林", "孟加拉国",
"巴巴多斯", "白俄罗斯", "比利时", "伯利兹", "贝宁", "百慕大群岛", "不丹", "玻利维亚", "波斯尼亚和黑塞哥维那",
"博茨瓦纳", "巴西", "保加利亚", "布基纳法索", "布隆迪", "喀麦隆", "加拿大", "加那利群岛", "佛得角",
"开曼群岛", "中非", "乍得", "智利", "圣诞岛", "科科斯岛", "哥伦比亚", "巴哈马国", "多米尼克国", "科摩罗",
"刚果", "科克群岛", "哥斯达黎加", "克罗地亚", "古巴", "塞浦路斯", "捷克", "丹麦", "迪戈加西亚岛", "吉布提",
"多米尼加共和国", "厄瓜多尔", "埃及", "萨尔瓦多", "赤道几内亚", "厄立特里亚", "爱沙尼亚", "埃塞俄比亚", "福克兰群岛",
"法罗群岛", "斐济", "芬兰", "法国", "法属圭亚那", "法属波里尼西亚", "加蓬", "冈比亚", "格鲁吉亚", "德国", "加纳",
"直布罗陀", "希腊", "格陵兰岛", "格林纳达", "瓜德罗普岛", "关岛", "危地马拉", "几内亚", "几内亚比绍", "圭亚那",
"海地", "夏威夷", "洪都拉斯", "匈牙利", "冰岛", "印度", "印度尼西亚", "伊郎", "伊拉克", "爱尔兰", "以色列",
"意大利", "科特迪瓦", "牙买加", "日本", "约旦", "柬埔塞", "哈萨克斯坦", "肯尼亚", "基里巴斯", "朝鲜", "韩国",
"科威特", "吉尔吉斯斯坦", "老挝", "拉脱维亚", "黎巴嫩", "莱索托", "利比里亚", "利比亚", "列支敦士登", "立陶宛",
"卢森堡", "马其顿", "马达加斯加", "马拉维", "马来西亚", "马尔代夫", "马里", "马耳他", "马里亚纳群岛", "马绍尔群岛",
"马提尼克", "毛里塔尼亚", "毛里求斯", "马约特岛", "墨西哥", "密克罗尼西亚", "中途岛", "摩尔多瓦", "摩纳哥", "蒙古",
"蒙特塞拉特岛", "摩洛哥", "莫桑比克", "缅甸", "纳米比亚", "瑙鲁", "尼泊尔", "荷兰", "荷属安的列斯群岛", "新喀里多尼亚群岛",
"新西兰", "尼加拉瓜", "尼日尔", "尼日利亚", "纽埃岛", "诺福克岛", "挪威", "阿曼", "帕劳", "巴拿马", "巴布亚新几内亚",
"巴拉圭", "秘鲁", "菲律宾", "波兰", "葡萄牙", "巴基斯坦", "波多黎各", "卡塔尔", "留尼汪岛", "罗马尼亚", "俄罗斯",
"卢旺达", "东萨摩亚", "西萨摩亚", "圣马力诺", "圣皮埃尔岛及密克隆岛", "圣多美和普林西比", "沙特阿拉伯", "塞内加尔",
"塞舌尔", "新加坡", "斯洛伐克", "斯洛文尼亚", "所罗门群岛", "索马里", "南非", "西班牙", "斯里兰卡", "圣克里斯托弗和尼维斯",
"圣赫勒拿", "圣卢西亚", "圣文森特岛", "苏丹", "苏里南", "斯威士兰", "瑞典", "瑞士", "叙利亚", "塔吉克斯坦", "坦桑尼亚",
"泰国", "阿拉伯联合酋长国", "多哥", "托克劳群岛", "汤加", "特立尼达和多巴哥", "突尼斯", "土耳其", "土库曼斯坦",
"特克斯和凯科斯群岛", "图瓦卢", "美国", "乌干达", "乌克兰", "英国", "乌拉圭", "乌兹别克斯坦", "瓦努阿图",
"梵蒂冈", "委内瑞拉", "越南", "维尔京群岛", "维尔京群岛和圣罗克伊", "威克岛", "瓦里斯和富士那群岛", "西撒哈拉",
"也门", "南斯拉夫", "扎伊尔", "赞比亚", "桑给巴尔", "津巴布韦", "中华人民共和国", "中国"]
@classmethod
def building_number(cls):
return cls.lexify(cls.random_element(cls.building_number_formats))
@classmethod
def city_name(cls):
return cls.random_element(cls.cities)
@classmethod
def state(cls):
return cls.random_element(cls.states)

View file

@ -1,52 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from ..person import Provider as PersonProvider
class Provider(PersonProvider):
formats = ["{{last_name}}{{first_name}}", ]
first_names = ["", "", "", "", "", "秀英", "", "", "", "", "", "", "", "", "",
"", "", "", "", "秀兰", "", "", "", "", "", "桂英", "", "", "", "",
"", "玉兰", "", "桂兰", "", "", "", "", "", "", "", "", "", "秀珍", "",
"", "", "", "", "", "", "", "", "玉梅", "", "", "玉珍", "凤英", "", "",
"玉英", "", "红梅", "", "", "", "建华", "", "", "", "兰英", "", "", "", "",
"", "建国", "建军", "", "淑珍", "春梅", "海燕", "", "冬梅", "秀荣", "", "桂珍", "", "秀云",
"桂荣", "志强", "秀梅", "丽娟", "婷婷", "玉华", "", "", "", "", "雪梅", "淑兰", "丽丽", "",
"秀芳", "", "淑英", "桂芳", "", "丽华", "丹丹", "", "桂香", "", "", "淑华", "", "秀华",
"桂芝", "", "", "小红", "金凤", "", "", "", "红霞", "建平", "", "桂花", "", "凤兰"]
last_names = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "羿", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "宿", "", "怀", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "寿", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "广", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "西", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "西", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""]

View file

@ -1,94 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from ..address import Provider as AddressProvider
class Provider(AddressProvider):
city_formats = ("{{city_name}}", )
building_number_formats = ("%", "%#號", "%##號", )
postcode_formats = ("%####", "%##", )
street_name_formats = ("{{street_name}}", )
street_address_formats = ("{{street_name}}{{building_number}}", )
address_formats = ("{{postcode}} {{city}}{{street_address}}", )
secondary_address_formats = ('#樓', '之#')
street_names = ("中正路", "中山路", "民生路", "中華路", "和平路",
"中興路", "仁愛路", "復興路", "民族路", "民權路",
"忠孝路", "信義路", "成功路", "新興路", "忠孝街",
"和平街", "信義街", "仁愛街", "文化路", "大同路",
"三民路", "新生路", "光復路", "自強路", "光明路",
"公園路", "民生街", "文化街", "中興街", "建國路",
"民權街", "自強街", "中山路1段", "中山路2段", "光明街",
"成功街", "永安街", "四維路", "新興街", "民族街",
"福德街", "大同街", "文昌街", "復興街", "博愛街",
"博愛路", "光華街", "太平路", "水源路", "新生街",
"四維街", "大仁街", "中央路", "大智街", "林森路",
"八德路", "長春路", "南街", "福德路", "光華路",
"八德街", "中山路3段", "東興路", "勝利街", "文昌路",
"三民街", "大勇街", "民有街", "自由路", "長安街",
"明德路", "明德街", "光復街", "德街", "忠義路",
"中和路", "自由街", "中正路1段", "永和街", "延平路",
"正義路", "五福街", "華興街", "育英路", "平和路",
"福安街", "中正路2段", "勝利路", "育英街", "興街",
"自立街", "民享街", "大智路", "民治街", "民治路",
"學府路", "中華街", "忠義街", "和街", "民富街",)
cities = ("基隆市", "台北市", "新北市", "桃園縣", "新竹市",
"新竹縣", "苗栗縣", "台中市", "彰化縣", "南投縣",
"雲林縣", "嘉義市", "嘉義縣", "台南市", "高雄市",
"屏東縣", "台東縣", "花蓮縣", "宜蘭縣", "澎湖縣",
"金門縣", "連江縣")
# from
countries = ("阿爾巴尼亞", "剛果共和國", "阿爾及利亞", "丹麥",
"安哥拉", "多明尼加", "安圭拉", "多米尼克",
"阿根廷", "厄瓜多爾", "亞美尼亞", "埃及",
"阿路巴", "薩爾瓦多", "澳大利亞", "厄利垂亞",
"奧地利", "愛沙尼亞", "亞塞拜然", "衣索匹亞",
"巴哈馬", "斐濟", "巴林", "芬蘭", "孟加拉", "法屬玻里尼西亞",
"法國", "巴貝多", "加彭", "白俄羅斯", "喬治亞",
"比利時", "德國", "貝里斯", "迦納", "貝南", "直布羅陀",
"百慕達", "英國", "不丹", "希臘", "玻利維亞", "格瑞那達",
"波希尼亞及赫塞哥維那", "瓜地馬拉", "波札那", "幾內亞",
"巴西", "蓋亞那", "汶萊", "海地", "保加利亞", "宏都拉斯",
"布吉納法索", "香港", "蒲隆地", "匈牙利", "柬埔寨", "冰島",
"喀麥隆", "印度", "加拿大", "印尼", "維德角島", "依朗",
"開曼群島", "伊拉克", "中非共和國", "愛爾蘭", "查德", "以色列",
"智利", "義大利", "中國大陸", "牙買加", "哥倫比亞", "日本",
"剛果", "約旦", "科克群島", "肯亞", "哥斯大黎加", "韓國",
"象牙海岸", "科威特", "克羅埃西亞", "寮國", "塞浦路斯", "拉脫維亞",
"捷克", "賴索托", "盧森堡", "聖露西亞", "澳門", "聖文森及格瑞那丁",
"馬其頓", "聖多美及普林西比", "馬達加斯加", "沙烏地阿拉伯",
"馬拉威", "塞內加爾", "馬來西亞", "塞席爾", "馬爾地夫", "獅子山",
"馬利", "新加坡", "馬爾他", "斯洛伐克", "模里西斯", "斯洛維尼亞",
"茅利塔尼亞", "索羅門群島", "墨西哥", "索馬利亞",
"摩爾多瓦", "南非", "蒙古", "西班牙", "摩洛哥", "斯里蘭卡",
"緬甸", "蘇丹", "納米比亞", "蘇利南", "諾魯", "史瓦濟蘭",
"尼泊爾", "瑞典", "荷蘭", "瑞士", "新喀里多尼亞", "敘利亞",
"紐西蘭", "坦尚尼亞", "尼日", "泰國", "奈及利亞", "多哥",
"挪威", "千里達及托貝哥", "阿曼", "突尼西亞", "巴基斯坦", "土耳其",
"巴拿馬", "烏干達", "巴布亞紐幾內亞", "烏克蘭",
"巴拉圭", "阿拉伯聯合大公國", "秘魯", "美國", "菲律賓", "烏拉圭",
"波蘭", "委內瑞拉", "葡萄牙", "越南", "卡達", "西薩摩亞",
"羅馬尼亞", "葉門", "俄羅斯", "尚比亞", "盧安達", "辛巴威",
"聖克里斯多福及尼維斯")
@classmethod
def secondary_address(cls):
return cls.numerify(cls.random_element(cls.secondary_address_formats))
@classmethod
def building_number(cls):
return cls.numerify(cls.random_element(cls.building_number_formats))
@classmethod
def street_name(cls):
return cls.random_element(cls.street_names)
@classmethod
def city_name(cls):
return cls.random_element(cls.cities)

View file

@ -1,13 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from ..phone_number import Provider as PhoneNumberProvider
class Provider(PhoneNumberProvider):
formats = ("(##) %#######",
"##-%#######",
"### %#######",
"09########",
"09##-######",
"##-%######",
"## %######")

View file

@ -1,11 +0,0 @@
# coding=utf-8
from __future__ import unicode_literals
from ..ssn import Provider as SsnProvider
class Provider(SsnProvider):
ssn_formats = ("?#########",)
@classmethod
def ssn(cls):
return cls.bothify(cls.random_element(cls.ssn_formats)).upper()

View file

@ -1,4 +0,0 @@
try:
from collections import Counter
except ImportError:
from .counter import Counter

View file

@ -1,187 +0,0 @@
# From http://code.activestate.com/recipes/576611-counter-class/
from operator import itemgetter
from heapq import nlargest
from itertools import repeat, ifilter
class Counter(dict):
'''Dict subclass for counting hashable objects. Sometimes called a bag
or multiset. Elements are stored as dictionary keys and their counts
are stored as dictionary values.
>>> Counter('zyzygy')
Counter({'y': 3, 'z': 2, 'g': 1})
'''
def __init__(self, iterable=None, **kwds):
'''Create a new, empty Counter object. And if given, count elements
from an input iterable. Or, initialize the count from another mapping
of elements to their counts.
>>> c = Counter() # a new, empty counter
>>> c = Counter('gallahad') # a new counter from an iterable
>>> c = Counter({'a': 4, 'b': 2}) # a new counter from a mapping
>>> c = Counter(a=4, b=2) # a new counter from keyword args
'''
self.update(iterable, **kwds)
def __missing__(self, key):
return 0
def most_common(self, n=None):
'''List the n most common elements and their counts from the most
common to the least. If n is None, then list all element counts.
>>> Counter('abracadabra').most_common(3)
[('a', 5), ('r', 2), ('b', 2)]
'''
if n is None:
return sorted(self.iteritems(), key=itemgetter(1), reverse=True)
return nlargest(n, self.iteritems(), key=itemgetter(1))
def elements(self):
'''Iterator over elements repeating each as many times as its count.
>>> c = Counter('ABCABC')
>>> sorted(c.elements())
['A', 'A', 'B', 'B', 'C', 'C']
If an element's count has been set to zero or is a negative number,
elements() will ignore it.
'''
for elem, count in self.iteritems():
for _ in repeat(None, count):
yield elem
# Override dict methods where the meaning changes for Counter objects.
@classmethod
def fromkeys(cls, iterable, v=None):
raise NotImplementedError(
'Counter.fromkeys() is undefined. Use Counter(iterable) instead.')
def update(self, iterable=None, **kwds):
'''Like dict.update() but add counts instead of replacing them.
Source can be an iterable, a dictionary, or another Counter instance.
>>> c = Counter('which')
>>> c.update('witch') # add elements from another iterable
>>> d = Counter('watch')
>>> c.update(d) # add elements from another counter
>>> c['h'] # four 'h' in which, witch, and watch
4
'''
if iterable is not None:
if hasattr(iterable, 'iteritems'):
if self:
self_get = self.get
for elem, count in iterable.iteritems():
self[elem] = self_get(elem, 0) + count
else:
dict.update(self, iterable) # fast path when counter is empty
else:
self_get = self.get
for elem in iterable:
self[elem] = self_get(elem, 0) + 1
if kwds:
self.update(kwds)
def copy(self):
'Like dict.copy() but returns a Counter instance instead of a dict.'
return Counter(self)
def __delitem__(self, elem):
'Like dict.__delitem__() but does not raise KeyError for missing values.'
if elem in self:
dict.__delitem__(self, elem)
def __repr__(self):
if not self:
return '%s()' % self.__class__.__name__
items = ', '.join(map('%r: %r'.__mod__, self.most_common()))
return '%s({%s})' % (self.__class__.__name__, items)
# Multiset-style mathematical operations discussed in:
# Knuth TAOCP Volume II section 4.6.3 exercise 19
# and at http://en.wikipedia.org/wiki/Multiset
#
# Outputs guaranteed to only include positive counts.
#
# To strip negative and zero counts, add-in an empty counter:
# c += Counter()
def __add__(self, other):
'''Add counts from two counters.
>>> Counter('abbb') + Counter('bcc')
Counter({'b': 4, 'c': 2, 'a': 1})
'''
if not isinstance(other, Counter):
return NotImplemented
result = Counter()
for elem in set(self) | set(other):
newcount = self[elem] + other[elem]
if newcount > 0:
result[elem] = newcount
return result
def __sub__(self, other):
''' Subtract count, but keep only results with positive counts.
>>> Counter('abbbc') - Counter('bccd')
Counter({'b': 2, 'a': 1})
'''
if not isinstance(other, Counter):
return NotImplemented
result = Counter()
for elem in set(self) | set(other):
newcount = self[elem] - other[elem]
if newcount > 0:
result[elem] = newcount
return result
def __or__(self, other):
'''Union is the maximum of value in either of the input counters.
>>> Counter('abbb') | Counter('bcc')
Counter({'b': 3, 'c': 2, 'a': 1})
'''
if not isinstance(other, Counter):
return NotImplemented
_max = max
result = Counter()
for elem in set(self) | set(other):
newcount = _max(self[elem], other[elem])
if newcount > 0:
result[elem] = newcount
return result
def __and__(self, other):
''' Intersection is the minimum of corresponding counts.
>>> Counter('abbb') & Counter('bcc')
Counter({'b': 1})
'''
if not isinstance(other, Counter):
return NotImplemented
_min = min
result = Counter()
if len(self) < len(other):
self, other = other, self
for elem in ifilter(self.__contains__, other):
newcount = _min(self[elem], other[elem])
if newcount > 0:
result[elem] = newcount
return result

View file

@ -1,27 +0,0 @@
# coding=utf-8
import bisect
import random
def random_sample():
return random.uniform(0.0, 1.0)
def cumsum(it):
total = 0
for x in it:
total += x
yield total
def choice_distribution(a, p):
assert len(a) == len(p)
cdf = list(cumsum(p))
normal = cdf[-1]
cdf2 = [i / normal for i in cdf]
uniform_sample = random_sample()
idx = bisect.bisect_right(cdf2, uniform_sample)
return a[idx]

View file

@ -1,27 +0,0 @@
# coding=utf-8
import re
import unicodedata
_re_pattern = re.compile('[^\w\s-]')
_re_pattern_allow_dots = re.compile('[^\.\w\s-]')
_re_spaces = re.compile('[-\s]+')
def slugify(value, allow_dots=False):
"""
Converts to lowercase, removes non-word characters (alphanumerics and
underscores) and converts spaces to hyphens. Also strips leading and
trailing whitespace. Modified to optionally allow dots.
Copied from Django 1.7
"""
value = unicodedata.normalize('NFKD', value)
value = value.encode('ascii', 'ignore').decode('ascii')
value = value.strip().lower()
if allow_dots:
value = _re_pattern_allow_dots.sub('', value)
else:
value = _re_pattern.sub('', value)
return _re_spaces.sub('-', value)

View file

@ -1,74 +1,39 @@
#!/usr/bin/python
# encoding: utf-8
#
# Copyright © 2014 deanishe@deanishe.net
# Copyright (c) 2014 deanishe@deanishe.net
#
# MIT Licence. See http://opensource.org/licenses/MIT
#
# Created on 2014-12-29
#
"""
"""
"""Alfred 3 workflow to generate test data."""
from __future__ import print_function, unicode_literals, absolute_import
from __future__ import print_function, absolute_import
from collections import OrderedDict
import datetime
import random
import subprocess
import sys
from workflow import Workflow, ICON_WARNING, MATCH_ALL, MATCH_ALLCHARS
from faker import Factory
from workflow import Workflow3, ICON_WARNING, MATCH_ALL, MATCH_ALLCHARS
DELIMITER = '×'
from common import (
DEFAULT_SETTINGS,
ISSUE_URL,
UPDATE_SETTINGS,
intvar,
run_workflow,
)
HELP_URL = 'https://github.com/deanishe/alfred-fakeum'
UPDATE_SETTINGS = {'github_slug': 'deanishe/alfred-fakeum'}
# Query delimiter that separates faker name from quantity
DELIMITER = u''
# All locales supported by faker
ALL_LOCALES = {
'bg_BG': 'Bulgarian',
'cs_CZ': 'Czech',
'de_DE': 'German',
'dk_DK': 'Danish',
'el_GR': 'Greek',
'en_CA': 'English (CA)',
'en_GB': 'English (GB)',
'en_US': 'English (US)',
'es_ES': 'Spanish (ES)',
'es_MX': 'Spanish (MX)',
'fa_IR': 'Persian',
'fi_FI': 'Finnish',
'fr_FR': 'French',
'hi_IN': 'Hindi',
'it_IT': 'Italian',
'ko_KR': 'Korean',
'lt_LT': 'Lithuanian',
'lv_LV': 'Latvian',
'nl_NL': 'Dutch',
# 'no_NO': 'Norwegian', # Doesn't seem to be working :(
'pl_PL': 'Polish',
'pt_BR': 'Portuguese (BR)',
'ru_RU': 'Russian',
'sl_SI': 'Slovenian',
'zh_CN': 'Chinese (CN)',
'zh_TW': 'Chinese (TW)',
}
# Number of sentences per paragraph of Lipsum text
LIPSUMS = intvar('LIPSUM_SENTENCES', 3)
DEFAULT_SETTINGS = {
'locales': [
# 'en_GB',
'en_US',
'de_DE',
'it_IT',
'es_ES',
# 'fr_FR',
],
}
ALFRED_AS = 'tell application "Alfred 2" to search "fake "'
# ALFRED_AS = 'tell application "Alfred 2" to search "fake "'
FAKERS = OrderedDict([
# People
@ -124,7 +89,8 @@ fakers = []
def get_faker():
"""Return random faker instance"""
"""Return random faker instance."""
from faker import Factory
global fakers
if not fakers:
for loc in wf.settings.get('locales', DEFAULT_SETTINGS['locales']):
@ -133,39 +99,38 @@ def get_faker():
return random.choice(fakers)
def run_workflow():
"""Run workflow in Alfred"""
subprocess.call(['osascript', '-e', ALFRED_AS])
# def run_workflow():
# """Run workflow in Alfred"""
# subprocess.call(['osascript', '-e', ALFRED_AS])
def get_fake_datum(name):
"""Return one fake datum for name"""
"""Return one fake datum for name."""
methname = FAKERS[name]
# Get a faker instance that has the required method
while True:
faker = get_faker()
if hasattr(faker, methname):
datum = getattr(faker, methname)()
if name == 'Paragraph': # Pass no. of sentences to generator
datum = getattr(faker, methname)(LIPSUMS, False)
else:
datum = getattr(faker, methname)()
break
if isinstance(datum, int):
datum = '{}'.format(datum)
datum = str(datum)
elif isinstance(datum, datetime.datetime):
datum = '{}'.format(datum.strftime('%Y-%m-%d %H:%M:%S'))
datum = datum.strftime('%Y-%m-%d %H:%M:%S')
elif not isinstance(datum, basestring):
log.debug('{} : ({}) {!r}'.format(name,
datum.__class__,
datum))
log.debug(u'%s : (%s) %r', name, datum.__class__, datum)
return datum
def get_fake_data(names=None, count=1):
"""Return list of fake data"""
"""Return list of fake data."""
fake_data = []
if not names:
@ -188,35 +153,38 @@ def get_fake_data(names=None, count=1):
def main(wf):
"""Run workflow."""
if wf.update_available:
wf.add_item('A newer version is available',
'↩ to install update',
u'↩ to install update',
autocomplete='workflow:update',
icon='update-available.png')
query = None
if len(wf.args):
query = wf.args[0]
log.debug('query : {!r}'.format(query))
log.debug('query=%r', query)
count = None
count = 0
if DELIMITER in query:
if query.endswith(DELIMITER):
# Run workflow with previous query
# run_workflow(wf.cached_data('last_query', session=True))
run_workflow()
return 0
return
query, count = [s.strip() for s in query.split(DELIMITER)]
if count:
if not count.isdigit():
wf.add_item('Not a number : {}'.format(count),
wf.add_item(u'Not a number : ' + count,
'Please enter a number',
icon=ICON_WARNING)
wf.send_feedback()
return 0
return
count = int(count)
else:
@ -225,6 +193,9 @@ def main(wf):
fake_data = get_fake_data(names=[query], count=count)
else:
# Save last query so we can jump back to it if user backs up
# wf.cache_data('last_query', query, session=True)
fake_data = get_fake_data()
if query:
@ -234,10 +205,10 @@ def main(wf):
match_on=MATCH_ALL ^ MATCH_ALLCHARS,
min_score=20)
log.debug('count : {!r}'.format(count))
log.debug('count=%d', count)
if not fake_data:
wf.add_item('No matching fake data',
wf.add_item('No matching fakers',
'Try a different query',
icon=ICON_WARNING)
@ -246,22 +217,30 @@ def main(wf):
subtitle = data
if count:
example = data.split('\n')[0].strip()
subtitle = '{} ✕ e.g. "{}"'.format(count, example)
subtitle = u'{} ✕ e.g. "{}"'.format(count, example)
wf.add_item(name,
subtitle,
arg=data,
autocomplete='{} {} '.format(name, DELIMITER),
valid=True,
largetext=data,
copytext=data)
it = wf.add_item(name,
subtitle,
arg=data,
autocomplete=u'{} {} '.format(name, DELIMITER),
valid=True,
largetext=data,
copytext=data)
it.setvar('title', 'Copied to Clipboard')
it.setvar('text', data)
mod = it.add_modifier('cmd', 'Paste to frontmost application')
mod.setvar('paste', 1)
mod.setvar('SHOW_NOTIFICATIONS', 0)
wf.send_feedback()
if __name__ == '__main__':
wf = Workflow(default_settings=DEFAULT_SETTINGS,
update_settings=UPDATE_SETTINGS,
help_url=HELP_URL)
wf = Workflow3(default_settings=DEFAULT_SETTINGS,
update_settings=UPDATE_SETTINGS,
help_url=ISSUE_URL,
libraries=['./libs'])
log = wf.logger
sys.exit(wf.run(main))

BIN
src/icons/docs.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

BIN
src/icons/help.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

BIN
src/icons/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6 KiB

BIN
src/icons/issue.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

BIN
src/icons/issues.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

BIN
src/icons/locales.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

View file

Before

Width:  |  Height:  |  Size: 6 KiB

After

Width:  |  Height:  |  Size: 6 KiB

BIN
src/icons/on.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
src/icons/update-check.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,2 @@
# -*- coding: utf-8 -*-
from ._version import VERSION as __version__

View file

@ -0,0 +1,34 @@
"""
Common code used in multiple modules.
"""
class weekday(object):
__slots__ = ["weekday", "n"]
def __init__(self, weekday, n=None):
self.weekday = weekday
self.n = n
def __call__(self, n):
if n == self.n:
return self
else:
return self.__class__(self.weekday, n)
def __eq__(self, other):
try:
if self.weekday != other.weekday or self.n != other.n:
return False
except AttributeError:
return False
return True
__hash__ = None
def __repr__(self):
s = ("MO", "TU", "WE", "TH", "FR", "SA", "SU")[self.weekday]
if not self.n:
return s
else:
return "%s(%+d)" % (s, self.n)

Some files were not shown because too many files have changed in this diff Show more