Skip to content

Commit 7efa08a

Browse files
authored
Merge pull request #3130 from cloudflare/hoodmane/pyodide-tar-reader-refactor
NFC Pyodide Rename PackagesTarReader to ReadOnlyBuffer and remove 0-arg constructor
2 parents a58e36c + 76409ad commit 7efa08a

File tree

4 files changed

+12
-34
lines changed

4 files changed

+12
-34
lines changed

src/workerd/api/modules.h

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,6 @@ namespace workerd::api {
2020
template <class Registry>
2121
void registerModules(Registry& registry, auto featureFlags) {
2222
node::registerNodeJsCompatModules(registry, featureFlags);
23-
if (featureFlags.getPythonWorkers()) {
24-
pyodide::registerPyodideModules(registry, featureFlags);
25-
}
2623
registerUnsafeModules(registry, featureFlags);
2724
if (featureFlags.getRttiApi()) {
2825
registerRTTIModule(registry);
@@ -47,11 +44,6 @@ void registerBuiltinModules(jsg::modules::ModuleRegistry::Builder& builder, auto
4744
builder.add(getExternalUnsafeModuleBundle<TypeWrapper>(featureFlags));
4845
}
4946

50-
if (featureFlags.getPythonWorkers()) {
51-
builder.add(pyodide::getExternalPyodideModuleBundle(featureFlags));
52-
builder.add(pyodide::getInternalPyodideModuleBundle(featureFlags));
53-
}
54-
5547
if (featureFlags.getRttiApi()) {
5648
builder.add(getExternalRttiModuleBundle<TypeWrapper>(featureFlags));
5749
}

src/workerd/api/pyodide/pyodide.c++

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ static int readToTarget(
6060
return toCopy;
6161
}
6262

63-
int PackagesTarReader::read(jsg::Lock& js, int offset, kj::Array<kj::byte> buf) {
63+
int ReadOnlyBuffer::read(jsg::Lock& js, int offset, kj::Array<kj::byte> buf) {
6464
return readToTarget(source, offset, buf);
6565
}
6666

src/workerd/api/pyodide/pyodide.h

Lines changed: 6 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -54,15 +54,15 @@ struct PythonConfig {
5454

5555
// A function to read a segment of the tar file into a buffer
5656
// Set up this way to avoid copying files that aren't accessed.
57-
class PackagesTarReader: public jsg::Object {
57+
class ReadOnlyBuffer: public jsg::Object {
5858
kj::ArrayPtr<const kj::byte> source;
5959

6060
public:
61-
PackagesTarReader(kj::ArrayPtr<const kj::byte> src = PYODIDE_PACKAGES_TAR.get()): source(src) {};
61+
ReadOnlyBuffer(kj::ArrayPtr<const kj::byte> src): source(src) {};
6262

6363
int read(jsg::Lock& js, int offset, kj::Array<kj::byte> buf);
6464

65-
JSG_RESOURCE_TYPE(PackagesTarReader) {
65+
JSG_RESOURCE_TYPE(ReadOnlyBuffer) {
6666
JSG_METHOD(read);
6767
}
6868
};
@@ -277,10 +277,10 @@ class ArtifactBundler: public jsg::Object {
277277
return false; // TODO(later): Remove this function once we regenerate the bundle.
278278
}
279279

280-
kj::Maybe<jsg::Ref<PackagesTarReader>> getPackage(kj::String path) {
280+
kj::Maybe<jsg::Ref<ReadOnlyBuffer>> getPackage(kj::String path) {
281281
KJ_IF_SOME(pacman, packageManager) {
282282
KJ_IF_SOME(ptr, pacman.getPyodidePackage(path)) {
283-
return jsg::alloc<PackagesTarReader>(ptr);
283+
return jsg::alloc<ReadOnlyBuffer>(ptr);
284284
}
285285
}
286286

@@ -416,28 +416,9 @@ jsg::Ref<PyodideMetadataReader> makePyodideMetadataReader(
416416
bool hasPythonModules(capnp::List<server::config::Worker::Module>::Reader modules);
417417

418418
#define EW_PYODIDE_ISOLATE_TYPES \
419-
api::pyodide::PackagesTarReader, api::pyodide::PyodideMetadataReader, \
419+
api::pyodide::ReadOnlyBuffer, api::pyodide::PyodideMetadataReader, \
420420
api::pyodide::ArtifactBundler, api::pyodide::DiskCache, \
421421
api::pyodide::DisabledInternalJaeger, api::pyodide::SimplePythonLimiter, \
422422
api::pyodide::MemorySnapshotResult
423423

424-
template <class Registry>
425-
void registerPyodideModules(Registry& registry, auto featureFlags) {
426-
// We add `pyodide:` packages here including python-entrypoint-helper.js.
427-
registry.template addBuiltinModule<PackagesTarReader>(
428-
"pyodide-internal:packages_tar_reader", workerd::jsg::ModuleRegistry::Type::INTERNAL);
429-
}
430-
431-
kj::Own<jsg::modules::ModuleBundle> getInternalPyodideModuleBundle(auto featureFlags) {
432-
jsg::modules::ModuleBundle::BuiltinBuilder builder(
433-
jsg::modules::ModuleBundle::BuiltinBuilder::Type::BUILTIN_ONLY);
434-
return builder.finish();
435-
}
436-
437-
kj::Own<jsg::modules::ModuleBundle> getExternalPyodideModuleBundle(auto featureFlags) {
438-
jsg::modules::ModuleBundle::BuiltinBuilder builder(
439-
jsg::modules::ModuleBundle::BuiltinBuilder::Type::BUILTIN);
440-
return builder.finish();
441-
}
442-
443424
} // namespace workerd::api::pyodide

src/workerd/server/workerd-api.c++

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -557,6 +557,11 @@ void WorkerdApi::compileModules(jsg::Lock& lockParam,
557557
modules->addBuiltinModule("pyodide-internal:runtime-generated/metadata",
558558
makePyodideMetadataReader(conf, impl->pythonConfig), jsg::ModuleRegistry::Type::INTERNAL);
559559

560+
// Inject packages tar file
561+
modules->addBuiltinModule("pyodide-internal:packages_tar_reader",
562+
jsg::alloc<ReadOnlyBuffer>(PYODIDE_PACKAGES_TAR.get()),
563+
workerd::jsg::ModuleRegistry::Type::INTERNAL);
564+
560565
// Inject artifact bundler.
561566
modules->addBuiltinModule("pyodide-internal:artifacts",
562567
ArtifactBundler::makeDisabledBundler(), jsg::ModuleRegistry::Type::INTERNAL);

0 commit comments

Comments
 (0)