The src/executorch/* files exist primarily due to the limitations of pip install in editable mode. Specifically, pip install -e . does not recognize <executorch root>/exir (or any root level directory with a __init__.py) as a valid package module because of the presence of <executorch root>/exir/__init__.py. See the following GitHub issue for details: Issue #9558.
To work around this limitation, a symlink is used. With this symlink and this package entry in pyproject.toml:
[tool.setuptools.package-dir] # ... "executorch" = "src/executorch"
We are telling pip install -e . to treat src/executorch as the root of the executorch package and hence mapping executorch.*.* to src/executorch/*/*. This effectively gets modules like exir out from the root level package.
This allows us to perform pip install -e . successfully and enables the execution of the following command:
python -c "from executorch.exir import CaptureConfig"
We should start to move directories from / to /src/ and remove the symlinks. Issue #8699 to track this effort. This will require a lot of work internally.
TODO(mnachin T180504136): Do not put examples/models into core pip packages. Refactor out the necessary utils or core models files into a separate package.