Why is this stubbed Brython page giving cascading errors?

41 views Asked by At

I have a stub of a webpage that is designed to make jQuery UI and Brython with Python's standard library be available:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Game</title>
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.13.2/themes/base/jquery-ui.css" integrity="sha512-lCk0aEL6CvAGQvaZ47hoq1v/hNsunE8wD4xmmBelkJjg51DauW6uVdaWEJlwgAE6PxcY7/SThs1T4+IMwwpN7w==" crossorigin="anonymous" referrerpolicy="no-referrer" />
    </head>
    <body onload="brython();">
        <h1>Game</h1>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js" integrity="sha512-v2CJ7UaYy4JwqLDIrZUI/4hqeoQieOmAZNXBeQyjo21dadnwR+8ZaIJVT8EE2iyI61OV8e6M8PP2/4hpQINQ/g==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.13.2/jquery-ui.min.js" integrity="sha512-57oZ/vW8ANMjR/KQ6Be9v/+/h6bq9/l3f0Oc7vn6qMqyhvPd1cvKBRWWpzu0QoneImqr2SkmO4MSqU+RpHom3Q==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/brython/3.12.0/brython.min.js" integrity="sha512-c9KPreQJkIztVdIopz/3ywOh1dexbsWtuH/Xd3SYhp9Qkp3VXttFYcGAyBmQyvc7ppTgtJHWqMMeb/nhZJ2kHg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/brython/3.12.0/brython_stdlib.js" integrity="sha512-zk2q2GXtqXBlbcxK+BFPg6pZBVO9EvOiOTreyk5n3SIRPlv4JmG8zCPNL32mSuPX4ZRoYXD+HoMiV6UqoocYeg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
        <script type="text/python" src="static/py/page.bpy"></script>
    </body>
</html>

The static/py/page.bpy is a stub that seems to fail on attempting to import Python's pickle module:

#!/usr/bin/python3
  
from browser import document, window

import pickled

jQuery = window.jQuery

This is getting a cascade of errors:

brython.min.js:1 
        
        
       GET https://cjshayward.com/wp-content/project/game/static/py/pickled.py?v=1700418980119 404 (Not Found)
$download_module @ brython.min.js:1
PathEntryFinder.find_spec @ brython.min.js:1
method @ brython.min.js:1
PathFinder.find_spec @ brython.min.js:1
f @ brython.min.js:1
import_engine @ brython.min.js:1
$B.$__import__ @ brython.min.js:1
$B.$import @ brython.min.js:1
eval @ VM908:22
$B.loop @ brython.min.js:1
$B.run_script @ brython.min.js:1
$B.loop @ brython.min.js:1
req.onreadystatechange @ brython.min.js:1
XMLHttpRequest.send (async)
$B.ajax_load_script @ brython.min.js:1
$B.loop @ brython.min.js:1
run_scripts @ brython.min.js:1
$B.parser.brython @ brython.min.js:1
onload @ game/:8
ev.target.body.onload @ brython.min.js:1
load (async)
(anonymous) @ brython.min.js:1
brython.min.js:1 Error 404 means that Python module pickled was not found at url https://cjshayward.com/wp-content/project/game/static/py/pickled.py
brython.min.js:1 
        
        
       GET https://cjshayward.com/wp-content/project/game/static/py/pickled/__init__.py?v=1700418980316 404 (Not Found)
