smartsheet-python-sdk 3.4.0__tar.gz → 3.5.2__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.4.0 → smartsheet_python_sdk-3.5.2}/.github/workflows/test-build.yaml +1 -2
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/CHANGELOG.md +25 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/PKG-INFO +5 -29
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/setup.py +1 -1
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/__init__.py +1 -0
- smartsheet_python_sdk-3.5.2/smartsheet/models/asset_shares_paginated_result.py +84 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/user_model.py +9 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/user_plan.py +9 -0
- smartsheet_python_sdk-3.4.0/smartsheet/asset_shares.py → smartsheet_python_sdk-3.5.2/smartsheet/sharing.py +3 -3
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/smartsheet.py +27 -4
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/version.py +2 -2
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet_python_sdk.egg-info/PKG-INFO +4 -28
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet_python_sdk.egg-info/SOURCES.txt +5 -1
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet_python_sdk.egg-info/top_level.txt +1 -0
- smartsheet_python_sdk-3.5.2/tests/__init__.py +0 -0
- smartsheet_python_sdk-3.5.2/tests/mock_api/__init__.py +0 -0
- smartsheet_python_sdk-3.5.2/tests/mock_api/mock_api_test_helper.py +73 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/mock_api/test_mock_api_automation_rules.py +1 -1
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/mock_api/test_mock_api_columns.py +1 -1
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/mock_api/test_mock_api_folders.py +2 -2
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/mock_api/test_mock_api_rows.py +1 -1
- smartsheet_python_sdk-3.5.2/tests/mock_api/test_mock_api_sharing.py +508 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/mock_api/test_mock_api_sheets.py +1 -1
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/mock_api/test_mock_api_sights.py +1 -1
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/mock_api/test_mock_api_workspaces.py +2 -2
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/mock_api/test_mock_change_agent.py +1 -2
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/mock_api/test_mock_serialization.py +1 -1
- smartsheet_python_sdk-3.4.0/tests/mock_api/mock_api_test_helper.py +0 -30
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/.gitchangelog.rc +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/.gitchangelog.tpl +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/.github/pull_request_template.md +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/.github/workflows/publish-distribution.yaml +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/.github/workflows/publish-documentation.yaml +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/.gitignore +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/.markdownlint.json +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/ADVANCED.md +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/CONTRIBUTING.md +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/LICENSE.md +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/Makefile +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/NOTICE +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/README.md +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/docs-source/Makefile +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/docs-source/conf.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/docs-source/index.rst +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/pylintrc +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/setup.cfg +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/__init__.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/attachments.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/cells.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/contacts.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/discussions.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/events.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/exceptions.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/favorites.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/folders.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/groups.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/home.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/images.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/access_token.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/account.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/alternate_email.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/attachment.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/auto_number_format.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/automation_action.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/automation_rule.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/boolean_object_value.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/bulk_item_failure.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/bulk_item_result.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/cell.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/cell_data_item.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/cell_history.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/cell_link.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/cell_link_widget_content.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/chart_widget_content.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/column.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/comment.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/contact.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/contact_object_value.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/container_destination.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/copy_or_move_row_destination.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/copy_or_move_row_directive.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/copy_or_move_row_result.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/criteria.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/cross_sheet_reference.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/currency.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/date_object_value.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/datetime_object_value.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/discussion.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/downloaded_file.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/duration.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/email.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/__init__.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/access_level.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/asset_type.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/attachment_parent_type.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/attachment_sub_type.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/attachment_type.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/automation_action_frequency.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/automation_action_type.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/automation_rule_disabled_reason.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/cell_link_status.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/column_type.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/criteria_target.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/cross_sheet_reference_status.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/currency_code.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/day_descriptors.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/day_ordinal.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/event_action.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/event_obejct_type.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/event_source.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/global_template.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/operator.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/paper_type.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/predecessor_type.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/publish_accessible_by.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/schedule_type.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/seat_type.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/share_scope.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/share_type.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/sheet_email_format.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/sheet_filter_operator.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/sheet_filter_type.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/sort_direction.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/symbol.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/system_column_type.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/update_request_status.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/user_status.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/widget_type.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/error.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/error_result.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/event.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/event_result.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/explicit_null.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/favorite.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/folder.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/font_family.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/format_details.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/format_tables.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/group.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/group_member.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/home.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/hyperlink.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/image.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/image_url.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/image_url_map.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/image_widget_content.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/index_result.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/json_object.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/multi_contact_object_value.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/multi_picklist_object_value.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/multi_row_email.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/number_object_value.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/o_auth_error.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/object_value.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/paginated_children_result.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/predecessor.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/predecessor_list.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/primitive_object_value.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/profile_image.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/project_settings.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/recipient.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/report.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/report_cell.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/report_column.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/report_publish.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/report_row.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/report_widget_content.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/result.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/row.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/row_email.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/row_mapping.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/schedule.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/scope.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/search_result.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/search_result_item.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/selection_range.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/sent_update_request.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/server_info.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/share.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/sheet.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/sheet_email.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/sheet_filter.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/sheet_filter_details.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/sheet_publish.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/sheet_summary.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/sheet_user_permissions.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/sheet_user_settings.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/shortcut_data_item.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/shortcut_widget_content.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/sight.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/sight_publish.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/sort_criterion.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/sort_specifier.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/source.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/string_object_value.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/summary_field.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/template.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/title_rich_text_widget_content.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/token_paginated_result.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/update_request.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/user.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/user_profile.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/version.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/web_content_widget_content.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/webhook.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/webhook_secret.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/webhook_stats.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/webhook_subscope.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/widget.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/widget_content.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/widget_hyperlink.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/workspace.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/object_value.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/passthrough.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/reports.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/search.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/server.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/session.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/sheets.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/sights.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/templates.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/token.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/types.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/users.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/util.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/webhooks.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/workspaces.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet_python_sdk.egg-info/dependency_links.txt +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet_python_sdk.egg-info/requires.txt +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/README.md +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/conftest.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/fixtures/calling_all_curs.txt +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/fixtures/curly.jpg +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/fixtures/moe-curly.jpg +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/fixtures/quote.txt +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/fixtures/stooges_v1.jpg +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/fixtures/stooges_v2.jpg +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_attachments.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_columns.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_contacts.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_cross_sheet_references.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_discussions.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_events.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_favorites.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_folders.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_groups.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_home.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_model_attributes.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_multi_picklist.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_object_value.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_passthrough.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_regression.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_reports.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_rows.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_server_info.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_sharing.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_sheet_summary.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_sheets.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_templates.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_update_requests.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_users.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_webhooks.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_workspaces.py +0 -0
- {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_zsearch.py +0 -0
{smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/.github/workflows/test-build.yaml
RENAMED
|
@@ -57,8 +57,7 @@ jobs:
|
|
|
57
57
|
repository: 'smartsheet-sdk-tests'
|
|
58
58
|
- name: Setup Mock API
|
|
59
59
|
run: |
|
|
60
|
-
smartsheet-sdk-tests/
|
|
61
|
-
smartsheet-sdk-tests/ci_scripts/start_wiremock.sh
|
|
60
|
+
docker compose -f smartsheet-sdk-tests/docker-compose.yml up -d --wait
|
|
62
61
|
- name: Run mock API tests
|
|
63
62
|
run: |
|
|
64
63
|
coverage run --source=smartsheet -m pytest tests/mock_api/
|
|
@@ -5,6 +5,31 @@ 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.2] - 2025-10-29
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- Fix list_asset_shares to return AssetSharesPaginatedResult.
|
|
13
|
+
- Fix update_asset_share to return Share
|
|
14
|
+
|
|
15
|
+
## Added
|
|
16
|
+
|
|
17
|
+
- Add AssetSharesPaginatedResult for list asset shares.
|
|
18
|
+
- Add mock api tests for sharing endpoints.
|
|
19
|
+
|
|
20
|
+
## [3.5.1] - 2025-10-28
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
|
|
24
|
+
- Rename asset_shares.py to sharing.py so that Smartsheet.__getattr__ can pick it up.
|
|
25
|
+
|
|
26
|
+
## [3.5.0] - 2025-10-24
|
|
27
|
+
|
|
28
|
+
### Added
|
|
29
|
+
|
|
30
|
+
- Add robust error handling. The SDK won't throw an exception if the error response body is not JSON or properties are missing.
|
|
31
|
+
- Add provisionalExpirationDate field to the user_model and user_plan models
|
|
32
|
+
|
|
8
33
|
## [3.4.0] - 2025-10-20
|
|
9
34
|
|
|
10
35
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
2
|
-
Name:
|
|
3
|
-
Version: 3.
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: smartsheet_python_sdk
|
|
3
|
+
Version: 3.5.2
|
|
4
4
|
Summary: Library that uses Python to connect to Smartsheet services (using API 2.0).
|
|
5
5
|
Home-page: http://smartsheet-platform.github.io/api-docs/
|
|
6
6
|
Author: Smartsheet
|
|
@@ -20,34 +20,10 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
20
20
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
21
21
|
Classifier: Topic :: Office/Business :: Financial :: Spreadsheet
|
|
22
22
|
Description-Content-Type: text/markdown
|
|
23
|
-
License-File: LICENSE.md
|
|
24
|
-
License-File: NOTICE
|
|
25
|
-
Requires-Dist: requests
|
|
26
|
-
Requires-Dist: requests-toolbelt
|
|
27
|
-
Requires-Dist: six>=1.9
|
|
28
|
-
Requires-Dist: certifi
|
|
29
|
-
Requires-Dist: python-dateutil
|
|
30
23
|
Provides-Extra: test
|
|
31
|
-
Requires-Dist: coverage; extra == "test"
|
|
32
|
-
Requires-Dist: coveralls; extra == "test"
|
|
33
|
-
Requires-Dist: pytest; extra == "test"
|
|
34
24
|
Provides-Extra: develop
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
Requires-Dist: pytest; extra == "develop"
|
|
38
|
-
Requires-Dist: pytest-instafail; extra == "develop"
|
|
39
|
-
Dynamic: author
|
|
40
|
-
Dynamic: author-email
|
|
41
|
-
Dynamic: classifier
|
|
42
|
-
Dynamic: description
|
|
43
|
-
Dynamic: description-content-type
|
|
44
|
-
Dynamic: home-page
|
|
45
|
-
Dynamic: keywords
|
|
46
|
-
Dynamic: license
|
|
47
|
-
Dynamic: license-file
|
|
48
|
-
Dynamic: provides-extra
|
|
49
|
-
Dynamic: requires-dist
|
|
50
|
-
Dynamic: summary
|
|
25
|
+
License-File: LICENSE.md
|
|
26
|
+
License-File: NOTICE
|
|
51
27
|
|
|
52
28
|
# Smartsheet Python SDK
|
|
53
29
|
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# pylint: disable=C0111,R0902,R0904,R0912,R0913,R0915,E1101
|
|
2
|
+
# Smartsheet Python SDK.
|
|
3
|
+
#
|
|
4
|
+
# Copyright 2018 Smartsheet.com, Inc.
|
|
5
|
+
#
|
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License"): you may
|
|
7
|
+
# not use this file except in compliance with the License. You may obtain
|
|
8
|
+
# a copy of the License at
|
|
9
|
+
#
|
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
#
|
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
14
|
+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
15
|
+
# License for the specific language governing permissions and limitations
|
|
16
|
+
# under the License.
|
|
17
|
+
|
|
18
|
+
from __future__ import absolute_import
|
|
19
|
+
|
|
20
|
+
from typing import TypeVar, List
|
|
21
|
+
from ..types import String, json, TypedList, importlib
|
|
22
|
+
from ..util import deserialize, serialize
|
|
23
|
+
from . import Share
|
|
24
|
+
|
|
25
|
+
T = TypeVar('T')
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class AssetSharesPaginatedResult:
|
|
29
|
+
"""Smartsheet AssetSharesPaginatedResult data model with generic type support.
|
|
30
|
+
Use only for deserializing the response from GET /2.0/shares.
|
|
31
|
+
Created because GET /2.0/shares returns items in the response body instead of data.
|
|
32
|
+
As a result TokenPaginatedResult cannot be used.
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
def __init__(self, props=None, dynamic_data_type=None, base_obj=None):
|
|
36
|
+
"""Initialize the TokenPaginatedResult model."""
|
|
37
|
+
self._base = None
|
|
38
|
+
if base_obj is not None:
|
|
39
|
+
self._base = base_obj
|
|
40
|
+
|
|
41
|
+
self._dynamic_data_type = None
|
|
42
|
+
if dynamic_data_type is not None:
|
|
43
|
+
self._dynamic_data_type = dynamic_data_type
|
|
44
|
+
|
|
45
|
+
self._items = TypedList(object)
|
|
46
|
+
self._last_key = String()
|
|
47
|
+
|
|
48
|
+
if props:
|
|
49
|
+
deserialize(self, props)
|
|
50
|
+
|
|
51
|
+
self.request_response = None
|
|
52
|
+
self.__initialized = True
|
|
53
|
+
|
|
54
|
+
@property
|
|
55
|
+
def items(self) -> List[Share]:
|
|
56
|
+
return self._items
|
|
57
|
+
|
|
58
|
+
@items.setter
|
|
59
|
+
def items(self, value):
|
|
60
|
+
class_ = getattr(
|
|
61
|
+
importlib.import_module("smartsheet.models"), self._dynamic_data_type
|
|
62
|
+
)
|
|
63
|
+
if isinstance(value, list):
|
|
64
|
+
self._items = [class_(x, self._base) for x in value]
|
|
65
|
+
else:
|
|
66
|
+
self._items = class_(value, self._base)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
@property
|
|
70
|
+
def last_key(self):
|
|
71
|
+
return self._last_key.value
|
|
72
|
+
|
|
73
|
+
@last_key.setter
|
|
74
|
+
def last_key(self, value):
|
|
75
|
+
self._last_key.value = value
|
|
76
|
+
|
|
77
|
+
def to_dict(self):
|
|
78
|
+
return serialize(self)
|
|
79
|
+
|
|
80
|
+
def to_json(self):
|
|
81
|
+
return json.dumps(self.to_dict())
|
|
82
|
+
|
|
83
|
+
def __str__(self):
|
|
84
|
+
return self.to_json()
|
|
@@ -51,6 +51,7 @@ class UserModel:
|
|
|
51
51
|
self._licensed_sheet_creator = Boolean()
|
|
52
52
|
self._mobile_phone = String()
|
|
53
53
|
self._profile_image = TypedObject(ProfileImage)
|
|
54
|
+
self._provisional_expiration_date = Timestamp()
|
|
54
55
|
self._resource_viewer = Boolean()
|
|
55
56
|
self._role = String()
|
|
56
57
|
self._seat_type = EnumeratedValue(SeatType)
|
|
@@ -197,6 +198,14 @@ class UserModel:
|
|
|
197
198
|
def profile_image(self, value):
|
|
198
199
|
self._profile_image.value = value
|
|
199
200
|
|
|
201
|
+
@property
|
|
202
|
+
def provisional_expiration_date(self):
|
|
203
|
+
return self._provisional_expiration_date.value
|
|
204
|
+
|
|
205
|
+
@provisional_expiration_date.setter
|
|
206
|
+
def provisional_expiration_date(self, value):
|
|
207
|
+
self._provisional_expiration_date.value = value
|
|
208
|
+
|
|
200
209
|
@property
|
|
201
210
|
def resource_viewer(self):
|
|
202
211
|
return self._resource_viewer.value
|
|
@@ -20,6 +20,7 @@ class UserPlan:
|
|
|
20
20
|
self._seat_type = EnumeratedValue(SeatType)
|
|
21
21
|
self._seat_type_last_changed_at = Timestamp()
|
|
22
22
|
self._is_internal = Boolean()
|
|
23
|
+
self._provisional_expiration_date = Timestamp()
|
|
23
24
|
|
|
24
25
|
if props:
|
|
25
26
|
deserialize(self, props)
|
|
@@ -58,6 +59,14 @@ class UserPlan:
|
|
|
58
59
|
def is_internal(self, value):
|
|
59
60
|
self._is_internal.value = value
|
|
60
61
|
|
|
62
|
+
@property
|
|
63
|
+
def provisional_expiration_date(self):
|
|
64
|
+
return self._provisional_expiration_date.value
|
|
65
|
+
|
|
66
|
+
@provisional_expiration_date.setter
|
|
67
|
+
def provisional_expiration_date(self, value):
|
|
68
|
+
self._provisional_expiration_date.value = value
|
|
69
|
+
|
|
61
70
|
def to_dict(self):
|
|
62
71
|
return serialize(self)
|
|
63
72
|
|
|
@@ -43,7 +43,7 @@ class Sharing:
|
|
|
43
43
|
sharing_include (ShareScope): Scope of share to include in response
|
|
44
44
|
|
|
45
45
|
Returns:
|
|
46
|
-
|
|
46
|
+
AssetSharesPaginatedResult
|
|
47
47
|
"""
|
|
48
48
|
_op = fresh_operation('list_asset_shares')
|
|
49
49
|
_op['method'] = 'GET'
|
|
@@ -54,7 +54,7 @@ class Sharing:
|
|
|
54
54
|
_op['query_params']['lastKey'] = last_key
|
|
55
55
|
_op['query_params']['sharingInclude'] = sharing_include.name if sharing_include else None
|
|
56
56
|
|
|
57
|
-
expected = ['
|
|
57
|
+
expected = ['AssetSharesPaginatedResult', 'Share']
|
|
58
58
|
|
|
59
59
|
prepped_request = self._base.prepare_request(_op)
|
|
60
60
|
response = self._base.request(prepped_request, expected, _op)
|
|
@@ -132,7 +132,7 @@ class Sharing:
|
|
|
132
132
|
_op['query_params']['assetId'] = asset_id
|
|
133
133
|
_op['json'] = share_obj
|
|
134
134
|
|
|
135
|
-
expected =
|
|
135
|
+
expected = 'Share'
|
|
136
136
|
|
|
137
137
|
prepped_request = self._base.prepare_request(_op)
|
|
138
138
|
response = self._base.request(prepped_request, expected, _op)
|
|
@@ -185,6 +185,8 @@ class Smartsheet:
|
|
|
185
185
|
self._api_base = api_base
|
|
186
186
|
self._assume_user = None
|
|
187
187
|
self._test_scenario_name = None
|
|
188
|
+
self._wiremock_test_name = None
|
|
189
|
+
self._wiremock_request_id = None
|
|
188
190
|
self._change_agent = None
|
|
189
191
|
|
|
190
192
|
def assume_user(self, email=None):
|
|
@@ -227,6 +229,18 @@ class Smartsheet:
|
|
|
227
229
|
"""
|
|
228
230
|
self._test_scenario_name = name
|
|
229
231
|
|
|
232
|
+
def with_wiremock_test_case(self, test_name: str, request_id: str):
|
|
233
|
+
"""
|
|
234
|
+
Configure client with x-test-name and x-request-id headers.
|
|
235
|
+
Used for wiremock test cases.
|
|
236
|
+
|
|
237
|
+
Args:
|
|
238
|
+
test_name (str): The name of the wiremock test case.
|
|
239
|
+
request_id (str): The unique request ID for this test scenario.
|
|
240
|
+
"""
|
|
241
|
+
self._wiremock_test_name = test_name
|
|
242
|
+
self._wiremock_request_id = request_id
|
|
243
|
+
|
|
230
244
|
def with_change_agent(self, change_agent):
|
|
231
245
|
"""
|
|
232
246
|
Request headers will contain the 'Smartsheet-Change-Agent' header value
|
|
@@ -437,6 +451,9 @@ class Smartsheet:
|
|
|
437
451
|
del prepped_request.headers["Api-Scenario"]
|
|
438
452
|
except KeyError:
|
|
439
453
|
pass
|
|
454
|
+
if self._wiremock_test_name is not None and self._wiremock_request_id is not None:
|
|
455
|
+
prepped_request.headers["X-Test-Name"] = self._wiremock_test_name
|
|
456
|
+
prepped_request.headers["X-Request-ID"] = self._wiremock_request_id
|
|
440
457
|
|
|
441
458
|
if self._change_agent is not None:
|
|
442
459
|
prepped_request.headers.update(
|
|
@@ -629,8 +646,13 @@ class OperationErrorResult:
|
|
|
629
646
|
expected (list): Dashed expectations
|
|
630
647
|
"""
|
|
631
648
|
# look up name of the error
|
|
632
|
-
error_payload =
|
|
633
|
-
|
|
649
|
+
error_payload = {}
|
|
650
|
+
try:
|
|
651
|
+
error_payload = self.resp.json()
|
|
652
|
+
except json.JSONDecodeError:
|
|
653
|
+
# Do not fail if the response is not JSON
|
|
654
|
+
pass
|
|
655
|
+
error_code = error_payload.get("errorCode", 0)
|
|
634
656
|
try:
|
|
635
657
|
error_name = OperationErrorResult.error_lookup[error_code]["name"]
|
|
636
658
|
recommendation = OperationErrorResult.error_lookup[error_code][
|
|
@@ -638,6 +660,7 @@ class OperationErrorResult:
|
|
|
638
660
|
]
|
|
639
661
|
should_retry = OperationErrorResult.error_lookup[error_code]["should_retry"]
|
|
640
662
|
except:
|
|
663
|
+
# If error_code is present in the response but not in the lookup, default to ApiError
|
|
641
664
|
error_name = OperationErrorResult.error_lookup[0]["name"]
|
|
642
665
|
recommendation = OperationErrorResult.error_lookup[0]["recommendation"]
|
|
643
666
|
should_retry = OperationErrorResult.error_lookup[0]["should_retry"]
|
|
@@ -649,8 +672,8 @@ class OperationErrorResult:
|
|
|
649
672
|
"name": error_name,
|
|
650
673
|
"status_code": self.resp.status_code,
|
|
651
674
|
"code": error_code,
|
|
652
|
-
"message": error_payload
|
|
653
|
-
"ref_id": error_payload
|
|
675
|
+
"message": error_payload.get("message"),
|
|
676
|
+
"ref_id": error_payload.get("refId"),
|
|
654
677
|
"recommendation": recommendation,
|
|
655
678
|
"should_retry": should_retry,
|
|
656
679
|
}
|
{smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet_python_sdk.egg-info/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
2
|
Name: smartsheet-python-sdk
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.5.2
|
|
4
4
|
Summary: Library that uses Python to connect to Smartsheet services (using API 2.0).
|
|
5
5
|
Home-page: http://smartsheet-platform.github.io/api-docs/
|
|
6
6
|
Author: Smartsheet
|
|
@@ -20,34 +20,10 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
20
20
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
21
21
|
Classifier: Topic :: Office/Business :: Financial :: Spreadsheet
|
|
22
22
|
Description-Content-Type: text/markdown
|
|
23
|
-
License-File: LICENSE.md
|
|
24
|
-
License-File: NOTICE
|
|
25
|
-
Requires-Dist: requests
|
|
26
|
-
Requires-Dist: requests-toolbelt
|
|
27
|
-
Requires-Dist: six>=1.9
|
|
28
|
-
Requires-Dist: certifi
|
|
29
|
-
Requires-Dist: python-dateutil
|
|
30
23
|
Provides-Extra: test
|
|
31
|
-
Requires-Dist: coverage; extra == "test"
|
|
32
|
-
Requires-Dist: coveralls; extra == "test"
|
|
33
|
-
Requires-Dist: pytest; extra == "test"
|
|
34
24
|
Provides-Extra: develop
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
Requires-Dist: pytest; extra == "develop"
|
|
38
|
-
Requires-Dist: pytest-instafail; extra == "develop"
|
|
39
|
-
Dynamic: author
|
|
40
|
-
Dynamic: author-email
|
|
41
|
-
Dynamic: classifier
|
|
42
|
-
Dynamic: description
|
|
43
|
-
Dynamic: description-content-type
|
|
44
|
-
Dynamic: home-page
|
|
45
|
-
Dynamic: keywords
|
|
46
|
-
Dynamic: license
|
|
47
|
-
Dynamic: license-file
|
|
48
|
-
Dynamic: provides-extra
|
|
49
|
-
Dynamic: requires-dist
|
|
50
|
-
Dynamic: summary
|
|
25
|
+
License-File: LICENSE.md
|
|
26
|
+
License-File: NOTICE
|
|
51
27
|
|
|
52
28
|
# Smartsheet Python SDK
|
|
53
29
|
|
|
@@ -22,7 +22,6 @@ docs-source/Makefile
|
|
|
22
22
|
docs-source/conf.py
|
|
23
23
|
docs-source/index.rst
|
|
24
24
|
smartsheet/__init__.py
|
|
25
|
-
smartsheet/asset_shares.py
|
|
26
25
|
smartsheet/attachments.py
|
|
27
26
|
smartsheet/cells.py
|
|
28
27
|
smartsheet/contacts.py
|
|
@@ -40,6 +39,7 @@ smartsheet/reports.py
|
|
|
40
39
|
smartsheet/search.py
|
|
41
40
|
smartsheet/server.py
|
|
42
41
|
smartsheet/session.py
|
|
42
|
+
smartsheet/sharing.py
|
|
43
43
|
smartsheet/sheets.py
|
|
44
44
|
smartsheet/sights.py
|
|
45
45
|
smartsheet/smartsheet.py
|
|
@@ -55,6 +55,7 @@ smartsheet/models/__init__.py
|
|
|
55
55
|
smartsheet/models/access_token.py
|
|
56
56
|
smartsheet/models/account.py
|
|
57
57
|
smartsheet/models/alternate_email.py
|
|
58
|
+
smartsheet/models/asset_shares_paginated_result.py
|
|
58
59
|
smartsheet/models/attachment.py
|
|
59
60
|
smartsheet/models/auto_number_format.py
|
|
60
61
|
smartsheet/models/automation_action.py
|
|
@@ -213,6 +214,7 @@ smartsheet_python_sdk.egg-info/SOURCES.txt
|
|
|
213
214
|
smartsheet_python_sdk.egg-info/dependency_links.txt
|
|
214
215
|
smartsheet_python_sdk.egg-info/requires.txt
|
|
215
216
|
smartsheet_python_sdk.egg-info/top_level.txt
|
|
217
|
+
tests/__init__.py
|
|
216
218
|
tests/integration/README.md
|
|
217
219
|
tests/integration/conftest.py
|
|
218
220
|
tests/integration/test_attachments.py
|
|
@@ -248,11 +250,13 @@ tests/integration/fixtures/moe-curly.jpg
|
|
|
248
250
|
tests/integration/fixtures/quote.txt
|
|
249
251
|
tests/integration/fixtures/stooges_v1.jpg
|
|
250
252
|
tests/integration/fixtures/stooges_v2.jpg
|
|
253
|
+
tests/mock_api/__init__.py
|
|
251
254
|
tests/mock_api/mock_api_test_helper.py
|
|
252
255
|
tests/mock_api/test_mock_api_automation_rules.py
|
|
253
256
|
tests/mock_api/test_mock_api_columns.py
|
|
254
257
|
tests/mock_api/test_mock_api_folders.py
|
|
255
258
|
tests/mock_api/test_mock_api_rows.py
|
|
259
|
+
tests/mock_api/test_mock_api_sharing.py
|
|
256
260
|
tests/mock_api/test_mock_api_sheets.py
|
|
257
261
|
tests/mock_api/test_mock_api_sights.py
|
|
258
262
|
tests/mock_api/test_mock_api_workspaces.py
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import requests
|
|
3
|
+
import smartsheet
|
|
4
|
+
from smartsheet.exceptions import ApiError
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def clean_api_error(test_func):
|
|
8
|
+
def wrapper(*args, **kwargs):
|
|
9
|
+
try:
|
|
10
|
+
test_func(*args, **kwargs)
|
|
11
|
+
except ApiError as error:
|
|
12
|
+
assert False, 'ApiError: ' + error.message
|
|
13
|
+
|
|
14
|
+
return wrapper
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class MockApiTestHelper(object):
|
|
18
|
+
def setup_method(self, method):
|
|
19
|
+
self.client = smartsheet.Smartsheet(access_token='abc123', api_base='http://localhost:8082')
|
|
20
|
+
self.client.errors_as_exceptions()
|
|
21
|
+
|
|
22
|
+
def check_error_code(self, exception_info, expected_error_code):
|
|
23
|
+
actual_error_code = exception_info.value.error.result.error_code
|
|
24
|
+
|
|
25
|
+
if self.is_test_scenario_error_code(actual_error_code):
|
|
26
|
+
raise exception_info.value
|
|
27
|
+
|
|
28
|
+
assert actual_error_code == expected_error_code
|
|
29
|
+
|
|
30
|
+
def is_test_scenario_error_code(self, error_code):
|
|
31
|
+
return error_code == 9999
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def get_mock_api_client(test_name: str, request_id: str) -> smartsheet.Smartsheet:
|
|
35
|
+
client = smartsheet.Smartsheet(access_token='abc123', api_base='http://localhost:8082/2.0')
|
|
36
|
+
client.with_wiremock_test_case(test_name, request_id)
|
|
37
|
+
return client
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def get_wiremock_request(request_id: str) -> dict:
|
|
41
|
+
"""
|
|
42
|
+
Fetch request details from WireMock admin API using the request ID.
|
|
43
|
+
|
|
44
|
+
Args:
|
|
45
|
+
request_id (str): The unique request ID to search for
|
|
46
|
+
|
|
47
|
+
Returns:
|
|
48
|
+
dict: The request details from WireMock, or None if not found
|
|
49
|
+
|
|
50
|
+
Raises:
|
|
51
|
+
requests.RequestException: If the HTTP request fails
|
|
52
|
+
ValueError: If not exactly 1 match
|
|
53
|
+
"""
|
|
54
|
+
admin_url = "http://localhost:8082/__admin/requests/find"
|
|
55
|
+
|
|
56
|
+
# Search for requests with the specific request ID in headers
|
|
57
|
+
search_criteria = {
|
|
58
|
+
"headers": {
|
|
59
|
+
"X-Request-Id": {
|
|
60
|
+
"equalTo": request_id
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
response = requests.post(admin_url, json=search_criteria, timeout=30)
|
|
66
|
+
response.raise_for_status()
|
|
67
|
+
|
|
68
|
+
data = response.json()
|
|
69
|
+
requests_found = data.get("requests", [])
|
|
70
|
+
|
|
71
|
+
if len(requests_found) != 1:
|
|
72
|
+
raise ValueError(f'Found {len(requests_found)} requests, expected 1')
|
|
73
|
+
return requests_found[0]
|
{smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/mock_api/test_mock_api_columns.py
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# pylint: disable=C0103,W0232
|
|
2
2
|
|
|
3
3
|
from smartsheet.models import Column
|
|
4
|
-
from mock_api_test_helper import MockApiTestHelper, clean_api_error
|
|
4
|
+
from tests.mock_api.mock_api_test_helper import MockApiTestHelper, clean_api_error
|
|
5
5
|
|
|
6
6
|
class TestMockApiColumns(MockApiTestHelper):
|
|
7
7
|
@clean_api_error
|
{smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/mock_api/test_mock_api_folders.py
RENAMED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import pytest
|
|
4
4
|
from smartsheet.models import Folder, PaginatedChildrenResult, Sheet, Sight, Report
|
|
5
5
|
from smartsheet.exceptions import ApiError
|
|
6
|
-
from mock_api_test_helper import MockApiTestHelper, clean_api_error
|
|
6
|
+
from tests.mock_api.mock_api_test_helper import MockApiTestHelper, clean_api_error
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
class TestMockApiFolders(MockApiTestHelper):
|
|
@@ -181,4 +181,4 @@ class TestMockApiFolders(MockApiTestHelper):
|
|
|
181
181
|
assert sight.access_level == "EDITOR"
|
|
182
182
|
|
|
183
183
|
# Verify the lastKey is returned in the response
|
|
184
|
-
assert response.last_key == "xvmnw4mnx8v9wriot20574xvnjoqt4iuhnow490"
|
|
184
|
+
assert response.last_key == "xvmnw4mnx8v9wriot20574xvnjoqt4iuhnow490"
|
{smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/mock_api/test_mock_api_rows.py
RENAMED
|
@@ -4,7 +4,7 @@ import pytest
|
|
|
4
4
|
from smartsheet.models import Row, PredecessorList, Duration, ExplicitNull
|
|
5
5
|
from smartsheet.exceptions import ApiError
|
|
6
6
|
|
|
7
|
-
from mock_api_test_helper import MockApiTestHelper, clean_api_error
|
|
7
|
+
from tests.mock_api.mock_api_test_helper import MockApiTestHelper, clean_api_error
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class TestMockApiRows(MockApiTestHelper):
|