Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions contract-tests/client_entity.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,14 @@
from hook import PostingHook

from ldclient import *
from ldclient import (Context, ExecutionOrder, MigratorBuilder, MigratorFn,
Operation, Stage)
from ldclient import (
Context,
ExecutionOrder,
MigratorBuilder,
MigratorFn,
Operation,
Stage
)
from ldclient.config import BigSegmentsConfig


Expand Down
45 changes: 31 additions & 14 deletions ldclient/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,19 +13,28 @@
from ldclient.context import Context
from ldclient.evaluation import EvaluationDetail, FeatureFlagsState
from ldclient.feature_store import _FeatureStoreDataSetSorter
from ldclient.hook import (EvaluationSeriesContext, Hook,
_EvaluationWithHookResult)
from ldclient.hook import (
EvaluationSeriesContext,
Hook,
_EvaluationWithHookResult
)
from ldclient.impl.big_segments import BigSegmentStoreManager
from ldclient.impl.datasource.feature_requester import FeatureRequesterImpl
from ldclient.impl.datasource.polling import PollingUpdateProcessor
from ldclient.impl.datasource.status import (DataSourceStatusProviderImpl,
DataSourceUpdateSinkImpl)
from ldclient.impl.datasource.status import (
DataSourceStatusProviderImpl,
DataSourceUpdateSinkImpl
)
from ldclient.impl.datasource.streaming import StreamingUpdateProcessor
from ldclient.impl.datastore.status import (DataStoreStatusProviderImpl,
DataStoreUpdateSinkImpl)
from ldclient.impl.datastore.status import (
DataStoreStatusProviderImpl,
DataStoreUpdateSinkImpl
)
from ldclient.impl.evaluator import Evaluator, error_reason
from ldclient.impl.events.diagnostics import (_DiagnosticAccumulator,
create_diagnostic_id)
from ldclient.impl.events.diagnostics import (
_DiagnosticAccumulator,
create_diagnostic_id
)
from ldclient.impl.events.event_processor import DefaultEventProcessor
from ldclient.impl.events.types import EventFactory
from ldclient.impl.flag_tracker import FlagTrackerImpl
Expand All @@ -35,13 +44,21 @@
from ldclient.impl.rwlock import ReadWriteLock
from ldclient.impl.stubs import NullEventProcessor, NullUpdateProcessor
from ldclient.impl.util import check_uwsgi, log
from ldclient.interfaces import (BigSegmentStoreStatusProvider,
DataSourceStatusProvider, DataStoreStatus,
DataStoreStatusProvider, DataStoreUpdateSink,
FeatureStore, FlagTracker)
from ldclient.interfaces import (
BigSegmentStoreStatusProvider,
DataSourceStatusProvider,
DataStoreStatus,
DataStoreStatusProvider,
DataStoreUpdateSink,
FeatureStore,
FlagTracker
)
from ldclient.migrations import OpTracker, Stage
from ldclient.plugin import (ApplicationMetadata, EnvironmentMetadata,
SdkMetadata)
from ldclient.plugin import (
ApplicationMetadata,
EnvironmentMetadata,
SdkMetadata
)
from ldclient.version import VERSION
from ldclient.versioned_data_kind import FEATURES, SEGMENTS, VersionedDataKind

Expand Down
9 changes: 7 additions & 2 deletions ldclient/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,13 @@
from ldclient.feature_store import InMemoryFeatureStore
from ldclient.hook import Hook
from ldclient.impl.util import log, validate_application_info
from ldclient.interfaces import (BigSegmentStore, DataSourceUpdateSink,
EventProcessor, FeatureStore, UpdateProcessor)
from ldclient.interfaces import (
BigSegmentStore,
DataSourceUpdateSink,
EventProcessor,
FeatureStore,
UpdateProcessor
)
from ldclient.plugin import Plugin

GET_LATEST_FEATURES_PATH = '/sdk/latest-flags'
Expand Down
7 changes: 5 additions & 2 deletions ldclient/feature_store_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,11 @@
from expiringdict import ExpiringDict

from ldclient.feature_store import CacheConfig
from ldclient.interfaces import (DiagnosticDescription, FeatureStore,
FeatureStoreCore)
from ldclient.interfaces import (
DiagnosticDescription,
FeatureStore,
FeatureStoreCore
)
from ldclient.versioned_data_kind import VersionedDataKind


Expand Down
6 changes: 4 additions & 2 deletions ldclient/impl/big_segments.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@
from ldclient.impl.listeners import Listeners
from ldclient.impl.repeating_task import RepeatingTask
from ldclient.impl.util import log
from ldclient.interfaces import (BigSegmentStoreStatus,
BigSegmentStoreStatusProvider)
from ldclient.interfaces import (
BigSegmentStoreStatus,
BigSegmentStoreStatusProvider
)


