We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Airflow Helm chart fails to deploy with ArgoCD
### Official Helm Chart version

1.12.0 (latest released)

### Apache Airflow version

latest

### Kubernetes Version

1.29

### Helm Chart configuration

No parameters with the simple ArgoCD deployment (5.51.x).

### Docker Image customizations

no

### What happened

ArgoCD fails to deploy with `Unable to create application: application spec for airflow-test is invalid: InvalidSpecError: Unable to generate manifests in : rpc error: code = Unknown desc = illegal filepath in archive: /tmp/d629b287-bcfd-4ca1-b827-33aa871dae80`

### What you think should happen instead

ArgoCD should be able to create application

### How to reproduce

1. Deploy ArgoCD
2. Create a simple ArgoCD application from UI
```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: 'airflow-test'
spec:
  project: default
  source:
    repoURL: 'https://airflow.apache.org'
    targetRevision: 1.12.0
    helm:
      releaseName: airflow-test
      version: v3
    chart: airflow
  destination:
    server: 'https://kubernetes.default.svc'
    namespace: airflow-test
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
      - CreateNamespace=true
```

### Anything else

Issue in ArgoCD https://github.com/argoproj/argo-cd/issues/17182

### Are you willing to submit PR?

- [x] Yes I am willing to submit a PR!

### Code of Conduct

