smartsheet-python-sdk 3.5.1__tar.gz → 3.5.3__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.1 → smartsheet_python_sdk-3.5.3}/.github/workflows/test-build.yaml +1 -2
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/CHANGELOG.md +22 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/PKG-INFO +28 -4
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/__init__.py +2 -0
- smartsheet_python_sdk-3.5.3/smartsheet/models/asset_share.py +138 -0
- smartsheet_python_sdk-3.5.3/smartsheet/models/asset_shares_paginated_result.py +84 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/sharing.py +6 -6
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/smartsheet.py +17 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/version.py +2 -2
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet_python_sdk.egg-info/PKG-INFO +29 -5
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet_python_sdk.egg-info/SOURCES.txt +5 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet_python_sdk.egg-info/top_level.txt +1 -0
- smartsheet_python_sdk-3.5.3/tests/__init__.py +0 -0
- smartsheet_python_sdk-3.5.3/tests/mock_api/__init__.py +0 -0
- smartsheet_python_sdk-3.5.3/tests/mock_api/mock_api_test_helper.py +73 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/mock_api/test_mock_api_automation_rules.py +1 -1
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/mock_api/test_mock_api_columns.py +1 -1
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/mock_api/test_mock_api_folders.py +2 -2
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/mock_api/test_mock_api_rows.py +1 -1
- smartsheet_python_sdk-3.5.3/tests/mock_api/test_mock_api_sharing.py +511 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/mock_api/test_mock_api_sheets.py +1 -1
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/mock_api/test_mock_api_sights.py +1 -1
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/mock_api/test_mock_api_workspaces.py +2 -2
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/mock_api/test_mock_change_agent.py +1 -2
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/mock_api/test_mock_serialization.py +1 -1
- smartsheet_python_sdk-3.5.1/tests/mock_api/mock_api_test_helper.py +0 -30
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/.gitchangelog.rc +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/.gitchangelog.tpl +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/.github/pull_request_template.md +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/.github/workflows/publish-distribution.yaml +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/.github/workflows/publish-documentation.yaml +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/.gitignore +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/.markdownlint.json +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/ADVANCED.md +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/CONTRIBUTING.md +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/LICENSE.md +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/Makefile +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/NOTICE +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/README.md +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/docs-source/Makefile +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/docs-source/conf.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/docs-source/index.rst +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/pylintrc +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/setup.cfg +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/setup.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/__init__.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/attachments.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/cells.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/contacts.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/discussions.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/events.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/exceptions.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/favorites.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/folders.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/groups.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/home.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/images.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/access_token.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/account.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/alternate_email.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/attachment.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/auto_number_format.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/automation_action.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/automation_rule.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/boolean_object_value.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/bulk_item_failure.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/bulk_item_result.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/cell.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/cell_data_item.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/cell_history.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/cell_link.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/cell_link_widget_content.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/chart_widget_content.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/column.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/comment.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/contact.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/contact_object_value.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/container_destination.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/copy_or_move_row_destination.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/copy_or_move_row_directive.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/copy_or_move_row_result.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/criteria.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/cross_sheet_reference.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/currency.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/date_object_value.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/datetime_object_value.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/discussion.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/downloaded_file.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/duration.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/email.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/__init__.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/access_level.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/asset_type.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/attachment_parent_type.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/attachment_sub_type.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/attachment_type.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/automation_action_frequency.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/automation_action_type.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/automation_rule_disabled_reason.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/cell_link_status.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/column_type.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/criteria_target.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/cross_sheet_reference_status.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/currency_code.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/day_descriptors.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/day_ordinal.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/event_action.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/event_obejct_type.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/event_source.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/global_template.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/operator.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/paper_type.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/predecessor_type.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/publish_accessible_by.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/schedule_type.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/seat_type.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/share_scope.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/share_type.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/sheet_email_format.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/sheet_filter_operator.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/sheet_filter_type.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/sort_direction.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/symbol.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/system_column_type.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/update_request_status.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/user_status.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/widget_type.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/error.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/error_result.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/event.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/event_result.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/explicit_null.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/favorite.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/folder.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/font_family.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/format_details.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/format_tables.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/group.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/group_member.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/home.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/hyperlink.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/image.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/image_url.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/image_url_map.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/image_widget_content.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/index_result.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/json_object.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/multi_contact_object_value.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/multi_picklist_object_value.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/multi_row_email.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/number_object_value.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/o_auth_error.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/object_value.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/paginated_children_result.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/predecessor.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/predecessor_list.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/primitive_object_value.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/profile_image.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/project_settings.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/recipient.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/report.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/report_cell.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/report_column.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/report_publish.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/report_row.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/report_widget_content.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/result.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/row.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/row_email.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/row_mapping.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/schedule.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/scope.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/search_result.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/search_result_item.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/selection_range.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/sent_update_request.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/server_info.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/share.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/sheet.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/sheet_email.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/sheet_filter.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/sheet_filter_details.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/sheet_publish.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/sheet_summary.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/sheet_user_permissions.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/sheet_user_settings.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/shortcut_data_item.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/shortcut_widget_content.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/sight.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/sight_publish.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/sort_criterion.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/sort_specifier.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/source.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/string_object_value.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/summary_field.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/template.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/title_rich_text_widget_content.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/token_paginated_result.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/update_request.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/user.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/user_model.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/user_plan.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/user_profile.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/version.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/web_content_widget_content.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/webhook.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/webhook_secret.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/webhook_stats.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/webhook_subscope.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/widget.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/widget_content.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/widget_hyperlink.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/workspace.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/object_value.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/passthrough.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/reports.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/search.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/server.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/session.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/sheets.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/sights.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/templates.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/token.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/types.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/users.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/util.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/webhooks.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/workspaces.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet_python_sdk.egg-info/dependency_links.txt +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet_python_sdk.egg-info/requires.txt +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/README.md +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/conftest.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/fixtures/calling_all_curs.txt +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/fixtures/curly.jpg +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/fixtures/moe-curly.jpg +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/fixtures/quote.txt +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/fixtures/stooges_v1.jpg +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/fixtures/stooges_v2.jpg +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_attachments.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_columns.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_contacts.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_cross_sheet_references.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_discussions.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_events.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_favorites.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_folders.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_groups.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_home.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_model_attributes.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_multi_picklist.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_object_value.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_passthrough.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_regression.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_reports.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_rows.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_server_info.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_sharing.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_sheet_summary.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_sheets.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_templates.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_update_requests.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_users.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_webhooks.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_workspaces.py +0 -0
- {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_zsearch.py +0 -0
{smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/.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,28 @@ 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.3] - 2025-10-31
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- The new sharing endpoints (/2.0/shares) return string for userId and groupId, adjust the SDK to that.
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- `AssetShare` model to fully comply with the new sharing endpoints (/2.0/shares) DTO.
|
|
17
|
+
|
|
18
|
+
## [3.5.2] - 2025-10-29
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
|
|
22
|
+
- Fix list_asset_shares to return AssetSharesPaginatedResult.
|
|
23
|
+
- Fix update_asset_share to return Share
|
|
24
|
+
|
|
25
|
+
## Added
|
|
26
|
+
|
|
27
|
+
- Add AssetSharesPaginatedResult for list asset shares.
|
|
28
|
+
- Add mock api tests for sharing endpoints.
|
|
29
|
+
|
|
8
30
|
## [3.5.1] - 2025-10-28
|
|
9
31
|
|
|
10
32
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: smartsheet_python_sdk
|
|
3
|
-
Version: 3.5.
|
|
3
|
+
Version: 3.5.3
|
|
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,10 +20,34 @@ 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
|
-
Provides-Extra: test
|
|
24
|
-
Provides-Extra: develop
|
|
25
23
|
License-File: LICENSE.md
|
|
26
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
|
+
Provides-Extra: test
|
|
31
|
+
Requires-Dist: coverage; extra == "test"
|
|
32
|
+
Requires-Dist: coveralls; extra == "test"
|
|
33
|
+
Requires-Dist: pytest; extra == "test"
|
|
34
|
+
Provides-Extra: develop
|
|
35
|
+
Requires-Dist: coverage; extra == "develop"
|
|
36
|
+
Requires-Dist: coveralls[yaml]; extra == "develop"
|
|
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
|
|
27
51
|
|
|
28
52
|
# Smartsheet Python SDK
|
|
29
53
|
|
|
@@ -0,0 +1,138 @@
|
|
|
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 ..types import EnumeratedValue, String, json
|
|
21
|
+
from ..util import deserialize, serialize
|
|
22
|
+
from .enums import AccessLevel, ShareScope, ShareType
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class AssetShare:
|
|
26
|
+
|
|
27
|
+
"""Smartsheet AssetShare data model."""
|
|
28
|
+
|
|
29
|
+
def __init__(self, props=None, base_obj=None):
|
|
30
|
+
"""Initialize the AssetShare model."""
|
|
31
|
+
self._base = None
|
|
32
|
+
if base_obj is not None:
|
|
33
|
+
self._base = base_obj
|
|
34
|
+
|
|
35
|
+
self._access_level = EnumeratedValue(AccessLevel)
|
|
36
|
+
self._email = String()
|
|
37
|
+
self._group_id = String()
|
|
38
|
+
self._id_ = String()
|
|
39
|
+
self._name = String()
|
|
40
|
+
self._scope = EnumeratedValue(ShareScope)
|
|
41
|
+
self._type_ = EnumeratedValue(ShareType)
|
|
42
|
+
self._user_id = String()
|
|
43
|
+
|
|
44
|
+
if props:
|
|
45
|
+
deserialize(self, props)
|
|
46
|
+
|
|
47
|
+
# requests package Response object
|
|
48
|
+
self.request_response = None
|
|
49
|
+
self.__initialized = True
|
|
50
|
+
|
|
51
|
+
def __getattr__(self, key):
|
|
52
|
+
if key == "id":
|
|
53
|
+
return self.id_
|
|
54
|
+
elif key == "type":
|
|
55
|
+
return self.type_
|
|
56
|
+
else:
|
|
57
|
+
raise AttributeError(key)
|
|
58
|
+
|
|
59
|
+
def __setattr__(self, key, value):
|
|
60
|
+
if key == "id":
|
|
61
|
+
self.id_ = value
|
|
62
|
+
elif key == "type":
|
|
63
|
+
self.type_ = value
|
|
64
|
+
else:
|
|
65
|
+
super().__setattr__(key, value)
|
|
66
|
+
|
|
67
|
+
@property
|
|
68
|
+
def access_level(self):
|
|
69
|
+
return self._access_level
|
|
70
|
+
|
|
71
|
+
@access_level.setter
|
|
72
|
+
def access_level(self, value):
|
|
73
|
+
self._access_level.set(value)
|
|
74
|
+
|
|
75
|
+
@property
|
|
76
|
+
def email(self):
|
|
77
|
+
return self._email.value
|
|
78
|
+
|
|
79
|
+
@email.setter
|
|
80
|
+
def email(self, value):
|
|
81
|
+
self._email.value = value
|
|
82
|
+
|
|
83
|
+
@property
|
|
84
|
+
def group_id(self):
|
|
85
|
+
return self._group_id.value
|
|
86
|
+
|
|
87
|
+
@group_id.setter
|
|
88
|
+
def group_id(self, value):
|
|
89
|
+
self._group_id.value = value
|
|
90
|
+
|
|
91
|
+
@property
|
|
92
|
+
def id_(self):
|
|
93
|
+
return self._id_.value
|
|
94
|
+
|
|
95
|
+
@id_.setter
|
|
96
|
+
def id_(self, value):
|
|
97
|
+
self._id_.value = value
|
|
98
|
+
|
|
99
|
+
@property
|
|
100
|
+
def name(self):
|
|
101
|
+
return self._name.value
|
|
102
|
+
|
|
103
|
+
@name.setter
|
|
104
|
+
def name(self, value):
|
|
105
|
+
self._name.value = value
|
|
106
|
+
|
|
107
|
+
@property
|
|
108
|
+
def scope(self):
|
|
109
|
+
return self._scope
|
|
110
|
+
|
|
111
|
+
@scope.setter
|
|
112
|
+
def scope(self, value):
|
|
113
|
+
self._scope.set(value)
|
|
114
|
+
|
|
115
|
+
@property
|
|
116
|
+
def type_(self):
|
|
117
|
+
return self._type_
|
|
118
|
+
|
|
119
|
+
@type_.setter
|
|
120
|
+
def type_(self, value):
|
|
121
|
+
self._type_.set(value)
|
|
122
|
+
|
|
123
|
+
@property
|
|
124
|
+
def user_id(self):
|
|
125
|
+
return self._user_id.value
|
|
126
|
+
|
|
127
|
+
@user_id.setter
|
|
128
|
+
def user_id(self, value):
|
|
129
|
+
self._user_id.value = value
|
|
130
|
+
|
|
131
|
+
def to_dict(self):
|
|
132
|
+
return serialize(self)
|
|
133
|
+
|
|
134
|
+
def to_json(self):
|
|
135
|
+
return json.dumps(self.to_dict())
|
|
136
|
+
|
|
137
|
+
def __str__(self):
|
|
138
|
+
return self.to_json()
|
|
@@ -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 .asset_share import AssetShare
|
|
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[AssetShare]:
|
|
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()
|
|
@@ -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', 'AssetShare']
|
|
58
58
|
|
|
59
59
|
prepped_request = self._base.prepare_request(_op)
|
|
60
60
|
response = self._base.request(prepped_request, expected, _op)
|
|
@@ -70,7 +70,7 @@ class Sharing:
|
|
|
70
70
|
share_id (str): Share ID
|
|
71
71
|
|
|
72
72
|
Returns:
|
|
73
|
-
|
|
73
|
+
AssetShare
|
|
74
74
|
"""
|
|
75
75
|
_op = fresh_operation('get_asset_share')
|
|
76
76
|
_op['method'] = 'GET'
|
|
@@ -78,7 +78,7 @@ class Sharing:
|
|
|
78
78
|
_op['query_params']['assetType'] = asset_type
|
|
79
79
|
_op['query_params']['assetId'] = asset_id
|
|
80
80
|
|
|
81
|
-
expected = '
|
|
81
|
+
expected = 'AssetShare'
|
|
82
82
|
prepped_request = self._base.prepare_request(_op)
|
|
83
83
|
response = self._base.request(prepped_request, expected, _op)
|
|
84
84
|
|
|
@@ -106,7 +106,7 @@ class Sharing:
|
|
|
106
106
|
_op['query_params']['sendEmail'] = send_email
|
|
107
107
|
_op['json'] = share_obj
|
|
108
108
|
|
|
109
|
-
expected = ['Result', '
|
|
109
|
+
expected = ['Result', 'AssetShare']
|
|
110
110
|
|
|
111
111
|
prepped_request = self._base.prepare_request(_op)
|
|
112
112
|
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 = 'AssetShare'
|
|
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(
|
{smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet_python_sdk.egg-info/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
2
|
-
Name:
|
|
3
|
-
Version: 3.5.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: smartsheet_python_sdk
|
|
3
|
+
Version: 3.5.3
|
|
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,10 +20,34 @@ 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
|
-
Provides-Extra: test
|
|
24
|
-
Provides-Extra: develop
|
|
25
23
|
License-File: LICENSE.md
|
|
26
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
|
+
Provides-Extra: test
|
|
31
|
+
Requires-Dist: coverage; extra == "test"
|
|
32
|
+
Requires-Dist: coveralls; extra == "test"
|
|
33
|
+
Requires-Dist: pytest; extra == "test"
|
|
34
|
+
Provides-Extra: develop
|
|
35
|
+
Requires-Dist: coverage; extra == "develop"
|
|
36
|
+
Requires-Dist: coveralls[yaml]; extra == "develop"
|
|
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
|
|
27
51
|
|
|
28
52
|
# Smartsheet Python SDK
|
|
29
53
|
|
|
@@ -55,6 +55,8 @@ 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_share.py
|
|
59
|
+
smartsheet/models/asset_shares_paginated_result.py
|
|
58
60
|
smartsheet/models/attachment.py
|
|
59
61
|
smartsheet/models/auto_number_format.py
|
|
60
62
|
smartsheet/models/automation_action.py
|
|
@@ -213,6 +215,7 @@ smartsheet_python_sdk.egg-info/SOURCES.txt
|
|
|
213
215
|
smartsheet_python_sdk.egg-info/dependency_links.txt
|
|
214
216
|
smartsheet_python_sdk.egg-info/requires.txt
|
|
215
217
|
smartsheet_python_sdk.egg-info/top_level.txt
|
|
218
|
+
tests/__init__.py
|
|
216
219
|
tests/integration/README.md
|
|
217
220
|
tests/integration/conftest.py
|
|
218
221
|
tests/integration/test_attachments.py
|
|
@@ -248,11 +251,13 @@ tests/integration/fixtures/moe-curly.jpg
|
|
|
248
251
|
tests/integration/fixtures/quote.txt
|
|
249
252
|
tests/integration/fixtures/stooges_v1.jpg
|
|
250
253
|
tests/integration/fixtures/stooges_v2.jpg
|
|
254
|
+
tests/mock_api/__init__.py
|
|
251
255
|
tests/mock_api/mock_api_test_helper.py
|
|
252
256
|
tests/mock_api/test_mock_api_automation_rules.py
|
|
253
257
|
tests/mock_api/test_mock_api_columns.py
|
|
254
258
|
tests/mock_api/test_mock_api_folders.py
|
|
255
259
|
tests/mock_api/test_mock_api_rows.py
|
|
260
|
+
tests/mock_api/test_mock_api_sharing.py
|
|
256
261
|
tests/mock_api/test_mock_api_sheets.py
|
|
257
262
|
tests/mock_api/test_mock_api_sights.py
|
|
258
263
|
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.5.1 → smartsheet_python_sdk-3.5.3}/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.5.1 → smartsheet_python_sdk-3.5.3}/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.5.1 → smartsheet_python_sdk-3.5.3}/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):
|