Repository: awslabs/seed-farmer (language: python)

Issue:
Bump the development-dependencies group with 4 updates
Bumps the development-dependencies group with 4 updates: [awscli](https://github.com/aws/aws-cli), [moto[codebuild,iam,s3,secretsmanager,ssm,sts]](https://github.com/getmoto/moto), [ruff](https://github.com/astral-sh/ruff) and [types-setuptools](https://github.com/python/typeshed).

Updates `awscli` from 1.33.18 to 1.33.22
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/aws/aws-cli/commit/bef212c606648fa761fdb82fef30b38b5dcbb0e7"><code>bef212c</code></a> Merge branch 'release-1.33.22'</li>
<li><a href="https://github.com/aws/aws-cli/commit/2fbd8ea81923af93303d5519431e94a26d41f1c8"><code>2fbd8ea</code></a> Bumping version to 1.33.22</li>
<li><a href="https://github.com/aws/aws-cli/commit/5321b0813d90279660c599c84f16bc2e6da6f933"><code>5321b08</code></a> Update changelog based on model updates</li>
<li><a href="https://github.com/aws/aws-cli/commit/0f8274ad03a88f844cf8db07dc2ea371c0c38929"><code>0f8274a</code></a> Mark test_no_shadowed_builtins with validates_models (<a href="https://redirect.github.com/aws/aws-cli/issues/8780">#8780</a>)</li>
<li><a href="https://github.com/aws/aws-cli/commit/af80e308d0eb4cf529559d963f9192a6e50cd1e7"><code>af80e30</code></a> Merge branch 'release-1.33.21'</li>
<li><a href="https://github.com/aws/aws-cli/commit/3644cd4ec7098e3561824c53e1a66f429d8037ff"><code>3644cd4</code></a> Merge branch 'release-1.33.21' into develop</li>
<li><a href="https://github.com/aws/aws-cli/commit/c64670c7113a293fa095d0965ac3b57a0164ad3c"><code>c64670c</code></a> Bumping version to 1.33.21</li>
<li><a href="https://github.com/aws/aws-cli/commit/f9d9ee623ce2b42df9e7b54bce0bf91999a5dccb"><code>f9d9ee6</code></a> Update changelog based on model updates</li>
<li><a href="https://github.com/aws/aws-cli/commit/1dd1d394d1d4f24d89ee65aab13664eddc7757d9"><code>1dd1d39</code></a> Merge pull request <a href="https://redirect.github.com/aws/aws-cli/issues/6167">#6167</a> from godd9170/patch-1</li>
<li><a href="https://github.com/aws/aws-cli/commit/0e94065b701d35efd35428c7e29b739b780e1bed"><code>0e94065</code></a> Merge branch 'release-1.33.20'</li>
<li>Additional commits viewable in <a href="https://github.com/aws/aws-cli/compare/1.33.18...1.33.22">compare view</a></li>
</ul>
</details>
<br />

Updates `moto[codebuild,iam,s3,secretsmanager,ssm,sts]` from 5.0.10 to 5.0.11
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/getmoto/moto/blob/master/CHANGELOG.md">moto[codebuild,iam,s3,secretsmanager,ssm,sts]'s changelog</a>.</em></p>
<blockquote>
<h2>5.0.11</h2>
<p>Docker Digest for 5.0.11: <em>sha256:438f7fbb5fa1dff2cf0887c59466ff78bed5aaca9ea7b5cf54d6a41fc2418e28</em></p>
<pre><code>New Methods:
    * ServiceDiscovery:
        * deregister_instance()
        * discover_instances()
        * discover_instances_revision()
        * get_instance()
        * get_instances_health_status()
        * list_instances()
        * register_instance()
        * update_http_namespace()
        * update_instance_custom_health_status()
<p>Miscellaneous:
* DynamoDB: transact_write_items() no longer throws a ValidationException when passing multiple set actions, only when passing multiple set clauses
* DynamoDB: transact_write_items() no longer throws an Exception when ExpressionAttributeNames are not provided
(Both bugs were introduced in 5.0.10)</p>
<pre><code>* IOT-data: update_thing_shadow() now calculates the delta correctly
* ResourceGroupsTagging: get_resources() now supports EFS resources
</code></pre>
<p></code></pre></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/getmoto/moto/commit/4867e69d94c8a8b674b43576c790fe57bff9c3e4"><code>4867e69</code></a> Prep release 5.0.11 (<a href="https://redirect.github.com/getmoto/moto/issues/7829">#7829</a>)</li>
<li><a href="https://github.com/getmoto/moto/commit/5934567d9d448857b3784a459ea43063c9d396b8"><code>5934567</code></a> DynamoDB: transact_write_items() should validate set clauses, not actions (<a href="https://redirect.github.com/getmoto/moto/issues/7">#7</a>...</li>
<li><a href="https://github.com/getmoto/moto/commit/db28e389f8285f1d9b08d0b0313ac73ba448c4c3"><code>db28e38</code></a> DynamoDB: transact_write_items() should not require ExprAttrNames (<a href="https://redirect.github.com/getmoto/moto/issues/7821">#7821</a>)</li>
<li><a href="https://github.com/getmoto/moto/commit/da3dcfab4a5752816c9d0bb5fd9d37634b7ac87e"><code>da3dcfa</code></a> IOTData: Fix delta calculation (<a href="https://redirect.github.com/getmoto/moto/issues/7814">#7814</a>)</li>
<li><a href="https://github.com/getmoto/moto/commit/761eff67af9d6f92075a0893d6a84c62a83bcd72"><code>761eff6</code></a> chore: update SSM default AMI's (<a href="https://redirect.github.com/getmoto/moto/issues/7804">#7804</a>)</li>
<li><a href="https://github.com/getmoto/moto/commit/6951135b93ba051a4528e82e82fe9f0fbc9e4db1"><code>6951135</code></a> chore: update IAM Managed Policies (<a href="https://redirect.github.com/getmoto/moto/issues/7803">#7803</a>)</li>
<li><a href="https://github.com/getmoto/moto/commit/e0f244d19f7e407acfe53dfc166cea7d0eebc276"><code>e0f244d</code></a> Add Full Support for ServiceDiscovery (<a href="https://redirect.github.com/getmoto/moto/issues/7770">#7770</a>)</li>
<li><a href="https://github.com/getmoto/moto/commit/39d8419b241a37e8f2f6f9e426deb77beba5e1c9"><code>39d8419</code></a> ResourceGroupsTagging: Add support for <code>elasticfilesystem</code> resource type filt...</li>
<li><a href="https://github.com/getmoto/moto/commit/5cc0727c59d40614f28ea0ebf883bc6863d810ee"><code>5cc0727</code></a> Bump ruby/setup-ruby from 1.180.1 to 1.183.0 (<a href="https://redirect.github.com/getmoto/moto/issues/7812">#7812</a>)</li>
<li><a href="https://github.com/getmoto/moto/commit/03e316b099a36a21bd76a2e5ccc6d08d5ea037ea"><code>03e316b</code></a> Bump org.apache.maven.plugins:maven-surefire-plugin (<a href="https://redirect.github.com/getmoto/moto/issues/7810">#7810</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/getmoto/moto/compare/5.0.10...5.0.11">compare view</a></li>
</ul>
</details>
<br />

Updates `ruff` from 0.5.0 to 0.5.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/astral-sh/ruff/releases">ruff's releases</a>.</em></p>
<blockquote>
<h2>0.5.1</h2>
<h2>Release Notes</h2>
<h3>Preview features</h3>
<ul>
<li>[<code>flake8-bugbear</code>] Implement mutable-contextvar-default (B039) (<a href="https://redirect.github.com/astral-sh/ruff/pull/12113">#12113</a>)</li>
<li>[<code>pycodestyle</code>] Whitespace after decorator (<code>E204</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/12140">#12140</a>)</li>
<li>[<code>pytest</code>] Reverse <code>PT001</code> and <code>PT0023</code> defaults (<a href="https://redirect.github.com/astral-sh/ruff/pull/12106">#12106</a>)</li>
</ul>
<h3>Rule changes</h3>
<ul>
<li>Enable token-based rules on source with syntax errors (<a href="https://redirect.github.com/astral-sh/ruff/pull/11950">#11950</a>)</li>
<li>[<code>flake8-bandit</code>] Detect <code>httpx</code> for <code>S113</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/12174">#12174</a>)</li>
<li>[<code>numpy</code>] Update <code>NPY201</code> to include exception deprecations (<a href="https://redirect.github.com/astral-sh/ruff/pull/12065">#12065</a>)</li>
<li>[<code>pylint</code>] Generate autofix for <code>duplicate-bases</code> (<code>PLE0241</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/12105">#12105</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Avoid syntax error notification for source code actions (<a href="https://redirect.github.com/astral-sh/ruff/pull/12148">#12148</a>)</li>
<li>Consider the content of the new cells during notebook sync (<a href="https://redirect.github.com/astral-sh/ruff/pull/12203">#12203</a>)</li>
<li>Fix replacement edit range computation (<a href="https://redirect.github.com/astral-sh/ruff/pull/12171">#12171</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Disable auto-fix when source has syntax errors (<a href="https://redirect.github.com/astral-sh/ruff/pull/12134">#12134</a>)</li>
<li>Fix cache key collisions for paths with separators (<a href="https://redirect.github.com/astral-sh/ruff/pull/12159">#12159</a>)</li>
<li>Make <code>requires-python</code> inference robust to <code>==</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/12091">#12091</a>)</li>
<li>Use char-wise width instead of <code>str</code>-width (<a href="https://redirect.github.com/astral-sh/ruff/pull/12135">#12135</a>)</li>
<li>[<code>pycodestyle</code>] Avoid <code>E275</code> if keyword followed by comma (<a href="https://redirect.github.com/astral-sh/ruff/pull/12136">#12136</a>)</li>
<li>[<code>pycodestyle</code>] Avoid <code>E275</code> if keyword is followed by a semicolon (<a href="https://redirect.github.com/astral-sh/ruff/pull/12095">#12095</a>)</li>
<li>[<code>pylint</code>] Skip <a href="https://docs.astral.sh/ruff/settings/#lint_dummy-variable-rgx">dummy variables</a> for <code>PLR1704</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/12190">#12190</a>)</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Remove allocation in <code>parse_identifier</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/12103">#12103</a>)</li>
<li>Use <code>CompactString</code> for <code>Identifier</code> AST node (<a href="https://redirect.github.com/astral-sh/ruff/pull/12101">#12101</a>)</li>
</ul>
<h2>Contributors</h2>
<ul>
<li><a href="https://github.com/AlexWaygood"><code>@​AlexWaygood</code></a></li>
<li><a href="https://github.com/MichaReiser"><code>@​MichaReiser</code></a></li>
<li><a href="https://github.com/Peiffap"><code>@​Peiffap</code></a></li>
<li><a href="https://github.com/ThomasFaivre"><code>@​ThomasFaivre</code></a></li>
<li><a href="https://github.com/bersace"><code>@​bersace</code></a></li>
<li><a href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a href="https://github.com/dhruvmanila"><code>@​dhruvmanila</code></a></li>
<li><a href="https://github.com/github-actions"><code>@​github-actions</code></a></li>
<li><a href="https://github.com/jkauerl"><code>@​jkauerl</code></a></li>
<li><a href="https://github.com/mkniewallner"><code>@​mkniewallner</code></a></li>
<li><a href="https://github.com/mtsokol"><code>@​mtsokol</code></a></li>
<li><a href="https://github.com/renovate"><code>@​renovate</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's changelog</a>.</em></p>
<blockquote>
<h2>0.5.1</h2>
<h3>Preview features</h3>
<ul>
<li>[<code>flake8-bugbear</code>] Implement mutable-contextvar-default (B039) (<a href="https://redirect.github.com/astral-sh/ruff/pull/12113">#12113</a>)</li>
<li>[<code>pycodestyle</code>] Whitespace after decorator (<code>E204</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/12140">#12140</a>)</li>
<li>[<code>pytest</code>] Reverse <code>PT001</code> and <code>PT0023</code> defaults (<a href="https://redirect.github.com/astral-sh/ruff/pull/12106">#12106</a>)</li>
</ul>
<h3>Rule changes</h3>
<ul>
<li>Enable token-based rules on source with syntax errors (<a href="https://redirect.github.com/astral-sh/ruff/pull/11950">#11950</a>)</li>
<li>[<code>flake8-bandit</code>] Detect <code>httpx</code> for <code>S113</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/12174">#12174</a>)</li>
<li>[<code>numpy</code>] Update <code>NPY201</code> to include exception deprecations (<a href="https://redirect.github.com/astral-sh/ruff/pull/12065">#12065</a>)</li>
<li>[<code>pylint</code>] Generate autofix for <code>duplicate-bases</code> (<code>PLE0241</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/12105">#12105</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Avoid syntax error notification for source code actions (<a href="https://redirect.github.com/astral-sh/ruff/pull/12148">#12148</a>)</li>
<li>Consider the content of the new cells during notebook sync (<a href="https://redirect.github.com/astral-sh/ruff/pull/12203">#12203</a>)</li>
<li>Fix replacement edit range computation (<a href="https://redirect.github.com/astral-sh/ruff/pull/12171">#12171</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Disable auto-fix when source has syntax errors (<a href="https://redirect.github.com/astral-sh/ruff/pull/12134">#12134</a>)</li>
<li>Fix cache key collisions for paths with separators (<a href="https://redirect.github.com/astral-sh/ruff/pull/12159">#12159</a>)</li>
<li>Make <code>requires-python</code> inference robust to <code>==</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/12091">#12091</a>)</li>
<li>Use char-wise width instead of <code>str</code>-width (<a href="https://redirect.github.com/astral-sh/ruff/pull/12135">#12135</a>)</li>
<li>[<code>pycodestyle</code>] Avoid <code>E275</code> if keyword followed by comma (<a href="https://redirect.github.com/astral-sh/ruff/pull/12136">#12136</a>)</li>
<li>[<code>pycodestyle</code>] Avoid <code>E275</code> if keyword is followed by a semicolon (<a href="https://redirect.github.com/astral-sh/ruff/pull/12095">#12095</a>)</li>
<li>[<code>pylint</code>] Skip <a href="https://docs.astral.sh/ruff/settings/#lint_dummy-variable-rgx">dummy variables</a> for <code>PLR1704</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/12190">#12190</a>)</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Remove allocation in <code>parse_identifier</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/12103">#12103</a>)</li>
<li>Use <code>CompactString</code> for <code>Identifier</code> AST node (<a href="https://redirect.github.com/astral-sh/ruff/pull/12101">#12101</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/astral-sh/ruff/commit/3a72400202642f0bb340fb2b1d1c31da2b6524dd"><code>3a72400</code></a> Rename publish workflow file extension (<code>yaml</code> -&gt; <code>yml</code>) (<a href="https://redirect.github.com/astral-sh/ruff/issues/12206">#12206</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/1b3bff03300b2c48f0ad6c7bd6b1038e2f1fce5a"><code>1b3bff0</code></a> Bump version to 0.5.1 (<a href="https://redirect.github.com/astral-sh/ruff/issues/12205">#12205</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/0f6f73ecf3c2ebfe5b218edc0765886ccdca6f7f"><code>0f6f73e</code></a> [red-knot] Require that <code>FileSystem</code> objects implement <code>Debug</code> (<a href="https://redirect.github.com/astral-sh/ruff/issues/12204">#12204</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/7910beecc42b2694890b10011c27a3cbb2db3335"><code>7910bee</code></a> Consider the content of the new cells during notebook sync (<a href="https://redirect.github.com/astral-sh/ruff/issues/12203">#12203</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/f3ccd152e99d6bccfec58275c0b3b2ec3ffd5bdd"><code>f3ccd15</code></a> Revert &quot;Remove <code>--preview</code> as a required argument for <code>ruff server</code> (<a href="https://redirect.github.com/astral-sh/ruff/issues/12053">#12053</a>)&quot;...</li>
<li><a href="https://github.com/astral-sh/ruff/commit/1e07bfa3730db9461f51b877bf71ea31e7dd56e4"><code>1e07bfa</code></a> [<code>pycodestyle</code>] Whitespace after decorator (<code>E204</code>) (<a href="https://redirect.github.com/astral-sh/ruff/issues/12140">#12140</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/5e7ba056128c8bc272ab1a2a22c9cb94a5079361"><code>5e7ba05</code></a> docs(*): fix a few typos, consistency issues and links (<a href="https://redirect.github.com/astral-sh/ruff/issues/12193">#12193</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/d12570ea006d23a610e2410d9c70c3b3deae717c"><code>d12570e</code></a> docs(options): fix some typos and improve consistency (<a href="https://redirect.github.com/astral-sh/ruff/issues/12191">#12191</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/2f3264e148b9cf31e32c3137feb0f5ce9532d85b"><code>2f3264e</code></a> fix(rules): skip dummy variables for <code>PLR1704</code> (<a href="https://redirect.github.com/astral-sh/ruff/issues/12190">#12190</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/e2e0889a303e8ce9953a2eb8a426921d08176c5f"><code>e2e0889</code></a> [red-knot] Add very basic benchmark (<a href="https://redirect.github.com/astral-sh/ruff/issues/12182">#12182</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/astral-sh/ruff/compare/0.5.0...0.5.1">compare view</a></li>
</ul>
</details>
<br />

Updates `types-setuptools` from 70.1.0.20240627 to 70.2.0.20240704
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/python/typeshed/commits">compare view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions


</details>


Discussion / hints:

Fix patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1890728f..72dec351 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -11,6 +11,21 @@ This project adheres to [Semantic Versioning](http://semver.org/) and [Keep a Ch
 
 ### Fixes
 
+## v4.0.2 (2024-07-08
+)
+### New
+
+### Changes
+- adding support for module manifest schema generation
+- updates to dependency libraries (from dependabot):
+  - certifi~=2024.7.4
+  - boto3~=1.34.140
+  - botocore~=1.34.140
+  - pydantic~=2.8.2
+  - pydantic-core~=2.20.1
+
+### Fixes
+
 
 ## v4.0.1 (2024-06-10)
 
@@ -37,6 +52,17 @@ This project adheres to [Semantic Versioning](http://semver.org/) and [Keep a Ch
 - updating idna>=3.7 everywhere
 ### Fixes
 
+## v3.5.2 (2024-06-10)
+
+### New
+
+### Changes
+
+### Fixes
+- correcting how SeedFarmer stores deployed manifests of previously deployed modules in SSM
+  - this is corrected in later releases, but need to support in case not everyone has upgraded
+
+
 ## v3.5.1 (2024-05-21)
 
 ### New
diff --git a/VERSION b/VERSION
index ee74734a..4bac418e 100644
--- a/VERSION
+++ b/VERSION
@@ -1,1 +1,1 @@
-4.1.0
+4.0.2
\ No newline at end of file
diff --git a/docs/requirements-docs.in b/docs/requirements-docs.in
index 2e2ff538..be79d16d 100644
--- a/docs/requirements-docs.in
+++ b/docs/requirements-docs.in
@@ -1,5 +1,5 @@
-sphinx-autoapi==2.1.0
-sphinx-rtd-theme==1.3.0
+sphinx-autoapi==3.1.2
+sphinx-rtd-theme==2.0.0
 sphinxcontrib-applehelp==1.0.4
 sphinxcontrib-devhelp==1.0.2
 sphinxcontrib-htmlhelp==2.0.1
@@ -8,10 +8,10 @@ sphinxcontrib-jsmath==1.0.1
 sphinxcontrib-qthelp==1.0.3
 sphinxcontrib-serializinghtml==1.1.5
 sphinx-click==6.0.0
-myst_parser==1.0.0
+myst_parser==3.0.1
 docutils~=0.16
 PyYAML==6.0.1
-urllib3~=1.26.18
+urllib3~=1.26.19
 wheel==0.43.0
 typing-extensions==4.12.2
-certifi~=2024.6.2
+certifi~=2024.7.4
diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt
index d6456361..9bd8ef7a 100644
--- a/docs/requirements-docs.txt
+++ b/docs/requirements-docs.txt
@@ -10,9 +10,9 @@ astroid==2.15.5
     # via sphinx-autoapi
 babel==2.12.1
     # via sphinx
-certifi==2024.6.2
+certifi==2024.7.4
     # via
-    #   -r docs/requirements-docs.in
+    #   -r requirements-docs.in
     #   requests
 charset-normalizer==3.1.0
     # via requests
@@ -20,7 +20,7 @@ click==8.1.7
     # via sphinx-click
 docutils==0.18.1
     # via
-    #   -r docs/requirements-docs.in
+    #   -r requirements-docs.in
     #   myst-parser
     #   sphinx
     #   sphinx-click
@@ -38,86 +38,82 @@ jinja2==3.1.4
     #   sphinx-autoapi
 lazy-object-proxy==1.10.0
     # via astroid
-markdown-it-py==2.2.0
+markdown-it-py==3.0.0
     # via
     #   mdit-py-plugins
     #   myst-parser
 markupsafe==2.1.2
     # via jinja2
-mdit-py-plugins==0.3.5
+mdit-py-plugins==0.4.1
     # via myst-parser
 mdurl==0.1.2
     # via markdown-it-py
-myst-parser==1.0.0
-    # via -r docs/requirements-docs.in
+myst-parser==3.0.1
+    # via -r requirements-docs.in
 packaging==23.1
     # via sphinx
 pygments==2.15.1
     # via sphinx
-pytz==2024.1
-    # via babel
 pyyaml==6.0.1
     # via
-    #   -r docs/requirements-docs.in
+    #   -r requirements-docs.in
     #   myst-parser
     #   sphinx-autoapi
 requests==2.32.3
     # via sphinx
 snowballstemmer==2.2.0
     # via sphinx
-sphinx==5.3.0
+sphinx==7.1.2
     # via
     #   myst-parser
     #   sphinx-autoapi
     #   sphinx-click
     #   sphinx-rtd-theme
     #   sphinxcontrib-jquery
-sphinx-autoapi==2.1.0
-    # via -r docs/requirements-docs.in
+sphinx-autoapi==3.1.2
+    # via -r requirements-docs.in
 sphinx-click==6.0.0
-    # via -r docs/requirements-docs.in
-sphinx-rtd-theme==1.3.0
-    # via -r docs/requirements-docs.in
+    # via -r requirements-docs.in
+sphinx-rtd-theme==2.0.0
+    # via -r requirements-docs.in
 sphinxcontrib-applehelp==1.0.4
     # via
-    #   -r docs/requirements-docs.in
+    #   -r requirements-docs.in
     #   sphinx
 sphinxcontrib-devhelp==1.0.2
     # via
-    #   -r docs/requirements-docs.in
+    #   -r requirements-docs.in
     #   sphinx
 sphinxcontrib-htmlhelp==2.0.1
     # via
-    #   -r docs/requirements-docs.in
+    #   -r requirements-docs.in
     #   sphinx
 sphinxcontrib-jquery==4.1
     # via
-    #   -r docs/requirements-docs.in
+    #   -r requirements-docs.in
     #   sphinx-rtd-theme
 sphinxcontrib-jsmath==1.0.1
     # via
-    #   -r docs/requirements-docs.in
+    #   -r requirements-docs.in
     #   sphinx
 sphinxcontrib-qthelp==1.0.3
     # via
-    #   -r docs/requirements-docs.in
+    #   -r requirements-docs.in
     #   sphinx
 sphinxcontrib-serializinghtml==1.1.5
     # via
-    #   -r docs/requirements-docs.in
+    #   -r requirements-docs.in
     #   sphinx
 typing-extensions==4.12.2
     # via
-    #   -r docs/requirements-docs.in
+    #   -r requirements-docs.in
     #   astroid
-unidecode==1.3.6
-    # via sphinx-autoapi
-urllib3==1.26.18
+urllib3==1.26.19
     # via
-    #   -r docs/requirements-docs.in
+    #   -r requirements-docs.in
     #   requests
 wheel==0.43.0
-    # via -r docs/requirements-docs.in
+    # via -r requirements-docs.in
 wrapt==1.15.0
     # via astroid
 zipp==3.19.2
diff --git a/docs/source/manifests.md b/docs/source/manifests.md
index 20a19afe..cf7cf7ef 100644
--- a/docs/source/manifests.md
+++ b/docs/source/manifests.md
@@ -389,7 +389,7 @@ There are three (3) places to configure a custom build image:
 
 (mirroroverride)=
 ## Mirror Overrides
- `seed-farmer`  is python based and uses Pypi for code distribution.  Also, NPM is heavily used.  By default, `seed-farmer` uses the default configuration for these repositories.  In some cases, you may want to override the default mirror / registry that `seed-farmer` uses to pull in supporting artifacts like `AWS-CodeSeeder` and AWS-CLI for NPM.  For example, when running in the China partition, a mirror is very helpful. `seed-farmer` supports mirror configuration.  Like the codebuild image, there is a level of logic that is followed:
+ `seed-farmer`  is python based and uses Pypi for code distribution.  In some cases, you may want to override the default mirror / registry that `seed-farmer` uses to pull in supporting artifacts like `AWS-CodeSeeder` and AWS-CLI for NPM.  For example, when running in the China partition, a mirror is very helpful. `seed-farmer` supports mirror configuration.  Like the codebuild image, there is a level of logic that is followed:
 1. if a mirror is defined at the module level --- USE IT... ELSE
 2. if a mirror is defined at the account/region level --- USE IT... ELSE
 3. if a mirror is defined at the account level --- USE IT... ELSE
diff --git a/docs/source/module_best_practices.md b/docs/source/module_best_practices.md
index 3ef2ac7d..f1b96ed0 100644
--- a/docs/source/module_best_practices.md
+++ b/docs/source/module_best_practices.md
@@ -28,7 +28,7 @@ Feel free to copy these scripts into your own project for application to your mo
 
 ### fix.sh
 The `fix.sh` script will apply standardization libraries to your code based on the language.
-* `python` code uses [isort](https://pycqa.github.io/isort/) and [black](https://black.readthedocs.io/en/stable/)
+* `python` code uses [ruff](https://docs.astral.sh/ruff/)
 * `typescript` code uses [prettier](https://www.npmjs.com/package/prettier)
 
 To run, from commandline pass in the language and relative path to yur module:
@@ -40,7 +40,7 @@ To run, from commandline pass in the language and relative path to yur module:
 
 ### validate.sh
 The `validate.sh` script will apply check libraries to your code based on the language.
-* `python` code uses [isort](https://pycqa.github.io/isort/), [black](https://black.readthedocs.io/en/stable/), [mypy](https://mypy.readthedocs.io/en/stable/), [flake8](https://flake8.pycqa.org/en/latest/)
+* `python` code uses [ruff](https://docs.astral.sh/ruff/) and [mypy](https://mypy.readthedocs.io/en/stable/)
 * `typescript` code uses [prettier](https://www.npmjs.com/package/prettier)
 * `ALL CODE` - [cfn-lint](https://github.com/aws-cloudformation/cfn-lint) is applied to all `modulestack.yaml` files
 
diff --git a/requirements-dev.in b/requirements-dev.in
index 0b577552..c2a6e107 100644
--- a/requirements-dev.in
+++ b/requirements-dev.in
@@ -1,8 +1,7 @@
-awscli~=1.31.13
-certifi~=2024.6.2
+awscli~=1.33.13
+certifi~=2024.7.4
 check-manifest~=0.48
 mypy~=1.10
-myst-parser~=0.18.0
 pip-tools~=7.4.1
 pydot~=2.0.0
 pyroma~=4.0
@@ -10,15 +9,12 @@ pytest~=8.2.2
 pytest-cov~=5.0.0
 pytest-mock~=3.14.0
 pytest-ordering~=0.6
-ruff~=0.4.8
-twine~=5.1.0
+ruff~=0.5.1
+twine~=5.1.1
 types-PyYAML~=6.0.12
-types-setuptools~=70.0.0
+types-setuptools~=70.2.0
 wheel~=0.43.0
-sphinx-autoapi~=1.8.0
-sphinx-rtd-theme~=1.3.0
-sphinx~=5.3.0
-moto[s3,sts,iam,codebuild,secretsmanager,ssm]~=5.0.9
+moto[s3,sts,iam,codebuild,secretsmanager,ssm]~=5.0.11
 requests~=2.32.3
 werkzeug~=3.0.3
-urllib3~=1.26.18
\ No newline at end of file
+urllib3~=1.26.19
\ No newline at end of file
diff --git a/requirements-dev.txt b/requirements-dev.txt
index 6e26e1d9..a71885ab 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -2,21 +2,15 @@
 # This file is autogenerated by pip-compile with Python 3.8
 # by the following command:
 #
-#    pip-compile --output-file=requirements-dev.txt requirements-dev.in
+#    pip-compile --constraint=requirements.txt --output-file=requirements-dev.txt requirements-dev.in
 #
-alabaster==0.7.13
-    # via sphinx
-astroid==2.15.8
-    # via sphinx-autoapi
-awscli==1.31.13
+awscli==1.33.22
     # via -r requirements-dev.in
-babel==2.14.0
-    # via sphinx
 bleach==6.0.0
     # via readme-renderer
-boto3==1.33.13
+boto3==1.34.136
     # via moto
-botocore==1.33.13
+botocore==1.34.140
     # via
     #   awscli
     #   boto3
@@ -27,7 +21,7 @@ build==1.2.1
     #   check-manifest
     #   pip-tools
     #   pyroma
-certifi==2024.6.2
+certifi==2024.7.4
     # via
     #   -r requirements-dev.in
     #   requests
@@ -50,22 +44,16 @@ cryptography==42.0.4
 docutils==0.16
     # via
     #   awscli
-    #   myst-parser
     #   pyroma
     #   readme-renderer
-    #   sphinx
-    #   sphinx-rtd-theme
 exceptiongroup==1.2.1
     # via pytest
 idna==3.7
     # via requests
-imagesize==1.4.1
-    # via sphinx
 importlib-metadata==7.1.0
     # via
     #   build
     #   keyring
-    #   sphinx
     #   twine
 iniconfig==2.0.0
     # via pytest
@@ -75,49 +63,35 @@ jeepney==0.8.0
     # via
     #   keyring
     #   secretstorage
-jinja2==3.1.3
-    # via
-    #   moto
-    #   myst-parser
-    #   sphinx
-    #   sphinx-autoapi
+jinja2==3.1.4
+    # via moto
 jmespath==1.0.1
     # via
     #   boto3
     #   botocore
 keyring==23.9.3
     # via twine
-lazy-object-proxy==1.9.0
-    # via astroid
 markdown-it-py==2.2.0
-    # via
-    #   mdit-py-plugins
-    #   myst-parser
-    #   rich
+    # via rich
 markupsafe==2.1.5
     # via
     #   jinja2
     #   werkzeug
-mdit-py-plugins==0.3.5
-    # via myst-parser
 mdurl==0.1.2
     # via markdown-it-py
 more-itertools==9.1.0
     # via jaraco-classes
-moto[codebuild,iam,s3,secretsmanager,ssm,sts]==5.0.9
+moto[codebuild,iam,s3,secretsmanager,ssm,sts]==5.0.11
     # via -r requirements-dev.in
-mypy==1.10.0
+mypy==1.10.1
     # via -r requirements-dev.in
 mypy-extensions==1.0.0
     # via mypy
-myst-parser==0.18.1
-    # via -r requirements-dev.in
-packaging==23.2
+packaging==24.1
     # via
     #   build
     #   pyroma
     #   pytest
-    #   sphinx
 pip-tools==7.4.1
     # via -r requirements-dev.in
 pkginfo==1.9.6
@@ -132,12 +106,11 @@ pycparser==2.21
     # via cffi
 pydot==2.0.0
     # via -r requirements-dev.in
-pygments==2.17.2
+pygments==2.18.0
     # via
     #   pyroma
     #   readme-renderer
     #   rich
-    #   sphinx
 pyparsing==3.1.1
     # via pydot
 pyproject-hooks==1.0.0
@@ -158,19 +131,15 @@ pytest-mock==3.14.0
     # via -r requirements-dev.in
 pytest-ordering==0.6
     # via -r requirements-dev.in
-python-dateutil==2.8.2
+python-dateutil==2.9.0.post0
     # via
     #   botocore
     #   moto
-pytz==2024.1
-    # via babel
 pyyaml==6.0.1
     # via
     #   awscli
     #   moto
-    #   myst-parser
     #   responses
-    #   sphinx-autoapi
 readme-renderer==37.3
     # via twine
 requests==2.32.3
@@ -180,7 +149,6 @@ requests==2.32.3
     #   pyroma
     #   requests-toolbelt
     #   responses
-    #   sphinx
     #   twine
 requests-toolbelt==1.0.0
     # via twine
@@ -188,13 +156,13 @@ responses==0.23.3
     # via moto
 rfc3986==2.0.0
     # via twine
-rich==13.7.0
+rich==13.7.1
     # via twine
 rsa==4.7.2
     # via awscli
-ruff==0.4.8
+ruff==0.5.1
     # via -r requirements-dev.in
-s3transfer==0.8.2
+s3transfer==0.10.2
     # via
     #   awscli
     #   boto3
@@ -204,33 +172,6 @@ six==1.16.0
     # via
     #   bleach
     #   python-dateutil
-snowballstemmer==2.2.0
-    # via sphinx
-sphinx==5.3.0
-    # via
-    #   -r requirements-dev.in
-    #   myst-parser
-    #   sphinx-autoapi
-    #   sphinx-rtd-theme
-    #   sphinxcontrib-jquery
-sphinx-autoapi==1.8.4
-    # via -r requirements-dev.in
-sphinx-rtd-theme==1.3.0
-    # via -r requirements-dev.in
-sphinxcontrib-applehelp==1.0.2
-    # via sphinx
-sphinxcontrib-devhelp==1.0.2
-    # via sphinx
-sphinxcontrib-htmlhelp==2.0.0
-    # via sphinx
-sphinxcontrib-jquery==4.1
-    # via sphinx-rtd-theme
-sphinxcontrib-jsmath==1.0.1
-    # via sphinx
-sphinxcontrib-qthelp==1.0.3
-    # via sphinx
-sphinxcontrib-serializinghtml==1.1.5
-    # via sphinx
 tomli==2.0.1
     # via
     #   build
@@ -242,23 +183,19 @@ tomli==2.0.1
     #   pytest
 trove-classifiers==2024.2.22
     # via pyroma
-twine==5.1.0
+twine==5.1.1
     # via -r requirements-dev.in
 types-pyyaml==6.0.12.20240311
     # via
     #   -r requirements-dev.in
     #   responses
-types-setuptools==70.0.0.20240524
+types-setuptools==70.2.0.20240704
     # via -r requirements-dev.in
 typing-extensions==4.12.2
     # via
-    #   astroid
     #   mypy
-    #   myst-parser
     #   rich
-unidecode==1.3.8
-    # via sphinx-autoapi
-urllib3==1.26.18
+urllib3==1.26.19
     # via
     #   -r requirements-dev.in
     #   botocore
@@ -275,8 +212,6 @@ wheel==0.43.0
     # via
     #   -r requirements-dev.in
     #   pip-tools
-wrapt==1.16.0
-    # via astroid
 xmltodict==0.13.0
     # via moto
 zipp==3.15.0
diff --git a/requirements.txt b/requirements.txt
index 575dd9b3..11211b1e 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -12,13 +12,13 @@ aws-codeseeder==1.0.0
     # via seed-farmer (setup.py)
 binaryornot==0.4.4
     # via cookiecutter
-boto3==1.34.122
+boto3==1.34.140
     # via aws-codeseeder
-botocore==1.34.122
+botocore==1.34.140
     # via
     #   boto3
     #   s3transfer
-certifi==2024.6.2
+certifi==2024.7.4
     # via
     #   aws-codeseeder
     #   requests
@@ -75,9 +75,9 @@ packaging==24.1
     # via seed-farmer (setup.py)
 property-manager==3.0
     # via executor
-pydantic==2.7.3
+pydantic==2.8.2
     # via seed-farmer (setup.py)
-pydantic-core==2.18.4
+pydantic-core==2.20.1
     # via pydantic
 pygments==2.18.0
     # via rich
@@ -103,7 +103,7 @@ requests==2.32.3
     #   seed-farmer (setup.py)
 rich==13.7.1
     # via seed-farmer (setup.py)
-s3transfer==0.10.1
+s3transfer==0.10.2
     # via boto3
 six==1.16.0
     # via
@@ -119,7 +119,7 @@ typing-extensions==4.12.2
     #   pydantic
     #   pydantic-core
     #   seed-farmer (setup.py)
-urllib3==1.26.18
+urllib3==1.26.19
     # via
     #   botocore
     #   requests
diff --git a/scripts/validate.sh b/scripts/validate.sh
index 5d642f4f..3360e47c 100755
--- a/scripts/validate.sh
+++ b/scripts/validate.sh
@@ -52,8 +52,8 @@ echo "Validating: $(cd "$(dirname "$VALIDATE_PATH")"; pwd)/$(basename "$VALIDATE
 echo "Validating Formatting"
 if [[ $LANGUAGE == "python" ]]; then
     echo "Running ruff"
-    ruff format ${FIX_PATH}
-    ruff check --fix ${FIX_PATH}
+    ruff format --check ${VALIDATE_PATH}
+    ruff check --fix ${VALIDATE_PATH}
 elif [[ $LANGUAGE == "typescript" ]]; then
     echo "Checking prettier"
     npx prettier -c ${VALIDATE_PATH}
@@ -66,7 +66,6 @@ if [[ $SKIP_STATIC_CHECKS == "false" ]]; then
     echo "Validating Static Checks"
     if [[ $LANGUAGE == "python" ]]; then
         echo "Checking mypy"
-        #flake8 ${VALIDATE_PATH}
         mypy --ignore-missing-imports ${VALIDATE_PATH}
     else
         echo "ERROR Language: ${LANGUAGE}"
diff --git a/seedfarmer/cli_groups/_list_group.py b/seedfarmer/cli_groups/_list_group.py
index af349bf0..fbdd5c7e 100644
--- a/seedfarmer/cli_groups/_list_group.py
+++ b/seedfarmer/cli_groups/_list_group.py
@@ -779,8 +779,18 @@ def list_build_env_params(
 @list.command(
     name="schema",
     help="""Generate the schema that SeedFarmer uses for manifest objects.
+             Either the deployment manifest or module manifest schema
+             can be requested.
              This will return a formatted string of the schema that can
              be piped to a file. """,
 )
-def list_manifest_schema() -> None:
-    print(json.dumps(bi.get_manifest_schema(), indent=2))
+@click.option(
+    "--type",
+    "-t",
+    type=click.Choice(["deployment", "module"], case_sensitive=True),
+    help="Either 'deployment' or 'module' can be used, default is `deployment`",
+    required=False,
+    default="deployment",
+)
+def list_manifest_schema(type: str) -> None:
+    print(json.dumps(bi.get_manifest_schema(type=type), indent=2))
diff --git a/seedfarmer/mgmt/build_info.py b/seedfarmer/mgmt/build_info.py
index 27ebee48..5614af0a 100644
--- a/seedfarmer/mgmt/build_info.py
+++ b/seedfarmer/mgmt/build_info.py
@@ -18,7 +18,9 @@
 
 from boto3 import Session
 
+import seedfarmer.errors
 from seedfarmer.models.manifests._deployment_manifest import DeploymentManifest
+from seedfarmer.models.manifests._module_manifest import ModuleManifest
 from seedfarmer.services import _codebuild as codebuild
 
 _logger: logging.Logger = logging.getLogger(__name__)
@@ -40,5 +42,10 @@ def get_build_env_params(build_ids: List[str], session: Optional[Session] = None
     return dict(ChainMap(*list_of_envs)) if list_of_envs else None
 
 
-def get_manifest_schema() -> Dict[str, Any]:
-    return DeploymentManifest.model_json_schema()
+def get_manifest_schema(type: str) -> Dict[str, Any]:
+    if "deployment" == type.lower():
+        return DeploymentManifest.model_json_schema()
+    elif "module" == type.lower():
+        return ModuleManifest.model_json_schema()
+    else:
+        raise seedfarmer.errors.SeedFarmerException("Schema type selection not in [deployment, module]")
diff --git a/setup.py b/setup.py
index 38e1ca59..bfb8f580 100644
--- a/setup.py
+++ b/setup.py
@@ -48,7 +48,7 @@
         "aws-codeseeder~=1.0.0",
         "cookiecutter>=2.1,<2.7",
         "pyhumps>=3.5,<3.9",
-        "pydantic>=2.5.3,<2.8.0",
+        "pydantic>=2.8.2,<2.9.0",
         "executor~=23.2",
         "typing-extensions>=4.6.3",
         "rich>=12.4,<13.8",
@@ -58,7 +58,7 @@
         "gitignore-parser~=0.1.2",
         "pyyaml~=6.0.1",
         "urllib3~=1.26.17",
-        "certifi>=2023.7.22,<2024.7.0",
+        "certifi>=2024.7.4,<2024.8.0",
         "packaging>=23.2,<25.0",
     ],
     entry_points={"console_scripts": ["seedfarmer = seedfarmer.__main__:main"]},


Test patch:
diff --git a/test/unit-test/test_mgmt_build_info.py b/test/unit-test/test_mgmt_build_info.py
index a98beb9a..346d82f4 100644
--- a/test/unit-test/test_mgmt_build_info.py
+++ b/test/unit-test/test_mgmt_build_info.py
@@ -19,6 +19,7 @@
 import pytest
 from moto import mock_aws
 
+import seedfarmer.errors
 import seedfarmer.mgmt.build_info as bi
 from seedfarmer.services._service_utils import boto3_client
 from seedfarmer.services.session_manager import SessionManager
@@ -66,5 +67,18 @@ def test_get_build_params(mocker):
 
 @pytest.mark.mgmt
 @pytest.mark.mgmt_build_info
-def test_validate_group_parameters():
-    bi.get_manifest_schema()
+def test_get_deployment_schema():
+    bi.get_manifest_schema(type="deployment")
+
+
+@pytest.mark.mgmt
+@pytest.mark.mgmt_build_info
+def test_get_module_schema():
+    bi.get_manifest_schema(type="module")
+
+
+@pytest.mark.mgmt
+@pytest.mark.mgmt_build_info
+def test_get_module_schema_error():
+    with pytest.raises(seedfarmer.errors.SeedFarmerException):
+        bi.get_manifest_schema(type="somethingcrazy")