feat!: release 3.0.0 - #155
Merged
Merged
Conversation
**Issue number:** ### PR Type **What kind of change does this PR introduce?** * [x] Feature * [ ] Bug Fix * [ ] Refactoring (no functional or API changes) * [ ] Documentation Update * [ ] Maintenance (dependency updates, CI, etc.) ## Summary DDAA/DDSS is not supported in azure environments, moreover splunkArchivalRetentionDays applies after searchableDays which is already 1 year, Hence removing splunkArchivalRetentionDays from index creation payload ### Changes Please provide a summary of the changes. ### User experience Test run: Enterprise: https://github.com/splunk/splunk-add-on-for-salesforce/actions/runs/17118813093 Aws Cloud: https://cd.splunkdev.com/taautomation/ta-automation-compatibility-tests/-/pipelines/28980311/ Azure cloud: https://cd.splunkdev.com/taautomation/ta-automation-compatibility-tests/-/pipelines/28937590/ ## Checklist If an item doesn't apply to your changes, leave it unchecked. * [ ] I have performed a self-review of this change according to the [development guidelines](https://splunk.github.io/addonfactory-ucc-test/contributing/#development-guidelines) * [ ] Tests have been added/modified to cover the changes [(testing doc)](https://splunk.github.io/addonfactory-ucc-test/contributing/#build-and-test) * [ ] Changes are documented * [ ] PR title and description follows the [contributing principles](https://splunk.github.io/addonfactory-ucc-test/contributing/#pull-requests)
**Issue number:** ### PR Type **What kind of change does this PR introduce?** * [ ] Feature * [x] Bug Fix * [ ] Refactoring (no functional or API changes) * [ ] Documentation Update * [ ] Maintenance (dependency updates, CI, etc.) ## Summary This PR adjusts logic of set_loglevel and try_to_set_loglevel, so they return values after the change. ### Changes Please provide a summary of the changes. ### User experience Please describe the user experience before and after this change. Screenshots are welcome for additional context. ## Checklist If an item doesn't apply to your changes, leave it unchecked. * [x] I have performed a self-review of this change according to the [development guidelines](https://splunk.github.io/addonfactory-ucc-test/contributing/#development-guidelines) * [ ] Tests have been added/modified to cover the changes [(testing doc)](https://splunk.github.io/addonfactory-ucc-test/contributing/#build-and-test) * [ ] Changes are documented * [x] PR title and description follows the [contributing principles](https://splunk.github.io/addonfactory-ucc-test/contributing/#pull-requests)
**Issue number:** ### PR Type This PR contains typo correction. **What kind of change does this PR introduce?** * [ ] Feature * [X] Bug Fix * [ ] Refactoring (no functional or API changes) * [ ] Documentation Update * [ ] Maintenance (dependency updates, CI, etc.) ## Summary ### Changes Please provide a summary of the changes. ### User experience Please describe the user experience before and after this change. Screenshots are welcome for additional context. ## Checklist If an item doesn't apply to your changes, leave it unchecked. * [ ] I have performed a self-review of this change according to the [development guidelines](https://splunk.github.io/addonfactory-ucc-test/contributing/#development-guidelines) * [ ] Tests have been added/modified to cover the changes [(testing doc)](https://splunk.github.io/addonfactory-ucc-test/contributing/#build-and-test) * [ ] Changes are documented * [ ] PR title and description follows the [contributing principles](https://splunk.github.io/addonfactory-ucc-test/contributing/#pull-requests)
**Issue number:** ### PR Type **What kind of change does this PR introduce?** * [ ] Feature * [X] Bug Fix * [ ] Refactoring (no functional or API changes) * [ ] Documentation Update * [ ] Maintenance (dependency updates, CI, etc.) ## Summary This PR ensures consistent behaviour for performing forges using bootstrap and attached decorators. Previously errors in attached forges did not propagate to test (which in some cases allowed tests to pass), while any error in bootstrapped forges resulted with errored test. From now on, the behaviour will be the same for both decorators (error in forge will imply error in test). Related Jira: https://splunk.atlassian.net/browse/ADDON-82933 ### Changes Please provide a summary of the changes. ### User experience Please describe the user experience before and after this change. Screenshots are welcome for additional context. ## Checklist Tests done: * [X] https://github.com/splunk/splunk-add-on-for-google-workspace/actions/runs/17297975117/job/49102200754 * [X] https://github.com/splunk/splunk-add-on-for-microsoft-office-365/actions/runs/17298177430/job/49103738559 If an item doesn't apply to your changes, leave it unchecked. * [ ] I have performed a self-review of this change according to the [development guidelines](https://splunk.github.io/addonfactory-ucc-test/contributing/#development-guidelines) * [ ] Tests have been added/modified to cover the changes [(testing doc)](https://splunk.github.io/addonfactory-ucc-test/contributing/#build-and-test) * [ ] Changes are documented * [ ] PR title and description follows the [contributing principles](https://splunk.github.io/addonfactory-ucc-test/contributing/#pull-requests)
## What Adds official Python 3.13 support and makes Python 3.13 the minimum supported runtime. ## Breaking change **Python 3.7 through 3.12 are no longer supported.** Consumers must run Python 3.13 or newer. The package metadata now declares `python = "^3.13"`, and all build, test, documentation, and release jobs run on Python 3.13. ## Why Supporting urllib3's security-fixed 2.7 release requires a newer Python runtime. Removing the legacy runtime constraint also allows stale direct and transitive dependencies to be refreshed to versions without the vulnerabilities reported by FOSSA. ## Changes - require Python 3.13 and remove older Python versions from CI - require `urllib3 >=2.7.0,<3` - require `pytest >=9.0.3,<10` - update development tooling constraints for Black, mypy, and pre-commit - regenerate `poetry.lock` with Poetry 1.5.1 - update Renovate's urllib3 policy - pass the source branch explicitly to `fossa analyze` so PR reports do not fall back to `master` - retain the Python 3.13 flake8 compatibility configuration ## Security result The refreshed project dependency environment reports no known vulnerable packages in an independent audit. The environment's standalone `pip` executable is not part of the package dependency graph or `poetry.lock`. Notable resolved versions include: - urllib3 2.7.0 - requests 2.34.2 - pytest 9.1.1 - Black 26.5.1 - Pygments 2.20.0 - pymdown-extensions 11.0.1 - virtualenv 21.7.4 ## Verification Python 3.13: - 17 unit tests passed - 5 functional flow tests passed - 1 functional feature test passed - `pip check` passed - `poetry check` passed - `poetry lock --check` passed - `poetry build` passed - all pre-commit hooks passed - workflow YAML and Renovate JSON parsed successfully BREAKING CHANGE: Python 3.7 through 3.12 are no longer supported. Co-authored-by: Marcin Kolasinski <mkolasinski@splunk.com>
mbruzda-splunk
requested review from
a team,
hsekowski-splunk and
okashaev-splunk
as code owners
August 17, 2026 09:01
**Issue number:** ### PR Type **What kind of change does this PR introduce?** * [ ] Feature * [ ] Bug Fix * [ ] Refactoring (no functional or API changes) * [ ] Documentation Update * [ ] Maintenance (dependency updates, CI, etc.) ## Summary ### Changes Please provide a summary of the changes. ### User experience Please describe the user experience before and after this change. Screenshots are welcome for additional context. ## Checklist If an item doesn't apply to your changes, leave it unchecked. * [ ] I have performed a self-review of this change according to the [development guidelines](https://splunk.github.io/addonfactory-ucc-test/contributing/#development-guidelines) * [ ] Tests have been added/modified to cover the changes [(testing doc)](https://splunk.github.io/addonfactory-ucc-test/contributing/#build-and-test) * [ ] Changes are documented * [ ] PR title and description follows the [contributing principles](https://splunk.github.io/addonfactory-ucc-test/contributing/#pull-requests)
…nections (#153) ## Summary - Splunk can silently close an idle REST keep-alive connection. A session-scoped forge's teardown REST call, which can run tens of minutes after its setup call on the same client, is exposed to this: the first write on the stale pooled connection raises `RemoteDisconnected`/`urllib3.exceptions.ProtocolError` even though the server is healthy. - This isn't hypothetical — it's the confirmed root cause of a consistently reproducing `ucc_modinput_functional` teardown failure against Splunk 10.0.5 in `splunk-add-on-for-okta-identity-cloud` (see [PR #456](splunk/splunk-add-on-for-okta-identity-cloud#456)), and `splunk-add-on-for-microsoft-cloud-services` independently reinvented near-identical retry logic in its own `tests/ucc_modinput_functional/splunk/forges/utils.py` for the same signature. - A generator-based forge teardown can't be generically retried once it raises past its `yield` — calling `next()` again just raises `StopIteration`, the cleanup code never re-runs. So there's no safe framework-level fix in `ForgePostExec.execute_teardown()`; the retry has to wrap the specific REST call inside the forge body. - Adds `retry_on_connection_error()` to `splunk_add_on_ucc_modinput_test.common.utils` so TA authors can wrap a flaky call (e.g. a teardown REST write) instead of re-implementing this retry/classification logic in every add-on's own `forges.py`. ## Test plan - [x] `pytest tests/unit/common/test_utils.py` — 14 passed, including 4 new tests covering retry-then-succeed (`RemoteDisconnected` and `ProtocolError`), exhausted-retries re-raise, and non-retryable errors passing straight through. - [x] `black --line-length 79`, `flake8`, `mypy` clean on the modified source file.
## Summary - widen the runtime pytest constraint from an exact patch pin to `>=9.0.3,<10` and lock pytest 9.1.1 - guarantee generated log-level forges restore the original Splunk state when the post-update read fails before the first `yield` - add regression coverage for generated log-level cleanup and attached-forge failure propagation in both parallel and sequential execution ## Why This addresses findings M2, M3, and S1 from the deep review of release PR #155. The exact pytest pin made the plugin conflict with other pytest 9.x environments. The generated log-level forges could mutate Splunk and then fail before the framework registered their teardown. Attached-forge failure propagation also lacked an automated regression test. ## Impact Consumers can use compatible pytest 9.x releases. Generated tests no longer leave Splunk log-level state behind when setup fails after mutation, and future regressions in attached-forge error propagation are covered in both executor modes. ## Validation - `pytest -q tests/unit` — 23 passed - `pytest -q -p pytester tests/functional/flow` — 7 passed - `pytest -q tests/functional/feature` — 1 passed - focused regression tests — 4 passed - `pre-commit run --all-files` — passed - `poetry lock --check` with Poetry 1.5.1 — passed - `poetry build` with Poetry 1.5.1 — passed - wheel metadata verified as `Requires-Dist: pytest (>=9.0.3,<10)`
mkolasinski-splunk
approved these changes
Aug 18, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release 3.0.0
This PR promotes
developtomainand triggers the semantic-release workflow.Release notes
Breaking changes
Features and improvements
retry_on_connection_error(), a reusable helper for retrying REST calls after Splunk drops an idle keep-alive connection.RemoteDisconnectedand urllib3ProtocolErrorfailures with configurable retries and delay while immediately propagating non-retryable errors.urllib3to>=2.7.0,<3and refresh direct and transitive dependencies to security-fixed versions.master.Included changes
Maintenance
developwith the latestmainrelease historyVerification
Checklist