Make requests a fully featured HTTPS library#12
Draft
Copilot wants to merge 3 commits into
Draft
Conversation
Co-authored-by: acbart <897227+acbart@users.noreply.github.com>
…rary Co-authored-by: acbart <897227+acbart@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Add missing features to requests skulpt library
Make requests a fully featured HTTPS library
Oct 18, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Overview
This PR transforms the Skulpt
requestsmodule from a minimal partial implementation into a fully-featured HTTPS library that closely matches the Python requests API. The enhancement adds all major missing features while maintaining 100% backward compatibility with existing code, including BlockPy's mock data functionality.Problem Statement
The original implementation was extremely limited:
textattribute and basic file-like methodsstatus_code,headers,url,ok,reasonThis made it unsuitable for teaching realistic HTTP API interactions and limited its educational value.
Solution
Added comprehensive features to match the Python requests library:
HTTP Methods (7 total, was 2)
Enhanced Response Object
Request Parameters (6 parameters)
Session Class
Exception Handling
Implementation Details
src/lib/requests/__init__.js(+408 lines, -39 lines)Sk.requestsGethook for BlockPy integrationSk.ffithroughoutTesting
test/run/t906.pyfor requests functionalityDocumentation
Added comprehensive documentation and examples:
doc/requests_library.md- Complete API reference with usage examplesexample/requests_comprehensive_example.py- Working demonstration of all featuresSecurity
Backward Compatibility
100% backward compatible - existing code requires zero changes:
requests.get()andrequests.post()work exactly as beforetextattribute,json(), iteration all unchangedread,readline,readlines) preservedSk.requestsGet) unchangedKnown Limitations
requests.request('DELETE', url)instead ofrequests.delete()due to JavaScript reserved word limitationMetrics
Educational Impact
This enhancement makes the requests library suitable for teaching realistic HTTP API interactions in educational environments like BlockPy, while maintaining the simplicity and mock data support needed for classroom use.
Fixes #1
Original prompt
Fixes #11
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.