#!/usr/bin/env python3 """ timestamp string checks """ from corelibs.string_handling.timestamp_strings import ( seconds_to_string, convert_to_seconds, TimeParseError, TimeUnitError ) def main() -> None: """ Comment """ test_cases = [ "5M 6d", # 5 months, 6 days "2h 30m 45s", # 2 hours, 30 minutes, 45 seconds "1Y 2M 3d", # 1 year, 2 months, 3 days "1h", # 1 hour "30m", # 30 minutes "2 hours 15 minutes", # 2 hours, 15 minutes "1d 12h", # 1 day, 12 hours "3M 2d 4h", # 3 months, 2 days, 4 hours "45s", # 45 seconds "-45s", # -45 seconds "-1h", # -1 hour "-30m", # -30 minutes "-2h 30m 45s", # -2 hours, 30 minutes, 45 seconds "-1d 12h", # -1 day, 12 hours "-3M 2d 4h", # -3 months, 2 days, 4 hours "-1Y 2M 3d", # -1 year, 2 months, 3 days "-2 hours 15 minutes", # -2 hours, 15 minutes "-1 year 2 months", # -1 year, 2 months "-2Y 6M 15d 8h 30m 45s", # Complex negative example "1 year 2 months", # 1 year, 2 months "2Y 6M 15d 8h 30m 45s", # Complex example # invalid tests "5M 6d 2M", # months appears twice "2h 30m 45s 1h", # hours appears twice "1d 2 days", # days appears twice (short and long form) "30m 45 minutes", # minutes appears twice "1Y 2 years", # years appears twice "1x 2 yrs", # invalid names 123, # int 789.12, # float 456.56, # float, high "4566", # int as string "5551.12", # float as string "5551.56", # float, high as string ] for time_string in test_cases: try: result = convert_to_seconds(time_string) print(f"Human readable to seconds: {time_string} => {result}") except (TimeParseError, TimeUnitError) as e: print(f"Error encountered for {time_string}: {type(e).__name__}: {e}") test_values = [ 'as is string', -172800.001234, # -2 days, -0.001234 seconds -90061.789, # -1 day, -1 hour, -1 minute, -1.789 seconds -3661.456, # -1 hour, -1 minute, -1.456 seconds -65.123, # -1 minute, -5.123 seconds -1.5, # -1.5 seconds -0.001, # -1 millisecond -0.000001, # -1 microsecond 0, # 0 seconds 0.000001, # 1 microsecond 0.001, # 1 millisecond 1.5, # 1.5 seconds 65.123, # 1 minute, 5.123 seconds 3661.456, # 1 hour, 1 minute, 1.456 seconds 90061.789, # 1 day, 1 hour, 1 minute, 1.789 seconds 172800.001234 # 2 days, 0.001234 seconds ] for time_value in test_values: result = seconds_to_string(time_value, show_microseconds=True) print(f"Seconds to human readable: {time_value} => {result}") if __name__ == "__main__": main() # __END__