mustatil 5.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. mustatil-5.0.0/DEPLOY_TO_PYPI.md +70 -0
  2. mustatil-5.0.0/MANIFEST.in +6 -0
  3. mustatil-5.0.0/PKG-INFO +135 -0
  4. mustatil-5.0.0/README.md +36 -0
  5. mustatil-5.0.0/pyproject.toml +144 -0
  6. mustatil-5.0.0/setup.cfg +4 -0
  7. mustatil-5.0.0/src/mustatil/MODEL_FILES_NOT_INCLUDED.txt +15 -0
  8. mustatil-5.0.0/src/mustatil/MustatilLOGO.ico +0 -0
  9. mustatil-5.0.0/src/mustatil/Mustatil_Project.mustatil +58 -0
  10. mustatil-5.0.0/src/mustatil/__init__.py +3 -0
  11. mustatil-5.0.0/src/mustatil/__main__.py +3 -0
  12. mustatil-5.0.0/src/mustatil/detection_preview_service.py +423 -0
  13. mustatil-5.0.0/src/mustatil/github_update_config.json +6 -0
  14. mustatil-5.0.0/src/mustatil/launcher.py +40 -0
  15. mustatil-5.0.0/src/mustatil/mustatil_auto_updater_gui.py +492 -0
  16. mustatil-5.0.0/src/mustatil/mustatil_legacy_backend.py +2046 -0
  17. mustatil-5.0.0/src/mustatil/mustatil_plugins/__init__.py +1 -0
  18. mustatil-5.0.0/src/mustatil/mustatil_plugins/mustatil_annotator_preview_manage_classes_plugin.py +1116 -0
  19. mustatil-5.0.0/src/mustatil/mustatil_plugins/mustatil_detection_false_positive_filter.py +1749 -0
  20. mustatil-5.0.0/src/mustatil/mustatil_plugins/mustatil_lae_dino_custom_trained_model_selector_addon_v3_force_selected (1).py +1144 -0
  21. mustatil-5.0.0/src/mustatil/mustatil_plugins/mustatil_lae_dino_existing_tab_patch_plugin_v8_strict_pipeline (1).py +2041 -0
  22. mustatil-5.0.0/src/mustatil/mustatil_plugins/mustatil_left_only_owl_grounding_lae_LAE_ONLY_source_runtime_integrated_importer_v2.py +2384 -0
  23. mustatil-5.0.0/src/mustatil/mustatil_plugins/mustatil_model_filter_export_all_tabs_plugin.py +839 -0
  24. mustatil-5.0.0/src/mustatil/mustatil_plugins/mustatil_remote_sensing_plugin.py +1428 -0
  25. mustatil-5.0.0/src/mustatil/mustatil_plugins/zzzz_mustatil_ai_pipeline_next_to_lae_trainer_hook.py +3596 -0
  26. mustatil-5.0.0/src/mustatil/mustatil_plugins/zzzzzzzzz_mustatil_lae_dino_project_trainer_v18_antifreeze_insert_dataset_button.py +2002 -0
  27. mustatil-5.0.0/src/mustatil/mustatil_qt_workspace.py +5653 -0
  28. mustatil-5.0.0/src/mustatil/satellite_preview_service.py +552 -0
  29. mustatil-5.0.0/src/mustatil.egg-info/PKG-INFO +135 -0
  30. mustatil-5.0.0/src/mustatil.egg-info/SOURCES.txt +32 -0
  31. mustatil-5.0.0/src/mustatil.egg-info/dependency_links.txt +1 -0
  32. mustatil-5.0.0/src/mustatil.egg-info/entry_points.txt +2 -0
  33. mustatil-5.0.0/src/mustatil.egg-info/requires.txt +81 -0
  34. mustatil-5.0.0/src/mustatil.egg-info/top_level.txt +1 -0
