# Copyright 2024 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/python/python_binary.gni")
import("//build/python/python_host_test.gni")
import("//build/python/python_library.gni")

if (is_host) {
  python_host_test("sdk_common_unittest") {
    enable_mypy = true
    main_source = "sdk_common_unittest.py"
    libraries = [ ":sdk_common" ]
  }
}

python_library("sdk_common") {
  enable_mypy = true
  sources = [ "__init__.py" ]
  library_deps = [ "//third_party/pyyaml:yaml" ]
}

group("tests") {
  testonly = true

  deps = [ ":sdk_common_unittest($host_toolchain)" ]
}
