Add connectors: Azure Automation, OneNote, Key Vault, and more#37
Conversation
|
[Dobby] Finding 3 - Medium - Tests: newly generated Teams methods still covered only by skipped/pass-only tests This PR adds 17 new async methods to teams.py (up from 11 on main). Several newly generated methods - get_channels_for_group_async (L2062), create_channel_async (L2091), get_all_channels_for_team_async (L2121), get_tags_async (L2626), create_tag_async (L2654) - have corresponding test stubs in test_teams.py that remain @pytest.mark.skip with empty pass bodies (L238-L286). The skip reason states "Method has template variable bug - groupId not defined", but the PR regeneration now provides group_id: str as a proper parameter on these methods. If the generator fixed the template-variable bug, the skips are stale and should be replaced with active tests. If the bug persists in a different form, the skip reason should be updated to explain the current state. Sibling sweep - 18 skipped tests total in test_teams.py (L238-L364):
These 18 skipped tests were pre-existing on main, so they are not new regressions. However, this PR is the right place to unskip the ones whose generator bugs were fixed by the regeneration, since the methods now accept the parameters they were missing. Additionally, no tests cover several other newly added methods that have no corresponding test stubs at all: get_team_async, post_message_to_self_async, list_team_members_async, add_member_to_team_async, remove_member_from_team_async, get_online_meeting_async, list_sections_async, create_section_async, get_all_adhoc_call_recordings_async, get_all_adhoc_call_transcripts_async. Expected fix: unskip and implement active tests for the methods whose parameters now exist; add test stubs (at minimum) for the remaining newly generated methods. |
|
[Dobby] Finding 4 - Low - Docs: CHANGELOG missing Yammer and has malformed version heading The [Unreleased] section in CHANGELOG.md (L12-L20) lists nine of the ten new connectors added by this PR but omits Yammer (yammer.py). The README.md validated connectors table, samples/sample_connector_usage/README.md, and .github/skills/connection-setup/SKILL.md all correctly include Yammer, so the CHANGELOG is the only out-of-sync surface. Additionally, the heading for the previous release at L22 reads Sibling sweep across doc surfaces:
Expected fix:
|
|
[Dobby] Finding 1 - High - Contract: Azure Digital Twins add/update methods cannot send request payloads Six ADT methods expose no input parameter and send Python SDK (this PR):
Comparison with .NET SDK (AzureDigitalTwinsExtensions.cs on main):
Every .NET method accepts a typed input body ( Expected fix: regenerate or manually add the missing input parameters (with corresponding dataclasses) and pass them to |
|
[Dobby] Finding 2 - High - Error Handling: void operations silently swallow server errors Many generated DELETE, PATCH, and fire-and-forget POST methods call Comparison with .NET SDK (ConnectorClientBase.cs on main): The .NET SDK has centralized auto-throw in two base-class helpers:
Every generated .NET method - including The Python SDK chose a different (valid) architecture: Sibling sweep - 37 unchecked
Note: this same gap also exists in some pre-existing connectors on main (azurequeues, azuretables, commondataservice, eventhubs, excelonlinebusiness, office365), indicating a systemic generator issue. Fixing it in this PR for the changed files would be ideal; a follow-up issue for the rest is acceptable. Expected fix: for every |
daviburg
left a comment
There was a problem hiding this comment.
[Dobby] Review of PR #37 - Add connectors: Azure Automation, OneNote, Key Vault, and more
Solid batch of 10 new connector clients with tests, samples, docs fan-out, and passing CI across Python 3.10-3.14. Two issues need fixes before merge; two are lower-priority improvements.
Must fix (High):
-
ADT add/update methods missing input payloads - 6 Azure Digital Twins methods (add_twin, add_relationship, update_model, update_twin, update_component, update_relationship) send body=None, making them nonfunctional. The .NET SDK's equivalent methods all accept typed input bodies. This is a code generation gap.
-
Void operations silently swallow server errors - 37 calls across 9 changed connector files discard the HTTP response without checking status. The .NET SDK auto-throws on non-2xx via its base class; the Python SDK's architecture requires each generated method to check, but void methods skip this. Callers cannot distinguish success from 400/401/404/500.
Should fix (Medium/Low):
-
Teams skipped tests may be stale - 18 tests remain skipped with 'template variable bug' but the PR regeneration appears to have added the missing parameters. If fixed, unskip; if not, update the skip reason. Also, 10+ newly added Teams methods have no test stubs at all.
-
CHANGELOG missing Yammer + malformed version heading - Yammer is in README/samples/SKILL but not CHANGELOG. The heading '## [0.3.b2]' doesn't match its reference link '[0.3.0b2]'.
See individual comments for detailed evidence, .NET SDK comparison tables, and sibling sweep results.
|
[Dobby] Agent tooling / generation-guardrail suggestions (process, not blocking) While reviewing this PR I looked at whether the repo's agent tooling has what's needed to produce clean generated clients. The docs cover how to run the generator (GENERATION.md) and how to wire up its output (add-connector skill, connector-table instructions), and they state the right principle - Suggested improvements:
These are process suggestions for the SDK/generator maintainers and are not blockers for this PR beyond the already-filed Findings 1-4. |
Addressing Feedback:
|
daviburg
left a comment
There was a problem hiding this comment.
[Dobby] Re-review after f6e7c46: Findings 1, 2, and 4 look fixed, but Finding 3 is still not fully resolved, so I cannot sign off yet.
The remaining problem is that tests/test_teams.py still skips tests with reasons saying the methods do not exist in the generated SDK, but those methods now do exist in src/azure/connectors/teams.py. This means CI can stay green while these generated operations remain untested.
Examples from the current PR head:
| Skipped test | Skip reason | Generated method exists |
|---|---|---|
test_get_channel_success at tests/test_teams.py:297 |
Method get_channel_async does not exist in generated SDK |
get_channel_async at src/azure/connectors/teams.py:2136 |
test_get_chats_success at tests/test_teams.py:333 |
Method get_chats_async does not exist in generated SDK |
get_chats_async at src/azure/connectors/teams.py:2211 |
test_add_member_to_tag_success at tests/test_teams.py:423 |
Method add_member_to_tag_async does not exist in generated SDK |
add_member_to_tag_async at src/azure/connectors/teams.py:4237 |
test_get_tag_members_success at tests/test_teams.py:429 |
Method get_tag_members_async does not exist in generated SDK |
get_tag_members_async at src/azure/connectors/teams.py:4268 |
test_delete_tag_member_success at tests/test_teams.py:435 |
Method delete_tag_member_async does not exist in generated SDK |
delete_tag_member_async at src/azure/connectors/teams.py:4298 |
test_delete_tag_success at tests/test_teams.py:441 |
Method delete_tag_async does not exist in generated SDK |
delete_tag_async at src/azure/connectors/teams.py:4212 |
test_get_message_details_success at tests/test_teams.py:457 |
Method get_message_details_async does not exist in generated SDK |
get_message_details_async at src/azure/connectors/teams.py:2344 |
test_list_replies_to_message_success / test_list_replies_with_top_parameter at tests/test_teams.py:463 and :469 |
Method list_replies_to_message_async does not exist in generated SDK |
list_replies_to_message_async at src/azure/connectors/teams.py:2380 |
test_list_members_success at tests/test_teams.py:506 |
Method list_members_async does not exist in generated SDK |
list_members_async at src/azure/connectors/teams.py:2429 |
test_on_new_channel_message_success / test_on_new_channel_message_with_top at tests/test_teams.py:587 and :593 |
Method on_new_channel_message_async does not exist in generated SDK |
on_new_channel_message_async at src/azure/connectors/teams.py:2468 |
There is also test_get_messages_from_channel_success at tests/test_teams.py:451 with the generic reason Method does not exist in generated SDK, while get_messages_from_channel_async exists in teams.py.
Please unskip and implement these now that the methods are generated, or remove/rename the stale tests if a different operation is intended. After that, I think this should be ready: ADT request bodies are present, changed connector files no longer discard send_async responses, Yammer/changelog docs are fixed, and CI is green.
Local note: I could not run the targeted pytest files locally because this machine is missing aiohttp, but the current PR CI passed across Python 3.10-3.14.
…into hallvictoria/add-new-connectors3
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Description
This PR adds 10 new connector clients to the Azure Connectors Python SDK, bringing the total validated connectors to 32. Each connector includes full unit test coverage and sample usage files.
Changes
Testing
pytest)flake8 src/ tests/)Checklist
src/azure/connectors/*.py(unless regenerated)