splunk-soar-sdk 3.2.0__py3-none-any.whl → 3.2.1__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.
@@ -277,9 +277,7 @@ class UvPackage(BaseModel):
277
277
  for abi in abi_precedence:
278
278
  abi_wheels = [wheel for wheel in self.wheels if abi in wheel.abi_tags]
279
279
  for python in python_precedence:
280
- python_wheels = [
281
- wheel for wheel in abi_wheels if python in wheel.python_tags
282
- ]
280
+ python_wheels = self._filter_python_wheels(abi_wheels, python, abi)
283
281
  for platform in platform_precedence:
284
282
  platform_wheels = [
285
283
  wheel
@@ -293,6 +291,54 @@ class UvPackage(BaseModel):
293
291
  f"Could not find a suitable wheel for {self.name=}, {self.version=}, {abi_precedence=}, {python_precedence=}, {platform_precedence=}"
294
292
  )
295
293
 
294
+ def _filter_python_wheels(
295
+ self, wheels: list[UvWheel], target_python: str, abi: str
296
+ ) -> list[UvWheel]:
297
+ """Filter and sort wheels by Python version compatibility.
298
+
299
+ For abi3 wheels, prefers the highest compatible minimum version
300
+ (e.g., cp311-abi3 over cp38-abi3 for Python 3.13).
301
+ """
302
+ compatible = [
303
+ wheel
304
+ for wheel in wheels
305
+ if self._is_python_compatible(wheel, target_python, abi)
306
+ ]
307
+
308
+ # For abi3 wheels, prefer highest minimum version (closest to target)
309
+ if abi == "abi3" and compatible:
310
+ compatible = sorted(
311
+ compatible,
312
+ key=lambda w: max(
313
+ (int(tag[2:]) for tag in w.python_tags if tag.startswith("cp")),
314
+ default=0,
315
+ ),
316
+ reverse=True,
317
+ )
318
+
319
+ return compatible
320
+
321
+ def _is_python_compatible(
322
+ self, wheel: UvWheel, target_python: str, abi: str
323
+ ) -> bool:
324
+ """Check if a wheel is compatible with the target Python version.
325
+
326
+ For abi3 wheels, the Python tag indicates minimum version (e.g., cp311-abi3 works with Python ≥3.11).
327
+ For non-abi3 wheels, exact tag matching is required.
328
+ """
329
+ if target_python in wheel.python_tags:
330
+ return True
331
+
332
+ # For abi3 wheels, check if target >= minimum version (e.g., cp313 >= cp311)
333
+ if abi == "abi3":
334
+ return any(
335
+ int(tag[2:]) <= int(target_python[2:])
336
+ for tag in wheel.python_tags
337
+ if tag.startswith("cp") and target_python.startswith("cp")
338
+ )
339
+
340
+ return False
341
+
296
342
  _manylinux_precedence: ClassVar[list[str]] = [
297
343
  "_2_28", # glibc 2.28, latest stable version, supports Ubuntu 18.10+ and RHEL/Oracle 8+
298
344
  "_2_17", # glibc 2.17, LTS-ish, supports Ubuntu 13.10+ and RHEL/Oracle 7+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: splunk-soar-sdk
3
- Version: 3.2.0
3
+ Version: 3.2.1
4
4
  Summary: The official framework for developing and testing Splunk SOAR Apps
5
5
  Project-URL: Homepage, https://github.com/phantomcyber/splunk-soar-sdk
6
6
  Project-URL: Documentation, https://github.com/phantomcyber/splunk-soar-sdk
@@ -62,7 +62,7 @@ soar_sdk/meta/actions.py,sha256=YadG8Zkc0SWmcG5-Dj4NyWlYYAh4CyJksLYp_GmNZNM,1818
62
62
  soar_sdk/meta/adapters.py,sha256=KjSYIUtkCz2eesA_vhsNCjfi5C-Uz71tbSuDIjhuB8U,1112
63
63
  soar_sdk/meta/app.py,sha256=eZlM8GIY1B_o-RzJrRNCNVEQSx0sFupxZqCM7sIWGv4,2777
64
64
  soar_sdk/meta/datatypes.py,sha256=piR-oBVAATiRciXSdVE7XaqjUZTgSaOvTEqcOcNvCS0,795
65
- soar_sdk/meta/dependencies.py,sha256=DZr38K_1rKh7OzlIb5nLbdDH8xOHArr48H8Ra6rcB4k,18259
65
+ soar_sdk/meta/dependencies.py,sha256=e5PQQMpnz1_XJIvLPGeMQh8iE3RguqlCsag1CD5vXz8,19901
66
66
  soar_sdk/meta/webhooks.py,sha256=E5pdoD9j7FDeM2DBTO2h9Yw6-5flzp-NfhM_M1oPAUU,1216
67
67
  soar_sdk/models/__init__.py,sha256=ql7RRFAxmSdzU-IsoU1OFQ53E6WxZJ7YQQAhHl4Ssbk,380
68
68
  soar_sdk/models/artifact.py,sha256=OlYp150sf9sYvTz6tC7PaYV1qbBvQYrz1bXmC2xNj8Q,1086
@@ -100,8 +100,8 @@ soar_sdk/views/components/pie_chart.py,sha256=LVTeHVJN6nf2vjUs9y7PDBhS0U1fKW750l
100
100
  soar_sdk/webhooks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
101
101
  soar_sdk/webhooks/models.py,sha256=PG9SDs5xXqtFndm5C8AsJOTYXU5v_UTY7SpYosWT_CA,4542
102
102
  soar_sdk/webhooks/routing.py,sha256=MnzbnIDy2uG_5mJzsTeX-NsE6QYvzyqEGbHmEFj-DG8,6900
103
- splunk_soar_sdk-3.2.0.dist-info/METADATA,sha256=sL-PyINCXBsGJ-bPeHqiXCshp4IeLhs4HGHT171Uucs,7334
104
- splunk_soar_sdk-3.2.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
105
- splunk_soar_sdk-3.2.0.dist-info/entry_points.txt,sha256=CgBjo2ZWpYNkt9TgvToL26h2Tg1yt8FbvYTb5NVgNuc,51
106
- splunk_soar_sdk-3.2.0.dist-info/licenses/LICENSE,sha256=gNCGrGhrSQb1PUzBOByVUN1tvaliwLZfna-QU2r2hQ8,11345
107
- splunk_soar_sdk-3.2.0.dist-info/RECORD,,
103
+ splunk_soar_sdk-3.2.1.dist-info/METADATA,sha256=u9g2bI4CP5vO9AKJkPD0GswmLc-V48SGesjL_e3kZsU,7334
104
+ splunk_soar_sdk-3.2.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
105
+ splunk_soar_sdk-3.2.1.dist-info/entry_points.txt,sha256=CgBjo2ZWpYNkt9TgvToL26h2Tg1yt8FbvYTb5NVgNuc,51
106
+ splunk_soar_sdk-3.2.1.dist-info/licenses/LICENSE,sha256=gNCGrGhrSQb1PUzBOByVUN1tvaliwLZfna-QU2r2hQ8,11345
107
+ splunk_soar_sdk-3.2.1.dist-info/RECORD,,