MCPcopy Index your code
hub / github.com/DeepLabCut/DeepLabCut / UpdateChecker

Class UpdateChecker

deeplabcut/gui/utils.py:114–236  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

112
113
114class UpdateChecker(QtCore.QObject):
115 finished = QtCore.Signal(object) # emits result dict
116
117 DLC_URL = "https://pypi.org/pypi/deeplabcut/json"
118 NAPARI_DLC_URL = "https://pypi.org/pypi/napari-deeplabcut/json"
119
120 def __init__(self, dlc_version: str, plugin_version: str, timeout_ms: int = 5000, parent=None):
121 super().__init__(parent)
122 self._dlc_version = dlc_version
123 self._plugin_version = plugin_version
124 self._timeout_ms = timeout_ms
125
126 self._manager = QtNetwork.QNetworkAccessManager(self)
127 self._timer = QtCore.QTimer(self)
128 self._timer.setSingleShot(True)
129 self._timer.timeout.connect(self._on_timeout)
130
131 self._running = False
132 self._silent = True
133 self._replies = {}
134 self._result = {}
135
136 def is_running(self) -> bool:
137 return self._running
138
139 def check(self, silent: bool = True):
140 if self._running:
141 # if a manual check happens while a silent one is running,
142 # keep the in-flight request but upgrade the result visibility
143 self._silent = self._silent and silent
144 return
145
146 self._running = True
147 self._silent = silent
148 self._result = {
149 "silent": silent,
150 "is_latest": True,
151 "latest_version": None,
152 "is_latest_plugin": True,
153 "latest_plugin_version": None,
154 "error": None,
155 }
156
157 self._start_request("dlc", self.DLC_URL)
158 self._start_request("napari-dlc", self.NAPARI_DLC_URL)
159 self._timer.start(self._timeout_ms)
160
161 def cancel(self):
162 if not self._running:
163 return
164 self._silent = True
165 self._abort_all()
166 self._finish()
167
168 def _start_request(self, key: str, url: str):
169 req = QtNetwork.QNetworkRequest(QtCore.QUrl(url))
170 req.setHeader(
171 QtNetwork.QNetworkRequest.KnownHeaders.UserAgentHeader,

Callers 1

__init__Method · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected