click_and_drop_api 3.0.0__tar.gz → 3.0.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.
Files changed (173) hide show
  1. {click_and_drop_api-3.0.0/click_and_drop_api.egg-info → click_and_drop_api-3.0.2}/PKG-INFO +1 -1
  2. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/examples/__init__.py +1 -0
  3. click_and_drop_api-3.0.2/click_and_drop_api/examples/__main__.py +27 -0
  4. click_and_drop_api-3.0.2/click_and_drop_api/examples/view_order.py +46 -0
  5. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/base.py +8 -1
  6. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/shipping/db.py +5 -0
  7. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/shipping/package_shipping_option.py +4 -0
  8. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2/click_and_drop_api.egg-info}/PKG-INFO +1 -1
  9. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api.egg-info/SOURCES.txt +2 -0
  10. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/pyproject.toml +1 -1
  11. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_mock_api.py +34 -0
  12. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_shipping_options.py +22 -18
  13. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/LICENSE +0 -0
  14. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/MANIFEST.in +0 -0
  15. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/README.md +0 -0
  16. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/__init__.py +0 -0
  17. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/api/__init__.py +0 -0
  18. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/api/labels_api.py +0 -0
  19. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/api/manifests_api.py +0 -0
  20. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/api/orders_api.py +0 -0
  21. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/api/version_api.py +0 -0
  22. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/api_client.py +0 -0
  23. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/api_response.py +0 -0
  24. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/configuration.py +0 -0
  25. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/examples/check_oba.py +0 -0
  26. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/examples/create_order.py +0 -0
  27. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/examples/generate_label.py +0 -0
  28. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/examples/package_size_and_cost.py +0 -0
  29. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/examples/shipping_countries.py +0 -0
  30. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/examples/view_specific_orders.py +0 -0
  31. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/examples/view_version.py +0 -0
  32. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/exceptions.py +0 -0
  33. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/__init__.py +0 -0
  34. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/address_request.py +0 -0
  35. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/billing_details_request.py +0 -0
  36. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/create_order_error_response.py +0 -0
  37. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/create_order_label_error_response.py +0 -0
  38. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/create_order_request.py +0 -0
  39. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/create_order_response.py +0 -0
  40. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/create_orders_request.py +0 -0
  41. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/create_orders_response.py +0 -0
  42. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/create_packages_response.py +0 -0
  43. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/delete_orders_resource.py +0 -0
  44. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/deleted_order_info.py +0 -0
  45. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/dimensions_request.py +0 -0
  46. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/error_response.py +0 -0
  47. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/failed_order_response.py +0 -0
  48. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/get_order_details_resource.py +0 -0
  49. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/get_order_info_resource.py +0 -0
  50. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/get_order_line_result.py +0 -0
  51. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/get_orders_details_response.py +0 -0
  52. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/get_orders_response.py +0 -0
  53. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/get_postal_details_result.py +0 -0
  54. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/get_shipping_details_result.py +0 -0
  55. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/get_tag_details_result.py +0 -0
  56. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/get_version_resource.py +0 -0
  57. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/importer.py +0 -0
  58. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/label_generation_request.py +0 -0
  59. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/manifest_details_response.py +0 -0
  60. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/manifest_eligible_orders_request.py +0 -0
  61. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/manifest_errors_error_details_response.py +0 -0
  62. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/manifest_errors_response.py +0 -0
  63. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/manifest_orders_response.py +0 -0
  64. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/order_error_info.py +0 -0
  65. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/order_error_response.py +0 -0
  66. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/order_field_response.py +0 -0
  67. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/order_update_error.py +0 -0
  68. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/postage_details_request.py +0 -0
  69. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/product_item_request.py +0 -0
  70. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/recipient_details_request.py +0 -0
  71. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/sender_details_request.py +0 -0
  72. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/shipment_package_request.py +0 -0
  73. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/tag_request.py +0 -0
  74. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/update_order_status_request.py +0 -0
  75. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/update_order_status_response.py +0 -0
  76. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/update_orders_status_request.py +0 -0
  77. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/models/updated_order_info.py +0 -0
  78. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/py.typed +0 -0
  79. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/rest.py +0 -0
  80. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/__init__.py +0 -0
  81. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/addresses.py +0 -0
  82. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/api.py +0 -0
  83. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/errors.py +0 -0
  84. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/mock.py +0 -0
  85. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/shipping/__init__.py +0 -0
  86. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/shipping/documents.py +0 -0
  87. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/shipping/format_dimensions.py +0 -0
  88. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/shipping/large_letter.py +0 -0
  89. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/shipping/large_parcel.py +0 -0
  90. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/shipping/letter.py +0 -0
  91. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/shipping/medium_parcel.py +0 -0
  92. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/shipping/non-oba codes/large_letter-DE.txt +0 -0
  93. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/shipping/non-oba codes/large_letter-GB.txt +0 -0
  94. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/shipping/non-oba codes/large_parcel-DE.txt +0 -0
  95. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/shipping/non-oba codes/large_parcel-GB.txt +0 -0
  96. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/shipping/non-oba codes/letter-DE.txt +0 -0
  97. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/shipping/non-oba codes/letter-GB.txt +0 -0
  98. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/shipping/non-oba codes/medium_parcel-DE.txt +0 -0
  99. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/shipping/non-oba codes/medium_parcel-GB.txt +0 -0
  100. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/shipping/non-oba codes/small_parcel-DE.txt +0 -0
  101. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/shipping/non-oba codes/small_parcel-GB.txt +0 -0
  102. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/shipping/oba-codes/documents-DE.txt +0 -0
  103. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/shipping/oba-codes/large_letter-DE.txt +0 -0
  104. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/shipping/oba-codes/large_letter-GB.txt +0 -0
  105. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/shipping/oba-codes/letter-DE.txt +0 -0
  106. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/shipping/oba-codes/letter-GB.txt +0 -0
  107. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/shipping/oba-codes/parcel-DE.txt +0 -0
  108. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/shipping/oba-codes/parcel-GB.txt +0 -0
  109. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/shipping/oba_parser.py +0 -0
  110. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/shipping/parcel.py +0 -0
  111. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/shipping/parser.py +0 -0
  112. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/shipping/small_parcel.py +0 -0
  113. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/shipping_test_result.py +0 -0
  114. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api/simple/types.py +0 -0
  115. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api.egg-info/dependency_links.txt +0 -0
  116. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api.egg-info/requires.txt +0 -0
  117. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/click_and_drop_api.egg-info/top_level.txt +0 -0
  118. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/setup.cfg +0 -0
  119. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/setup.py +0 -0
  120. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_address_request.py +0 -0
  121. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_billing_details_request.py +0 -0
  122. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_choose_size_by_weight.py +0 -0
  123. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_create_order_error_response.py +0 -0
  124. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_create_order_label_error_response.py +0 -0
  125. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_create_order_request.py +0 -0
  126. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_create_order_response.py +0 -0
  127. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_create_orders_request.py +0 -0
  128. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_create_orders_response.py +0 -0
  129. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_create_packages_response.py +0 -0
  130. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_delete_orders_resource.py +0 -0
  131. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_deleted_order_info.py +0 -0
  132. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_dimensions_request.py +0 -0
  133. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_error_response.py +0 -0
  134. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_failed_order_response.py +0 -0
  135. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_get_order_details_resource.py +0 -0
  136. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_get_order_info_resource.py +0 -0
  137. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_get_order_line_result.py +0 -0
  138. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_get_orders_details_response.py +0 -0
  139. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_get_orders_response.py +0 -0
  140. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_get_postal_details_result.py +0 -0
  141. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_get_shipping_details_result.py +0 -0
  142. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_get_tag_details_result.py +0 -0
  143. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_get_version_resource.py +0 -0
  144. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_importer.py +0 -0
  145. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_label_generation_request.py +0 -0
  146. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_labels_api.py +0 -0
  147. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_manifest_details_response.py +0 -0
  148. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_manifest_eligible_orders_request.py +0 -0
  149. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_manifest_errors_error_details_response.py +0 -0
  150. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_manifest_errors_response.py +0 -0
  151. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_manifest_orders_response.py +0 -0
  152. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_manifests_api.py +0 -0
  153. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_oba_parser.py +0 -0
  154. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_order_error_info.py +0 -0
  155. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_order_error_response.py +0 -0
  156. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_order_field_response.py +0 -0
  157. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_order_update_error.py +0 -0
  158. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_orders_api.py +0 -0
  159. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_parcel_constraints.py +0 -0
  160. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_parcel_weights.py +0 -0
  161. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_postage_details_request.py +0 -0
  162. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_product_item_request.py +0 -0
  163. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_recipient_details_request.py +0 -0
  164. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_sender_details_request.py +0 -0
  165. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_shipment_package_request.py +0 -0
  166. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_shipping_option_model.py +0 -0
  167. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_simple_create_api.py +0 -0
  168. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_tag_request.py +0 -0
  169. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_update_order_status_request.py +0 -0
  170. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_update_order_status_response.py +0 -0
  171. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_update_orders_status_request.py +0 -0
  172. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_updated_order_info.py +0 -0
  173. {click_and_drop_api-3.0.0 → click_and_drop_api-3.0.2}/test/test_version_api.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: click_and_drop_api
3
- Version: 3.0.0
3
+ Version: 3.0.2
4
4
  Summary: ChannelShipper & Royal Mail Public API
5
5
  Home-page:
6
6
  Author: OpenAPI Generator community
@@ -7,6 +7,7 @@ Each module can be executed directly::
7
7
  python -m click_and_drop_api.examples.shipping_countries
8
8
  python -m click_and_drop_api.examples.create_order
9
9
  python -m click_and_drop_api.examples.view_specific_orders
10
+ python -m click_and_drop_api.examples.view_order
10
11
  python -m click_and_drop_api.examples.package_size_and_cost
11
12
  python -m click_and_drop_api.examples.generate_label
12
13
  """
@@ -0,0 +1,27 @@
1
+ """List all available examples with their descriptions."""
2
+
3
+ import ast
4
+ import textwrap
5
+ from pathlib import Path
6
+
7
+ _BASE = "click_and_drop_api.examples"
8
+ _DIR = Path(__file__).parent
9
+
10
+
11
+ def _docstring(name: str) -> str:
12
+ source = (_DIR / f"{name}.py").read_text()
13
+ tree = ast.parse(source)
14
+ return ast.get_docstring(tree) or ""
15
+
16
+
17
+ _examples = sorted(p.stem for p in _DIR.glob("*.py") if not p.stem.startswith("_"))
18
+
19
+ for name in _examples:
20
+ doc = _docstring(name).strip()
21
+ first_line, _, rest = doc.partition("\n")
22
+ detail = textwrap.indent(rest.strip(), " ") if rest.strip() else ""
23
+ print(f"python -m {_BASE}.{name}")
24
+ print(f" {first_line}")
25
+ if detail:
26
+ print(detail)
27
+ print()
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env python
2
+ """Print details of a single order by order number or reference.
3
+
4
+ Usage::
5
+
6
+ python -m click_and_drop_api.examples.view_order <order_id_or_reference>
7
+ """
8
+
9
+ import os
10
+ import sys
11
+
12
+ from click_and_drop_api.simple import ClickAndDrop
13
+
14
+ API_KEY = os.environ["API_KEY"]
15
+
16
+ if len(sys.argv) != 2:
17
+ print(
18
+ "Usage: python -m click_and_drop_api.examples.view_order <order_id_or_reference>"
19
+ )
20
+ sys.exit(1)
21
+
22
+ identifier = sys.argv[1]
23
+ # treat numeric strings as integer order IDs
24
+ if identifier.isdigit():
25
+ identifier = int(identifier)
26
+
27
+ api = ClickAndDrop(API_KEY)
28
+ order = api.get_order(identifier)
29
+
30
+ if order is None:
31
+ print(f"Order not found: {identifier!r}")
32
+ sys.exit(1)
33
+
34
+ print(f"Order identifier : {order.order_identifier}")
35
+ print(f"Order reference : {order.order_reference}")
36
+ print(f"Created on : {order.created_on}")
37
+ print(f"Order date : {order.order_date}")
38
+ print(f"Printed on : {order.printed_on}")
39
+ print(f"Manifested on : {order.manifested_on}")
40
+ print(f"Shipped on : {order.shipped_on}")
41
+ print(f"Tracking number : {order.tracking_number}")
42
+
43
+ if order.packages:
44
+ print(f"Packages ({len(order.packages)}):")
45
+ for pkg in order.packages:
46
+ print(f" #{pkg.package_number} tracking: {pkg.tracking_number}")
@@ -12,6 +12,7 @@ from datetime import datetime, timezone
12
12
 
13
13
  from click_and_drop_api.exceptions import ApiException
14
14
  from click_and_drop_api.models.create_order_response import CreateOrderResponse
15
+ from click_and_drop_api.models.order_field_response import OrderFieldResponse
15
16
  from click_and_drop_api.simple import (
16
17
  Address,
17
18
  CreateOrder,
@@ -173,7 +174,9 @@ class AbstractClickAndDrop(ABC):
173
174
  failed_addresses.append(get_order_address(fo.order))
174
175
  failed_messages.append(
175
176
  ";".join(
176
- f"Error {e.error_code} in {e.fields}: {e.error_message}"
177
+ f"Error {e.error_code} in "
178
+ f"{self.format_fields_for_error_message(e.fields)}: "
179
+ f"{e.error_message}"
177
180
  for e in fo.errors
178
181
  )
179
182
  )
@@ -183,6 +186,10 @@ class AbstractClickAndDrop(ABC):
183
186
  successful_addresses, failed_addresses, failed_messages
184
187
  )
185
188
 
189
+ def format_fields_for_error_message(self, fields: list[OrderFieldResponse]) -> str:
190
+ """Return a comma-separated list of error message fields."""
191
+ return ", ".join(f"{f.field_name}={f.value}" for f in fields)
192
+
186
193
  def get_order_test_name(self, country_code: str) -> str:
187
194
  """Return a name for a test order for a specific country."""
188
195
  return f"test-{country_code}-{uuid.uuid4().hex[:16]}"
@@ -127,6 +127,11 @@ class ShippingDB:
127
127
  """
