File: __init__.py

package info (click to toggle)
drgn 0.1.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 7,852 kB
  • sloc: python: 74,992; ansic: 54,589; awk: 423; makefile: 351; sh: 99
file content (39 lines) | stat: -rw-r--r-- 1,176 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# Copyright (c) Meta Platforms, Inc. and affiliates.
# SPDX-License-Identifier: LGPL-2.1-or-later

import os
from pathlib import Path
import subprocess
import tempfile
import unittest

from util import out_of_date


def get_resource(name: str) -> Path:
    dir = Path(__file__).parent
    decompressed_path = dir / name
    compressed_path = dir / (name + ".zst")
    if out_of_date(decompressed_path, compressed_path):
        tmp_file = tempfile.NamedTemporaryFile(dir=dir, prefix=name, delete=False)
        try:
            try:
                subprocess.check_call(
                    [
                        "zstd",
                        "--quiet",
                        "--force",
                        "--decompress",
                        "--stdout",
                        str(compressed_path),
                    ],
                    stdout=tmp_file,
                )
            except FileNotFoundError:
                raise unittest.SkipTest("zstd not found")
        except BaseException:
            os.unlink(tmp_file.name)
            raise
        else:
            os.rename(tmp_file.name, decompressed_path)
    return decompressed_path