Project Setup
You can set up a TorchApp project automatically using the built in cookiecutter template or you can add it manually to an existing Python package.
Automatic Generation
To generate a project using torchapp, then run the command-line utility.
torchapp-generator
This uses Cookiecutter to generate a project for you.
This will use the template that comes with your torchapp installation. If you wish to use the most up-to-date template, then run
torchapp-generator gh
This will use the template from the torchapp-cookiecutter repository on Github. If you wish to create your own template, feel free to fork that repository and use the new URL as the command-line argument.
The dependency management is handled using Poetry. Install Poetry using the instructions. Then to install the dependencies, run:
poetry install
Enter the virtual environment with:
poetry env activate
The command-line utility should be installed to your path automatically in that environment.
Automatic Generation Reference
Manual Setup
You can use TorchApp in an existing project, by following these steps.
If you are using the poetry dependency management system, the install the app like this:
poetry add git+https://github.com/rbturnbull/torchapp.git
If using pip then:
pip install git+https://github.com/rbturnbull/torchapp.git
Then in your code (in a file usually named apps.py
) subclass TorchApp and implement at least the data
and the model
methods.
import torchapp as ta
class MyApp(ta.TorchApp):
@ta.method
def data(self):
...
@ta.method
def model(self):
...
If you are using a file as the main script then instantiate the app and call the main function:
if __name__ == "__main__":
MyApp().main()
If you wish to include the app in a Python package, it is easiest to use the Poetry dependency management system.
In the pyproject.toml
file add the main method of your app to the scripts section like this:
[tool.poetry.scripts]
myapp = "path.to.script:MyApp.main"
myapp-tools = "path.to.script:MyApp.tools"
For example, if the name of the executable was going to be logistic
and the path to the file from the base directory was logistic/apps.py
and the subclass of TorchApp was called LogisticApp
, then the following should be added to pyproject.toml
:
[tool.poetry.scripts]
logistic = "logistic.apps:LogisticApp.main"
logistic-tools = "logistic.apps:LogisticApp.tools"
Pre-commit Hooks
To set up black code formatting with a pre-commit hook, run:
pre-commit install
Coverage Badge
To set up the automatic coverage badge on Github, you need to create a Github authorization token (https://github.com/settings/tokens/new)
and give it permission to modify gists. Then add this token as the secret in Settings/Secrets/Actions
with the variable name: GIST_SECRET
.