[Notebook Migration] Support migrating Python folders from local files and GitHub
- Dominant language
- Scala
- Stars
- 314
- Forks
- 187
- Avg merge
- 1d 21h
- Merged PRs (30d)
- 214
Description
### Feature Summary
The migration tool takes one file at a time. Real Python projects are rarely one file: they are a directory of modules that import each other, often kept in a Git repository. Migrating such a project today means feeding it in one piece at a time and reassembling the workflow by hand, which loses exactly the structure that makes the project worth migrating.
Two input sources are worth supporting: a folder the user selects from their machine, and a GitHub repository or a directory within one.
### Proposed Solution or Design
Accept a folder of Python sources as a single migration input and produce one workflow from it, from either a local directory or a GitHub URL.
This is a larger step than single-file support, because a folder carries relationships a single file does not. Imports between modules imply an execution order and a dependency structure that a workflow's operator graph could reflect, and deciding how much of that to infer versus ask the user is the substance of the design. None of it is settled here.
Related considerations to work out when this is picked up:
* Which files in a folder are in scope, and how to handle non-Python files, tests, and configuration.
* How much of the folder is sent to the LLM at once, given context limits on a project of meaningful size.
* For GitHub input: whether private repositories are supported, and how authentication would work if so.
* How the source is presented in the workspace, since the Jupyter panel currently embeds a single notebook.
* Whether this builds on single-file Python support (#TBD) or is designed independently.
This is follow-up work after the Jupyter notebook migration tool is complete, and it depends on single-file Python support landing first. It is not scoped or designed yet.
### Affected Area
Other
Contributor guide
Assessment
This issue has not been assessed yet.