Skip to content

Conversation

@aliciaknauer
Copy link
Contributor

Description

The two functions set_timber_moisture_class and set_timber_service_conditions are implemented here. Since there are some issues with setting the right code, a thorough instruction can be found in every test file on how to test. Because of this reason the pytest.skipif function was added, so it doesn't interfere with existing tests.

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation update

How Has This Been Tested?

Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

  • Unit Tests
  • Attached examples

Test Configuration:

  • RFEM / RSTAB version: 6.02.0060
  • Python version: 3.11

Checklist:

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • Any dependent changes have been merged and published in downstream modules

@pull-request-quantifier-deprecated

This PR has 393 quantified lines of changes. In general, a change size of upto 200 lines is ideal for the best PR experience!


Quantification details

Label      : Large
Size       : +393 -0
Percentile : 79.3%

Total files changed: 7

Change summary by file extension:
.py : +393 -0

Change counts above are quantified counts, based on the PullRequestQuantifier customizations.

Why proper sizing of changes matters

Optimal pull request sizes drive a better predictable PR flow as they strike a
balance between between PR complexity and PR review overhead. PRs within the
optimal size (typical small, or medium sized PRs) mean:

  • Fast and predictable releases to production:
    • Optimal size changes are more likely to be reviewed faster with fewer
      iterations.
    • Similarity in low PR complexity drives similar review times.
  • Review quality is likely higher as complexity is lower:
    • Bugs are more likely to be detected.
    • Code inconsistencies are more likely to be detected.
  • Knowledge sharing is improved within the participants:
    • Small portions can be assimilated better.
  • Better engineering practices are exercised:
    • Solving big problems by dividing them in well contained, smaller problems.
    • Exercising separation of concerns within the code changes.

What can I do to optimize my changes

  • Use the PullRequestQuantifier to quantify your PR accurately
    • Create a context profile for your repo using the context generator
    • Exclude files that are not necessary to be reviewed or do not increase the review complexity. Example: Autogenerated code, docs, project IDE setting files, binaries, etc. Check out the Excluded section from your prquantifier.yaml context profile.
    • Understand your typical change complexity, drive towards the desired complexity by adjusting the label mapping in your prquantifier.yaml context profile.
    • Only use the labels that matter to you, see context specification to customize your prquantifier.yaml context profile.
  • Change your engineering behaviors
    • For PRs that fall outside of the desired spectrum, review the details and check if:
      • Your PR could be split in smaller, self-contained PRs instead
      • Your PR only solves one particular issue. (For example, don't refactor and code new features in the same PR).

How to interpret the change counts in git diff output

  • One line was added: +1 -0
  • One line was deleted: +0 -1
  • One line was modified: +1 -1 (git diff doesn't know about modified, it will
    interpret that line like one addition plus one deletion)
  • Change percentiles: Change characteristics (addition, deletion, modification)
    of this PR in relation to all other PRs within the repository.


Was this comment helpful? 👍  :ok_hand:  :thumbsdown: (Email)
Customize PullRequestQuantifier for this repository.

member_sets (str): Assigned Member Sets
surfaces (str): Assigned Surfaces
surface_sets (str): Assigned Surface Sets
moisture_class (enum): Timber Moisture Class
Copy link
Member

Choose a reason for hiding this comment

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

Description should be Timber Moisture Class Type Enumeration

surfaces (str): Assigned Surfaces
surface_sets (str): Assigned Surface Sets
standard (int): Code Number
moisture_service_condition (enum): Timber Service Condition
Copy link
Member

Choose a reason for hiding this comment

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

description should be Timber Moisture Service Condition Type Enumeration

'''
OFFSET_TYPE_XY, OFFSET_TYPE_XZ, OFFSET_TYPE_YZ = range(3)

class TimberMoistureClassMoistureClass(Enum):
Copy link
Member

Choose a reason for hiding this comment

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

TimberMoistureClassType is better class name

Copy link
Contributor

Choose a reason for hiding this comment

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

I'm with Heet on this one.

'''
TIMBER_MOISTURE_CLASS_TYPE_1, TIMBER_MOISTURE_CLASS_TYPE_2, TIMBER_MOISTURE_CLASS_TYPE_3 = range(3)

class TimberServiceConditionsMoistureServiceCondition(Enum):
Copy link
Member

@heetrojivadiya heetrojivadiya May 11, 2023

Choose a reason for hiding this comment

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

TimberMoistureServiceConditionType is better class name

Copy link
Contributor

Choose a reason for hiding this comment

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

I'm with Heet on this one.

surface_sets (str): Assigned Surface Sets
standard (int): Code Number
moisture_service_condition (enum): Timber Service Condition
temperature (enum): Timber Service Conditions Temperature
Copy link
Member

Choose a reason for hiding this comment

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

it would be good to add Enumeration at the end of description for variable type (enum)

Copy link
Contributor

@OndraMichal OndraMichal left a comment

Choose a reason for hiding this comment

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

Hi,
please look at branch MichalOndrej-timberServicesAndMoisture and carefully compare the tests. There is a way to execute the tests properly even if the setters are not in the WS.

clientObject.treatment = treatment_csa

# Service Condition if Standard NDS(USA) - Service Moisture Conditions, Treatment and Temperature
if standard == 6579:
Copy link
Contributor

Choose a reason for hiding this comment

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

'elif' instead of 'if' should be used. Same with line 91. These statements are mutually exclusive.

clientObject.surface_sets = ConvertToDlString(surface_sets)

# Service Condition if Standard CSA - Moisture Service Conditions and Treatment
if standard == 6336:
Copy link
Contributor

Choose a reason for hiding this comment

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

Common code could be separated to enhance readability and maintainability.

parameters = {
    "current_standard_for_combination_wizard": standard,
    "activate_combination_wizard_and_classification": True,
    "activate_combination_wizard": True,
    "result_combinations_active": True,
    "result_combinations_parentheses_active": False,
    "result_combinations_consider_sub_results": False,
    "combination_name_according_to_action_category": False}),

# Service Condition if Standard CSA - Moisture Service Conditions and Treatment
    if standard == 6336:
        LoadCasesAndCombinations(params = parameters, ....

'''
OFFSET_TYPE_XY, OFFSET_TYPE_XZ, OFFSET_TYPE_YZ = range(3)

class TimberMoistureClassMoistureClass(Enum):
Copy link
Contributor

Choose a reason for hiding this comment

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

I'm with Heet on this one.

'''
TIMBER_MOISTURE_CLASS_TYPE_1, TIMBER_MOISTURE_CLASS_TYPE_2, TIMBER_MOISTURE_CLASS_TYPE_3 = range(3)

class TimberServiceConditionsMoistureServiceCondition(Enum):
Copy link
Contributor

Choose a reason for hiding this comment

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

I'm with Heet on this one.

@@ -0,0 +1,70 @@
from RFEM.initModel import Model, clearAttributes, deleteEmptyAttributes, ConvertToDlString
from RFEM.enums import TimberMoistureClassMoistureClass
from RFEM.LoadCasesAndCombinations.loadCasesAndCombinations import LoadCasesAndCombinations
Copy link
Contributor

Choose a reason for hiding this comment

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

Unused import.

@OndraMichal OndraMichal merged commit f7f8142 into main May 23, 2023
@OndraMichal OndraMichal deleted the knauer-timberserviceandmoisture branch May 23, 2023 05:10
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.

4 participants