Set the environment variable 'env_name' to 'value' Save previous value, yield, and then restore the previous value stored in the environment variable 'env_name'. If 'value' is None, do nothing
(env_name: str, value: str | None)
| 786 | |
| 787 | @contextlib.contextmanager |
| 788 | def set_environ(env_name: str, value: str | None) -> Generator[None, None, None]: |
| 789 | """Set the environment variable 'env_name' to 'value' |
| 790 | |
| 791 | Save previous value, yield, and then restore the previous value stored in |
| 792 | the environment variable 'env_name'. |
| 793 | |
| 794 | If 'value' is None, do nothing""" |
| 795 | value_changed = value is not None |
| 796 | old_value: str | None = None |
| 797 | if value_changed: |
| 798 | old_value = os.environ.get(env_name) |
| 799 | os.environ[env_name] = value |
| 800 | try: |
| 801 | yield |
| 802 | finally: |
| 803 | if value_changed: |
| 804 | if old_value is None: |
| 805 | del os.environ[env_name] |
| 806 | else: |
| 807 | os.environ[env_name] = old_value |
| 808 | |
| 809 | |
| 810 | def should_bypass_proxies(url: str, no_proxy: str | None) -> bool: |