Skip to content

Conversation

@samredai
Copy link
Contributor

This adds black and isort as well as an auto format command tox -e format that formats the entire project. The only direct changes I made here is to the tox.ini file and the rest of the diff is from running the auto-formatter.

@samredai samredai requested a review from jun-he October 27, 2021 00:38
from iceberg.utils.bin_packing import PackingIterator


@pytest.mark.parametrize("splits, lookback, split_size, open_cost", [
Copy link
Contributor

Choose a reason for hiding this comment

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

I am usually hesitated to add any auto-formatting functionality to a project, because sometimes the formatting is quite unnecessary, such as here. But I don't know what's the convention on python side, maybe this is desirable. Any thoughts? @jun-he

Copy link
Contributor Author

Choose a reason for hiding this comment

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

The consistency is nice because individual styles in python can vary wildly. The auto sorting of imports is also super helpful since it guarantees imports to be neatly organized as stdlib, third party, and package imports, each section separated by a single space. Since we recommend auto formatters on the java side and have style checks, has that been a net positive?

Copy link
Contributor

Choose a reason for hiding this comment

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

Cool, I am good with that then as long as it follows the general guideline of the language!

Copy link
Contributor

Choose a reason for hiding this comment

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

Yeah black is definitely the standard in the python community these days. I'm also generally usually opposed but in this case, I think it makes sense.

Admittedly, the choices it makes are definitely kind of strange to me at times. But I do recognize that it's the standard formatter for the language and is generally used as a best practice.

Copy link
Collaborator

Choose a reason for hiding this comment

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

👌 I feel it is good to have it here to help us to keep the code consistent. We can tune the settings to ensure it does the right thing.

@nssalian
Copy link
Contributor

Thanks for adding this @samredai. I've been doing black formatting locally. :)

@nssalian
Copy link
Contributor

nssalian commented Oct 28, 2021

If @jun-he has no objections to the PR, we should merge it to help the python PRs and maintain a consistent formatting. LGTM otherwise

Copy link
Contributor

@kbendick kbendick 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. Thanks for doing this.

from iceberg.utils.bin_packing import PackingIterator


@pytest.mark.parametrize("splits, lookback, split_size, open_cost", [
Copy link
Contributor

Choose a reason for hiding this comment

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

Yeah black is definitely the standard in the python community these days. I'm also generally usually opposed but in this case, I think it makes sense.

Admittedly, the choices it makes are definitely kind of strange to me at times. But I do recognize that it's the standard formatter for the language and is generally used as a best practice.

python/tox.ini Outdated

[flake8]
ignore = E501,W503
ignore = E501,E721,I100,I101,I202,W503
Copy link
Collaborator

Choose a reason for hiding this comment

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

nit: current build passed without ignoring E721,I100,I101,I202. We may consider to add those if needed in the future and keep it as is in this PR.

Copy link
Contributor Author

@samredai samredai Oct 29, 2021

Choose a reason for hiding this comment

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

The I ones are the suggested ones to prevent conflicting with isort and should also include I201 but I totally agree, let's add them when once they cause the tests to fail. Updating now.

EDIT: @jun-he I just ran tox and it did fail with I100 and I202 so I kept those in and removed the other two. Did you include the isort linting when you tested it out?

Copy link
Collaborator

Choose a reason for hiding this comment

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

SG, thanks!

@samredai
Copy link
Contributor Author

I'll wait for PR #3423 to get merged and I'll rebase this then rerun tox -e format

@rdblue
Copy link
Contributor

rdblue commented Oct 31, 2021

@samredai, since this is ready to go and #3423 requires changes is it okay to merge this? What is the benefit of waiting for #3423?

@samredai
Copy link
Contributor Author

@rdblue I think merging this makes sense since #3423 needs to remove 3.6. I think the rest of what's there is additive i.e. adding mypy. So we can merge this and rebase the other PR. Thanks!

@rdblue rdblue merged commit 16ea3b5 into apache:master Oct 31, 2021
@rdblue
Copy link
Contributor

rdblue commented Oct 31, 2021

Thanks, @samredai!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants