def test_formatter_reuse(self): runs = 100 value1, recreate_time = StaticTimer.time_it(lambda: Formatter( "Age: @age, Domain: @email.$split('@').1, Friends: @friends.$map('index', 'name').$join" ).single(large_data[0]), runs=runs, iterations_per_run=1, display=False, log_arguments=False) f = Formatter( "Age: @age, Domain: @email.$split('@').1, Friends: @friends.$map('index', 'name').$join" ) value2, reuse_time = StaticTimer.time_it(f.single, large_data[0], runs=runs, iterations_per_run=1, display=False, log_arguments=False) print(f.single(large_data[0])) print(recreate_time / reuse_time, "x faster to reuse Formatter then recreate") self.assertEqual(value1, value2) self.assertGreater(recreate_time / reuse_time, 5)
def test_nested_capital_prefix(self): data = {"env": {"VERSION": "1.0.0"}} prefix = "build/" self.assertEqual( prefix + data["env"]["VERSION"], Formatter(prefix+"@env.VERSION").single(data) )
def test_special_surrounded(self): x = 5 y = 5.6 self.assertEqual( f"{x}+{y}={x + y}={y + x}", Formatter("@x+@y=@x.$add(@y)=@y.$add(@x)").single({"x": x, "y": y}) )
def test_at_at(self): self.assertEqual( f"<redacted>@{small_data[0]['email'].split('@')[1]}", Formatter("<redacted>@@@email.$split('@').1").single(small_data[0]) )
def test_many(self): self.assertEqual( [f"Name: {item['name']}" for item in small_data[:3]], Formatter("Name: @name").many(small_data[:3]) )
def test_complex_field_as_argument(self): self.assertEqual( "5.0", Formatter("@a.$distance(@b)").single({"a": [1, 1], "b": [4, 5]}) )
def test_join(self): self.assertEqual( f"Tags: [{'], ['.join(small_data[0]['tags'])}]", Formatter('Tags: [@tags.$join("], [")]').single(small_data[0]) )
def test_multiple(self): self.assertEqual( f"{small_data[0]['name']} {small_data[0]['gender']}", Formatter("@name @gender").single(small_data[0]) )
def test_nested_number(self): self.assertEqual( "Balance: $750", Formatter("Balance: $@balance.$subtract(@pending_charges)").single( {"balance": 1000, "pending_charges": 250}), )
def test_format_missing_nested_field(self): self.assertEqual( "<missing>", Formatter("@a.$index(@index, '<missing>')").single({"a": [1, 2]}) )
def test_format_missing_nested(self): self.assertEqual( "N/A", Formatter("@found.missing", "N/A").single({"found": {}}) )
def test_format_missing(self): self.assertEqual( "<missing>", Formatter("@missing").single({}) )
def test_nested_capital(self): data = {"env": {"VERSION": "1.0.0"}} self.assertEqual( data["env"]["VERSION"], Formatter("@env.VERSION").single(data) )
def test_surrounded_query(self): self.assertEqual( f'<p class="lead">{small_data[0]["email"]}</p>', Formatter('<p class="lead">@email</p>').single(small_data[0]) )
def test_nested_fallback(self): self.assertEqual("5", Formatter("@missing.something.$fallback(5)").single({}))
def test_one_missing_out_of_several(self): self.assertEqual( f"Name: {small_data[0]['name']}, Missing: <missing>", Formatter("Name: @name, Missing: @missing").single(small_data[0]) )
# curve=timer.best_fit_curve(1, curve_type="Linear", transformers=len), # equation_rounding=4) # timer.plot(split_index=2, transformer=len, plot_curve=True, # curve=timer.best_fit_curve(2, curve_type="Linear", transformers=len), # equation_rounding=4) # # timer.statistics() # q = Query("friends.0.name.$split(' ').$join(': ')") # print(q.single(large_data[0])) # timer.time_it( # q.many, large_data, # iterations_per_run=1, runs=10 # ) # # q = Query("registered.$strptime.$attr('year')") # print(q.single(small_data[0])) # timer.time_it( # q.many, small_data, # iterations_per_run=50, runs=10 # ) item = {"x1": 1, "y1": 1, "x2": 12, "y2": 54} f = Formatter( "Midpoint: [@x2.$subtract(@x1).$divide(2), @y2.$subtract(@y1).$divide(2)]" ) print(f.single(item)) timer.time_it(f.single, item, iterations_per_run=10000, runs=10) timer.statistics()