You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			47 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Python
		
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Python
		
	
"""
 | 
						|
Timezone utilities
 | 
						|
 | 
						|
Just UTC-awareness right now
 | 
						|
"""
 | 
						|
 | 
						|
# Copyright (c) Jupyter Development Team.
 | 
						|
# Distributed under the terms of the Modified BSD License.
 | 
						|
from __future__ import annotations
 | 
						|
 | 
						|
from datetime import datetime, timedelta, timezone, tzinfo
 | 
						|
 | 
						|
# constant for zero offset
 | 
						|
ZERO = timedelta(0)
 | 
						|
 | 
						|
 | 
						|
class tzUTC(tzinfo):  # noqa: N801
 | 
						|
    """tzinfo object for UTC (zero offset)"""
 | 
						|
 | 
						|
    def utcoffset(self, d: datetime | None) -> timedelta:
 | 
						|
        """Compute utcoffset."""
 | 
						|
        return ZERO
 | 
						|
 | 
						|
    def dst(self, d: datetime | None) -> timedelta:
 | 
						|
        """Compute dst."""
 | 
						|
        return ZERO
 | 
						|
 | 
						|
 | 
						|
def utcnow() -> datetime:
 | 
						|
    """Return timezone-aware UTC timestamp"""
 | 
						|
    return datetime.now(timezone.utc)
 | 
						|
 | 
						|
 | 
						|
def utcfromtimestamp(timestamp: float) -> datetime:
 | 
						|
    return datetime.fromtimestamp(timestamp, timezone.utc)
 | 
						|
 | 
						|
 | 
						|
UTC = tzUTC()  # type:ignore[abstract]
 | 
						|
 | 
						|
 | 
						|
def isoformat(dt: datetime) -> str:
 | 
						|
    """Return iso-formatted timestamp
 | 
						|
 | 
						|
    Like .isoformat(), but uses Z for UTC instead of +00:00
 | 
						|
    """
 | 
						|
    return dt.isoformat().replace("+00:00", "Z")
 |