gpt-4 / utils /enver.py
Hansimov's picture
:pencil: [Doc] Readme: Running example, and proxy feature in progress
9e74f90
import json
import requests
import os
from pathlib import Path
class OSEnver:
def __init__(self):
self.envs_stack = []
self.envs = os.environ.copy()
def store_envs(self):
self.envs_stack.append(self.envs)
def restore_envs(self):
self.envs = self.envs_stack.pop()
if self.global_scope:
os.environ = self.envs
def set_envs(self, secrets=True, proxies=None, store_envs=True):
# caller_info = inspect.stack()[1]
# logger.back(f"OS Envs is set by: {caller_info.filename}")
if store_envs:
self.store_envs()
if secrets:
secrets_path = Path(__file__).parents[1] / "secrets.json"
if secrets_path.exists():
with open(secrets_path, "r") as rf:
secrets = json.load(rf)
else:
secrets = {}
if proxies:
for proxy_env in ["http_proxy", "https_proxy"]:
if isinstance(proxies, str):
self.envs[proxy_env] = proxies
elif "http_proxy" in secrets.keys():
self.envs[proxy_env] = secrets["http_proxy"]
elif os.getenv("http_proxy"):
self.envs[proxy_env] = os.getenv("http_proxy")
else:
continue
self.proxy = (
self.envs.get("all_proxy")
or self.envs.get("http_proxy")
or self.envs.get("https_proxy")
or None
)
self.requests_proxies = {
"http": self.proxy,
"https": self.proxy,
}
# https://www.proxynova.com/proxy-server-list/country-us/
print(f"Using proxy: [{self.proxy}]")
# r = requests.get(
# "http://ifconfig.me/ip",
# proxies=self.requests_proxies,
# timeout=10,
# )
# print(f"[r.status_code] r.text")
enver = OSEnver()