From 7e97700b1078f799a7d877cd5dbf62cf293eeb06 Mon Sep 17 00:00:00 2001
From: Andri Joos <andri@joos.io>
Date: Tue, 18 Jun 2024 18:31:10 +0200
Subject: [PATCH] make package & update

---
 .vscode/launch.json                         |  8 +++---
 README.md                                   | 26 +++++++++++++++++
 __init__.py                                 |  0
 {envs => app/envs}/BaseEnvironment.py       |  0
 {envs => app/envs}/NavigationEnvironment.py |  0
 {envs => app/envs}/StartEnvironment.py      |  0
 {envs => app/envs}/TestEnvironment.py       |  0
 {envs => app/envs}/__init__.py              |  0
 {envs => app/envs}/setup.py                 |  0
 {tests => app/tests}/starting_test.py       |  0
 {train => app/train}/navigation_training.py |  2 --
 {train => app/train}/start_training.py      |  0
 {train => app/train}/utils.py               |  0
 gpu-requirements.txt                        |  1 +
 pre-requirements.txt                        |  2 --
 pre-requirements0.txt                       |  1 +
 pre-requirements1.txt                       |  3 ++
 pyproject.toml                              | 31 +++++++++++++++++++++
 requirements.txt                            |  6 ----
 19 files changed, 66 insertions(+), 14 deletions(-)
 create mode 100644 README.md
 delete mode 100644 __init__.py
 rename {envs => app/envs}/BaseEnvironment.py (100%)
 rename {envs => app/envs}/NavigationEnvironment.py (100%)
 rename {envs => app/envs}/StartEnvironment.py (100%)
 rename {envs => app/envs}/TestEnvironment.py (100%)
 rename {envs => app/envs}/__init__.py (100%)
 rename {envs => app/envs}/setup.py (100%)
 rename {tests => app/tests}/starting_test.py (100%)
 rename {train => app/train}/navigation_training.py (99%)
 rename {train => app/train}/start_training.py (100%)
 rename {train => app/train}/utils.py (100%)
 create mode 100644 gpu-requirements.txt
 delete mode 100644 pre-requirements.txt
 create mode 100644 pre-requirements0.txt
 create mode 100644 pre-requirements1.txt
 create mode 100644 pyproject.toml
 delete mode 100644 requirements.txt

