<div dir="ltr"><div>In the UNH jenkins repo, please read the jenkinsfile for running the dts-check-format script, check which image it is pulling, and check how it meets dependencies. I can't remember if the dependencies are met at runtime or build time, or even if it uses poetry or not. So, there is a risk that the checks in CI could continue to run with older dependency versions even after this patch hits main. Let me know if you have questions.</div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Thu, Jun 25, 2026 at 1:22 PM Koushik Bhargav Nimoji <<a href="mailto:knimoji@iol.unh.edu">knimoji@iol.unh.edu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
<br>
+Tar_modes: TypeAlias = Literal["w:gz", "w:bz2", "w:xz", "w:tar"]<br>
+<br></blockquote><div><br></div><div>Should this be tar_modes (snake case)?</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
 def expand_range(range_str: str) -> list[int]:<br>
     """Process `range_str` into a list of integers.<br>
@@ -154,7 +156,11 @@ def extension(self) -> str:<br>
         For other compression formats, the extension will be in the format<br>
         'tar.{compression format}'.<br>
         """<br>
-        return f"{self.value}" if self == self.none else f"{type(self).none.value}.{self.value}"<br>
+        return (<br>
+            f"{self.value}"<br>
+            if self == self.none<br>
+            else f"{TarCompressionFormat.none.value}.{self.value}"<br>
+        )<br>
<br>
<br>
 def convert_to_list_of_string(value: Any | list[Any]) -> list[str]:<br>
@@ -207,7 +213,8 @@ def filter_func(tarinfo: tarfile.TarInfo) -> tarfile.TarInfo | None:<br>
         return None<br>
<br>
     target_tarball_path = dir_path.with_suffix(f".{compress_format.extension}")<br>
-    with tarfile.open(target_tarball_path, f"w:{compress_format.value}") as tar:<br>
+    tarball_mode = cast(Tar_modes, f"w:{compress_format.value}")<br>
+    with tarfile.open(target_tarball_path, tarball_mode) as tar:<br></blockquote><div><br></div><div>Have you completed a testrun which flexes create_tarball(), i.e. running a DTS testrun which copies over a normal DPDK dir (instead of defining a tarball in test_run.yaml you define a normal dpdk dir source) to the SUT, i.e. it actually has to create the tarball?</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
         tar.add(dir_path, arcname=<a href="http://dir_path.name" rel="noreferrer" target="_blank">dir_path.name</a>, filter=create_filter_function(exclude))<br><br></blockquote><div><br></div><div>Thanks, let me know about the questions above but the patch looks good. I'll do a testrun and then merge to next-dts.</div><div><br></div><div>Reviewed-by: Patrick Robb <<a href="mailto:patrickrobb1997@gmail.com">patrickrobb1997@gmail.com</a>> </div></div></div>