Skip to content
File

Blob: src/workerd/api/pyodide/requirements.h

cpp35 lines
1// Copyright (c) 2017-2022 Cloudflare, Inc.
2// Licensed under the Apache 2.0 license found in the LICENSE file or at:
3// https://opensource.org/licenses/Apache-2.0
4#pragma once
5 
6#include <capnp/compat/json.capnp.h>
7#include <capnp/list.h>
8#include <kj/common.h>
9#include <kj/map.h>
10 
11namespace workerd::api::pyodide {
12 
13capnp::json::Value::Reader getField(
14 capnp::List<::capnp::json::Value::Field, capnp::Kind::STRUCT>::Reader &object,
15 kj::StringPtr name);
16 
17kj::String canonicalizePythonPackageName(kj::StringPtr name);
18 
19// map from requirement to list of dependencies
20using DepMap = kj::HashMap<kj::String, kj::Vector<kj::String>>;
21 
22DepMap getDepMapFromPackagesLock(
23 capnp::List<capnp::json::Value::Field, capnp::Kind::STRUCT>::Reader &packages);
24 
25kj::Own<capnp::List<capnp::json::Value::Field>::Reader> parseLockFile(
26 kj::StringPtr lockFileContents);
27 
28kj::HashSet<kj::String> getPythonPackageNames(
29 capnp::List<capnp::json::Value::Field>::Reader packages,
30 const DepMap &depMap,
31 kj::ArrayPtr<kj::String> requirements,
32 kj::StringPtr packagesVersion);
33 
34} // namespace workerd::api::pyodide