mirror of
				https://github.com/datahub-project/datahub.git
				synced 2025-11-03 20:27:50 +00:00 
			
		
		
		
	fix(ingest): reporting should work with timestamps (#5860)
This commit is contained in:
		
							parent
							
								
									494f38ea60
								
							
						
					
					
						commit
						2fea3d26df
					
				@ -2,7 +2,7 @@ import json
 | 
			
		||||
import pprint
 | 
			
		||||
import sys
 | 
			
		||||
from dataclasses import dataclass
 | 
			
		||||
from datetime import datetime, timedelta
 | 
			
		||||
from datetime import datetime, timedelta, timezone
 | 
			
		||||
from enum import Enum
 | 
			
		||||
from typing import Any, Dict
 | 
			
		||||
 | 
			
		||||
@ -24,19 +24,26 @@ class Report:
 | 
			
		||||
        elif isinstance(some_val, timedelta):
 | 
			
		||||
            return humanfriendly.format_timespan(some_val)
 | 
			
		||||
        elif isinstance(some_val, datetime):
 | 
			
		||||
            now = datetime.now()
 | 
			
		||||
            diff = now - some_val
 | 
			
		||||
            if abs(diff) < timedelta(seconds=1):
 | 
			
		||||
                # the timestamps are close enough that printing a duration isn't useful
 | 
			
		||||
                return f"{some_val} (now)."
 | 
			
		||||
            elif diff > timedelta(seconds=0):
 | 
			
		||||
                # timestamp is in the past
 | 
			
		||||
                return f"{some_val} ({humanfriendly.format_timespan(diff)} ago)."
 | 
			
		||||
            else:
 | 
			
		||||
                # timestamp is in the future
 | 
			
		||||
                return (
 | 
			
		||||
                    f"{some_val} (in {humanfriendly.format_timespan(some_val - now)})."
 | 
			
		||||
            try:
 | 
			
		||||
                # check if we have a tz_aware object or not (https://stackoverflow.com/questions/5802108/how-to-check-if-a-datetime-object-is-localized-with-pytz)
 | 
			
		||||
                tz_aware = (
 | 
			
		||||
                    some_val.tzinfo is not None
 | 
			
		||||
                    and some_val.tzinfo.utcoffset(some_val) is not None
 | 
			
		||||
                )
 | 
			
		||||
                now = datetime.now(timezone.utc) if tz_aware else datetime.now()
 | 
			
		||||
                diff = now - some_val
 | 
			
		||||
                if abs(diff) < timedelta(seconds=1):
 | 
			
		||||
                    # the timestamps are close enough that printing a duration isn't useful
 | 
			
		||||
                    return f"{some_val} (now)."
 | 
			
		||||
                elif diff > timedelta(seconds=0):
 | 
			
		||||
                    # timestamp is in the past
 | 
			
		||||
                    return f"{some_val} ({humanfriendly.format_timespan(diff)} ago)."
 | 
			
		||||
                else:
 | 
			
		||||
                    # timestamp is in the future
 | 
			
		||||
                    return f"{some_val} (in {humanfriendly.format_timespan(some_val - now)})."
 | 
			
		||||
            except Exception:
 | 
			
		||||
                # we don't want to fail reporting because we were unable to pretty print a timestamp
 | 
			
		||||
                return str(datetime)
 | 
			
		||||
        else:
 | 
			
		||||
            return str(some_val)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user