Skip to content

Commit 0622f7c

Browse files
committed
Fix json_native on Component.export
1 parent e32b138 commit 0622f7c

File tree

6 files changed

+22
-4
lines changed

6 files changed

+22
-4
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
3030
- Optimize performance during apply.
3131
- Add option of multiple `VectorIndex` implementations
3232
- Batch create tables, put-components
33+
- Add fix for exporting component with `CFG.json_native=True`
3334

3435
#### New Features & Functionality
3536

superduper/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
logging = logger.Logging
99

10+
import typing as t
1011
from importlib import metadata
1112

1213
try:
@@ -16,6 +17,7 @@
1617
__version__ = "dev"
1718

1819

20+
from .base.base import Base
1921
from .base.datatype import BaseDataType, dill_serializer, pickle_serializer
2022
from .base.document import Document
2123
from .base.schema import Schema
@@ -74,4 +76,6 @@
7476
'pickle_serializer',
7577
'dill_serializer',
7678
'Streamlit',
79+
'Base',
80+
't',
7781
)

superduper/base/encoding.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import typing as t
22
from dataclasses import dataclass, field
33

4+
from superduper.base.config import Config
5+
46
if t.TYPE_CHECKING:
57
from superduper.base.base import Base
68
from superduper.base.datalayer import Datalayer
@@ -19,6 +21,7 @@ class EncodeContext:
1921
:param leaves_to_keep: A sequence of Base instances to keep.
2022
:param metadata: Whether to include metadata.
2123
:param defaults: Whether to include defaults.
24+
:param cfg: Configuration object.
2225
"""
2326

2427
name: str = '__main__'
@@ -29,6 +32,7 @@ class EncodeContext:
2932
leaves_to_keep: t.Sequence['Base'] = field(default_factory=tuple)
3033
metadata: bool = True
3134
defaults: bool = True
35+
cfg: t.Optional[Config] = None
3236

3337
def __call__(self, name: str):
3438
return EncodeContext(
@@ -40,4 +44,5 @@ def __call__(self, name: str):
4044
leaves_to_keep=self.leaves_to_keep,
4145
metadata=self.metadata,
4246
defaults=self.defaults,
47+
cfg=self.cfg,
4348
)

superduper/base/schema.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -208,8 +208,12 @@ def encode_data(self, out, context: t.Optional[EncodeContext] = None, **kwargs):
208208
)
209209
raise e
210210

211-
if field.dtype == 'json' and not CFG.json_native:
212-
encoded = json.dumps(encoded)
211+
if field.dtype == 'json':
212+
if context.cfg is not None:
213+
if not context.cfg.json_native:
214+
encoded = json.dumps(encoded)
215+
elif not CFG.json_native:
216+
encoded = json.dumps(encoded)
213217

214218
result[k] = encoded
215219

superduper/components/component.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -589,7 +589,9 @@ def export(
589589

590590
# r = self.dict(defaults=defaults, metadata=metadata)
591591
# r = r.encode(defaults=defaults, metadata=metadata)
592-
r = self.encode(defaults=defaults, metadata=metadata)
592+
from superduper import CFG
593+
594+
r = self.encode(defaults=defaults, metadata=metadata, cfg=CFG(json_native=True))
593595

594596
def rewrite_keys(r, keys):
595597
if isinstance(r, dict):

superduper/components/template.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,9 @@ def change_dir(destination):
8686
def postinit(self):
8787
"""Post initialization method."""
8888
if isinstance(self.template, Base):
89-
self.template = self.template.encode(defaults=True, metadata=False)
89+
self.template = self.template.encode(
90+
defaults=True, metadata=False, cfg=CFG(json_native=True)
91+
)
9092

9193
if '_blobs' in self.template:
9294
self.blobs = self.template.pop('_blobs')

0 commit comments

Comments
 (0)