Skip to content

Commit b8489fa

Browse files
committed
chore(sdk): resolve dep relative paths
1 parent 6049b89 commit b8489fa

File tree

5 files changed

+55
-8
lines changed

5 files changed

+55
-8
lines changed

typegraph/node/sdk/src/runtimes/python.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,11 @@ import {
99
} from "../gen/interfaces/metatype-typegraph-runtimes.js";
1010
import { Materializer, Runtime } from "./mod.js";
1111
import { fx } from "../index.js";
12-
import { getFileHash, getParentDirectories } from "../utils/file_utils.js";
12+
import {
13+
getFileHash,
14+
getParentDirectories,
15+
getRelativePath,
16+
} from "../utils/file_utils.js";
1317

1418
interface LambdaMat extends Materializer {
1519
fn: string;
@@ -113,11 +117,14 @@ export class PythonRuntime extends Runtime {
113117
const depMetas: ModuleDependencyMeta[] = [];
114118
for (const dep of deps) {
115119
const depHash = await getFileHash(dep);
116-
const parentDirs = getParentDirectories(dep);
120+
const depParentDirs = getParentDirectories(dep);
117121
const depMeta: ModuleDependencyMeta = {
118122
path: dep,
119123
depHash: depHash,
120-
relativePathPrefix: parentDirs,
124+
relativePathPrefix: getRelativePath(
125+
getParentDirectories(module),
126+
depParentDirs,
127+
),
121128
};
122129
depMetas.push(depMeta);
123130
}

typegraph/node/sdk/src/utils/file_utils.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,21 @@ export function getParentDirectories(filePath: string) {
5050
}
5151
return directories.reverse();
5252
}
53+
54+
export function getRelativePath(
55+
moduleParentDirs: string[],
56+
depParentDirs: string[],
57+
): string[] {
58+
let common = 0;
59+
let maxLength = Math.min(moduleParentDirs.length, depParentDirs.length);
60+
61+
for (let i = 0; i < maxLength; i++) {
62+
if (moduleParentDirs[i] === depParentDirs[i]) {
63+
common += 1;
64+
} else {
65+
break;
66+
}
67+
}
68+
69+
return depParentDirs.slice(common);
70+
}

typegraph/python/typegraph/graph/tg_artifact_upload.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ def __upload_artifact_dependencies(self, artifact_hash: str) -> Result[None, Err
142142
- upload them in parallel
143143
144144
145-
- serialize(done, not tested) => upload(ts sdk left, not tested) => resolve(done, not tested)
145+
- serialize(done, not tested) => upload(done, not tested) => resolve(done, not tested)
146146
147147
- testing left
148148

typegraph/python/typegraph/runtimes/python.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
)
1919
from typegraph.gen.types import Err
2020
from typegraph.runtimes.base import Materializer, Runtime
21-
from typegraph.utils import get_file_hash, get_parent_directories
21+
from typegraph.utils import get_file_hash, get_parent_directories, get_relative_path
2222
from typegraph.wit import runtimes, store
2323

2424
if TYPE_CHECKING:
@@ -107,9 +107,13 @@ def import_(
107107
dep_metas = []
108108
for dep in deps:
109109
dep_hash = get_file_hash(dep)
110-
parent_dirs = get_parent_directories(dep)
110+
dep_parent_dirs = get_parent_directories(dep)
111111
dep_meta = ModuleDependencyMeta(
112-
path=dep, dep_hash=dep_hash, relative_path_prefix=parent_dirs
112+
path=dep,
113+
dep_hash=dep_hash,
114+
relative_path_prefix=get_relative_path(
115+
get_parent_directories(module), dep_parent_dirs
116+
),
113117
)
114118
dep_metas.append(dep_meta)
115119

@@ -193,3 +197,4 @@ def visit_Lambda(self, node):
193197

194198
def visit_FunctionDef(self, node):
195199
self.defs.append((node.name, unparse(node).strip()))
200+
self.defs.append((node.name, unparse(node).strip()))

typegraph/python/typegraph/utils.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,9 @@ def get_file_hash(file_path: str) -> str:
9797
return sha256_hasher.hexdigest()
9898

9999

100-
def get_parent_directories(path):
100+
def get_parent_directories(
101+
path: str,
102+
) -> List[str]:
101103
parents = []
102104

103105
while True:
@@ -110,3 +112,18 @@ def get_parent_directories(path):
110112
break
111113

112114
return parents[::-1]
115+
116+
117+
def get_relative_path(
118+
module_path: List[str],
119+
dep_path: List[str],
120+
) -> List[str]:
121+
common = 0
122+
123+
max_len = min(len(module_path), len(dep_path))
124+
for i in range(max_len):
125+
if module_path[i] != dep_path[i]:
126+
break
127+
common += 1
128+
129+
return dep_path[common:]

0 commit comments

Comments
 (0)