Skip to content

Commit f6b3be7

Browse files
authored
fix no commas, and retry 500 error (#2)
1 parent 9d69920 commit f6b3be7

File tree

3 files changed

+43
-7
lines changed

3 files changed

+43
-7
lines changed

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ dependencies = [
2626
"requests~=2.32.3",
2727
"notion-client>=2.3.0",
2828
"case-converter>=1.2.0",
29+
"retry>=0.9.2",
2930
]
3031

3132
[project.optional-dependencies]

target_notion/sinks.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22

33
from __future__ import annotations
44

5-
import os
65
from caseconverter import snakecase
76
from notion_client import Client
7+
from notion_client.errors import HTTPResponseError
8+
from retry import retry
89
from singer_sdk.sinks import RecordSink
910

1011

@@ -17,6 +18,7 @@ def __init__(self, **kwargs) -> None: # noqa: ANN003
1718
self.client = Client(auth=self.config["api_key"])
1819
self.database_schema = self.get_database_schema()
1920

21+
@retry(HTTPResponseError, tries=3, delay=1, backoff=4, max_delay=10)
2022
def process_record(self, record: dict, context: dict) -> None:
2123
"""Process the record.
2224
@@ -55,7 +57,7 @@ def create_page_properties(self, record: dict) -> dict:
5557
self.database_schema.get(key, {})["type"], value
5658
)
5759
for key, value in record.items()
58-
if key in self.database_schema
60+
if key in self.database_schema and value
5961
}
6062

6163
def create_page_property(self, _type: str, value) -> dict:
@@ -66,17 +68,17 @@ def create_page_property(self, _type: str, value) -> dict:
6668
case "rich_text":
6769
_property = {"rich_text": [{"text": {"content": str(value)}}]}
6870
case "number":
69-
_property = {"number": float(value) if value else None}
71+
_property = {"number": float(value)}
7072
case "select":
71-
_property = {"select": {"name": str(value)}}
73+
_property = {"select": {"name": str(value).replace(",", "")}}
7274
case "multi_select":
73-
_property = {"multi_select": [{"name": str(v)} for v in value.split(", ") if value]}
75+
_property = {"multi_select": [{"name": str(v).replace(",", "")} for v in value.split(", ")]}
7476
case "date":
7577
_property = {"date": {"start": value}}
7678
case "people":
7779
_property = {"people": [{"id": str(v)} for v in value.split(", ")]}
7880
case "files":
79-
_property = {"files": [{"name": v["name"], "url": v["url"]} for v in value.split(", ") if value]}
81+
_property = {"files": [{"name": v["name"], "url": v["url"]} for v in value.split(", ")]}
8082
case "checkbox":
8183
_property = {"checkbox": value}
8284
case "url":
@@ -86,7 +88,7 @@ def create_page_property(self, _type: str, value) -> dict:
8688
case "phone_number":
8789
_property = {"phone_number": str(value)}
8890
case "relation":
89-
_property = {"relation": [{"id": v} for v in value.split(", ") if value]}
91+
_property = {"relation": [{"id": v} for v in value.split(", ")]}
9092
case _:
9193
msg = f"Unsupported property type: {_type}"
9294
raise ValueError(msg)

uv.lock

Lines changed: 33 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)