Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Embedders widget - field for a custom server URL #114

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 16 additions & 20 deletions orangecontrib/imageanalytics/widgets/owimageembedding.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,9 @@ class Error(OWWidget.Error):

cb_image_attr_current_id = Setting(default=0)
cb_embedder_current_id = Setting(default=0)
custom_server = Setting(default=False)
server_url = Setting(default="")

_previous_attr_id = None
_previous_embedder_id = None

Expand Down Expand Up @@ -153,6 +156,15 @@ def _setup_layout(self):
widget_box, EMBEDDERS_INFO[current_embedder]["description"]
)

advanced_box = gui.widgetBox(self.controlArea, 'Custom server')
self.use_custom_server_cb = gui.checkBox(
advanced_box, self, 'custom_server', "Use private server",
callback=self.changed_server_url)
self.server_url_box = gui.lineEdit(
advanced_box, self, 'server_url', label="Server URL: ",
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this could be disabled when the above checkbox is not checked.

tooltip='The url of the server for calculating image embeddings',
orientation=Qt.Horizontal, callback=self.changed_server_url)

self.auto_commit_widget = gui.auto_commit(
widget=self.buttonsArea,
master=self,
Expand All @@ -168,26 +180,6 @@ def _setup_layout(self):
self.buttonsArea.layout().addWidget(self.cancel_button)
self.cancel_button.setDisabled(True)

def set_input_data_summary(self, data):
if data is None:
self.info.set_input_summary(self.info.NoInput)
else:
self.info.set_input_summary(
str(len(data)), f"Data have {len(data)} instances"
)

def set_output_data_summary(self, data_emb, data_skip):
if data_emb is None and data_skip is None:
self.info.set_output_summary(self.info.NoOutput)
else:
success = 0 if data_emb is None else len(data_emb)
skip = 0 if data_skip is None else len(data_skip)
self.info.set_output_summary(
f"{success}",
f"{success} images successfully embedded ,\n"
f"{skip} images skipped.",
)

@Inputs.images
def set_data(self, data):
self.Warning.clear()
Expand Down Expand Up @@ -220,6 +212,10 @@ def set_data(self, data):
def _cb_image_attr_changed(self):
self._cb_changed()

def changed_server_url(self):
self._init_server_connection()
self.server_url_box.setDisabled(not self.custom_server)

def _cb_embedder_changed(self):
self.Warning.switched_local_embedder.clear()
current_embedder = self.embedders[self.cb_embedder_current_id]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,25 @@ def test_rerun_on_new_data(self):
1, len(self.get_output(self.widget.Outputs.embeddings))
)

def test_url_changed(self):
"""
This test set if the urls are changed correctly
The test may fail if default url will be changed
"""
w = self.widget

w.use_custom_server_cb.setChecked(False)
self.assertEqual(w._image_embedder._server_url, w.SERVER_URL_DEFAULT)

w.use_custom_server_cb.setChecked(True)
w.server_url_box.setText("")
w.changed_server_url()

w.use_custom_server_cb.setChecked(True)
w.server_url_box.setText(w.SERVER_URL_DEFAULT)
w.changed_server_url()
self.assertEqual(w._image_embedder._server_url, w.SERVER_URL_DEFAULT)


if __name__ == "__main__":
unittest.main()