Skip to content

Conversation

dcabib
Copy link
Contributor

@dcabib dcabib commented Aug 30, 2025

Issue number: #7117

Summary

Enhances the SNS parser models with field descriptions and examples using Pydantic's Field() functionality. This improvement provides better documentation and metadata for SNS event parsing, following the pattern established in PR #7100.

Changes

  • Added Field() descriptions and examples to all SNS parser model classes:

    • SnsMsgAttributeModel - User-defined message attributes with type information
    • SnsNotificationModel - Core SNS notification with comprehensive field documentation
    • SnsRecordModel - Individual SNS record structure with detailed explanations
    • SnsModel - Root SNS event model with proper sequence documentation
  • All field descriptions are based on official AWS SNS documentation

  • Examples sourced from actual test events (snsEvent.json) and AWS documentation

  • Maintains 100% backward compatibility - no breaking changes to type annotations or validation logic

  • Preserves existing model validator for SQS protocol differences

User experience

Customers will be able to see examples and descriptions when using SNS parser models, providing:

  • Rich IntelliSense with field descriptions and realistic examples
  • Self-documenting code without needing external AWS documentation
  • Professional API documentation via .model_json_schema()
  • Faster development with immediate reference for acceptable values
  • Clear understanding of FIFO topic behavior and optional fields

Checklist

  • Meet tenets criteria
  • I have performed a self-review of this change
  • Changes have been tested (all existing tests pass)
  • Changes are documented (via Field descriptions)
  • PR title follows conventional commit semantics

Is this a breaking change? No


By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Disclaimer: We value your time and bandwidth. As such, any pull requests created on non-triaged issues might not be successful.

Closes #7117

Enhances the SNS parser models with field descriptions and examples using Pydantic's Field() functionality. This improvement provides better documentation and metadata for SNS event parsing, following the pattern established in PR aws-powertools#7100.

All field descriptions are based on official AWS SNS documentation and include realistic examples from actual test events.

Closes aws-powertools#7117
@dcabib dcabib requested a review from a team as a code owner August 30, 2025 12:36
@dcabib dcabib requested a review from anafalcao August 30, 2025 12:36
@pull-request-size pull-request-size bot added the size/L Denotes a PR that changes 100-499 lines, ignoring generated files. label Aug 30, 2025
@leandrodamascena
Copy link
Contributor

Hey @dcabib please run make format and push a new commit to fix the CI.

@leandrodamascena leandrodamascena requested review from leandrodamascena and removed request for anafalcao August 31, 2025 09:40
Copy link
Contributor

@leandrodamascena leandrodamascena left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks good to me! Please run make format to fix the CI before we merge.

Fix CI formatting issues as requested by leandrodamascena

Not all issues are linked correctly.

Please link each issue to the PR either manually or using a closing keyword in the format fixes #<issue-number> format.

If mentioning more than one issue, separate them with commas: i.e. fixes #<issue-number-1>, closes #<issue-number-2>.

@leandrodamascena leandrodamascena self-requested a review September 1, 2025 10:56
Copy link
Contributor

@leandrodamascena leandrodamascena left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @dcabib there are some lines that is over 120 characters and Ruff is complaining. You can break lines like we did in ALB/Kinesis models.

Can you pls fix it?

dcabib and others added 4 commits September 1, 2025 08:01
Break long lines over 120 characters following ALB/Kinesis pattern as requested by leandrodamascena. Use parentheses for multi-line strings and break long URL examples.
Copy link

sonarqubecloud bot commented Sep 1, 2025

Please retry analysis of this Pull-Request directly on SonarQube Cloud

@leandrodamascena leandrodamascena self-requested a review September 1, 2025 11:14
Copy link
Contributor

@leandrodamascena leandrodamascena left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for working on this @dcabib! APPROVED.

Copy link

codecov bot commented Sep 1, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 96.35%. Comparing base (572c93b) to head (4a7e3c0).
⚠️ Report is 2 commits behind head on develop.

Additional details and impacted files
@@           Coverage Diff            @@
##           develop    #7287   +/-   ##
========================================
  Coverage    96.35%   96.35%           
========================================
  Files          275      275           
  Lines        12980    12980           
  Branches       965      965           
========================================
  Hits         12507    12507           
  Misses         366      366           
  Partials       107      107           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@leandrodamascena leandrodamascena merged commit 0cf950b into aws-powertools:develop Sep 1, 2025
14 checks passed
Copy link

boring-cyborg bot commented Sep 1, 2025

Awesome work, congrats on your first merged pull request and thank you for helping improve everyone's experience!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement size/L Denotes a PR that changes 100-499 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Tech debt: Improve documentation of Event model fields in SNS parser models
3 participants