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
« 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.
9Example
10-------
11from mlos_bench.os_env import environ
12environ['FOO'] = 'bar'
13environ.get('PWD')
14"""
16import os
17import sys
20if sys.platform == 'win32':
21 import nt # type: ignore[import-not-found] # pylint: disable=import-error # (3.8)
23if sys.version_info >= (3, 10):
24 from typing import TypeAlias
25else:
26 from typing_extensions import TypeAlias
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
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]
37__all__ = ['environ']