class BigSegmentStoreStatusProviderImpl(BigSegmentStoreStatusProvider):
Expand Down
22 changes: 15 additions & 7 deletions ldclient/impl/datasource/polling.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,21 @@

from ldclient.config import Config
from ldclient.impl.repeating_task import RepeatingTask
from ldclient.impl.util import (UnsuccessfulResponseException,
http_error_message, is_http_error_recoverable,
log)
from ldclient.interfaces import (DataSourceErrorInfo, DataSourceErrorKind,
DataSourceState, DataSourceUpdateSink,
FeatureRequester, FeatureStore,
UpdateProcessor)
from ldclient.impl.util import (
UnsuccessfulResponseException,
http_error_message,
is_http_error_recoverable,
log
)
from ldclient.interfaces import (
DataSourceErrorInfo,
DataSourceErrorKind,
DataSourceState,
DataSourceUpdateSink,
FeatureRequester,
FeatureStore,
UpdateProcessor
)


class PollingUpdateProcessor(UpdateProcessor):
Expand Down
15 changes: 10 additions & 5 deletions ldclient/impl/datasource/status.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,16 @@
from ldclient.impl.dependency_tracker import DependencyTracker, KindAndKey
from ldclient.impl.listeners import Listeners
from ldclient.impl.rwlock import ReadWriteLock
from ldclient.interfaces import (DataSourceErrorInfo, DataSourceErrorKind,
DataSourceState, DataSourceStatus,
DataSourceStatusProvider,
DataSourceUpdateSink, FeatureStore,
FlagChange)
from ldclient.interfaces import (
DataSourceErrorInfo,
DataSourceErrorKind,
DataSourceState,
DataSourceStatus,
DataSourceStatusProvider,
DataSourceUpdateSink,
FeatureStore,
FlagChange
)
from ldclient.versioned_data_kind import FEATURES, SEGMENTS, VersionedDataKind


Expand Down
22 changes: 16 additions & 6 deletions ldclient/impl/datasource/streaming.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,25 @@

from ld_eventsource import SSEClient
from ld_eventsource.actions import Event, Fault
from ld_eventsource.config import (ConnectStrategy, ErrorStrategy,
RetryDelayStrategy)
from ld_eventsource.config import (
ConnectStrategy,
ErrorStrategy,
RetryDelayStrategy
)
from ld_eventsource.errors import HTTPStatusError

from ldclient.impl.http import HTTPFactory, _http_factory
from ldclient.impl.util import (http_error_message, is_http_error_recoverable,
log)
from ldclient.interfaces import (DataSourceErrorInfo, DataSourceErrorKind,
DataSourceState, UpdateProcessor)
from ldclient.impl.util import (
http_error_message,
is_http_error_recoverable,
log
)
from ldclient.interfaces import (
DataSourceErrorInfo,
DataSourceErrorKind,
DataSourceState,
UpdateProcessor
)
from ldclient.versioned_data_kind import FEATURES, SEGMENTS

# allows for up to 5 minutes to elapse without any data sent across the stream. The heartbeats sent as comments on the
Expand Down
7 changes: 5 additions & 2 deletions ldclient/impl/datastore/status.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,11 @@

from ldclient.impl.listeners import Listeners
from ldclient.impl.rwlock import ReadWriteLock
from ldclient.interfaces import (DataStoreStatus, DataStoreStatusProvider,
DataStoreUpdateSink)
from ldclient.interfaces import (
DataStoreStatus,
DataStoreStatusProvider,
DataStoreUpdateSink
)

if TYPE_CHECKING:
from ldclient.client import _FeatureStoreClientWrapper
Expand Down
21 changes: 14 additions & 7 deletions ldclient/impl/events/event_processor.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,18 +21,25 @@
from ldclient.impl.events.diagnostics import create_diagnostic_init
from ldclient.impl.events.event_context_formatter import EventContextFormatter
from ldclient.impl.events.event_summarizer import EventSummarizer, EventSummary
from ldclient.impl.events.types import (EventInput, EventInputCustom,
EventInputEvaluation,
EventInputIdentify)
from ldclient.impl.events.types import (
EventInput,
EventInputCustom,
EventInputEvaluation,
EventInputIdentify
)
from ldclient.impl.fixed_thread_pool import FixedThreadPool
from ldclient.impl.http import _http_factory
from ldclient.impl.lru_cache import SimpleLRUCache
from ldclient.impl.repeating_task import RepeatingTask
from ldclient.impl.sampler import Sampler
from ldclient.impl.util import (_headers,
check_if_error_is_recoverable_and_log,
current_time_millis, is_http_error_recoverable,
log, timedelta_millis)
from ldclient.impl.util import (
_headers,
check_if_error_is_recoverable_and_log,
current_time_millis,
is_http_error_recoverable,
log,
timedelta_millis
)
from ldclient.interfaces import EventProcessor
from ldclient.migrations.tracker import MigrationOpEvent

