done
This commit is contained in:
		
							
								
								
									
										57
									
								
								lib/python3.11/site-packages/babel/localtime/_helpers.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								lib/python3.11/site-packages/babel/localtime/_helpers.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,57 @@
 | 
			
		||||
try:
 | 
			
		||||
    import pytz
 | 
			
		||||
except ModuleNotFoundError:
 | 
			
		||||
    pytz = None
 | 
			
		||||
 | 
			
		||||
try:
 | 
			
		||||
    import zoneinfo
 | 
			
		||||
except ModuleNotFoundError:
 | 
			
		||||
    zoneinfo = None
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def _get_tzinfo(tzenv: str):
 | 
			
		||||
    """Get the tzinfo from `zoneinfo` or `pytz`
 | 
			
		||||
 | 
			
		||||
    :param tzenv: timezone in the form of Continent/City
 | 
			
		||||
    :return: tzinfo object or None if not found
 | 
			
		||||
    """
 | 
			
		||||
    if pytz:
 | 
			
		||||
        try:
 | 
			
		||||
            return pytz.timezone(tzenv)
 | 
			
		||||
        except pytz.UnknownTimeZoneError:
 | 
			
		||||
            pass
 | 
			
		||||
    else:
 | 
			
		||||
        try:
 | 
			
		||||
            return zoneinfo.ZoneInfo(tzenv)
 | 
			
		||||
        except ValueError as ve:
 | 
			
		||||
            # This is somewhat hacky, but since _validate_tzfile_path() doesn't
 | 
			
		||||
            # raise a specific error type, we'll need to check the message to be
 | 
			
		||||
            # one we know to be from that function.
 | 
			
		||||
            # If so, we pretend it meant that the TZ didn't exist, for the benefit
 | 
			
		||||
            # of `babel.localtime` catching the `LookupError` raised by
 | 
			
		||||
            # `_get_tzinfo_or_raise()`.
 | 
			
		||||
            # See https://github.com/python-babel/babel/issues/1092
 | 
			
		||||
            if str(ve).startswith("ZoneInfo keys "):
 | 
			
		||||
                return None
 | 
			
		||||
        except zoneinfo.ZoneInfoNotFoundError:
 | 
			
		||||
            pass
 | 
			
		||||
 | 
			
		||||
    return None
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def _get_tzinfo_or_raise(tzenv: str):
 | 
			
		||||
    tzinfo = _get_tzinfo(tzenv)
 | 
			
		||||
    if tzinfo is None:
 | 
			
		||||
        raise LookupError(
 | 
			
		||||
            f"Can not find timezone {tzenv}. \n"
 | 
			
		||||
            "Timezone names are generally in the form `Continent/City`.",
 | 
			
		||||
        )
 | 
			
		||||
    return tzinfo
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def _get_tzinfo_from_file(tzfilename: str):
 | 
			
		||||
    with open(tzfilename, 'rb') as tzfile:
 | 
			
		||||
        if pytz:
 | 
			
		||||
            return pytz.tzfile.build_tzinfo('local', tzfile)
 | 
			
		||||
        else:
 | 
			
		||||
            return zoneinfo.ZoneInfo.from_file(tzfile)
 | 
			
		||||
		Reference in New Issue
	
	Block a user