From f6ac9dbecc29d70366bdcea6b0055fe042906e5f Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Thu, 8 May 2025 20:18:51 -0400 Subject: [PATCH 1/2] Update Scripting Toolkit markdown docs --- .../changelog.md | 134 +++----- .../copyright.md | 2 +- .../getting_started/pip.md | 60 +++- .../index.md | 2 + .../04_Process_datasets_and_import.md | 6 +- .../06_Calculate_statistics_for_records.md | 16 +- ..._Calculate_statistics_for_records_12_0.png | Bin 34095 -> 34340 bytes .../12_Preparing_data_for_Power_BI.md | 6 +- .../samples/foundation/04_Deleting_records.md | 4 +- .../05_Functional_data_and_importing_data.md | 4 +- ...06_Importing_and_exporting_tabular_data.md | 4 +- .../samples/foundation/07_Modified_date.md | 2 +- .../09_Modifying_record_link_groups.md | 2 +- .../foundation/11_Get_unit_conversions.md | 290 +++++++++--------- .../samples/streamlined/05_Edit_Data.md | 14 +- .../samples/streamlined/06_Create_Records.md | 20 +- .../streamlined/07_Import_Functional_Data.md | 4 +- .../streamlined/08_Create_Functional_Data.md | 2 +- .../streamlined/09_Edit_Tabular_Data.md | 2 +- .../11_Add_Files_Pictures_and_Hyperlinks.md | 2 +- .../streamlined/12_Add_Point_Range_Data.md | 2 +- .../13_Add_Date_Integer_and_Logical_Data.md | 4 +- .../15_Use_Exporters_for_FEA_Export.md | 2 +- .../samples/streamlined/16_Link_Records.md | 4 +- 24 files changed, 298 insertions(+), 290 deletions(-) diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/changelog.md b/2025R2/scripting-toolkit-dev-portal-25r2/changelog.md index 108942540f..8e62bd9ae8 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/changelog.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/changelog.md @@ -4,61 +4,31 @@ - + -## Release notes - -This section describes the key features introduced or improved in MI Scripting Toolkit 4.2. - - - -### Highlights - - - -#### Highlight 1 +## MI Scripting Toolkit 4.2 release notes -##### Enhancements - - - -##### Backwards incompatible API changes - - - -#### Highlight 2 +### Enhancements - - -##### Enhancements - - - -##### Backwards incompatible API changes - - - -### Streamlined API enhancements and bug fixes - - - -#### Enhancements - -* [`Record.find_parent()`](api/record.md#GRANTA_MIScriptingToolkit.granta.mi_record_classes.Record.find_parent) no longer raises an [`IndexError`](https://docs.python.org/3/library/exceptions.html#IndexError) if the user does not have sufficient permissions - to access the parent record. It now raises a [`PermissionError`](https://docs.python.org/3/library/exceptions.html#PermissionError). -* Range cell data returned by [`AttributeTabular.value`](api/attribute-values.md#GRANTA_MIScriptingToolkit.granta.mi_attribute_value_classes.AttributeTabular.value) now includes additional items, `low_is_inclusive` - and `high_is_inclusive`, to describe whether the low and high value are included in the range. * [`SearchCriterion`](api/supporting.md#GRANTA_MIScriptingToolkit.granta.mi_meta_classes.SearchCriterion) now accepts [`RecordColor`](api/constants.md#GRANTA_MIScriptingToolkit.granta.mi_constants.RecordColor) and [`RecordType`](api/constants.md#GRANTA_MIScriptingToolkit.granta.mi_constants.RecordType) as criterion values for searches on record properties [`RecordProperties.color`](api/constants.md#GRANTA_MIScriptingToolkit.granta.mi_attribute_classes.RecordProperties.color) [`RecordProperties.type`](api/constants.md#GRANTA_MIScriptingToolkit.granta.mi_attribute_classes.RecordProperties.type) respectively. +* Range cell data returned by [`AttributeTabular.value`](api/attribute-values.md#GRANTA_MIScriptingToolkit.granta.mi_attribute_value_classes.AttributeTabular.value) now includes additional items, `low_is_inclusive` + and `high_is_inclusive`, to describe whether the low and high value are included in the range. +* [`Record.find_parent()`](api/record.md#GRANTA_MIScriptingToolkit.granta.mi_record_classes.Record.find_parent) no longer raises an [`IndexError`](https://docs.python.org/3/library/exceptions.html#IndexError) if the user does not have sufficient permissions + to access the parent record. It now raises a [`PermissionError`](https://docs.python.org/3/library/exceptions.html#PermissionError). * Classes [`AttributeDefinitionShortText`](api/attribute-definitions.md#GRANTA_MIScriptingToolkit.granta.mi_attribute_classes.AttributeDefinitionShortText) and [`AttributeDefinitionInteger`](api/attribute-definitions.md#GRANTA_MIScriptingToolkit.granta.mi_attribute_classes.AttributeDefinitionInteger) now include the `.is_unique` property which indicates whether the attribute values are required to be unique. -#### Bug fixes +### Bug fixes +* [`Table.bulk_fetch_data_revision_history()`](api/table.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Table.bulk_fetch_data_revision_history) no longer raises a [`TypeError`](https://docs.python.org/3/library/exceptions.html#TypeError) when `parallelize=True` and the + table contains meta-attributes. +* Using [`Table.set_display_unit()`](api/table.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Table.set_display_unit) for attributes with a temperature based unit now correctly results in the data + being exported in the requested unit. * [`AttributeTabular`](api/attribute-values.md#GRANTA_MIScriptingToolkit.granta.mi_attribute_value_classes.AttributeTabular) now correctly loads exported data in cases where the tabular attribute includes columns unavailable to the user, regardless of the order in which columns are defined. * [`AttributeTabular.column_types`](api/attribute-values.md#GRANTA_MIScriptingToolkit.granta.mi_attribute_value_classes.AttributeTabular.column_types) now returns a list with the expected length in cases where the tabular @@ -68,47 +38,49 @@ This section describes the key features introduced or improved in MI Scripting T directly is no longer permitted. Instead, the [`AttributeTabular.add_row()`](api/attribute-values.md#GRANTA_MIScriptingToolkit.granta.mi_attribute_value_classes.AttributeTabular.add_row) and [`AttributeTabular.delete_row()`](api/attribute-values.md#GRANTA_MIScriptingToolkit.granta.mi_attribute_value_classes.AttributeTabular.delete_row) methods should be used to change the number of rows in the tabular attribute value. +* Calling [`AttributeTabular.load()`](api/attribute-values.md#GRANTA_MIScriptingToolkit.granta.mi_attribute_value_classes.AttributeTabular.load) on an empty [`AttributeTabular`](api/attribute-values.md#GRANTA_MIScriptingToolkit.granta.mi_attribute_value_classes.AttributeTabular) now correctly initialises the value. + This fixes an issue where the tabular attribute `__repr__` incorrectly included `not loaded` after calling + [`AttributeTabular.load()`](api/attribute-values.md#GRANTA_MIScriptingToolkit.granta.mi_attribute_value_classes.AttributeTabular.load). * Editing existing tabular data no longer discards inclusiveness information of range cells. * [`ReleaseStateFetcher.fetch_release_states()`](api/bulk-operators.md#GRANTA_MIScriptingToolkit.granta.mi_bulk_utilities.ReleaseStateFetcher.fetch_release_states) and [`Session.bulk_fetch_release_states()`](api/session.md#GRANTA_MIScriptingToolkit.granta.mi.Session.bulk_fetch_release_states) now correctly populate the release state of versioned records that are not the latest version available to the user. * [`ReleaseStateFetcher.fetch_release_states()`](api/bulk-operators.md#GRANTA_MIScriptingToolkit.granta.mi_bulk_utilities.ReleaseStateFetcher.fetch_release_states) and [`Session.bulk_fetch_release_states()`](api/session.md#GRANTA_MIScriptingToolkit.granta.mi.Session.bulk_fetch_release_states) now correctly populate the release state of records with identical guids in different databases. -* Calling [`AttributeTabular.load()`](api/attribute-values.md#GRANTA_MIScriptingToolkit.granta.mi_attribute_value_classes.AttributeTabular.load) on an empty [`AttributeTabular`](api/attribute-values.md#GRANTA_MIScriptingToolkit.granta.mi_attribute_value_classes.AttributeTabular) now correctly initialises the value. - This fixes an issue where the tabular attribute `__repr__` incorrectly included `not loaded` after calling - [`AttributeTabular.load()`](api/attribute-values.md#GRANTA_MIScriptingToolkit.granta.mi_attribute_value_classes.AttributeTabular.load). -* Using [`Table.set_display_unit()`](api/table.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Table.set_display_unit) for attributes with a temperature based unit now correctly results in the data - being exported in the requested unit. -* [`Table.bulk_fetch_data_revision_history()`](api/table.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Table.bulk_fetch_data_revision_history) no longer raises a [`TypeError`](https://docs.python.org/3/library/exceptions.html#TypeError) when - `parallelize=True` and the table contains meta-attributes. -#### Examples +### Examples - +There have been no changes to example scripts in MI Scripting Toolkit 4.2. -### Foundation API enhancements and bug fixes + -* [`GetRecordAttributesByRefRequest.tabularDataSettings`](foundation/api.md#GRANTA_MIScriptingToolkit.GetRecordAttributesByRefRequest.GetRecordAttributesByRefRequest.tabularDataSettings) added to control how tabular attributes are exported. -* Additional logging has been added to assist in debugging scripts, this is available via the GDL.http logger. -* Logging has been reorganised to allow more granular control of message logging, existing request and - response log messages are now available via the GDL.core logger. +### Backwards incompatible API changes - +There are no known backwards-incompatible changes in MI Scripting Toolkit 4.2. -### Backwards incompatible API changes + - +### Foundation API changes -#### Streamlined API +* Additional logging has been added to assist in debugging scripts, this is available via the `GDL.http` logger. +* Logging has been reorganised to allow more granular control of message logging, existing request and + response log messages are now available via the `GDL.core` logger. +* [`GetRecordAttributesByRefRequest.tabularDataSettings`](foundation/api.md#GRANTA_MIScriptingToolkit.GetRecordAttributesByRefRequest.GetRecordAttributesByRefRequest.tabularDataSettings) added to control how tabular attributes are exported. -### Known issues +## Known issues * If an attribute is exported with the [`Table.bulk_fetch()`](api/table.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Table.bulk_fetch) method with `include_binary_data=False`, subsequent values returned by the `AttributePicture.mime_file_type` property will always return `image/png`, regardless of the actual image format. The header returned when accessing the URL is unaffected and should be used instead. +* The behavior of [`Table.get_record_by_lookup_value()`](api/table.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Table.get_record_by_lookup_value) when a non-unique lookup value is provided is dependent on + the Granta MI version. In Granta MI 2025 R2 and later, if multiple matches are detected, no results are returned. In + earlier Granta MI versions, an exception is raised. +* If an attribute is removed from the Granta MI database after the parent [`Database`](api/database.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Database) is first accessed, calls to + [`Table.refresh_attributes()`](api/table.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Table.refresh_attributes) raise a [`GRANTA_ServiceLayerError`](foundation/api.md#GRANTA_MIScriptingToolkit.GRANTA_Exceptions.GRANTA_ServiceLayerError). Use [`Database.refresh_tables()`](api/database.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Database.refresh_tables) + instead. * In version-controlled tables, [`DataRevisionHistory`](api/supporting.md#GRANTA_MIScriptingToolkit.granta.mi_meta_classes.DataRevisionHistory) objects have an ambiguous meaning. The `history.last_modified_date` for the following attribute types is updated when the release state of the parent record is modified: @@ -128,12 +100,6 @@ This section describes the key features introduced or improved in MI Scripting T - Picture - Point - Tabular -* The behavior of [`Table.get_record_by_lookup_value()`](api/table.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Table.get_record_by_lookup_value) when a non-unique lookup value is provided is dependent on - the Granta MI version. In Granta MI 2025 R2 and later, if multiple matches are detected, no results are returned. In - earlier Granta MI versions, an exception is raised. -* If an attribute is removed from the Granta MI database after the parent [`Database`](api/database.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Database) is first accessed, calls to - [`Table.refresh_attributes()`](api/table.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Table.refresh_attributes) raise a [`GRANTA_ServiceLayerError`](foundation/api.md#GRANTA_MIScriptingToolkit.GRANTA_Exceptions.GRANTA_ServiceLayerError). Use [`Database.refresh_tables()`](api/database.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Database.refresh_tables) - instead. * The following hyperlink display options available in MI Viewer are not supported by [`Hyperlink.hyperlink_display`](api/supporting.md#GRANTA_MIScriptingToolkit.granta.mi_attribute_value_classes.Hyperlink.hyperlink_display): - Current pane @@ -152,38 +118,37 @@ This section describes the key features introduced or improved in MI Scripting T This section describes deprecated functionality which will be removed or changed in a future release. - + -### Version 4.2 +### Functionality deprecated with version 4.2 | Deprecated functionality | Recommended replacement / future functionality | |-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [`AttributeTabular.value`](api/attribute-values.md#GRANTA_MIScriptingToolkit.granta.mi_attribute_value_classes.AttributeTabular.value) raises [`AssertionError`](https://docs.python.org/3/library/exceptions.html#AssertionError) exceptions for invalid values. | Will raise [`TypeError`](https://docs.python.org/3/library/exceptions.html#TypeError) or [`ValueError`](https://docs.python.org/3/library/exceptions.html#ValueError) exceptions in a future version. | | [`Session.spawn_session()`](api/session.md#GRANTA_MIScriptingToolkit.granta.mi.Session.spawn_session) | Create foundation layer sessions using [`GRANTA_MIScriptingToolkit.GRANTA_MISession`](foundation/api.md#module-GRANTA_MIScriptingToolkit.GRANTA_MISession). | | [`Session.connect()`](api/session.md#GRANTA_MIScriptingToolkit.granta.mi.Session.connect) | Create foundation layer sessions using [`GRANTA_MIScriptingToolkit.GRANTA_MISession`](foundation/api.md#module-GRANTA_MIScriptingToolkit.GRANTA_MISession). | | [`Session.bulk_fetch_release_states()`](api/session.md#GRANTA_MIScriptingToolkit.granta.mi.Session.bulk_fetch_release_states) and [`ReleaseStateFetcher.fetch_release_states()`](api/bulk-operators.md#GRANTA_MIScriptingToolkit.granta.mi_bulk_utilities.ReleaseStateFetcher.fetch_release_states) raise
[`TypeError`](https://docs.python.org/3/library/exceptions.html#TypeError) exceptions on staged records. | Will raise [`ValueError`](https://docs.python.org/3/library/exceptions.html#ValueError) exceptions in a future version. | -| [`Record.refetch_record_versions()`](api/record.md#GRANTA_MIScriptingToolkit.granta.mi_record_classes.Record.refetch_record_versions) and [`Record.all_versions`](api/record.md#GRANTA_MIScriptingToolkit.granta.mi_record_classes.Record.all_versions) raise
[`GRANTA_Exception`](foundation/api.md#GRANTA_MIScriptingToolkit.GRANTA_Exceptions.GRANTA_Exception) exceptions on staged records. | Will raise [`ValueError`](https://docs.python.org/3/library/exceptions.html#ValueError) exceptions in a future version. | +| [`AttributeTabular.value`](api/attribute-values.md#GRANTA_MIScriptingToolkit.granta.mi_attribute_value_classes.AttributeTabular.value) raises [`AssertionError`](https://docs.python.org/3/library/exceptions.html#AssertionError) exceptions for invalid values. | Will raise [`TypeError`](https://docs.python.org/3/library/exceptions.html#TypeError) or [`ValueError`](https://docs.python.org/3/library/exceptions.html#ValueError) exceptions in a future version. | +| [`Session.assert_can_run_parallelised()`](api/session.md#GRANTA_MIScriptingToolkit.granta.mi.Session.assert_can_run_parallelised). | Use renamed method [`Session.assert_can_run_parallelized()`](api/session.md#GRANTA_MIScriptingToolkit.granta.mi.Session.assert_can_run_parallelized). | +| Argument `parallelise` of methods [`Session.bulk_fetch_release_states()`](api/session.md#GRANTA_MIScriptingToolkit.granta.mi.Session.bulk_fetch_release_states),
[`Session.bulk_delete_or_withdraw_records()`](api/session.md#GRANTA_MIScriptingToolkit.granta.mi.Session.bulk_delete_or_withdraw_records), [`Table.bulk_fetch()`](api/table.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Table.bulk_fetch), [`Table.bulk_link_fetch()`](api/table.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Table.bulk_link_fetch),
[`Table.bulk_fetch_associated_records()`](api/table.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Table.bulk_fetch_associated_records), and [`Table.bulk_fetch_data_revision_history()`](api/table.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Table.bulk_fetch_data_revision_history). | Use the argument `parallelize`. | | [`Table.path_from()`](api/table.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Table.path_from) and [`Table.paths_from()`](api/table.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Table.paths_from) `end_node` parameter. | Create records using [`Table.create_record()`](api/table.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Table.create_record). | +| [`Record.refetch_record_versions()`](api/record.md#GRANTA_MIScriptingToolkit.granta.mi_record_classes.Record.refetch_record_versions) and [`Record.all_versions`](api/record.md#GRANTA_MIScriptingToolkit.granta.mi_record_classes.Record.all_versions) raise
[`GRANTA_Exception`](foundation/api.md#GRANTA_MIScriptingToolkit.GRANTA_Exceptions.GRANTA_Exception) exceptions on staged records. | Will raise [`ValueError`](https://docs.python.org/3/library/exceptions.html#ValueError) exceptions in a future version. | +| Record color and record type [`SearchCriterion`](api/supporting.md#GRANTA_MIScriptingToolkit.granta.mi_meta_classes.SearchCriterion) using [`str`](https://docs.python.org/3/library/stdtypes.html#str) criterion values. | Define the criterion value using the enumerations [`RecordColor`](api/constants.md#GRANTA_MIScriptingToolkit.granta.mi_constants.RecordColor) and [`RecordType`](api/constants.md#GRANTA_MIScriptingToolkit.granta.mi_constants.RecordType). | | [`BulkRecordDeleterWithdrawer`](api/bulk-operators.md#GRANTA_MIScriptingToolkit.granta.mi_bulk_utilities.BulkRecordDeleterWithdrawer) | Use [`Session.bulk_delete_or_withdraw_records()`](api/session.md#GRANTA_MIScriptingToolkit.granta.mi.Session.bulk_delete_or_withdraw_records) to delete and withdraw records in bulk. | | [`ReleaseStateFetcher`](api/bulk-operators.md#GRANTA_MIScriptingToolkit.granta.mi_bulk_utilities.ReleaseStateFetcher) | Use [`Session.bulk_fetch_release_states()`](api/session.md#GRANTA_MIScriptingToolkit.granta.mi.Session.bulk_fetch_release_states) to fetch release states in bulk. | | [`AttributeFetcher`](api/bulk-operators.md#GRANTA_MIScriptingToolkit.granta.mi_bulk_utilities.AttributeFetcher) | Use [`Table.bulk_fetch()`](api/table.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Table.bulk_fetch) to fetch attribute values in bulk. | | [`AssociatedRecordFetcher`](api/bulk-operators.md#GRANTA_MIScriptingToolkit.granta.mi_bulk_utilities.AssociatedRecordFetcher) | Use [`Table.bulk_fetch_associated_records()`](api/table.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Table.bulk_fetch_associated_records) to fetch associated records in bulk. | | [`LinkFetcher`](api/bulk-operators.md#GRANTA_MIScriptingToolkit.granta.mi_bulk_utilities.LinkFetcher) | Use [`Table.bulk_link_fetch()`](api/table.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Table.bulk_link_fetch) to fetch links in bulk. | | [`DataRevisionHistoryFetcher`](api/bulk-operators.md#GRANTA_MIScriptingToolkit.granta.mi_bulk_utilities.DataRevisionHistoryFetcher) | Use [`Table.bulk_fetch_data_revision_history()`](api/table.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Table.bulk_fetch_data_revision_history) to fetch data revision history in bulk. | -| [`debug()`](foundation/api.md#GRANTA_MIScriptingToolkit.GRANTA_Logging.GRANTA_Logging.debug),
[`info()`](foundation/api.md#GRANTA_MIScriptingToolkit.GRANTA_Logging.GRANTA_Logging.info),
[`warning()`](foundation/api.md#GRANTA_MIScriptingToolkit.GRANTA_Logging.GRANTA_Logging.warning), and
[`error()`](foundation/api.md#GRANTA_MIScriptingToolkit.GRANTA_Logging.GRANTA_Logging.error) | Use [`core_logger()`](foundation/api.md#GRANTA_MIScriptingToolkit.GRANTA_Logging.GRANTA_Logging.core_logger) to obtain the
[`Logger`](https://docs.python.org/3/library/logging.html#logging.Logger) object directly. | | [`extract_parameter_value()`](api/helpers.md#GRANTA_MIScriptingToolkit.granta.mi_functions.extract_parameter_value) | Access the [`ParameterValue.discreteValue`](foundation/api.md#GRANTA_MIScriptingToolkit.ParameterValue.ParameterValue.discreteValue) and
[`ParameterValue.numericValue`](foundation/api.md#GRANTA_MIScriptingToolkit.ParameterValue.ParameterValue.numericValue) properties directly. | -| Argument `parallelise` of methods [`Session.bulk_fetch_release_states()`](api/session.md#GRANTA_MIScriptingToolkit.granta.mi.Session.bulk_fetch_release_states),
[`Session.bulk_delete_or_withdraw_records()`](api/session.md#GRANTA_MIScriptingToolkit.granta.mi.Session.bulk_delete_or_withdraw_records), [`Table.bulk_fetch()`](api/table.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Table.bulk_fetch), [`Table.bulk_link_fetch()`](api/table.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Table.bulk_link_fetch),
[`Table.bulk_fetch_associated_records()`](api/table.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Table.bulk_fetch_associated_records), and [`Table.bulk_fetch_data_revision_history()`](api/table.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Table.bulk_fetch_data_revision_history). | Use the argument `parallelize`. | -| Method [`Session.assert_can_run_parallelised()`](api/session.md#GRANTA_MIScriptingToolkit.granta.mi.Session.assert_can_run_parallelised). | Use renamed method [`Session.assert_can_run_parallelized()`](api/session.md#GRANTA_MIScriptingToolkit.granta.mi.Session.assert_can_run_parallelized). | -| Record color and record type [`SearchCriterion`](api/supporting.md#GRANTA_MIScriptingToolkit.granta.mi_meta_classes.SearchCriterion) using [`str`](https://docs.python.org/3/library/stdtypes.html#str) criterion values. | Define the criterion value using the enumerations [`RecordColor`](api/constants.md#GRANTA_MIScriptingToolkit.granta.mi_constants.RecordColor) and [`RecordType`](api/constants.md#GRANTA_MIScriptingToolkit.granta.mi_constants.RecordType). | +| [`debug()`](foundation/api.md#GRANTA_MIScriptingToolkit.GRANTA_Logging.GRANTA_Logging.debug),
[`info()`](foundation/api.md#GRANTA_MIScriptingToolkit.GRANTA_Logging.GRANTA_Logging.info),
[`warning()`](foundation/api.md#GRANTA_MIScriptingToolkit.GRANTA_Logging.GRANTA_Logging.warning), and
[`error()`](foundation/api.md#GRANTA_MIScriptingToolkit.GRANTA_Logging.GRANTA_Logging.error) | Use [`core_logger()`](foundation/api.md#GRANTA_MIScriptingToolkit.GRANTA_Logging.GRANTA_Logging.core_logger) to obtain the
[`Logger`](https://docs.python.org/3/library/logging.html#logging.Logger) object directly. | - + -### Version 4.1 +### Functionality deprecated with version 4.1 | Deprecated functionality | Recommended replacement / future functionality | |------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | [`Session.spawn_session()`](api/session.md#GRANTA_MIScriptingToolkit.granta.mi.Session.spawn_session) if session contains manual credentials and `store_password = False` | Specify `store_password = True` when creating the original session. | -| [`ParameterDefinition.type`](api/supporting.md#GRANTA_MIScriptingToolkit.granta.mi_attribute_classes.ParameterDefinition.type) | [`ParameterDefinition.data_type`](api/supporting.md#GRANTA_MIScriptingToolkit.granta.mi_attribute_classes.ParameterDefinition.data_type) and [`ParameterDefinition.restricted`](api/supporting.md#GRANTA_MIScriptingToolkit.granta.mi_attribute_classes.ParameterDefinition.restricted) | | [`Database.get_all_link_details_where()`](api/database.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Database.get_all_link_details_where) | [`Database.record_link_groups`](api/database.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Database.record_link_groups) | | [`Database.get_link_detail()`](api/database.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Database.get_link_detail) | [`Database.record_link_groups`](api/database.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Database.record_link_groups) | | [`Database.link_details`](api/database.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Database.link_details) | [`Database.record_link_groups`](api/database.md#GRANTA_MIScriptingToolkit.granta.mi_tree_classes.Database.record_link_groups) | @@ -195,6 +160,7 @@ This section describes deprecated functionality which will be removed or changed | Setting [`Record.type`](api/record.md#GRANTA_MIScriptingToolkit.granta.mi_record_classes.Record.type) to a string. | Set to a [`RecordType`](api/constants.md#GRANTA_MIScriptingToolkit.granta.mi_constants.RecordType) value. | | [`Record.all_children()`](api/record.md#GRANTA_MIScriptingToolkit.granta.mi_record_classes.Record.all_children) | [`Record.get_descendants()`](api/record.md#GRANTA_MIScriptingToolkit.granta.mi_record_classes.Record.get_descendants) | | Setting single-valued [`AttributeDiscrete.value`](api/attribute-values.md#GRANTA_MIScriptingToolkit.granta.mi_attribute_value_classes.AttributeDiscrete.value) to a list of strings. | Set to a string. | +| [`ParameterDefinition.type`](api/supporting.md#GRANTA_MIScriptingToolkit.granta.mi_attribute_classes.ParameterDefinition.type) | [`ParameterDefinition.data_type`](api/supporting.md#GRANTA_MIScriptingToolkit.granta.mi_attribute_classes.ParameterDefinition.data_type) and [`ParameterDefinition.restricted`](api/supporting.md#GRANTA_MIScriptingToolkit.granta.mi_attribute_classes.ParameterDefinition.restricted) | | [`log_to_file_in_local_app_data()`](api/helpers.md#GRANTA_MIScriptingToolkit.granta.mi_functions.log_to_file_in_local_app_data) | Use the Python logging module. Obtain the built-in logger with the function [`get_foundation_logger()`](api/helpers.md#GRANTA_MIScriptingToolkit.granta.mi_functions.get_foundation_logger). | @@ -203,6 +169,12 @@ This section describes deprecated functionality which will be removed or changed This section summarizes all the breaking changes in previous versions of MI Scripting Toolkit. + + +### Upgrading from MI Scripting Toolkit Version 4.1 + +There are no changes required to upgrade from MI Scripting Toolkit Version 4.1. + ### Upgrading from MI Scripting Toolkit Version 4.0 @@ -330,12 +302,6 @@ Job Queue functionality, you should continue to use MI Scripting Toolkit v3.3. ### Upgrading from MI Scripting Toolkit for Python Version 2.X - - -#### Backwards-incompatible API changes - -Scripts written for MI Scripting Toolkit v2.x will need to be modified due to the following breaking changes: - #### New `store_password` option on the [`Session`](api/session.md#GRANTA_MIScriptingToolkit.granta.mi.Session) class diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/copyright.md b/2025R2/scripting-toolkit-dev-portal-25r2/copyright.md index 6f123adea9..d0d309fed8 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/copyright.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/copyright.md @@ -42,4 +42,4 @@ third-party software. If you are unable to access the Legal Notice, contact ANSY Published in the U.S.A. -[View third-party licenses](https://innovationspace.ansys.com/wp-content/uploads/granta/2025R1/miscriptingtoolkit/) +[View third-party licenses](https://innovationspace.ansys.com/wp-content/uploads/granta/2025R2/miscriptingtoolkit/) diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/getting_started/pip.md b/2025R2/scripting-toolkit-dev-portal-25r2/getting_started/pip.md index 4bd7131c35..5ae42f95c0 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/getting_started/pip.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/getting_started/pip.md @@ -83,25 +83,40 @@ To determine the full requirements at a particular point in time, install the Sc environment (see [https://docs.python.org/3/library/venv.html](https://docs.python.org/3/library/venv.html) for details), and then use `pip list` or `pip freeze` to display the installed packages. +These third-party packages are not provided with MI Scripting Toolkit, but **must** be installed before use. Follow the +installation instructions in [Installing and upgrading MI Scripting Toolkit](#installing-and-upgrading-pip) to automatically download compatible versions of these +packages from [PyPI](https://pypi.org/) and install them alongside MI Scripting Toolkit. To install MI Scripting Toolkit without access to PyPI, see +[Offline installation](#offline-installation-pip). + + + +### Installation preparation + +MI Scripting Toolkit is provided as a zip file, and is available from the Downloads page on the Ansys Customer Portal. All +instructions on this page assume a Windows environment, and that the zip file has been downloaded and unzipped to the +location `C:\Users\user\scripting_toolkit`. Replace this path as required for your environment. + +To install MI Scripting Toolkit in a Linux environment, replace the example Windows path with the appropriate Linux path. For +example, the path `C:\Users\user\scripting_toolkit\pip` in Windows would be equivalent to +`/home/user/scripting_toolkit/pip` on Linux. + + + ## Installing and upgrading MI Scripting Toolkit -MI Scripting Toolkit is provided as a zip file, and is available from the Downloads page on the Ansys Customer Portal. This section -assumes that the zip file has been downloaded and the contents have been unzipped to the location -`/home/user/scripting_toolkit` on Linux, or `C:\Users\user\scripting_toolkit` on Windows. - -It is recommended to install MI Scripting Toolkit in a virtual environment. If you are installing MI Scripting Toolkit in an activated virtual -environment, enter the following (on Windows, replace the file path with `C:\Users\user\scripting_toolkit\pip`): +Install MI Scripting Toolkit in a virtual environment. If you are installing MI Scripting Toolkit in an activated virtual environment, enter +the following: ```default -$ pip install --upgrade granta_miscriptingtoolkit --find-links=/home/user/scripting_toolkit/pip +$ pip install --upgrade granta_miscriptingtoolkit --find-links="C:\Users\user\scripting_toolkit\pip" ``` If you are installing MI Scripting Toolkit in a Python environment which is not available on the path, enter the following: ```default -$ path/to/python -m pip install --upgrade granta_miscriptingtoolkit --find-links=/home/user/scripting_toolkit/pip +$ path/to/python -m pip install --upgrade granta_miscriptingtoolkit --find-links="C:\Users\user\scripting_toolkit\pip" ``` When installation is complete, the MI Scripting Toolkit files are installed into the Python site-packages location. @@ -121,13 +136,13 @@ To install an extra, include the extra name after the package name when installi MI Scripting Toolkit with the additional notebook dependencies: ```default -$ pip install --upgrade granta_miscriptingtoolkit[notebooks] --find-links=/home/user/scripting_toolkit/pip +$ pip install --upgrade granta_miscriptingtoolkit[notebooks] --find-links="C:\Users\user\scripting_toolkit\pip" ``` Or to install both the notebook and OIDC dependencies: ```default -$ pip install --upgrade granta_miscriptingtoolkit[notebooks,oidc] --find-links=/home/user/scripting_toolkit/pip +$ pip install --upgrade granta_miscriptingtoolkit[notebooks,oidc] --find-links="C:\Users\user\scripting_toolkit\pip" ``` The `[notebooks]` extra includes the following additional dependencies: @@ -178,3 +193,28 @@ Or if you are using a Python environment which is not available on the path: ```default $ path/to/python -m pip uninstall miscriptingtoolkit ``` + + + + + +## Offline installation + +To install MI Scripting Toolkit without access to PyPI, first download the required third-party dependencies using a Python +environment with PyPI access. Enter the following into the command line to download the wheels into the +`C:\Users\user\all_wheels` directory: + +```default +$ pip download GRANTA_MIScriptingToolkit --find-links=pip --dest="C:\Users\user\all_wheels" +``` + +Copy the `all_wheels` directory to the machine without access to PyPI, and enter the following into the command line +to install MI Scripting Toolkit using the packages in the `all_wheels` directory: + +```default +$ pip install GRANTA_MIScriptingToolkit --find-links="C:\Users\user\all_wheels" +``` + +These instructions describe how to download the required packages for the current platform only. To download packages +for a different platform, for example to download Linux wheels in a Windows environment, see the +[pip download](https://pip.pypa.io/en/stable/cli/pip_download/) documentation. diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/index.md b/2025R2/scripting-toolkit-dev-portal-25r2/index.md index 33302c8f43..1eecca48e0 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/index.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/index.md @@ -2,6 +2,8 @@ +MI Scripting Toolkit provides a clean and intuitive Python interface for working with Granta MI. + * [Getting started](getting_started/index.md): Learn how to install MI Scripting Toolkit and run some simple commands. * [User guide](user_guide/index.md): Learn more about MI Scripting Toolkit. * [Example notebooks](notebooks/index.md): Explore examples that show how to use MI Scripting Toolkit to work with Granta MI diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/data-analytics/04_Process_datasets_and_import.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/data-analytics/04_Process_datasets_and_import.md index f731659513..7d47524e2a 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/data-analytics/04_Process_datasets_and_import.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/data-analytics/04_Process_datasets_and_import.md @@ -414,11 +414,11 @@ yield_stress = y_0 + (-x_0) * (y_1 - y_0) / (x_1 - x_0) strain_at_yield = yield_stress / youngs_modulus + STRAIN_OFFSET yield_stress_MPa = yield_stress / 1e6 -print(f"0.2% offset yield stress: {yield_stress:.2f} MPa") +print(f"0.2% offset yield stress: {yield_stress_MPa:.2f} MPa") ``` *Previous cell output:* ```output -0.2% offset yield stress: 335555698.60 MPa +0.2% offset yield stress: 335.56 MPa ``` Plot the *0.2% offset yield stress* on the Stress-Strain plot. This time, plot the marker on both the full and inset axes, and annotate the inset. @@ -896,6 +896,6 @@ mi.update([record]) *Previous cell output:* ```output -[] +[] ``` diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/data-analytics/06_Calculate_statistics_for_records.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/data-analytics/06_Calculate_statistics_for_records.md index 848d36b666..2333dc33b1 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/data-analytics/06_Calculate_statistics_for_records.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/data-analytics/06_Calculate_statistics_for_records.md @@ -307,12 +307,12 @@ for orientation, specimens in test_records.items(): ``` *Previous cell output:* ```output -Rollup completed for the specimen 'LBU15', view this record at 'http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=85f8cea3-735d-4157-aea7-42aa5359108d' -Rollup completed for the specimen 'LBU14', view this record at 'http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=c928d243-c44f-45c0-ba73-312277c2c722' -Rollup completed for the specimen 'LBJ83', view this record at 'http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=f570eba1-7a0c-455e-b107-e7fda7f2c2f3' -Rollup completed for the specimen 'LBJ62', view this record at 'http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=04a7ee0e-392b-4d0e-a465-2f533422ee21' -Rollup completed for the specimen 'LBJ53', view this record at 'http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=1093c7f1-058e-4b69-ad6a-62d22d25210c' -Rollup completed for the specimen 'LBJ42', view this record at 'http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=8ce9868d-1e01-4877-b4ba-312e812a67c6' -Rollup completed for the specimen 'LBJ14', view this record at 'http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=4658930d-c9f9-4471-8baf-e6bf80b7d1e9' -Rollup completed for the specimen 'LBJ13', view this record at 'http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=778f3c0b-6842-4be9-92fe-3b3195fe1107' +Rollup completed for the specimen 'LBU15', view this record at 'http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=534a8a97-b340-495c-be65-a723074207cc' +Rollup completed for the specimen 'LBU14', view this record at 'http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=c68623f1-8403-4c33-9f8b-3c14bc31b9de' +Rollup completed for the specimen 'LBJ83', view this record at 'http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=4c15225a-4636-4807-a8de-772b044b636d' +Rollup completed for the specimen 'LBJ62', view this record at 'http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=64fa4b4f-fcba-462a-b2e9-37d9d4654e9b' +Rollup completed for the specimen 'LBJ53', view this record at 'http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=54125724-a888-4087-a2c3-779faf52840f' +Rollup completed for the specimen 'LBJ42', view this record at 'http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=009a67aa-8355-440e-84f6-454fa05bf86e' +Rollup completed for the specimen 'LBJ14', view this record at 'http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=fa63e874-2418-445a-b36e-28723fb25e24' +Rollup completed for the specimen 'LBJ13', view this record at 'http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=7754cc89-d2bf-4875-b416-383c494f0083' ``` \ No newline at end of file diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/data-analytics/06_Calculate_statistics_for_records_files/06_Calculate_statistics_for_records_12_0.png b/2025R2/scripting-toolkit-dev-portal-25r2/samples/data-analytics/06_Calculate_statistics_for_records_files/06_Calculate_statistics_for_records_12_0.png index 94897b320fc78d167879d0cddd5f760593358d76..94e695d725d685c766d320b73094703a255071df 100644 GIT binary patch literal 34340 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 z zXERp!?X}|1r^bKQ6b$RpWF+RnwSnx{bCXVmtsq+KP}FfwcY|f9ZW> z%m*TeyL)D2ciDF~R*kMV*!Fk%z}3Dhl|^lU*XsE+MowIB0^?0U4!;ls%~t(=VvZaO zTS!JUjnokqi4~+!Osoo0+*0NzR|{tZnXt%bA#;c!BE3i#HakS;$V@_brB5tDA zRM*h(!0Sfbqs^}$v*AFBidtJc9&0ngSY zdv%`JO}9*nyru8Rdb~=HW=*~K&o_h$aie^bFR3K*tE_qVq z@t@Nv1h)gVgO->so&LR2BS+X@~}FgHzL1q*DWkq zGo*Z~T4^qUi$~-(G#If|W03KnR_1-y?pg4Mt9BNd*!}zW3(fXVBUMMvh=T)NC=!g{ zTo@PuZ3%2idXqq?qLiZ=buhDO!q9*hrv>JN*@{2e9cDC0*ns;Smu|U6kn;pn>!y{x zdo{AXJl1ng_2J2fo;}taTB|YT;KqcZ7#nc*>`2&ufvDEc!omZS{zFHPUVwZoUL&X9 zTpJL+X8@Ivun6HtY)K0bS)??%>K|)dqNk^4dRy2>PWG=2+{^;h6zl5^Ob=t$N}KXL zE0b9>@6{9v(?E&5PK;k(TJsb_57)R>ulwI@uB2*Bz#YWKru~6uEB;imnzgK_{hrD| zXP5CQLq5PFR@s-+ru3Ycmyx@-_lD%754(XG7`mVxm#VNm1B&cQ?SH~sQk(dRw#I+7 zRlnUIvyu3jt9Cg8!eAmyNhPk{qy&jB(|o0D%gsG<)n^%!mJd&M&QmDR6&`s4l@HU>$AdS!<5gl~ewx<*?Q@TDwZx#Fi! z#rcs>)*SwEzoqZG(#v3&iMWqnNv;Ky6DKW>ND68pc8M?(})Rf6l58r($h}DaHmVNcQ>jq~B z-*|st9Tp50Hr%5}q#ykjKW`-rT9WgKyG6tF#jibMdB(Jj%#MM>A7*|WUH_V3fVapkwaoGp6Gnij=>k>#GvqOuUFXw zUq=x)PW&CBsM#zk<*NH&!kZ&@s_Z;7I?Y9EmKD+d&eS^|sqb zn2svymq&zt^Iw#K)M&TEqs0AN$5dc2J!bR+C40uM6Z*6va12hQ9hK-lEzPy6)klU*orCjL?vyCury0JiAo+e!2Qk1PjfqyRf-coGPkE+S_k-*c?^4eZ?M?b9x?W1rzpn zEqn2PmlAeZbOAM8s>{k;Bs~%@X>(e;Wh~i$WBhNUR21Y5@wsPK8o1M-QTpx85Pur{ zsa=y=+oktYHWK63e5`)DcRL+SVOnrdPNyeozHBVTAyS`+yD8@(asc?M-7rEX@ubJC<^@)-k`X$&nub z*kLjo=TrCKweuB}b}NBef*-6+SX;+x^1`nv!Lh8jD|s~YfDozVJKEAt5#*_vLnGQz7ikKJp283&28;IsZZZV+sES;r`!K65!BF_- zkO(nU&L6U?u4fxF{r|-Z_P@O7kNYab04OM~Mh-yQhvG~?oH%skNbcehPW9?uXyJt% z1!V5f^Ebj)10G+Ql9HmA7@Z(vWcbr=5l5cXB-HtW-?VSOE+Qd1K|FNXR;UoCYu$qv zCd>frKXSf(f60=Pi^tc8I8Rs(YpRQ$vr1i0uJJ-2pCJsX<6fJr z`{v(03Jo_wFi5(ltUf@owOBj=g)*^e+HWuaRYrd{bKmnBPai*)xd}qm7&c6UHfj&| zOog;+0E<0qTI%VEPc5B=3m9UGyq(6#41ATKnjH*H!GE1xx{*bTEHJNNkW);^Md=Cu zqvYKmBsnxg*8t=3ZBTI$ONnip_#2TalFLl~LJShgAgQyolraF6q>0v)_^jW-5V5FX zV<;OkY%ME0yBNVe?II(PB)lBt=sg6C#PNUo*=;2|W6?IG`n1$Car1{`jvBWc5ZlDL z56Frm^wW{MUJzq(g0TUXj_B+{+ub|9z!;WXPyd=l0DuzMdcC!Jl#o_D(R73T;rkY)M4`Mz!JP##K4juF+@GeI6pgrK29FuEKsg|IdRZ&sld@?10bhx;pA}PPMSEACX zcFfxO534ngBgjBST8|M8!ZV}ywl&Gs(Zc5wp(ya_wvb<^PMUP7s{5RjgUfAOC9u*K zUBtk?$E@5K`&ucGVe>DIe1~z$L)<|USLBGNaardwVM8b~(Ghw=r#t?Sbh-wLeR!CF zm~NRmy`?c{ipY`z{2O=&hWbr^RPKaF}*C*kPadG!0cmXOd%{hIG=>%Ztk03{& zhul2Xumg}AKn-&7h;B<~dU&WpsUtHgW>xugiJ=l?>1Hy13Dw(0sgPsPuaxZsSrvO=P@N=IqJ@H>aFqoj~;{P10Ub@fbIR3vmVNDO#kH55h` z^I6PP7=iW-M^TYEqKmlL=U=$f8useW1t z4lEO!m`fYat$Oi3RipEb@Aw#JI|bpP-gpKn}`b?VklQ(e?e zCU8j6C1m7gQc~1`i+dxzHqh|AJ5R=?sv;MLpuR{A=UkIb%jbFZjdwELnf`Uk#+>K| z2lnTA&^?DJ5squFy+ki;re%C-cE$jkoJS9K7RD!xALn{5%2}S8Q6uclj+YKth$+@Biu|-``lQVsr8d=Mnbo?Pz0T&!Yvrce<)zs$WU?#8j8o4oSZM z4A$EO-+s=vVNTxgQ8cAL4k|PsvI2d5nc?$wk|~f#s*6#4z|N|sCJY$R78(N*R@dd9 zd__C}H>;Bx6P+gw5pQs6&PkIe7Xv+i zfbt>o1X9Rou3TugB|!!>tOt0MP8;k?8Q=%cO%cGe6EYF(AZgT!?0jlxhi(Khjel^c zZ#T4`LkCf%9iF6(5zvWu($aZ(`c2~tBq1g37p3K2Lo+m7k zLgu`Hj;BsCbg0OOm5%kjw>Z}~XeILd ze3=Jf%de?WEL`}e*F|KMpm8e+SEIL48dhBboa~8$Ktda~0flC3o$BVx#Hh)-l0af>6gY697aemGG&27)B+|xS{G6ooJ9p~Xn3!(@P4Um-D$x`zM;iT#AJnx6 z?VF|lKqf2RdC0%SkK$Qrc)J1ZWUNNtxl9_ibDmbb+fKaW&O`57Pd;9ZQ7D~a@dy*b z3Gk}dse#c`y8K64Gq?V27{|Fn;p5{Yc5{LL=rLPm`RWW;N=z7|Q>QigKc1%}2W7Kn zCQl*6eyBM1KyYl4N|A~p>!Us!ju90qVPVA0*)}4I=nRGi=S8HBt*~c(Hf=Vm5hY4!2vtO&fhMyk=0#FR2_q0PeA>83A5jV8 z1ty;2G0xb{;+BL@tE%Fh$Aa+drJN)r9_ZLa3n5N^Agodj0LC+@d4J_V>!$M|8-JZp zM!Io9rc22XH}YSt>)8K@vx3+Yauz@V)q^f{K@=VQ5|cByDeX5Brb_t#stWkt!YN@!WG0juxe~K}C%m{VUJM_w*`Th{CeJ|zERcY( zL?h2o1<6%q1^@F&&f&{`Ul)|Hl36%57Gg)Mn9pEmA>n~KJ6pa-J)Fs*-V{4V%JgaI zSf#!(b3Gjd^+Klk6ikFu2V5pY2XPA#wGwCR<=?XTK!fFB3zR>g)8N71$s8?`2X$l% z@Y^%NC~1lcAqAo^FWYIFzXb0GF~H%ipWzJf`O|wh$#FzdjJQYX8VkrNp7CrObpM*- z`5@f~HcLseZ&jJId~lSBGl6&ocoN55>JtG%Wz-T6FlAIDOoOBzKo=pSwb7$W!wJxD zHC-rlLE#zr>1Z_|?zadF3lp)6%;J@4P^)FYteF4F$l@qQjuiKYa4(!4aV{~0{8oUw z6n&o_)-pmDBDT@b*9bYv>9zD?hJbqr%G_Wnx>u8_UHQYfYu8couJ|>Y z{G85%iQ+=I!XB7U>^(69{_@IH11u z@z^Tr>0EIch zj2t>8g-i-keONtmH;1C&2G5VIQ% zUj-h8+qGU!tZCcbboX*M*LL0S%g2xed(kdr7;?bXuU}uh^hkH6OD?oW%YZQ9JaJ}0$9yPHZ&ca+iu zw8u)-L{?~pGQ!c8ReYSMa}t6EO7F?xFYZAEkhY{_)rJ%m$nRgLs3w`FTxIBr$w!C1 zoaS3Y9Jd|lt&Xo)MCA34NJ=A0_fqsgheSvZS+Ipd1iwhk9&)x|Wi}$bOpC$m7(uck zI_=!y*ajb!dYNxVqet>;BiVI3QQ!RvAgVQd*OwHiw6of4W%v7-9N1^e;ilbfts3q( z(9&BU6C5-tPR084*7Y+DO}ZJyAABAhZZuS@dvI8WRceFCj_a*$M-|tzopY{X^PW?? zw$W}D5ndAX{AH=ewdrR{T^m2Beo|92CDhI)H|4vxr}vf_jyOE2>+)*HuswVCn)mH{ zV4B$hfW(hiU*_gI25;I_{_2&(ty{M&1`MdJbYa+a_0zI4ud4U&%S%dZd9JpD3Lt{p z$2#u){Ng$$r;fI^fk@R-8PPXyY;{FdmGgiB11u~p`?$7I+z3%sJUB-Q-uB|n*RPM1 zm6bWUxuqOA(u?IcYu>!EcV|z)3R`P!w(U|nFunWriwg;9{L8?9dHeuw4_>Zz)5 z&C5r+y12TQJ$z^d3vs#mZ)I(<6~oO(M`41*RQT@{wFN# z)2=COr$x(_CBJ^{6C4s^s-t!J(JP&U-Aqhwe*Ad)XU-&l`s5#bYu4SPNjrA5 zX3~ak@W9lrBSRj|^!0UqdE8BZ@>+kxJ^~zw|38bg+h_pV+gVZ zg?lT*wtVTa@#{CoWU27K*_y@tJ7D_ifA*7ba}|nK!!+yjMca6_8ei5l`zJ3uwAWK5 W`0&s#zMWT2^hKh(Nk|<;*^N=Viq)0T#JY_0lWo)LBsR5ZP z86ue~?e z0}6$<2mh!t(BV5D-RWQBUrO$~P23MS*|>XJx>{58EZvSaQ}o?n`1k z3Ov3M6&lOfHV21Y5Hg^qN($b(^@Bxq%EMZ`Uh3h-j;bM_eB(DaL2;>TrecFO6fzghxI-G*0=|@bYENwM}NuQ{N9gdG;(h zGn3)kwQDC^GTD@smES(}bn^1`eSea|$?=M&P$((qz_R;v8?M+k5R;=!>KC|S*0}n|h&yl-@(?Q=B z_O_H%%}|Ru)wi)3y&Ua%TwfF#8Y-ls!k?Fy=j`ToRnf-MGAXagu0k`4-*Wc%Pc2>D zkmzW(wo)e+dwY9j@3E!P(a~kz<6_AvDb{LU-e+?1-Wp~Ozt0!Abm@{H1Ffs8>*#2Y z`dZb1wRpnQUtNJw`Bn2g`H#jf)cxRPXAchNSbyyIXpc$ZvCz8w{FNR(Yr^a}&N&Nb zvwJTz9w|6V)BE{zW5&KjQ-M`gfBJa8eEnMU=FQ&WU-P{er7vH<&Y-HQIy?H9MP}>P zIR2|zq72KIH}*5w`;Rqh3dF8Cv`R;wRN@Z9F-~`Oj)YSGbIHDE1Ex>CDL6ztcU- zsdB>3j`6^O1A1}#NmyXJ2TO%>Yq;dXGc{Imaalc&F>+Lr?iTU&Betf zejeN7+MDfN_fN3UvG8A-8g5T9D|IxvcYOK1d-v*Yj(`6scj`j{jruvJGZ`7{l{^MR zRQ#upj&zhab(`7MhAek>ajAKHo+W3NY0sWLzcF8LGxiCTJ$(51`Ezi@~GftD=sG_T-beabrP2H zWOF)m$*GS9xhK4SChWVdTyrAPpAL&rWdDBUSvuz0&I;f9+&?W@2e^0m$Sb+`2fewq z-3nt1yLj<&Te1DucSn>|XP%xI`t-20!#+{bjV?tqN&|Dz^ZE1HU!A@zQ39%YP2UXI zFwmW!pG8FDlRrO?s$c8-b7p*ZV`Jm*?z1f2KYp-ydV0DKG%Zs*KFpE7w+28a2XYbRC*JZ64A5~QJ zjEqDE%uV;q{HThX@tk=&jgx#nUhYI~dpj@R_R~*(|NP83y|S18cM1wvnR(>*53a#Bl(Bim z{iUz3wz-)jK0dxIU`}cECex+6Sn(y;yny5W{JljWGanzHm$!G#vuAWYJv|Hz3_J79 zD~?Z_nweSQ=x_5L6LocSv+h*5y!G`lY=IB=tXC-S*wKiCN~Kb}u_Cp@?WHdLZ-uyd zcn(hgxhrwx$dQSm_bgR&Q@mc;=+U8f zx&6%*F+_+FnV6X9 z9v)_1v0_C>nadK)-;;snjGxa10udY@yz)kQw=dzO z*M9t1-qt`(b)jX`SMZJ6p|38)O>t= ztP_QIu`ad55g?;md?5E`HIs*@bDeu?Lm3;oN}Uor8XU3^2(|MSeWy;9Cob8Y*z?r> zO`@vBh7B7o^KbW`E+T)24SAr?^ykl?YMAfP5{GuinwpxXspMo~OGKKcA*}emK4tI3 zUtF;P6^I{#m{Ik%+c$1VURook;e7h^>M1;7R;^-i`}SsW;ypXPH68uQB4GehZr^kAE7{3{u&B-!bSQ-t(PX5s zMr)^KWLP!a-a#@w;*yly`Br3g3;#*ZC&xCQ9_bMOHS0azmxQp}6t!v7rp>3nn^3AJ zhu)_R<2+L+EG$v7^>y*ruiwGIaqh8`gcTGx0WWGV3#lKEEPwd$^KfaGhNGj@N&%I_ zX+xV1m$8ayTnf?>RXcuM^j+SOi`b)&-@oUgp`qD^hZozozJLE5F|OWkWsEl+2M5PS z^G7B&d)*UN{4u4M5c^;14t#v*DShF>1suKo2*11A@-i~c?^F4+R6|3fHDC+ny1Xqr zqNwOx*{-v6Bv?{D{-8G!=ZgrOp0G{x*QuiS_xG<~Yya`yI-JWKqsPg+FCMkANgwsT zrQ}iD-c&=(n^tKNxD^;#-JVdLm zu1?M+lAQIM$xNl~_VnjCZE2CuujdqLnr!1vAyUIaA>-*b}2c@(coo>1kqstZwJ zVVO;nOw7!Met%qVDtohIZB=|G2bTd4F$4#Ng)zKJR28VdwkhXeF7iw4!`_Rs4R1>v z%*qd_fAQzj{?<43qpM0cP)<$`LBMEiDd$zs%126uyIGe~F7Nft*1~z9p(F;*E8;|c zsT{hqftQyTS=)H1$!jT%(}a~Q0FA&2(kvF@6)^=t3nyQhY8D;TZy<<0oD zUq8--hAu;nNpl+sFXH?b!V#?ypdns_EMM6&nR~a-eyu;JLv#QT8RRoTgjbJt>r2)8g!+{P6JQC61pi;L$f#1Nkve zk6Uw$UB1?F&W_bf|Nb1Mnwm0YWYqcoz$fjhz?P)sd>4mlb5R3@#Vy&C#diDlZIee{ zE)iY%n62wFmb7BJ*MoX{kIhcLw=gMl7OI>X+0MkfR9|YnF(vTlbPVPoXg8sGhjEc+JbJ>uK)PwO8RV zkpx^{zoL5FQ@C<|+J5a0pHm(CDKR@MmKF9pM@83@$BOe;^ zu2ZqlV_;%>0wj3!#EJ8ObH%3b3+~;ky{U+b@z;;8xRRXD-WKNVk0t`rEN*ZG)*rL7 zT0#knh}h(|cfglVI%h;KWLQmk?d4l6`H|lMEF|wIH32^V>~9n)D=X7_EJHzAxP*exzVUvW9)7=E zdb#nhHGqxu09~irOPCQBu9R@CUfo+ST}2HDP%-zPG)n6d5Nz6VGg6HzQF^jbSX4}` z_sh$xW$pv)$Ynj<-9a54ho3xoA}A%ba(;fk$%r@mGmx!GrJv%)O`94K%dX$JAtEQo zfr(MKv=qX&-9OCgXk&8@dC98pRXnLt0_OjmD02M7V`F2ZrK6*6Xt)Y+akP1#s*&ye z%LuuaosYc9nSXeC_^7@8MbyNYTAuLmaLoU8)xgSEYp0P^YwPM5*YCUigv9*RJskc0 z{YSsNh&JNcY&a_M@xc{D+$@%ipJaEp#Z+aku!1)9P`*X-eJ@a!jGMhKoT;P;EKE1{M9n<4;%#Ul% z(r-TXK?cWF2=xN+GO{84*!Xx_Gd0Hl9HOliCeEbXb=|W_z7+xj0s}TXkolZlU2Ctb z(=i-V6l@Y>>Y=8(o;!E$Lz#<6Wv#WzAbaH!rV|tTz0yWXTfuk&ZP#Dt_??%uO0og38OwUn!z=t41;N z6ZJ$7GRFo92{qJ(_R1k~^K=@Tn)G5~Vu%%LC|F71z{D-HGl@&&+v^+WQTK!Ep#{9e z-vr;f#Yam^JBsXZ&3nKDFF=Ydm$_+=j!J)C9Aw}Pi4{Fd=$NV{^B)B>^KR+>{_+0X z=H|0iRjQr7KX#P66;{oT>3nEw>wOU|LSC9j!7c<4%4&LI;OqQc)`;Azn~EHuPe>W# z_~}6?%8+f_wjCX8$-1uM?^E3QNwDd(aFV2?S~2G*%9dvj{GGz6o)#u_0fx zMPC8$5gi-5uKA#eN!X9dnUxFkGtv)E57$xlQYYB=Y6=Mpr`_D*JN*A=lV}!$ifPm|pt>}y^1ck4h z{TKbUZTXO5hL&E5NE8Yt1&=ASFddL4kgBZW@?$^sTcscD|vp zixOk2JznEC!bcj-T8gZk+|QARKkAC`J+>@%&DuRV4uC0f(iVABe~^q^+pk`|N-#en zuJKHp!s~_xmaFUcy>nkf9>=_Pd4`W3Ylv&q9?>g|4SI;Prltwmi=*)g66r~8Maa9` za?*MKepYY>2I-%$a@$XT&m3L$I_p3NEoF;Co8j;b_MHCQlW6Dc_kRBVKT$H(7Yz&z zeMY&`%P3Ah$7&n<-pNjIV4IIUVK`joOoPMbHC+52X*y%z9$B@ORt)QD34vAQ)Megm zjg`{hQNy}-=^ez;nO{GiqsY`ZFbD=&A|xnCIaX-WoJJOt?+JdV8%XIHvSg}&MTHM1 zUj5nhiMs5)#^CL2*jHQybOP)q94AbI)Xl z$>*1qad!pG{BRh$J-q>qmYP8I=3dS!-~rWq}JSl7G&)&KtwnC z=rA?+t4q__**Vmok&*H8l`FxY9(o%8Nz)tIqC+LKNIBX0NRe@Ztw{kwOo5rF9_z?eP2#+S83t*1Tu-|qT^rL_ zzlDTpvCSG^4GUY)$M=}jz_<%>>VtQWP+Rg=3B@q~4kdL!Pkk5-3FD{ojbUs=WIQx?xzb0?82FI&) znW-F~_2gjdhYH`VSFT(+>fmt1b|F^MxHq@7vld(WZN7!7?rr5Yot>S8!)NE(cAiHT zidEU3)kQ!J?KX;5?j%vSOPs=Y>S+$J-+_3PJ@q=@`$QtEi5+#hsrWOemU z!s>MeF6_Wju#N3@>v6Tj7$kZg++7s8&n>nIu4(k`6VJKxU;PimHJY8dMj}F zzme4i*~2LmWat$EzkBFUwG}N#?#yGnogkkC+R`}haJ27t?A_m3pVq@9=C&%B%CV0O z4XvQ3Kd(KrJUGZG=U@#XU;x+RDJv<6B(ihAhTG{uguF^n&`IyYE*4yUvC#8}dHfXO z|4vc%o{C?cSLvK7gy_KJ7dUmPFa+P}7ctnBl#{ap^hEjdziHKQ7hXSS5LgUF%WhQh zZ}03{LgFd72$?NgG~%R=yuD|w6F-kiZ>OD|gbzZLnAagw(_~CA!Ym;-nV6U^gRsP& zBAgIlQ`~^`>Whu#ZYL1gnFw7Mf3d=``iaxmZKb@9rbHtqzpW#8Y;{_RHu5p#6ijNFu%2;2W$%^2()Dq0rtoW z-FWs&$G{8sH?WpE|V>g$~FpF~0HuQsfQAM*78>mlg$j*Rxi3R0%V+QVlJ@nfC(4 zYH4XzBb}Ee(z3PsVm-DiD$->7J(0d|}$kQEkw-I%bBF((_`Euu*^q@XnEg%}9{ zXDlO+{7H(Ajt*t#c;9Psia}Njs;XL~2ZHNQPEPI~8Ik&=(ERo->&VE+Z%|yL&@yD- zvn*eJ22($Ao<=x%8sOGLmS(M2<%G^Nh*llND6(T1y zgK-M2s;Y9&b&l2wL9Q2GzdqxYV;DiNkl|iw?4ZclwQK-?26|TCX2{t=`_iP2*ZI&cQv2+}!t7Xb<0J2#Xy6YC4W;p_JS;#t_2~iUi8nWCMwPjJ zy}fBDq{t^)E7*T^6O-%i9x(*60re7U_*HR+-i>phX@z8DSoQVwojp8AfX2MMg{XH4 zly>?8Vy?^g51ZE_wl814d~|F~O;?xc&Fvj4PMkQQdt*y(x+)))YPw65eV2tr)vLWv zDXCSKqQcox$Oq>`Lwg`T$vOxL2{ozC{Qj+_UWT&j^l)1!iu~@5ayKHBpp@PW^@ONQ zKpL{|f%a-p-W7uKCv+z273|)}cMsi{0htMsrEcPVYwPZ#M+Iq@EOGhrg6$N-Jx~$1 zYJhUz>l?-+e(qS4{#Ij)r$`}ROE}nCjfKz57#L_`_6NsNmY}^!&STJ!QjJPW z{_t}B;cHi~o+Yv{j#bkZNR(?8U8xTa3$aC)WILKSCjb&wtlnr6R8%Cd7ngK8t>G}w zvmp);op((N)tap@UnAA)1CJqAPEHaNPIXoCq3mSprW)pN4!H{Ys0mn^Hu{5Bb6RFx zq!2}Lo%(#jPmkFBF*yV5S~|tH&2$cJMKzG(6pk>mML!egs~sO3EASq-xw*r4H3*uo zjy@vn;dp%7_ujf2F{P`7@u7kR+$wxbM6co}URIIjrzh3v*^G3v6no6g&C5K0@VmO+&cE7`V=PT*JyZa-AWVp!O+W|88Bi<-_tY%T zN!#A6=ut?lz1XzBza<8~t?>2y@bP00aO(4|U4Cb!D}U2cU;((BoBOkdULZ5|sIY_n z;p^w0WZr+Fb!q8Rn!bpRx2X;SVa$5+M|cp)Y_A&#b%3HoIeW$S268Dhac6Lcki2TZ z*F&`Ec3+ik44!7LTlMnHm*}ERpDmZVCMv7lFqac-%Cc|^LPe@|uvp#8)m0XA!32?^ z=wzc>-?G;LU3WlDN{C<9;Drp#UJ+sRIv#eh@)Da!8PDWdDwe~vXaN5Rirw|1y0Z3RyHy4?z~Y_^I=cKFNNwsYyV zO|`m9U2J%%>kH zakqBzi+mauWTPD6izduL)3$TY$#Gw-*Qpx_2kt(9VokVR-nq;X@Stz4=f#9+tKk)? zW8Eqv`RjVXvgg?;shN~RSqnnal84gXuS39T)9X>}p?cgp6Rr4)x4d^x(~_>U$lRX zpvY$S;MAq((o0UZjTmt!nC5($K9t2WDl-~BjZ%TU(lmyQtLE)@%j7G(cTKOQHlYI>Mr#o1Bufg6~M{kHPg2 zG=7acwIhh+cN)|E$r;ZQ6#l~|MZY+W@`8> zLMk0IPl%BExjP`Q6pSRJwXHLr3XA;QBFG@)^yR|2)446Do$NJPj*Dva9_m}Tro1ZL z{cVf?&fJyVn4nZ1#(kQFMMY1ZgmY|$Q~+Gsi-5AtXJW$^$Br<(XwAouYlwBlKEHx) z`}T(kneke-;ht|^o_cY0wday8d(BV2v%F(ElAp5voLlLh7hYZ~KH3(t@^U}UKD1t5 z=DvRY9Eo`MV|ZNMKmg;tT?SjkiDvIJ)t`NaXdb!uQcL zqI(=X`uhiK+6p-md{=5-J)JKb1Qw`OL}I4Glc;bXPb3lp!07n6I)os{j9o?|rOl3I%a&~e5d#T=uwp47VZaV?%Nz}oklL4O@Zi{EJ3g3P zgbiZt&O5^xvT9WbP+d24tQW6ehk{5)k#h!!<#AV6q7Jt~Zp+)wH4l2}Hi*|_1;HA@u3qtIkI_`51j^2USycW)v3FzrC07H<%p*`0hMZ(_O|LU zNZ*}6@02@8pafNsr5DpnXrVe#6`no0C*C&cPp`OUd5~Z={)eiR-4$~_%y8({oc!9# zTft2`Zm>|rtb#L^DD!M>IeCOiy1Mqa5RIXqa)E4QC}BYK0YULOA_{ir(70> zIaOrBJnYn?wd$+hdzxuXDw}#uwY8|SYm*ZlYC^E91K?gFD4ks7fu9Mh+Bu~H_ zr|iAkFCC;evW==cv+G9K{kqtCXxX~%E>~fRwEYYgm44oOt-B1RV^(o?2aF1A5TEVR zNh;sR--G`-`TiGQzq2+I__~Ta`xyjO{Ja)__qfW1E6Af4#_o?!xX5o@+abT7)AmaI z8L7_65)hQ8JuW5Ul`6ao>z8?&uQj zm*Uj}{q9d}`f8HT@SEG(hL@a9Z+&pBB8%o+@%_h1?JqCS2C{Pvg~`;Uxa6|na7lv+ zG7#YyviZs{SNyI+Cz+}sq>#bdW#Jd}NO(D=+vPOPNUHKP(utBm2JW2slN@5{4)j$M7NzwdYrczDx`3qEXFhgSTE){0`$v}xiCqbe0RpIlKd zHY|T+b#&cR>%Mx2h8L1*r+01U;kiHv2mN8NqNz5*(JSxrZO8Gunyw?1t$$79n6jVg zmN4GIf$A`~vhd8?pWRm>M6>NMGf@-GsPJ`L5$5qHQ9wAmtH?%l76+3Q5RP4y5vYz~ zZ0N~I3{ZnVqi$mO)5ERUW?#)u{6m-+%+UyniP3@It1Y&FPnZK(5RZW}0&>0H%c4m& zq%SVn{A|?^v2E#Ul>HapH8($oD~Pz>xOsU~@VtJ! z8i^I)4Br_>P=c)MuMt=XbWi*T?{dwIEs3ducwLPuD~0Dkrd)uINi0D9?{ax5#2M-J zIbv%;z?=`$+HI_xOp7wdDu!s2HgG8}@He`zNu~Q&Dl(;tve%d-x>bjVnWye&PzC2p z-K*ruCeOItqv0Q^gLpfvi2Q^V9B3{y1SXkIn=qX@-9?ea) zU*F-oW#!s!L8wqH&KhOM6?@Ee3`=hs{xjk^`Qwk?V2>QaZ`QTi@ja$RC(pn`ceJg@ z_Qk7LPo7@nBJlfgx$80r4MeQ!>F;L<3=Aae0RsVRc+0}jbMS=U+e=xHAz_3)4>u@m zMzJFTJUom$=UJ9jR#t*Dh@Q&Q1)H@6yWDo38UV>|a7aY7dF&TJ0MYvf68F zX^9pIvS`1dVF=t@MBy)U?x7`u+$;uh@*zd&|JAx} zc5bfl*i**q@$p6v0}mfwOQ~)w{62C{LqnsWxHxty>ymKF41rxg#Z^U+ zZr^S;$+8>Cn(CnuvB{}-aFEg1*!b1$9lXG#+XCm6QU7FI3z{Aq6vb?RD6-|yh~g*U zn->+!$*xNO;+Y)n|HK=C1vE5YVw4Dn5~cdnr;1mFAt6hZ17^9Q3(6=c7f) zznn23p>+%Y^>zNnE^1rOy@97+_3L@g0-_V&EIukXvi)URetuMv`uScA1tqFYTGE3@ z^Jya8X(GMS^)Fv$x%MB+%=0Bq>z?xhWT61&VbH9GQI1dtdT|c?W=~1qS|R1s>4`eUz`)?k8?N=kA`G+;NSpy72DCTC{+S(bAX^V&0_8=0{o`z- z9PIk=gpEMxVMV$Xj6Lu(QYhd}?SB25nxYd7l-L8ENtAt0IWKMW6rAEuplpspNbbJn z*|`fAw?Z%=jIg=CtbrW#mA@Tzjb6+i49+zBP3UM@**0b0sk^$cD$2~yj_-r6oQz}N zI?@G7lu(BR>A8NrP_zTOIQZ!Ezz!OhxRZJ_ggs{90s!^CX|4>mc~Cx&LsxLs?fCZb z{t0NlSA4&Nqn60KOvW8QJ$1{t>Glp^*43-&y8pQPQwltW4#HtVx5z+2cJILqnjpY| zVk1&HJi4Eu)8msFVecIM8fQ_raWdm%VE3Pxv(TdXh^?H!H;`#0K7fF|E_Y&YMf;}v zd3&_9E(hdSe1~?>|M7lCht=uRr-?6Mq^ruJ?|NclqJ)kpkjrwTPsq7*$tWWa9z4h`f0DJ+XJ`{R%$JAN8|NwAy}e}TTS0W( z<~gz!R)I!L7#JE_Fn;;*`zTp@=H`FujX*gb^cunO-0aq;yK2=ct#)|cWNe#6V_P+` z25tN7)qaDt&n}X)0`~n0`t{(S2N$NK@m$HfW~F<3#xtkvTeCS66El$ex%5 zY4sT&lJ}CGVA%RB(U9{YA;cSigZI_(@kU@IWRRTR(^Q2wP(7bV2|Neea2XUQ&H>P( zfRE2?IoXRb8HUL(-n@ARA4dfCh0gokQY`A*Y2Z$D{;H9DsfG*-P+D0L6E!t8 z;Y(Nzet0o%IpFPa{I3`Y%_6oGl$1QnJM!?Tqhnt36+E5P;%QrkUcPyA?)-WBB@nWp zXwk+n_J9(P&AXwy_{aC~|HPnx6bsu^Mz+u2KU7Xr^V+$SLTp{w@m7cykZ}sL2g#yy zT)lm9h$T^YGJZDAEryKuqa%V|^+%kGU`Wb;zs zU%v0QljAzt?xEw6oB4RaTiKRu6HYeOPGarM)K5vsK8r2hk~bWH-k_kK8G{P6#siu|W=4T^)A(S5t+eOHMdU1DRz`<=aD`7%mb*04H%ZvEGz?_Qz zdi1Z{Yxr4#ovrmC?1nf<+6&(Y2QTzIK5zAB?5o5kGEG%PofZpPLV7l2yvL3cBT@f{ z!W0`u5#c6U?cB(FFr!}LQP4IjW@U?Bt?1Gl(lG@N(h`TxnpTO8Z7#|{$PZ@w(TNE| zqfOXQyYY(kJH!}hiBC&Qw4>mBm==H9LCvhewytA^+^D9U-Q7d9o~+Bk0iZ==2XT&e zd`9rr+PhZ+C%DA~bANijM99ADGP{!YI~+eA0)Hy=__qeo-=VUlV#31AHj_T_^Tey4 zNGxRbp|O2{4hrET2%zdSdVPLlGyjCCN8HU9kClP%h~#}p51L@vL0;d%763bJIY0X+ zK`JUN^PPd6=3aWGV}@ZU8<#h$VF$30S;n zgso%nC6P~$CC9qQJ@82JUlSo(!7!PV7 z_~;uNiu(JiAm1X@qk_%V=7+&~5hNBX)xkVOd`m!X#PDKLY-bd&5-fNWW-fwVD1w_e zv!OR>7i7+ua)rgPN#1rzHBwL`gl9riEXEFs|x%t->U~p4gqn73lmb1Ul=&oeTtn(W#M=$1xfu!7s1*x@75gS$ ztaJf8!lHzvd0~Ug;J0D4$6RJ-hmyx;n&bQgj@Hn>Kuq)O@;C0O+d%%3I-#oldO4aY z1W3U{^fQEx;HW5;@594F?BR72NDZhcN@Pn(`w%5HJ-rvEP`D|B^Yf)45X&E7XNy*g zG3VP2d5U!@x?lu_gpxWcVGN|EGPajGJ;&ig?4zX+A0#2`fy`{nWQCKn4@iVaTT~u4 z@&GetG)T*df8lGpQGE3ml;Jtn*x{%S7%6UEGO!ki)f7CMx1y87<+sg z#i$hws4(3=hJJGaHInd#4Gf^>p5u?V8COP5qX@O8^~yqgwfz2}kOW+C)7chi3cUn+ zst0hjX-lEWCB&%^nww!o7n<7N?Ypss87dZ`#fUqUSk@-cbi{=|2$!)hdvH4LS=V=e z`2r^f{oNxER|A9R6jWgnI=#Q$k~rc!(3FNO`4qie7a$wcQ2O57y12E|YYFj{Kq`gh zX@%_qu{olIH7PkoCY?fAw{9J=))vCyLCm}uZ*Je!E5a>``NfaA@+j2+>W%27DsIug zFm9SvIo+QUMS5T{2I9?wk02CUb$UHcUYNnS7;*Oh_0tfCRex7iV7$uo^fV#nzzn3k z%I#isfzYSr3GMq^!=C|E&|b2Q0`;et^w0n^poSN8AP5AA2(K&3+)cTYlOs9DIe?PF z(0sk^ZIg|8?=}k?RNzEeqJ}4o19x?}mZZ1>J3sneaiShKH00L?pcW|e{go$MYG4Au zfp4G3If2XXF`^t=hODPU&z+<7;vciYb)owckf_oHjTB@ z-M24))C;wBY~F#yEH`s|lyqoF359R^MG-d7F|;3(qEiQgH8ph(P!&5H#*zFY3xM3V z(&BypxoqFl-rL(tp#bAr=UE;!ZI<5rCU1;l8E_@p2yA9I6jP_(_i-ST8bZvI${NT(%2`mA!t@!_ap!lI(`ix4p9jMED8Bp~eV z#A8U+LW(V@!KC~m`x+ZnfOH{Fy?*(UhI0M-^%oV_AVTUgqH%2>pWw zN#JJFl2b2Royo^p0<^*`&`qc^82rHw2$wbhL9lUgod@6(casc#^e7=5ObINIA)x&~ z!{dNDc_})Z^Gkf{I99DP?D+{RDie=90|h=5I#5_1F}scS^Hv6u4;YuYVSboD?c6BN z7aa}@N=?$rtEHzG%kMiqAwC65A$a5@Xkt7TPvH>|0MEZ{)bHaH1L?@a^#CR!a_>te z<}AJ&vq?(kFfN?1wLSFb?B6u0FA-9D>LWYp#1Um*UJ1W3dK#7>XVJ6pQ^9KylM6u{ z=sPu@8FLte;e$c}pi6T|b9-oU)73x%ON5goJ6m_qn7NV7caCZmk$lTMKf#AY?jcjUAtiUljWUt zhb0^k5#_k`bQcWAwzjrS_UvTjFH>4>j>1H*hDH#ycr${>O3hA)Vdvta2Tur~R$qkp z@EMsnBr8iCgpQPh6I#HC69;4sIIi6f4tl}+f}_fU9#3M#Xd}cTJhYFoMujkZ#J~1| zkiLu}J9Hk585>)LE}#rr+|l{SOuEXm2gTq2Q{7XVA_7T&4k~mC1^uhb0Ii6QiV%Aa zxs+$CBN2!@ssaVz3p;cBHa{l1URGz$AHc(FZt^{;lOIjB*%v^;!Sb^4@?Hc$c=7$( za%GG35hM@N<{)KJx$#rUJkBq-ieH(U4hxwGFqno6rA0-C?QN}qBeL6#X&bh#kofxf z^Ae1K^w6S-l&Dq!$NDBFgdQdP%&B5>bw@`>-Qjk$Dx(m1Mkp6BFkilXO99)79{FYG zSOm<|t8U%m1F%0!oP5}}&oDR=2RE7&P@p^;&OIhGqkl^n7anAeyhO^=gadT%Ev04f zKh-^8Xo!0x&SwNj)XN@9z(%pI$9RH)w9Ol|+rfeL8~FuL@Xo6=>~laL=Ct$_(k(<5 zl+bF}=ET|nD=Klp##drnV#yEop-jb>M=%Nv7=w`FKtsWL0=4U8x&NBK*DT!rpWy}c zCSL7OXK%^##E-_N|1`#DvmEMwnBOvsETF_-c4Esp7k_pu$&eut9a7NEOl+&5oVm=M zBA5zp3quC_pzMuuc~1Les!U_C_HSH( zYz#8X?7^;veX4V$RTd2%^}~{@FIu9H1=+3U-MfPW$3SY3$|+R+_x2x;MCQg(1Q2r( z>^_=lyZ;W#THE2B8`jsT72+rGqSFS>+OK=GwQIlD$3@4-FGtWN=N=}X>`G?xC(-Yq zDUl`u^$r8JwC@mkW!CputY13`0V771yToX*2-3Y48hSGfsl6mknQT-BU0I%LeLbE{0( z&%WN;^#tUgOLsL5ktH!#FY4-ODWuz8N=nN5O*vRYBtAx*`c}h5swnmADxT$~g@vS{ z<}H{tOy6hZC7cz|=;RiR4!12%olF!cuLmkk|Gw|e9)}?~_no0kKY9982!ltL3i^fh z%ja^+?R?yvRY@_dVRM_9~rG)``lBh%PvS*&(+;ouFdjH^a9_*$Hn8LFag({(&sQSmDc5Z@|#+ z{|fg?9FbYv-X#a@lBz~8K)>bZfsXGEhVGQmV*ZTC3>4ymj$=PMD@=+`vJvhARJNp<=xfe z9TVVDuN|_E9F&T_^Tl`uG3GZ2akA}ym7O_5L#)t`U}4B-!CW#GTC@=nm-%YpFF2&bv4|YFJ5s7K2CqqI6-=8 z0SIs^L#V=M;FBPoBd}j5!=GB$d5+9pC)A)N6caNu`!aR|&NR*1tUhO4gAtZFvK-Yo znC7~o_V#uwOagL+b)?=cB~D5K7M>?RYSn>HkJA6C?hSO&Tt>Rh;#kM8N`z8aFy7#xQN1 zT<8I$j6MRO>C)OtZ9y7MMVU78YJka;436{XbMLk1n;1c1RXrXF_KXGK5WoD7^JyL9WD!k!LkM&F^KM@b2BpXdxQADjqfy2PUEeR`^Zf*7zH%8{R17~FDDqI zP8>gOnB_=@)+FU28=@o1?l<;wJq*&e@r{EQ{Qi86lNBh19~-K-8YdmKTZ6=sDt!uV7PwO2c7`&{GL#?~SUGnrrubF`#?a9w#g9Hd4g0Q^x`w4cefEsd zYozjqx?+;%rV+VTeB6aJ?7*mqjD`|^3BcmD5yLcX97#_81{j%OzNe6h?br-bF!Qzq zpP{>_=X>XM6Zh)Ux#BdFSOZY=GOFe=qtl-W@H5^>C)*ww1*|B&W9K7r2T8txMfbX! zwq~84o}OfdiaO!&^ydt}^)0&Q5Jvl3vaWV~#sOZkXun2heBP)jE|j4JJ$j^UYc_Cr zw5hyD`r^flXCot5CTwxYJ~=@0g5kcFlMEPS5H`H~^aUkCyokxiJpfDq3rUW;{HYJD zU<6~$C1qvVDMW>{HTz$E>NcSBrSOTHaZgD+mv$ohU~%qc?JukPOfZ0S z+eA5v3j~@@W1)#-9aeGD$nvTv4kqq9nVDg{lLWWwhoYt>lp5Am2Ary`8Qk@K4T(`8 z{c+QTAOf!B!Mj07!)eW`693^@SNXcsOC{|KLN(=fL)X;Un8EJ{=;P&9bQOi|l`tt_ zxt0BXvvNrt-f3>mkAa7Pj;OmS=g=m9bGzqCz%i&p!5|-MA3tUTvw)u-BNrzG>|H#w zGZ+?bB%va%rMhL%kVA@|#AmpS=92hLtTKoM1MDqXDu5Kt9(%#lax|oUI zlmxr0SC_yY?&agtOH3V$h{)>Lv0yYjS^d+!6nyq9fs+XTmhbK!l4!s6my8yR7GzNK z*oXHEPD~U)cwFbe3vw6=XcT&m2V9kiRTg{~s{I`In#nyrJ`dd0;jR?SOIIU1B~~i- zk!`aWv$2|V4jk!Ok97WMYionL6rTHyvWLvT`Sa&ri7A3`0ONIlNKN?iI0vc~VX)Mx z>so*x`j!E+;yy-JxL*KQi7)XrwZ33Th(hw_rXp!ws>J1DIN{Y@T^8wG*vWNwRWJYy z!9slU7!q4$IKaqfELW3}Hd-lZ!Lr#VBH&Y1OLV(td6iR;mm&qK82@nC(ua! z#&2T|$SB{TgW29FYwq-=l_w1s67%M87RG&B+CB4y|9nR(n@MqY9UN+XN=Hq4}? zhcSjwX#X3@6E1ieIl0HAJi$3LY9&vl8fM_FZG3!`K=!SH3kF}S?o5L$x8cBiG%hfB@0&d3GTv>Jp2#dynSHs=_`~Pv=sgwJ|WnDJAvwP z!b#?zzCaZQaj6mCP6o}^x*UM)$rEaP)Wr)IMsd$U8Y6kUaP|=16p7Brh|pM=rgQ(E zrhkFh^ee0c<`WeMinu09o&uP+2MPhjETN@AxjOhXm%L0^(QW)S&C!qdtVy2{s3Wuv z?MHL-eZwU5w-e?TZ9NQV%{e&r518Etu!)NC7$7g942hYCP*Ve+q1Az0_$&AP2W}Mg zBcvPVRk~`HR!67ab*8+mOi)S5^xv>EA_NI31qLEcw2mQv?n3MCUyKNl7!v?7c;vdY z&YnGI;QP6^h#iHqIWPxULqZ+khK;&m&`4(y`;&n={ta3sLeSkH02Li|fk55xI9^bA z`*z;^im87;A7Zl`%p9Z#lMq;o7xv6g4@u9$=R{~ma6)xA?jLUIiD-VKr zC1@St26+^kp(Rcy;CCIDwl<1DTj;U;WY?~1l1eG>S^!awrEiX_nseaO19l#8tIBar%zK?d*~T#`r9|l?0Wk2IW5sEzOSA>O*4J} zy{$N>L$DLa9hZj~4<)3U{yjiEi1;FC!OYivc=6&2R5k{=_7|QmO4o3sz(RHgc^tMF z;$6j6CB`4G>{*75go_C8Lwm~3`sWpq0|*E%^ZF@_Qlc9d`hhA?-du|jJ zJfxFu)JoZpHvZj2$yZn_?cYlQY%r0l`N-`KPL+Q&e7>U%500Ic;JafUJcrGSkgH%G zY0;Z{7Sn+Ia3IZXt3%sTC{fT3yFqxn&Y&m762ZgkYpn6xyd&G;Q==!!&8}T%I_6=B zCImLh3L>lZpfREb`{QzKtkLiZA_OK+@5*8|hx34N#t=quVcRYgU_z*J1u(0`iv%Y5 zK=xZiP%E^i6V0f&*dw-q>@Hj#BGGYt!}|5~P$-E*^6di;d(y*8e2`TEI|!7=J$>=> z5KqYM4und@1ybZUNUIh8fPj=QU%nX5D3YU?IRZ)!S77o1jPH)(-{Cwz>y0k3RNX|I z*9kRfya!8PDqC8MHy}SEownox7N!5Gt{`w=7}qrYt527h~b27sHFIw{M&GEXc~ruJSP_F{NoGql4MPJ&^4rbaC#Tq}+Cj%O2VJ2R??o<`q26 z>3Y~1I-zrru0cz)fYqv7d%viNU@btxGfK`wZGi<(L{rCnOm-?F8#QGdh*X$9T65Pc~WFc(76T5nOAxz5B*5gWen6-^{E z&^MnkS&*I2Ku_sV0Z&WHAQTvxuX0z7flm}sR$hxMh(bW|hWhJRByaq2KBVazZc(~6 zV9_~F`dI%{t%2)TvL_PA8U7X1w+0t;64a&xaq6A7c0>pZ;0Gbta8Ib%oWjeCfN{hY zCW2W)1p(k@v>F6E;s&{9){c3;)zaG9sAmB}sKOCpa)etcn1$z;)|>^nSiBUHn1EnR zp;SZHEI{c?8mXazQZaQh$6v6j@$u;w&Ms; z>f~v{Rd5jE#+pM)=N~?L9fCkYu7N^YrS+=(k{lVix7@8#C;vd_O&2o%!f9$y6uG&( zNh3R`;j_TO|4w~)@;Tf>C^2~V9;8?yY3Y33888+^djNb&#`g*e3u!3wPMvE3pTH5& zLH4mesPz&+6KSL4(y|Wr@{Yd?aITcOyB=&O-h5LVw5e} zQbb7{qM<}uR4O{0q_mMKDj`W3KI^mC> z4{HXICuRG8qe3)k5Pa6~@Nf<`0K%oz-hICI-BP0c5zb~^_Mz+#AMaRClsk|C5F|1! z&8e)^;NLVmS|i9Nio+&DW)+kx;c01%LRN4H+095gGX`)#2i_YhY>72-Nj=*5f^6o9nxN@Ic3d7~++O$0|U!6u{l7Za)0ss72es z)K58%eUEg)Z^jDSZbfL*aQ|}mtiZ8>vJ8n&uLh?i+<@>J4(z3r)it8ZEyB7*K~5mF zEO*Z~_@A*ks~wxnMTJd9iN}MkrxuDhQk2otHvv=);->!ODhf9TCnJ4A0p@gI{GEf- z;U_5i)|8YbPkM>%VF(IhF{A_d%`_54F2f(Sil(L*ILt^Bc_aMQ2nNz7&2bA9I9m{w zgl2OYA_$O+5Sy52251T)gNd*f^9u;b0emA5s2&%wmI4cjoUF4vdBfV^>rPBVUfZ)B z9U>x5tCn^t2lk`xj>I{L&#E1jK(8jRr=g}KfQNp^w zx7F55=Z)e8r`-2CnUMoY8ErElc|b7Q^lU{RwHuNI@*<#_jiCyH+qc*mTm)~Fo0o^g zqcXM7U)k^9PDx2i+XoP!qHf9WLmNPTI$bKy@PeoV8_dSai77baU@S24ijja{nISV2 zq(Y1#m|{>NBy=8Y28^AZr4Bh9%4#z7++?+J9G@5?tFySuxnRPLLjea2)NYxUDpotU zlz1P~|FTrKS->)M9P*OxoZf3+8R!Kh0$I4Z?@^IVDb1jM){&(rGT{E8Iz7L>QPnt! zKYez4#QN4QWlXq_L^P_yb*XS&FRK!9W8R;wYwE_b_l<)>a;|SGD*Ah*bxyE97%} zG9&;j>WpvtC?}D8%V5=!A?tgbgZ5n&Xhack<3Qq2EEADP6T@}w^Cj|L8JW9{`2}jIulqO#We(6mLeqa0wc$Q=Z^dH>fPFZAyUf6}hSGxUc}vE98TFETyH;LU zJiy~?*BU8f59K{aLq=}i>{d>3g;a9~a1n|-YR6e{9b(r9B|j{LecZ_0Jgj^s_7bkP zO+GtKLh02>T^+Y_J0?JZo%O+;KdI;AS|zsF)$30L7dbh|N-WQH5jiGpy!qOf7v1>- z9zE#hfJ%`15c_+;FzgFS76?efyUJZ}sS;$CXIeTy}GiP#W11 zXY4ZhT%~2+RFJT!_M>6=B-I9%K4ta0Z@%mHBW;AI5-isK{%-xwI+OJ>)3oQ8+&)w& zjE|j4CB%V}Ru!U$!Xl_&ahv6%yp)u89CXQdX<2(hy03Y?Wz~`N)KozvDhqO@iy{w@ zJ7Q<9X82)`Rpy%o&HLgGln54Q-vMLw3`Lve#bT~rGsE*y+eASd>y?>F-z8nq7*HpL zAB*TO6w>mFiu@!JWf_cpa`NXUVS!D2;cPr6^89IrffV%$;3<@V`X*uIf9O5-Dim?)$N?^FzCibHtILUW1V`J}#EApO?no+-5#jV#(@+Sjd_r_+Es1!Tjlg$a~bd8E` z>x>hvp->kx^fS?m7LW6a&vssxmDJnVxRNnM=Z_jjcI1~L#0*a9ruu9^Yq_hYmhJUT zl|NaIkLiypU#V>LYaD-U5RB+eqZa+~JPtNacJn2;B7B%AYjIl|k$T=$#|j1!7&C#M z@S?yY)o%@AjECTA!fE7=67ZuY-da-S8|}s@(^0PsjU4+M(*)|HRy9X zBL2dG1;5?Qsl;mo#x3mKKp$+#iUu}gCR1`yI-N&i0>eDr`*mL5IgY=lqqKi8jC=Cg zQtP>&n9a&eJ0@xMz8~%!PPQ-30SVWEZL9dga|G>%BPdikP>o)%M3LPT@u-}KPxm$i zp|h2gfLQ0S!+?(y?foaF>HKhf13Ks9Gk&~6OHqtRM}PKO`6N^U@cxdL~^2}p$JD@3srv8rupBW zN|%^o`;wdq3SB1-BYz6=W@MvRgx*-MNpbARXdgdW$+6m!sG+~B9s`DZKx>c`8x1g( zSdk!S0PMfB@J@g|0RRT})-`{vWCk0R#lwA}eiYh6Bx8f?KsNCY7gL|ShGZ5Iv(uqlA@LeEoHuW7{ho=mXg;WgvjKdg zMMz%cg*yuY93E+2)Cei}MbZ{ZxgE!5b`qTii+Ur+sZ%5+F|xw`XPkIAwyl~xli#9B zcO@?%k#Wf`T-)gf!T=MJU5*H~=_H6RS2&QQ7=g3)puP~_gIG-Zj}+15v7KgZlGszkX^)=-iNCQTOfJcCD< z(mUIsk)PYt0Bst12A*FrpcE_Ek_ewAB92BRpf6bN_UJBY2T6NYRe&9uf#dHI`zz9L zRP~Q1B}G7=hb>TbKhT-H7Hktm_2|hXcx{}rWE2HvDO=x)$hF`-=gSvcGEr^mDM@xq z%f3sOF6GxNJHbm?b{~$K??7Lj5-s&3Ejz!FA#i%)HfM$n@n8WC;hlRJ51`ESyiew- zR1FvO?a@G>+_A8a=mi(udAp$yr$u(g%H+(1cLya-nlQ|(=b^kKUP|)@&ps?tcS?h# z#_9BGJBQ%rX-KJ9ym&F3eS&ak5TQj&5480~cAz;XG~jh#V7ar)*-1UzUbi49w~bT; zkExK6m}SBLs?7qHX8V}FMU7iL_(R8islGS+lYM>pr!rIY%?tzlky_;nh@ zn-yPgHEY!$BElU@_B=s84PeXFl|d?(FJGoeVpu&$s)B98*vw22N0uh0{B#9lyQ2$% z+=#N~@nP*4>XoB~0csTC-c z-Qsa3^ZLq7xA|*DM~>Q9X$EQTdz2p`sFpMJ)b3yjBhiECG+;1ogEDOPip&}+%jor6 z+svp2`g@OyBr8y6V^~5Vs-JdFjGid$;;M-_-ixwEC%j-#l=i+mp`E^fJxNDP+!ekWd^!YA zfr^Nh6+*AN*@mkzDs)x8tzojY^0%`tqG=)qRy_|(Y*1-{xEFqID9VqVF%ihZgimlK zXAR4R>raf%QBhayEjoljEx&nF=-D@gR+pY_ZZV(2b}Rh}R!H3VSv%Zl{$vrBDF?9- zU{Aim@+K+sHhKxW%ny~g?zK!g*|4FUXJUrbvfTOzTi=}2S;DlvSm+Gg6*<|`w`cA; z%l>$|H^Pk%S~%{kT;(wmVvb|-@dItWLCN}a_?g)E``z1aOX=;M*zq{L`V!TYY^_6= z*L#dJNCh3H9D=>D__oyPc!{e?R4KDn>5Io>TY{!b&5~Fi-hRILVTy;OY{%;FP4whN z9P>i(^^=Kyf_J!;zVkJ%mv5s9tb0@JEKe*2|F!eR&VblF1xfVMP&veOsZ*a~Zfy)jXWb+z% zR`^&ja(67e1QqYmt6SLGItA)Dig7=JY&{H_S>tyJ#~@0a=CvZMXm0FtVInuo7XtMB z(7Q)8gMVzT)r%xAD4stm*mi$@x}6k3s7lxQ`6cr33D&fA3sfcS+_WXJ`xKon8Yfz{^oD$tM~fZ(Wy(Y+w56wq%&tOfTpeBkyKq1z!}L?uGO z9njC4Y}>W~00(!&$GgO89xgDU&|L`y>^zIINbs19jPfr-C)`if)2q%f@?|{$m0;$5Ur6 zcPXGa?EU@va zK#WCE9+9$+Us`D`xu#+rVg>{SJG7-pj?lz+sXBmKFwdRcfap3$3c{z(ApRed1a; zV$fXTZT`j;avg<~Ku}GdRoo<}58N9zFv@$!#{so?l;(z;@MStYp8aQ5tkgee#nya$ zFnGs!D8XU9Dwr@C$h^+p;U-uu?(FP*3IDz+rVU!}>RRlFf+<7gr&l3>YRm597w-l~ z1c+3C0a1VX%dba0x24?qv#vMmnve=Pn$}4DuD<>;8Q(%usiUAR>KlfjFBLIGm~`|* z&)_GW+fSd$pyhKK4t;xGPo@@7?@YvwV!x#G8FFeqoHo6fm60r6$x%^OF67=83SD4o z?%fjsYuK%vfRE)BHb#f~o@CIhoimy^9L}vt>0o61w{OQQml=6BCDc0I{>kW8jH#cB|($6LmiohEguM)`B#zWr`ODf zp6S-+xwt?L3&LD z)=c`&Rag+DutLKV)CxJ~vR^J;BEu=dnp4-v<)PO@Bq8{y2*^-EW)Skwor%XY2Tmub ziM7D+!BSVxb44%z{{HCMii)>Ft#m;5aiw)9u`&E9tpl6QmDVl#PxD|=Y}g?p(-`0c z#$ePluH(G#Sq%NFRF9gE?(aG~V}LBFyHrX*#;_5d0PJ6spbl9OiRt0J#_*lU|A$am z8<7)YSU&RXRoIKJAxZ_lfb?<_x}6B!y&KME0r)2X2vEuex+J1s;e*ONc1)9Oi~Rgh zMGc;_v9_kvBfx)xAb-u!N<+*+K`s0NZ{cpVEMH$kqA9Y9E2HbbeB^=a zUB8rdm<@q}Bl063p-|O!5~Ay1b)#sY>x6f`v7 z!58;UZsh%S@a{A;;$?j71-{W9QI*6!TYMHmI&!RvfWJ3gEZ^+$1v$;@u@RFuBESBm zCGoA#_}%>`D-|FSoWjOa_`pBF4bz(lnhc zNR%OUFMJq+fcO=ex)J2g03e9M4^~Y9sCDLTxH%DI=%z{&dtO|uy&(;QfaZ&mso-wg z*m#mB5$Wsb-qqc%d=G}LF(}TY%pR75B+OR@K|)#v6_q%-%tCQ=QU*XAgrI&L8X6*y zh~^q-xLy{*p@N-_Ob;0vhl}W&ae?s^Fb`5}9o_>*i1IK1=G`GdC%ZfP5fqc9t;TUa zS%B>Su3Ja7rbGfBNEEkq%E`jR_5_S z%SmxoB#@;v0_gZNG~$wLL{~VPev5pf0B^Ji);2aA7fDt6EY1gi^E#s zK;tp&vA4(Dvz8a2U^A@p*U**Kwc#}! zjpS2-5ayT4%64F}=15Y~c9~&U0z7jsyz{p%#6(A1jK1sWxF)({;1D1r9tJHQrNdQV zv)(WEY5|lf6y^p>7@WRU&(28M7f{z6(cLN!_>5-iqQj)o5ReHT-n9Z94XXS&%G#pi z8&L1p!S@LiqJpD<9R}))?iF+mvVp&&`gn;rEO4~)h+#%)y9_Wtbqzp~+VSfJ7(BuX zC}QC#j>2WoE5T)*)7D^w^r|aE?Gs4Jhsb-n%RpH{hwRr1T?PpTUX{eHIH`uvCA@h3 zdLJ450SG)oHe%k1KtyM}z?74uRIni9m`uH3VT{NKPf1~=G>iZSIEUGb*fDF6_lnk# z1m}?J?*&|21F7?4Cy+QqgVLdf938xJ7PeM)*E}G33-MvoUfs0_Nkf<*r3cu69Qmju z2zo@@1tAJlT;pL#cFJ=`Iwy5_Xx6SGYJ`SH(Y^qGLIgYgN%ERfv3r;ul;2ujeDhl+w?%oCw2R! zXXh3a)PHYfV>5*eEF-#daz-H|Q=!JSrEf%$6@!l56&7{`a6o(_hG2W{99OJJ38+jJ z0}tRBqDw*gaN6BZn3xlT3mOkBt`>}$M0-9 z=uz_T22CFeus6zj4Woz#-YSD3CF_vO!-Qi&O+|%}TwzYGx_ldHNYC1Vcd`c|qWkOM z*dBTgFFp^G#)qtn@t^5ZILSyFi--oRC)hFgFb6?DWWeHA9Dy8!nj%sP zh2%Jo%Y7#p7#NUL7Ed815Njxt}-+>zq zZ(kyTbg08p7ZqIg2MW3Y8clP(NLRhuU6}6)8L;DObFBOD*K?Qf8e+y$(df##7}ucI z*-kCGKVR;RG+3YW$J2`#rp#Y$1@|s0G zsNR?O@;(gPd=@tBi@+vXX#bqw`cH^tsNw*~YaSDN@7}#)2fw_apgW_pd`;_ISLwOr zyH$s=4{F##Wtv?1otRxP9SIyUm&za>2DeNW8>|vB%6DX1!v@}nF*TUtR5NOp^#fu? zAw+WQx`M^YOE`s7^^g>ek%R2j9iK1DH61&@%TUe|Y--9fc^bCfLXruHw4Fb5Y1n1! zQN&7-ZWV9QKQNGwA+uY4em;#^M160cSBb+5$tVfXzFQUKHw%*K^!SzlU?oquhgKY6 zQ?S(}EpE?5ln;VEVTUtnNGJ|rY5-;B&2{4?+Y^ozK_gLOQo1spI19_9<* zyVaiJhwrYETPhS}PF9?57pbEV^w+w+f2T|w;43mmdm zuGE%d&70Qz@k{dCO1&8eV46`)v0Qrpg7ch;(&Em5Q`Sm39$G5(=Yy(T%bxnNG}1=9 z(`)yjRQNO;%6S_ctS2KP$QNTQ*IHikOx_MQKW#`4Ea^+8a1)_{>3LK6#{J68ql~v5rIcl?0 z|M+*<;j2zPd9Qk+VUt$+#-Cd^UVL)9+*g2?hvQS`c3l60x>e2ti;lk4i5(lOT;F~Q zx&7gD@oM!jp>2o7d*H9zyn9KDPuU^GFT0oI*{gI0EXr%@vP~DM8GZj`_(bYN z9>#5z(%}c40S{jK552Qvn5FAxf6qYY`jgN&{54UbmIr@bdo-T=e;rEy;%l+~_>P)+ e^8ekJuJDBiED~6Ab^`qvv)purNvW}W-0 diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/data-analytics/12_Preparing_data_for_Power_BI.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/data-analytics/12_Preparing_data_for_Power_BI.md index 97aa491f15..36d537cdd1 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/data-analytics/12_Preparing_data_for_Power_BI.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/data-analytics/12_Preparing_data_for_Power_BI.md @@ -47,15 +47,15 @@ report, to avoid breaching organizational data confidentiality policies. 1. Create a new ``Python Script`` Source in Power BI via the ``Get Data`` button. - ![The list of data providers is filtered to show only Python, and "Python script" is selected.](assets/12_power-bi-python.PNG) + ![The list of data providers is filtered to show only Python, and "Python script" is selected.](assets/12_power-bi-python.png) 2. Copy the content of the script cell below into the ``Script`` input. - ![The "Script" input containing MI Scripting Toolkit Python code.](assets/12_power-bi-python-setup.PNG) + ![The "Script" input containing MI Scripting Toolkit Python code.](assets/12_power-bi-python-setup.png) 3. Update the connection URL and authentication method appropriately. 4. Click `OK` to validate the script definition. Power BI will execute the script and report errors, if any. 5. Select which DataFrames to import as datasets. Click the `Load` button to confirm. - ![A list of Pandas DataFrame objects are shown on the left, and a preview of the "tables" DataFrame is shown on the right.](assets/12_power-bi-dataframes-loading.PNG) + ![A list of Pandas DataFrame objects are shown on the left, and a preview of the "tables" DataFrame is shown on the right.](assets/12_power-bi-dataframes-loading.png) 6. Verify that column types and dataset relationships are correctly defined. 7. Build your report visualizations. diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/04_Deleting_records.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/04_Deleting_records.md index 73bae45465..c69a1df4f2 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/04_Deleting_records.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/04_Deleting_records.md @@ -43,7 +43,7 @@ print(f'Imported record "{imported_records[0].longName}" to table "{table_name}" ``` *Previous cell output:* ```output -Imported record "Scripting toolkit foundation layer example 04:Thu Apr 24 22:57:24 2025" to table "Tensile Test Data" +Imported record "Scripting toolkit foundation layer example 04:Thu May 8 23:40:02 2025" to table "Tensile Test Data" ``` Now let's delete it! @@ -58,5 +58,5 @@ print(f"Record {imported_records[0].longName} was deleted") ``` *Previous cell output:* ```output -Record Scripting toolkit foundation layer example 04:Thu Apr 24 22:57:24 2025 was deleted +Record Scripting toolkit foundation layer example 04:Thu May 8 23:40:02 2025 was deleted ``` \ No newline at end of file diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/05_Functional_data_and_importing_data.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/05_Functional_data_and_importing_data.md index 236c4dc300..728a6d9ba5 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/05_Functional_data_and_importing_data.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/05_Functional_data_and_importing_data.md @@ -181,7 +181,7 @@ ax.legend() *Previous cell output:* ```output - + ``` @@ -276,5 +276,5 @@ for record in setRecordAttributesResponse.recordsImported: ``` *Previous cell output:* ```output -Imported record Scripting toolkit foundation layer example 05:Thu Apr 24 22:57:51 2025 to Granta MI database +Imported record Scripting toolkit foundation layer example 05:Thu May 8 23:40:28 2025 to Granta MI database ``` \ No newline at end of file diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/06_Importing_and_exporting_tabular_data.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/06_Importing_and_exporting_tabular_data.md index c1d1a61d90..af6e4f8955 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/06_Importing_and_exporting_tabular_data.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/06_Importing_and_exporting_tabular_data.md @@ -206,7 +206,7 @@ print(recName) ``` *Previous cell output:* ```output -Scripting toolkit foundation layer example 06:Thu Apr 24 22:58:24 2025 +Scripting toolkit foundation layer example 06:Thu May 8 23:40:57 2025 ``` Import the record to a Granta MI database. @@ -287,5 +287,5 @@ print( ``` *Previous cell output:* ```output -Use MI Viewer to view Scripting toolkit foundation layer example 06:Thu Apr 24 22:58:24 2025 and check that the Order in 'Characterization of this material' is 1000 +Use MI Viewer to view Scripting toolkit foundation layer example 06:Thu May 8 23:40:57 2025 and check that the Order in 'Characterization of this material' is 1000 ``` \ No newline at end of file diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/07_Modified_date.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/07_Modified_date.md index 384d135409..d42fe5436a 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/07_Modified_date.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/07_Modified_date.md @@ -91,5 +91,5 @@ for record in exported_data: *Previous cell output:* ```output "Ansys Granta 1" imported the record on 2023-09-20T12:11:05.873 -The record was last modified on 2025-04-24T22:58:49.89 by "ANSYS\mi-sw-admin" +The record was last modified on 2025-05-08T23:41:34.65 by "ANSYS\mi-sw-admin" ``` \ No newline at end of file diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/09_Modifying_record_link_groups.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/09_Modifying_record_link_groups.md index 055198e741..e02f9584bd 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/09_Modifying_record_link_groups.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/09_Modifying_record_link_groups.md @@ -120,5 +120,5 @@ print(f"{source_guid} ({source_name}) -> {target_guid} ({target_name})") *Previous cell output:* ```output Created 1 link(s) -000016f6-000e-4fff-8fff-dd92ffff0000 (Cast sheet) -> 2fb527ec-9389-431c-9d34-cc3a71bef19f (Scripting toolkit foundation layer example 09:Thu Apr 24 22:59:30 2025) +000016f6-000e-4fff-8fff-dd92ffff0000 (Cast sheet) -> f5888042-135c-4224-b2f0-390318c5cabf (Scripting toolkit foundation layer example 09:Thu May 8 23:42:02 2025) ``` \ No newline at end of file diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/11_Get_unit_conversions.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/11_Get_unit_conversions.md index 6545a661ae..010daf1297 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/11_Get_unit_conversions.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/11_Get_unit_conversions.md @@ -72,212 +72,212 @@ df_flipped.style - +
- - - - + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + +
 factoroffsetequationconverted resultfactoroffsetequationconverted result
10^6 psi0.1450380.000000174.0004272460938 * 0.14503773773039605 + 0.025.23662810^6 psi0.1450380.000000174.0004272460938 * 0.14503773773039605 + 0.025.236628
ksi145.0377380.000000174.0004272460938 * 145.03773773039603 + 0.025236.628332ksi145.0377380.000000174.0004272460938 * 145.03773773039603 + 0.025236.628332
psi145037.7377300.000000174.0004272460938 * 145037.73773039604 + 0.025236628.331896psi145037.7377300.000000174.0004272460938 * 145037.73773039604 + 0.025236628.331896
MGO125663.7061060.000000174.0004272460938 * 125663.70610560982 + 0.021865538.551704MGO125663.7061060.000000174.0004272460938 * 125663.70610560982 + 0.021865538.551704
Pa1000000000.0000000.000000174.0004272460938 * 1000000000.0 + 0.0174000427246.093811Pa1000000000.0000000.000000174.0004272460938 * 1000000000.0 + 0.0174000427246.093811
MPa1000.0000000.000000174.0004272460938 * 1000.0 + 0.0174000.427246MPa1000.0000000.000000174.0004272460938 * 1000.0 + 0.0174000.427246
J/m^31000000000.0000000.000000174.0004272460938 * 1000000000.0 + 0.0174000427246.093811J/m^31000000000.0000000.000000174.0004272460938 * 1000000000.0 + 0.0174000427246.093811
MJ/m^31000.0000000.000000174.0004272460938 * 1000.0 + 0.0174000.427246MJ/m^31000.0000000.000000174.0004272460938 * 1000.0 + 0.0174000.427246
erg/cm^310000000000.0000020.000000174.0004272460938 * 10000000000.000002 + 0.01740004272460.938477erg/cm^310000000000.0000020.000000174.0004272460938 * 10000000000.000002 + 0.01740004272460.938477
ft.lbf/in^312086.4781440.000000174.0004272460938 * 12086.478144199671 + 0.02103052.360991ft.lbf/in^312086.4781440.000000174.0004272460938 * 12086.478144199671 + 0.02103052.360991
kJ/m^31000000.0000000.000000174.0004272460938 * 1000000.0 + 0.0174000427.246094kJ/m^31000000.0000000.000000174.0004272460938 * 1000000.0 + 0.0174000427.246094
inHg295299.7144450.000000174.0004272460938 * 295299.7144451761 + 0.051382276.479110inHg295299.7144450.000000174.0004272460938 * 295299.7144451761 + 0.051382276.479110
Ba10000000000.0000000.000000174.0004272460938 * 10000000000.0 + 0.01740004272460.937988Ba10000000000.0000000.000000174.0004272460938 * 10000000000.0 + 0.01740004272460.937988
hPa10000000.0000000.000000174.0004272460938 * 10000000.0 + 0.01740004272.460938hPa10000000.0000000.000000174.0004272460938 * 10000000.0 + 0.01740004272.460938
mb10000000.0000000.000000174.0004272460938 * 10000000.0 + 0.01740004272.460938mb10000000.0000000.000000174.0004272460938 * 10000000.0 + 0.01740004272.460938
bar10000.0000000.000000174.0004272460938 * 10000.0 + 0.01740004.272461bar10000.0000000.000000174.0004272460938 * 10000.0 + 0.01740004.272461
atm9869.2326670.000000174.0004272460938 * 9869.232667160128 + 0.01717250.700677atm9869.2326670.000000174.0004272460938 * 9869.232667160128 + 0.01717250.700677
torr7500637.5541920.000000174.0004272460938 * 7500637.554192106 + 0.01305114139.047523torr7500637.5541920.000000174.0004272460938 * 7500637.554192106 + 0.01305114139.047523
lbf/ft^220885434.2331770.000000174.0004272460938 * 20885434.233177025 + 0.03634074479.792996lbf/ft^220885434.2331770.000000174.0004272460938 * 20885434.233177025 + 0.03634074479.792996
HV101.9716210.000000174.0004272460938 * 101.97162129779282 + 0.017743.105673HV101.9716210.000000174.0004272460938 * 101.97162129779282 + 0.017743.105673
kgf/mm^2101.9716210.000000174.0004272460938 * 101.97162129779282 + 0.017743.105673kgf/mm^2101.9716210.000000174.0004272460938 * 101.97162129779282 + 0.017743.105673
dyn/cm^210000000000.0000000.000000174.0004272460938 * 10000000000.0 + 0.01740004272460.937988dyn/cm^210000000000.0000000.000000174.0004272460938 * 10000000000.0 + 0.01740004272460.937988
ft.lbf/ft^320885434.2331770.000000174.0004272460938 * 20885434.23317702 + 0.03634074479.792995ft.lbf/ft^320885434.2331770.000000174.0004272460938 * 20885434.23317702 + 0.03634074479.792995
in.lbf/in^3145037.7377300.000000174.0004272460938 * 145037.73773039604 + 0.025236628.331896in.lbf/in^3145037.7377300.000000174.0004272460938 * 145037.73773039604 + 0.025236628.331896
J/cm^31000.0000000.000000174.0004272460938 * 1000.0000000000001 + 0.0174000.427246J/cm^31000.0000000.000000174.0004272460938 * 1000.0000000000001 + 0.0174000.427246
kN/cm^2100.0000000.000000174.0004272460938 * 100.0 + 0.017400.042725kN/cm^2100.0000000.000000174.0004272460938 * 100.0 + 0.017400.042725
Msi0.1450380.000000174.0004272460938 * 0.14503773773039605 + 0.025.236628Msi0.1450380.000000174.0004272460938 * 0.14503773773039605 + 0.025.236628
N/mm^21000.0000000.000000174.0004272460938 * 1000.0 + 0.0174000.427246N/mm^21000.0000000.000000174.0004272460938 * 1000.0 + 0.0174000.427246
diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/05_Edit_Data.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/05_Edit_Data.md index 227b2f99f9..00ecfb47d2 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/05_Edit_Data.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/05_Edit_Data.md @@ -44,7 +44,7 @@ record, folder *Previous cell output:* ```output -(, +(, ) ``` @@ -119,7 +119,7 @@ print(f"Record Name: {record.name}, State: {record.release_state}") ``` *Previous cell output:* ```output -Record Name: Scripting Toolkit Example 5:Thu Apr 24 22:50:31 2025, State: Unreleased +Record Name: Scripting Toolkit Example 5:Thu May 8 23:33:18 2025, State: Unreleased ``` ## 'Not Applicable' flag Further edits can be made to the same **Record** object. In this case, the *Condition* attribute is not relevant, @@ -143,7 +143,7 @@ print(f'Record Name: "{record.name}", State: "{record.release_state}"') ``` *Previous cell output:* ```output -Record Name: "Scripting Toolkit Example 5:Thu Apr 24 22:50:31 2025", State: "Released" +Record Name: "Scripting Toolkit Example 5:Thu May 8 23:33:18 2025", State: "Released" ``` Check the `Record.all_versions` property for a dictionary of all versions of the record. The dictionary contains a single version, confirming that only a single version was created in Granta MI. @@ -157,7 +157,7 @@ record.all_versions *Previous cell output:* ```output -{'v1': } +{'v1': } ``` @@ -200,7 +200,7 @@ print(f'"Record Name: {record.name}", State: "{record.release_state}"') ``` *Previous cell output:* ```output -"Record Name: Scripting Toolkit Example 5:Thu Apr 24 22:50:31 2025", State: "Released" +"Record Name: Scripting Toolkit Example 5:Thu May 8 23:33:18 2025", State: "Released" ``` Check the `Record.all_versions` property again. The dictionary contains two versions, confirming that updating the Mooney-Rivlin attribute has created and released a second version of the record. @@ -214,8 +214,8 @@ record.all_versions *Previous cell output:* ```output -{'v1': , - 'v2': } +{'v1': , + 'v2': } ``` diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/06_Create_Records.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/06_Create_Records.md index dde8f510dc..56f011e83e 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/06_Create_Records.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/06_Create_Records.md @@ -35,11 +35,11 @@ new_records *Previous cell output:* ```output -[, - , - , - , - ] +[, + , + , + , + ] ``` @@ -57,11 +57,11 @@ for rec in recs: *Previous cell output:* ```output New records: -http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=a5d09746-e913-461e-95ed-c1e99dd47417 -http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=568f97ec-7a71-4930-bc4f-d93a88f5628c -http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=90302b6b-cdff-4dbe-b02e-eeb0fcfd5757 -http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=439e3fb4-e63e-46da-b2df-956f90321c4c -http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=5d991280-8654-4c2a-9326-d9a6ac01458e +http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=08dab5b4-668e-4aa2-8d1a-f3be569b99cb +http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=a9432f8b-6708-4609-ad4e-8d6c21567543 +http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=2b670d8e-a9c1-44dc-947b-bca3ebde9ff2 +http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=0ed3c938-6bc4-4b3e-96ee-a28b113c1679 +http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=5130e5f2-9046-45d2-a35d-930d93baf36e ``` ## Delete the records ``Session.bulk_delete_or_withdraw_records`` accepts any list of records (e.g. results of a search, diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/07_Import_Functional_Data.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/07_Import_Functional_Data.md index 0733268a7b..1034a82483 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/07_Import_Functional_Data.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/07_Import_Functional_Data.md @@ -39,7 +39,7 @@ rec *Previous cell output:* ```output - + ``` @@ -253,6 +253,6 @@ mi.update([rec]) *Previous cell output:* ```output -[] +[] ``` diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/08_Create_Functional_Data.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/08_Create_Functional_Data.md index a2ed6da68e..ea030c0275 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/08_Create_Functional_Data.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/08_Create_Functional_Data.md @@ -421,6 +421,6 @@ mi.update([record]) *Previous cell output:* ```output -[] +[] ``` diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/09_Edit_Tabular_Data.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/09_Edit_Tabular_Data.md index d6bd12854b..4c21e3a878 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/09_Edit_Tabular_Data.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/09_Edit_Tabular_Data.md @@ -167,6 +167,6 @@ mi.update_links([new_rec]) *Previous cell output:* ```output -[] +[] ``` diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/11_Add_Files_Pictures_and_Hyperlinks.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/11_Add_Files_Pictures_and_Hyperlinks.md index ea7449f877..56f14fdb9d 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/11_Add_Files_Pictures_and_Hyperlinks.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/11_Add_Files_Pictures_and_Hyperlinks.md @@ -33,7 +33,7 @@ record, folder *Previous cell output:* ```output -(, +(, ) ``` diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/12_Add_Point_Range_Data.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/12_Add_Point_Range_Data.md index 2f99592a00..83b14f8d1e 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/12_Add_Point_Range_Data.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/12_Add_Point_Range_Data.md @@ -36,7 +36,7 @@ record, folder *Previous cell output:* ```output -(, +(, ) ``` diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/13_Add_Date_Integer_and_Logical_Data.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/13_Add_Date_Integer_and_Logical_Data.md index 2402809953..e0983855ce 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/13_Add_Date_Integer_and_Logical_Data.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/13_Add_Date_Integer_and_Logical_Data.md @@ -36,7 +36,7 @@ record, folder *Previous cell output:* ```output -(, +(, ) ``` @@ -109,7 +109,7 @@ print(f"Built in Closed Chamber?: {'Yes' if closed_chamber.value else 'No'}") *Previous cell output:* ```output Date of Beam Profile Diagnostic: Jul 12 2020 -Date of Build: Apr 24 2025 +Date of Build: May 08 2025 Maximum Number of Layers: 5 Built in Closed Chamber?: Yes ``` \ No newline at end of file diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/15_Use_Exporters_for_FEA_Export.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/15_Use_Exporters_for_FEA_Export.md index 865c8e49df..ab0b84adc4 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/15_Use_Exporters_for_FEA_Export.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/15_Use_Exporters_for_FEA_Export.md @@ -93,7 +93,7 @@ print(material_card) **Model Type: Linear, temperature-dependent, isotropic, thermal, plastic **Unit System: SI (Consistent) **Export User: ANSYS\mi-sw-admin -**Export DateTime: 2025-04-24T18:55:54.3242472-04:00 +**Export DateTime: 2025-05-08T19:38:32.4565233-04:00 **Database Name: MI Training **Table Name: Design Data **Material Record History Id: 20673 diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/16_Link_Records.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/16_Link_Records.md index 73ee617c07..89b6a4fb42 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/16_Link_Records.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/16_Link_Records.md @@ -51,7 +51,7 @@ for link_group, records in rec.links.items(): Link group "MaterialUniverse" contains links to the following records: Link group "Smart Link to MaterialUniverse" contains links to the following records: -Lithium aluminosilicate, Alumino silicate - 1723, Barium silicate, Soda barium glass, Alumino silicate - 1720 +Alumino silicate - 1723, Lithium aluminosilicate, Alumino silicate - 1720, Barium silicate, Soda barium glass ``` ## Static links A static link can be created between two existing records, including cross-database. @@ -92,7 +92,7 @@ for link_group, records in rec.links.items(): Link group "MaterialUniverse" contains links to the following records: Soda barium glass Link group "Smart Link to MaterialUniverse" contains links to the following records: -Alumino silicate - 1720, Barium silicate, Lithium aluminosilicate, Alumino silicate - 1723, Soda barium glass +Lithium aluminosilicate, Alumino silicate - 1720, Soda barium glass, Barium silicate, Alumino silicate - 1723 ``` ## Associated Records Associated Records are a way of traversing tabular links multiple steps at a time. This example finds all materials From e434a471d8b825cb9380d237c713965b385f3c07 Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Mon, 12 May 2025 17:29:56 +0100 Subject: [PATCH 2/2] Update to latest build --- .../notebooks/index.md | 11 +- .../04_Process_datasets_and_import.md | 2 +- .../06_Calculate_statistics_for_records.md | 16 +- ..._Calculate_statistics_for_records_12_0.png | Bin 34340 -> 34232 bytes .../samples/foundation/04_Deleting_records.md | 4 +- .../05_Functional_data_and_importing_data.md | 4 +- ...06_Importing_and_exporting_tabular_data.md | 4 +- .../samples/foundation/07_Modified_date.md | 2 +- .../09_Modifying_record_link_groups.md | 2 +- .../foundation/11_Get_unit_conversions.md | 290 +++++++++--------- .../samples/streamlined/05_Edit_Data.md | 14 +- .../samples/streamlined/06_Create_Records.md | 20 +- .../streamlined/07_Import_Functional_Data.md | 4 +- .../streamlined/08_Create_Functional_Data.md | 2 +- .../streamlined/09_Edit_Tabular_Data.md | 2 +- .../11_Add_Files_Pictures_and_Hyperlinks.md | 2 +- .../streamlined/12_Add_Point_Range_Data.md | 2 +- .../13_Add_Date_Integer_and_Logical_Data.md | 4 +- .../15_Use_Exporters_for_FEA_Export.md | 2 +- .../samples/streamlined/16_Link_Records.md | 4 +- 20 files changed, 192 insertions(+), 199 deletions(-) diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/notebooks/index.md b/2025R2/scripting-toolkit-dev-portal-25r2/notebooks/index.md index 102002ef42..ced98f5c86 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/notebooks/index.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/notebooks/index.md @@ -17,15 +17,8 @@ The following notebooks also depend on additional PyGranta packages: * [RecordLists and MI Scripting Toolkit](../samples/streamlined/18_Record_Lists_Interoperability.md) requires `ansys-grantami-recordlists`. * [JobQueue and MI Scripting Toolkit](../samples/streamlined/19_Job_Queue_Interoperability.md) requires `ansys-grantami-jobqueue`. -Minor versions of these packages are typically compatible with a single version of Granta MI only, -so they are not provided as part of the `[notebooks]` extra described above. To easily identify the -correct package version for your version of Granta MI, the [PyGranta](https://pypi.org/project/pygranta/) meta-package can be used. For -example, installing `pygranta` v2024.2 will also install versions of `ansys-grantami-recordlists` -and `ansys-grantami-jobqueue` that are compatible with Granta MI 2024 R2. - -The [Package versions](https://grantami.docs.pyansys.com/version/dev/package_versions.html) -section of the PyGranta documentation describes which versions of packages are installed with each version of the -metapackage. +PyGranta packages are not included in the `[notebooks]` extra. Use the [PyGranta and Granta MI compatibility](https://grantami.docs.pyansys.com/version/stable/package_versions.html) section of the PyGranta documentation to identify a version of a PyGranta package compatible with +your version of Granta MI. diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/data-analytics/04_Process_datasets_and_import.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/data-analytics/04_Process_datasets_and_import.md index 7d47524e2a..1b2096c567 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/data-analytics/04_Process_datasets_and_import.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/data-analytics/04_Process_datasets_and_import.md @@ -896,6 +896,6 @@ mi.update([record]) *Previous cell output:* ```output -[] +[] ``` diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/data-analytics/06_Calculate_statistics_for_records.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/data-analytics/06_Calculate_statistics_for_records.md index 2333dc33b1..3cc057f8d8 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/data-analytics/06_Calculate_statistics_for_records.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/data-analytics/06_Calculate_statistics_for_records.md @@ -307,12 +307,12 @@ for orientation, specimens in test_records.items(): ``` *Previous cell output:* ```output -Rollup completed for the specimen 'LBU15', view this record at 'http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=534a8a97-b340-495c-be65-a723074207cc' -Rollup completed for the specimen 'LBU14', view this record at 'http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=c68623f1-8403-4c33-9f8b-3c14bc31b9de' -Rollup completed for the specimen 'LBJ83', view this record at 'http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=4c15225a-4636-4807-a8de-772b044b636d' -Rollup completed for the specimen 'LBJ62', view this record at 'http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=64fa4b4f-fcba-462a-b2e9-37d9d4654e9b' -Rollup completed for the specimen 'LBJ53', view this record at 'http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=54125724-a888-4087-a2c3-779faf52840f' -Rollup completed for the specimen 'LBJ42', view this record at 'http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=009a67aa-8355-440e-84f6-454fa05bf86e' -Rollup completed for the specimen 'LBJ14', view this record at 'http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=fa63e874-2418-445a-b36e-28723fb25e24' -Rollup completed for the specimen 'LBJ13', view this record at 'http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=7754cc89-d2bf-4875-b416-383c494f0083' +Rollup completed for the specimen 'LBU15', view this record at 'http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=32d98e87-d538-4958-bf4d-93d4cf4bf61e' +Rollup completed for the specimen 'LBU14', view this record at 'http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=58b52053-d236-447d-b5fd-7fa0e66cd1c3' +Rollup completed for the specimen 'LBJ83', view this record at 'http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=021bf20b-d0a8-4be6-99f3-9ee57993b1a3' +Rollup completed for the specimen 'LBJ62', view this record at 'http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=baab458e-ebd3-486c-9e50-d6da39493e27' +Rollup completed for the specimen 'LBJ53', view this record at 'http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=dbab2acf-fdc2-4444-9e0a-a2551063f3e4' +Rollup completed for the specimen 'LBJ42', view this record at 'http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=7a59d226-e6bb-4f55-97cc-b68157ef9355' +Rollup completed for the specimen 'LBJ14', view this record at 'http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=ab4a3789-6adf-4302-b220-acd899a829ae' +Rollup completed for the specimen 'LBJ13', view this record at 'http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=6266db70-d0b5-4acd-95aa-6864b9ed2da0' ``` \ No newline at end of file diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/data-analytics/06_Calculate_statistics_for_records_files/06_Calculate_statistics_for_records_12_0.png b/2025R2/scripting-toolkit-dev-portal-25r2/samples/data-analytics/06_Calculate_statistics_for_records_files/06_Calculate_statistics_for_records_12_0.png index 94e695d725d685c766d320b73094703a255071df..cd0e21c8fd9930ebde65105f7966e86759ece589 100644 GIT binary patch literal 34232 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¨2ZTL9E9eOCP!)=$~2O+Kp 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 Tf1Zf{n=xFqPCr}MKHxt9J4*uU literal 34340 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 z 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 W`0&s + ``` @@ -276,5 +276,5 @@ for record in setRecordAttributesResponse.recordsImported: ``` *Previous cell output:* ```output -Imported record Scripting toolkit foundation layer example 05:Thu May 8 23:40:28 2025 to Granta MI database +Imported record Scripting toolkit foundation layer example 05:Mon May 12 16:20:13 2025 to Granta MI database ``` \ No newline at end of file diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/06_Importing_and_exporting_tabular_data.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/06_Importing_and_exporting_tabular_data.md index af6e4f8955..fe7ed43474 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/06_Importing_and_exporting_tabular_data.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/06_Importing_and_exporting_tabular_data.md @@ -206,7 +206,7 @@ print(recName) ``` *Previous cell output:* ```output -Scripting toolkit foundation layer example 06:Thu May 8 23:40:57 2025 +Scripting toolkit foundation layer example 06:Mon May 12 16:20:48 2025 ``` Import the record to a Granta MI database. @@ -287,5 +287,5 @@ print( ``` *Previous cell output:* ```output -Use MI Viewer to view Scripting toolkit foundation layer example 06:Thu May 8 23:40:57 2025 and check that the Order in 'Characterization of this material' is 1000 +Use MI Viewer to view Scripting toolkit foundation layer example 06:Mon May 12 16:20:48 2025 and check that the Order in 'Characterization of this material' is 1000 ``` \ No newline at end of file diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/07_Modified_date.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/07_Modified_date.md index d42fe5436a..17006d7043 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/07_Modified_date.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/07_Modified_date.md @@ -91,5 +91,5 @@ for record in exported_data: *Previous cell output:* ```output "Ansys Granta 1" imported the record on 2023-09-20T12:11:05.873 -The record was last modified on 2025-05-08T23:41:34.65 by "ANSYS\mi-sw-admin" +The record was last modified on 2025-05-12T16:21:14.687 by "ANSYS\mi-sw-admin" ``` \ No newline at end of file diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/09_Modifying_record_link_groups.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/09_Modifying_record_link_groups.md index e02f9584bd..7e564c4ddb 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/09_Modifying_record_link_groups.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/09_Modifying_record_link_groups.md @@ -120,5 +120,5 @@ print(f"{source_guid} ({source_name}) -> {target_guid} ({target_name})") *Previous cell output:* ```output Created 1 link(s) -000016f6-000e-4fff-8fff-dd92ffff0000 (Cast sheet) -> f5888042-135c-4224-b2f0-390318c5cabf (Scripting toolkit foundation layer example 09:Thu May 8 23:42:02 2025) +000016f6-000e-4fff-8fff-dd92ffff0000 (Cast sheet) -> f630996a-c1f6-4840-8afe-a011f60c0d49 (Scripting toolkit foundation layer example 09:Mon May 12 16:21:51 2025) ``` \ No newline at end of file diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/11_Get_unit_conversions.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/11_Get_unit_conversions.md index 010daf1297..80c0dfbad5 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/11_Get_unit_conversions.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/foundation/11_Get_unit_conversions.md @@ -72,212 +72,212 @@ df_flipped.style - +
- - - - + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + +
 factoroffsetequationconverted resultfactoroffsetequationconverted result
10^6 psi0.1450380.000000174.0004272460938 * 0.14503773773039605 + 0.025.23662810^6 psi0.1450380.000000174.0004272460938 * 0.14503773773039605 + 0.025.236628
ksi145.0377380.000000174.0004272460938 * 145.03773773039603 + 0.025236.628332ksi145.0377380.000000174.0004272460938 * 145.03773773039603 + 0.025236.628332
psi145037.7377300.000000174.0004272460938 * 145037.73773039604 + 0.025236628.331896psi145037.7377300.000000174.0004272460938 * 145037.73773039604 + 0.025236628.331896
MGO125663.7061060.000000174.0004272460938 * 125663.70610560982 + 0.021865538.551704MGO125663.7061060.000000174.0004272460938 * 125663.70610560982 + 0.021865538.551704
Pa1000000000.0000000.000000174.0004272460938 * 1000000000.0 + 0.0174000427246.093811Pa1000000000.0000000.000000174.0004272460938 * 1000000000.0 + 0.0174000427246.093811
MPa1000.0000000.000000174.0004272460938 * 1000.0 + 0.0174000.427246MPa1000.0000000.000000174.0004272460938 * 1000.0 + 0.0174000.427246
J/m^31000000000.0000000.000000174.0004272460938 * 1000000000.0 + 0.0174000427246.093811J/m^31000000000.0000000.000000174.0004272460938 * 1000000000.0 + 0.0174000427246.093811
MJ/m^31000.0000000.000000174.0004272460938 * 1000.0 + 0.0174000.427246MJ/m^31000.0000000.000000174.0004272460938 * 1000.0 + 0.0174000.427246
erg/cm^310000000000.0000020.000000174.0004272460938 * 10000000000.000002 + 0.01740004272460.938477erg/cm^310000000000.0000020.000000174.0004272460938 * 10000000000.000002 + 0.01740004272460.938477
ft.lbf/in^312086.4781440.000000174.0004272460938 * 12086.478144199671 + 0.02103052.360991ft.lbf/in^312086.4781440.000000174.0004272460938 * 12086.478144199671 + 0.02103052.360991
kJ/m^31000000.0000000.000000174.0004272460938 * 1000000.0 + 0.0174000427.246094kJ/m^31000000.0000000.000000174.0004272460938 * 1000000.0 + 0.0174000427.246094
inHg295299.7144450.000000174.0004272460938 * 295299.7144451761 + 0.051382276.479110inHg295299.7144450.000000174.0004272460938 * 295299.7144451761 + 0.051382276.479110
Ba10000000000.0000000.000000174.0004272460938 * 10000000000.0 + 0.01740004272460.937988Ba10000000000.0000000.000000174.0004272460938 * 10000000000.0 + 0.01740004272460.937988
hPa10000000.0000000.000000174.0004272460938 * 10000000.0 + 0.01740004272.460938hPa10000000.0000000.000000174.0004272460938 * 10000000.0 + 0.01740004272.460938
mb10000000.0000000.000000174.0004272460938 * 10000000.0 + 0.01740004272.460938mb10000000.0000000.000000174.0004272460938 * 10000000.0 + 0.01740004272.460938
bar10000.0000000.000000174.0004272460938 * 10000.0 + 0.01740004.272461bar10000.0000000.000000174.0004272460938 * 10000.0 + 0.01740004.272461
atm9869.2326670.000000174.0004272460938 * 9869.232667160128 + 0.01717250.700677atm9869.2326670.000000174.0004272460938 * 9869.232667160128 + 0.01717250.700677
torr7500637.5541920.000000174.0004272460938 * 7500637.554192106 + 0.01305114139.047523torr7500637.5541920.000000174.0004272460938 * 7500637.554192106 + 0.01305114139.047523
lbf/ft^220885434.2331770.000000174.0004272460938 * 20885434.233177025 + 0.03634074479.792996lbf/ft^220885434.2331770.000000174.0004272460938 * 20885434.233177025 + 0.03634074479.792996
HV101.9716210.000000174.0004272460938 * 101.97162129779282 + 0.017743.105673HV101.9716210.000000174.0004272460938 * 101.97162129779282 + 0.017743.105673
kgf/mm^2101.9716210.000000174.0004272460938 * 101.97162129779282 + 0.017743.105673kgf/mm^2101.9716210.000000174.0004272460938 * 101.97162129779282 + 0.017743.105673
dyn/cm^210000000000.0000000.000000174.0004272460938 * 10000000000.0 + 0.01740004272460.937988dyn/cm^210000000000.0000000.000000174.0004272460938 * 10000000000.0 + 0.01740004272460.937988
ft.lbf/ft^320885434.2331770.000000174.0004272460938 * 20885434.23317702 + 0.03634074479.792995ft.lbf/ft^320885434.2331770.000000174.0004272460938 * 20885434.23317702 + 0.03634074479.792995
in.lbf/in^3145037.7377300.000000174.0004272460938 * 145037.73773039604 + 0.025236628.331896in.lbf/in^3145037.7377300.000000174.0004272460938 * 145037.73773039604 + 0.025236628.331896
J/cm^31000.0000000.000000174.0004272460938 * 1000.0000000000001 + 0.0174000.427246J/cm^31000.0000000.000000174.0004272460938 * 1000.0000000000001 + 0.0174000.427246
kN/cm^2100.0000000.000000174.0004272460938 * 100.0 + 0.017400.042725kN/cm^2100.0000000.000000174.0004272460938 * 100.0 + 0.017400.042725
Msi0.1450380.000000174.0004272460938 * 0.14503773773039605 + 0.025.236628Msi0.1450380.000000174.0004272460938 * 0.14503773773039605 + 0.025.236628
N/mm^21000.0000000.000000174.0004272460938 * 1000.0 + 0.0174000.427246N/mm^21000.0000000.000000174.0004272460938 * 1000.0 + 0.0174000.427246
diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/05_Edit_Data.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/05_Edit_Data.md index 00ecfb47d2..5753265cd0 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/05_Edit_Data.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/05_Edit_Data.md @@ -44,7 +44,7 @@ record, folder *Previous cell output:* ```output -(, +(, ) ``` @@ -119,7 +119,7 @@ print(f"Record Name: {record.name}, State: {record.release_state}") ``` *Previous cell output:* ```output -Record Name: Scripting Toolkit Example 5:Thu May 8 23:33:18 2025, State: Unreleased +Record Name: Scripting Toolkit Example 5:Mon May 12 16:11:34 2025, State: Unreleased ``` ## 'Not Applicable' flag Further edits can be made to the same **Record** object. In this case, the *Condition* attribute is not relevant, @@ -143,7 +143,7 @@ print(f'Record Name: "{record.name}", State: "{record.release_state}"') ``` *Previous cell output:* ```output -Record Name: "Scripting Toolkit Example 5:Thu May 8 23:33:18 2025", State: "Released" +Record Name: "Scripting Toolkit Example 5:Mon May 12 16:11:34 2025", State: "Released" ``` Check the `Record.all_versions` property for a dictionary of all versions of the record. The dictionary contains a single version, confirming that only a single version was created in Granta MI. @@ -157,7 +157,7 @@ record.all_versions *Previous cell output:* ```output -{'v1': } +{'v1': } ``` @@ -200,7 +200,7 @@ print(f'"Record Name: {record.name}", State: "{record.release_state}"') ``` *Previous cell output:* ```output -"Record Name: Scripting Toolkit Example 5:Thu May 8 23:33:18 2025", State: "Released" +"Record Name: Scripting Toolkit Example 5:Mon May 12 16:11:34 2025", State: "Released" ``` Check the `Record.all_versions` property again. The dictionary contains two versions, confirming that updating the Mooney-Rivlin attribute has created and released a second version of the record. @@ -214,8 +214,8 @@ record.all_versions *Previous cell output:* ```output -{'v1': , - 'v2': } +{'v1': , + 'v2': } ``` diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/06_Create_Records.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/06_Create_Records.md index 56f011e83e..333d96adb2 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/06_Create_Records.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/06_Create_Records.md @@ -35,11 +35,11 @@ new_records *Previous cell output:* ```output -[, - , - , - , - ] +[, + , + , + , + ] ``` @@ -57,11 +57,11 @@ for rec in recs: *Previous cell output:* ```output New records: -http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=08dab5b4-668e-4aa2-8d1a-f3be569b99cb -http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=a9432f8b-6708-4609-ad4e-8d6c21567543 -http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=2b670d8e-a9c1-44dc-947b-bca3ebde9ff2 -http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=0ed3c938-6bc4-4b3e-96ee-a28b113c1679 -http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=5130e5f2-9046-45d2-a35d-930d93baf36e +http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=975bc163-8df2-4cd6-9421-9cf7ef83e8c9 +http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=e1abe509-f1b5-4a6a-9e3a-f6d2e9e7e5c8 +http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=65394190-e659-4950-99fd-df33af02e430 +http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=22bd9edf-6a76-417a-81a8-aee6dfdcaf6a +http://my.server.name/mi/datasheet.aspx?dbKey=MI_Training&recordHistoryGuid=f9bbed4d-f9ce-4df8-be58-27eed426118a ``` ## Delete the records ``Session.bulk_delete_or_withdraw_records`` accepts any list of records (e.g. results of a search, diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/07_Import_Functional_Data.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/07_Import_Functional_Data.md index 1034a82483..549a581291 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/07_Import_Functional_Data.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/07_Import_Functional_Data.md @@ -39,7 +39,7 @@ rec *Previous cell output:* ```output - + ``` @@ -253,6 +253,6 @@ mi.update([rec]) *Previous cell output:* ```output -[] +[] ``` diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/08_Create_Functional_Data.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/08_Create_Functional_Data.md index ea030c0275..fad669bed2 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/08_Create_Functional_Data.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/08_Create_Functional_Data.md @@ -421,6 +421,6 @@ mi.update([record]) *Previous cell output:* ```output -[] +[] ``` diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/09_Edit_Tabular_Data.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/09_Edit_Tabular_Data.md index 4c21e3a878..9165b1ec50 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/09_Edit_Tabular_Data.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/09_Edit_Tabular_Data.md @@ -167,6 +167,6 @@ mi.update_links([new_rec]) *Previous cell output:* ```output -[] +[] ``` diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/11_Add_Files_Pictures_and_Hyperlinks.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/11_Add_Files_Pictures_and_Hyperlinks.md index 56f14fdb9d..c3bd725f39 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/11_Add_Files_Pictures_and_Hyperlinks.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/11_Add_Files_Pictures_and_Hyperlinks.md @@ -33,7 +33,7 @@ record, folder *Previous cell output:* ```output -(, +(, ) ``` diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/12_Add_Point_Range_Data.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/12_Add_Point_Range_Data.md index 83b14f8d1e..8e3d03c616 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/12_Add_Point_Range_Data.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/12_Add_Point_Range_Data.md @@ -36,7 +36,7 @@ record, folder *Previous cell output:* ```output -(, +(, ) ``` diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/13_Add_Date_Integer_and_Logical_Data.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/13_Add_Date_Integer_and_Logical_Data.md index e0983855ce..123d340522 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/13_Add_Date_Integer_and_Logical_Data.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/13_Add_Date_Integer_and_Logical_Data.md @@ -36,7 +36,7 @@ record, folder *Previous cell output:* ```output -(, +(, ) ``` @@ -109,7 +109,7 @@ print(f"Built in Closed Chamber?: {'Yes' if closed_chamber.value else 'No'}") *Previous cell output:* ```output Date of Beam Profile Diagnostic: Jul 12 2020 -Date of Build: May 08 2025 +Date of Build: May 12 2025 Maximum Number of Layers: 5 Built in Closed Chamber?: Yes ``` \ No newline at end of file diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/15_Use_Exporters_for_FEA_Export.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/15_Use_Exporters_for_FEA_Export.md index ab0b84adc4..f0cc22ce7f 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/15_Use_Exporters_for_FEA_Export.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/15_Use_Exporters_for_FEA_Export.md @@ -93,7 +93,7 @@ print(material_card) **Model Type: Linear, temperature-dependent, isotropic, thermal, plastic **Unit System: SI (Consistent) **Export User: ANSYS\mi-sw-admin -**Export DateTime: 2025-05-08T19:38:32.4565233-04:00 +**Export DateTime: 2025-05-12T12:17:04.8602976-04:00 **Database Name: MI Training **Table Name: Design Data **Material Record History Id: 20673 diff --git a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/16_Link_Records.md b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/16_Link_Records.md index 89b6a4fb42..c13c03707b 100644 --- a/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/16_Link_Records.md +++ b/2025R2/scripting-toolkit-dev-portal-25r2/samples/streamlined/16_Link_Records.md @@ -51,7 +51,7 @@ for link_group, records in rec.links.items(): Link group "MaterialUniverse" contains links to the following records: Link group "Smart Link to MaterialUniverse" contains links to the following records: -Alumino silicate - 1723, Lithium aluminosilicate, Alumino silicate - 1720, Barium silicate, Soda barium glass +Lithium aluminosilicate, Barium silicate, Alumino silicate - 1723, Alumino silicate - 1720, Soda barium glass ``` ## Static links A static link can be created between two existing records, including cross-database. @@ -92,7 +92,7 @@ for link_group, records in rec.links.items(): Link group "MaterialUniverse" contains links to the following records: Soda barium glass Link group "Smart Link to MaterialUniverse" contains links to the following records: -Lithium aluminosilicate, Alumino silicate - 1720, Soda barium glass, Barium silicate, Alumino silicate - 1723 +Lithium aluminosilicate, Alumino silicate - 1723, Soda barium glass, Barium silicate, Alumino silicate - 1720 ``` ## Associated Records Associated Records are a way of traversing tabular links multiple steps at a time. This example finds all materials