Skip to content

Commit 62754d7

Browse files
committed
Fix bug in dependenciy loading
1 parent 111909f commit 62754d7

File tree

4 files changed

+48
-24
lines changed

4 files changed

+48
-24
lines changed

fourofour_3d_gen/dependencies.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ def installed() -> bool:
99
import numpy
1010
import pydantic
1111
import mixpanel
12+
from .spz_updater import SPZUpdater
13+
14+
if SPZUpdater.need_update():
15+
return False
1216

1317
return True
1418
except:
@@ -42,6 +46,26 @@ def install_dependencies_from_requirements():
4246
check=True,
4347
env=env_var,
4448
)
49+
from .spz_updater import SPZUpdater
50+
SPZUpdater.update()
51+
52+
def uninstall_dependencies():
53+
env_var = dict(os.environ)
54+
# ensures pip installs dependencies on blender's python lib folder
55+
env_var["PYTHONNOUSERSITE"] = "1"
56+
57+
requirements_path = Path(__file__).resolve().parent / "requirements.txt"
58+
59+
if not requirements_path.exists():
60+
raise FileNotFoundError(
61+
f"requirements.txt not found in {requirements_path.as_posix()}"
62+
)
63+
64+
subprocess.run(
65+
[sys.executable, "-m", "pip", "uninstall", "-r", requirements_path.as_posix(), "-y"],
66+
check=True,
67+
env=env_var,
68+
)
4569

4670
def update_spz():
4771
from .spz_updater import SPZUpdater
@@ -54,6 +78,10 @@ def install() -> None:
5478
install_pip()
5579
install_dependencies_from_requirements()
5680

81+
def uninstall() -> None:
82+
install_pip()
83+
uninstall_dependencies()
84+
5785
if __name__ == "__main__":
5886
if installed():
5987
print("dependencies installed")

fourofour_3d_gen/ops.py

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -141,12 +141,5 @@ def execute(self, context):
141141
MeshConversionOperator,
142142
)
143143

144+
register, unregister = bpy.utils.register_classes_factory(classes)
144145

145-
def register():
146-
for cls in classes:
147-
bpy.utils.register_class(cls)
148-
149-
150-
def unregister():
151-
for cls in reversed(classes):
152-
bpy.utils.unregister_class(cls)

fourofour_3d_gen/preferences.py

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,14 @@ class DependencyInstallationOperator(bpy.types.Operator):
1515
def execute(self, context: Context):
1616
dependencies.install()
1717
return {"FINISHED"}
18+
19+
class DependencyUninstallationOperator(bpy.types.Operator):
20+
bl_idname = "threegen.uninstalldeps"
21+
bl_label = "Uninstall Dependencies"
22+
23+
def execute(self, context: Context):
24+
dependencies.uninstall()
25+
return {"FINISHED"}
1826

1927

2028
class ConsentOperator(bpy.types.Operator):
@@ -40,6 +48,13 @@ class ThreegenPreferences(AddonPreferences):
4048
data_collection: BoolProperty(default=True)
4149
data_collection_notice: BoolProperty(default=False)
4250

51+
@classmethod
52+
def poll(cls, context):
53+
prefs = context.preferences.addons.get(__package__)
54+
if not prefs:
55+
return False
56+
return prefs.preferences.data_collection_notice
57+
4358
def draw(self, context: Context):
4459
layout: UILayout = self.layout
4560
col = layout.column()
@@ -54,23 +69,18 @@ def draw(self, context: Context):
5469
col.prop(self, "url", text="URL")
5570
col.prop(self, "token", text="API Key")
5671
col.prop(self, "data_collection", text="Allow collection of anonymous usage data")
72+
col.operator(DependencyUninstallationOperator.bl_idname)
5773

5874
else:
5975
col.operator(DependencyInstallationOperator.bl_idname)
6076

6177

6278
classes = (
6379
DependencyInstallationOperator,
80+
DependencyUninstallationOperator,
6481
ConsentOperator,
6582
ThreegenPreferences,
6683
)
6784

85+
register, unregister = bpy.utils.register_classes_factory(classes)
6886

69-
def register():
70-
for cls in classes:
71-
bpy.utils.register_class(cls)
72-
73-
74-
def unregister():
75-
for cls in reversed(classes):
76-
bpy.utils.unregister_class(cls)

fourofour_3d_gen/ui.py

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -158,12 +158,5 @@ def draw(self, context: Context):
158158
SocialPanel,
159159
)
160160

161+
register, unregister = bpy.utils.register_classes_factory(classes)
161162

162-
def register():
163-
for cls in classes:
164-
bpy.utils.register_class(cls)
165-
166-
167-
def unregister():
168-
for cls in reversed(classes):
169-
bpy.utils.unregister_class(cls)

0 commit comments

Comments
 (0)