128
128
  return self._options[0]
129
129
 
130
+ @property
131
+ def any_or_none(self) -> Optional[PackageShippingOption]:
132
+ """Any option in the DB, or ``None`` if the DB is empty."""
133
+ return self._options[0] if self._options else None
134
+
130
135
  def __getitem__(self, key: int):
131
136
  return self._options[key]
132
137
 
@@ -20,6 +20,10 @@ class PackageShippingOption:
20
20
  Merges all physical package constraints (dimensions, weight) with the
21
21
  full Royal Mail service details (code, enhancements, pricing) into one
22
22
  object so callers never have to juggle two separate instances.
23
+
24
+ Note:
25
+ OBA shipping options do not have a price.
26
+ https://clickanddrop.uservoice.com/forums/399930-general/suggestions/45005089-show-the-service-price-cost
23
27
  """
24
28
 
25
29
  # ── Package format ──────────────────────────────────────────────────────
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: click_and_drop_api
3
- Version: 3.0.0
3
+ Version: 3.0.2
4
4
  Summary: ChannelShipper & Royal Mail Public API
5
5
  Home-page:
6
6
  Author: OpenAPI Generator community
@@ -22,11 +22,13 @@ click_and_drop_api/api/manifests_api.py
22
22
  click_and_drop_api/api/orders_api.py
23
23
  click_and_drop_api/api/version_api.py
24
24
  click_and_drop_api/examples/__init__.py
25
+ click_and_drop_api/examples/__main__.py
25
26
  click_and_drop_api/examples/check_oba.py
26
27
  click_and_drop_api/examples/create_order.py
27
28
  click_and_drop_api/examples/generate_label.py
28
29
  click_and_drop_api/examples/package_size_and_cost.py
29
30
  click_and_drop_api/examples/shipping_countries.py
31
+ click_and_drop_api/examples/view_order.py
30
32
  click_and_drop_api/examples/view_specific_orders.py
31
33
  click_and_drop_api/examples/view_version.py
32
34
  click_and_drop_api/models/__init__.py
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "click_and_drop_api"
3
- version = "3.0.0"
3
+ version = "3.0.2"
4
4
  description = "ChannelShipper & Royal Mail Public API"
5
5
  authors = [
6
6
  {name = "Nicco Kunzmann", email = "niccokunzmann@rambler.ru"},
@@ -4,6 +4,7 @@ from datetime import datetime, timezone
4
4
 
5
5
  import pytest
6
6
 
7
+ from click_and_drop_api.models.order_field_response import OrderFieldResponse
7
8
  from click_and_drop_api.simple.shipping_test_result import ShippingTestResult
8
9
  from click_and_drop_api.simple.mock import MockClickAndDrop
9
10
  from click_and_drop_api.simple.types import (
@@ -277,3 +278,36 @@ def test_test_shipping_multiple_calls_stay_clean():
277
278
  result = api.test_shipping("smallParcel", service_code)
278
279
  assert result.is_success is True
279
280
  assert len(api._orders) == 0
281
+
282
+
283
+ _api = MockClickAndDrop()
284
+
285
+
286
+ def _field(name: str, value: str | None) -> OrderFieldResponse:
287
+ return OrderFieldResponse(fieldName=name, value=value)
288
+
289
+
290
+ def test_format_fields_empty():
291
+ assert _api.format_fields_for_error_message([]) == ""
292
+
293
+
294
+ def test_format_fields_single():
295
+ assert (
296
+ _api.format_fields_for_error_message([_field("postcode", "INVALID")])
297
+ == "postcode=INVALID"
298
+ )
299
+
300
+
301
+ def test_format_fields_multiple():
302
+ fields = [_field("postcode", "INVALID"), _field("countryCode", "XX")]
303
+ assert (
304
+ _api.format_fields_for_error_message(fields)
305
+ == "postcode=INVALID, countryCode=XX"
306
+ )
307
+
308
+
309
+ def test_format_fields_none_value():
310
+ assert (
311
+ _api.format_fields_for_error_message([_field("postcode", None)])
312
+ == "postcode=None"
313
+ )
@@ -1,5 +1,10 @@
1
1
  import pytest
2
2
  from click_and_drop_api.simple import check_service_codes, db
3
+ from click_and_drop_api.simple.shipping.db import ShippingDB
4
+ from click_and_drop_api.simple.shipping.package_shipping_option import (
5
+ PackageShippingOption,
6
+ )
7
+ from decimal import Decimal as D
3
8
 
4
9
 
5
10
  def test_list_all_shipping_options():
@@ -107,11 +112,6 @@ def test_ship_with_low_weight():
107
112
  ],
108
113
  )
109
114
  def test_dimensions_order_themselves(dims, fits):
110
- from click_and_drop_api.simple.shipping.package_shipping_option import (
111
- PackageShippingOption,
112
- )
113
- from decimal import Decimal as D
114
-
115
115
  p = PackageShippingOption(
116
116
  package_size_code="letter",
117
117
  package_name="Letter",
@@ -130,11 +130,6 @@ def test_dimensions_order_themselves(dims, fits):
130
130
 
131
131
 
132
132
  def test_dimensions():
133
- from click_and_drop_api.simple.shipping.package_shipping_option import (
134
- PackageShippingOption,
135
- )
136
- from decimal import Decimal as D
137
-
138
133
  p = PackageShippingOption(
139
134
  package_size_code="letter",
140
135
  package_name="Letter",
@@ -153,11 +148,6 @@ def test_dimensions():
153
148
 
154
149
 
155
150
  def test_negative_values_not_ok():
156
- from click_and_drop_api.simple.shipping.package_shipping_option import (
157
- PackageShippingOption,
158
- )
159
- from decimal import Decimal as D
160
-
161
151
  p = PackageShippingOption(
162
152
  package_size_code="letter",
163
153
  package_name="Letter",
@@ -183,8 +173,6 @@ def test_db_len():
183
173
 
184
174
  def test_db_bool():
185
175
  assert db
186
- from click_and_drop_api.simple.shipping.db import ShippingDB
187
-
188
176
  assert not ShippingDB([])
189
177
 
190
178
 
@@ -197,7 +185,23 @@ def test_db_iter():
197
185
  def test_db_getitem():
198
186
  first = db[0]
199
187
  assert hasattr(first, "service_code")
200
- assert hasattr(first, "package_size_code")
188
+
189
+
190
+ def test_db_any():
191
+ assert db.any is db[0]
192
+
193
+
194
+ def test_db_any_raises_on_empty():
195
+ with pytest.raises(IndexError):
196
+ ShippingDB([]).any
197
+
198
+
199
+ def test_db_any_or_none_non_empty():
200
+ assert db.any_or_none is db[0]
201
+
202
+
203
+ def test_db_any_or_none_empty():
204
+ assert ShippingDB([]).any_or_none is None
201
205
 
202
206
 
203
207
  def test_db_str():