airbyte-source-shopify 3.0.8.dev202509081459__tar.gz → 3.0.9rc1__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 (69) hide show
  1. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/PKG-INFO +1 -1
  2. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/pyproject.toml +1 -1
  3. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/shopify_graphql/bulk/job.py +6 -1
  4. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/streams/base_streams.py +6 -3
  5. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/streams/streams.py +7 -0
  6. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/README.md +0 -0
  7. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/__init__.py +0 -0
  8. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/auth.py +0 -0
  9. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/config_migrations.py +0 -0
  10. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/http_request.py +0 -0
  11. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/run.py +0 -0
  12. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/abandoned_checkouts.json +0 -0
  13. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/articles.json +0 -0
  14. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/balance_transactions.json +0 -0
  15. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/blogs.json +0 -0
  16. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/collections.json +0 -0
  17. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/collects.json +0 -0
  18. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/countries.json +0 -0
  19. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/custom_collections.json +0 -0
  20. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/customer_address.json +0 -0
  21. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/customer_journey_summary.json +0 -0
  22. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/customers.json +0 -0
  23. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/discount_codes.json +0 -0
  24. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/disputes.json +0 -0
  25. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/draft_orders.json +0 -0
  26. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/fulfillment_orders.json +0 -0
  27. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/fulfillments.json +0 -0
  28. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/inventory_items.json +0 -0
  29. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/inventory_levels.json +0 -0
  30. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/locations.json +0 -0
  31. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/metafield_articles.json +0 -0
  32. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/metafield_blogs.json +0 -0
  33. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/metafield_collections.json +0 -0
  34. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/metafield_customers.json +0 -0
  35. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/metafield_draft_orders.json +0 -0
  36. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/metafield_locations.json +0 -0
  37. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/metafield_orders.json +0 -0
  38. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/metafield_pages.json +0 -0
  39. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/metafield_product_images.json +0 -0
  40. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/metafield_product_variants.json +0 -0
  41. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/metafield_products.json +0 -0
  42. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/metafield_shops.json +0 -0
  43. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/metafield_smart_collections.json +0 -0
  44. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/order_agreements.json +0 -0
  45. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/order_refunds.json +0 -0
  46. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/order_risks.json +0 -0
  47. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/orders.json +0 -0
  48. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/pages.json +0 -0
  49. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/price_rules.json +0 -0
  50. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/product_images.json +0 -0
  51. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/product_variants.json +0 -0
  52. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/products.json +0 -0
  53. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/profile_location_groups.json +0 -0
  54. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/shop.json +0 -0
  55. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/smart_collections.json +0 -0
  56. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/tender_transactions.json +0 -0
  57. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/schemas/transactions.json +0 -0
  58. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/scopes.py +0 -0
  59. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/shopify_graphql/bulk/__init__.py +0 -0
  60. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/shopify_graphql/bulk/exceptions.py +0 -0
  61. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/shopify_graphql/bulk/query.py +0 -0
  62. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/shopify_graphql/bulk/record.py +0 -0
  63. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/shopify_graphql/bulk/retry.py +0 -0
  64. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/shopify_graphql/bulk/status.py +0 -0
  65. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/shopify_graphql/bulk/tools.py +0 -0
  66. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/source.py +0 -0
  67. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/spec.json +0 -0
  68. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/transform.py +0 -0
  69. {airbyte_source_shopify-3.0.8.dev202509081459 → airbyte_source_shopify-3.0.9rc1}/source_shopify/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: airbyte-source-shopify
3
- Version: 3.0.8.dev202509081459
3
+ Version: 3.0.9rc1
4
4
  Summary: Source CDK implementation for Shopify.
5
5
  Home-page: https://airbyte.com
6
6
  License: ELv2
@@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",]
3
3
  build-backend = "poetry.core.masonry.api"
4
4
 
5
5
  [tool.poetry]
6
- version = "3.0.8.dev.202509081459"
6
+ version = "3.0.9-rc.1"
7
7
  name = "airbyte-source-shopify"
8
8
  description = "Source CDK implementation for Shopify."
9
9
  authors = [ "Airbyte <contact@airbyte.io>",]
@@ -531,9 +531,14 @@ class ShopifyBulkManager:
531
531
  self, slice_end: datetime, checkpointed_cursor: Optional[str] = None, filter_checkpointed_cursor: Optional[str] = None
532
532
  ) -> datetime:
533
533
  """
534
- Choose between the existing `slice_end` value or `checkpointed_cursor` value, if provided.
534
+ Choose between the existing `slice_end` value or `checkpointed_cursor` value or `filter_checkpointed_cursor` value, if provided.
535
535
 
536
536
  Optionally: raises the `transient` error if the checkpoint collision occurs.
537
+
538
+ Note: filter_checkpointed_cursor is only used when cursor field is ID for streams like Customer Address etc.
539
+ This method should return a datetime from last checkpointed value to adjust slice end, when cursor value is ID (int type)
540
+ method gets end datetime from filter_checkpointed_cursor, which is value from filter field from last record.
541
+ See https://github.com/airbytehq/oncall/issues/9052 for more details.
537
542
  """
538
543
 
539
544
  if checkpointed_cursor:
@@ -222,6 +222,11 @@ class IncrementalShopifyStream(ShopifyStream, ABC):
222
222
  return params
223
223
 
224
224
  def track_checkpoint_cursor(self, record_value: Union[str, int], filter_record_value: Optional[str] = None) -> None:
225
+ """
226
+ Tracks _checkpoint_cursor value (values from cursor field) and _filter_checkpointed_cursor value (value from filter field).
227
+ _filter_checkpointed_cursor value is only used when cursor field is ID for streams like Customer Address etc.
228
+ When after canceled/failed job source tries to adjust stream slice (see ShopifyBulkManager._adjust_slice_end()).
229
+ """
225
230
  if self.filter_by_state_checkpoint:
226
231
  # set checkpoint cursor
227
232
  if not self._checkpoint_cursor:
@@ -231,9 +236,7 @@ class IncrementalShopifyStream(ShopifyStream, ABC):
231
236
  self._checkpoint_cursor = record_value
232
237
 
233
238
  if filter_record_value:
234
- if not self._filter_checkpointed_cursor:
235
- self._filter_checkpointed_cursor = filter_record_value
236
- if str(filter_record_value) >= str(self._filter_checkpointed_cursor):
239
+ if not self._filter_checkpointed_cursor or str(filter_record_value) >= str(self._filter_checkpointed_cursor):
237
240
  self._filter_checkpointed_cursor = filter_record_value
238
241
 
239
242
  def should_checkpoint(self, index: int) -> bool:
@@ -4,6 +4,7 @@
4
4
 
5
5
 
6
6
  import logging
7
+ import sys
7
8
  from typing import Any, Iterable, Mapping, MutableMapping, Optional
8
9
 
9
10
  import requests
@@ -138,6 +139,12 @@ class MetafieldProducts(IncrementalShopifyGraphQlBulkStream):
138
139
  parent_stream_class = Products
139
140
  bulk_query: MetafieldProduct = MetafieldProduct
140
141
 
142
+ state_checkpoint_interval = sys.maxsize
143
+
144
+ @property
145
+ def filter_by_state_checkpoint(self) -> bool:
146
+ return True
147
+
141
148
 
142
149
  class ProductImages(IncrementalShopifyGraphQlBulkStream):
143
150
  parent_stream_class = Products