diff --git a/.github/workflows/release-package.yml b/.github/workflows/release-package.yml index 02fb4507..f13593fe 100644 --- a/.github/workflows/release-package.yml +++ b/.github/workflows/release-package.yml @@ -7,6 +7,10 @@ on: jobs: main: runs-on: ubuntu-latest + permissions: + id-token: write + contents: write + environment: pypi steps: - uses: actions/checkout@v4 - name: Set up Python 3.10 @@ -19,9 +23,10 @@ jobs: - name: Build package run: | make build + - name: Publish package to Pypi + uses: pypa/gh-action-pypi-publish@release/v1 env: - TWINE_USERNAME: ${{ secrets.pypi_username }} - TWINE_PASSWORD: ${{ secrets.pypi_password }} + repository-url: https://pypi.org/project/UnleashClient/ - name: Build docs run: | make install-docs @@ -31,13 +36,4 @@ jobs: uses: peaceiris/actions-gh-pages@v3 with: github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./docs/_build/html - - name: Notify Slack of pipeline completion - uses: 8398a7/action-slack@v2 - with: - status: ${{ job.status }} - author_name: Github Action - env: - GITHUB_TOKEN: ${{ secrets.github_slack_token }} - SLACK_WEBHOOK_URL: ${{ secrets.slack_webhook }} - if: always() + publish_dir: ./docs/_build/htmlg diff --git a/UnleashClient/api/metrics.py b/UnleashClient/api/metrics.py index f1816069..757db42c 100644 --- a/UnleashClient/api/metrics.py +++ b/UnleashClient/api/metrics.py @@ -46,6 +46,7 @@ def send_metrics( LOGGER.info("Unleash Client metrics successfully sent!") + return True except requests.RequestException as exc: LOGGER.warning( diff --git a/UnleashClient/loader.py b/UnleashClient/loader.py index 02b39c10..f9e6e799 100644 --- a/UnleashClient/loader.py +++ b/UnleashClient/loader.py @@ -132,7 +132,7 @@ def load_features( del feature_toggles[feature] # Update existing objects - for feature in feature_toggles.keys(): + for feature in list(feature_toggles.keys()): feature_for_update = feature_toggles[feature] strategies = parsed_features[feature]["strategies"] diff --git a/UnleashClient/periodic_tasks/send_metrics.py b/UnleashClient/periodic_tasks/send_metrics.py index e6076c49..d33e8f79 100644 --- a/UnleashClient/periodic_tasks/send_metrics.py +++ b/UnleashClient/periodic_tasks/send_metrics.py @@ -13,15 +13,15 @@ def aggregate_metrics( ) -> dict: feature_stats_list = [] - for feature_name in features.keys(): - if not (features[feature_name].yes_count or features[feature_name].no_count): + for feature in features.values(): + if not (feature.yes_count or feature.no_count): continue feature_stats = { - features[feature_name].name: { - "yes": features[feature_name].yes_count, - "no": features[feature_name].no_count, - "variants": features[feature_name].variant_counts, + feature.name: { + "yes": feature.yes_count, + "no": feature.no_count, + "variants": feature.variant_counts, } } @@ -42,8 +42,8 @@ def aggregate_and_send_metrics( ) -> None: feature_stats_dict = aggregate_metrics(features) - for feature_name in features.keys(): - features[feature_name].reset_stats() + for feature in features.values(): + feature.reset_stats() metrics_request = { "appName": app_name, diff --git a/requirements.txt b/requirements.txt index cee626e5..1a72b737 100644 --- a/requirements.txt +++ b/requirements.txt @@ -23,6 +23,7 @@ pytest-xdist responses ruff tox +pytz # - Testing () blinker diff --git a/tests/unit_tests/test_loader.py b/tests/unit_tests/test_loader.py index e6866c4b..65c146cb 100644 --- a/tests/unit_tests/test_loader.py +++ b/tests/unit_tests/test_loader.py @@ -21,11 +21,10 @@ def test_loader_initialization(cache_full): # noqa: F811 in_memory_features["GradualRolloutUserID"].strategies[0], GradualRolloutUserId ) - for feature_name in in_memory_features.keys(): + for feature_name, feature in in_memory_features.items(): if feature_name == "Garbage": # Don't check purposely invalid strategy. break - feature = in_memory_features[feature_name] assert len(feature.strategies) > 0 strategy = feature.strategies[0]