Files
aitsc/.venv/Lib/site-packages/flask_sqlalchemy/__pycache__/model.cpython-312.pyc

90 lines
13 KiB
Plaintext
Raw Normal View History

2025-02-23 09:07:52 +08:00
<EFBFBD>
2025-08-29 00:34:40 +08:00
<00><19>h<EFBFBD>,<00><01>J<00>ddlmZddlZddlZddlZddlmZ ddl
2025-02-23 09:07:52 +08:00
m Z ejrddl mZGd<06>d<07>ZGd<08>d <09>ZGd
<EFBFBD>d e<11>ZGd <0C>d <0A>ZGd<0E>de<11>ZGd<10>d<11>Zdd<12>Zdd<13>ZGd<14>deee j0<00>ZGd<16>dee j0<00>Zy)<1A>)<01> annotationsN<73>)<01>Query)<01>
SQLAlchemyc<01><00>eZdZdZdd<02>Zy)<05>_QueryPropertyzRA class property that creates a query object for a model.
:meta private:
c<01>X<00>|j||jj<00><00><01>S)N)<01>session)<03> query_class<73>__fsa__r
2025-08-29 00:34:40 +08:00
)<03>self<6C>obj<62>clss <20>CD:\pythonpj\aitsc\.venv\Lib\site-packages\flask_sqlalchemy/model.py<70>__get__z_QueryProperty.__get__s*<00><00><12><EFBFBD><EFBFBD> <0F><13><1B><1B>,<2C>,<2C>.<2E><1F>
2025-02-23 09:07:52 +08:00
<EFBFBD>
<EFBFBD>N)rz Model | Nonerz type[Model]<5D>returnr)<05>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__r<00>rrrrs <00><00><08>

