Skip to content

Commit 84a94d4

Browse files
authored
Format & clean up imports via isort (instana#83)
* Format & clean up imports via isort * Avoid importing self. * More improvements: * continued import cleanup * Move Tracer and Sensor init to tracer and sensor packages respectively * Use SkipTest for API client tests * Use get_distribution to access version number from setup.py
1 parent 5c0a9e4 commit 84a94d4

31 files changed

+160
-100
lines changed

example/opentracing_vanilla.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
# encoding=utf-8
2+
import time
3+
24
import opentracing
5+
36
import instana
4-
import time
57

68
# Loop continuously with a 2 second sleep to generate traces
79
while True:

example/simple.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
# encoding=utf-8
22
import sys
3-
import opentracing as ot
43
import time
4+
5+
import opentracing as ot
56
import opentracing.ext.tags as ext
67

78
SERVICE = "🦄 Stan ❤️s Python 🦄"

instana/__init__.py

+7-28
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
from __future__ import absolute_import
2+
23
import os
34
import opentracing
4-
from .sensor import Sensor
5-
from .tracer import InstanaTracer
6-
from .options import Options
5+
from pkg_resources import get_distribution
6+
7+
from . import sensor
8+
from . import tracer
9+
710

811
"""
912
The Instana package has two core components: the sensor and the tracer.
@@ -19,7 +22,7 @@
1922
__copyright__ = 'Copyright 2017 Instana Inc.'
2023
__credits__ = ['Pavlo Baron', 'Peter Giacomo Lombardo']
2124
__license__ = 'MIT'
22-
__version__ = '0.10.1'
25+
__version__ = get_distribution('instana').version
2326
__maintainer__ = 'Peter Giacomo Lombardo'
2427
__email__ = 'peter.lombardo@instana.com'
2528

@@ -34,30 +37,6 @@ def load(module):
3437
print("Instana: Loading...")
3538
print("==========================================================")
3639

37-
38-
# For any given Python process, we only want one sensor as multiple would
39-
# collect/report metrics in duplicate, triplicate etc..
40-
#
41-
# Usage example:
42-
#
43-
# import instana
44-
# instana.global_sensor
45-
#
46-
global_sensor = Sensor(Options())
47-
48-
# The global OpenTracing compatible tracer used internally by
49-
# this package.
50-
#
51-
# Usage example:
52-
#
53-
# import instana
54-
# instana.internal_tracer.start_span(...)
55-
#
56-
internal_tracer = InstanaTracer()
57-
58-
# Set ourselves as the tracer.
59-
opentracing.tracer = internal_tracer
60-
6140
# Optional application wide service name.
6241
# Can be configured via environment variable or via code:
6342
#

instana/agent.py

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import json
2-
from instana import log
3-
import instana.fsm as f
4-
import instana.agent_const as a
52
import threading
63
from datetime import datetime
74

5+
import instana.agent_const as a
6+
import instana.fsm as f
7+
from instana import log
8+
89
try:
910
import urllib.request as urllib2
1011
except ImportError:

instana/flaskana.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
from __future__ import print_function
2-
from instana import wsgi
3-
import wrapt
2+
43
import os
54

5+
import wrapt
6+
7+
from instana import wsgi
8+
69

710
def wrapper(wrapped, instance, args, kwargs):
811
rv = wrapped(*args, **kwargs)

instana/fsm.py

+9-5
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
1+
from __future__ import absolute_import
2+
13
import os
2-
import sys
34
import socket
45
import subprocess
6+
import sys
57
import threading as t
8+
69
import fysom as f
7-
import instana
8-
from instana import log
9-
import instana.agent_const as a
10+
from pkg_resources import get_distribution
11+
12+
from . import agent_const as a
13+
from . import log
1014

1115

1216
class Discovery(object):
@@ -39,7 +43,7 @@ class Fsm(object):
3943
warnedPeriodic = False
4044

4145
def __init__(self, agent):
42-
log.info("Stan is on the scene. Starting Instana instrumentation version", instana.__version__)
46+
log.info("Stan is on the scene. Starting Instana instrumentation version", get_distribution('instana').version)
4347
log.debug("initializing fsm")
4448

4549
self.agent = agent

instana/helpers.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import os
22
from string import Template
3-
from instana import internal_tracer, eum_api_key as global_eum_api_key
3+
4+
from instana import eum_api_key as global_eum_api_key
5+
from instana.tracer import internal_tracer
46
from instana.log import logger
57

68
# Usage:

instana/http_propagator.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
from __future__ import absolute_import
2+
23
import opentracing as ot
34
from basictracer.context import SpanContext
4-
from instana import util, log
55

6+
from instana import log, util
67

78
# The carrier can be a dict or a list.
89
# Using the trace header as an example, it can be in the following forms

instana/instrumentation/django/middleware.py

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
from __future__ import absolute_import
2+
3+
import sys
4+
25
import opentracing as ot
36
import opentracing.ext.tags as ext
47
import wrapt
5-
import sys
6-
from ...log import logger
7-
from ... import internal_tracer
8-
98

9+
from ...log import logger
10+
from ...tracer import internal_tracer
1011

1112
DJ_INSTANA_MIDDLEWARE = 'instana.instrumentation.django.middleware.InstanaMiddleware'
1213

instana/instrumentation/sudsjurko.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
from __future__ import absolute_import
2+
23
from distutils.version import LooseVersion
4+
35
import opentracing
46
import opentracing.ext.tags as ext
57
import wrapt
6-
from ..log import logger
7-
from .. import internal_tracer
88

9+
from ..tracer import internal_tracer
10+
from ..log import logger
911

1012
try:
1113
import suds # noqa

instana/instrumentation/urllib3.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
from __future__ import absolute_import
2+
23
import opentracing
34
import opentracing.ext.tags as ext
45
import wrapt
5-
from ..log import logger
6-
from .. import internal_tracer
76

7+
from ..tracer import internal_tracer
8+
from ..log import logger
89

910
try:
1011
import urllib3 # noqa

instana/meter.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@
44
import platform
55
import resource
66
import sys
7-
import time
87
import threading
8+
import time
99
from types import ModuleType
10+
1011
import instana
11-
from .log import logger as log
12+
1213
from .agent_const import AGENT_DATA_URL
14+
from .log import logger as log
1315

1416

1517
class Snapshot(object):

instana/probe.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import opentracing as ot
2-
from instana import tracer, options
2+
3+
from instana import options, tracer
34

45
# This file is the hook for autoinstrumenation.
56
# Here, we should:

instana/recorder.py

+10-8
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
1-
import threading as t
1+
import os
22
import socket
3+
import sys
4+
import threading as t
35
import time
4-
import os
5-
import instana
66

77
import opentracing.ext.tags as ext
88
from basictracer import Sampler, SpanRecorder
9-
from .json_span import CustomData, Data, HttpData, SoapData, JsonSpan, SDKData
9+
10+
import instana
11+
1012
from .agent_const import AGENT_TRACES_URL
13+
from .json_span import CustomData, Data, HttpData, JsonSpan, SDKData, SoapData
1114

12-
import sys
1315
if sys.version_info.major is 2:
1416
import Queue as queue
1517
else:
@@ -18,10 +20,10 @@
1820

1921
class InstanaRecorder(SpanRecorder):
2022
sensor = None
21-
registered_spans = ("django", "memcache", "rpc-client", "rpc-server",
22-
"soap", "urllib3", "wsgi")
23+
registered_spans = ("django", "memcache", "rpc-client",
24+
"rpc-server", "soap", "urllib3", "wsgi")
2325
entry_kind = ["entry", "server", "consumer"]
24-
exit_kind = ["exit", "client", "producer", "soap"]
26+
exit_kind = ["exit", "client", "producer"]
2527
queue = queue.Queue()
2628

2729
def __init__(self, sensor):

instana/sensor.py

+17-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
from __future__ import absolute_import
2-
from .options import Options
3-
from .meter import Meter
2+
3+
from . import log
44
from .agent import Agent
5-
import instana.log as log
5+
from .meter import Meter
6+
from .options import Options
67

78

89
class Sensor(object):
@@ -26,3 +27,16 @@ def set_options(self, options):
2627
def handle_fork(self):
2728
self.agent = Agent(self)
2829
self.meter = Meter(self)
30+
31+
def get_sensor():
32+
return global_sensor
33+
34+
# For any given Python process, we only want one sensor as multiple would
35+
# collect/report metrics in duplicate, triplicate etc..
36+
#
37+
# Usage example:
38+
#
39+
# import instana
40+
# instana.global_sensor
41+
#
42+
global_sensor = Sensor(Options())

instana/span.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
from basictracer.span import BasicSpan
21
from basictracer.context import SpanContext
2+
from basictracer.span import BasicSpan
33

44

55
class InstanaSpan(BasicSpan):

instana/text_propagator.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33
import opentracing as ot
44
from basictracer.context import SpanContext
5-
from instana import util, log
5+
6+
from instana import log, util
67

78
prefix_tracer_state = 'X-INSTANA-'
89
prefix_baggage = 'X-INSTANA-BAGGAGE-'

instana/tracer.py

+31-11
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,26 @@
1+
from __future__ import absolute_import
2+
13
import time
2-
from basictracer import BasicTracer
3-
import instana.recorder as r
4-
import opentracing as ot
5-
import instana
6-
import instana.options as o
74

8-
from instana.util import generate_id
9-
from instana.span import InstanaSpan
5+
import opentracing as ot
6+
from basictracer import BasicTracer
107
from basictracer.context import SpanContext
11-
from instana.http_propagator import HTTPPropagator
12-
from instana.text_propagator import TextPropagator
8+
9+
from . import sensor
10+
from . import options as o
11+
from . import recorder as r
12+
from .http_propagator import HTTPPropagator
13+
from .span import InstanaSpan
14+
from .text_propagator import TextPropagator
15+
from .util import generate_id
1316

1417

1518
class InstanaTracer(BasicTracer):
1619
sensor = None
1720
cur_ctx = None
1821

1922
def __init__(self, options=o.Options()):
20-
self.sensor = instana.global_sensor
23+
self.sensor = sensor.get_sensor()
2124
super(InstanaTracer, self).__init__(
2225
r.InstanaRecorder(self.sensor), r.InstanaSampler())
2326

@@ -98,4 +101,21 @@ def init(options):
98101
No longer in use.
99102
To be removed in next major release.
100103
"""
101-
return instana.internal_tracer
104+
return internal_tracer
105+
106+
def get_tracer():
107+
return internal_tracer
108+
109+
110+
# The global OpenTracing compatible tracer used internally by
111+
# this package.
112+
#
113+
# Usage example:
114+
#
115+
# import instana
116+
# instana.internal_tracer.start_span(...)
117+
#
118+
internal_tracer = InstanaTracer()
119+
120+
# Set ourselves as the tracer.
121+
ot.tracer = internal_tracer

instana/util.py

+6-5
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
import random
2-
import os
1+
import binascii
32
import json
4-
import time
3+
import os
4+
import random
55
import struct
6-
import binascii
6+
import sys
7+
import time
8+
79
from instana import log
810

9-
import sys
1011
if sys.version_info.major is 2:
1112
string_types = basestring
1213
else:

0 commit comments

Comments
 (0)