aether-engine 1.0.1__tar.gz → 1.0.2__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 (85) hide show
  1. {aether_engine-1.0.1/aether_engine.egg-info → aether_engine-1.0.2}/PKG-INFO +11 -9
  2. {aether_engine-1.0.1 → aether_engine-1.0.2}/README.md +2 -2
  3. {aether_engine-1.0.1 → aether_engine-1.0.2/aether_engine.egg-info}/PKG-INFO +11 -9
  4. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether_engine.egg-info/requires.txt +9 -6
  5. aether_engine-1.0.2/setup.py +132 -0
  6. aether_engine-1.0.1/setup.py +0 -80
  7. {aether_engine-1.0.1 → aether_engine-1.0.2}/LICENSE +0 -0
  8. {aether_engine-1.0.1 → aether_engine-1.0.2}/MANIFEST.in +0 -0
  9. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/__init__.py +0 -0
  10. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/ai/behavior_tree.py +0 -0
  11. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/ai/navmesh.py +0 -0
  12. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/animation/skeleton.py +0 -0
  13. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/assets/asset_pipeline.py +0 -0
  14. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/audio/__init__.py +0 -0
  15. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/audio/audio_manager.py +0 -0
  16. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/audio/music.py +0 -0
  17. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/audio/sound.py +0 -0
  18. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/core/__init__.py +0 -0
  19. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/core/achievement_system.py +0 -0
  20. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/core/application.py +0 -0
  21. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/core/config.py +0 -0
  22. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/core/console.py +0 -0
  23. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/core/engine.py +0 -0
  24. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/core/event_bus.py +0 -0
  25. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/core/input.py +0 -0
  26. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/core/plugin_system.py +0 -0
  27. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/core/save_system.py +0 -0
  28. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/core/time_manager.py +0 -0
  29. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/core/window.py +0 -0
  30. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/editor/gizmo.py +0 -0
  31. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/editor/imgui_integration.py +0 -0
  32. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/environment/environment_system.py +0 -0
  33. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/graphics/__init__.py +0 -0
  34. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/graphics/camera.py +0 -0
  35. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/graphics/framebuffer.py +0 -0
  36. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/graphics/light.py +0 -0
  37. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/graphics/lod_system.py +0 -0
  38. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/graphics/material.py +0 -0
  39. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/graphics/mesh.py +0 -0
  40. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/graphics/mesh_factory.py +0 -0
  41. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/graphics/particle_system.py +0 -0
  42. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/graphics/post_process.py +0 -0
  43. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/graphics/renderer.py +0 -0
  44. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/graphics/shader.py +0 -0
  45. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/graphics/shader_library.py +0 -0
  46. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/graphics/sky_atmosphere.py +0 -0
  47. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/graphics/terrain.py +0 -0
  48. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/graphics/texture.py +0 -0
  49. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/graphics/water.py +0 -0
  50. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/network/network_manager.py +0 -0
  51. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/physics/__init__.py +0 -0
  52. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/physics/bullet_backend.py +0 -0
  53. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/physics/collider.py +0 -0
  54. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/physics/physics_world.py +0 -0
  55. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/physics/raycast.py +0 -0
  56. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/physics/rigidbody.py +0 -0
  57. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/platform/steam_api.py +0 -0
  58. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/resources/__init__.py +0 -0
  59. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/resources/asset_database.py +0 -0
  60. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/resources/loaders/obj_loader.py +0 -0
  61. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/resources/loaders/texture_loader.py +0 -0
  62. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/resources/resource_manager.py +0 -0
  63. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/resources/serialization.py +0 -0
  64. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/scene/__init__.py +0 -0
  65. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/scene/component.py +0 -0
  66. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/scene/entity.py +0 -0
  67. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/scene/scene.py +0 -0
  68. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/scene/scene_graph.py +0 -0
  69. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/scene/scene_manager.py +0 -0
  70. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/ui/__init__.py +0 -0
  71. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/ui/button.py +0 -0
  72. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/ui/canvas.py +0 -0
  73. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/ui/text.py +0 -0
  74. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/utils/__init__.py +0 -0
  75. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/utils/logger.py +0 -0
  76. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/utils/math_utils.py +0 -0
  77. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/utils/object_pool.py +0 -0
  78. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether/utils/profiler.py +0 -0
  79. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether_engine.egg-info/SOURCES.txt +0 -0
  80. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether_engine.egg-info/dependency_links.txt +0 -0
  81. {aether_engine-1.0.1 → aether_engine-1.0.2}/aether_engine.egg-info/top_level.txt +0 -0
  82. {aether_engine-1.0.1 → aether_engine-1.0.2}/examples/01_hello_cube.py +0 -0
  83. {aether_engine-1.0.1 → aether_engine-1.0.2}/examples/02_sphere_scene.py +0 -0
  84. {aether_engine-1.0.1 → aether_engine-1.0.2}/pyproject.toml +0 -0
  85. {aether_engine-1.0.1 → aether_engine-1.0.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aether-engine
3
- Version: 1.0.1
3
+ Version: 1.0.2
4
4
  Summary: Полноценный 3D игровой движок на Python с OpenGL
5
5
  Home-page: https://pypi.org/project/aether-engine/
6
6
  Author: entiti937
@@ -24,18 +24,20 @@ Requires-Dist: glfw>=2.6
24
24
  Requires-Dist: PyOpenGL>=3.1.7
25
25
  Requires-Dist: Pillow>=10.0
26
26
  Provides-Extra: audio
27
- Requires-Dist: pygame-ce>=2.5; extra == "audio"
27
+ Requires-Dist: pygame>=2.5; extra == "audio"
28
28
  Provides-Extra: physics
29
29
  Requires-Dist: pymunk>=6.0; extra == "physics"
30
+ Provides-Extra: imgui
31
+ Requires-Dist: imgui-bundle>=1.0; extra == "imgui"
30
32
  Provides-Extra: full
31
- Requires-Dist: pygame-ce>=2.5; extra == "full"
32
- Requires-Dist: pymunk>=6.0; extra == "full"
33
- Requires-Dist: freetype-py>=2.4; extra == "full"
34
- Requires-Dist: imgui>=2.0; extra == "full"
33
+ Requires-Dist: trimesh>=3.21; extra == "full"
34
+ Requires-Dist: imgui-bundle>=1.0; extra == "full"
35
35
  Requires-Dist: noise>=1.2; extra == "full"
36
+ Requires-Dist: pymunk>=6.0; extra == "full"
36
37
  Requires-Dist: pyyaml>=6.0; extra == "full"
37
38
  Requires-Dist: imageio>=2.31; extra == "full"
38
- Requires-Dist: trimesh>=3.21; extra == "full"
39
+ Requires-Dist: pygame>=2.5; extra == "full"
40
+ Requires-Dist: freetype-py>=2.4; extra == "full"
39
41
  Dynamic: author
40
42
  Dynamic: classifier
41
43
  Dynamic: description
@@ -51,7 +53,7 @@ AETHER ENGINE
51
53
  ============
52
54
 
53
55
  Полноценный 3D игровой движок на Python с OpenGL 4.6
54
- Автор: entiti937 | Версия: 1.0.1 | Лицензия: MIT
56
+ Автор: entiti937 | Версия: 1.0.2 | Лицензия: MIT
55
57
  PyPI: https://pypi.org/project/aether-engine/
56
58
 
57
59
 
@@ -495,4 +497,4 @@ MIT License. Используйте свободно в любых проект
495
497
 
496
498
 
497
499
  Автор: entiti937
498
- Версия: 1.0.1 - Исправлен импорт Engine и проблемы с новыми библеотеками, полная документация
500
+ Версия: 1.0.2 - Исправлен импорт Engine и проблемы с новыми библеотеками, полная документация
@@ -2,7 +2,7 @@ AETHER ENGINE
2
2
  ============
3
3
 
4
4
  Полноценный 3D игровой движок на Python с OpenGL 4.6
5
- Автор: entiti937 | Версия: 1.0.1 | Лицензия: MIT
5
+ Автор: entiti937 | Версия: 1.0.2 | Лицензия: MIT
6
6
  PyPI: https://pypi.org/project/aether-engine/
7
7
 
8
8
 
@@ -446,4 +446,4 @@ MIT License. Используйте свободно в любых проект
446
446
 
447
447
 
448
448
  Автор: entiti937
449
- Версия: 1.0.1 - Исправлен импорт Engine и проблемы с новыми библеотеками, полная документация
449
+ Версия: 1.0.2 - Исправлен импорт Engine и проблемы с новыми библеотеками, полная документация
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aether-engine
3
- Version: 1.0.1
3
+ Version: 1.0.2
4
4
  Summary: Полноценный 3D игровой движок на Python с OpenGL
5
5
  Home-page: https://pypi.org/project/aether-engine/
6
6
  Author: entiti937
@@ -24,18 +24,20 @@ Requires-Dist: glfw>=2.6
24
24
  Requires-Dist: PyOpenGL>=3.1.7
25
25
  Requires-Dist: Pillow>=10.0
26
26
  Provides-Extra: audio
27
- Requires-Dist: pygame-ce>=2.5; extra == "audio"
27
+ Requires-Dist: pygame>=2.5; extra == "audio"
28
28
  Provides-Extra: physics
29
29
  Requires-Dist: pymunk>=6.0; extra == "physics"
30
+ Provides-Extra: imgui
31
+ Requires-Dist: imgui-bundle>=1.0; extra == "imgui"
30
32
  Provides-Extra: full
31
- Requires-Dist: pygame-ce>=2.5; extra == "full"
32
- Requires-Dist: pymunk>=6.0; extra == "full"
33
- Requires-Dist: freetype-py>=2.4; extra == "full"
34
- Requires-Dist: imgui>=2.0; extra == "full"
33
+ Requires-Dist: trimesh>=3.21; extra == "full"
34
+ Requires-Dist: imgui-bundle>=1.0; extra == "full"
35
35
  Requires-Dist: noise>=1.2; extra == "full"
36
+ Requires-Dist: pymunk>=6.0; extra == "full"
36
37
  Requires-Dist: pyyaml>=6.0; extra == "full"
37
38
  Requires-Dist: imageio>=2.31; extra == "full"
38
- Requires-Dist: trimesh>=3.21; extra == "full"
39
+ Requires-Dist: pygame>=2.5; extra == "full"
40
+ Requires-Dist: freetype-py>=2.4; extra == "full"
39
41
  Dynamic: author
40
42
  Dynamic: classifier
41
43
  Dynamic: description
@@ -51,7 +53,7 @@ AETHER ENGINE
51
53
  ============
52
54
 
53
55
  Полноценный 3D игровой движок на Python с OpenGL 4.6
54
- Автор: entiti937 | Версия: 1.0.1 | Лицензия: MIT
56
+ Автор: entiti937 | Версия: 1.0.2 | Лицензия: MIT
55
57
  PyPI: https://pypi.org/project/aether-engine/
56
58
 
57
59
 
@@ -495,4 +497,4 @@ MIT License. Используйте свободно в любых проект
495
497
 
496
498
 
497
499
  Автор: entiti937
498
- Версия: 1.0.1 - Исправлен импорт Engine и проблемы с новыми библеотеками, полная документация
500
+ Версия: 1.0.2 - Исправлен импорт Engine и проблемы с новыми библеотеками, полная документация
@@ -4,17 +4,20 @@ PyOpenGL>=3.1.7
4
4
  Pillow>=10.0
5
5
 
6
6
  [audio]
7
- pygame-ce>=2.5
7
+ pygame>=2.5
8
8
 
9
9
  [full]
10
- pygame-ce>=2.5
11
- pymunk>=6.0
12
- freetype-py>=2.4
13
- imgui>=2.0
10
+ trimesh>=3.21
11
+ imgui-bundle>=1.0
14
12
  noise>=1.2
13
+ pymunk>=6.0
15
14
  pyyaml>=6.0
16
15
  imageio>=2.31
17
- trimesh>=3.21
16
+ pygame>=2.5
17
+ freetype-py>=2.4
18
+
19
+ [imgui]
20
+ imgui-bundle>=1.0
18
21
 
19
22
  [physics]
20
23
  pymunk>=6.0
@@ -0,0 +1,132 @@
1
+ """Aether Engine - 3D Game Engine"""
2
+ from setuptools import setup, find_packages
3
+ import sys
4
+ import subprocess
5
+ import importlib.util
6
+
7
+ with open("README.md", "r", encoding="utf-8") as f:
8
+ long_description = f.read()
9
+
10
+ python_version = sys.version_info
11
+
12
+ def can_install(package_name):
13
+ """Проверяет, можно ли установить пакет"""
14
+ try:
15
+ # Пробуем импортировать
16
+ importlib.util.find_spec(package_name.replace("-", "_").split(">=")[0].split("[")[0])
17
+ return True
18
+ except:
19
+ pass
20
+
21
+ # Пробуем установить
22
+ try:
23
+ subprocess.run(
24
+ [sys.executable, "-m", "pip", "install", "--dry-run", package_name],
25
+ capture_output=True, timeout=10
26
+ )
27
+ return True
28
+ except:
29
+ return False
30
+
31
+ def is_installed(package_name):
32
+ """Проверяет, установлен ли уже пакет"""
33
+ name = package_name.split(">=")[0].split("[")[0].replace("-", "_")
34
+ return importlib.util.find_spec(name) is not None
35
+
36
+ # Базовые зависимости
37
+ install_requires = [
38
+ "numpy>=1.24",
39
+ "glfw>=2.6",
40
+ "PyOpenGL>=3.1.7",
41
+ "Pillow>=10.0",
42
+ ]
43
+
44
+ # Проверяем что уже установлено
45
+ print(f"Python {python_version.major}.{python_version.minor} detected")
46
+ print("Checking available packages...")
47
+
48
+ # Аудио
49
+ audio_requires = []
50
+ if is_installed("pygame_ce"):
51
+ audio_requires = ["pygame-ce>=2.5"]
52
+ print(" pygame-ce: already installed")
53
+ elif is_installed("pygame"):
54
+ audio_requires = ["pygame>=2.5"]
55
+ print(" pygame: already installed")
56
+ elif python_version >= (3, 13):
57
+ audio_requires = ["pygame-ce>=2.5"]
58
+ print(" audio: pygame-ce selected")
59
+ else:
60
+ audio_requires = ["pygame>=2.5"]
61
+ print(" audio: pygame selected")
62
+
63
+ # Физика
64
+ physics_requires = []
65
+ if is_installed("pymunk"):
66
+ physics_requires.append("pymunk>=6.0")
67
+ print(" pymunk: already installed")
68
+ else:
69
+ physics_requires.append("pymunk>=6.0")
70
+ print(" physics: pymunk selected (PyBullet not available on Python 3.14+)")
71
+
72
+ # ImGui
73
+ imgui_requires = []
74
+ if is_installed("imgui_bundle"):
75
+ imgui_requires = ["imgui-bundle>=1.0"]
76
+ print(" imgui-bundle: already installed")
77
+ elif python_version < (3, 14):
78
+ imgui_requires = ["imgui>=2.0"]
79
+ print(" imgui: selected")
80
+ else:
81
+ print(" imgui: skipped (not compatible with Python 3.14+)")
82
+
83
+ # Полный набор
84
+ full_requires = audio_requires + physics_requires + imgui_requires + [
85
+ "freetype-py>=2.4",
86
+ "noise>=1.2",
87
+ "pyyaml>=6.0",
88
+ "imageio>=2.31",
89
+ "trimesh>=3.21",
90
+ ]
91
+
92
+ # Убираем дубликаты
93
+ full_requires = list(set(full_requires))
94
+
95
+ extras_require = {
96
+ "audio": audio_requires,
97
+ "physics": physics_requires,
98
+ "imgui": imgui_requires,
99
+ "full": full_requires,
100
+ }
101
+
102
+ print(f"Audio: {audio_requires}")
103
+ print(f"Physics: {physics_requires}")
104
+ print(f"ImGui: {imgui_requires}")
105
+
106
+ setup(
107
+ name="aether-engine",
108
+ version="1.0.2",
109
+ author="entiti937",
110
+ description="Полноценный 3D игровой движок на Python с OpenGL",
111
+ long_description=long_description,
112
+ long_description_content_type="text/plain",
113
+ url="https://pypi.org/project/aether-engine/",
114
+ packages=find_packages(),
115
+ install_requires=install_requires,
116
+ extras_require=extras_require,
117
+ python_requires=">=3.10",
118
+ classifiers=[
119
+ "Development Status :: 4 - Beta",
120
+ "Intended Audience :: Developers",
121
+ "Topic :: Games/Entertainment",
122
+ "Topic :: Multimedia :: Graphics :: 3D Rendering",
123
+ "License :: OSI Approved :: MIT License",
124
+ "Programming Language :: Python :: 3",
125
+ "Programming Language :: Python :: 3.10",
126
+ "Programming Language :: Python :: 3.11",
127
+ "Programming Language :: Python :: 3.12",
128
+ "Programming Language :: Python :: 3.13",
129
+ "Programming Language :: Python :: 3.14",
130
+ "Operating System :: OS Independent",
131
+ ],
132
+ )
@@ -1,80 +0,0 @@
1
- """Aether Engine - 3D Game Engine"""
2
- from setuptools import setup, find_packages
3
- import sys
4
-
5
- with open("README.md", "r", encoding="utf-8") as f:
6
- long_description = f.read()
7
-
8
- # Определяем версию Python
9
- python_version = sys.version_info
10
-
11
- # Базовые зависимости (работают везде)
12
- install_requires = [
13
- "numpy>=1.24",
14
- "glfw>=2.6",
15
- "PyOpenGL>=3.1.7",
16
- "Pillow>=10.0",
17
- ]
18
-
19
- # Аудио — выбираем в зависимости от версии Python
20
- if python_version >= (3, 13):
21
- audio_requires = ["pygame-ce>=2.5"] # Для Python 3.13+
22
- elif python_version >= (3, 10):
23
- audio_requires = ["pygame>=2.5"] # Для Python 3.10-3.12
24
- else:
25
- audio_requires = ["pygame>=2.5"]
26
-
27
- # Физика
28
- if python_version >= (3, 14):
29
- # PyBullet может не собраться на Python 3.14+
30
- physics_requires = ["pymunk>=6.0"] # Используем pymunk как альтернативу
31
- elif python_version >= (3, 10):
32
- physics_requires = ["PyBullet>=3.2.5", "pymunk>=6.0"] # Оба варианта
33
- else:
34
- physics_requires = ["PyBullet>=3.2.5", "pymunk>=6.0"]
35
-
36
- extras_require = {
37
- "audio": audio_requires,
38
- "physics": physics_requires,
39
- "full": audio_requires + physics_requires + [
40
- "freetype-py>=2.4",
41
- "imgui>=2.0",
42
- "noise>=1.2",
43
- "pyyaml>=6.0",
44
- "imageio>=2.31",
45
- "trimesh>=3.21",
46
- ],
47
- }
48
-
49
- # Выводим информацию
50
- print(f"Python {python_version.major}.{python_version.minor} detected")
51
- print(f"Audio backend: {audio_requires}")
52
- print(f"Physics backend: {physics_requires}")
53
-
54
- setup(
55
- name="aether-engine",
56
- version="1.0.1",
57
- author="entiti937",
58
- description="Полноценный 3D игровой движок на Python с OpenGL",
59
- long_description=long_description,
60
- long_description_content_type="text/plain",
61
- url="https://pypi.org/project/aether-engine/",
62
- packages=find_packages(),
63
- install_requires=install_requires,
64
- extras_require=extras_require,
65
- python_requires=">=3.10",
66
- classifiers=[
67
- "Development Status :: 4 - Beta",
68
- "Intended Audience :: Developers",
69
- "Topic :: Games/Entertainment",
70
- "Topic :: Multimedia :: Graphics :: 3D Rendering",
71
- "License :: OSI Approved :: MIT License",
72
- "Programming Language :: Python :: 3",
73
- "Programming Language :: Python :: 3.10",
74
- "Programming Language :: Python :: 3.11",
75
- "Programming Language :: Python :: 3.12",
76
- "Programming Language :: Python :: 3.13",
77
- "Programming Language :: Python :: 3.14",
78
- "Operating System :: OS Independent",
79
- ],
80
- )
File without changes
File without changes
File without changes