Skip to content
Merged
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
4 changes: 4 additions & 0 deletions .github/workflows/py-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@ on:
paths:
- "apitable.py/**"
- ".github/workflows/py-test.yml"
pull_request:
paths:
- "apitable.py/**"
- ".github/workflows/py-test.yml"

jobs:
unit_test:
Expand Down
7 changes: 5 additions & 2 deletions apitable.py/apitable/types/field.py
Original file line number Diff line number Diff line change
Expand Up @@ -181,8 +181,11 @@ class MetaField(BaseModel):
property: Any = None

def __init__(self, property=None, **data) -> None:
property_model = self.get_property_by_type(data['type'])
_property = property_model(**property) if property_model else property
property_model = self.get_property_by_type(data.get('type'))
if property_model and isinstance(property, dict):
_property = property_model(**property)
else:
_property = property
super().__init__(property=_property, **data)

@staticmethod
Expand Down
2 changes: 1 addition & 1 deletion apitable.py/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ charset-normalizer = "^3.2.0"
environs = "^9.5.0"
idna = "^3.4"
marshmallow = "^3.20.1"
pydantic = "2.5.3"
pydantic = "^2.5.3"
python-dotenv = "^1.0.0"
requests = "^2.31.0"
urllib3 = "^2.0.4"
Expand Down
2 changes: 1 addition & 1 deletion apitable.py/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,5 @@
"Operating System :: OS Independent",
],
python_requires=">=3.6",
install_requires=["requests<=2.31.0", "pydantic==1.7", "environs<=9.5.0"],
install_requires=["requests>=2.31.0", "pydantic>=2.5.3,<3", "environs>=9.5.0"],
)
1 change: 1 addition & 0 deletions apitable.py/test/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
from .test_get_records import TestGetRecords
from .test_get_spaces import TestGetSpaces
from .test_get_views import TestGetViews
from .test_meta_field import TestMetaField
from .test_unit import TestUnit
from .test_update_records import TestUpdateRecords
from .test_upload_file import TestUploadFile
Expand Down
44 changes: 44 additions & 0 deletions apitable.py/test/test_meta_field.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import unittest

from apitable.types.field import MetaField


class TestMetaField(unittest.TestCase):

def test_mapped_type_without_property(self):
field = MetaField(id="fld1", name="n", type="SingleText")
self.assertIsNone(field.property)

def test_mapped_type_with_property(self):
field = MetaField.model_validate({
"id": "fld1",
"name": "n",
"type": "SingleText",
"property": {"defaultValue": "x"},
})
self.assertEqual(field.property.defaultValue, "x")

def test_mapped_type_property_none(self):
field = MetaField(id="fld1", name="n", type="SingleText", property=None)
self.assertIsNone(field.property)

def test_unmapped_type(self):
field = MetaField(id="fld1", name="n", type="URL")
self.assertIsNone(field.property)

def test_magic_lookup_nested(self):
field = MetaField.model_validate({
"id": "fld1",
"name": "lookup",
"type": "MagicLookUp",
"property": {
"relatedLinkFieldId": "lf",
"targetFieldId": "tf",
"rollupFunction": "SUM",
},
})
self.assertEqual(field.property.rollupFunction.value, "SUM")


if __name__ == "__main__":
unittest.main()
Loading