wexample-wex-addon-dev-python 8.4.0__tar.gz → 8.5.0__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 (67) hide show
  1. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/PKG-INFO +2 -2
  2. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/README.md +1 -1
  3. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/pyproject.toml +1 -1
  4. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/workdir/python_package_workdir.py +29 -26
  5. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/__init__.py +0 -0
  6. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/__pycache__/__init__.py +0 -0
  7. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/commands/__init__.py +0 -0
  8. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/commands/code/__init__.py +0 -0
  9. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/commands/code/check/__init__.py +0 -0
  10. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/commands/code/check/mypy.py +0 -0
  11. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/commands/code/check/pylint.py +0 -0
  12. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/commands/code/check/pyright.py +0 -0
  13. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/commands/code/check.py +0 -0
  14. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/commands/code/format/__init__.py +0 -0
  15. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/commands/code/format/black.py +0 -0
  16. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/commands/code/format/isort.py +0 -0
  17. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/commands/code/format.py +0 -0
  18. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/commands/examples/__init__.py +0 -0
  19. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/commands/examples/utils/__init__.py +0 -0
  20. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/commands/examples/utils/some_example_type.py +0 -0
  21. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/commands/examples/validate.py +0 -0
  22. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/commands/release/__init__.py +0 -0
  23. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/config_value/__init__.py +0 -0
  24. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/config_value/__pycache__/__init__.py +0 -0
  25. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/config_value/python_package_readme_config_value.py +0 -0
  26. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/const/__init__.py +0 -0
  27. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/const/__pycache__/__init__.py +0 -0
  28. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/const/package.py +0 -0
  29. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/const/python.py +0 -0
  30. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/file/__init__.py +0 -0
  31. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/file/__pycache__/__init__.py +0 -0
  32. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/file/python_app_iml_file.py +0 -0
  33. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/file/python_pyproject_toml_file.py +0 -0
  34. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/helpers/__init__.py +0 -0
  35. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/helpers/pdm.py +0 -0
  36. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/middleware/__init__.py +0 -0
  37. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/middleware/__pycache__/__init__.py +0 -0
  38. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/middleware/each_python_file_middleware.py +0 -0
  39. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/py.typed +0 -0
  40. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/python_addon_manager.py +0 -0
  41. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/resources/.wex.yml +0 -0
  42. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/resources/docker/Dockerfile.python-profiling +0 -0
  43. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/resources/package_publish_gitlab.yml +0 -0
  44. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/resources/readme_templates/tests.md.j2 +0 -0
  45. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/services/__init__.py +0 -0
  46. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/services/python/__init__.py +0 -0
  47. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/services/python/app_service.py +0 -0
  48. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/services/python/commands/__init__.py +0 -0
  49. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/services/python/commands/service/__init__.py +0 -0
  50. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/services/python/commands/service/install.py +0 -0
  51. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/services/python/commands/service/setup.py +0 -0
  52. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/services/python/docker/.wex.yml +0 -0
  53. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/services/python/docker/docker-compose.yml +0 -0
  54. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/services/python/samples/__init__.py +0 -0
  55. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/services/python/samples/docker/__init__.py +0 -0
  56. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/services/python/samples/docker/docker-compose.yml +0 -0
  57. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/services/python/samples/docker/entrypoint.sh +0 -0
  58. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/services/python/samples/docker/images/Dockerfile.base +0 -0
  59. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/services/python/samples/docker/images/Dockerfile.develop +0 -0
  60. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/services/python/samples/docker/images/__init__.py +0 -0
  61. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/services/python/service.yml +0 -0
  62. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/workdir/__init__.py +0 -0
  63. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/workdir/__pycache__/__init__.py +0 -0
  64. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/workdir/mixin/__init__.py +0 -0
  65. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/workdir/mixin/with_profiling_python_workdir_mixin.py +0 -0
  66. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/workdir/python_packages_suite_workdir.py +0 -0
  67. {wexample_wex_addon_dev_python-8.4.0 → wexample_wex_addon_dev_python-8.5.0}/src/wexample_wex_addon_dev_python/workdir/python_workdir.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wexample-wex-addon-dev-python
3
- Version: 8.4.0
3
+ Version: 8.5.0
4
4
  Summary: Python dev addon for wex
5
5
  Author-Email: weeger <contact@wexample.com>
6
6
  License: MIT
@@ -24,7 +24,7 @@ Description-Content-Type: text/markdown
24
24
 
25
25
  # wex_addon_dev_python
26
26
 
