smartsheet-python-sdk 3.5.3__tar.gz → 3.5.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/CHANGELOG.md +6 -0
- {smartsheet_python_sdk-3.5.3/smartsheet_python_sdk.egg-info → smartsheet_python_sdk-3.5.4}/PKG-INFO +1 -1
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/setup.py +1 -1
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/version.py +2 -2
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4/smartsheet_python_sdk.egg-info}/PKG-INFO +1 -1
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet_python_sdk.egg-info/SOURCES.txt +5 -1
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet_python_sdk.egg-info/top_level.txt +0 -1
- smartsheet_python_sdk-3.5.4/tests/mock_api/users/common_test_constants.py +4 -0
- smartsheet_python_sdk-3.5.4/tests/mock_api/users/test_list_user_plans.py +110 -0
- smartsheet_python_sdk-3.5.4/tests/mock_api/users/test_list_users.py +147 -0
- smartsheet_python_sdk-3.5.4/tests/mock_api/users/test_user_upgrade_downgrade.py +147 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/.gitchangelog.rc +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/.gitchangelog.tpl +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/.github/pull_request_template.md +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/.github/workflows/publish-distribution.yaml +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/.github/workflows/publish-documentation.yaml +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/.github/workflows/test-build.yaml +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/.gitignore +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/.markdownlint.json +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/ADVANCED.md +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/CONTRIBUTING.md +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/LICENSE.md +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/Makefile +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/NOTICE +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/README.md +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/docs-source/Makefile +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/docs-source/conf.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/docs-source/index.rst +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/pylintrc +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/setup.cfg +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/__init__.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/attachments.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/cells.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/contacts.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/discussions.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/events.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/exceptions.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/favorites.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/folders.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/groups.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/home.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/images.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/__init__.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/access_token.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/account.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/alternate_email.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/asset_share.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/asset_shares_paginated_result.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/attachment.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/auto_number_format.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/automation_action.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/automation_rule.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/boolean_object_value.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/bulk_item_failure.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/bulk_item_result.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/cell.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/cell_data_item.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/cell_history.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/cell_link.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/cell_link_widget_content.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/chart_widget_content.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/column.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/comment.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/contact.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/contact_object_value.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/container_destination.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/copy_or_move_row_destination.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/copy_or_move_row_directive.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/copy_or_move_row_result.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/criteria.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/cross_sheet_reference.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/currency.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/date_object_value.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/datetime_object_value.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/discussion.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/downloaded_file.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/duration.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/email.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/__init__.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/access_level.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/asset_type.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/attachment_parent_type.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/attachment_sub_type.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/attachment_type.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/automation_action_frequency.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/automation_action_type.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/automation_rule_disabled_reason.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/cell_link_status.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/column_type.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/criteria_target.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/cross_sheet_reference_status.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/currency_code.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/day_descriptors.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/day_ordinal.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/event_action.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/event_obejct_type.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/event_source.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/global_template.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/operator.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/paper_type.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/predecessor_type.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/publish_accessible_by.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/schedule_type.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/seat_type.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/share_scope.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/share_type.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/sheet_email_format.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/sheet_filter_operator.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/sheet_filter_type.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/sort_direction.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/symbol.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/system_column_type.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/update_request_status.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/user_status.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/enums/widget_type.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/error.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/error_result.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/event.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/event_result.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/explicit_null.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/favorite.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/folder.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/font_family.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/format_details.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/format_tables.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/group.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/group_member.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/home.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/hyperlink.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/image.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/image_url.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/image_url_map.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/image_widget_content.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/index_result.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/json_object.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/multi_contact_object_value.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/multi_picklist_object_value.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/multi_row_email.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/number_object_value.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/o_auth_error.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/object_value.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/paginated_children_result.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/predecessor.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/predecessor_list.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/primitive_object_value.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/profile_image.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/project_settings.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/recipient.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/report.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/report_cell.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/report_column.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/report_publish.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/report_row.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/report_widget_content.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/result.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/row.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/row_email.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/row_mapping.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/schedule.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/scope.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/search_result.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/search_result_item.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/selection_range.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/sent_update_request.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/server_info.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/share.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/sheet.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/sheet_email.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/sheet_filter.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/sheet_filter_details.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/sheet_publish.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/sheet_summary.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/sheet_user_permissions.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/sheet_user_settings.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/shortcut_data_item.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/shortcut_widget_content.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/sight.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/sight_publish.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/sort_criterion.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/sort_specifier.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/source.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/string_object_value.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/summary_field.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/template.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/title_rich_text_widget_content.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/token_paginated_result.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/update_request.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/user.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/user_model.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/user_plan.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/user_profile.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/version.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/web_content_widget_content.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/webhook.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/webhook_secret.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/webhook_stats.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/webhook_subscope.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/widget.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/widget_content.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/widget_hyperlink.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/workspace.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/object_value.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/passthrough.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/reports.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/search.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/server.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/session.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/sharing.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/sheets.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/sights.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/smartsheet.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/templates.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/token.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/types.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/users.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/util.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/webhooks.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/workspaces.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet_python_sdk.egg-info/dependency_links.txt +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet_python_sdk.egg-info/requires.txt +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/__init__.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/README.md +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/conftest.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/fixtures/calling_all_curs.txt +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/fixtures/curly.jpg +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/fixtures/moe-curly.jpg +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/fixtures/quote.txt +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/fixtures/stooges_v1.jpg +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/fixtures/stooges_v2.jpg +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/test_attachments.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/test_columns.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/test_contacts.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/test_cross_sheet_references.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/test_discussions.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/test_events.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/test_favorites.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/test_folders.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/test_groups.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/test_home.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/test_model_attributes.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/test_multi_picklist.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/test_object_value.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/test_passthrough.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/test_regression.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/test_reports.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/test_rows.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/test_server_info.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/test_sharing.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/test_sheet_summary.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/test_sheets.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/test_templates.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/test_update_requests.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/test_users.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/test_webhooks.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/test_workspaces.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/integration/test_zsearch.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/mock_api/__init__.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/mock_api/mock_api_test_helper.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/mock_api/test_mock_api_automation_rules.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/mock_api/test_mock_api_columns.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/mock_api/test_mock_api_folders.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/mock_api/test_mock_api_rows.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/mock_api/test_mock_api_sharing.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/mock_api/test_mock_api_sheets.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/mock_api/test_mock_api_sights.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/mock_api/test_mock_api_workspaces.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/mock_api/test_mock_change_agent.py +0 -0
- {smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/tests/mock_api/test_mock_serialization.py +0 -0
|
@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
|
6
6
|
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [3.5.4] - 2025-10-31
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- [Issue-92](https://github.com/smartsheet/smartsheet-python-sdk/issues/92): Only include the `smartsheet` package in the build.
|
|
13
|
+
|
|
8
14
|
## [3.5.3] - 2025-10-31
|
|
9
15
|
|
|
10
16
|
### Fixed
|
|
@@ -65,7 +65,7 @@ setup(
|
|
|
65
65
|
},
|
|
66
66
|
setup_requires=['setuptools_scm==7.0.1'],
|
|
67
67
|
install_requires=REQUIRES,
|
|
68
|
-
packages=find_packages(),
|
|
68
|
+
packages=find_packages(include=['smartsheet', 'smartsheet.*']),
|
|
69
69
|
include_package_data=True,
|
|
70
70
|
long_description=open('README.md').read(),
|
|
71
71
|
long_description_content_type='text/markdown',
|
|
@@ -262,4 +262,8 @@ tests/mock_api/test_mock_api_sheets.py
|
|
|
262
262
|
tests/mock_api/test_mock_api_sights.py
|
|
263
263
|
tests/mock_api/test_mock_api_workspaces.py
|
|
264
264
|
tests/mock_api/test_mock_change_agent.py
|
|
265
|
-
tests/mock_api/test_mock_serialization.py
|
|
265
|
+
tests/mock_api/test_mock_serialization.py
|
|
266
|
+
tests/mock_api/users/common_test_constants.py
|
|
267
|
+
tests/mock_api/users/test_list_user_plans.py
|
|
268
|
+
tests/mock_api/users/test_list_users.py
|
|
269
|
+
tests/mock_api/users/test_user_upgrade_downgrade.py
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import uuid
|
|
2
|
+
|
|
3
|
+
from urllib.parse import urlparse, parse_qs
|
|
4
|
+
from dateutil import parser
|
|
5
|
+
from smartsheet.models.enums import seat_type
|
|
6
|
+
from smartsheet.models.token_paginated_result import TokenPaginatedResult
|
|
7
|
+
from smartsheet.models.error import Error
|
|
8
|
+
from tests.mock_api.users.common_test_constants import TEST_USER_ID, TEST_PLAN_ID
|
|
9
|
+
from tests.mock_api.mock_api_test_helper import (
|
|
10
|
+
get_mock_api_client,
|
|
11
|
+
get_wiremock_request,
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
TEST_LAST_KEY = '12345678901234569'
|
|
15
|
+
TEST_MAX_ITEMS = 100
|
|
16
|
+
TEST_SEAT_TYPE = seat_type.SeatType.MEMBER
|
|
17
|
+
|
|
18
|
+
def test_list_user_plans_generated_url_is_correct():
|
|
19
|
+
request_id = uuid.uuid4().hex
|
|
20
|
+
client = get_mock_api_client(
|
|
21
|
+
"/users/list-user-plans/all-response-body-properties", request_id
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
client.Users.list_user_plans(
|
|
25
|
+
user_id=TEST_USER_ID,
|
|
26
|
+
last_key=TEST_LAST_KEY,
|
|
27
|
+
max_items=TEST_MAX_ITEMS
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
wiremock_request = get_wiremock_request(request_id)
|
|
31
|
+
url = urlparse(wiremock_request["absoluteUrl"])
|
|
32
|
+
query = parse_qs(url.query)
|
|
33
|
+
assert query == {
|
|
34
|
+
"lastKey": [TEST_LAST_KEY],
|
|
35
|
+
"maxItems": [str(TEST_MAX_ITEMS)]
|
|
36
|
+
}
|
|
37
|
+
assert url.path == f"/2.0/users/{TEST_USER_ID}/plans"
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def test_list_user_plans_all_response_properties():
|
|
41
|
+
request_id = uuid.uuid4().hex
|
|
42
|
+
client = get_mock_api_client(
|
|
43
|
+
"/users/list-user-plans/all-response-body-properties", request_id
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
response = client.Users.list_user_plans(
|
|
47
|
+
user_id=TEST_USER_ID,
|
|
48
|
+
last_key=TEST_LAST_KEY,
|
|
49
|
+
max_items=TEST_MAX_ITEMS
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
assert isinstance(response, TokenPaginatedResult)
|
|
53
|
+
assert response.last_key == TEST_LAST_KEY
|
|
54
|
+
assert response.data[0].plan_id == TEST_PLAN_ID
|
|
55
|
+
assert response.data[0].seat_type == TEST_SEAT_TYPE.value
|
|
56
|
+
assert response.data[0].seat_type_last_changed_at == parser.isoparse(
|
|
57
|
+
"2025-01-01T00:00:00.123456789Z")
|
|
58
|
+
assert response.data[0].provisional_expiration_date == parser.isoparse(
|
|
59
|
+
"2026-12-13T12:17:52.525696Z")
|
|
60
|
+
assert response.data[0].is_internal is False
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def test_list_user_plans_required_response_properties():
|
|
64
|
+
request_id = uuid.uuid4().hex
|
|
65
|
+
client = get_mock_api_client(
|
|
66
|
+
"/users/list-user-plans/required-response-body-properties", request_id
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
response = client.Users.list_user_plans(
|
|
70
|
+
user_id=TEST_USER_ID,
|
|
71
|
+
last_key=TEST_LAST_KEY,
|
|
72
|
+
max_items=TEST_MAX_ITEMS
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
assert isinstance(response, TokenPaginatedResult)
|
|
76
|
+
assert response.data[0].plan_id == TEST_PLAN_ID
|
|
77
|
+
assert response.data[0].seat_type == TEST_SEAT_TYPE.value
|
|
78
|
+
assert response.data[0].seat_type_last_changed_at is None
|
|
79
|
+
assert response.data[0].provisional_expiration_date is None
|
|
80
|
+
assert response.data[0].is_internal is False
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def test_list_user_plans_error_400_response():
|
|
84
|
+
request_id = uuid.uuid4().hex
|
|
85
|
+
client = get_mock_api_client(
|
|
86
|
+
"/errors/400-response", request_id
|
|
87
|
+
)
|
|
88
|
+
|
|
89
|
+
response = client.Users.list_user_plans(
|
|
90
|
+
user_id=TEST_USER_ID,
|
|
91
|
+
last_key=TEST_LAST_KEY,
|
|
92
|
+
max_items=TEST_MAX_ITEMS
|
|
93
|
+
)
|
|
94
|
+
|
|
95
|
+
assert isinstance(response, Error)
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def test_list_user_plans_error_500_reponse():
|
|
99
|
+
request_id = uuid.uuid4().hex
|
|
100
|
+
client = get_mock_api_client(
|
|
101
|
+
"/errors/500-response", request_id
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
response = client.Users.list_user_plans(
|
|
105
|
+
user_id=TEST_USER_ID,
|
|
106
|
+
last_key=TEST_LAST_KEY,
|
|
107
|
+
max_items=TEST_MAX_ITEMS
|
|
108
|
+
)
|
|
109
|
+
|
|
110
|
+
assert isinstance(response, Error)
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import uuid
|
|
2
|
+
|
|
3
|
+
from urllib.parse import urlparse, parse_qs
|
|
4
|
+
from dateutil import parser
|
|
5
|
+
from smartsheet.models.enums import seat_type
|
|
6
|
+
from smartsheet.models.index_result import IndexResult
|
|
7
|
+
from smartsheet.models.error import Error
|
|
8
|
+
from tests.mock_api.users.common_test_constants import TEST_PLAN_ID
|
|
9
|
+
from tests.mock_api.mock_api_test_helper import (
|
|
10
|
+
get_mock_api_client,
|
|
11
|
+
get_wiremock_request,
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
TEST_EMAIL = "test.user@smartsheet.com"
|
|
15
|
+
TEST_SEAT_TYPE = seat_type.SeatType.MEMBER
|
|
16
|
+
TEST_PAGE = 1
|
|
17
|
+
TEST_PAGE_SIZE = 100
|
|
18
|
+
TEST_INCLUDE_ALL = False
|
|
19
|
+
TEST_FIRST_NAME = "Test"
|
|
20
|
+
TEST_LAST_NAME = "User"
|
|
21
|
+
TEST_NAME = "Test User"
|
|
22
|
+
TEST_ADMIN = True
|
|
23
|
+
TEST_LICENSED_SHEET_CREATOR = True
|
|
24
|
+
TEST_RESOURCE_VIEWER = True
|
|
25
|
+
TEST_GROUP_ADMIN = True
|
|
26
|
+
TEST_STATUS = "ACTIVE"
|
|
27
|
+
TEST_SHEET_COUNT = -1
|
|
28
|
+
TEST_ID_VALUE = TEST_PLAN_ID
|
|
29
|
+
TEST_SEAT_TYPE_LAST_CHANGED_AT = parser.isoparse("2025-06-14T09:55:30Z")
|
|
30
|
+
TEST_PROVISIONAL_EXPIRATION_DATE = parser.isoparse("2026-12-13T12:17:52.525696Z")
|
|
31
|
+
TEST_IS_INTERNAL_TRUE = True
|
|
32
|
+
TEST_IS_INTERNAL_FALSE = False
|
|
33
|
+
TEST_LAST_LOGIN = parser.isoparse("2020-10-04T18:32:47Z")
|
|
34
|
+
TEST_CUSTOM_WELCOME_SCREEN_VIEWED = parser.isoparse("2020-08-25T12:15:47Z")
|
|
35
|
+
|
|
36
|
+
def test_list_users_generated_url_is_correct():
|
|
37
|
+
request_id = uuid.uuid4().hex
|
|
38
|
+
|
|
39
|
+
client = get_mock_api_client(
|
|
40
|
+
"/users/list-users/required-response-body-properties", request_id
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
client.Users.list_users(
|
|
44
|
+
email=TEST_EMAIL,
|
|
45
|
+
seat_type=TEST_SEAT_TYPE.value,
|
|
46
|
+
page=TEST_PAGE,
|
|
47
|
+
page_size=TEST_PAGE_SIZE,
|
|
48
|
+
include_all=TEST_INCLUDE_ALL
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
wiremock_request = get_wiremock_request(request_id)
|
|
52
|
+
url = urlparse(wiremock_request["absoluteUrl"])
|
|
53
|
+
query = parse_qs(url.query)
|
|
54
|
+
assert query == {
|
|
55
|
+
"email": [TEST_EMAIL],
|
|
56
|
+
"seatType": [TEST_SEAT_TYPE.value],
|
|
57
|
+
"page": [str(TEST_PAGE)],
|
|
58
|
+
"pageSize": [str(TEST_PAGE_SIZE)],
|
|
59
|
+
"includeAll": [str(TEST_INCLUDE_ALL)]
|
|
60
|
+
}
|
|
61
|
+
assert url.path == "/2.0/users"
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def test_list_users_all_response_properties():
|
|
65
|
+
request_id = uuid.uuid4().hex
|
|
66
|
+
client = get_mock_api_client(
|
|
67
|
+
"/users/list-users/all-response-body-properties", request_id
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
response = client.Users.list_users(
|
|
71
|
+
plan_id=TEST_PLAN_ID
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
assert isinstance(response, IndexResult)
|
|
75
|
+
assert response.data[0].seat_type == TEST_SEAT_TYPE.value
|
|
76
|
+
assert response.data[0].seat_type_last_changed_at == TEST_SEAT_TYPE_LAST_CHANGED_AT
|
|
77
|
+
assert response.data[0].provisional_expiration_date == TEST_PROVISIONAL_EXPIRATION_DATE
|
|
78
|
+
assert response.data[0].is_internal is TEST_IS_INTERNAL_TRUE
|
|
79
|
+
assert response.data[0].first_name == TEST_FIRST_NAME
|
|
80
|
+
assert response.data[0].last_name == TEST_LAST_NAME
|
|
81
|
+
assert response.data[0].name == TEST_NAME
|
|
82
|
+
assert response.data[0].email == TEST_EMAIL
|
|
83
|
+
assert response.data[0].admin is TEST_ADMIN
|
|
84
|
+
assert response.data[0].licensed_sheet_creator is TEST_LICENSED_SHEET_CREATOR
|
|
85
|
+
assert response.data[0].resource_viewer is TEST_RESOURCE_VIEWER
|
|
86
|
+
assert response.data[0].group_admin is TEST_GROUP_ADMIN
|
|
87
|
+
assert response.data[0].status == TEST_STATUS
|
|
88
|
+
assert response.data[0].sheet_count == TEST_SHEET_COUNT
|
|
89
|
+
assert response.data[0].last_login == TEST_LAST_LOGIN
|
|
90
|
+
assert response.data[0].custom_welcome_screen_viewed == TEST_CUSTOM_WELCOME_SCREEN_VIEWED
|
|
91
|
+
assert response.data[0].id == TEST_ID_VALUE
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
def test_list_users_required_response_properties():
|
|
95
|
+
request_id = uuid.uuid4().hex
|
|
96
|
+
client = get_mock_api_client(
|
|
97
|
+
"/users/list-users/required-response-body-properties", request_id
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
response = client.Users.list_users(
|
|
101
|
+
plan_id=TEST_PLAN_ID
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
assert isinstance(response, IndexResult)
|
|
105
|
+
assert response.data[0].seat_type == TEST_SEAT_TYPE.value
|
|
106
|
+
assert response.data[0].seat_type_last_changed_at is None
|
|
107
|
+
assert response.data[0].provisional_expiration_date is None
|
|
108
|
+
assert response.data[0].is_internal is TEST_IS_INTERNAL_TRUE
|
|
109
|
+
assert response.data[0].first_name == TEST_FIRST_NAME
|
|
110
|
+
assert response.data[0].last_name == TEST_LAST_NAME
|
|
111
|
+
assert response.data[0].name == TEST_NAME
|
|
112
|
+
assert response.data[0].email == TEST_EMAIL
|
|
113
|
+
assert response.data[0].admin is TEST_ADMIN
|
|
114
|
+
assert response.data[0].licensed_sheet_creator is TEST_LICENSED_SHEET_CREATOR
|
|
115
|
+
assert response.data[0].resource_viewer is TEST_RESOURCE_VIEWER
|
|
116
|
+
assert response.data[0].group_admin is TEST_GROUP_ADMIN
|
|
117
|
+
assert response.data[0].status == TEST_STATUS
|
|
118
|
+
assert response.data[0].sheet_count == TEST_SHEET_COUNT
|
|
119
|
+
assert response.data[0].last_login is None
|
|
120
|
+
assert response.data[0].custom_welcome_screen_viewed is None
|
|
121
|
+
assert response.data[0].id == TEST_ID_VALUE
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
def test_list_users_error_400_response():
|
|
125
|
+
request_id = uuid.uuid4().hex
|
|
126
|
+
client = get_mock_api_client(
|
|
127
|
+
"/errors/400-response", request_id
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
response = client.Users.list_users(
|
|
131
|
+
plan_id=TEST_PLAN_ID
|
|
132
|
+
)
|
|
133
|
+
|
|
134
|
+
assert isinstance(response, Error)
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
def test_list_users_error_500_response():
|
|
138
|
+
request_id = uuid.uuid4().hex
|
|
139
|
+
client = get_mock_api_client(
|
|
140
|
+
"/errors/500-response", request_id
|
|
141
|
+
)
|
|
142
|
+
|
|
143
|
+
response = client.Users.list_users(
|
|
144
|
+
plan_id=TEST_PLAN_ID
|
|
145
|
+
)
|
|
146
|
+
|
|
147
|
+
assert isinstance(response, Error)
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import json
|
|
2
|
+
import uuid
|
|
3
|
+
from urllib.parse import urlparse
|
|
4
|
+
|
|
5
|
+
from smartsheet.models import Error
|
|
6
|
+
from smartsheet.models.enums import UpgradeSeatType, DowngradeSeatType
|
|
7
|
+
from tests.mock_api.users.common_test_constants import TEST_USER_ID, TEST_PLAN_ID, TEST_SUCCESS_MESSAGE, TEST_RESULT_CODE
|
|
8
|
+
from tests.mock_api.mock_api_test_helper import (
|
|
9
|
+
get_mock_api_client,
|
|
10
|
+
get_wiremock_request,
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
TEST_UPGRADE_SEAT_TYPE = UpgradeSeatType.MEMBER
|
|
14
|
+
TEST_DOWNGRADE_SEAT_TYPE = DowngradeSeatType.VIEWER
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def test_upgrade_user_generated_url_is_correct():
|
|
18
|
+
request_id = uuid.uuid4().hex
|
|
19
|
+
client = get_mock_api_client(
|
|
20
|
+
"/users/upgrade-user/all-response-body-properties", request_id
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
client.Users.upgrade_user(
|
|
24
|
+
user_id=TEST_USER_ID,
|
|
25
|
+
plan_id=TEST_PLAN_ID,
|
|
26
|
+
seat_type=TEST_UPGRADE_SEAT_TYPE,
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
wiremock_request = get_wiremock_request(request_id)
|
|
30
|
+
url = urlparse(wiremock_request["absoluteUrl"])
|
|
31
|
+
assert url.path == f'/2.0/users/{TEST_USER_ID}/plans/{TEST_PLAN_ID}/upgrade'
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def test_upgrade_user_all_response_properties():
|
|
35
|
+
request_id = uuid.uuid4().hex
|
|
36
|
+
client = get_mock_api_client(
|
|
37
|
+
"/users/upgrade-user/all-response-body-properties", request_id
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
response = client.Users.upgrade_user(
|
|
41
|
+
user_id=TEST_USER_ID,
|
|
42
|
+
plan_id=TEST_PLAN_ID,
|
|
43
|
+
seat_type=TEST_UPGRADE_SEAT_TYPE,
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
assert response.message == TEST_SUCCESS_MESSAGE
|
|
47
|
+
assert response.result_code == TEST_RESULT_CODE
|
|
48
|
+
|
|
49
|
+
wiremock_request = get_wiremock_request(request_id)
|
|
50
|
+
body = json.loads(wiremock_request["body"])
|
|
51
|
+
assert body == {"seatType": TEST_UPGRADE_SEAT_TYPE.value}
|
|
52
|
+
|
|
53
|
+
def test_upgrade_user_error_4xx():
|
|
54
|
+
request_id = uuid.uuid4().hex
|
|
55
|
+
client = get_mock_api_client(
|
|
56
|
+
"/errors/400-response", request_id
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
response = client.Users.upgrade_user(
|
|
60
|
+
user_id=TEST_USER_ID,
|
|
61
|
+
plan_id=TEST_PLAN_ID,
|
|
62
|
+
seat_type=TEST_UPGRADE_SEAT_TYPE,
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
assert isinstance(response, Error)
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def test_upgrade_user_error_5xx():
|
|
69
|
+
request_id = uuid.uuid4().hex
|
|
70
|
+
client = get_mock_api_client(
|
|
71
|
+
"/errors/500-response", request_id
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
response = client.Users.upgrade_user(
|
|
75
|
+
user_id=TEST_USER_ID,
|
|
76
|
+
plan_id=TEST_PLAN_ID,
|
|
77
|
+
seat_type=TEST_UPGRADE_SEAT_TYPE,
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
assert isinstance(response, Error)
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def test_downgrade_user_generated_url_is_correct():
|
|
84
|
+
request_id = uuid.uuid4().hex
|
|
85
|
+
client = get_mock_api_client(
|
|
86
|
+
"/users/downgrade-user/all-response-body-properties", request_id
|
|
87
|
+
)
|
|
88
|
+
|
|
89
|
+
client.Users.downgrade_user(
|
|
90
|
+
user_id=TEST_USER_ID,
|
|
91
|
+
plan_id=TEST_PLAN_ID,
|
|
92
|
+
seat_type=TEST_DOWNGRADE_SEAT_TYPE,
|
|
93
|
+
)
|
|
94
|
+
|
|
95
|
+
wiremock_request = get_wiremock_request(request_id)
|
|
96
|
+
url = urlparse(wiremock_request["absoluteUrl"])
|
|
97
|
+
assert url.path == f'/2.0/users/{TEST_USER_ID}/plans/{TEST_PLAN_ID}/downgrade'
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
def test_downgrade_user_all_response_properties():
|
|
101
|
+
request_id = uuid.uuid4().hex
|
|
102
|
+
client = get_mock_api_client(
|
|
103
|
+
"/users/downgrade-user/all-response-body-properties", request_id
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
response = client.Users.downgrade_user(
|
|
107
|
+
user_id=TEST_USER_ID,
|
|
108
|
+
plan_id=TEST_PLAN_ID,
|
|
109
|
+
seat_type=TEST_DOWNGRADE_SEAT_TYPE,
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
assert response.message == TEST_SUCCESS_MESSAGE
|
|
113
|
+
assert response.result_code == TEST_RESULT_CODE
|
|
114
|
+
|
|
115
|
+
wiremock_request = get_wiremock_request(request_id)
|
|
116
|
+
body = json.loads(wiremock_request["body"])
|
|
117
|
+
assert body == {"seatType": TEST_DOWNGRADE_SEAT_TYPE.value}
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
def test_downgrade_user_error_4xx():
|
|
121
|
+
request_id = uuid.uuid4().hex
|
|
122
|
+
client = get_mock_api_client(
|
|
123
|
+
"/errors/400-response", request_id
|
|
124
|
+
)
|
|
125
|
+
|
|
126
|
+
response = client.Users.downgrade_user(
|
|
127
|
+
user_id=TEST_USER_ID,
|
|
128
|
+
plan_id=TEST_PLAN_ID,
|
|
129
|
+
seat_type=TEST_DOWNGRADE_SEAT_TYPE,
|
|
130
|
+
)
|
|
131
|
+
|
|
132
|
+
assert isinstance(response, Error)
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
def test_downgrade_user_error_5xx():
|
|
136
|
+
request_id = uuid.uuid4().hex
|
|
137
|
+
client = get_mock_api_client(
|
|
138
|
+
"/errors/500-response", request_id
|
|
139
|
+
)
|
|
140
|
+
|
|
141
|
+
response = client.Users.downgrade_user(
|
|
142
|
+
user_id=TEST_USER_ID,
|
|
143
|
+
plan_id=TEST_PLAN_ID,
|
|
144
|
+
seat_type=TEST_DOWNGRADE_SEAT_TYPE,
|
|
145
|
+
)
|
|
146
|
+
|
|
147
|
+
assert isinstance(response, Error)
|
|
File without changes
|
|
File without changes
|
{smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/.github/ISSUE_TEMPLATE/bug_report.md
RENAMED
|
File without changes
|
|
File without changes
|
{smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/.github/pull_request_template.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/.github/workflows/test-build.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/access_token.py
RENAMED
|
File without changes
|
|
File without changes
|
{smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/alternate_email.py
RENAMED
|
File without changes
|
{smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/asset_share.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/auto_number_format.py
RENAMED
|
File without changes
|
{smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/automation_action.py
RENAMED
|
File without changes
|
{smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/automation_rule.py
RENAMED
|
File without changes
|
|
File without changes
|
{smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/bulk_item_failure.py
RENAMED
|
File without changes
|
{smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/bulk_item_result.py
RENAMED
|
File without changes
|
|
File without changes
|
{smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/cell_data_item.py
RENAMED
|
File without changes
|
{smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/cell_history.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/date_object_value.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{smartsheet_python_sdk-3.5.3 → smartsheet_python_sdk-3.5.4}/smartsheet/models/downloaded_file.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|