coiled 1.135.3.dev3__tar.gz → 1.135.4.dev17__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 (104) hide show
  1. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/PKG-INFO +2 -2
  2. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/software_utils.py +18 -14
  3. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/.gitignore +0 -0
  4. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/LICENSE +0 -0
  5. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/README.md +0 -0
  6. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/__init__.py +0 -0
  7. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/__main__.py +0 -0
  8. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/analytics.py +0 -0
  9. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/auth.py +0 -0
  10. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/batch.py +0 -0
  11. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/capture_environment.py +0 -0
  12. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/__init__.py +0 -0
  13. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/batch/__init__.py +0 -0
  14. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/batch/list.py +0 -0
  15. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/batch/logs.py +0 -0
  16. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/batch/run.py +0 -0
  17. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/batch/status.py +0 -0
  18. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/batch/util.py +0 -0
  19. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/batch/wait.py +0 -0
  20. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/cluster/__init__.py +0 -0
  21. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/cluster/azure_logs.py +0 -0
  22. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/cluster/better_logs.py +0 -0
  23. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/cluster/crud.py +0 -0
  24. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/cluster/get_address.py +0 -0
  25. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/cluster/list.py +0 -0
  26. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/cluster/logs.py +0 -0
  27. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/cluster/metrics.py +0 -0
  28. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/cluster/ssh.py +0 -0
  29. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/cluster/utils.py +0 -0
  30. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/config.py +0 -0
  31. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/core.py +0 -0
  32. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/curl.py +0 -0
  33. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/diagnostics.py +0 -0
  34. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/env.py +0 -0
  35. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/file.py +0 -0
  36. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/hello/__init__.py +0 -0
  37. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/hello/examples/__init__.py +0 -0
  38. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/hello/examples/exit.py +0 -0
  39. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/hello/examples/hello_world.py +0 -0
  40. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/hello/examples/nyc_parquet.py +0 -0
  41. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/hello/examples/pytorch.py +0 -0
  42. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/hello/examples/xarray_nwm.py +0 -0
  43. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/hello/hello.py +0 -0
  44. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/hello/scripts/fill_ipython.py +0 -0
  45. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/hello/scripts/nyc_parquet.py +0 -0
  46. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/hello/scripts/pytorch.py +0 -0
  47. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/hello/scripts/xarray_nwm.py +0 -0
  48. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/hello/utils.py +0 -0
  49. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/login.py +0 -0
  50. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/mpi.py +0 -0
  51. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/notebook/__init__.py +0 -0
  52. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/notebook/notebook.py +0 -0
  53. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/package_sync.py +0 -0
  54. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/prefect.py +0 -0
  55. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/prefect_serve.py +0 -0
  56. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/run.py +0 -0
  57. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/setup/__init__.py +0 -0
  58. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/setup/amp.py +0 -0
  59. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/setup/aws.py +0 -0
  60. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/setup/azure.py +0 -0
  61. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/setup/entry.py +0 -0
  62. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/setup/gcp.py +0 -0
  63. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/setup/prometheus.py +0 -0
  64. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/setup/util.py +0 -0
  65. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/sync.py +0 -0
  66. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cli/utils.py +0 -0
  67. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/cluster.py +0 -0
  68. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/coiled.yaml +0 -0
  69. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/compatibility.py +0 -0
  70. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/config.py +0 -0
  71. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/context.py +0 -0
  72. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/core.py +0 -0
  73. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/credentials/__init__.py +0 -0
  74. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/credentials/aws.py +0 -0
  75. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/credentials/google.py +0 -0
  76. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/errors.py +0 -0
  77. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/exceptions.py +0 -0
  78. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/extensions/__init__.py +0 -0
  79. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/extensions/prefect/__init__.py +0 -0
  80. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/extensions/prefect/runners.py +0 -0
  81. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/extensions/prefect/workers.py +0 -0
  82. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/filestore.py +0 -0
  83. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/function.py +0 -0
  84. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/plugins.py +0 -0
  85. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/prefect.py +0 -0
  86. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/pypi_conda_map.py +0 -0
  87. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/scan.py +0 -0
  88. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/software.py +0 -0
  89. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/spans.py +0 -0
  90. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/spark.py +0 -0
  91. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/types.py +0 -0
  92. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/utils.py +0 -0
  93. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/v2/__init__.py +0 -0
  94. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/v2/cluster.py +0 -0
  95. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/v2/cluster_comms.py +0 -0
  96. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/v2/core.py +0 -0
  97. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/v2/cwi_log_link.py +0 -0
  98. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/v2/states.py +0 -0
  99. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/v2/widgets/__init__.py +0 -0
  100. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/v2/widgets/interface.py +0 -0
  101. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/v2/widgets/rich.py +0 -0
  102. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/v2/widgets/util.py +0 -0
  103. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/coiled/websockets.py +0 -0
  104. {coiled-1.135.3.dev3 → coiled-1.135.4.dev17}/pyproject.toml +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: coiled
3
- Version: 1.135.3.dev3
3
+ Version: 1.135.4.dev17
4
4
  Summary: Python client for coiled.io dask clusters
5
5
  Project-URL: Homepage, https://coiled.io
6
6
  Maintainer-email: Coiled <info@coiled.io>
@@ -686,21 +686,25 @@ def get_rattler_keyring_auth(netloc: str) -> tuple[str, str] | None:
686
686
 
687
687
  return None
688
688
 
689
- # Try exact match first
690
- auth_parts = try_keyring_auth(netloc)
691
- if auth_parts:
692
- logger.debug(f"Found rattler keyring auth for {netloc}")
693
- return auth_parts
694
-
695
- # Try parent domain matches if exact match failed
696
- # If looking for foo.example.com, try example.com (but not com)
697
- parts = netloc.split(".")
698
- for i in range(1, len(parts) - 1): # Stop before single TLD
699
- parent_domain = ".".join(parts[i:])
700
-
701
- auth_parts = try_keyring_auth(parent_domain)
689
+ # Keyring lookups are by exact key, so unlike the file-based store we can't scan for
690
+ # wildcards, we have to construct them. rattler tries the exact host, then walks up the
691
+ # domain trying `*.<domain>` at each level: `pixi auth login prefix.dev` is stored as
692
+ # `*.prefix.dev` and authenticates any subdomain, e.g. repo.prefix.dev. We also keep
693
+ # trying bare parent domains, which rattler doesn't do, but which we've always done.
694
+ candidates = [netloc]
695
+ domain = netloc
696
+ while True:
697
+ candidates.append(f"*.{domain}")
698
+ if "." not in domain:
699
+ break
700
+ domain = domain.split(".", 1)[1]
701
+ if "." in domain: # bare parent domain, but never a bare TLD
702
+ candidates.append(domain)
703
+
704
+ for candidate in candidates:
705
+ auth_parts = try_keyring_auth(candidate)
702
706
  if auth_parts:
703
- logger.debug(f"Found rattler keyring auth for {parent_domain} (matching {netloc})")
707
+ logger.debug(f"Found rattler keyring auth for {candidate} (matching {netloc})")
704
708
  return auth_parts
705
709
 
706
710
  logger.debug(f"No rattler keyring auth found for {netloc}")
File without changes
File without changes
File without changes