Skip to content

feat: Add WASM compatibility fallback from serpyco-rs to serpyco #671

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion airbyte_cdk/models/airbyte_protocol.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,16 @@
# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
#

import sys
from dataclasses import InitVar, dataclass
from typing import Annotated, Any, Dict, List, Mapping, Optional, Union

from airbyte_protocol_dataclasses.models import * # noqa: F403 # Allow '*'
from serpyco_rs.metadata import Alias

if sys.platform == "emscripten":
from serpyco.metadata import Alias
else:
from serpyco_rs.metadata import Alias

# ruff: noqa: F405 # ignore fuzzy import issues with 'import *'

Expand Down
14 changes: 11 additions & 3 deletions airbyte_cdk/models/airbyte_protocol_serializers.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,15 @@
# Copyright (c) 2024 Airbyte, Inc., all rights reserved.
from typing import Any, Dict

from serpyco_rs import CustomType, Serializer
import sys
from typing import TYPE_CHECKING, Any, Dict

if TYPE_CHECKING:
from serpyco_rs import CustomType, Serializer
else:
USE_RUST_BACKEND = sys.platform != "emscripten"
if USE_RUST_BACKEND:
from serpyco_rs import CustomType, Serializer
else:
from serpyco import CustomType, Serializer

from .airbyte_protocol import ( # type: ignore[attr-defined] # all classes are imported to airbyte_protocol via *
AirbyteCatalog,
Expand Down
7 changes: 6 additions & 1 deletion airbyte_cdk/test/entrypoint_wrapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import json
import logging
import re
import sys
import tempfile
import traceback
from collections import deque
Expand All @@ -28,7 +29,11 @@

import orjson
from pydantic import ValidationError as V2ValidationError
from serpyco_rs import SchemaValidationError

if sys.platform == "emscripten":
from serpyco import SchemaValidationError
else:
from serpyco_rs import SchemaValidationError

from airbyte_cdk.entrypoint import AirbyteEntrypoint
from airbyte_cdk.exception_handler import assemble_uncaught_exception
Expand Down
Loading
Loading