Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1from collections import OrderedDict 

2 

3from ..en import Provider as AddressProvider 

4 

5 

6class Provider(AddressProvider): 

7 city_prefixes = ('North', 'East', 'West', 'South', 'New', 'Lake', 'Port') 

8 

9 city_suffixes = ( 

10 'town', 

11 'ton', 

12 'land', 

13 'ville', 

14 'berg', 

15 'burgh', 

16 'borough', 

17 'bury', 

18 'view', 

19 'port', 

20 'mouth', 

21 'stad', 

22 'furt', 

23 'chester', 

24 'mouth', 

25 'fort', 

26 'haven', 

27 'side', 

28 'shire') 

29 

30 building_number_formats = ('#####', '####', '###') 

31 

32 street_suffixes = ( 

33 'Alley', 

34 'Avenue', 

35 'Branch', 

36 'Bridge', 

37 'Brook', 

38 'Brooks', 

39 'Burg', 

40 'Burgs', 

41 'Bypass', 

42 'Camp', 

43 'Canyon', 

44 'Cape', 

45 'Causeway', 

46 'Center', 

47 'Centers', 

48 'Circle', 

49 'Circles', 

50 'Cliff', 

51 'Cliffs', 

52 'Club', 

53 'Common', 

54 'Corner', 

55 'Corners', 

56 'Course', 

57 'Court', 

58 'Courts', 

59 'Cove', 

60 'Coves', 

61 'Creek', 

62 'Crescent', 

63 'Crest', 

64 'Crossing', 

65 'Crossroad', 

66 'Curve', 

67 'Dale', 

68 'Dam', 

69 'Divide', 

70 'Drive', 

71 'Drive', 

72 'Drives', 

73 'Estate', 

74 'Estates', 

75 'Expressway', 

76 'Extension', 

77 'Extensions', 

78 'Fall', 

79 'Falls', 

80 'Ferry', 

81 'Field', 

82 'Fields', 

83 'Flat', 

84 'Flats', 

85 'Ford', 

86 'Fords', 

87 'Forest', 

88 'Forge', 

89 'Forges', 

90 'Fork', 

91 'Forks', 

92 'Fort', 

93 'Freeway', 

94 'Garden', 

95 'Gardens', 

96 'Gateway', 

97 'Glen', 

98 'Glens', 

99 'Green', 

100 'Greens', 

101 'Grove', 

102 'Groves', 

103 'Harbor', 

104 'Harbors', 

105 'Haven', 

106 'Heights', 

107 'Highway', 

108 'Hill', 

109 'Hills', 

110 'Hollow', 

111 'Inlet', 

112 'Inlet', 

113 'Island', 

114 'Island', 

115 'Islands', 

116 'Islands', 

117 'Isle', 

118 'Isle', 

119 'Junction', 

120 'Junctions', 

121 'Key', 

122 'Keys', 

123 'Knoll', 

124 'Knolls', 

125 'Lake', 

126 'Lakes', 

127 'Land', 

128 'Landing', 

129 'Lane', 

130 'Light', 

131 'Lights', 

132 'Loaf', 

133 'Lock', 

134 'Locks', 

135 'Locks', 

136 'Lodge', 

137 'Lodge', 

138 'Loop', 

139 'Mall', 

140 'Manor', 

141 'Manors', 

142 'Meadow', 

143 'Meadows', 

144 'Mews', 

145 'Mill', 

146 'Mills', 

147 'Mission', 

148 'Mission', 

149 'Motorway', 

150 'Mount', 

151 'Mountain', 

152 'Mountain', 

153 'Mountains', 

154 'Mountains', 

155 'Neck', 

156 'Orchard', 

157 'Oval', 

158 'Overpass', 

159 'Park', 

160 'Parks', 

161 'Parkway', 

162 'Parkways', 

163 'Pass', 

164 'Passage', 

165 'Path', 

166 'Pike', 

167 'Pine', 

168 'Pines', 

169 'Place', 

170 'Plain', 

171 'Plains', 

172 'Plains', 

173 'Plaza', 

174 'Plaza', 

175 'Point', 

176 'Points', 

177 'Port', 

178 'Port', 

179 'Ports', 

180 'Ports', 

181 'Prairie', 

182 'Prairie', 

183 'Radial', 

184 'Ramp', 

185 'Ranch', 

186 'Rapid', 

187 'Rapids', 

188 'Rest', 

189 'Ridge', 

190 'Ridges', 

191 'River', 

192 'Road', 

193 'Road', 

194 'Roads', 

195 'Roads', 

196 'Route', 

197 'Row', 

198 'Rue', 

199 'Run', 

200 'Shoal', 

201 'Shoals', 

202 'Shore', 

203 'Shores', 

204 'Skyway', 

205 'Spring', 

206 'Springs', 

207 'Springs', 

208 'Spur', 

209 'Spurs', 

210 'Square', 

211 'Square', 

212 'Squares', 

213 'Squares', 

214 'Station', 

215 'Station', 

216 'Stravenue', 

217 'Stravenue', 

218 'Stream', 

219 'Stream', 

220 'Street', 

221 'Street', 

222 'Streets', 

223 'Summit', 

224 'Summit', 

225 'Terrace', 

226 'Throughway', 

227 'Trace', 

228 'Track', 

229 'Trafficway', 

230 'Trail', 

231 'Trail', 

232 'Tunnel', 

233 'Tunnel', 

234 'Turnpike', 

235 'Turnpike', 

236 'Underpass', 

237 'Union', 

238 'Unions', 

239 'Valley', 

240 'Valleys', 

241 'Via', 

242 'Viaduct', 

243 'View', 

244 'Views', 

245 'Village', 

246 'Village', 

247 'Villages', 

248 'Ville', 

249 'Vista', 

250 'Vista', 

251 'Walk', 

252 'Walks', 

253 'Wall', 

254 'Way', 

255 'Ways', 

256 'Well', 

257 'Wells') 

258 

259 postcode_formats = ('#####', '#####-####') 

260 

261 states = ( 

262 'Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado', 

263 'Connecticut', 'Delaware', 'Florida', 'Georgia', 'Hawaii', 'Idaho', 

264 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana', 

265 'Maine', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota', 

266 'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 

267 'New Hampshire', 'New Jersey', 'New Mexico', 'New York', 

268 'North Carolina', 'North Dakota', 'Ohio', 'Oklahoma', 'Oregon', 

269 'Pennsylvania', 'Rhode Island', 'South Carolina', 'South Dakota', 

270 'Tennessee', 'Texas', 'Utah', 'Vermont', 'Virginia', 'Washington', 

271 'West Virginia', 'Wisconsin', 'Wyoming', 

272 ) 

273 states_abbr = ( 

274 'AL', 'AK', 'AZ', 'AR', 'CA', 'CO', 'CT', 'DE', 'DC', 'FL', 'GA', 'HI', 

275 'ID', 'IL', 'IN', 'IA', 'KS', 'KY', 'LA', 'ME', 'MD', 'MA', 'MI', 'MN', 

276 'MS', 'MO', 'MT', 'NE', 'NV', 'NH', 'NJ', 'NM', 'NY', 'NC', 'ND', 'OH', 

277 'OK', 'OR', 'PA', 'RI', 'SC', 'SD', 'TN', 'TX', 'UT', 'VT', 'VA', 'WA', 

278 'WV', 'WI', 'WY', 

279 ) 

280 

281 states_postcode = { 

282 'AL': (35004, 36925), 'AK': (99501, 99950), 'AZ': (85001, 86556), 

283 'AR': (71601, 72959), 'CA': (90001, 96162), 'CO': (80001, 81658), 

284 'CT': (6001, 6389), 'DE': (19701, 19980), 'DC': (20001, 20039), 

285 'FL': (32004, 34997), 'GA': (30001, 31999), 'HI': (96701, 96898), 

286 'ID': (83201, 83876), 'IL': (60001, 62999), 'IN': (46001, 47997), 

287 'IA': (50001, 52809), 'KS': (66002, 67954), 'KY': (40003, 42788), 

288 'LA': (70001, 71232), 'ME': (3901, 4992), 'MD': (20331, 20331), 

289 'MA': (1001, 2791), 'MI': (48001, 49971), 'MN': (55001, 56763), 

290 'MS': (38601, 39776), 'MO': (63001, 65899), 'MT': (59001, 59937), 

291 'NE': (68001, 68118), 'NV': (88901, 89883), 'NH': (3031, 3897), 

292 'NJ': (7001, 8989), 'NM': (87001, 88441), 'NY': (10001, 14905), 

293 'NC': (27006, 28909), 'ND': (58001, 58856), 'OH': (43001, 45999), 

294 'OK': (73001, 73199), 'OR': (97001, 97920), 'PA': (15001, 19640), 

295 'RI': (2801, 2940), 'SC': (29001, 29948), 'SD': (57001, 57799), 

296 'TN': (37010, 38589), 'TX': (73301, 73301), 'UT': (84001, 84784), 

297 'VT': (5001, 5495), 'VA': (20040, 20041), 'WA': (98001, 99403), 

298 'WV': (24701, 26886), 'WI': (53001, 54990), 'WY': (82001, 83128), 

299 } 

300 

