wexample-wex-addon-dev-javascript 7.6.0__py3-none-any.whl → 7.7.0__py3-none-any.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.
@@ -160,10 +160,13 @@ class JavascriptPackageWorkdir(JavascriptWorkdir):
160
160
  per-version URLs.
161
161
  """
162
162
  import json
163
- import time
164
163
  import urllib.error
165
164
  import urllib.request
166
165
 
166
+ from wexample_helpers.helpers.polling_callback_manager import (
167
+ PollingCallbackManager,
168
+ )
169
+
167
170
  package = self.get_project_name()
168
171
  version = self.get_setup_version()
169
172
 
@@ -173,15 +176,9 @@ class JavascriptPackageWorkdir(JavascriptWorkdir):
173
176
  token = self.get_runtime_config().search("npm.api_token").get_str_or_none()
174
177
 
175
178
  encoded = package.replace("/", "%2F")
176
- base = (registry_base or "https://registry.npmjs.org").rstrip("/")
177
- url = f"{base}/{encoded}"
178
-
179
- max_attempts = 40
180
- delay = 30.0
181
-
182
- self.log(f"Waiting for {package}@{version} to appear on registry…")
179
+ url = f"{(registry_base or 'https://registry.npmjs.org').rstrip('/')}/{encoded}"
183
180
 
184
- for attempt in range(1, max_attempts + 1):
181
+ def check_available() -> bool | None:
185
182
  try:
186
183
  req = urllib.request.Request(url)
187
184
  if token:
@@ -190,21 +187,33 @@ class JavascriptPackageWorkdir(JavascriptWorkdir):
190
187
  if resp.status == 200:
191
188
  data = json.loads(resp.read())
192
189
  if version in data.get("versions", {}):
193
- self.success(f"{package}@{version} is available.")
194
- return
190
+ return True
195
191
  except urllib.error.HTTPError as e:
196
192
  if e.code != 404:
197
193
  raise
198
194
  except Exception:
199
195
  pass
196
+ return None
200
197
 
198
+ max_attempts = 40
199
+ delay_seconds = 30
200
+
201
+ self.log(f"Waiting for {package}@{version} to appear on registry…")
202
+
203
+ def on_retry(attempt, max_a, delay, _exc, _msg) -> None:
201
204
  self.log(
202
- f"Not yet available (attempt {attempt}/{max_attempts}), "
203
- f"retrying in {int(delay)}s…"
205
+ f"Not yet available (attempt {attempt}/{max_a}), retrying in {delay}s…"
204
206
  )
205
- time.sleep(delay)
206
207
 
207
- raise RuntimeError(
208
- f"Timed out waiting for {package}@{version} on registry after "
209
- f"{max_attempts * int(delay) // 60} minutes."
210
- )
208
+ PollingCallbackManager(
209
+ callback=check_available,
210
+ max_attempts=max_attempts,
211
+ delay_seconds_callback=lambda _attempt: delay_seconds,
212
+ on_retry_callback=on_retry,
213
+ timeout_message=(
214
+ f"Timed out waiting for {package}@{version} on registry after "
215
+ f"{max_attempts * delay_seconds // 60} minutes."
216
+ ),
217
+ ).run()
218
+
219
+ self.success(f"{package}@{version} is available.")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wexample-wex-addon-dev-javascript
3
- Version: 7.6.0
3
+ Version: 7.7.0
4
4
  Summary: Python dev addon for wex
5
5
  Author-Email: weeger <contact@wexample.com>
6
6
  License: MIT
@@ -20,7 +20,7 @@ Description-Content-Type: text/markdown
20
20
 
21
21
  # wex_addon_dev_javascript
22
22
 
23
- Version: 7.6.0
23
+ Version: 7.7.0
24
24
 
25
25
  Python dev addon for wex
26
26
 
@@ -1,6 +1,6 @@
1
- wexample_wex_addon_dev_javascript-7.6.0.dist-info/METADATA,sha256=UBmnHakgo28k5IzUwYRo4-Hqgxf_FEGT1ZAQNQ4ruDc,17094
2
- wexample_wex_addon_dev_javascript-7.6.0.dist-info/WHEEL,sha256=Z36eTX6lG3PITRleSd5hAZHCcz52yg3c0JQVxKBbLW0,90
3
- wexample_wex_addon_dev_javascript-7.6.0.dist-info/entry_points.txt,sha256=6OYgBcLyFCUgeqLgnvMyOJxPCWzgy7se4rLPKtNonMs,34
1
+ wexample_wex_addon_dev_javascript-7.7.0.dist-info/METADATA,sha256=nMFeu8ad8s6WLtzLs5kIlCSQgt6OC2WGzLQPaWiRRvk,17094
2
+ wexample_wex_addon_dev_javascript-7.7.0.dist-info/WHEEL,sha256=Z36eTX6lG3PITRleSd5hAZHCcz52yg3c0JQVxKBbLW0,90
3
+ wexample_wex_addon_dev_javascript-7.7.0.dist-info/entry_points.txt,sha256=6OYgBcLyFCUgeqLgnvMyOJxPCWzgy7se4rLPKtNonMs,34
4
4
  wexample_wex_addon_dev_javascript/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  wexample_wex_addon_dev_javascript/__pycache__/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  wexample_wex_addon_dev_javascript/config_value/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -26,7 +26,7 @@ wexample_wex_addon_dev_javascript/services/vite/docker/.wex.yml,sha256=JdIF6nGkF
26
26
  wexample_wex_addon_dev_javascript/services/vite/docker/docker-compose.yml,sha256=5gP3aSnorpHUYv2zZhjTvPiH81NiP1oeN2VGw-z7ViQ,567
27
27
  wexample_wex_addon_dev_javascript/services/vite/service.yml,sha256=8mFPv49QbKA3klHFbNK73QOB7ryy38zFeLiQB3gfDys,184
28
28
  wexample_wex_addon_dev_javascript/workdir/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
- wexample_wex_addon_dev_javascript/workdir/javascript_package_workdir.py,sha256=i350MLSby8zi9GjB5gyq2PEZUEUZ8r534m-Qf13ZPSU,7822
29
+ wexample_wex_addon_dev_javascript/workdir/javascript_package_workdir.py,sha256=onZNo-wDNrnRXDE4YsxPktWC85XEwm2zNGm5TW8NAKM,8165
30
30
  wexample_wex_addon_dev_javascript/workdir/javascript_packages_suite_workdir.py,sha256=l9zHC5-1v8yPBdZGS7Ibxp3iklI-czXkRuPxALbz4Gk,855
31
31
  wexample_wex_addon_dev_javascript/workdir/javascript_workdir.py,sha256=WNCWK5Gq8hFXRUHOdmwiFYYW3lkxwJe0pcTKDpUxlIE,5278
32
- wexample_wex_addon_dev_javascript-7.6.0.dist-info/RECORD,,
32
+ wexample_wex_addon_dev_javascript-7.7.0.dist-info/RECORD,,