airbyte-agent-shopify 0.1.25__py3-none-any.whl → 0.1.27__py3-none-any.whl

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.
@@ -13,10 +13,10 @@ from .models import (
13
13
  CustomerAddressList,
14
14
  MarketingConsent,
15
15
  OrderAddress,
16
- LineItem,
17
- Fulfillment,
18
16
  Transaction,
19
17
  Refund,
18
+ LineItem,
19
+ Fulfillment,
20
20
  Order,
21
21
  OrderList,
22
22
  ProductVariant,
@@ -187,10 +187,10 @@ __all__ = [
187
187
  "CustomerAddressList",
188
188
  "MarketingConsent",
189
189
  "OrderAddress",
190
- "LineItem",
191
- "Fulfillment",
192
190
  "Transaction",
193
191
  "Refund",
192
+ "LineItem",
193
+ "Fulfillment",
194
194
  "Order",
195
195
  "OrderList",
196
196
  "ProductVariant",
@@ -546,23 +546,25 @@ class LocalExecutor:
546
546
  return ExecutionResult(success=False, data={}, error=str(e))
547
547
 
548
548
  async def check(self) -> ExecutionResult:
549
- """Perform a health check by running a lightweight list operation.
549
+ """Perform a health check by running a lightweight operation.
550
550
 
551
551
  Finds the operation marked with preferred_for_check=True, or falls back
552
- to the first list operation. Executes it with limit=1 to verify
553
- connectivity and credentials.
552
+ to the first list operation. Executes it to verify connectivity and credentials.
553
+ For list operations, uses limit=1 to minimize data transfer.
554
554
 
555
555
  Returns:
556
556
  ExecutionResult with data containing status, error, and checked operation details.
557
557
  """
558
558
  check_entity = None
559
559
  check_endpoint = None
560
+ check_action = None
560
561
 
561
- # Look for preferred check operation
562
+ # Look for preferred check operation (can be any action type)
562
563
  for (ent_name, op_action), endpoint in self._operation_index.items():
563
564
  if getattr(endpoint, "preferred_for_check", False):
564
565
  check_entity = ent_name
565
566
  check_endpoint = endpoint
567
+ check_action = op_action
566
568
  break
567
569
 
568
570
  # Fallback to first list operation
@@ -571,18 +573,19 @@ class LocalExecutor:
571
573
  if op_action == Action.LIST:
572
574
  check_entity = ent_name
573
575
  check_endpoint = endpoint
576
+ check_action = op_action
574
577
  break
575
578
 
576
- if check_endpoint is None or check_entity is None:
579
+ if check_endpoint is None or check_entity is None or check_action is None:
577
580
  return ExecutionResult(
578
581
  success=True,
579
582
  data={
580
583
  "status": "skipped",
581
- "error": "No list operation available for health check",
584
+ "error": "No operation available for health check",
582
585
  },
583
586
  )
584
587
 
585
- # Find the standard handler to execute the list operation
588
+ # Find the standard handler to execute the operation
586
589
  standard_handler = next(
587
590
  (h for h in self._operation_handlers if isinstance(h, _StandardOperationHandler)),
588
591
  None,
@@ -598,13 +601,15 @@ class LocalExecutor:
598
601
  )
599
602
 
600
603
  try:
601
- await standard_handler.execute_operation(check_entity, Action.LIST, {"limit": 1})
604
+ # Use limit=1 for list operations to minimize data transfer
605
+ params = {"limit": 1} if check_action == Action.LIST else {}
606
+ await standard_handler.execute_operation(check_entity, check_action, params)
602
607
  return ExecutionResult(
603
608
  success=True,
604
609
  data={
605
610
  "status": "healthy",
606
611
  "checked_entity": check_entity,
607
- "checked_action": "list",
612
+ "checked_action": check_action.value,
608
613
  },
609
614
  )
610
615
  except Exception as e:
@@ -614,7 +619,7 @@ class LocalExecutor:
614
619
  "status": "unhealthy",
615
620
  "error": str(e),
616
621
  "checked_entity": check_entity,
617
- "checked_action": "list",
622
+ "checked_action": check_action.value,
618
623
  },
619
624
  error=str(e),
620
625
  )
@@ -10,7 +10,7 @@ from enum import StrEnum
10
10
  from typing import Any, Dict
11
11
  from uuid import UUID
12
12
 
13
- from pydantic import BaseModel, ConfigDict, Field, field_validator
13
+ from pydantic import BaseModel, ConfigDict, Field, field_validator, model_validator
14
14
  from pydantic_core import Url
15
15
 
16
16
  from .extensions import CacheConfig, ReplicationConfig, RetryConfig
@@ -210,3 +210,34 @@ class Server(BaseModel):
210
210
  raise ValueError("Server URL cannot be empty")
211
211
  # Allow both absolute URLs and relative paths
212
212
  return v
213
+
214
+ @model_validator(mode="after")
215
+ def validate_replication_environment_mapping(self) -> "Server":
216
+ """Validate that x-airbyte-replication-environment-mapping sources exist in variables.
217
+
218
+ For simple mappings like {"subdomain": "subdomain"}, the key is the source variable.
219
+ For transform mappings like {"domain": {"source": "subdomain", "format": "..."}},
220
+ the "source" field is the source variable.
221
+ """
222
+ env_mapping = self.x_airbyte_replication_environment_mapping
223
+ if not env_mapping or not self.variables:
224
+ return self
225
+
226
+ variable_names = set(self.variables.keys())
227
+
228
+ for env_key, mapping_value in env_mapping.items():
229
+ if isinstance(mapping_value, str):
230
+ source_var = env_key
231
+ elif isinstance(mapping_value, EnvironmentMappingTransform):
232
+ source_var = mapping_value.source
233
+ else:
234
+ continue
235
+
236
+ if source_var not in variable_names:
237
+ available = ", ".join(sorted(variable_names)) if variable_names else "(none)"
238
+ raise ValueError(
239
+ f"x-airbyte-replication-environment-mapping: source variable '{source_var}' "
240
+ f"not found in server variables. Available: {available}"
241
+ )
242
+
243
+ return self
@@ -14,7 +14,7 @@ are implemented.
14
14
 
15
15
  from typing import Literal
16
16
 
17
- from pydantic import BaseModel, ConfigDict, Field
17
+ from pydantic import BaseModel, ConfigDict, Field, model_validator
18
18
 
19
19
 
20
20
  class PaginationConfig(BaseModel):
@@ -252,6 +252,24 @@ class ReplicationConfig(BaseModel):
252
252
  description="Mapping from replication_config field names to source_config field names",
253
253
  )
254
254
 
255
+ @model_validator(mode="after")
256
+ def validate_replication_config_key_mapping(self) -> "ReplicationConfig":
257
+ """Validate that replication_config_key_mapping keys exist in properties.
258
+
259
+ The mapping is: {local_key: airbyte_path}
260
+ We validate that local_key exists in our properties.
261
+ """
262
+ if self.replication_config_key_mapping and self.properties:
263
+ property_names = set(self.properties.keys())
264
+ for local_key, airbyte_path in self.replication_config_key_mapping.items():
265
+ if local_key not in property_names:
266
+ available = ", ".join(sorted(property_names)) if property_names else "(none)"
267
+ raise ValueError(
268
+ f"replication_config_key_mapping: local key '{local_key}' "
269
+ f"(mapped to '{airbyte_path}') not found in properties. Available: {available}"
270
+ )
271
+ return self
272
+
255
273
 
256
274
  class CacheConfig(BaseModel):
257
275
  """
@@ -90,9 +90,10 @@ class Operation(BaseModel):
90
90
  None,
91
91
  alias="x-airbyte-preferred-for-check",
92
92
  description=(
93
- "Mark this list operation as the preferred operation for health checks. "
93
+ "Mark this operation as the preferred operation for health checks. "
94
94
  "When the CHECK action is executed, this operation will be used instead of "
95
- "falling back to the first available list operation. Choose a lightweight, "
95
+ "falling back to the first available list operation. The operation's actual "
96
+ "action type (get, list, etc.) will be respected. Choose a lightweight, "
96
97
  "always-available endpoint (e.g., users, accounts)."
97
98
  ),
98
99
  )
@@ -81,6 +81,21 @@ class AuthConfigOption(BaseModel):
81
81
  description="Mapping from source config paths (e.g., 'credentials.api_key') to auth config keys for direct connectors",
82
82
  )
