-
Notifications
You must be signed in to change notification settings - Fork 171
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Configure isort and apply rules #535
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
RHammond2
approved these changes
Nov 21, 2022
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for revisiting the autoformatting! I'm not much a stickler for any of the changes you've made, and therefore have no pushback so long as there is a consistent style. I have a couple of clarifying comments below.
force_grid_wrap=3
: I agree with this one quite stronglymulti_line_output=3
: This is also my preferred styling to keep things easy to read and consistent with things I like about PEP8combine_as_imports=true
: This is also my preferred styling to keep things as tidy as possibleinclude_trailing_comma=false
: Not my preferred method, but I really don't have strong enough opinions to make a counterargument. This more or less falls in the category of things I like about PEP8, but isn't too high on the priority list.line_length=88
: We could easily do 100, and this setting can modified in all the linters/formatters that we use or are considering, so feel free to bump it to 100. We use 122 for OpenOA, so I'm happy to take your lead on that change (and I've been leaning towards 100 myself recently).- sorting: I like the cascade of length sort, but it's a highly personal aesthetic choice. That said, the alphabetic sorting makes a lot of sense and am perfectly fine with this change too.
Thanks @RHammond2 |
rafmudaf
added a commit
that referenced
this pull request
Mar 7, 2023
* Speed up angle wrap functions and improve API (#505) * replace wrap functions with faster implementations * slight change to unit test as 180 -> -180 * Update doc string to reflect accurate return type * Use executable book project for documentation * Add a gh-pages deploy action * Add more content * Add a logo * Add a brief description of each example List examples in numeric order Small cleanup to Examples listing * Add initial API documentation * Add input file reference * Use autodoc and autosummary instead of autoapi Remove TOC from intro page * Locally install the current repo * Configure autodocs better Include undocumented objects as well as all members of an object Add all default autodoc options to config * Link to API docs in references to Python objects * Git-ignore docs build * Add instructions for building documentation And other minor changes * Add Google Analytics tracker * Update README with documentation links * List floris packages in API docs * Enforce building docs from the develop branch * Add a method to show mpl plots This means users don’t have to also import matplotlib.pyplot as plt only to run plt.show() * Update documentation references list (#519) * initial entry for cumulative curl * copy in v2 references * add cc references * add cc refs * replace references to zrefs with references.bib * API improvements * Add a subtract overload to CutPlane Also replaces another method CutPlane.subtract to do something similar. That one made assumptions about the order and expected operations. The new subtract method expects all preprocessing to be down outside of the class. * Fix incorrect yaw angles in fi.calculate_wake In subsequent function calls, the yaw angles are not reset when they are all zeros. This means that if initially the yaw angles are non-zero and then they’re all-zero, the non-zero yaw settings are retained. * Remove requirement to use codecov token to upload reports (#532) * remove potentially error causing line * Update codecov upload action to v3 Co-authored-by: Rafael M Mudafort <rafael.mudafort@nrel.gov> * Update API in examples And clean up examples imports * Use standard conventions in argument case minSpeed, maxSpeed => min_speed, max_speed * Add function to label turbines on CutPlane plots * Rotate turbine lines and ID annotations with wind * Configure isort and apply rules (#535) * Configure isort and apply to floris.simulation * Apply isort to floris.tools * Apply isort to shared modules * Apple isort to examples and tests * Increase line length to 100 * Add isort description in docs * Add weights to AEP wind rose function (#541) * Add weights to get_farm_AEP_wind_rose_class * updating layout passed to floris_interface in example * Remove typecast to int for turbine weighting --------- Co-authored-by: bayc <christopher.j.bay@gmail.com> Co-authored-by: Rafael M Mudafort <rafael.mudafort@nrel.gov> * Add parallel computing interface for farm simulation and yaw optimization (#555) * Add parallel computing class * Simplify and lighten the way floris information is passed to single-core functions * Remove unc_options and only pass unc_pmfs internally: all information already contained in that variable. * Update how wind directions are split up * Add example for parallel computing * Introduce separate variable for number of workers * Expand PCI capabilities with reinitialize, copy. This is needed for some FLASC functionalities like precalculating table of floris solutions * Allow user to reinitialize atmospheric conditions but then also reload how atmospheric conditions are divided by cores * Add toggle to silence print statements from Serial Refine and set default in parallel computing. Namely, with 16 workers, you will see 16 times these print statements. This only becomes more with more workers and quickly clutters up the log file. * Add the option to propagate flow field information from workers to main florisinterface object * Add parallel processing example * Remove duplicate example listing --------- Co-authored-by: Rafael M Mudafort <rafael.mudafort@nrel.gov> * Feature/update layout vis (#496) * Update layout visualization functions * Provide an example of layout visualization * list 23_visaluze_layout in examples.md --------- Co-authored-by: Rafael M Mudafort <rafmudaf@gmail.com> * Add ruff configuration * Fix all E and F codes F are pyflakes E are pycodestyle https://github.com/charliermarsh/ruff#pyflakes-f Note: line length errors are not excluded here * Line length corrections - floris.simulation Max line length setting is 100 * Line length corrections - floris.tools * Line length corrections - floris/ * Line length corrections - tests * Line length corrections - examples * Line length corrections - profiling * Fix W codes Here, it’s only adding a blank line at the end * Fix C4-comprehensions codes * Fix I codes Import formatting. Ruff is not yet at parity with isort, but it is pretty close. * Include Ruff in CI Use pre-commit with Actions Also update the developer dependencies * Add Ruff usage documentation in developer guide * Enable and fix pre-commit formatting hooks (#567) * Enable and fix pre-commit formatting hooks * Add pre-commit instructions to developer documentation * Support heterogeneous wind direction definition via FlorisInterface.reinitialize (#453) * Provide ability to pass het_map to reinitialize * re-order reinitialize inputs * Add a new example * Add an error if het map doesnt match on dimensions to wd * Add error example to example * updating format of example * Add indication final error is on purpose * line length check * Comment out forced error * Add example 16b to docs * use n directions instead of x * Add comment --------- Co-authored-by: Paul <paul.fleming@nrel.gov> Co-authored-by: bayc <christopher.j.bay@gmail.com> * Infrastructure improvements (#569) * Preserve isort formatting - run it last Also enables splitting imports on trailing comma. If a multi-line import statement is short and includes a trailing comma, it will not be refactored into a single line. * Use token for codecov upload * Reduce computational load in an example Initially, this example slowed the Actions workflow by 2x. This commit reduces the amount of work in the example to speed up the Actions workflow. * Restrict PyPI deploy workflow to NREL/floris * Run tests regardless of linting results * Fail the linter * Revert "Fail the linter" This reverts commit d7bfa62. * Add virtual turbine plotting method (#418) * Add func calculate_horizontal_plane_with_turbines * Add demo example * Correct sort order * Improve resolution and force matching range * fix append * Remove calculate with turbine from floris interfa * Delete turbine scan example * Add calc with turbines to visualizations.py * Add vis with turbine to visualization example * Support for yaw angles * Fix handling of yaw angles * fix outdated layout keyword * ruff linting * test pre-commit * test pre-commit * Pre-commit fixes * Fixed doc errors * Clean out commented code * Preserve isort formatting - run it last Also enables splitting imports on trailing comma. If a multi-line import statement is short and includes a trailing comma, it will not be refactored into a single line. * Use token for codecov upload * Reduce computational load in an example Initially, this example slowed the Actions workflow by 2x. This commit reduces the amount of work in the example to speed up the Actions workflow. * Restrict PyPI deploy workflow to NREL/floris * Add info on plotting method * Use coarse mesh for turbine plotting --------- Co-authored-by: Rafael M Mudafort <rafmudaf@gmail.com> * Add linear wind condition upsampling method to WindRose (#544) * Add LinearNDInterpolant to wind_rose * Change from returning interpolant to immediately interpolating to values * Add example to docstring --------- Co-authored-by: Paul <paul.fleming@nrel.gov> Co-authored-by: Rafael M Mudafort <rafmudaf@gmail.com> * Improve the documentation navigation menu and organization (#570) * minor formatting updates * start overhaul of docuemntation structure * convert input reference to markdown for consistency * add a serious placeholder for theory and update the example input file * remove my notes * add top-level workflow description for getting started * add missing period * Add intro notebook * Add developer section to menu * Bug fix: fix toc reference to placeholder page * Warning fix: use alternate cross reference form --------- Co-authored-by: Rafael M Mudafort <rafmudaf@gmail.com> * Feature: External Turbine Library (#568) * add the external library functionality * update tests for new functionality * enable future typing * fix extra white space * remove extra parameters * add missing test file * fix name bug and address #513 * get tests passing and ensure dictionary entries still work * address Raf's comment * add _path to turbine library references * update typo, FI, and tests for _path * fix error on case of using turbine dictionary and missing air density * add additional test for the unique turbine check * Specify coverage file in Codecov upload action * Add a link to Discussions from Issues * Add helpful info to GitHub Issue and PR templates (#597) --------- Co-authored-by: paulf81 <paul.fleming@nrel.gov> Co-authored-by: Rob Hammond <13874373+RHammond2@users.noreply.github.com> Co-authored-by: bayc <christopher.j.bay@gmail.com> Co-authored-by: Bart Doekemeijer <bart.doekemeijer@shell.com> Co-authored-by: pjireland <pireland@windesco.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Feature or improvement description
This pull request configures isort and applies the rules to all included modules.
Here's my opinions and reasoning for certain configurations.
force_grid_wrap = 3
: Forces that any from-imports with more than three symbols are wrapped. This one is important to me because I like the ability to easily edit or comment out items in a list without destroying the syntax of the list. Three is somewhat arbitrary since the default is two, but intuitively it feels right. With two imports, its pretty straightforward to add a comment mid-line without completely destroying the line. It's also worth pointing out that this preference has more to do with Python syntax style like using containers in code rather than import-styles. However, the import statement syntax should match the code syntax.multi_line_output = 3
: This is consistent with the common form for indented containers in Python code.combine_as_imports = true
: I find it helpful to quickly see all of the renamed packages since this provides additional context for the rest of the file. For example,import floris.tools.visualization as wakeviz
explains quickly what iswakeviz
in the code, so it is helpful to see all of these up front and easily parsable.include_trailing_comma = false
: Personal preference, I'm not a fan of the trailing comma but this is highly subjective.line_length = 88
: My preference is longer lines like 100, but 88 seems to be the de facto standard.order_by_type = false
: This order imports by the perceived type based on letter case in a symbol's name (i.e.Turbine
is a class butturbine
is a module). Since FLORIS does not strictly adhere to this, I've disabled it.Related issue, if one exists
Impacted areas of the software
Most files but only the import statements.
Additional supporting information
This does not yet enforce the ordering via git or GitHub. It is up to the developers to run isort. However, an automated system will be put in place in the future.