27
- Version: 8.4.0
27
+ Version: 8.5.0
28
28
 
29
29
  Python dev addon for wex
30
30
 
@@ -1,6 +1,6 @@
1
1
  # wex_addon_dev_python
2
2
 
3
- Version: 8.4.0
3
+ Version: 8.5.0
4
4
 
5
5
  Python dev addon for wex
6
6
 
@@ -6,7 +6,7 @@ build-backend = "pdm.backend"
6
6
 
7
7
  [project]
8
8
  name = "wexample-wex-addon-dev-python"
9
- version = "8.4.0"
9
+ version = "8.5.0"
10
10
  description = "Python dev addon for wex"
11
11
  authors = [
12
12
  { name = "weeger", email = "contact@wexample.com" },
@@ -454,21 +454,23 @@ class PythonPackageWorkdir(PythonWorkdir):
454
454
  shell_run(publish_cmd, inherit_stdio=True, cwd=self.get_path())
455
455
 
456
456
  def _wait_for_registry(self) -> None:
457
- import time
457
+ import base64
458
458
  import urllib.error
459
459
  import urllib.request
460
460
 
461
+ from wexample_helpers.helpers.polling_callback_manager import (
462
+ PollingCallbackManager,
463
+ )
464
+
461
465
  repository_url = self.search_app_or_suite_runtime_config(
462
466
  "pdm.repository.url", default=None
463
467
  ).get_str_or_none()
464
-
465
468
  if not repository_url:
466
469
  repository_url = "https://pypi.org"
467
470
 
468
471
  token = self.search_app_or_suite_runtime_config(
469
472
  "pdm.repository.token", default=None
470
473
  ).get_str_or_none()
471
-
472
474
  username = (
473
475
  self.search_app_or_suite_runtime_config(
474
476
  "pdm.repository.username", default="__token__"
@@ -478,44 +480,45 @@ class PythonPackageWorkdir(PythonWorkdir):
478
480
 
479
481
  package = self.get_package_name()
480
482
  version = self.get_setup_version()
483
+ url = f"{repository_url.rstrip('/')}/simple/{package}/"
481
484
 
482
- base = repository_url.rstrip("/")
483
- url = f"{base}/simple/{package}/"
484
-
485
- max_attempts = 40
486
- delay = 30.0
487
-
488
- self.log(f"Waiting for {package}=={version} to appear on registry…")
489
-
490
- for attempt in range(1, max_attempts + 1):
485
+ def check_available() -> bool | None:
491
486
  try:
492
487
  req = urllib.request.Request(url)
493
488
  if token:
494
- import base64
495
-
496
489
  credentials = base64.b64encode(
497
490
  f"{username}:{token}".encode()
498
491
  ).decode()
499
492
  req.add_header("Authorization", f"Basic {credentials}")
500
493
  with urllib.request.urlopen(req, timeout=10) as resp:
501
- if resp.status == 200:
502
- content = resp.read().decode()
503
- if version in content:
504
- self.success(f"{package}=={version} is available.")
505
- return
494
+ if resp.status == 200 and version in resp.read().decode():
495
+ return True
506
496
  except urllib.error.HTTPError as e:
507
497
  if e.code != 404:
508
498
  raise
509
499
  except Exception:
510
500
  pass
501
+ return None
502
+
503
+ max_attempts = 40
504
+ delay_seconds = 30
511
505
 
506
+ self.log(f"Waiting for {package}=={version} to appear on registry…")
507
+
508
+ def on_retry(attempt, max_a, delay, _exc, _msg) -> None:
512
509
  self.log(
513
- f"Not yet available (attempt {attempt}/{max_attempts}), "
514
- f"retrying in {int(delay)}s…"
510
+ f"Not yet available (attempt {attempt}/{max_a}), retrying in {delay}s…"
515
511
  )
516
- time.sleep(delay)
517
512
 
518
- raise RuntimeError(
519
- f"Timed out waiting for {package}=={version} on registry after "
520
- f"{max_attempts * int(delay) // 60} minutes."
521
- )
513
+ PollingCallbackManager(
514
+ callback=check_available,
515
+ max_attempts=max_attempts,
516
+ delay_seconds_callback=lambda _attempt: delay_seconds,
517
+ on_retry_callback=on_retry,
518
+ timeout_message=(
519
+ f"Timed out waiting for {package}=={version} on registry after "
520
+ f"{max_attempts * delay_seconds // 60} minutes."
521
+ ),
522
+ ).run()
523
+
524
+ self.success(f"{package}=={version} is available.")