MM_PER_IN = 25.4 # A progression of root depths, decreasing by a constant amount each step. def linear_depths(start, end, base, increment): return {str(depth): base - (depth - start) * increment for depth in range(start, end + 1)} def depths_in_to_mm(depths): return {name: depth * MM_PER_IN for name, depth in depths.items()} # https://www.lockreference.com/wp-content/uploads/2019/03/Yale-Disc-Tumbler.pdf yale_disc = depths_in_to_mm({ "1": .250, "2": .230, "X": .220, # also called "7" "3": .210, "4": .190, "5": .170, }) # https://www.lockreference.com/wp-content/uploads/2018/01/Yale-.019.pdf yale_019 = depths_in_to_mm(linear_depths(0, 9, .320, .019)) # https://www.lockreference.com/wp-content/uploads/2018/01/Yale-.025.pdf yale_025 = depths_in_to_mm(linear_depths(0, 7, .320, .025)) # https://www.lockreference.com/wp-content/uploads/2018/09/National-Disc-Tumbler-Single-Sided.pdf national_disc_tumbler = depths_in_to_mm(linear_depths(1, 4, .250, .025))