diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 6258c8e4..c2b32957 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,7 +1,7 @@ default_stages: [commit] repos: - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.7.4 + rev: v0.8.0 hooks: - id: ruff args: [--fix] diff --git a/openfeature/api.py b/openfeature/api.py index c7d29c48..4460b695 100644 --- a/openfeature/api.py +++ b/openfeature/api.py @@ -18,21 +18,21 @@ ) __all__ = [ - "get_client", - "set_provider", + "add_handler", + "add_hooks", + "clear_hooks", "clear_providers", - "get_provider_metadata", + "get_client", "get_evaluation_context", - "set_evaluation_context", - "set_transaction_context_propagator", + "get_hooks", + "get_provider_metadata", "get_transaction_context", + "remove_handler", + "set_evaluation_context", + "set_provider", "set_transaction_context", - "add_hooks", - "clear_hooks", - "get_hooks", + "set_transaction_context_propagator", "shutdown", - "add_handler", - "remove_handler", ] _evaluation_context = EvaluationContext() diff --git a/openfeature/event.py b/openfeature/event.py index e41a3704..23210771 100644 --- a/openfeature/event.py +++ b/openfeature/event.py @@ -6,7 +6,7 @@ from openfeature.exception import ErrorCode -__all__ = ["ProviderEvent", "ProviderEventDetails", "EventDetails", "EventHandler"] +__all__ = ["EventDetails", "EventHandler", "ProviderEvent", "ProviderEventDetails"] class ProviderEvent(Enum): diff --git a/openfeature/exception.py b/openfeature/exception.py index 3ae54a56..0576ec17 100644 --- a/openfeature/exception.py +++ b/openfeature/exception.py @@ -5,16 +5,16 @@ from enum import Enum __all__ = [ - "OpenFeatureError", - "ProviderNotReadyError", - "ProviderFatalError", + "ErrorCode", "FlagNotFoundError", "GeneralError", + "InvalidContextError", + "OpenFeatureError", "ParseError", - "TypeMismatchError", + "ProviderFatalError", + "ProviderNotReadyError", "TargetingKeyMissingError", - "InvalidContextError", - "ErrorCode", + "TypeMismatchError", ] diff --git a/openfeature/flag_evaluation.py b/openfeature/flag_evaluation.py index db9cea1b..1f83fd1b 100644 --- a/openfeature/flag_evaluation.py +++ b/openfeature/flag_evaluation.py @@ -12,12 +12,12 @@ __all__ = [ - "FlagType", - "Reason", - "FlagMetadata", "FlagEvaluationDetails", "FlagEvaluationOptions", + "FlagMetadata", "FlagResolutionDetails", + "FlagType", + "Reason", ] diff --git a/openfeature/hook/__init__.py b/openfeature/hook/__init__.py index e98301fa..77190dc0 100644 --- a/openfeature/hook/__init__.py +++ b/openfeature/hook/__init__.py @@ -12,7 +12,7 @@ from openfeature.client import ClientMetadata from openfeature.provider.metadata import Metadata -__all__ = ["HookType", "HookContext", "HookHints", "Hook"] +__all__ = ["Hook", "HookContext", "HookHints", "HookType"] class HookType(Enum): diff --git a/openfeature/provider/__init__.py b/openfeature/provider/__init__.py index 8927551e..b390f928 100644 --- a/openfeature/provider/__init__.py +++ b/openfeature/provider/__init__.py @@ -11,7 +11,7 @@ from .metadata import Metadata -__all__ = ["AbstractProvider", "ProviderStatus", "FeatureProvider", "Metadata"] +__all__ = ["AbstractProvider", "FeatureProvider", "Metadata", "ProviderStatus"] class ProviderStatus(Enum): diff --git a/openfeature/transaction_context/__init__.py b/openfeature/transaction_context/__init__.py index e97fd36f..ca711cbf 100644 --- a/openfeature/transaction_context/__init__.py +++ b/openfeature/transaction_context/__init__.py @@ -6,6 +6,6 @@ ) __all__ = [ - "TransactionContextPropagator", "ContextVarsTransactionContextPropagator", + "TransactionContextPropagator", ] diff --git a/openfeature/transaction_context/context_var_transaction_context_propagator.py b/openfeature/transaction_context/context_var_transaction_context_propagator.py index 1abc04fa..5ffdae00 100644 --- a/openfeature/transaction_context/context_var_transaction_context_propagator.py +++ b/openfeature/transaction_context/context_var_transaction_context_propagator.py @@ -1,4 +1,5 @@ from contextvars import ContextVar +from typing import Optional from openfeature.evaluation_context import EvaluationContext from openfeature.transaction_context.transaction_context_propagator import ( @@ -7,12 +8,17 @@ class ContextVarsTransactionContextPropagator(TransactionContextPropagator): - _transaction_context_var: ContextVar[EvaluationContext] = ContextVar( - "transaction_context", default=EvaluationContext() + _transaction_context_var: ContextVar[Optional[EvaluationContext]] = ContextVar( + "transaction_context", default=None ) def get_transaction_context(self) -> EvaluationContext: - return self._transaction_context_var.get() + context = self._transaction_context_var.get() + if context is None: + context = EvaluationContext() + self._transaction_context_var.set(context) + + return context def set_transaction_context(self, transaction_context: EvaluationContext) -> None: self._transaction_context_var.set(transaction_context)