- [x] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `dev/breeze/src/airflow_breeze/utils/reproducible.py`
Content:
```
1 #!/usr/bin/env python3
2 
3 
4 # Licensed to the Apache Software Foundation (ASF) under one
5 # or more contributor license agreements.  See the NOTICE file
6 # distributed with this work for additional information
7 # regarding copyright ownership.  The ASF licenses this file
8 # to you under the Apache License, Version 2.0 (the
9 # "License"); you may not use this file except in compliance
10 # with the License.  You may obtain a copy of the License at
11 #
12 #   http://www.apache.org/licenses/LICENSE-2.0
13 #
14 # Unless required by applicable law or agreed to in writing,
15 # software distributed under the License is distributed on an
16 # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17 # KIND, either express or implied.  See the License for the
18 # specific language governing permissions and limitations
19 # under the License.
20 
21 # Copyright 2013 The Servo Project Developers.
22 # Copyright 2017 zerolib Developers.
23 #
24 # Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
25 # http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
26 # <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
27 # option. This file may not be copied, modified, or distributed
28 # except according to those terms.
29 
30 # This command is a largely vendored-in script from
31 # https://github.com/MuxZeroNet/reproducible/blob/master/reproducible.py
32 from __future__ import annotations
33 
34 import contextlib
35 import gzip
36 import itertools
37 import locale
38 import os
39 import shutil
40 import tarfile
41 from argparse import ArgumentParser
42 from pathlib import Path
43 from subprocess import CalledProcessError, CompletedProcess
44 
45 from airflow_breeze.utils.path_utils import AIRFLOW_SOURCES_ROOT, OUT_DIR, REPRODUCIBLE_DIR
46 from airflow_breeze.utils.run_utils import run_command
47 
48 
49 def get_source_date_epoch(path: Path):
50     import yaml
51 
52     reproducible_build_yaml = path / "reproducible_build.yaml"
53     reproducible_build_dict = yaml.safe_load(reproducible_build_yaml.read_text())
54     source_date_epoch: int = reproducible_build_dict["source-date-epoch"]
55     return source_date_epoch
56 
57 
58 @contextlib.contextmanager
59 def cd(new_path: Path):
60     """Context manager for changing the current working directory"""
61     previous_path = os.getcwd()
62     try:
63         os.chdir(new_path.as_posix())
64         yield
65     finally:
66         os.chdir(previous_path)
67 
68 
69 @contextlib.contextmanager
70 def setlocale(name: str):
71     """Context manager for changing the current locale"""
72     saved_locale = locale.setlocale(locale.LC_ALL)
73     try:
74         yield locale.setlocale(locale.LC_ALL, name)
75     finally:
76         locale.setlocale(locale.LC_ALL, saved_locale)
77 
78 
79 def repack_deterministically(
80     source_archive: Path, dest_archive: Path, prepend_path=None, timestamp=0
81 ) -> CompletedProcess | CalledProcessError:
82     """Repack a .tar.gz archive in a deterministic (reproducible) manner.
83 
84     See https://reproducible-builds.org/docs/archives/ for more details."""
85 
86     def reset(tarinfo):
87         """Helper to reset owner/group and modification time for tar entries"""
88         tarinfo.uid = tarinfo.gid = 0
89         tarinfo.uname = tarinfo.gname = "root"
90         tarinfo.mtime = timestamp
91         return tarinfo
92 
93     OUT_DIR.mkdir(exist_ok=True)
94     shutil.rmtree(REPRODUCIBLE_DIR, ignore_errors=True)
95     REPRODUCIBLE_DIR.mkdir(exist_ok=True)
96 
97     result = run_command(
98         [
99             "tar",
100             "-xf",
101             source_archive.as_posix(),
102             "-C",
103             REPRODUCIBLE_DIR.as_posix(),
104         ],
105         check=False,
106     )
107     if result.returncode != 0:
108         return result
109     dest_archive.unlink(missing_ok=True)
110     result = run_command(
111         [
112             "chmod",
113             "-R",
114             "go=",
115             REPRODUCIBLE_DIR.as_posix(),
116         ],
117         check=False,
118     )
119     with cd(REPRODUCIBLE_DIR):
120         current_dir = "."
121         file_list = [current_dir]
122         for root, dirs, files in os.walk(current_dir):
123             for name in itertools.chain(dirs, files):
124                 file_list.append(os.path.join(root, name))
125 
126         # Sort file entries with the fixed locale
127         with setlocale("C"):
128             file_list.sort(key=locale.strxfrm)
129 
130         # Use a temporary file and atomic rename to avoid partially-formed
131         # packaging (in case of exceptional situations like running out of disk space).
132         temp_file = f"{dest_archive}.temp~"
133         with os.fdopen(os.open(temp_file, os.O_WRONLY | os.O_CREAT, 0o644), "wb") as out_file:
134             with gzip.GzipFile(fileobj=out_file, mtime=0, mode="wb") as gzip_file:
135                 with tarfile.open(fileobj=gzip_file, mode="w:") as tar_file:  # type: ignore
136                     for entry in file_list:
137                         arcname = entry
138                         if prepend_path is not None:
139                             arcname = os.path.normpath(os.path.join(prepend_path, arcname))
140                         if arcname.startswith("./"):
141                             arcname = arcname[2:]
142                         tar_file.add(entry, filter=reset, recursive=False, arcname=arcname)
143         os.rename(temp_file, dest_archive)
144     return result
145 
146 
147 def main():
148     parser = ArgumentParser()
149     parser.add_argument("-a", "--archive", help="archive to repack")
150     parser.add_argument("-o", "--out", help="archive destination")
151     parser.add_argument("-p", "--prepend", help="prepend path in the archive")
152     parser.add_argument(
153         "-t",
154         "--timestamp",
155         help="timestamp of files",
156         type=int,
157         default=get_source_date_epoch(AIRFLOW_SOURCES_ROOT / "airflow"),
158     )
159 
160     args = parser.parse_args()
161 
162     if not args.archive or not args.out:
163         error = (
164             "You should provide an archive to repack, and the target "
165             f"archive file name, not {repr((args.archoive, args.out))}"
166         )
167         raise ValueError(error)
168 
169     repack_deterministically(
170         source_archive=Path(args.archive),
171         dest_archive=Path(args.out),
172         prepend_path=args.prepend,
173         timestamp=args.timestamp,
174     )
175 
176 
177 if __name__ == "__main__":
178     main()
179
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/dev/breeze/src/airflow_breeze/utils/reproducible.py b/dev/breeze/src/airflow_breeze/utils/reproducible.py
--- a/dev/breeze/src/airflow_breeze/utils/reproducible.py
+++ b/dev/breeze/src/airflow_breeze/utils/reproducible.py
@@ -137,6 +137,8 @@
                         arcname = entry
                         if prepend_path is not None:
                             arcname = os.path.normpath(os.path.join(prepend_path, arcname))
+                        if arcname == ".":
+                            continue
                         if arcname.startswith("./"):
                             arcname = arcname[2:]
                         tar_file.add(entry, filter=reset, recursive=False, arcname=arcname)

{"golden_diff": "diff --git a/dev/breeze/src/airflow_breeze/utils/reproducible.py b/dev/breeze/src/airflow_breeze/utils/reproducible.py\n--- a/dev/breeze/src/airflow_breeze/utils/reproducible.py\n+++ b/dev/breeze/src/airflow_breeze/utils/reproducible.py\n@@ -137,6 +137,8 @@\n                         arcname = entry\n                         if prepend_path is not None:\n                             arcname = os.path.normpath(os.path.join(prepend_path, arcname))\n+                        if arcname == \".\":\n+                            continue\n                         if arcname.startswith(\"./\"):\n                             arcname = arcname[2:]\n                         tar_file.add(entry, filter=reset, recursive=False, arcname=arcname)\n", "issue": "Airflow Helm chart fails to deploy with ArgoCD\n### Official Helm Chart version\n\n1.12.0 (latest released)\n\n### Apache Airflow version\n\nlatest\n\n### Kubernetes Version\n\n1.29\n\n### Helm Chart configuration\n\nNo parameters with the simple ArgoCD deployment (5.51.x).\n\n### Docker Image customizations\n\nno\n\n### What happened\n\nArgoCD fails to deploy with `Unable to create application: application spec for airflow-test is invalid: InvalidSpecError: Unable to generate manifests in : rpc error: code = Unknown desc = illegal filepath in archive: /tmp/d629b287-bcfd-4ca1-b827-33aa871dae80`\n\n### What you think should happen instead\n\nArgoCD should be able to create application\n\n### How to reproduce\n\n1. Deploy ArgoCD\n2. Create a simple ArgoCD application from UI\n```\napiVersion: argoproj.io/v1alpha1\nkind: Application\nmetadata:\n  name: 'airflow-test'\nspec:\n  project: default\n  source:\n    repoURL: 'https://airflow.apache.org'\n    targetRevision: 1.12.0\n    helm:\n      releaseName: airflow-test\n      version: v3\n    chart: airflow\n  destination:\n    server: 'https://kubernetes.default.svc'\n    namespace: airflow-test\n  syncPolicy:\n    automated:\n      prune: true\n      selfHeal: true\n    syncOptions:\n      - CreateNamespace=true\n```\n\n### Anything else\n\nIssue in ArgoCD https://github.com/argoproj/argo-cd/issues/17182\n\n### Are you willing to submit PR?\n\n- [x] Yes I am willing to submit a PR!\n\n### Code of Conduct\n\n- [x] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)\n\n", "before_files": [{"content": "#!/usr/bin/env python3\n\n\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#   http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing,\n# software distributed under the License is distributed on an\n# \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n# KIND, either express or implied.  See the License for the\n# specific language governing permissions and limitations\n# under the License.\n\n# Copyright 2013 The Servo Project Developers.\n# Copyright 2017 zerolib Developers.\n#\n# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or\n# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license\n# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your\n# option. This file may not be copied, modified, or distributed\n# except according to those terms.\n\n# This command is a largely vendored-in script from\n# https://github.com/MuxZeroNet/reproducible/blob/master/reproducible.py\nfrom __future__ import annotations\n\nimport contextlib\nimport gzip\nimport itertools\nimport locale\nimport os\nimport shutil\nimport tarfile\nfrom argparse import ArgumentParser\nfrom pathlib import Path\nfrom subprocess import CalledProcessError, CompletedProcess\n\nfrom airflow_breeze.utils.path_utils import AIRFLOW_SOURCES_ROOT, OUT_DIR, REPRODUCIBLE_DIR\nfrom airflow_breeze.utils.run_utils import run_command\n\n\ndef get_source_date_epoch(path: Path):\n    import yaml\n\n    reproducible_build_yaml = path / \"reproducible_build.yaml\"\n    reproducible_build_dict = yaml.safe_load(reproducible_build_yaml.read_text())\n    source_date_epoch: int = reproducible_build_dict[\"source-date-epoch\"]\n    return source_date_epoch\n\n\n@contextlib.contextmanager\ndef cd(new_path: Path):\n    \"\"\"Context manager for changing the current working directory\"\"\"\n    previous_path = os.getcwd()\n    try:\n        os.chdir(new_path.as_posix())\n        yield\n    finally:\n        os.chdir(previous_path)\n\n\n@contextlib.contextmanager\ndef setlocale(name: str):\n    \"\"\"Context manager for changing the current locale\"\"\"\n    saved_locale = locale.setlocale(locale.LC_ALL)\n    try:\n        yield locale.setlocale(locale.LC_ALL, name)\n    finally:\n        locale.setlocale(locale.LC_ALL, saved_locale)\n\n\ndef repack_deterministically(\n    source_archive: Path, dest_archive: Path, prepend_path=None, timestamp=0\n) -> CompletedProcess | CalledProcessError:\n    \"\"\"Repack a .tar.gz archive in a deterministic (reproducible) manner.\n\n    See https://reproducible-builds.org/docs/archives/ for more details.\"\"\"\n\n    def reset(tarinfo):\n        \"\"\"Helper to reset owner/group and modification time for tar entries\"\"\"\n        tarinfo.uid = tarinfo.gid = 0\n        tarinfo.uname = tarinfo.gname = \"root\"\n        tarinfo.mtime = timestamp\n        return tarinfo\n\n    OUT_DIR.mkdir(exist_ok=True)\n    shutil.rmtree(REPRODUCIBLE_DIR, ignore_errors=True)\n    REPRODUCIBLE_DIR.mkdir(exist_ok=True)\n\n    result = run_command(\n        [\n            \"tar\",\n            \"-xf\",\n            source_archive.as_posix(),\n            \"-C\",\n            REPRODUCIBLE_DIR.as_posix(),\n        ],\n        check=False,\n    )\n    if result.returncode != 0:\n        return result\n    dest_archive.unlink(missing_ok=True)\n    result = run_command(\n        [\n            \"chmod\",\n            \"-R\",\n            \"go=\",\n            REPRODUCIBLE_DIR.as_posix(),\n        ],\n        check=False,\n    )\n    with cd(REPRODUCIBLE_DIR):\n        current_dir = \".\"\n        file_list = [current_dir]\n        for root, dirs, files in os.walk(current_dir):\n            for name in itertools.chain(dirs, files):\n                file_list.append(os.path.join(root, name))\n\n        # Sort file entries with the fixed locale\n        with setlocale(\"C\"):\n            file_list.sort(key=locale.strxfrm)\n\n        # Use a temporary file and atomic rename to avoid partially-formed\n        # packaging (in case of exceptional situations like running out of disk space).\n        temp_file = f\"{dest_archive}.temp~\"\n        with os.fdopen(os.open(temp_file, os.O_WRONLY | os.O_CREAT, 0o644), \"wb\") as out_file:\n            with gzip.GzipFile(fileobj=out_file, mtime=0, mode=\"wb\") as gzip_file:\n                with tarfile.open(fileobj=gzip_file, mode=\"w:\") as tar_file:  # type: ignore\n                    for entry in file_list:\n                        arcname = entry\n                        if prepend_path is not None:\n                            arcname = os.path.normpath(os.path.join(prepend_path, arcname))\n                        if arcname.startswith(\"./\"):\n                            arcname = arcname[2:]\n                        tar_file.add(entry, filter=reset, recursive=False, arcname=arcname)\n        os.rename(temp_file, dest_archive)\n    return result\n\n\ndef main():\n    parser = ArgumentParser()\n    parser.add_argument(\"-a\", \"--archive\", help=\"archive to repack\")\n    parser.add_argument(\"-o\", \"--out\", help=\"archive destination\")\n    parser.add_argument(\"-p\", \"--prepend\", help=\"prepend path in the archive\")\n    parser.add_argument(\n        \"-t\",\n        \"--timestamp\",\n        help=\"timestamp of files\",\n        type=int,\n        default=get_source_date_epoch(AIRFLOW_SOURCES_ROOT / \"airflow\"),\n    )\n\n    args = parser.parse_args()\n\n    if not args.archive or not args.out:\n        error = (\n            \"You should provide an archive to repack, and the target \"\n            f\"archive file name, not {repr((args.archoive, args.out))}\"\n        )\n        raise ValueError(error)\n\n    repack_deterministically(\n        source_archive=Path(args.archive),\n        dest_archive=Path(args.out),\n        prepend_path=args.prepend,\n        timestamp=args.timestamp,\n    )\n\n\nif __name__ == \"__main__\":\n    main()\n", "path": "dev/breeze/src/airflow_breeze/utils/reproducible.py"}], "after_files": [{"content": "#!/usr/bin/env python3\n\n\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#   http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing,\n# software distributed under the License is distributed on an\n# \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n# KIND, either express or implied.  See the License for the\n# specific language governing permissions and limitations\n# under the License.\n\n# Copyright 2013 The Servo Project Developers.\n# Copyright 2017 zerolib Developers.\n#\n# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or\n# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license\n# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your\n# option. This file may not be copied, modified, or distributed\n# except according to those terms.\n\n# This command is a largely vendored-in script from\n# https://github.com/MuxZeroNet/reproducible/blob/master/reproducible.py\nfrom __future__ import annotations\n\nimport contextlib\nimport gzip\nimport itertools\nimport locale\nimport os\nimport shutil\nimport tarfile\nfrom argparse import ArgumentParser\nfrom pathlib import Path\nfrom subprocess import CalledProcessError, CompletedProcess\n\nfrom airflow_breeze.utils.path_utils import AIRFLOW_SOURCES_ROOT, OUT_DIR, REPRODUCIBLE_DIR\nfrom airflow_breeze.utils.run_utils import run_command\n\n\ndef get_source_date_epoch(path: Path):\n    import yaml\n\n    reproducible_build_yaml = path / \"reproducible_build.yaml\"\n    reproducible_build_dict = yaml.safe_load(reproducible_build_yaml.read_text())\n    source_date_epoch: int = reproducible_build_dict[\"source-date-epoch\"]\n    return source_date_epoch\n\n\n@contextlib.contextmanager\ndef cd(new_path: Path):\n    \"\"\"Context manager for changing the current working directory\"\"\"\n    previous_path = os.getcwd()\n    try:\n        os.chdir(new_path.as_posix())\n        yield\n    finally:\n        os.chdir(previous_path)\n\n\n@contextlib.contextmanager\ndef setlocale(name: str):\n    \"\"\"Context manager for changing the current locale\"\"\"\n    saved_locale = locale.setlocale(locale.LC_ALL)\n    try:\n        yield locale.setlocale(locale.LC_ALL, name)\n    finally:\n        locale.setlocale(locale.LC_ALL, saved_locale)\n\n\ndef repack_deterministically(\n    source_archive: Path, dest_archive: Path, prepend_path=None, timestamp=0\n) -> CompletedProcess | CalledProcessError:\n    \"\"\"Repack a .tar.gz archive in a deterministic (reproducible) manner.\n\n    See https://reproducible-builds.org/docs/archives/ for more details.\"\"\"\n\n    def reset(tarinfo):\n        \"\"\"Helper to reset owner/group and modification time for tar entries\"\"\"\n        tarinfo.uid = tarinfo.gid = 0\n        tarinfo.uname = tarinfo.gname = \"root\"\n        tarinfo.mtime = timestamp\n        return tarinfo\n\n    OUT_DIR.mkdir(exist_ok=True)\n    shutil.rmtree(REPRODUCIBLE_DIR, ignore_errors=True)\n    REPRODUCIBLE_DIR.mkdir(exist_ok=True)\n\n    result = run_command(\n        [\n            \"tar\",\n            \"-xf\",\n            source_archive.as_posix(),\n            \"-C\",\n            REPRODUCIBLE_DIR.as_posix(),\n        ],\n        check=False,\n    )\n    if result.returncode != 0:\n        return result\n    dest_archive.unlink(missing_ok=True)\n    result = run_command(\n        [\n            \"chmod\",\n            \"-R\",\n            \"go=\",\n            REPRODUCIBLE_DIR.as_posix(),\n        ],\n        check=False,\n    )\n    with cd(REPRODUCIBLE_DIR):\n        current_dir = \".\"\n        file_list = [current_dir]\n        for root, dirs, files in os.walk(current_dir):\n            for name in itertools.chain(dirs, files):\n                file_list.append(os.path.join(root, name))\n\n        # Sort file entries with the fixed locale\n        with setlocale(\"C\"):\n            file_list.sort(key=locale.strxfrm)\n\n        # Use a temporary file and atomic rename to avoid partially-formed\n        # packaging (in case of exceptional situations like running out of disk space).\n        temp_file = f\"{dest_archive}.temp~\"\n        with os.fdopen(os.open(temp_file, os.O_WRONLY | os.O_CREAT, 0o644), \"wb\") as out_file:\n            with gzip.GzipFile(fileobj=out_file, mtime=0, mode=\"wb\") as gzip_file:\n                with tarfile.open(fileobj=gzip_file, mode=\"w:\") as tar_file:  # type: ignore\n                    for entry in file_list:\n                        arcname = entry\n                        if prepend_path is not None:\n                            arcname = os.path.normpath(os.path.join(prepend_path, arcname))\n                        if arcname == \".\":\n                            continue\n                        if arcname.startswith(\"./\"):\n                            arcname = arcname[2:]\n                        tar_file.add(entry, filter=reset, recursive=False, arcname=arcname)\n        os.rename(temp_file, dest_archive)\n    return result\n\n\ndef main():\n    parser = ArgumentParser()\n    parser.add_argument(\"-a\", \"--archive\", help=\"archive to repack\")\n    parser.add_argument(\"-o\", \"--out\", help=\"archive destination\")\n    parser.add_argument(\"-p\", \"--prepend\", help=\"prepend path in the archive\")\n    parser.add_argument(\n        \"-t\",\n        \"--timestamp\",\n        help=\"timestamp of files\",\n        type=int,\n        default=get_source_date_epoch(AIRFLOW_SOURCES_ROOT / \"airflow\"),\n    )\n\n    args = parser.parse_args()\n\n    if not args.archive or not args.out:\n        error = (\n            \"You should provide an archive to repack, and the target \"\n            f\"archive file name, not {repr((args.archoive, args.out))}\"\n        )\n        raise ValueError(error)\n\n    repack_deterministically(\n        source_archive=Path(args.archive),\n        dest_archive=Path(args.out),\n        prepend_path=args.prepend,\n        timestamp=args.timestamp,\n    )\n\n\nif __name__ == \"__main__\":\n    main()\n", "path": "dev/breeze/src/airflow_breeze/utils/reproducible.py"}]}