Possible missing import statement in `google/cloud/logging_v2/logger.py`
parthea opened this issue · 0 comments
parthea commented
See the code below where we have google.cloud.logging_v2._instrumentation_emitted
. I believe there should be an import statement import google.cloud.logging_v2
but there does not appear to be.
python-logging/google/cloud/logging_v2/logger.py
Lines 15 to 34 in 78168a3
See stack trace below
self = <google.cloud.logging.tests.unit.test_logger.TestLogger testMethod=test_first_log_emits_instrumentation>
def test_first_log_emits_instrumentation(self):
import google.cloud.logging_v2
from google.cloud.logging_v2._instrumentation import _create_diagnostic_entry
from google.cloud.logging_v2.handlers._monitored_resources import (
detect_resource,
)
google.cloud.logging_v2._instrumentation_emitted = False
DEFAULT_LABELS = {"foo": "spam"}
resource = detect_resource(self.PROJECT)
instrumentation_entry = _create_diagnostic_entry(
resource=resource,
labels=DEFAULT_LABELS,
).to_api_repr()
instrumentation_entry["logName"] = "projects/%s/logs/%s" % (
self.PROJECT,
self.LOGGER_NAME,
)
ENTRIES = [
instrumentation_entry,
{
"logName": "projects/%s/logs/%s" % (self.PROJECT, self.LOGGER_NAME),
"resource": resource._to_dict(),
"labels": DEFAULT_LABELS,
},
]
client = _Client(self.PROJECT)
api = client.logging_api = _DummyLoggingAPI()
logger = self._make_one(self.LOGGER_NAME, client=client, labels=DEFAULT_LABELS)
> logger.log_empty()
tests/unit/test_logger.py:1074:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../logging_v2/logger.py:183: in log_empty
self._do_log(client, LogEntry, **kw)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <google.cloud.logging_v2.logger.Logger object at 0x129abdccd510>
client = <google.cloud.logging.tests.unit.test_logger._Client object at 0x129abb8f5350>
_entry_class = <class 'google.cloud.logging_v2.entries.LogEntry'>
payload = None
kw = {'labels': {'foo': 'spam'}, 'log_name': 'projects/test-project/logs/logger-name', 'resource': Resource(type='global', labels={'project_id': 'test-project'})}
severity = None
entry = LogEntry(log_name='projects/test-project/logs/logger-name', labels={'foo': 'spam'}, insert_id=None, severity=None, htt...ject'}), trace=None, span_id=None, trace_sampled=None, source_location=None, operation=None, logger=None, payload=None)
api_repr = {'labels': {'foo': 'spam'}, 'logName': 'projects/test-project/logs/logger-name', 'resource': {'labels': {'project_id': 'test-project'}, 'type': 'global'}}
entries = [{'labels': {'foo': 'spam'}, 'logName': 'projects/test-project/logs/logger-name', 'resource': {'labels': {'project_id': 'test-project'}, 'type': 'global'}}]
def _do_log(self, client, _entry_class, payload=None, **kw):
"""Helper for :meth:`log_empty`, :meth:`log_text`, etc."""
client = self._require_client(client)
# Apply defaults
kw["log_name"] = kw.pop("log_name", self.full_name)
kw["labels"] = kw.pop("labels", self.labels)
kw["resource"] = kw.pop("resource", self.default_resource)
severity = kw.get("severity", None)
if isinstance(severity, str):
# convert severity to upper case, as expected by enum definition
kw["severity"] = severity.upper()
if isinstance(kw["resource"], collections.abc.Mapping):
# if resource was passed as a dict, attempt to parse it into a
# Resource object
try:
kw["resource"] = Resource(**kw["resource"])
except TypeError as e:
# dict couldn't be parsed as a Resource
raise TypeError("invalid resource dict") from e
if payload is not None:
entry = _entry_class(payload=payload, **kw)
else:
entry = _entry_class(**kw)
api_repr = entry.to_api_repr()
entries = [api_repr]
> if google.cloud.logging_v2._instrumentation_emitted is False:
E NameError: name 'google' is not defined
logging_v2/logger.py:164: NameError