$download_module @ brython.min.js:1
PathEntryFinder.find_spec @ brython.min.js:1
method @ brython.min.js:1
PathFinder.find_spec @ brython.min.js:1
f @ brython.min.js:1
import_engine @ brython.min.js:1
$B.$__import__ @ brython.min.js:1
$B.$import @ brython.min.js:1
eval @ VM908:22
$B.loop @ brython.min.js:1
$B.run_script @ brython.min.js:1
$B.loop @ brython.min.js:1
req.onreadystatechange @ brython.min.js:1
XMLHttpRequest.send (async)
$B.ajax_load_script @ brython.min.js:1
$B.loop @ brython.min.js:1
run_scripts @ brython.min.js:1
$B.parser.brython @ brython.min.js:1
onload @ game/:8
ev.target.body.onload @ brython.min.js:1
load (async)
(anonymous) @ brython.min.js:1
brython.min.js:1 Error 404 means that Python module pickled was not found at url https://cjshayward.com/wp-content/project/game/static/py/pickled/__init__.py
brython.min.js:1 Access to XMLHttpRequest at 'https://cdnjs.cloudflare.com/ajax/libs/brython/3.12.0/Lib/site-packages/pickled.py?v=1700418980450' from origin 'https://cjshayward.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
$download_module @ brython.min.js:1
PathEntryFinder.find_spec @ brython.min.js:1
method @ brython.min.js:1
PathFinder.find_spec @ brython.min.js:1
f @ brython.min.js:1
import_engine @ brython.min.js:1
$B.$__import__ @ brython.min.js:1
$B.$import @ brython.min.js:1
eval @ VM908:22
$B.loop @ brython.min.js:1
$B.run_script @ brython.min.js:1
$B.loop @ brython.min.js:1
req.onreadystatechange @ brython.min.js:1
XMLHttpRequest.send (async)
$B.ajax_load_script @ brython.min.js:1
$B.loop @ brython.min.js:1
run_scripts @ brython.min.js:1
$B.parser.brython @ brython.min.js:1
onload @ game/:8
ev.target.body.onload @ brython.min.js:1
load (async)
(anonymous) @ brython.min.js:1
brython.min.js:1 
        
        
       GET https://cdnjs.cloudflare.com/ajax/libs/brython/3.12.0/Lib/site-packages/pickled.py?v=1700418980450 net::ERR_FAILED 403 (Forbidden)
$download_module @ brython.min.js:1
PathEntryFinder.find_spec @ brython.min.js:1
method @ brython.min.js:1
PathFinder.find_spec @ brython.min.js:1
f @ brython.min.js:1
import_engine @ brython.min.js:1
$B.$__import__ @ brython.min.js:1
$B.$import @ brython.min.js:1
eval @ VM908:22
$B.loop @ brython.min.js:1
$B.run_script @ brython.min.js:1
$B.loop @ brython.min.js:1
req.onreadystatechange @ brython.min.js:1
XMLHttpRequest.send (async)
$B.ajax_load_script @ brython.min.js:1
$B.loop @ brython.min.js:1
run_scripts @ brython.min.js:1
$B.parser.brython @ brython.min.js:1
onload @ game/:8
ev.target.body.onload @ brython.min.js:1
load (async)
(anonymous) @ brython.min.js:1
brython.min.js:1 Traceback (most recent call last):
  File "https://cjshayward.com/wp-content/project/game/static/py/page.bpy", line 5, in <module>
    import pickled
JavascriptError: Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'https://cdnjs.cloudflare.com/ajax/libs/brython/3.12.0/Lib/site-packages/pickled.py?v=1700418980450'.

Javascript error
NetworkError: Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'https://cdnjs.cloudflare.com/ajax/libs/brython/3.12.0/Lib/site-packages/pickled.py?v=1700418980450'.
Error: Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'https://cdnjs.cloudflare.com/ajax/libs/brython/3.12.0/Lib/site-packages/pickled.py?v=1700418980450'.
    at $download_module (https://cdnjs.cloudflare.com/ajax/libs/brython/3.12.0/brython.min.js:1:509236)
    at PathEntryFinder.find_spec (https://cdnjs.cloudflare.com/ajax/libs/brython/3.12.0/brython.min.js:1:522347)
    at method (https://cdnjs.cloudflare.com/ajax/libs/brython/3.12.0/brython.min.js:1:301957)
    at PathFinder.find_spec (https://cdnjs.cloudflare.com/ajax/libs/brython/3.12.0/brython.min.js:1:521465)
    at f (https://cdnjs.cloudflare.com/ajax/libs/brython/3.12.0/brython.min.js:1:332091)
    at import_engine (https://cdnjs.cloudflare.com/ajax/libs/brython/3.12.0/brython.min.js:1:524573)
    at $B.$__import__ (https://cdnjs.cloudflare.com/ajax/libs/brython/3.12.0/brython.min.js:1:527503)
    at $B.$import (https://cdnjs.cloudflare.com/ajax/libs/brython/3.12.0/brython.min.js:1:531266)
    at eval (eval at $B.loop (https://cdnjs.cloudflare.com/ajax/libs/brython/3.12.0/brython.min.js:1:265180), <anonymous>:22:4)
    at $B.loop (https://cdnjs.cloudflare.com/ajax/libs/brython/3.12.0/brython.min.js:1:265221)

What can I do so that it loads Brython with both the Python standard library and jQuery UI available and I can genuinely start running and editing static/page/page.bpy after successful import of Python's pickle module?

1

There are 1 answers

0
Christos Hayward On

I had a typo; the module is pickle but I typed pickled.