301 territories_abbr = ( 

302 'AS', 'FM', 'GU', 'MH', 'MP', 'PW', 'PR', 'VI', 

303 ) 

304 

305 states_and_territories_abbr = states_abbr + territories_abbr 

306 

307 military_state_abbr = ('AE', 'AA', 'AP') 

308 

309 military_ship_prefix = ('USS', 'USNS', 'USNV', 'USCGC') 

310 

311 military_apo_format = ("PSC ####, Box ####") 

312 

313 military_dpo_format = ("Unit #### Box ####") 

314 

315 city_formats = ( 

316 '{{city_prefix}} {{first_name}}{{city_suffix}}', 

317 '{{city_prefix}} {{first_name}}', 

318 '{{first_name}}{{city_suffix}}', 

319 '{{last_name}}{{city_suffix}}', 

320 ) 

321 

322 street_name_formats = ( 

323 '{{first_name}} {{street_suffix}}', 

324 '{{last_name}} {{street_suffix}}', 

325 ) 

326 

327 street_address_formats = ( 

328 '{{building_number}} {{street_name}}', 

329 '{{building_number}} {{street_name}} {{secondary_address}}', 

330 ) 

331 

332 address_formats = ( 

333 "{{street_address}}\n{{city}}, {{state_abbr}} {{postcode}}", 

334 ) 

335 

336 address_formats = OrderedDict(( 

337 ("{{street_address}}\n{{city}}, {{state_abbr}} {{postcode}}", 25), 

338 # military address formatting. 

339 ("{{military_apo}}\nAPO {{military_state}} {{postcode}}", 1), 

340 ("{{military_ship}} {{last_name}}\nFPO {{military_state}} {{postcode}}", 1), 

341 ("{{military_dpo}}\nDPO {{military_state}} {{postcode}}", 1), 

342 )) 

343 

344 secondary_address_formats = ('Apt. ###', 'Suite ###') 

345 

346 def city_prefix(self): 

347 return self.random_element(self.city_prefixes) 

348 

349 def secondary_address(self): 

350 return self.numerify( 

351 self.random_element( 

352 self.secondary_address_formats)) 

353 

354 def state(self): 

355 return self.random_element(self.states) 

356 

357 def state_abbr(self, include_territories=True): 

358 """ 

359 :returns: A random state or territory abbreviation. 

360 

361 :param include_territories: If True, territories will be included. 

362 If False, only states will be returned. 

363 """ 

364 if include_territories: 

365 self.random_element(self.states_and_territories_abbr) 

366 return self.random_element(self.states_abbr) 

367 

368 def postcode(self): 

369 return "%05d" % self.generator.random.randint(501, 99950) 

370 

371 def zipcode_plus4(self): 

372 return "%s-%04d" % (self.zipcode(), 

373 self.generator.random.randint(1, 9999)) 

374 

375 def postcode_in_state(self, state_abbr=None): 

376 """ 

377 :returns: A random postcode within the provided state abbreviation 

378 

379 :param state_abbr: A state abbreviation 

380 """ 

381 if state_abbr is None: 

382 state_abbr = self.random_element(self.states_abbr) 

383 

384 if state_abbr in self.states_abbr: 

385 postcode = "%d" % (self.generator.random.randint( 

386 self.states_postcode[state_abbr][0], 

387 self.states_postcode[state_abbr][1])) 

388 

389 if len(postcode) == 4: 

390 postcode = "0%s" % postcode 

391 

392 return postcode 

393 

394 else: 

395 raise Exception('State Abbreviation not found in list') 

396 

397 def military_ship(self): 

398 """ 

399 :example 'USS' 

400 """ 

401 return self.random_element(self.military_ship_prefix) 

402 

403 def military_state(self): 

404 """ 

405 :example 'APO' 

406 """ 

407 return self.random_element(self.military_state_abbr) 

408 

409 def military_apo(self): 

410 """ 

411 :example 'PSC 5394 Box 3492 

412 """ 

413 return self.numerify(self.military_apo_format) 

414 

415 def military_dpo(self): 

416 """ 

417 :example 'Unit 3333 Box 9342' 

418 """ 

419 return self.numerify(self.military_dpo_format) 

420 

421 # Aliases 

422 def zipcode(self): 

423 return self.postcode() 

424 

425 def zipcode_in_state(self, state_abbr=None): 

426 return self.postcode_in_state(state_abbr) 

427 

428 def postalcode(self): 

429 return self.postcode() 

430 

431 def postalcode_in_state(self, state_abbr=None): 

432 return self.postcode_in_state(state_abbr) 

433 

434 def postalcode_plus4(self): 

435 return self.zipcode_plus4()