[formatting] adding the ability to invert the address template (line by line, preserving order within each line) with certain probabilities

This commit is contained in:
Al
2016-12-27 23:06:51 -05:00
parent 1c17f1f2e2
commit 25e966411d

View File

@@ -2,6 +2,7 @@
import copy
import os
import pystache
import random
import re
import six
import subprocess
@@ -316,6 +317,10 @@ class AddressFormatter(object):
return component_insertions
def inverted(self, template):
lines = template.split(six.u('\n'))
return six.u('\n').join(reversed(lines))
def house_number_before_road(self, country, language=None):
key = value = None
if language is not None:
@@ -352,14 +357,21 @@ class AddressFormatter(object):
self.global_insertions = self.insertion_probs(config)
self.global_conditionals = self.conditional_insertion_probs(config)
self.global_invert_probability = self.config.get('invert_probability', 0.0)
self.country_insertions = {}
self.country_conditionals = {}
self.country_invert_probabilities = {}
for country, config in six.iteritems(self.country_configs):
if 'insertions' in config:
self.country_insertions[country.lower()] = self.insertion_probs(config['insertions'])
self.country_conditionals[country.lower()] = self.conditional_insertion_probs(config['insertions'])
if 'invert_probability' in config:
self.country_invert_probabilities[country] = config['invert_probability']
self.language_insertions = {}
self.language_conditionals = {}
@@ -616,6 +628,11 @@ class AddressFormatter(object):
cache_keys = []
invert_probability = self.country_invert_probabilities.get(country, self.global_invert_probability)
if random.random() < invert_probability:
template = self.inverted(template)
cache_keys.append('inverted')
for component in sorted(components, key=self.component_order.get):
scope = country
insertions = nested_get(self.country_insertions, (country, component), default=None)