83
83
 
84
+ @model_validator(mode="after")
85
+ def validate_replication_auth_key_mapping(self) -> "AuthConfigOption":
86
+ """Validate that replication_auth_key_mapping target keys exist in properties."""
87
+ if self.replication_auth_key_mapping and self.properties:
88
+ property_names = set(self.properties.keys())
89
+ for airbyte_path, our_key in self.replication_auth_key_mapping.items():
90
+ if our_key not in property_names:
91
+ option_context = f"oneOf option '{self.title}'" if self.title else "oneOf option"
92
+ available = ", ".join(sorted(property_names)) if property_names else "(none)"
93
+ raise ValueError(
94
+ f"replication_auth_key_mapping in {option_context}: target key '{our_key}' "
95
+ f"(mapped from '{airbyte_path}') not found in properties. Available: {available}"
96
+ )
97
+ return self
98
+
84
99
 
85
100
  class AirbyteAuthConfig(BaseModel):
86
101
  """
@@ -146,8 +161,30 @@ class AirbyteAuthConfig(BaseModel):
146
161
  if not self.auth_mapping:
147
162
  raise ValueError("Single auth option must have auth_mapping")
148
163
 
164
+ # Validate replication_auth_key_mapping targets exist in properties
165
+ if self.replication_auth_key_mapping and self.properties:
166
+ self._validate_replication_auth_key_mapping(self.replication_auth_key_mapping, self.properties, context="x-airbyte-auth-config")
167
+
149
168
  return self
150
169
 
170
+ @staticmethod
171
+ def _validate_replication_auth_key_mapping(mapping: Dict[str, str], properties: Dict[str, AuthConfigFieldSpec], context: str) -> None:
172
+ """Validate that replication_auth_key_mapping target keys exist in properties.
173
+
174
+ Args:
175
+ mapping: The replication_auth_key_mapping dict (airbyte_path -> our_key)
176
+ properties: The properties dict from x-airbyte-auth-config
177
+ context: Context string for error messages
178
+ """
179
+ property_names = set(properties.keys())
180
+ for airbyte_path, our_key in mapping.items():
181
+ if our_key not in property_names:
182
+ available = ", ".join(sorted(property_names)) if property_names else "(none)"
183
+ raise ValueError(
184
+ f"replication_auth_key_mapping in {context}: target key '{our_key}' "
185
+ f"(mapped from '{airbyte_path}') not found in properties. Available: {available}"
186
+ )
187
+
151
188
 
152
189
  class SecurityScheme(BaseModel):
153
190
  """
