Skip to content

Conversation

@arandito
Copy link
Contributor

@arandito arandito commented Nov 4, 2025

Description

This PR removes __init__.py file generation in non-package directories such as docs/*.

Examples

Bedrock Runtime

Before:

docs
├── client
│   ├── __init__.py
│   ├── apply_guardrail.rst
│   └── ...
├── models
│   ├── __init__.py
│   ├── AccessDeniedException.rst
│   └── ...

After:

docs
├── client
│   ├── apply_guardrail.rst
│   └── ...
├── models
│   ├── AccessDeniedException.rst
│   └── ...

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

@arandito arandito requested a review from a team as a code owner November 4, 2025 16:46
Changes made by these plugins only apply for the duration of the operation
execution and will not affect any other operation invocations.
""");
execution and will not affect any other operation invocations.""");
Copy link
Contributor

Choose a reason for hiding this comment

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

This seems a little strange for the fix. Is it because this adds the newline we need but our actual writer is also always appending a newline so we get two? I think this issue was affecting multiple places. I wonder if we should be doing something more like trimming extra newlines from the end of the final docstring (or not appending them to the end).

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes there are a couple places where we add two newlines on accident by using write instead of writeInline and then passing in a text block which adds its own newline.

I pushed up a commit that adds a helper method to PythonWriter that removes all trailing whitespaces. We'll call it and then add a single newline before writing the closing """ in writeDocs(). This normalizes all docstrings and prevents a trailing blank line.

This fixed all of the issues I've seen in models.py and client.py. I also made the ConfigGenerator use writeDocs() (it didn't previously) and it resolved the blank line issue for its constructor as well.

I still fixed the source of the double newlines but the helper method will help prevent this issue from reoccurring in the future.

This is the diff for the Transcribe client with these codegen changes.

@arandito arandito changed the title Restrict init file gen to package directories Restrict init file gen to package directories and fix docstring blank lines Nov 5, 2025
Copy link
Contributor

@nateprewitt nateprewitt left a comment

Choose a reason for hiding this comment

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

Looks good, thanks @arandito!

@arandito arandito merged commit ef085ec into smithy-lang:develop Nov 6, 2025
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants