cpp-arena 2.9__py3-none-win_amd64.whl

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.
@@ -0,0 +1,54 @@
1
+ """Launch the existing desktop application from a writable user directory."""
2
+ import argparse
3
+ from importlib.metadata import version
4
+ import os
5
+ from pathlib import Path
6
+ import struct
7
+ import subprocess
8
+ import sys
9
+ import tempfile
10
+ import zipfile
11
+
12
+
13
+ def application_directory():
14
+ """Keep the original app's source-relative data paths out of site-packages."""
15
+ release = version("cpp-arena")
16
+ root = Path(os.environ["CPP_ARENA_HOME"]) if "CPP_ARENA_HOME" in os.environ else (
17
+ Path(os.environ["LOCALAPPDATA"]) / "CPP Arena")
18
+ destination = root.resolve() / release
19
+ if not destination.exists():
20
+ root.mkdir(parents=True, exist_ok=True)
21
+ with tempfile.TemporaryDirectory(prefix=".install-", dir=root) as temporary:
22
+ staged = Path(temporary) / release
23
+ with zipfile.ZipFile(Path(__file__).with_name("application.zip")) as archive:
24
+ archive.extractall(staged)
25
+ # Publish the whole application together, so an interrupted extraction
26
+ # cannot leave an apparently installed but incomplete application.
27
+ staged.rename(destination)
28
+ return destination
29
+
30
+
31
+ def _launch(history=False):
32
+ parser = argparse.ArgumentParser(description=(
33
+ "CPP Arena offline experiment viewer" if history else
34
+ "CPP Arena UAV coverage path planning desktop application"))
35
+ parser.add_argument("--version", action="version", version=version("cpp-arena"))
36
+ if history:
37
+ parser.add_argument("experiment", nargs="?", help="Experiment folder or archive")
38
+ arguments = parser.parse_args()
39
+ if sys.platform != "win32" or struct.calcsize("P") != 8:
40
+ parser.error("CPP Arena currently requires 64-bit Python on Windows x64")
41
+ directory = application_directory()
42
+ entry = directory / ("HistoryViewer/viewer.py" if history else "main.py")
43
+ command = [sys.executable, str(entry)]
44
+ if history and arguments.experiment:
45
+ command.append(str(Path(arguments.experiment).resolve()))
46
+ return subprocess.call(command, cwd=directory)
47
+
48
+
49
+ def main():
50
+ return _launch()
51
+
52
+
53
+ def history_main():
54
+ return _launch(history=True)
@@ -0,0 +1,3 @@
1
+ from . import main
2
+
3
+ raise SystemExit(main())
@@ -0,0 +1,85 @@
1
+ Metadata-Version: 2.4
2
+ Name: cpp-arena
3
+ Version: 2.9
4
+ Summary: Desktop comparison platform for UAV coverage path planning algorithms
5
+ License-Expression: GPL-3.0-or-later
6
+ Project-URL: Repository, https://github.com/lyujayne/CPPArena
7
+ Project-URL: Issues, https://github.com/lyujayne/CPPArena/issues
8
+ Classifier: Development Status :: 4 - Beta
9
+ Classifier: Environment :: Win32 (MS Windows)
10
+ Classifier: Intended Audience :: Science/Research
11
+ Classifier: Operating System :: Microsoft :: Windows
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Topic :: Scientific/Engineering :: GIS
14
+ Requires-Python: >=3.10
15
+ Description-Content-Type: text/markdown
16
+ License-File: LICENSE
17
+ License-File: NOTICE
18
+ License-File: third_party/CGAL-LICENSE.txt
19
+ License-File: third_party/LICENSE.GPL
20
+ License-File: third_party/LICENSE.LGPL
21
+ License-File: third_party/LICENSE_1_0.txt
22
+ Requires-Dist: PySide6>=6.5
23
+ Requires-Dist: shapely>=2.0
24
+ Requires-Dist: pyproj>=3.0
25
+ Requires-Dist: numpy>=1.24
26
+ Requires-Dist: scipy>=1.11
27
+ Requires-Dist: pandas>=1.5
28
+ Requires-Dist: matplotlib>=3.7
29
+ Requires-Dist: lxml>=4.9
30
+ Requires-Dist: requests>=2.20
31
+ Requires-Dist: Pillow>=9
32
+ Dynamic: license-file
33
+
34
+ # CPP Arena
35
+
36
+ CPP Arena is a desktop comparison platform for UAV coverage path planning.
37
+ It provides polygon import, nine decomposition methods, seven route planners,
38
+ experiment comparisons, waypoint export, and an offline experiment viewer.
39
+
40
+ ## Install and launch
41
+
42
+ Requires **Windows x64 and 64-bit Python 3.10 or newer**. The bundled CGAL
43
+ partition backend is a Windows x64 native library.
44
+
45
+ ```powershell
46
+ python -m pip install cpp-arena
47
+ cpp-arena
48
+ ```
49
+
50
+ You can also launch the application with `python -m cpp_arena`.
51
+ To open the independent offline experiment viewer:
52
+
53
+ ```powershell
54
+ cpp-arena-history
55
+ cpp-arena-history "D:\experiments\my-experiment"
56
+ ```
57
+
58
+ On first launch, the packaged application is extracted to
59
+ `%LOCALAPPDATA%\CPP Arena\2.9`. Settings, datasets, projects, pictures, and
60
+ experiment records are saved inside that writable directory. Existing local
61
+ experiments are not included in the distribution; import them with the viewer.
62
+ Set `CPP_ARENA_HOME` before launch to use a different parent directory. Each
63
+ release keeps its own application and data directory; uninstalling the Python
64
+ package leaves those files in place.
65
+
66
+ ## Scope
67
+
68
+ The application compares decomposition and planning implementations with
69
+ explicit implementation budgets and assumptions. Algorithm alignment notes are
70
+ included in the packaged `PAPER_ALIGNMENT.md` and `UPGRADE_v2.9.md`. Results
71
+ are research outputs; exported waypoints do not include camera trigger commands.
72
+
73
+ The source distribution contains the application Python sources in
74
+ `cpp_arena/application.zip`, plus the native wrapper source, build instructions,
75
+ and third-party notices. Extract the ZIP to inspect or run the original source.
76
+ CGAL and Boost header download URLs and hashes are in
77
+ `algorithms/native/README.md` inside that archive.
78
+
79
+ ## License and source
80
+
81
+ CPP Arena is distributed under **GPL-3.0-or-later**. The bundled CGAL and Boost
82
+ components retain their own notices and license texts. See `LICENSE`, `NOTICE`,
83
+ and `third_party` in the distribution.
84
+
85
+ [Source repository](https://github.com/lyujayne/CPPArena)
@@ -0,0 +1,14 @@
1
+ cpp_arena-2.9.data/purelib/cpp_arena/__init__.py,sha256=AeNEpcB7-yeaChrO7tR-LYPtrYmEJab7eZobwzjctmw,2138
2
+ cpp_arena-2.9.data/purelib/cpp_arena/__main__.py,sha256=BHLi_-4Bx1gsZn-z6x7wECPn1YTxdc74y0deRea9FzY,45
3
+ cpp_arena-2.9.data/purelib/cpp_arena/application.zip,sha256=JuvkIDQgX-r36U9qEqhoJ6XUROw3BSaHfeCFC2D6bck,927136
4
+ cpp_arena-2.9.dist-info/licenses/LICENSE,sha256=QWITIDR54nAVwy2eizD4Cih5YqRnUEQbIiNwbN05IRY,35155
5
+ cpp_arena-2.9.dist-info/licenses/NOTICE,sha256=J-5534H6eJkBtSBqDEqRceiVq-uV0ciXIGItXOhWNM0,1145
6
+ cpp_arena-2.9.dist-info/licenses/third_party/CGAL-LICENSE.txt,sha256=_T3_RkmIeZwh9lOXoxTrSOroKIpprFEpZ7Fh55uS2J4,1981
7
+ cpp_arena-2.9.dist-info/licenses/third_party/LICENSE.GPL,sha256=QWITIDR54nAVwy2eizD4Cih5YqRnUEQbIiNwbN05IRY,35155
8
+ cpp_arena-2.9.dist-info/licenses/third_party/LICENSE.LGPL,sha256=N0pD9iWhuHf28TcZ0bq0yoeR7eYE2j4AnDztofb4VIk,7656
9
+ cpp_arena-2.9.dist-info/licenses/third_party/LICENSE_1_0.txt,sha256=yb_3VziSIZPmf6cm-iJVNYcNKqEFn5FFLEEXNihK1WY,1338
10
+ cpp_arena-2.9.dist-info/METADATA,sha256=hWbrTyYXDJNpxtgRYrrUvTy2nvGoSAAGq_vQIZCRR1I,3310
11
+ cpp_arena-2.9.dist-info/WHEEL,sha256=BlXG8Qkq_mCTKpY-toCToAQAmGPE73xawTOhla8_4pE,98
12
+ cpp_arena-2.9.dist-info/entry_points.txt,sha256=o0qQu6zKBJ9WgiJj1ihtme21V-ueqUz_IJgaWlSBtTU,88
13
+ cpp_arena-2.9.dist-info/top_level.txt,sha256=6oi3ZbIfUinUUQB4lQC2T-s0XNE6fl3YQ26F5o71jP0,10
14
+ cpp_arena-2.9.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.9.0)
3
+ Root-Is-Purelib: false
4
+ Tag: py3-none-win_amd64
5
+
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ cpp-arena = cpp_arena:main
3
+ cpp-arena-history = cpp_arena:history_main