jupyterlite-simple-cors-proxy
Simple CORS proxy wrapper for making http requests from JupyterLite. Uses https://corsproxy.io/
Installation
pip install jupyterlite-simple-cors-proxy
Usage
from jupyterlite_simple_cors_proxy.proxy import cors_proxy_get, robust_get_request, furl, xurl
url = "https://api.example.com/data"
params = {"key": "value"}
cross_origin_url = xurl(url)
file_ob = furl(url)
response = cors_proxy_get(url, params)
print(response.text)
data = response.json()
raw = response.content
The robust_get_request()
will first try a simple request, then a proxied request: robust_get_request(url, params)
Features
- Simple CORS proxy wrapper
- Requests response object
- Support for URL parameters
fastf1
cors proxy
A monkey patch for fastf1
is provided as:
import fast f1
from jupyterlite_simple_cors_proxy.fastf1_proxy import enable_cors_proxy
enable_cors_proxy(
)
CorsProxy
with cache facility
Via claude.ai
, the package is now further enriched.
Note that pyodide
sqlite can't write to /drive
so the cache path dir needs to be something like /tmp
or a dir created on /
.
I'm not convinced the following works in pyodide
and xeus-python
yet - requests-cache
dependency issues etc. requests-cache
has requirements attrs
, cattrs
,platformdirs
, url-normalize
.
from simple_cors_proxy.proxy import CorsProxy
proxy = CorsProxy(use_cache=True, expire_after=3600)
file_like = proxy.furl('https://example.com/somefile.csv')
import pandas as pd
from simple_cors_proxy.cacheproxy import CorsProxy
proxy = CorsProxy(use_cache=True)
file_like = proxy.furl('https://example.com/data.csv')
df = pd.read_csv(file_like)
from simple_cors_proxy.proxy import create_cached_proxy
proxy = create_cached_proxy(cache_name='my_cache', expire_after=86400)
file_like = proxy.furl('https://example.com/somefile.csv')