# Copyright 2022 The Pigweed Authors
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.

package(default_visibility = ["//visibility:public"])

# TODO(b/241456982): Not expected to build yet due to the dependency on
# snapshot_proto_py_pb2.
py_library(
    name = "pw_snapshot",
    srcs = [
        "pw_snapshot/__init__.py",
        "pw_snapshot/processor.py",
    ],
    deps = [
        ":pw_snapshot_metadata",
        "//pw_build_info/py:pw_build_info",
        "//pw_chrono/py:pw_chrono",
        "//pw_cpu_exception_cortex_m/py:exception_analyzer",
        "//pw_snapshot:snapshot_proto_py_pb2",
        "//pw_symbolizer/py:pw_symbolizer",
        "//pw_thread/py:pw_thread",
        "//pw_tokenizer/py:pw_tokenizer",
    ],
)

# TODO(b/241456982): Not expected to build yet due to the dependency on
# metadata_proto_py_pb2.
py_library(
    name = "pw_snapshot_metadata",
    srcs = [
        "pw_snapshot_metadata/__init__.py",
        "pw_snapshot_metadata/metadata.py",
    ],
    deps = [
        "//pw_log_tokenized/py:pw_log_tokenized",
        "//pw_snapshot:metadata_proto_py_pb2",
        "//pw_tokenizer/py:pw_tokenizer",
    ],
)

# TODO(b/241456982): Not expected to build yet due to the dependency on
# snapshot_proto_py_pb2.
py_test(
    name = "metadata_test",
    srcs = ["metadata_test.py"],
    deps = [
        ":pw_snapshot_metadata",
        "//pw_snapshot:snapshot_proto_py_pb2",
        "//pw_tokenizer/py:pw_tokenizer",
    ],
)