@@ -239,7 +239,7 @@ class EndpointDefinition(BaseModel):
239
239
  # Health check support (Airbyte extension)
240
240
  preferred_for_check: bool = Field(
241
241
  False,
242
- description="Mark this list operation as preferred for health checks (from x-airbyte-preferred-for-check extension)",
242
+ description="Mark this operation as preferred for health checks (from x-airbyte-preferred-for-check extension)",
243
243
  )
244
244
 
245
245
 
@@ -959,7 +959,7 @@ def validate_connector_readiness(connector_dir: str | Path) -> Dict[str, Any]:
959
959
  if not has_preferred_check:
960
960
  readiness_warnings.append(
961
961
  "No operation has x-airbyte-preferred-for-check: true. "
962
- "Add this extension to a lightweight list operation (e.g., users.list) "
962
+ "Add this extension to a lightweight operation (e.g., users.list or accounts.get) "
963
963
  "to enable reliable health checks."
964
964
  )
965
965
 
@@ -180,7 +180,7 @@ class ShopifyConnector:
180
180
  """
181
181
 
182
182
  connector_name = "shopify"
183
- connector_version = "0.1.3"
183
+ connector_version = "0.1.4"
184
184
  vendored_sdk_version = "0.1.0" # Version of vendored connector-sdk
185
185
 
186
186
  # Map of (entity, action) -> needs_envelope for envelope wrapping decision
@@ -26,7 +26,7 @@ from uuid import (
26
26
  ShopifyConnectorModel: ConnectorModel = ConnectorModel(
27
27
  id=UUID('9da77001-af33-4bcd-be46-6252bf9342b9'),
28
28
  name='shopify',
29
- version='0.1.3',
29
+ version='0.1.4',
30
30
  base_url='https://{shop}.myshopify.com/admin/api/2025-01',
31
31
  auth=AuthConfig(
32
32
  type=AuthType.API_KEY,
@@ -46,6 +46,7 @@ ShopifyConnectorModel: ConnectorModel = ConnectorModel(
46
46
  ),
47
47
  },
48
48
  auth_mapping={'api_key': '${api_key}'},
49
+ replication_auth_key_mapping={'credentials.access_token': 'api_key', 'shop': 'shop'},
49
50
  ),
50
51
  ),
51
52
  entities=[
@@ -119,6 +119,55 @@ class OrderAddress(BaseModel):
119
119
  latitude: Union[float | None, Any] = Field(default=None)
120
120
  longitude: Union[float | None, Any] = Field(default=None)
121
121
 
122
+ class Transaction(BaseModel):
123
+ """An order transaction"""
124
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
125
+
126
+ id: Union[int, Any] = Field(default=None)
127
+ order_id: Union[int | None, Any] = Field(default=None)
128
+ kind: Union[str | None, Any] = Field(default=None)
129
+ gateway: Union[str | None, Any] = Field(default=None)
130
+ status: Union[str | None, Any] = Field(default=None)
131
+ message: Union[str | None, Any] = Field(default=None)
132
+ created_at: Union[str | None, Any] = Field(default=None)
133
+ test: Union[bool | None, Any] = Field(default=None)
134
+ authorization: Union[str | None, Any] = Field(default=None)
135
+ location_id: Union[int | None, Any] = Field(default=None)
136
+ user_id: Union[int | None, Any] = Field(default=None)
137
+ parent_id: Union[int | None, Any] = Field(default=None)
138
+ processed_at: Union[str | None, Any] = Field(default=None)
139
+ device_id: Union[int | None, Any] = Field(default=None)
140
+ error_code: Union[str | None, Any] = Field(default=None)
141
+ source_name: Union[str | None, Any] = Field(default=None)
142
+ receipt: Union[dict[str, Any] | None, Any] = Field(default=None)
143
+ currency_exchange_adjustment: Union[dict[str, Any] | None, Any] = Field(default=None)
144
+ amount: Union[str | None, Any] = Field(default=None)
145
+ currency: Union[str | None, Any] = Field(default=None)
146
+ payment_id: Union[str | None, Any] = Field(default=None)
147
+ total_unsettled_set: Union[dict[str, Any] | None, Any] = Field(default=None)
148
+ manual_payment_gateway: Union[bool | None, Any] = Field(default=None)
149
+ admin_graphql_api_id: Union[str | None, Any] = Field(default=None)
150
+
151
+ class Refund(BaseModel):
152
+ """An order refund"""
153
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
154
+
155
+ id: Union[int, Any] = Field(default=None)
156
+ order_id: Union[int | None, Any] = Field(default=None)
157
+ created_at: Union[str | None, Any] = Field(default=None)
158
+ note: Union[str | None, Any] = Field(default=None)
159
+ user_id: Union[int | None, Any] = Field(default=None)
160
+ processed_at: Union[str | None, Any] = Field(default=None)
161
+ restock: Union[bool | None, Any] = Field(default=None)
162
+ duties: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
163
+ total_duties_set: Union[dict[str, Any] | None, Any] = Field(default=None)
164
+ return_: Union[dict[str, Any] | None, Any] = Field(default=None, alias="return")
165
+ refund_line_items: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
166
+ transactions: Union[list[Transaction] | None, Any] = Field(default=None)
167
+ order_adjustments: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
168
+ admin_graphql_api_id: Union[str | None, Any] = Field(default=None)
169
+ refund_shipping_lines: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
170
+
122
171
  class LineItem(BaseModel):
123
172
  """LineItem type definition"""
124
173
  model_config = ConfigDict(extra="allow", populate_by_name=True)
@@ -176,55 +225,6 @@ class Fulfillment(BaseModel):
176
225
  name: Union[str | None, Any] = Field(default=None)
177
226
  admin_graphql_api_id: Union[str | None, Any] = Field(default=None)
178
227
 
179
- class Transaction(BaseModel):
180
- """An order transaction"""
181
- model_config = ConfigDict(extra="allow", populate_by_name=True)
182
-
183
- id: Union[int, Any] = Field(default=None)
184
- order_id: Union[int | None, Any] = Field(default=None)
185
- kind: Union[str | None, Any] = Field(default=None)
186
- gateway: Union[str | None, Any] = Field(default=None)
187
- status: Union[str | None, Any] = Field(default=None)
188
- message: Union[str | None, Any] = Field(default=None)
189
- created_at: Union[str | None, Any] = Field(default=None)
190
- test: Union[bool | None, Any] = Field(default=None)
191
- authorization: Union[str | None, Any] = Field(default=None)
192
- location_id: Union[int | None, Any] = Field(default=None)
193
- user_id: Union[int | None, Any] = Field(default=None)
194
- parent_id: Union[int | None, Any] = Field(default=None)
195
- processed_at: Union[str | None, Any] = Field(default=None)
196
- device_id: Union[int | None, Any] = Field(default=None)
197
- error_code: Union[str | None, Any] = Field(default=None)
198
- source_name: Union[str | None, Any] = Field(default=None)
199
- receipt: Union[dict[str, Any] | None, Any] = Field(default=None)
200
- currency_exchange_adjustment: Union[dict[str, Any] | None, Any] = Field(default=None)
201
- amount: Union[str | None, Any] = Field(default=None)
202
- currency: Union[str | None, Any] = Field(default=None)
203
- payment_id: Union[str | None, Any] = Field(default=None)
204
- total_unsettled_set: Union[dict[str, Any] | None, Any] = Field(default=None)
205
- manual_payment_gateway: Union[bool | None, Any] = Field(default=None)
206
- admin_graphql_api_id: Union[str | None, Any] = Field(default=None)
207
-
208
- class Refund(BaseModel):
209
- """An order refund"""
210
- model_config = ConfigDict(extra="allow", populate_by_name=True)
211
-
212
- id: Union[int, Any] = Field(default=None)
213
- order_id: Union[int | None, Any] = Field(default=None)
214
- created_at: Union[str | None, Any] = Field(default=None)
215
- note: Union[str | None, Any] = Field(default=None)
216
- user_id: Union[int | None, Any] = Field(default=None)
217
- processed_at: Union[str | None, Any] = Field(default=None)
218
- restock: Union[bool | None, Any] = Field(default=None)
219
- duties: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
220
- total_duties_set: Union[dict[str, Any] | None, Any] = Field(default=None)
221
- return_: Union[dict[str, Any] | None, Any] = Field(default=None, alias="return")
222
- refund_line_items: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
223
- transactions: Union[list[Transaction] | None, Any] = Field(default=None)
224
- order_adjustments: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
225
- admin_graphql_api_id: Union[str | None, Any] = Field(default=None)
226
- refund_shipping_lines: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
227
-
228
228
  class Order(BaseModel):
229
229
  """A Shopify order"""
230
230
  model_config = ConfigDict(extra="allow", populate_by_name=True)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: airbyte-agent-shopify
3
- Version: 0.1.25
3
+ Version: 0.1.27
4
4
  Summary: Airbyte Shopify Connector for AI platforms
5
5
  Project-URL: Homepage, https://github.com/airbytehq/airbyte-agent-connectors
6
6
  Project-URL: Documentation, https://docs.airbyte.com/ai-agents/
@@ -171,7 +171,7 @@ See the official [Shopify API reference](https://shopify.dev/docs/api/admin-rest
171
171
 
172
172
  ## Version information
173
173
 
174
- - **Package version:** 0.1.25
175
- - **Connector version:** 0.1.3
176
- - **Generated with Connector SDK commit SHA:** 9d9866b0aae8c3494d04d34e193b9bd860bfc1c6
174
+ - **Package version:** 0.1.27
175
+ - **Connector version:** 0.1.4
176
+ - **Generated with Connector SDK commit SHA:** f2dbc00ef14939fde16b708d6fe5eff97f67c7a3
177
177
  - **Changelog:** [View changelog](https://github.com/airbytehq/airbyte-agent-connectors/blob/main/connectors/shopify/CHANGELOG.md)
@@ -1,7 +1,7 @@
1
- airbyte_agent_shopify/__init__.py,sha256=VzEfKBOuvkw1Kxz_VgySeuOUzh9cC936EkU9O7xI-aU,9711
2
- airbyte_agent_shopify/connector.py,sha256=tfPJuuqBBkvjMJaid7UuYD1JkIIGmBUqQzAZ902q2ws,99627
3
- airbyte_agent_shopify/connector_model.py,sha256=OOKD-zmjbVv-MX-r3c-QF3alQqn6vKTDjRjAF6y0ddQ,691056
4
- airbyte_agent_shopify/models.py,sha256=hpXPTZ25RVc6a-nMbkLcGVq3zOeDx6oc8tQMUdfJnHg,61514
1
+ airbyte_agent_shopify/__init__.py,sha256=AnxJ1bCmtvzFScth8xadz9lJKQO5Ea641JfeSlUxGk0,9711
2
+ airbyte_agent_shopify/connector.py,sha256=odIbw5aeV6yOcGUkSH600MF4BS5U0GAd_5lBGEbe90E,99627
3
+ airbyte_agent_shopify/connector_model.py,sha256=piE9ZoyqrkoO2dTOq9F-Y13xRQgMgKuxR_kGT54ulYA,691154
4
+ airbyte_agent_shopify/models.py,sha256=VIFC3GDlnnK4Z15YT7MwaJH9ZWTjiU_wXDCtuZyD0TM,61514
5
5
  airbyte_agent_shopify/types.py,sha256=AwQ4PR2wZmHNuryriCFdRxf9q48J1mnPwspUB1b-L_o,10221
6
6
  airbyte_agent_shopify/_vendored/__init__.py,sha256=ILl7AHXMui__swyrjxrh9yRa4dLiwBvV6axPWFWty80,38
7
7
  airbyte_agent_shopify/_vendored/connector_sdk/__init__.py,sha256=T5o7roU6NSpH-lCAGZ338sE5dlh4ZU6i6IkeG1zpems,1949
@@ -14,15 +14,15 @@ airbyte_agent_shopify/_vendored/connector_sdk/extensions.py,sha256=XWRRoJOOrwUHS
14
14
  airbyte_agent_shopify/_vendored/connector_sdk/http_client.py,sha256=09Fclbq4wrg38EM2Yh2kHiykQVXqdAGby024elcEz8E,28027
15
15
  airbyte_agent_shopify/_vendored/connector_sdk/introspection.py,sha256=e9uWn2ofpeehoBbzNgts_bjlKLn8ayA1Y3OpDC3b7ZA,19517
16
16
  airbyte_agent_shopify/_vendored/connector_sdk/secrets.py,sha256=J9ezMu4xNnLW11xY5RCre6DHP7YMKZCqwGJfk7ufHAM,6855
17
- airbyte_agent_shopify/_vendored/connector_sdk/types.py,sha256=MsWJsQy779r7Mqiqf_gh_4Vs6VDqieoMjLPyWt7qhu8,9412
17
+ airbyte_agent_shopify/_vendored/connector_sdk/types.py,sha256=aXiZxXzHvqPSOS7Dz_moyITT3EMybgjgPYgGuO7a_F4,9407
18
18
  airbyte_agent_shopify/_vendored/connector_sdk/utils.py,sha256=UYwYuSLhsDD-4C0dBs7Qy0E0gIcFZXb6VWadJORhQQU,4080
19
- airbyte_agent_shopify/_vendored/connector_sdk/validation.py,sha256=w5WGnmILkdBslpXhAXhKhE-c8ANBc_OZQxr_fUeAgtc,39666
19
+ airbyte_agent_shopify/_vendored/connector_sdk/validation.py,sha256=LcbmBfGkWx0Xv4pWZYpFf4JlhFjvwqGcwvliRSalN8Y,39677
20
20
  airbyte_agent_shopify/_vendored/connector_sdk/validation_replication.py,sha256=v7F5YWd5m4diIF7_4m4nOkC9crg97vqRUUkt9ka9HZ4,36043
21
21
  airbyte_agent_shopify/_vendored/connector_sdk/cloud_utils/__init__.py,sha256=4799Hv9f2zxDVj1aLyQ8JpTEuFTp_oOZMRz-NZCdBJg,134
22
22
  airbyte_agent_shopify/_vendored/connector_sdk/cloud_utils/client.py,sha256=e0VLNCmesGGfo2uD0GiICgXsXTeTkh0GYiVgx_e4VEc,12296
23
23
  airbyte_agent_shopify/_vendored/connector_sdk/executor/__init__.py,sha256=EmG9YQNAjSuYCVB4D5VoLm4qpD1KfeiiOf7bpALj8p8,702
24
24
  airbyte_agent_shopify/_vendored/connector_sdk/executor/hosted_executor.py,sha256=tv0njAdy-gdHBg4izgcxhEWYbrNiBifEYEca9AWzaL0,8693
25
- airbyte_agent_shopify/_vendored/connector_sdk/executor/local_executor.py,sha256=RtdTXFzfoJz5Coz9nwQi81Df1402BRgO1Mgd3ZzTkfw,76581
25
+ airbyte_agent_shopify/_vendored/connector_sdk/executor/local_executor.py,sha256=4RK29lb5LzK9MCsg44oLgIaVcMCgy8jVFwgNJ_-qEFw,76941
26
26
  airbyte_agent_shopify/_vendored/connector_sdk/executor/models.py,sha256=mUUBnuShKXxVIfsTOhMiI2rn2a-50jJG7SFGKT_P6Jk,6281
27
27
  airbyte_agent_shopify/_vendored/connector_sdk/http/__init__.py,sha256=y8fbzZn-3yV9OxtYz8Dy6FFGI5v6TOqADd1G3xHH3Hw,911
28
28
  airbyte_agent_shopify/_vendored/connector_sdk/http/config.py,sha256=6J7YIIwHC6sRu9i-yKa5XvArwK2KU60rlnmxzDZq3lw,3283
@@ -43,16 +43,16 @@ airbyte_agent_shopify/_vendored/connector_sdk/performance/__init__.py,sha256=Sp5
43
43
  airbyte_agent_shopify/_vendored/connector_sdk/performance/instrumentation.py,sha256=_dXvNiqdndIBwDjeDKNViWzn_M5FkSUsMmJtFldrmsM,1504
44
44
  airbyte_agent_shopify/_vendored/connector_sdk/performance/metrics.py,sha256=FRff7dKt4iwt_A7pxV5n9kAGBR756PC7q8-weWygPSM,2817
45
45
  airbyte_agent_shopify/_vendored/connector_sdk/schema/__init__.py,sha256=Uymu-QuzGJuMxexBagIvUxpVAigIuIhz3KeBl_Vu4Ko,1638
46
- airbyte_agent_shopify/_vendored/connector_sdk/schema/base.py,sha256=mOO5eZSK-FB7S-ZXpt5HFG5YBg8x-oM6RZRLPOEGxZM,7115
46
+ airbyte_agent_shopify/_vendored/connector_sdk/schema/base.py,sha256=0R0aR4HjcJpu3vN0jZ4nPBEwVZ_7J9_XLQgWaQGT3Fs,8476
47
47
  airbyte_agent_shopify/_vendored/connector_sdk/schema/components.py,sha256=nJIPieavwX3o3ODvdtLHPk84d_V229xmg6LDfwEHjzc,8119
48
48
  airbyte_agent_shopify/_vendored/connector_sdk/schema/connector.py,sha256=mSZk1wr2YSdRj9tTRsPAuIlCzd_xZLw-Bzl1sMwE0rE,3731
49
- airbyte_agent_shopify/_vendored/connector_sdk/schema/extensions.py,sha256=5hgpFHK7fzpzegCkJk882DeIP79bCx_qairKJhvPMZ8,9590
50
- airbyte_agent_shopify/_vendored/connector_sdk/schema/operations.py,sha256=St-A75m6sZUZlsoM6WcoPaShYu_X1K19pdyPvJbabOE,6214
51
- airbyte_agent_shopify/_vendored/connector_sdk/schema/security.py,sha256=R-21DLnp-ANIRO1Dzqo53TYFJL6lCp0aO8GSuxa_bDI,9225
49
+ airbyte_agent_shopify/_vendored/connector_sdk/schema/extensions.py,sha256=DqWCvyWKLnPxAbJirq6uITf-MBeJRVCcsEjySF4fuhQ,10558
50
+ airbyte_agent_shopify/_vendored/connector_sdk/schema/operations.py,sha256=vU1gW5AJ41ZXE_VK4TLe3qqR4e0I0_uWTjUkskWcVdk,6296
51
+ airbyte_agent_shopify/_vendored/connector_sdk/schema/security.py,sha256=5UeaN63InuInS_XHNZSm5yDXrMLm5lhz298l-3GSc_4,11435
52
52
  airbyte_agent_shopify/_vendored/connector_sdk/telemetry/__init__.py,sha256=RaLgkBU4dfxn1LC5Y0Q9rr2PJbrwjxvPgBLmq8_WafE,211
53
53
  airbyte_agent_shopify/_vendored/connector_sdk/telemetry/config.py,sha256=tLmQwAFD0kP1WyBGWBS3ysaudN9H3e-3EopKZi6cGKg,885
54
54
  airbyte_agent_shopify/_vendored/connector_sdk/telemetry/events.py,sha256=8Y1NbXiwISX-V_wRofY7PqcwEXD0dLMnntKkY6XFU2s,1328
55
55
  airbyte_agent_shopify/_vendored/connector_sdk/telemetry/tracker.py,sha256=SginFQbHqVUVYG82NnNzG34O-tAQ_wZYjGDcuo0q4Kk,5584
56
- airbyte_agent_shopify-0.1.25.dist-info/METADATA,sha256=6KxU325F2jIH1mvCsWioEeNBHQB5GzGK4DLeTsDAEAU,7999
57
- airbyte_agent_shopify-0.1.25.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
58
- airbyte_agent_shopify-0.1.25.dist-info/RECORD,,
56
+ airbyte_agent_shopify-0.1.27.dist-info/METADATA,sha256=3_pdmn4Ode2yumg0VXiqbk5xyStFXKc3VKgw3-kHITY,7999
57
+ airbyte_agent_shopify-0.1.27.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
58
+ airbyte_agent_shopify-0.1.27.dist-info/RECORD,,