Coverage for mlos_bench/mlos_bench/os_environ.py: 67%

9 statements  

« prev     ^ index     » next       coverage.py v7.5.1, created at 2024-05-06 00:35 +0000

1# 

2# Copyright (c) Microsoft Corporation. 

3# Licensed under the MIT License. 

4# 

5""" 

6Simple platform agnostic abstraction for the OS environment variables. 

7Meant as a replacement for os.environ vs nt.environ. 

8 

9Example 

10------- 

11from mlos_bench.os_env import environ 

12environ['FOO'] = 'bar' 

13environ.get('PWD') 

14""" 

15 

16import os 

17import sys 

18 

19 

20if sys.platform == 'win32': 

21 import nt # type: ignore[import-not-found] # pylint: disable=import-error # (3.8) 

22 

23if sys.version_info >= (3, 10): 

24 from typing import TypeAlias 

25else: 

26 from typing_extensions import TypeAlias 

27 

28if sys.version_info >= (3, 9): 

29 EnvironType: TypeAlias = os._Environ[str] # pylint: disable=protected-access,disable=unsubscriptable-object 

30else: 

31 EnvironType: TypeAlias = os._Environ # pylint: disable=protected-access 

32 

33# Handle case sensitivity differences between platforms. 

34# https://stackoverflow.com/a/19023293 

35environ: EnvironType = nt.environ if sys.platform == 'win32' else os.environ # type: ignore[name-defined] 

36 

37__all__ = ['environ']