Expand Down
10 changes: 7 additions & 3 deletions ldclient/impl/integrations/files/file_data_source.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,13 @@

from ldclient.impl.repeating_task import RepeatingTask
from ldclient.impl.util import log
from ldclient.interfaces import (DataSourceErrorInfo, DataSourceErrorKind,
DataSourceState, DataSourceUpdateSink,
UpdateProcessor)
from ldclient.interfaces import (
DataSourceErrorInfo,
DataSourceErrorKind,
DataSourceState,
DataSourceUpdateSink,
UpdateProcessor
)
from ldclient.versioned_data_kind import FEATURES, SEGMENTS

have_yaml = False
Expand Down
11 changes: 8 additions & 3 deletions ldclient/impl/model/clause.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,15 @@
from semver import VersionInfo

from ldclient.impl.model.attribute_ref import (
AttributeRef, req_attr_ref_with_opt_context_kind)
AttributeRef,
req_attr_ref_with_opt_context_kind
)
from ldclient.impl.model.entity import *
from ldclient.impl.model.value_parsing import (parse_regex, parse_semver,
parse_time)
from ldclient.impl.model.value_parsing import (
parse_regex,
parse_semver,
parse_time
)


class ClausePreprocessedValue:
Expand Down
4 changes: 3 additions & 1 deletion ldclient/impl/model/segment.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
from typing import Any, List, Optional, Set

from ldclient.impl.model.attribute_ref import (
AttributeRef, opt_attr_ref_with_opt_context_kind)
AttributeRef,
opt_attr_ref_with_opt_context_kind
)
from ldclient.impl.model.clause import Clause
from ldclient.impl.model.entity import *

Expand Down
4 changes: 3 additions & 1 deletion ldclient/impl/model/variation_or_rollout.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
from typing import List, Optional

from ldclient.impl.model.attribute_ref import (
AttributeRef, opt_attr_ref_with_opt_context_kind)
AttributeRef,
opt_attr_ref_with_opt_context_kind
)
from ldclient.impl.model.entity import *


Expand Down
7 changes: 5 additions & 2 deletions ldclient/impl/operators.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,11 @@
from semver import VersionInfo

from ldclient.impl.model.clause import ClausePreprocessedValue
from ldclient.impl.model.value_parsing import (is_number, parse_semver,
parse_time)
from ldclient.impl.model.value_parsing import (
is_number,
parse_semver,
parse_time
)


def _string_operator(context_value: Any, clause_value: Any, fn: Callable[[str, str], bool]) -> bool:
Expand Down
15 changes: 10 additions & 5 deletions ldclient/integrations/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,22 @@

from ldclient.feature_store import CacheConfig
from ldclient.feature_store_helpers import CachingStoreWrapper
from ldclient.impl.integrations.consul.consul_feature_store import \
from ldclient.impl.integrations.consul.consul_feature_store import (
_ConsulFeatureStoreCore
from ldclient.impl.integrations.dynamodb.dynamodb_big_segment_store import \
)
from ldclient.impl.integrations.dynamodb.dynamodb_big_segment_store import (
_DynamoDBBigSegmentStore
from ldclient.impl.integrations.dynamodb.dynamodb_feature_store import \
)
from ldclient.impl.integrations.dynamodb.dynamodb_feature_store import (
_DynamoDBFeatureStoreCore
)
from ldclient.impl.integrations.files.file_data_source import _FileDataSource
from ldclient.impl.integrations.redis.redis_big_segment_store import \
from ldclient.impl.integrations.redis.redis_big_segment_store import (
_RedisBigSegmentStore
from ldclient.impl.integrations.redis.redis_feature_store import \
)
from ldclient.impl.integrations.redis.redis_feature_store import (
_RedisFeatureStoreCore
)
from ldclient.interfaces import BigSegmentStore


Expand Down
3 changes: 2 additions & 1 deletion ldclient/integrations/test_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@
from typing import Any, Dict, List, Optional, Set, Union

from ldclient.context import Context
from ldclient.impl.integrations.test_data.test_data_source import \
from ldclient.impl.integrations.test_data.test_data_source import (
_TestDataSource
)
from ldclient.impl.rwlock import ReadWriteLock
from ldclient.versioned_data_kind import FEATURES

Expand Down
15 changes: 11 additions & 4 deletions ldclient/migrations/migrator.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,17 @@
from ldclient.impl.sampler import Sampler
from ldclient.impl.util import Result
from ldclient.migrations.tracker import OpTracker
from ldclient.migrations.types import (ExecutionOrder, MigrationConfig,
MigratorCompareFn, MigratorFn,
Operation, OperationResult, Origin,
Stage, WriteResult)
from ldclient.migrations.types import (
ExecutionOrder,
MigrationConfig,
MigratorCompareFn,
MigratorFn,
Operation,
OperationResult,
Origin,
Stage,
WriteResult
)

if TYPE_CHECKING:
from ldclient import Context, LDClient
Expand Down
Loading