This is a module that mimics pyodide.http.pyfetch to enable simpler development by using one set of http calls for both local and pyodide executions.
Project description
pyfetch-mimic
- This is a simple module that mimics
pyodide.http.pyfetchto make local development forshinyliveprojects easier. It may work withpyodidein general, but that use case hasn't been tested. - For more information on Shinylive for Python, and general information on how to use additional third party libraries (like this one), see: https://shiny.posit.co/py/docs/shinylive.html
Install
- PyPI:
pip install pyfetch-mimic - Vendoring:
- Copy
pyfetch_mimic.pyinto your own project
- Copy
How to use
- Include the following conditional import statement at the beginning of the module that will use
http.pyfetch:import sys if "pyodide" in sys.modules: from pyodide import http else: from pyfetch_mimic import http
- Use
http.pyfetchas usual - NOTE: This is a work in progress and does not support all
pyodide.http.pyfetchfunctionality yet. I use this in my own production work, and the functionality that currently exists is simply the functionality that I need. If there is a need for additional functionality, please open an issue or pull request.
pyfetch examples
- These should all work with python
pyodide.http.pyfetchandpyfetch_mimic.http.pyfetch
# Download, save extracted file to local virtual fs
import sys
if "pyodide" in sys.modules:
from pyodide import http
else:
from pyfetch_mimic import http
async def sample():
response = await http.pyfetch("https://some_url/myfiles.zip")
await response.unpack_archive()
# Download text file to local virtual fs, load into pandas
import pandas as pd
import sys
if "pyodide" in sys.modules:
from pyodide import http
else:
from pyfetch_mimic import http
async def sample():
response = await http.pyfetch(url())
with open("test.json", mode="wb") as file:
file.write(await response.bytes())
df = pd.read_json("test.json")
# Download text file into BytesIO memory buffer, load into pandas
from io import BytesIO
import sys
import pandas as pd
if "pyodide" in sys.modules:
from pyodide import http
else:
from pyfetch_mimic import http
async def sample():
response = await http.pyfetch("<URL>")
buf = BytesIO(await response.bytes())
df = pd.read_json(buf)
Testing
Install Test Dependencies
pip install -e '.[tests]'
Run regular tests (verifies test endpoints and tests pyfetch-mimic)
- activate venv:
source .venv/bin/activate - start fastapi app:
python3 src_test_webserver/main.py - run pytest:
pytest -vv -x test
Run pyodide tests with pyfetch calls written identical to pyfetch-mimc
Manually
- activate venv and start test fastapi app using step above
- export shinylive app:
shinylive export ./test/tests_shinylive ./src_test_webserver/shinyapps - open shinylive app in edit mode:
http://localhost8000/apps/edit/ - Click "Run tests"
- If all function names at the bottom are followed by "passed", then everything should be ok
Using Robot Framework
- activate venv
- export shinylive app:
shinylive export ./test/tests_shinylive ./src_test_webserver/shinyapps - run robot:
robot test/robot_tests/
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyfetch_mimic-2024.6.14.tar.gz.
File metadata
- Download URL: pyfetch_mimic-2024.6.14.tar.gz
- Upload date:
- Size: 5.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.0.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
50724d3b7757218547e6375f31eb5e9e1740580a21c00951abb55eaccecb1265
|
|
| MD5 |
2178a7a2421cddf8c42786a69745117f
|
|
| BLAKE2b-256 |
9802beebe3c3766ed3cff6094551921f077b51dcf2ac6bdc9f5df7dd15c79b89
|
File details
Details for the file pyfetch_mimic-2024.6.14-py3-none-any.whl.
File metadata
- Download URL: pyfetch_mimic-2024.6.14-py3-none-any.whl
- Upload date:
- Size: 4.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.0.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
18b4357c2345b14af540bd79f21fab74025a794d89d0fd1fe8e80bf0fb94cc44
|
|
| MD5 |
5774e14e0cb03884fd9fb8b2c52bbac8
|
|
| BLAKE2b-256 |
b981f4e462d59809cb67ad5a8bcead0a351f163524eb749087ba0ceadf6ec239
|