Skip to content

Commit 8126dee

Browse files
refactoring code
Signed-off-by: Deepak Raj <[email protected]>
1 parent 41b31ed commit 8126dee

File tree

9 files changed

+84
-144
lines changed

9 files changed

+84
-144
lines changed

.github/workflows/add_labels.yaml

-17
This file was deleted.

.github/workflows/publish.yml

-21
This file was deleted.

.github/workflows/python-app.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,4 @@ jobs:
1414
python -m pip install --upgrade pip
1515
pip install flake8
1616
- name: Lint with flake8
17-
run: flake8 . --isolated --exclude=.cache,.venv,.svn,CVS,.bzr,.hg,.git,__pycache__,.tox,**/migrations/** --ignore=E203,W503,E501,F401
17+
run: flake8 . --isolated --exclude=.cache,.venv,.svn,CVS,.bzr,.hg,.git,__pycache__,.tox,**/migrations/** --ignore=E402,E501,E401

random_profile/cli.py

+10-12
Original file line numberDiff line numberDiff line change
@@ -14,44 +14,42 @@
1414
parser.add_argument('-v', '--version', action='version', version=VERSION)
1515
parser.add_argument('--server', help='Start server', action='store_true')
1616
parser.add_argument('--port', help='Port number', type=int, default=8000)
17-
parser.add_argument('-n', help='Number of random profiles', type=int, default=1)
17+
parser.add_argument('-n', '--number', help='Number of random profiles', type=int, default=1)
1818

1919
gender_arg_group = parser.add_mutually_exclusive_group()
20+
2021
gender_arg_group.add_argument("-ma", "--male", help="Get only male profiles", action="store_true")
2122
gender_arg_group.add_argument("-fe", "--female", help="Get only female profiles", action="store_true")
22-
output_form_arg_group = parser.add_mutually_exclusive_group()
23-
2423

2524
output_form_arg_group = parser.add_mutually_exclusive_group()
2625
output_form_arg_group.add_argument('-p', '--profile', help='Get full profile', action='store_true')
2726
output_form_arg_group.add_argument('-f', '--firstname', help='Get first name', action='store_true')
2827
output_form_arg_group.add_argument('-l', '--lastname', help='Get last name instead of first name', action='store_true')
2928
output_form_arg_group.add_argument('-F', '--fullname', help='Get full name instead of first name', action='store_true')
30-
output_form_arg_group.add_argument('--ip', help='Get an ipv4 IP address', action='store_true')
31-
output_form_arg_group.add_argument('--job', help='Get job title', action='store_true')
32-
output_form_arg_group.add_argument('--address', help='Get address', action='store_true')
29+
output_form_arg_group.add_argument('-ip', '--ip_address', help='Get an ipv4 IP address', action='store_true')
30+
output_form_arg_group.add_argument('-j', '--job', help='Get job title', action='store_true')
31+
output_form_arg_group.add_argument('-a', '--address', help='Get address', action='store_true')
3332
args = parser.parse_args()
3433

3534

36-
3735
def main():
3836
gender = None
3937
if args.male:
4038
gender = Gender.MALE
4139
elif args.female:
4240
gender = Gender.FEMALE
43-
rp = RandomProfile(args.n, gender)
41+
rp = RandomProfile(args.number, gender)
4442
if args.server:
4543
start_server(args.port)
4644
elif args.fullname:
47-
pprint(rp.full_name())
45+
pprint(rp.full_names())
4846
elif args.firstname:
49-
pprint(rp.first_name())
47+
pprint(rp.first_names())
5048
elif args.lastname:
51-
pprint(rp.last_name())
49+
pprint(rp.last_names())
5250
elif args.job:
5351
pprint(rp.job_title())
54-
elif args.ip:
52+
elif args.ip_address:
5553
pprint(rp.ip_address())
5654
elif args.address:
5755
pprint(rp.generate_address())

random_profile/enums/__init__.py

-1
Original file line numberDiff line numberDiff line change
@@ -1 +0,0 @@
1-

random_profile/main.py

+47-51
Original file line numberDiff line numberDiff line change
@@ -14,32 +14,33 @@
1414
sys.path.append('.')
1515

1616
from random_profile.enums.gender import Gender
17-
from random_profile.utils import *
17+
from random_profile import utils
1818

1919
VERSION = '2.0.1'
2020

21-
lname_txt = os.path.join(ASSETS_DIR, "lnames.txt")
22-
fname_male_txt = os.path.join(ASSETS_DIR, "fnames_male.txt")
23-
fname_female_txt = os.path.join(ASSETS_DIR, "fnames_female.txt")
24-
hair_colors_txt = os.path.join(ASSETS_DIR, "hair_colors.txt")
25-
blood_types_txt = os.path.join(ASSETS_DIR, "blood_types.txt")
26-
street_names_txt = os.path.join(ASSETS_DIR, "street_names.txt")
27-
cities_name_txt = os.path.join(ASSETS_DIR, "cities_name.txt")
28-
states_names_txt = os.path.join(ASSETS_DIR, "states_names.txt")
29-
job_titles_txt = os.path.join(ASSETS_DIR, "job_titles.txt")
30-
job_levels_txt = os.path.join(ASSETS_DIR, "job_levels.txt")
21+
lname_txt = os.path.join(utils.ASSETS_DIR, "lnames.txt")
22+
fname_male_txt = os.path.join(utils.ASSETS_DIR, "fnames_male.txt")
23+
fname_female_txt = os.path.join(utils.ASSETS_DIR, "fnames_female.txt")
24+
hair_colors_txt = os.path.join(utils.ASSETS_DIR, "hair_colors.txt")
25+
blood_types_txt = os.path.join(utils.ASSETS_DIR, "blood_types.txt")
26+
street_names_txt = os.path.join(utils.ASSETS_DIR, "street_names.txt")
27+
cities_name_txt = os.path.join(utils.ASSETS_DIR, "cities_name.txt")
28+
states_names_txt = os.path.join(utils.ASSETS_DIR, "states_names.txt")
29+
job_titles_txt = os.path.join(utils.ASSETS_DIR, "job_titles.txt")
30+
job_levels_txt = os.path.join(utils.ASSETS_DIR, "job_levels.txt")
3131

3232
# loading data from txt files
33-
lname = load_txt_file(lname_txt)
34-
fname_male = load_txt_file(fname_male_txt)
35-
fname_female = load_txt_file(fname_female_txt)
36-
hair_colors = load_txt_file(hair_colors_txt)
37-
blood_types = load_txt_file(blood_types_txt)
38-
states_names = load_txt_file(states_names_txt)
39-
cities_name = load_txt_file(cities_name_txt)
40-
street_names = load_txt_file(street_names_txt)
41-
job_titles = load_txt_file(job_titles_txt)
42-
job_levels = load_txt_file(job_levels_txt)
33+
lname = utils.load_txt_file(lname_txt)
34+
fname_male = utils.load_txt_file(fname_male_txt)
35+
fname_female = utils.load_txt_file(fname_female_txt)
36+
hair_colors = utils.load_txt_file(hair_colors_txt)
37+
blood_types = utils.load_txt_file(blood_types_txt)
38+
states_names = utils.load_txt_file(states_names_txt)
39+
cities_name = utils.load_txt_file(cities_name_txt)
40+
street_names = utils.load_txt_file(street_names_txt)
41+
job_titles = utils.load_txt_file(job_titles_txt)
42+
job_levels = utils.load_txt_file(job_levels_txt)
43+
4344

4445
class RandomProfile(object):
4546
def __init__(self, num: int = 1, gender: Gender = None):
@@ -75,8 +76,8 @@ def __getitem__(self, index):
7576
def ip_address(self, num: int = None) -> List[str]:
7677
num = self.num if num is None else num
7778
if num == 1 or num is None:
78-
return ipv4_gen()
79-
return [ipv4_gen() for _ in range(num)]
79+
return utils.ipv4_gen()
80+
return [utils.ipv4_gen() for _ in range(num)]
8081

8182
def job_title(self, num: int = None) -> List[str]:
8283
num = self.num if num is None else num
@@ -99,14 +100,14 @@ def hair_color(self, num: int = None) -> List[str]:
99100
def dob_age(self, num: int = None) -> List[Tuple[str, int]]:
100101
num = self.num if num is None else num
101102
if num == 1 or num is None:
102-
return generate_dob_age()
103-
return [generate_dob_age() for _ in range(num)]
103+
return utils.generate_dob_age()
104+
return [utils.generate_dob_age() for _ in range(num)]
104105

105106
def height_weight(self, num: int = None) -> List[Tuple[int, int]]:
106107
num = self.num if num is None else num
107108
if num == 1 or num is None:
108-
return generate_random_height_weight()
109-
return [generate_random_height_weight() for _ in range(num)]
109+
return utils.generate_random_height_weight()
110+
return [utils.generate_random_height_weight() for _ in range(num)]
110111

111112
def generate_address(self, num: int = None) -> List[str]:
112113
num = self.num if num is None else num
@@ -128,7 +129,7 @@ def generate_address(self, num: int = None) -> List[str]:
128129
address_list.append(address)
129130

130131
return address_list
131-
132+
132133
def first_names(self, num: int = None, gender: Gender = None) -> list:
133134
num = self.num if num is None else num
134135
if gender is None:
@@ -139,10 +140,10 @@ def first_names(self, num: int = None, gender: Gender = None) -> list:
139140
names = fname_male
140141
else:
141142
names = fname_female
142-
143+
143144
if num == 1 or num is None:
144145
return random.choice(names)
145-
146+
146147
return random.choices(names, k=num)
147148

148149
def last_names(self, num: int = None) -> list:
@@ -152,7 +153,7 @@ def last_names(self, num: int = None) -> list:
152153
if num == 1 or num is None:
153154
return random.choice(lname)
154155
return random.choices(lname, k=num)
155-
156+
156157
def full_names(self, num: int = None, gender: Gender = None) -> list:
157158
num = self.num if num is None else num
158159

@@ -165,12 +166,12 @@ def full_names(self, num: int = None, gender: Gender = None) -> list:
165166
names = fname_male
166167
else:
167168
names = fname_female
168-
169+
169170
if num == 1 or num is None:
170171
return random.choice(names) + ' ' + random.choice(lname)
171172

172173
return [random.choice(names) + ' ' + random.choice(lname) for _ in range(num)]
173-
174+
174175
def full_profiles(self, num: int = None, gender: Gender = None) -> list:
175176
num = self.num if num is None else num
176177

@@ -179,28 +180,24 @@ def full_profiles(self, num: int = None, gender: Gender = None) -> list:
179180
for _ in range(num):
180181

181182
# random gender for every profile in list
182-
this_gender = generate_random_gender() if gender is None else gender
183+
this_gender = utils.generate_random_gender() if gender is None else gender
183184
first = random.choice(fname_male if this_gender.value == Gender.MALE.value else fname_female)
184185
last = random.choice(lname)
185186
full_name = first + ' ' + last
186-
187+
187188
hair_color = random.choice(hair_colors)
188189
blood_type = random.choice(blood_types)
189-
190-
phone_number = f'+1-{random.randint(300, 500)}-{random.randint(800, 999)}-{random.randint(1000,9999)}'
191-
192-
193190

194-
dob, age = generate_dob_age()
195-
height, weight = generate_random_height_weight()
191+
phone_number = f'+1-{random.randint(300, 500)}-{random.randint(800, 999)}-{random.randint(1000,9999)}'
196192

197-
job_title = random.choice(job_titles)
198-
job_experience = generate_random_job_level(age, job_levels)
193+
dob, age = utils.generate_dob_age()
194+
height, weight = utils.generate_random_height_weight()
195+
job_experience = utils.generate_random_job_level(age, job_levels)
199196

200197
street_num = random.randint(100, 999)
201198
street = random.choice(street_names)
202-
city, coords = generate_random_city_coords(cities_name)
203-
coords_pretty = coords_string(coords)
199+
city, coords = utils.generate_random_city_coords(cities_name)
200+
coords_pretty = utils.coords_string(coords)
204201
state = random.choice(states_names)
205202
zip_code = random.randint(10000, 99999)
206203

@@ -211,13 +208,13 @@ def full_profiles(self, num: int = None, gender: Gender = None) -> list:
211208
'state': state,
212209
'zip_code': zip_code
213210
}
214-
211+
215212
full_address = f'{street_num} {street}, {city}, {state} {zip_code}'
216-
213+
217214
mother = self.first_names(1, Gender.FEMALE)[0] + ' ' + last
218215
father = self.first_names(1, Gender.MALE)[0] + ' ' + last
219216

220-
card = generate_random_card()
217+
card = utils.generate_random_card()
221218

222219
profile = {}
223220
profile['id'] = str(uuid.uuid4())
@@ -234,21 +231,20 @@ def full_profiles(self, num: int = None, gender: Gender = None) -> list:
234231
profile['age'] = age
235232
profile['phone_number'] = phone_number
236233
profile['email'] = profile['first_name'].lower() + profile['last_name'].lower() + '@example.com'
237-
238-
234+
239235
profile['blood_type'] = self.blood_type(num=1)
240236
profile['height'] = height
241237
profile['weight'] = weight
242238
profile['hair_color'] = self.hair_color(num=1)
243239
profile['ip_address'] = self.ip_address(num=1)
244240

245-
246241
profile['address'] = address
247242
profile['full_address'] = full_address
248243
profile['job_job_experience'] = job_experience
249244
profile['mother'] = mother
250245
profile['father'] = father
251246
profile['payment_card'] = card
247+
profile['coordinates'] = coords_pretty
252248

253249
profile_list.append(profile)
254250

random_profile/test_package.py

-20
This file was deleted.

random_profile/utils.py

+10-6
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ def generate_random_card() -> dict:
105105

106106
return card
107107

108+
108109
def generate_random_job_level(age: int, levels) -> str:
109110
levels_with_ranges = [level.split(';') for level in levels]
110111
applicable_level = list(filter(lambda level: (int(level[1]) <= age <= int(level[2])), levels_with_ranges))
@@ -113,7 +114,7 @@ def generate_random_job_level(age: int, levels) -> str:
113114

114115
try:
115116
level = applicable_level[0][0]
116-
except:
117+
except Exception:
117118
print(applicable_level)
118119
print(age)
119120

@@ -129,6 +130,7 @@ def random_coords_from_point(lat: float, lon: float, max_distance: float = 1000)
129130

130131
return lat_, lon_
131132

133+
132134
def generate_random_city_coords(cities) -> tuple:
133135
city = random.choice(cities)
134136

@@ -141,14 +143,16 @@ def generate_random_city_coords(cities) -> tuple:
141143
coords = random_coords_from_point(lat, lon)
142144
return name, coords
143145

146+
144147
def decdeg2dms(dd):
145148
mult = -1 if dd < 0 else 1
146-
mnt,sec = divmod(abs(dd)*3600, 60)
147-
deg,mnt = divmod(mnt, 60)
148-
return mult*deg, mult*mnt, mult*sec
149+
mnt, sec = divmod(abs(dd) * 3600, 60)
150+
deg, mnt = divmod(mnt, 60)
151+
return mult * deg, mult * mnt, mult * sec
152+
149153

150-
def coords_string (coords: tuple) -> str:
154+
def coords_string(coords: tuple) -> str:
151155
dms_lat = decdeg2dms(abs(coords[0]))
152156
dms_lon = decdeg2dms(abs(coords[1]))
153157

154-
return f"{dms_lat[0]:.0f}° {dms_lat[1]:.0f}' {dms_lat[2]:.4f}'' {'N' if coords[0] > 0 else 'S'} {dms_lon[0]:.0f}° {dms_lon[1]:.0f}' {dms_lon[2]:.4f}'' {'E' if coords[1] > 0 else 'W'}"
158+
return f"{dms_lat[0]:.0f}° {dms_lat[1]:.0f}' {dms_lat[2]:.4f}'' {'N' if coords[0] > 0 else 'S'} {dms_lon[0]:.0f}° {dms_lon[1]:.0f}' {dms_lon[2]:.4f}'' {'E' if coords[1] > 0 else 'W'}"

0 commit comments

Comments
 (0)