|
57 | 57 | PrimitiveType, |
58 | 58 | StringType, |
59 | 59 | StructType, |
| 60 | + TimestampNanoType, |
60 | 61 | TimestampType, |
| 62 | + TimestamptzNanoType, |
61 | 63 | TimestamptzType, |
62 | 64 | TimeType, |
63 | 65 | UUIDType, |
@@ -370,9 +372,12 @@ def check_format_version_compatibility(self, format_version: int) -> None: |
370 | 372 | Raises: |
371 | 373 | ValueError: If the schema is not compatible for the format version. |
372 | 374 | """ |
373 | | - for field in self._lazy_id_to_field().values(): |
| 375 | + for field in self._lazy_id_to_field.values(): |
374 | 376 | if format_version < field.field_type.minimum_format_version(): |
375 | | - raise ValueError(f"{field.field_type} is only supported in {field.field_type.minimum_format_version()} or higher. Current format version is: {format_version}") |
| 377 | + raise ValueError( |
| 378 | + f"{field.field_type} is only supported in {field.field_type.minimum_format_version()} or higher. Current format version is: {format_version}" |
| 379 | + ) |
| 380 | + |
376 | 381 |
|
377 | 382 | class SchemaVisitor(Generic[T], ABC): |
378 | 383 | def before_field(self, field: NestedField) -> None: |
@@ -533,8 +538,12 @@ def primitive(self, primitive: PrimitiveType, primitive_partner: Optional[P]) -> |
533 | 538 | return self.visit_time(primitive, primitive_partner) |
534 | 539 | elif isinstance(primitive, TimestampType): |
535 | 540 | return self.visit_timestamp(primitive, primitive_partner) |
| 541 | + elif isinstance(primitive, TimestampNanoType): |
| 542 | + return self.visit_timestamp_ns(primitive, primitive_partner) |
536 | 543 | elif isinstance(primitive, TimestamptzType): |
537 | 544 | return self.visit_timestamptz(primitive, primitive_partner) |
| 545 | + elif isinstance(primitive, TimestamptzNanoType): |
| 546 | + return self.visit_timestamptz_ns(primitive, primitive_partner) |
538 | 547 | elif isinstance(primitive, StringType): |
539 | 548 | return self.visit_string(primitive, primitive_partner) |
540 | 549 | elif isinstance(primitive, UUIDType): |
@@ -582,10 +591,18 @@ def visit_time(self, time_type: TimeType, partner: Optional[P]) -> T: |
582 | 591 | def visit_timestamp(self, timestamp_type: TimestampType, partner: Optional[P]) -> T: |
583 | 592 | """Visit a TimestampType.""" |
584 | 593 |
|
| 594 | + @abstractmethod |
| 595 | + def visit_timestamp_ns(self, timestamp_ns_type: TimestampNanoType, partner: Optional[P]) -> T: |
| 596 | + """Visit a TimestampNanoType.""" |
| 597 | + |
585 | 598 | @abstractmethod |
586 | 599 | def visit_timestamptz(self, timestamptz_type: TimestamptzType, partner: Optional[P]) -> T: |
587 | 600 | """Visit a TimestamptzType.""" |
588 | 601 |
|
| 602 | + @abstractmethod |
| 603 | + def visit_timestamptz_ns(self, timestamptz_ns_type: TimestamptzNanoType, partner: Optional[P]) -> T: |
| 604 | + """Visit a TimestamptzNanoType.""" |
| 605 | + |
589 | 606 | @abstractmethod |
590 | 607 | def visit_string(self, string_type: StringType, partner: Optional[P]) -> T: |
591 | 608 | """Visit a StringType.""" |
@@ -711,8 +728,12 @@ def primitive(self, primitive: PrimitiveType) -> T: |
711 | 728 | return self.visit_time(primitive) |
712 | 729 | elif isinstance(primitive, TimestampType): |
713 | 730 | return self.visit_timestamp(primitive) |
| 731 | + elif isinstance(primitive, TimestampNanoType): |
| 732 | + return self.visit_timestamp_ns(primitive) |
714 | 733 | elif isinstance(primitive, TimestamptzType): |
715 | 734 | return self.visit_timestamptz(primitive) |
| 735 | + elif isinstance(primitive, TimestamptzNanoType): |
| 736 | + return self.visit_timestamptz_ns(primitive) |
716 | 737 | elif isinstance(primitive, StringType): |
717 | 738 | return self.visit_string(primitive) |
718 | 739 | elif isinstance(primitive, UUIDType): |
@@ -762,10 +783,18 @@ def visit_time(self, time_type: TimeType) -> T: |
762 | 783 | def visit_timestamp(self, timestamp_type: TimestampType) -> T: |
763 | 784 | """Visit a TimestampType.""" |
764 | 785 |
|
| 786 | + @abstractmethod |
| 787 | + def visit_timestamp_ns(self, timestamp_type: TimestampNanoType) -> T: |
| 788 | + """Visit a TimestampNanoType.""" |
| 789 | + |
765 | 790 | @abstractmethod |
766 | 791 | def visit_timestamptz(self, timestamptz_type: TimestamptzType) -> T: |
767 | 792 | """Visit a TimestamptzType.""" |
768 | 793 |
|
| 794 | + @abstractmethod |
| 795 | + def visit_timestamptz_ns(self, timestamptz_ns_type: TimestamptzNanoType) -> T: |
| 796 | + """Visit a TimestamptzNanoType.""" |
| 797 | + |
769 | 798 | @abstractmethod |
770 | 799 | def visit_string(self, string_type: StringType) -> T: |
771 | 800 | """Visit a StringType.""" |
|
0 commit comments