rrc<01>P<00>eZdZUdZded< eZded< e<07>Zded< d
d<08>Z y ) <0B>Modela<6C>The base class of the :attr:`.SQLAlchemy.Model` declarative model class.
To define models, subclass :attr:`db.Model <.SQLAlchemy.Model>`, not this. To
customize ``db.Model``, subclass this and pass it as ``model_class`` to
:class:`.SQLAlchemy`. To customize ``db.Model`` at the metaclass level, pass an
already created declarative model class as ``model_class``.
zt.ClassVar[SQLAlchemy]r zt.ClassVar[type[Query]]r zt.ClassVar[Query]<5D>queryc<01>.<00>tj|<00>}|<01>J<00>|jrdt|<00><00>d<02>}nE|jrdt|<00><00>d<02>}n)dj t t|j<00><00>}dt|<00>j<00>d|<02>d<07>S)Nz (transient <20>)z (pending z, <20><<3C> <20>>) <0B>sa<73>inspect<63> transient<6E>id<69>pending<6E>join<69>map<61>str<74>identity<74>typer)r <00>state<74>pks r<00>__repr__zModel.__repr__8s<><00><00><12>
<EFBFBD>
<EFBFBD>4<EFBFBD> <20><05><14> <20> <20> <20> <10>?<3F>?<3F><1E>r<EFBFBD>$<24>x<EFBFBD>j<EFBFBD><01>*<2A>B<EFBFBD> <12>]<5D>]<5D><1C>R<EFBFBD><04>X<EFBFBD>J<EFBFBD>a<EFBFBD>(<28>B<EFBFBD><15><19><19>3<EFBFBD>s<EFBFBD>E<EFBFBD>N<EFBFBD>N<EFBFBD>3<>4<>B<EFBFBD><12>4<EFBFBD><04>:<3A>&<26>&<26>'<27>q<EFBFBD><12><04>A<EFBFBD>.<2E>.rN)rr()
rrrr<00>__annotations__rr rrr-rrrrrs@<00><00><08>$<24>#<23><08>
,1<>K<EFBFBD>(<28>0<><08> .<2E>/<2F>E<EFBFBD> <1C>/<2F><08> /rrc<01>N<00><00>eZdZUdZded<ded< d<07>fd<06> Z<05>xZS)<08> BindMetaMixinaMetaclass mixin that sets a model's ``metadata`` based on its ``__bind_key__``.
If the model sets ``metadata`` or ``__table__`` directly, ``__bind_key__`` is
ignored. If the ``metadata`` is the same as the parent model, it will not be set
directly on the child model.
rr <00> sa.MetaData<74>metadatac <01><><00><01>d|jvsNd|jvs@t|dd<00>}t|dd<00>}|jj|<05>}||ur||_t <00>|<00>|||fi|<04><01>y)Nr2<00> __table__<5F> __bind_key__)<07>__dict__<5F>getattrr <00>_make_metadatar2<00>super<65>__init__) r<00>name<6D>bases<65>d<>kwargs<67>bind_key<65>parent_metadatar2<00> __class__s <20>rr:zBindMetaMixin.__init__Qsq<00><><00><1B>c<EFBFBD>l<EFBFBD>l<EFBFBD>*<2A>k<EFBFBD>S<EFBFBD>\<5C>\<5C>.I<><1E>s<EFBFBD>N<EFBFBD>D<EFBFBD>9<>H<EFBFBD>%<25>c<EFBFBD>:<3A>t<EFBFBD><<3C>O<EFBFBD><1A>{<7B>{<7B>1<>1<>(<28>;<3B>H<EFBFBD><17><EFBFBD>.<2E>'<27><03> <0C> <0A><07><18><14>u<EFBFBD>a<EFBFBD>2<>6<EFBFBD>2r<00>
r;r(r<ztuple[type, ...]r=zdict[str, t.Any]r><00>t.Anyr<00>None)rrrrr.r:<00> __classcell__<5F>rAs@rr0r0FsH<00><><00><08><18><17><19><19> 3<><16> 3<>/<2F> 3<>4D<34> 3<>PU<50> 3<> <0A> 3<> 3rr0c<01>D<00><00>eZdZUdZded<ded<ed<07>fd<06> <0C>Z<06>xZS)<08> BindMixinaDeclarativeBase mixin to set a model's ``metadata`` based on ``__bind_key__``.
If no ``__bind_key__`` is specified, the model will use the default metadata
provided by ``DeclarativeBase`` or ``DeclarativeBaseNoMeta``.
If the model doesn't set ``metadata`` or ``__table__`` directly
and does set ``__bind_key__``, the model will use the metadata
for the specified bind key.
If the ``metadata`` is the same as the parent model, it will not be set
directly on the child model.
.. versionchanged:: 3.1.0
rr r1r2c <01><><00><01>d|jvsZd|jvsLt|d<03>r@t|dd<00>}t|dd<00>}|jj |<02>}||ur||_t <00>|<00>di|<01><01>y)Nr2r4r5r)r6<00>hasattrr7r r8r2r9<00>__init_subclass__)rr>r?r@r2rAs <20>rrKzBindMixin.__init_subclass__psx<00><><00><1A>c<EFBFBD>l<EFBFBD>l<EFBFBD>*<2A>k<EFBFBD>S<EFBFBD>\<5C>\<5C>.I<>w<EFBFBD> <0F><1E>P
<EFBFBD><1F>s<EFBFBD>N<EFBFBD>D<EFBFBD>9<>H<EFBFBD>%<25>c<EFBFBD>:<3A>t<EFBFBD><<3C>O<EFBFBD><1A>{<7B>{<7B>1<>1<>(<28>;<3B>H<EFBFBD><17><EFBFBD>.<2E>'<27><03> <0C> <0A><07>!<21>+<2B>F<EFBFBD>+r)rzt.Type[BindMixin]r><00>t.Dict[str, t.Any]rrD)rrrrr.<00> classmethodrKrErFs@rrHrH_s(<00><><00> <08><18><17><19><19><10> ,<2C><11> ,rrHc<01>`<00><00>eZdZUdZded<ded<ded< d
<EFBFBD>fd<08> Zd d <09>Z<06>xZS) <0C> NameMetaMixinaPMetaclass mixin that sets a model's ``__tablename__`` by converting the
``CamelCase`` class name to ``snake_case``. A name is set for non-abstract models
that do not otherwise define ``__tablename__``. If a model does not define a primary
key, it will not generate a name or ``__table__``, for single-table inheritance.
r1r2r(<00> __tablename__<5F>sa.Tabler4c <01><><00><01>t|<00>rt|j<00>|_t <00>|<00>|||fi|<04><01>d|j vr"d|j vr|j d<00>|`yyyy)NrPr4)<08>should_set_tablename<6D>camel_to_snake_caserrPr9r:r6r4)rr;r<r=r>rAs <20>rr:zNameMetaMixin.__init__<5F>sq<00><><00> <20><03> $<24> 3<>C<EFBFBD>L<EFBFBD>L<EFBFBD> A<>C<EFBFBD> <1D> <0A><07><18><14>u<EFBFBD>a<EFBFBD>2<>6<EFBFBD>2<> <1C>3<EFBFBD><<3C><<3C> /<2F><1B>s<EFBFBD>|<7C>|<7C>+<2B><13> <0C> <0C>[<5B>)<29>1<><13> <0A>2<>,<2C> 0rc<01><><00>|jd<01>}|<03>|d}n
|<03>d|d<00><00>}||jjvrtj|i|<02><01>S|D]Y}t |tj <00>r |jst |tj<00>s<01>Dtj|i|<02><01>cS|jddD]}d|jvs<01>ntj|i|<02><01>Sd|jvr|` y<02> aThis is called by SQLAlchemy during mapper setup. It determines the final
table object that the model will use.
If no primary key is found, that indicates single-table inheritance, so no table
will be created and ``__tablename__`` will be unset.
<20>schemaNr<00>.r<00><><EFBFBD><EFBFBD><EFBFBD>r4rP<00> <0C>getr2<00>tablesr!<00>Table<6C>
isinstance<EFBFBD>Column<6D> primary_key<65>PrimaryKeyConstraint<6E>__mro__r6rP<00>r<00>argsr>rW<00>key<65>arg<72>bases r<00> __table_cls__zNameMetaMixin.__table_cls__<5F>s<><00><00><18><1A><1A>H<EFBFBD>%<25><06> <11>><3E><16>q<EFBFBD>'<27>C<EFBFBD><1B>H<EFBFBD>A<EFBFBD>d<EFBFBD>1<EFBFBD>g<EFBFBD>Y<EFBFBD>'<27>C<EFBFBD> <0F>#<23>,<2C>,<2C>%<25>%<25> %<25><15>8<EFBFBD>8<EFBFBD>T<EFBFBD>,<2C>V<EFBFBD>,<2C> ,<2C><18>C<EFBFBD><1A>3<EFBFBD><02> <09> <09>*<2A>s<EFBFBD><EFBFBD><EFBFBD>:<3A><13>R<EFBFBD>,<2C>,<2C>D<0E><1A>x<EFBFBD>x<EFBFBD><14>0<><16>0<>0<> <18><18>K<EFBFBD>K<EFBFBD><01>"<22>%<25>D<EFBFBD><1A>d<EFBFBD>m<EFBFBD>m<EFBFBD>+<2B><15>&<26><16>8<EFBFBD>8<EFBFBD>T<EFBFBD>,<2C>V<EFBFBD>,<2C> ,<2C> <1B>c<EFBFBD>l<EFBFBD>l<EFBFBD> *<2A><13>!<21>rrB<00>rdrCr>rCrzsa.Table | None)rrrrr.r:rhrErFs@rrOrOsN<00><><00><08> <1A><19><16><16><17><17><1E><16><1E>/<2F><1E>4D<34><1E>PU<50><1E> <0A><1E> 'rrOc<01>`<00><00>eZdZUdZded<ded<ded<ed
<EFBFBD>fd<08> <0C>Zed d <09><04>Z<07>xZS) <0C> NameMixinauDeclarativeBase mixin that sets a model's ``__tablename__`` by converting the
``CamelCase`` class name to ``snake_case``. A name is set for non-abstract models
that do not otherwise define ``__tablename__``. If a model does not define a primary
key, it will not generate a name or ``__table__``, for single-table inheritance.
.. versionchanged:: 3.1.0
r1r2r(rPrQr4c <01><><00><01>t|<00>rt|j<00>|_t <00>|<00>di|<01><01>d|j vr"d|j vr|j d<00>|`yyyy)NrPr4r)rSrTrrPr9rKr6r4)rr>rAs <20>rrKzNameMixin.__init_subclass__<5F>si<00><><00> <1F><03> $<24> 3<>C<EFBFBD>L<EFBFBD>L<EFBFBD> A<>C<EFBFBD> <1D> <0A><07>!<21>+<2B>F<EFBFBD>+<2B> <1C>3<EFBFBD><<3C><<3C> /<2F><1B>s<EFBFBD>|<7C>|<7C>+<2B><13> <0C> <0C>[<5B>)<29>1<><13> <0A>2<>,<2C> 0rc<01><><00>|jd<01>}|<03>|d}n
|<03>d|d<00><00>}||jjvrtj|i|<02><01>S|D]Y}t |tj <00>r |jst |tj<00>s<01>Dtj|i|<02><01>cS|jddD]}d|jvs<01>ntj|i|<02><01>Sd|jvr|` yrVrZrcs rrhzNameMixin.__table_cls__<5F>s<><00><00><18><1A><1A>H<EFBFBD>%<25><06> <11>><3E><16>q<EFBFBD>'<27>C<EFBFBD><1B>H<EFBFBD>A<EFBFBD>d<EFBFBD>1<EFBFBD>g<EFBFBD>Y<EFBFBD>'<27>C<EFBFBD> <0F>#<23>,<2C>,<2C>%<25>%<25> %<25><15>8<EFBFBD>8<EFBFBD>T<EFBFBD>,<2C>V<EFBFBD>,<2C> ,<2C><18>C<EFBFBD><1A>3<EFBFBD><02> <09> <09>*<2A>s<EFBFBD><EFBFBD><EFBFBD>:<3A><13>R<EFBFBD>,<2C>,<2C>D<0E><1A>x<EFBFBD>x<EFBFBD><14>0<><16>0<>0<> <18><18>K<EFBFBD>K<EFBFBD><01>"<22>%<25>D<EFBFBD><1A>d<EFBFBD>m<EFBFBD>m<EFBFBD>+<2B><15>&<26><16>8<EFBFBD>8<EFBFBD>T<EFBFBD>,<2C>V<EFBFBD>,<2C> ,<2C> <1B>c<EFBFBD>l<EFBFBD>l<EFBFBD> *<2A><13>!<21>r)rzt.Type[NameMixin]r>rLrrDri) rrrrr.rMrKrhrErFs@rrkrk<00>sB<00><><00><08><1A><19><16><16><17><17><10> <1E><11> <1E><11>'<14><11>'rrkc<01><><00>|jjdd<02>set|tjtj
f<02>st d<03>|jddD<00><00>rt d<06>|jD<00><00>ry|jD]<5D>}d|jvr<01>t|jdtj<00>ry||uxs{|jjdd<02>xs]t|tj<00>xs@t|tjj<00>xst|tj
<00> cSy) aDetermine whether ``__tablename__`` should be generated for a model.
- If no class in the MRO sets a name, one should be generated.
- If a declared attr is found, it should be used instead.
- If a name is found, it should be used if the class is a mixin, otherwise one
should be generated.
- Abstract models should not have one generated.
Later, ``__table_cls__`` will determine if the model looks like single or
joined-table inheritance. If no primary key is found, the name will be unset.
<20> __abstract__Fc3<01>PK<00>|]}t|tj<00><00><01><00> y<00>w<01>N)r^<00>sa_orm<72>DeclarativeMeta<74><02>.0<EFBFBD>bs r<00> <genexpr>z'should_set_tablename.<locals>.<genexpr>s<00><00><><00>W<><EFBFBD>!<21>
<EFBFBD>1<EFBFBD>f<EFBFBD>&<<3C>&<<3C>=<3D><EFBFBD>s<00>$&rNc3<01>hK<00>|]*}|tjuxs|tju<00><01><00>,y<00>wrq)rr<00>DeclarativeBase<73>DeclarativeBaseNoMetarts rrwz'should_set_tablename.<locals>.<genexpr>s6<00><00><><00>
<EFBFBD>"<22><01><0F>&<26>(<28>(<28> (<28> M<>A<EFBFBD><16>1M<31>1M<31>,M<> M<>"<22>s<00>02rPT)r6r[<00>
issubclassrrryrz<00>anyrb<00> __bases__r^<00> declared_attrrs<00>decl_api<70>DeclarativeAttributeIntercept)rrgs rrSrS s#<00><00> <0C> <0C> <0C><18><18><1E><15>/<2F><1A>3<EFBFBD><16>!7<>!7<><16>9U<39>9U<39> V<>W<><17>W<>s<EFBFBD>{<7B>{<7B>ST<53>SU<53><EFBFBD>W<>W<> <0E>
<EFBFBD><18>]<5D>]<5D>
<EFBFBD>
<EFBFBD>
<15><13> <0B> <0B><04> <1A>$<24>-<2D>-<2D> /<2F> <14> <15>d<EFBFBD>m<EFBFBD>m<EFBFBD>O<EFBFBD>4<>f<EFBFBD>6J<36>6J<36> K<><18> <11>C<EFBFBD>K<EFBFBD> <0E><13>}<7D>}<7D> <20> <20><1E><15>7<> <0E><1B>4<EFBFBD><16>!7<>!7<>8<>B<01><1D>d<EFBFBD>F<EFBFBD>O<EFBFBD>O<EFBFBD>$Q<>$Q<>R<>B<01><1E>d<EFBFBD>F<EFBFBD>$@<40>$@<40>A<> <0E> 
<EFBFBD>
<EFBFBD><1C>( rc<01>n<00>tjdd|<00>}|j<00>jd<03>S)z/Convert a ``CamelCase`` name to ``snake_case``.z(((?<=[a-z0-9])[A-Z]|(?!^)[A-Z](?=[a-z]))z_\1<>_)<04>re<72>sub<75>lower<65>lstrip)r;s rrTrT;s,<00><00> <0A>6<EFBFBD>6<EFBFBD>=<3D>v<EFBFBD>t<EFBFBD> L<>D<EFBFBD> <0F>:<3A>:<3A><<3C> <1E> <1E>s<EFBFBD> #<23>#rc<01><00>eZdZdZy)<03> DefaultMeta<74>gSQLAlchemy declarative metaclass that provides ``__bind_key__`` and
``__tablename__`` support.
N<>rrrrrrrr<>r<>A<00><00><00>rr<>c<01><00>eZdZdZy)<03>DefaultMetaNoNamer<65>Nr<4E>rrrr<>r<>Gr<>rr<>)rr*r<00>bool)r;r(rr()<1B>
__future__rr<><00>typing<6E>t<>
sqlalchemyr!<00>sqlalchemy.orm<72>ormrrrr<00> TYPE_CHECKING<4E> extensionrrrr*r0rHrOrkrSrTrsr<>r<>rrr<00><module>r<>s<><00><01>"<22> <09><12><17><1F><18><04>?<3F>?<3F>%<25> 
<EFBFBD> 
<EFBFBD>(/<2F>(/<2F>V3<>D<EFBFBD>3<>2,<2C>,<2C>@B<14>D<EFBFBD>B<14>JD<14>D<14>N-<10>`$<24> <08>-<2D><1D><06>0F<30>0F<30><08> <08> <0A>v<EFBFBD>'=<3D>'=<3D>r