Skip to content

Commit a39c57b

Browse files
committed
Fix linting
1 parent eeeca83 commit a39c57b

10 files changed

Lines changed: 35 additions & 26 deletions

File tree

aws-opentelemetry-distro/src/amazon/opentelemetry/distro/aws_opentelemetry_configurator.py

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -413,14 +413,11 @@ def _customize_sampler(sampler: Sampler) -> Sampler:
413413

414414
try:
415415
parsed_config = _parse_config_string(config)
416-
except Exception as e:
417-
_logger.warning("Failed to parse adaptive sampling configuration: %s", str(e))
416+
except ValueError as error:
417+
_logger.warning("Failed to parse adaptive sampling configuration: %s", str(error))
418418

419419
if parsed_config is not None:
420-
try:
421-
sampler.set_adaptive_sampling_config(parsed_config)
422-
except Exception as e:
423-
_logger.warning("Error processing adaptive sampling config: %s", str(e))
420+
sampler.set_adaptive_sampling_config(parsed_config)
424421

425422
if not _is_application_signals_enabled():
426423
return sampler
@@ -937,8 +934,8 @@ def _parse_config_string(config: str) -> Optional[_AWSXRayAdaptiveSamplingConfig
937934
if path.exists():
938935
try:
939936
config = path.read_text(encoding="utf-8")
940-
except IOError as e:
941-
raise ValueError(f"Failed to read adaptive sampling configuration file: {e}") from e
937+
except IOError as err:
938+
raise ValueError(f"Failed to read adaptive sampling configuration file: {err}") from err
942939
elif config.endswith(".yml") or config.endswith(".yaml"):
943940
raise ValueError("Adaptive sampling configuration file must be a YAML file")
944941
else:
@@ -958,10 +955,10 @@ def _parse_config_string(config: str) -> Optional[_AWSXRayAdaptiveSamplingConfig
958955
if version_obj is None:
959956
raise ValueError("Missing required 'version' field in adaptive sampling configuration")
960957

961-
version = float(version_obj)
962-
if version < 1.0 or version >= 2.0:
958+
config_version = float(version_obj)
959+
if config_version < 1.0 or config_version >= 2.0:
963960
raise ValueError(
964-
f"Incompatible adaptive sampling config version: {version}. "
961+
f"Incompatible adaptive sampling config version: {config_version}. "
965962
"This version of the AWS X-Ray remote sampler only supports version 1.X."
966963
)
967964

@@ -987,5 +984,5 @@ def _parse_config_string(config: str) -> Optional[_AWSXRayAdaptiveSamplingConfig
987984
)
988985

989986
return _AWSXRayAdaptiveSamplingConfig(
990-
version=version, anomaly_conditions=anomaly_conditions, anomaly_capture_limit=anomaly_capture_limit
987+
version=config_version, anomaly_conditions=anomaly_conditions, anomaly_capture_limit=anomaly_capture_limit
991988
)

aws-opentelemetry-distro/src/amazon/opentelemetry/distro/sampler/_aws_sampling_result.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,19 @@ class _AwsSamplingResult(SamplingResult):
1515
def __init__(
1616
self,
1717
decision: Decision,
18-
attributes: "Attributes" = {},
18+
attributes: "Attributes" = None,
1919
trace_state: Optional["TraceState"] = None,
2020
sampling_rule_name: Optional[str] = None,
2121
has_adaptive_sampling_config: bool = False,
2222
):
23+
# Define attributes that will be defined by super()
24+
self.decision = decision
25+
self.trace_state = None
26+
self.attributes = None
27+
2328
super().__init__(decision, attributes, trace_state)
2429

30+
# super will have defined self.attributes by this point
2531
self.attributes = MappingProxyType(
2632
{
2733
**self.attributes,

aws-opentelemetry-distro/src/amazon/opentelemetry/distro/sampler/_aws_xray_sampling_client.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
import requests
88

9-
from amazon.opentelemetry.distro.sampler._sampling_rule import _SamplingRateBoost, _SamplingRule
9+
from amazon.opentelemetry.distro.sampler._sampling_rule import _SamplingRule
1010
from amazon.opentelemetry.distro.sampler._sampling_target import _SamplingTargetResponse
1111

1212
_logger = getLogger(__name__)
@@ -58,7 +58,7 @@ def get_sampling_rules(self) -> List[_SamplingRule]:
5858
return sampling_rules
5959

6060
def get_sampling_targets(
61-
self, statistics: List[Dict], boostStatistics: List[Dict] = None
61+
self, statistics: List[Dict], boost_statistics: List[Dict] = None
6262
) -> _SamplingTargetResponse:
6363
sampling_targets_response = _SamplingTargetResponse(
6464
LastRuleModification=None,
@@ -74,7 +74,7 @@ def get_sampling_targets(
7474
timeout=20,
7575
json={
7676
"SamplingStatisticsDocuments": statistics,
77-
"SamplingBoostStatisticsDocuments": boostStatistics,
77+
"SamplingBoostStatisticsDocuments": boost_statistics,
7878
},
7979
)
8080
if xray_response is None:

aws-opentelemetry-distro/src/amazon/opentelemetry/distro/sampler/_rate_limiting_sampler.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,6 @@ def get_description(self) -> str:
3636
description = (
3737
"RateLimitingSampler{rate limiting sampling with sampling config of "
3838
+ str(self.__quota)
39-
+ " req/sec and 0% of additional requests}"
39+
+ " req/s and 0% of additional requests}"
4040
)
4141
return description

aws-opentelemetry-distro/src/amazon/opentelemetry/distro/sampler/_rule_cache.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88

99
from cachetools import TTLCache
1010

11-
import opentelemetry.baggage as baggage
1211
from amazon.opentelemetry.distro._aws_attribute_keys import AWS_LOCAL_OPERATION
1312
from amazon.opentelemetry.distro._aws_span_processing_util import _generate_ingress_operation
1413
from amazon.opentelemetry.distro.sampler._aws_sampling_result import _AwsSamplingResult
1514
from amazon.opentelemetry.distro.sampler._aws_xray_adaptive_sampling_config import (
15+
_AnomalyConditions,
1616
_AWSXRayAdaptiveSamplingConfig,
1717
_UsageType,
1818
)
@@ -22,6 +22,7 @@
2222
from amazon.opentelemetry.distro.sampler._sampling_rule import _SamplingRule
2323
from amazon.opentelemetry.distro.sampler._sampling_rule_applier import _SamplingRuleApplier
2424
from amazon.opentelemetry.distro.sampler._sampling_target import _SamplingTarget, _SamplingTargetResponse
25+
from opentelemetry import baggage
2526
from opentelemetry.context import Context
2627
from opentelemetry.sdk.resources import Resource
2728
from opentelemetry.sdk.trace import ReadableSpan, StatusCode
@@ -82,9 +83,9 @@ def should_sample(
8283
_AwsSamplingResult.AWS_XRAY_SAMPLING_RULE_TRACE_STATE_KEY
8384
)
8485
if upstream_matched_rule is None:
85-
b = baggage.get_all(parent_context)
86+
bag = baggage.get_all(parent_context)
8687
upstream_matched_rule = (
87-
b.get(_AwsSamplingResult.AWS_XRAY_SAMPLING_RULE_TRACE_STATE_KEY) if b is not None else None
88+
bag.get(_AwsSamplingResult.AWS_XRAY_SAMPLING_RULE_TRACE_STATE_KEY) if bag is not None else None
8889
)
8990
result: SamplingResult = None
9091
for rule_applier in self.__rule_appliers:
@@ -138,6 +139,7 @@ def set_adaptive_sampling_config(self, config: _AWSXRayAdaptiveSamplingConfig) -
138139
else:
139140
self._anomaly_capture_rate_limiter = _RateLimiter(1, 1, self._clock)
140141

142+
# pylint: disable=too-many-locals
141143
def adapt_sampling(self, span: ReadableSpan, span_batcher: Callable[[ReadableSpan], None]) -> None:
142144
if not self._adaptive_sampling_rule_exists and self._adaptive_sampling_config is None:
143145
return
@@ -203,12 +205,13 @@ def adapt_sampling(self, span: ReadableSpan, span_batcher: Callable[[ReadableSpa
203205

204206
self.__update_trace_usage_cache(trace_id, is_span_captured, is_counted_as_anomaly_for_boost)
205207

208+
# pylint: disable=too-many-branches
206209
def __is_anomaly(self, span: ReadableSpan) -> "_AnomalyDetectionResult":
207210
should_boost_sampling: bool = False
208211
should_capture_anomaly_span: bool = False
209212
status_code: int = span.attributes.get(HTTP_STATUS_CODE)
210213

211-
anomaly_conditions = (
214+
anomaly_conditions: List[_AnomalyConditions] = (
212215
self._adaptive_sampling_config.anomaly_conditions if self._adaptive_sampling_config else None
213216
)
214217
# Empty list -> no conditions will apply and we will not do anything
@@ -217,6 +220,8 @@ def __is_anomaly(self, span: ReadableSpan) -> "_AnomalyDetectionResult":
217220
if operation is None:
218221
operation = _generate_ingress_operation(span)
219222

223+
# It is an iterable, but the current pylint version doesn't recognize it
224+
# pylint: disable=not-an-iterable
220225
for condition in anomaly_conditions:
221226
# Skip condition if it would only re-apply action already being taken
222227
if (should_boost_sampling and condition.usage == _UsageType.SAMPLING_BOOST) or (

aws-opentelemetry-distro/src/amazon/opentelemetry/distro/sampler/_sampling_rule.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ def __eq__(self, other: object) -> bool:
3232
# Disable snake_case naming style so this class can match the sampling rules response from X-Ray
3333
# pylint: disable=invalid-name
3434
class _SamplingRule:
35+
# pylint: disable=too-many-locals
3536
def __init__(
3637
self,
3738
Attributes: dict = None,

aws-opentelemetry-distro/src/amazon/opentelemetry/distro/sampler/aws_xray_remote_sampler.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from opentelemetry.context import Context
1717
from opentelemetry.sdk.resources import Resource
1818
from opentelemetry.sdk.trace import ReadableSpan
19-
from opentelemetry.sdk.trace.export import BatchSpanProcessor, SpanExporter
19+
from opentelemetry.sdk.trace.export import SpanExporter
2020
from opentelemetry.sdk.trace.sampling import ParentBased, Sampler, SamplingResult
2121
from opentelemetry.trace import Link, SpanKind
2222
from opentelemetry.trace.span import TraceState
@@ -129,7 +129,8 @@ def set_adaptive_sampling_config(self, config: _AWSXRayAdaptiveSamplingConfig) -
129129
if self.adaptive_sampling_config is not None:
130130
_logger.warning("Programming bug - Adaptive sampling config is already set")
131131
return
132-
elif self.adaptive_sampling_config is None and config is not None:
132+
133+
if self.adaptive_sampling_config is None and config is not None:
133134
self.adaptive_sampling_config = config
134135
self.__rule_cache.set_adaptive_sampling_config(config)
135136

aws-opentelemetry-distro/tests/amazon/opentelemetry/distro/sampler/test_aws_xray_remote_sampler.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,9 @@
1313
from amazon.opentelemetry.distro.sampler._aws_xray_adaptive_sampling_config import _AWSXRayAdaptiveSamplingConfig
1414
from amazon.opentelemetry.distro.sampler._sampling_rule import _SamplingRule
1515
from amazon.opentelemetry.distro.sampler.aws_xray_remote_sampler import AwsXRayRemoteSampler
16-
from opentelemetry.context import Context
1716
from opentelemetry.sdk.resources import Resource
1817
from opentelemetry.sdk.trace import Tracer, TracerProvider
1918
from opentelemetry.sdk.trace.sampling import Decision
20-
from opentelemetry.trace import get_current_span
2119

2220
TEST_DIR = os.path.dirname(os.path.realpath(__file__))
2321
DATA_DIR = os.path.join(TEST_DIR, "data")

aws-opentelemetry-distro/tests/amazon/opentelemetry/distro/sampler/test_rate_limiting_sampler.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,5 +86,5 @@ def test_get_description(self):
8686
sampler = _RateLimitingSampler(1, MockClock())
8787
self.assertEqual(
8888
sampler.get_description(),
89-
"RateLimitingSampler{rate limiting sampling with sampling config of 1 req/sec and 0% of additional requests}",
89+
"RateLimitingSampler{rate limiting sampling with sampling config of 1 req/s and 0% of additional requests}",
9090
)

aws-opentelemetry-distro/tests/amazon/opentelemetry/distro/sampler/test_rule_cache.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,7 @@ def test_no_adaptive_sampling_uses_no_space(self):
304304
readable_span_mock: ReadableSpan = MagicMock()
305305

306306
def stubbed_consumer(span):
307+
nonlocal export_counter
307308
export_counter += 1
308309

309310
rule_cache.adapt_sampling(readable_span_mock, stubbed_consumer)

0 commit comments

Comments
 (0)