|
52 | 52 | pyqtgraph.setConfigOption("exitCleanup", False) |
53 | 53 |
|
54 | 54 |
|
| 55 | +default_proxies = None |
| 56 | + |
| 57 | + |
55 | 58 | def fix_osx_10_9_private_font(): |
56 | 59 | # Fix fonts on Os X (QTBUG 47206, 40833, 32789) |
57 | 60 | if sys.platform == "darwin": |
@@ -88,10 +91,26 @@ def fix_win_pythonw_std_stream(): |
88 | 91 | def fix_set_proxy_env(): |
89 | 92 | """ |
90 | 93 | Set http_proxy/https_proxy environment variables (for requests, pip, ...) |
91 | | - from system settings on OS X and from registry on Windos. On unix, no-op. |
| 94 | + from user-specified settings or, if none, from system settings on OS X |
| 95 | + and from registry on Windos. |
92 | 96 | """ |
93 | | - for scheme, proxy in getproxies().items(): |
94 | | - os.environ[scheme + '_proxy'] = proxy |
| 97 | + # save default proxies so that setting can be reset |
| 98 | + global default_proxies |
| 99 | + if default_proxies is None: |
| 100 | + default_proxies = getproxies() # can also read windows and macos settings |
| 101 | + |
| 102 | + settings = QSettings() |
| 103 | + proxies = getproxies() |
| 104 | + for scheme in set(["http", "https"]) | set(proxies): |
| 105 | + from_settings = settings.value("network/" + scheme + "-proxy", "", type=str) |
| 106 | + from_default = default_proxies.get(scheme, "") |
| 107 | + env_scheme = scheme + '_proxy' |
| 108 | + if from_settings: |
| 109 | + os.environ[env_scheme] = from_settings |
| 110 | + elif from_default: |
| 111 | + os.environ[env_scheme] = from_default # crucial for windows/macos support |
| 112 | + else: |
| 113 | + os.environ.pop(env_scheme, "") |
95 | 114 |
|
96 | 115 |
|
97 | 116 | def make_sql_logger(level=logging.INFO): |
@@ -247,9 +266,6 @@ def main(argv=None): |
247 | 266 | # Try to fix fonts on OSX Mavericks |
248 | 267 | fix_osx_10_9_private_font() |
249 | 268 |
|
250 | | - # Set http_proxy environment variable(s) for some clients |
251 | | - fix_set_proxy_env() |
252 | | - |
253 | 269 | # File handler should always be at least INFO level so we need |
254 | 270 | # the application root level to be at least at INFO. |
255 | 271 | root_level = min(levels[options.log_level], logging.INFO) |
@@ -313,6 +329,9 @@ def main(argv=None): |
313 | 329 | config.widget_settings_dir(), |
314 | 330 | ignore_errors=True) |
315 | 331 |
|
| 332 | + # Set http_proxy environment variables, after (potentially) clearing settings |
| 333 | + fix_set_proxy_env() |
| 334 | + |
316 | 335 | file_handler = logging.FileHandler( |
317 | 336 | filename=os.path.join(config.log_dir(), "canvas.log"), |
318 | 337 | mode="w" |
|
0 commit comments