code: def test_jumpstart_cache_get_specs():
      cache = JumpStartModelsCache(s3_bucket_name="some_bucket")
  
      model_id, version = (
          "tensorflow-ic-imagenet-inception-v3-classification-4",
          "2.0.0",
      )
      assert get_spec_from_base_spec(
          model_id=model_id, version=version
      ) == cache.get_specs(
          model_id=model_id, semantic_version_str=version
      )
  
      model_id = "tensorflow-ic-imagenet-inception-v3-classification-4"
      assert get_spec_from_base_spec(
          model_id=model_id, version="2.0.0"
      ) == cache.get_specs(
          model_id=model_id, semantic_version_str="2.0.*"
      )
  
      model_id, version = (
          "tensorflow-ic-imagenet-inception-v3-classification-4",
          "1.0.0",
      )
      assert get_spec_from_base_spec(
          model_id=model_id, version=version
      ) == cache.get_specs(
          model_id=model_id, semantic_version_str=version
      )
  
      model_id = "pytorch-ic-imagenet-inception-v3-classification-4"
      assert get_spec_from_base_spec(
          model_id=model_id, version="1.0.0"
      ) == cache.get_specs(
          model_id=model_id, semantic_version_str="1.*"
      )
  
      model_id = "pytorch-ic-imagenet-inception-v3-classification-4"
      assert get_spec_from_base_spec(
          model_id=model_id, version="1.0.0"
      ) == cache.get_specs(
          model_id=model_id, semantic_version_str="1.0.*"
      )
  
      with pytest.raises(KeyError):
          cache.get_specs(
              model_id=model_id + "bak", semantic_version_str="*"
          )
  
      with pytest.raises(KeyError):
          cache.get_specs(model_id=model_id, semantic_version_str="9.*")
  
      with pytest.raises(KeyError):
          cache.get_specs(model_id=model_id, semantic_version_str="BAD")
  
      with pytest.raises(KeyError):
          cache.get_specs(
              model_id=model_id,
              semantic_version_str="2.1.*",
          )
  
      with pytest.raises(KeyError):
          cache.get_specs(
              model_id=model_id,
              semantic_version_str="3.9.*",
          )
  
      with pytest.raises(KeyError):
          cache.get_specs(
              model_id=model_id,
              semantic_version_str="5.*",
          )
  
imports: from __future__ import absolute_import
  import copy
  import datetime
  import io
  import json
  from unittest.mock import Mock, call, mock_open
  from botocore.stub import Stubber
  import botocore
  from mock.mock import MagicMock
  import pytest
  from mock import patch
  from sagemaker.jumpstart.cache import JUMPSTART_DEFAULT_MANIFEST_FILE_S3_KEY, JumpStartModelsCache
  from sagemaker.jumpstart.constants import ENV_VARIABLE_JUMPSTART_MANIFEST_LOCAL_ROOT_DIR_OVERRIDE, ENV_VARIABLE_JUMPSTART_SPECS_LOCAL_ROOT_DIR_OVERRIDE
  from sagemaker.jumpstart.types import JumpStartModelHeader, JumpStartModelSpecs, JumpStartVersionedModelId
  from tests.unit.sagemaker.jumpstart.utils import get_spec_from_base_spec, patched_retrieval_function
  from tests.unit.sagemaker.jumpstart.constants import BASE_MANIFEST, BASE_SPEC
  from sagemaker.jumpstart.utils import get_jumpstart_content_bucket
label_desc: Use image node_id 10 for calling a global function with example usage: test_jumpstart_cache_get_specs() without return types