Skip to content

Commit d08edb6

Browse files
committed
Remove time_ns
1 parent 99a04e7 commit d08edb6

File tree

6 files changed

+27
-33
lines changed

6 files changed

+27
-33
lines changed

opentelemetry-api/src/opentelemetry/trace/__init__.py

+22
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
from enum import Enum
8080
from logging import getLogger
8181
from typing import Iterator, Optional, Sequence, cast
82+
from sys import version_info
8283

8384
from opentelemetry.context.context import Context
8485
from opentelemetry.environment_variables import OTEL_PYTHON_TRACER_PROVIDER
@@ -108,6 +109,27 @@
108109
logger = getLogger(__name__)
109110

110111

112+
if version_info.minor < 7:
113+
114+
logger.warning(
115+
"Your current Python version does not support time measurements with"
116+
" nanosecond precision. time_ns is being added as an attribute of the"
117+
" time module to provide an uniform way of importing a timestamping"
118+
" function from this module but it must not be relied on providing"
119+
" actual nanosecond precision for timestamps. More information in "
120+
" PEP 564. Please upgrade to Python 3.7 or newer."
121+
)
122+
123+
from time import time
124+
125+
def time_ns() -> int:
126+
# FIXME this approach can have precision problems as explained here:
127+
# https://github.com/open-telemetry/opentelemetry-python/issues/1594
128+
return int(time() * 1e9)
129+
130+
time.time_ns = time_ns
131+
132+
111133
class LinkBase(ABC):
112134
def __init__(self, context: "SpanContext") -> None:
113135
self._context = context

opentelemetry-api/src/opentelemetry/util/time.py

-27
This file was deleted.

opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import logging
2121
import threading
2222
import traceback
23+
from time import time_ns
2324
from collections import OrderedDict
2425
from contextlib import contextmanager
2526
from os import environ
@@ -57,7 +58,6 @@
5758
from opentelemetry.trace.propagation import SPAN_KEY
5859
from opentelemetry.trace.status import Status, StatusCode
5960
from opentelemetry.util import types
60-
from opentelemetry.util.time import time_ns
6161

6262
logger = logging.getLogger(__name__)
6363

opentelemetry-sdk/src/opentelemetry/sdk/trace/export/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import sys
1818
import threading
1919
import typing
20+
from time import time_ns
2021
from enum import Enum
2122
from os import environ, linesep
2223
from typing import Optional
@@ -29,7 +30,6 @@
2930
OTEL_BSP_SCHEDULE_DELAY,
3031
)
3132
from opentelemetry.sdk.trace import ReadableSpan, Span, SpanProcessor
32-
from opentelemetry.util.time import time_ns
3333

3434
logger = logging.getLogger(__name__)
3535

opentelemetry-sdk/tests/trace/test_trace.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
from logging import ERROR, WARNING
2121
from typing import Optional
2222
from unittest import mock
23+
from time import time_ns
2324

2425
import pytest
2526

@@ -38,7 +39,6 @@
3839
from opentelemetry.sdk.util import ns_to_iso_str
3940
from opentelemetry.sdk.util.instrumentation import InstrumentationInfo
4041
from opentelemetry.trace.status import StatusCode
41-
from opentelemetry.util.time import time_ns
4242

4343

4444
def new_tracer() -> trace_api.Tracer:

shim/opentelemetry-opentracing-shim/tests/test_util.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,10 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
import time
15+
from time import time, time_ns
1616
import unittest
1717

1818
from opentelemetry.shim.opentracing_shim import util
19-
from opentelemetry.util.time import time_ns
2019

2120

2221
class TestUtil(unittest.TestCase):
@@ -39,7 +38,7 @@ def test_event_name_from_kv(self):
3938
self.assertEqual(res, util.DEFAULT_EVENT_NAME)
4039

4140
def test_time_seconds_to_ns(self):
42-
time_seconds = time.time()
41+
time_seconds = time()
4342
result = util.time_seconds_to_ns(time_seconds)
4443

4544
self.assertEqual(result, int(time_seconds * 1e9))

0 commit comments

Comments
 (0)