Skip to content

Commit 46e6c6c

Browse files
committed
Update DumpApi code to current module structure
1 parent 55bb9a2 commit 46e6c6c

File tree

1 file changed

+46
-29
lines changed

1 file changed

+46
-29
lines changed

src/test/java/org/apposed/appose/DumpApi.java

Lines changed: 46 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -67,48 +67,62 @@ public class DumpApi {
6767
private static final boolean GROUP_BY_PACKAGE = true; // Group by package like Python modules
6868

6969
// Mapping from Java package/class to Python module file.
70-
// Based on PYTHON-STRUCTURE-PLAN.md.
70+
// Based on notes/python-package-structure.md.
7171
private static final Map<String, String> PACKAGE_TO_MODULE = new HashMap<>();
7272
static {
7373
// Core API classes.
74-
PACKAGE_TO_MODULE.put("org.apposed.appose.Appose", "__init__.pyi");
75-
PACKAGE_TO_MODULE.put("org.apposed.appose.Environment", "environment.pyi");
76-
PACKAGE_TO_MODULE.put("org.apposed.appose.Builder", "builder.pyi");
77-
PACKAGE_TO_MODULE.put("org.apposed.appose.BuilderFactory", "builder.pyi");
78-
PACKAGE_TO_MODULE.put("org.apposed.appose.Service", "service.pyi");
79-
PACKAGE_TO_MODULE.put("org.apposed.appose.Service.Task", "service.pyi");
80-
PACKAGE_TO_MODULE.put("org.apposed.appose.Service.TaskStatus", "service.pyi");
81-
PACKAGE_TO_MODULE.put("org.apposed.appose.Service.RequestType", "service.pyi");
82-
PACKAGE_TO_MODULE.put("org.apposed.appose.Service.ResponseType", "service.pyi");
83-
PACKAGE_TO_MODULE.put("org.apposed.appose.TaskEvent", "service.pyi");
84-
PACKAGE_TO_MODULE.put("org.apposed.appose.NDArray", "types.pyi");
85-
PACKAGE_TO_MODULE.put("org.apposed.appose.NDArray.DType", "types.pyi");
86-
PACKAGE_TO_MODULE.put("org.apposed.appose.NDArray.Shape", "types.pyi");
87-
PACKAGE_TO_MODULE.put("org.apposed.appose.NDArray.Order", "types.pyi");
88-
PACKAGE_TO_MODULE.put("org.apposed.appose.SharedMemory", "types.pyi");
74+
PACKAGE_TO_MODULE.put("org.apposed.appose.Appose", "__init__.api");
75+
PACKAGE_TO_MODULE.put("org.apposed.appose.Environment", "environment.api");
76+
PACKAGE_TO_MODULE.put("org.apposed.appose.Service", "service.api");
77+
PACKAGE_TO_MODULE.put("org.apposed.appose.Service.Task", "service.api");
78+
PACKAGE_TO_MODULE.put("org.apposed.appose.Service.TaskStatus", "service.api");
79+
PACKAGE_TO_MODULE.put("org.apposed.appose.Service.RequestType", "service.api");
80+
PACKAGE_TO_MODULE.put("org.apposed.appose.Service.ResponseType", "service.api");
81+
PACKAGE_TO_MODULE.put("org.apposed.appose.TaskEvent", "service.api");
82+
PACKAGE_TO_MODULE.put("org.apposed.appose.NDArray", "shm.api");
83+
PACKAGE_TO_MODULE.put("org.apposed.appose.NDArray.DType", "shm.api");
84+
PACKAGE_TO_MODULE.put("org.apposed.appose.NDArray.Shape", "shm.api");
85+
PACKAGE_TO_MODULE.put("org.apposed.appose.NDArray.Order", "shm.api");
86+
PACKAGE_TO_MODULE.put("org.apposed.appose.SharedMemory", "shm.api");
8987

9088
// Subsystem packages - all classes in package go to same file.
91-
PACKAGE_TO_MODULE.put("org.apposed.appose.builder", "builder.pyi");
92-
PACKAGE_TO_MODULE.put("org.apposed.appose.scheme", "scheme.pyi");
93-
PACKAGE_TO_MODULE.put("org.apposed.appose.syntax", "syntax.pyi");
94-
95-
// Utility packages.
96-
PACKAGE_TO_MODULE.put("org.apposed.appose.util.Platforms", "platform.pyi");
97-
PACKAGE_TO_MODULE.put("org.apposed.appose.util.Proxies", "proxy.pyi");
98-
PACKAGE_TO_MODULE.put("org.apposed.appose.util.FilePaths", "filepath.pyi");
99-
PACKAGE_TO_MODULE.put("org.apposed.appose.util.Processes", "process.pyi");
89+
PACKAGE_TO_MODULE.put("org.apposed.appose.scheme", "scheme.api");
90+
PACKAGE_TO_MODULE.put("org.apposed.appose.syntax", "syntax.api");
91+
92+
// Builder subsystem - core in builder/__init__.api, implementations in separate files.
93+
PACKAGE_TO_MODULE.put("org.apposed.appose.Builder", "builder/__init__.api");
94+
PACKAGE_TO_MODULE.put("org.apposed.appose.BuilderFactory", "builder/__init__.api");
95+
PACKAGE_TO_MODULE.put("org.apposed.appose.builder.Builders", "builder/__init__.api");
96+
PACKAGE_TO_MODULE.put("org.apposed.appose.builder.BaseBuilder", "builder/__init__.api");
97+
PACKAGE_TO_MODULE.put("org.apposed.appose.builder.DynamicBuilder", "builder/__init__.api");
98+
PACKAGE_TO_MODULE.put("org.apposed.appose.builder.SimpleBuilder", "builder/__init__.api");
99+
PACKAGE_TO_MODULE.put("org.apposed.appose.builder.MambaBuilder", "builder/mamba.api");
100+
PACKAGE_TO_MODULE.put("org.apposed.appose.builder.MambaBuilderFactory", "builder/mamba.api");
101+
PACKAGE_TO_MODULE.put("org.apposed.appose.builder.PixiBuilder", "builder/pixi.api");
102+
PACKAGE_TO_MODULE.put("org.apposed.appose.builder.PixiBuilderFactory", "builder/pixi.api");
103+
PACKAGE_TO_MODULE.put("org.apposed.appose.builder.UvBuilder", "builder/uv.api");
104+
PACKAGE_TO_MODULE.put("org.apposed.appose.builder.UvBuilderFactory", "builder/uv.api");
105+
106+
// Utility packages - singular naming.
107+
PACKAGE_TO_MODULE.put("org.apposed.appose.util.FilePaths", "util/filepath.api");
108+
PACKAGE_TO_MODULE.put("org.apposed.appose.util.Platforms", "util/platform.api");
109+
PACKAGE_TO_MODULE.put("org.apposed.appose.util.Processes", "util/process.api");
110+
PACKAGE_TO_MODULE.put("org.apposed.appose.util.Proxies", "util/proxy.api");
111+
PACKAGE_TO_MODULE.put("org.apposed.appose.util.Types", "util/types.api");
100112

101113
// Workers.
102-
PACKAGE_TO_MODULE.put("org.apposed.appose.GroovyWorker", "groovy_worker.pyi");
114+
PACKAGE_TO_MODULE.put("org.apposed.appose.GroovyWorker", "groovy_worker.api");
103115
}
104116

105117
// Static utility classes to dump as module-level functions (not as classes).
106118
private static final Set<String> STATIC_UTILITY_CLASSES = new HashSet<>(Arrays.asList(
107119
"org.apposed.appose.Appose",
120+
"org.apposed.appose.builder.Builders",
108121
"org.apposed.appose.util.FilePaths",
109122
"org.apposed.appose.util.Platforms",
110123
"org.apposed.appose.util.Processes",
111-
"org.apposed.appose.util.Proxies"
124+
"org.apposed.appose.util.Proxies",
125+
"org.apposed.appose.util.Types"
112126
));
113127

114128
// Classes to exclude from API dump (internal implementation details).
@@ -124,7 +138,6 @@ public class DumpApi {
124138
"org.apposed.appose.shm.LibC",
125139
// Utility classes (keeping discovery/factory classes, excluding internal helpers).
126140
"org.apposed.appose.util.Plugins",
127-
"org.apposed.appose.util.Types",
128141
// Test utility classes.
129142
"org.apposed.appose.TestBase"
130143
));
@@ -136,7 +149,7 @@ public static void main(String[] args) throws Exception {
136149
System.err.println("Usage: java DumpApi <output-dir> <source-dir> [source-dir2 ...]");
137150
System.err.println();
138151
System.err.println("Dumps Java API in Python stub format for comparison with appose-python.");
139-
System.err.println("Output will be written to <output-dir>/appose/*.pyi files.");
152+
System.err.println("Output will be written to <output-dir>/appose/*.api files.");
140153
System.exit(1);
141154
}
142155

@@ -207,6 +220,10 @@ public static void main(String[] args) throws Exception {
207220
List<Map.Entry<String, TypeDeclaration<?>>> types = moduleEntry.getValue();
208221

209222
Path outputFile = outputDir.resolve(moduleName);
223+
224+
// Create parent directories if needed.
225+
Files.createDirectories(outputFile.getParent());
226+
210227
try (PrintWriter writer = new PrintWriter(new FileWriter(outputFile.toFile()))) {
211228
currentWriter = writer;
212229

0 commit comments

Comments
 (0)