| 71 | self.table: sqlalchemy.Table = None # type: ignore |
| 72 | |
| 73 | def copy( |
| 74 | self, |
| 75 | metadata: Optional[sqlalchemy.MetaData] = None, |
| 76 | database: Optional[DatabaseConnection] = None, |
| 77 | engine: Optional[AsyncEngine] = None, |
| 78 | tablename: Optional[str] = None, |
| 79 | schema: Union[str, None, PydanticUndefinedType] = PydanticUndefined, |
| 80 | comment: Union[str, None, PydanticUndefinedType] = PydanticUndefined, |
| 81 | order_by: Optional[list[str]] = None, |
| 82 | abstract: Optional[bool] = None, |
| 83 | proxy: Optional[bool] = None, |
| 84 | emit_parent_signals: Optional[bool] = None, |
| 85 | queryset_class: Optional[type[QuerySet]] = None, |
| 86 | extra: Optional[Extra] = None, |
| 87 | constraints: Optional[list[ColumnCollectionConstraint]] = None, |
| 88 | ) -> "OrmarConfig": |
| 89 | # PydanticUndefined distinguishes "omitted" (inherit parent schema) |
| 90 | # from an explicit ``schema=None`` (clear schema). |
| 91 | resolved_schema = ( |
| 92 | self.schema if isinstance(schema, PydanticUndefinedType) else schema |
| 93 | ) |
| 94 | resolved_comment = ( |
| 95 | self.comment if isinstance(comment, PydanticUndefinedType) else comment |
| 96 | ) |
| 97 | return OrmarConfig( |
| 98 | metadata=metadata or self.metadata, |
| 99 | database=database or self.database, |
| 100 | engine=engine or self.engine, |
| 101 | tablename=tablename, |
| 102 | schema=resolved_schema, |
| 103 | comment=resolved_comment, |
| 104 | order_by=order_by, |
| 105 | abstract=abstract or self.abstract, |
| 106 | proxy=proxy if proxy is not None else self.proxy, |
| 107 | emit_parent_signals=( |
| 108 | emit_parent_signals |
| 109 | if emit_parent_signals is not None |
| 110 | else self.emit_parent_signals |
| 111 | ), |
| 112 | queryset_class=queryset_class or self.queryset_class, |
| 113 | extra=extra or self.extra, |
| 114 | constraints=constraints, |
| 115 | ) |