@@ -0,0 +1,70 @@
1
+ # Deploy Mustatil to PyPI
2
+
3
+ ## 1. Local editable test
4
+
5
+ ```powershell
6
+ cd mustatil_pip_source
7
+ py -m pip install --upgrade pip
8
+ py -m pip install -e ".[yolo,gis,onnx,vision,science,webui]"
9
+ mustatil
10
+ ```
11
+
12
+ ## 2. Install PyTorch separately
13
+
14
+ CPU-only example:
15
+
16
+ ```powershell
17
+ py -m pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
18
+ ```
19
+
20
+ CUDA 12.1 example matching the original requirements file:
21
+
22
+ ```powershell
23
+ py -m pip install torch==2.4.1+cu121 torchvision==0.19.1+cu121 torchaudio --extra-index-url https://download.pytorch.org/whl/cu121
24
+ ```
25
+
26
+ Do not put `--extra-index-url` lines into `pyproject.toml` dependencies. Keep PyTorch installation as a separate documented step.
27
+
28
+ ## 3. Build distributions
29
+
30
+ ```powershell
31
+ py -m pip install --upgrade build twine
32
+ py -m build
33
+ py -m twine check dist/*
34
+ ```
35
+
36
+ ## 4. Upload to TestPyPI first
37
+
38
+ ```powershell
39
+ py -m twine upload --repository testpypi dist/*
40
+ ```
41
+
42
+ Install-test from TestPyPI:
43
+
44
+ ```powershell
45
+ py -m pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple mustatil
46
+ mustatil
47
+ ```
48
+
49
+ ## 5. Upload to PyPI
50
+
51
+ ```powershell
52
+ py -m twine upload dist/*
53
+ ```
54
+
55
+ ## Important package policy
56
+
57
+ The PyPI package should stay code-first. Keep these files out of the package:
58
+
59
+ - `.pt`, `.onnx` model files
60
+ - generated model caches
61
+ - installer/uninstaller `.exe` files
62
+ - local virtual environments
63
+ - temporary tiles and outputs
64
+
65
+ Recommended external asset channels:
66
+
67
+ - GitHub Releases for small/medium assets
68
+ - Hugging Face for model weights
69
+ - Zenodo for citable datasets/releases
70
+ - itch.io for the full Windows installer
@@ -0,0 +1,6 @@
1
+ include README.md
2
+ include DEPLOY_TO_PYPI.md
3
+ recursive-include src/mustatil *.py *.json *.ico *.mustatil *.txt
4
+ recursive-include src/mustatil/mustatil_plugins *.py
5
+ prune src/mustatil/__pycache__
6
+ global-exclude *.py[cod] __pycache__ *.pt *.onnx *.exe *.dat *.bat
@@ -0,0 +1,135 @@
1
+ Metadata-Version: 2.4
2
+ Name: mustatil
3
+ Version: 5.0.0
4
+ Summary: GIS-level AI vision workspace for annotation, YOLO training, satellite detection, geospatial inference, and visual AI pipelines.
5
+ Author: Tarek Wasfy
6
+ Project-URL: Homepage, https://mustatil.de/
7
+ Project-URL: Repository, https://github.com/tarekwasfy01/Mustatil-YOLO-AI-Model-Trainer-
8
+ Project-URL: Download, https://tarekwasfy01.itch.io/mustatil-qt-workspace
9
+ Project-URL: DOI, https://doi.org/10.5281/zenodo.20481111
10
+ Keywords: yolo,gis,remote-sensing,computer-vision,annotation,satellite-imagery,geopackage,geotiff,ai-pipeline
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Intended Audience :: Science/Research
13
+ Classifier: Intended Audience :: End Users/Desktop
14
+ Classifier: Topic :: Scientific/Engineering :: GIS
15
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
16
+ Classifier: Topic :: Multimedia :: Graphics
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Operating System :: Microsoft :: Windows
22
+ Classifier: Operating System :: POSIX :: Linux
23
+ Requires-Python: <3.13,>=3.10
24
+ Description-Content-Type: text/markdown
25
+ Requires-Dist: PySide6<6.10,>=6.7
26
+ Requires-Dist: Pillow>=10
27
+ Requires-Dist: numpy<2.3,>=1.26
28
+ Requires-Dist: requests>=2.31
29
+ Requires-Dist: tqdm>=4.66
30
+ Requires-Dist: pyyaml>=6
31
+ Requires-Dist: psutil
32
+ Requires-Dist: opencv-python>=4.9
33
+ Provides-Extra: yolo
34
+ Requires-Dist: ultralytics>=8.3; extra == "yolo"
35
+ Provides-Extra: gis
36
+ Requires-Dist: rasterio>=1.3; extra == "gis"
37
+ Requires-Dist: fiona>=1.9; extra == "gis"
38
+ Requires-Dist: geopandas>=0.14; extra == "gis"
39
+ Requires-Dist: shapely>=2.0; extra == "gis"
40
+ Requires-Dist: pyproj>=3.6; extra == "gis"
41
+ Requires-Dist: rtree; extra == "gis"
42
+ Requires-Dist: affine; extra == "gis"
43
+ Requires-Dist: snuggs; extra == "gis"
44
+ Requires-Dist: cligj; extra == "gis"
45
+ Requires-Dist: click; extra == "gis"
46
+ Requires-Dist: click-plugins; extra == "gis"
47
+ Provides-Extra: onnx
48
+ Requires-Dist: onnx>=1.16; extra == "onnx"
49
+ Requires-Dist: onnxruntime>=1.17; extra == "onnx"
50
+ Provides-Extra: vision
51
+ Requires-Dist: transformers==4.57.3; extra == "vision"
52
+ Requires-Dist: tokenizers<0.23,>=0.21.4; extra == "vision"
53
+ Requires-Dist: accelerate<2,>=1.5.2; extra == "vision"
54
+ Requires-Dist: safetensors; extra == "vision"
55
+ Requires-Dist: huggingface_hub<1.0,>=0.34; extra == "vision"
56
+ Requires-Dist: sentencepiece; extra == "vision"
57
+ Requires-Dist: qwen-vl-utils; extra == "vision"
58
+ Requires-Dist: timm>=1.0.11; extra == "vision"
59
+ Requires-Dist: einops; extra == "vision"
60
+ Requires-Dist: einops-exts; extra == "vision"
61
+ Requires-Dist: shortuuid; extra == "vision"
62
+ Requires-Dist: peft>=0.12.0; extra == "vision"
63
+ Requires-Dist: datasets>=2.21.0; extra == "vision"
64
+ Requires-Dist: python-dotenv; extra == "vision"
65
+ Requires-Dist: filetype; extra == "vision"
66
+ Requires-Dist: imagehash; extra == "vision"
67
+ Requires-Dist: av; extra == "vision"
68
+ Requires-Dist: decord; extra == "vision"
69
+ Requires-Dist: lmdb; extra == "vision"
70
+ Requires-Dist: ebmlite; extra == "vision"
71
+ Requires-Dist: httpx>=0.24.0; extra == "vision"
72
+ Provides-Extra: science
73
+ Requires-Dist: scipy>=1.12; extra == "science"
74
+ Requires-Dist: pandas>=2.2; extra == "science"
75
+ Requires-Dist: matplotlib>=3.8; extra == "science"
76
+ Requires-Dist: pyqtgraph; extra == "science"
77
+ Requires-Dist: scikit-learn>=1.4; extra == "science"
78
+ Requires-Dist: scikit-image; extra == "science"
79
+ Requires-Dist: albumentations; extra == "science"
80
+ Requires-Dist: supervision; extra == "science"
81
+ Requires-Dist: filterpy; extra == "science"
82
+ Requires-Dist: lapx; extra == "science"
83
+ Requires-Dist: networkx; extra == "science"
84
+ Requires-Dist: imageio; extra == "science"
85
+ Requires-Dist: imageio-ffmpeg; extra == "science"
86
+ Requires-Dist: sympy; extra == "science"
87
+ Requires-Dist: protobuf; extra == "science"
88
+ Requires-Dist: numba; extra == "science"
89
+ Provides-Extra: webui
90
+ Requires-Dist: fastapi; extra == "webui"
91
+ Requires-Dist: uvicorn; extra == "webui"
92
+ Requires-Dist: markdown2[all]; extra == "webui"
93
+ Requires-Dist: gradio; extra == "webui"
94
+ Requires-Dist: gradio_client; extra == "webui"
95
+ Provides-Extra: dev
96
+ Requires-Dist: build; extra == "dev"
97
+ Requires-Dist: twine; extra == "dev"
98
+ Requires-Dist: pytest; extra == "dev"
99
+
100
+ # Mustatil
101
+
102
+ Mustatil is a GIS-level AI vision workspace for annotation, YOLO training, large-scale detection, satellite-map analysis, geospatial inference, GeoPackage/GIS export, and visual AI pipeline building.
103
+
104
+ This PyPI package contains the Python application code and bundled plugins. Large model weights and generated runtime files are intentionally excluded and should be distributed separately through GitHub Releases, Hugging Face, Zenodo, itch.io, or downloaded by the application into a user runtime folder.
105
+
106
+ ## Install
107
+
108
+ ```powershell
109
+ pip install mustatil
110
+ mustatil
111
+ ```
112
+
113
+ For a fuller install with optional GIS/AI dependencies:
114
+
115
+ ```powershell
116
+ pip install "mustatil[yolo,gis,onnx,vision,science,webui]"
117
+ ```
118
+
119
+ PyTorch should be installed separately according to the target hardware, especially when CUDA wheels are required.
120
+
121
+ ## Run
122
+
123
+ ```powershell
124
+ mustatil
125
+ ```
126
+
127
+ Or:
128
+
129
+ ```powershell
130
+ python -m mustatil
131
+ ```
132
+
133
+ ## Notes
134
+
135
+ The original desktop ZIP contained large model files such as `sam2_b.pt`, `Houses300.pt`, `Houses300.onnx`, `Tree50.pt`, and `yolov8n.pt`. These files are not included in this source package.
@@ -0,0 +1,36 @@
1
+ # Mustatil
2
+
3
+ Mustatil is a GIS-level AI vision workspace for annotation, YOLO training, large-scale detection, satellite-map analysis, geospatial inference, GeoPackage/GIS export, and visual AI pipeline building.
4
+
5
+ This PyPI package contains the Python application code and bundled plugins. Large model weights and generated runtime files are intentionally excluded and should be distributed separately through GitHub Releases, Hugging Face, Zenodo, itch.io, or downloaded by the application into a user runtime folder.
6
+
7
+ ## Install
8
+
9
+ ```powershell
10
+ pip install mustatil
11
+ mustatil
12
+ ```
13
+
14
+ For a fuller install with optional GIS/AI dependencies:
15
+
16
+ ```powershell
17
+ pip install "mustatil[yolo,gis,onnx,vision,science,webui]"
18
+ ```
19
+
20
+ PyTorch should be installed separately according to the target hardware, especially when CUDA wheels are required.
21
+
22
+ ## Run
23
+
24
+ ```powershell
25
+ mustatil
26
+ ```
27
+
28
+ Or:
29
+
30
+ ```powershell
31
+ python -m mustatil
32
+ ```
33
+
34
+ ## Notes
35
+
36
+ The original desktop ZIP contained large model files such as `sam2_b.pt`, `Houses300.pt`, `Houses300.onnx`, `Tree50.pt`, and `yolov8n.pt`. These files are not included in this source package.
@@ -0,0 +1,144 @@
1
+ [build-system]
2
+ requires = ["setuptools>=77", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "mustatil"
7
+ version = "5.0.0"
8
+ description = "GIS-level AI vision workspace for annotation, YOLO training, satellite detection, geospatial inference, and visual AI pipelines."
9
+ readme = "README.md"
10
+ requires-python = ">=3.10,<3.13"
11
+ authors = [
12
+ { name = "Tarek Wasfy" }
13
+ ]
14
+ keywords = [
15
+ "yolo",
16
+ "gis",
17
+ "remote-sensing",
18
+ "computer-vision",
19
+ "annotation",
20
+ "satellite-imagery",
21
+ "geopackage",
22
+ "geotiff",
23
+ "ai-pipeline"
24
+ ]
25
+ classifiers = [
26
+ "Development Status :: 4 - Beta",
27
+ "Intended Audience :: Science/Research",
28
+ "Intended Audience :: End Users/Desktop",
29
+ "Topic :: Scientific/Engineering :: GIS",
30
+ "Topic :: Scientific/Engineering :: Artificial Intelligence",
31
+ "Topic :: Multimedia :: Graphics",
32
+ "Programming Language :: Python :: 3",
33
+ "Programming Language :: Python :: 3.10",
34
+ "Programming Language :: Python :: 3.11",
35
+ "Programming Language :: Python :: 3.12",
36
+ "Operating System :: Microsoft :: Windows",
37
+ "Operating System :: POSIX :: Linux"
38
+ ]
39
+ dependencies = [
40
+ "PySide6>=6.7,<6.10",
41
+ "Pillow>=10",
42
+ "numpy>=1.26,<2.3",
43
+ "requests>=2.31",
44
+ "tqdm>=4.66",
45
+ "pyyaml>=6",
46
+ "psutil",
47
+ "opencv-python>=4.9"
48
+ ]
49
+
50
+ [project.optional-dependencies]
51
+ yolo = [
52
+ "ultralytics>=8.3"
53
+ ]
54
+ gis = [
55
+ "rasterio>=1.3",
56
+ "fiona>=1.9",
57
+ "geopandas>=0.14",
58
+ "shapely>=2.0",
59
+ "pyproj>=3.6",
60
+ "rtree",
61
+ "affine",
62
+ "snuggs",
63
+ "cligj",
64
+ "click",
65
+ "click-plugins"
66
+ ]
67
+ onnx = [
68
+ "onnx>=1.16",
69
+ "onnxruntime>=1.17"
70
+ ]
71
+ vision = [
72
+ "transformers==4.57.3",
73
+ "tokenizers>=0.21.4,<0.23",
74
+ "accelerate>=1.5.2,<2",
75
+ "safetensors",
76
+ "huggingface_hub>=0.34,<1.0",
77
+ "sentencepiece",
78
+ "qwen-vl-utils",
79
+ "timm>=1.0.11",
80
+ "einops",
81
+ "einops-exts",
82
+ "shortuuid",
83
+ "peft>=0.12.0",
84
+ "datasets>=2.21.0",
85
+ "python-dotenv",
86
+ "filetype",
87
+ "imagehash",
88
+ "av",
89
+ "decord",
90
+ "lmdb",
91
+ "ebmlite",
92
+ "httpx>=0.24.0"
93
+ ]
94
+ science = [
95
+ "scipy>=1.12",
96
+ "pandas>=2.2",
97
+ "matplotlib>=3.8",
98
+ "pyqtgraph",
99
+ "scikit-learn>=1.4",
100
+ "scikit-image",
101
+ "albumentations",
102
+ "supervision",
103
+ "filterpy",
104
+ "lapx",
105
+ "networkx",
106
+ "imageio",
107
+ "imageio-ffmpeg",
108
+ "sympy",
109
+ "protobuf",
110
+ "numba"
111
+ ]
112
+ webui = [
113
+ "fastapi",
114
+ "uvicorn",
115
+ "markdown2[all]",
116
+ "gradio",
117
+ "gradio_client"
118
+ ]
119
+ dev = [
120
+ "build",
121
+ "twine",
122
+ "pytest"
123
+ ]
124
+
125
+ [project.urls]
126
+ Homepage = "https://mustatil.de/"
127
+ Repository = "https://github.com/tarekwasfy01/Mustatil-YOLO-AI-Model-Trainer-"
128
+ Download = "https://tarekwasfy01.itch.io/mustatil-qt-workspace"
129
+ DOI = "https://doi.org/10.5281/zenodo.20481111"
130
+
131
+ [project.gui-scripts]
132
+ mustatil = "mustatil.launcher:main"
133
+
134
+ [tool.setuptools.packages.find]
135
+ where = ["src"]
136
+
137
+ [tool.setuptools.package-data]
138
+ mustatil = [
139
+ "*.json",
140
+ "*.ico",
141
+ "*.mustatil",
142
+ "*.txt",
143
+ "mustatil_plugins/*.py"
144
+ ]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,15 @@
1
+ Large model/runtime files from the original desktop ZIP are intentionally not included in the PyPI source package.
2
+
3
+ Excluded from PyPI packaging:
4
+ - sam2_b.pt
5
+ - Houses300.pt
6
+ - Houses300.onnx
7
+ - Tree50.pt
8
+ - yolov8n.pt
9
+ - sam2_all_polygons.json
10
+ - unins000.exe / unins000.dat
11
+ - Windows BAT installer/launcher files
12
+
13
+ Reason: PyPI has a default single-file upload limit, and model files should be distributed through GitHub Releases, Hugging Face, Zenodo, itch.io, or downloaded into a user runtime cache.
14
+
15
+ For a local developer install you can still place these files next to mustatil_qt_workspace.py inside the installed package folder, or better adapt Mustatil to read them from an external user data folder.
@@ -0,0 +1,58 @@
1
+ {
2
+ "project_name": "Khirigsuurs",
3
+ "project_file": "C:\\Users\\Tarek\\AppData\\Local\\Programs\\Mustatil\\Mustatil_Project.mustatil",
4
+ "project_root": "G:\\Khirigsuurs",
5
+ "image_folder": "G:\\Khirigsuurs\\images",
6
+ "label_folder": "G:\\Khirigsuurs\\labels",
7
+ "crop_folder": "G:\\Khirigsuurs\\crops",
8
+ "export_folder": "G:\\Khirigsuurs\\exports",
9
+ "weights_folder": "G:\\Khirigsuurs\\weights",
10
+ "sam_folder": "G:\\Khirigsuurs\\sam2",
11
+ "runs_folder": "G:\\Khirigsuurs\\runs",
12
+ "train_output_folder": "G:\\Khirigsuurs\\runs",
13
+ "yolo_models": [
14
+ "G:/Khirigsuurs/runs/train_mustatil/weights/best.pt",
15
+ "",
16
+ ""
17
+ ],
18
+ "detection_model_preset": "Custom",
19
+ "satellite_detection_model_preset": "Custom",
20
+ "image": "C:/Users/Tarek/Desktop/Khirgisuurs.tif",
21
+ "output": "",
22
+ "sam_model": "sam2_b.pt",
23
+ "sam_device": "cpu",
24
+ "satellite_map_preset": "Google Satellite",
25
+ "satellite_url_template": "https://mt.google.com/vt/lyrs=s&x={x}&y={y}&z={z}&hl=de",
26
+ "satellite_preview_map_preset": "Esri World Imagery",
27
+ "satellite_preview_url_template": "https://mt.google.com/vt/lyrs=s&x={x}&y={y}&z={z}&hl=de",
28
+ "satellite_zoom": 18,
29
+ "satellite_cache_dir": "C:\\Users\\tarek\\mustatil_satellite_cache",
30
+ "satellite_output_gpkg": "",
31
+ "satellite_output_tif": "C:/Users/tarek/Desktop/asdasdasd.tif",
32
+ "train_model": "G:/Khirigsuurs/runs/train_mustatil/weights/best.pt",
33
+ "formlearner_model": "",
34
+ "auto_annotate_yolo_model": "",
35
+ "auto_annotate_yolo_confidence": 0.001,
36
+ "tile_size": 1024,
37
+ "overlap": 384,
38
+ "shifted_tiles": true,
39
+ "yolo_confidence": 0.05,
40
+ "preview_confidence": 0.1,
41
+ "formscore_preview": 0.0,
42
+ "detection_min_score": 0.0,
43
+ "detection_min_consensus": 1,
44
+ "formscore_threshold": 0.5,
45
+ "crop_size": 1024,
46
+ "crop_padding": 128,
47
+ "epochs": 5,
48
+ "imgsz": 1024,
49
+ "batch": 8,
50
+ "device": "cuda",
51
+ "classes": [
52
+ "mustatil",
53
+ "false_positive"
54
+ ],
55
+ "created": "2026-05-26 16:37:52",
56
+ "modified": "2026-06-04 15:12:37",
57
+ "version": 1
58
+ }
@@ -0,0 +1,3 @@
1
+ """Mustatil: GIS-level AI vision workspace."""
2
+
3
+ __version__ = "5.0.0"
@@ -0,0 +1,3 @@
1
+ from mustatil.launcher import main
2
+
3
+ raise SystemExit(main())