diff --git a/.vscode/launch.json b/.vscode/launch.json
index a7a6762..11cac22 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -6,17 +6,17 @@
     "configurations": [
         {
             "name": "Python: Train Start",
-            "type": "python",
+            "type": "debugpy",
             "request": "launch",
-            "program": "train/start_training.py",
+            "program": "app/train/start_training.py",
             "console": "integratedTerminal",
             "justMyCode": false
         },
         {
             "name": "Python: Train Navigation",
-            "type": "python",
+            "type": "debugpy",
             "request": "launch",
-            "program": "train/navigation_training.py",
+            "program": "app/train/navigation_training.py",
             "console": "integratedTerminal",
             "justMyCode": false
         }
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..6f4a528
--- /dev/null
+++ b/README.md
@@ -0,0 +1,26 @@
+# Installation
+## Create venv
+```sh
+virtualenv venv -p python3.11
+source venv/bin/activate
+```
+
+## Install pre requirements
+This step is necessary, as some packages have dependencies in their installation.
+```sh
+pip install -r pre-requirements0.txt
+pip install -r pre-requirements1.txt
+```
+
+## Install application
+```sh
+pip install .
+```
+
+## Install GPU requirements
+Execute this step only if you use a GPU
+```sh
+pip install -r gpu-requirements.txt
+```
+
+Using a GPU requires additional setup, which can be found in [this guide](https://git.420joos.dev/ai-projects/tf_setup).
diff --git a/__init__.py b/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/envs/BaseEnvironment.py b/app/envs/BaseEnvironment.py
similarity index 100%
rename from envs/BaseEnvironment.py
rename to app/envs/BaseEnvironment.py
diff --git a/envs/NavigationEnvironment.py b/app/envs/NavigationEnvironment.py
similarity index 100%
rename from envs/NavigationEnvironment.py
rename to app/envs/NavigationEnvironment.py
diff --git a/envs/StartEnvironment.py b/app/envs/StartEnvironment.py
similarity index 100%
rename from envs/StartEnvironment.py
rename to app/envs/StartEnvironment.py
diff --git a/envs/TestEnvironment.py b/app/envs/TestEnvironment.py
similarity index 100%
rename from envs/TestEnvironment.py
rename to app/envs/TestEnvironment.py
diff --git a/envs/__init__.py b/app/envs/__init__.py
similarity index 100%
rename from envs/__init__.py
rename to app/envs/__init__.py
diff --git a/envs/setup.py b/app/envs/setup.py
similarity index 100%
rename from envs/setup.py
rename to app/envs/setup.py
diff --git a/tests/starting_test.py b/app/tests/starting_test.py
similarity index 100%
rename from tests/starting_test.py
rename to app/tests/starting_test.py
diff --git a/train/navigation_training.py b/app/train/navigation_training.py
similarity index 99%
rename from train/navigation_training.py
rename to app/train/navigation_training.py
index 7c64781..1c1cd62 100644
--- a/train/navigation_training.py
+++ b/app/train/navigation_training.py
@@ -1,7 +1,5 @@
 from envs import NavigationEnvironment
 import train.utils as utils
-import airsim
-import numpy as np
 
 from tf_agents.environments.tf_py_environment import TFPyEnvironment
 from tf_agents.train.utils import train_utils
diff --git a/train/start_training.py b/app/train/start_training.py
similarity index 100%
rename from train/start_training.py
rename to app/train/start_training.py
diff --git a/train/utils.py b/app/train/utils.py
similarity index 100%
rename from train/utils.py
rename to app/train/utils.py
diff --git a/gpu-requirements.txt b/gpu-requirements.txt
new file mode 100644
index 0000000..a6af284
--- /dev/null
+++ b/gpu-requirements.txt
@@ -0,0 +1 @@
+tensorflow[and-cuda]
diff --git a/pre-requirements.txt b/pre-requirements.txt
deleted file mode 100644
index 0863282..0000000
--- a/pre-requirements.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-numpy
-msgpack-rpc-python
diff --git a/pre-requirements0.txt b/pre-requirements0.txt
new file mode 100644
index 0000000..5ecdefe
--- /dev/null
+++ b/pre-requirements0.txt
@@ -0,0 +1 @@
+setuptools>=70.0
diff --git a/pre-requirements1.txt b/pre-requirements1.txt
new file mode 100644
index 0000000..4c681f5
--- /dev/null
+++ b/pre-requirements1.txt
@@ -0,0 +1,3 @@
+numpy<2.0.0
+wheel>=0.43
+msgpack-rpc-python
diff --git a/pyproject.toml b/pyproject.toml
new file mode 100644
index 0000000..b95a379
--- /dev/null
+++ b/pyproject.toml
@@ -0,0 +1,31 @@
+[build-system]
+requires = ["setuptools >= 61.0"]
+build-backend = "setuptools.build_meta"
+
+[project]
+name = "automated-drone"
+version = "1.0.0"
+dependencies = [
+    "numpy<2.0.0",
+    "airsim",
+    "tf-agents[reverb]==0.19.0", # Updating this may require an update of the gpu-requirements
+]
+requires-python = ">=3.9,<3.12"
+authors = [
+  {name = "Andri Joos"},
+]
+maintainers = [
+  {name = "Andri Joos"}
+]
+description = "Automate a drone with an unreal backend."
+readme = "README.md"
+
+[project.optional-dependencies]
+test = [
+    "pytest"
+]
+
+[tool.setuptools.packages.find]
+where = [
+    "app/"
+]
diff --git a/requirements.txt b/requirements.txt
deleted file mode 100644
index b60c19f..0000000
--- a/requirements.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-pytest
-numpy
-tensorflow[and-cuda]
-airsim
-tf-agents
-tf-agents[reverb]
-- 
GitLab