--- /srv/reproducible-results/rbuild-debian/r-b-build.GNHEspGj/b1/sqlalchemy_2.0.32+ds1-1_i386.changes +++ /srv/reproducible-results/rbuild-debian/r-b-build.GNHEspGj/b2/sqlalchemy_2.0.32+ds1-1_i386.changes ├── Files │ @@ -1,5 +1,5 @@ │ │ - bca5fb5530ef3b12c7de9c69c097bc13 3956420 doc optional python-sqlalchemy-doc_2.0.32+ds1-1_all.deb │ + 0b93465321e064b297527355fb26075f 3956352 doc optional python-sqlalchemy-doc_2.0.32+ds1-1_all.deb │ 57e85c6e2ab3e9e74706178cfb04ebe7 1642772 debug optional python3-sqlalchemy-ext-dbgsym_2.0.32+ds1-1_i386.deb │ 99e33d19e086a239d6a3e101fe1e0244 194244 python optional python3-sqlalchemy-ext_2.0.32+ds1-1_i386.deb │ 0955e7f12a0b73c1ab8406c88fbab7d2 1196068 python optional python3-sqlalchemy_2.0.32+ds1-1_all.deb ├── python-sqlalchemy-doc_2.0.32+ds1-1_all.deb │ ├── file list │ │ @@ -1,3 +1,3 @@ │ │ -rw-r--r-- 0 0 0 4 2024-08-23 07:52:58.000000 debian-binary │ │ --rw-r--r-- 0 0 0 13924 2024-08-23 07:52:58.000000 control.tar.xz │ │ --rw-r--r-- 0 0 0 3942304 2024-08-23 07:52:58.000000 data.tar.xz │ │ +-rw-r--r-- 0 0 0 13920 2024-08-23 07:52:58.000000 control.tar.xz │ │ +-rw-r--r-- 0 0 0 3942240 2024-08-23 07:52:58.000000 data.tar.xz │ ├── control.tar.xz │ │ ├── control.tar │ │ │ ├── ./md5sums │ │ │ │ ├── ./md5sums │ │ │ │ │┄ Files differ │ ├── data.tar.xz │ │ ├── data.tar │ │ │ ├── ./usr/share/doc/python-sqlalchemy-doc/html/changelog/changelog_14.html │ │ │ │ @@ -1226,28 +1226,28 @@ │ │ │ │

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │

sql

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │

mypy

│ │ │ │
│ │ │ │
│ │ │ │

Associations

│ │ │ │

Examples illustrating the usage of the “association object” pattern, │ │ │ │ where an intermediary class mediates the relationship between two │ │ │ │ classes that are associated in a many-to-many pattern.

│ │ │ │

Listing of files:

│ │ │ │

│ │ │ │
│ │ │ │
│ │ │ │

Asyncio Integration

│ │ │ │

Examples illustrating the asyncio engine feature of SQLAlchemy.

│ │ │ │

Listing of files:

│ │ │ │

│ │ │ │
│ │ │ │
│ │ │ │

Directed Graphs

│ │ │ │

An example of persistence for a directed graph structure. The │ │ │ │ graph is stored as a collection of edges, each referencing both a │ │ │ │ @@ -378,32 +378,32 @@ │ │ │ │ subclassing the HasAddresses mixin, which ensures that the │ │ │ │ parent class is provided with an addresses collection │ │ │ │ which contains Address objects.

│ │ │ │

The discriminator_on_association.py and generic_fk.py scripts │ │ │ │ are modernized versions of recipes presented in the 2007 blog post │ │ │ │ Polymorphic Associations with SQLAlchemy.

│ │ │ │

Listing of files:

│ │ │ │

│ │ │ │ @@ -477,29 +477,29 @@ │ │ │ │
│ │ │ │

See also

│ │ │ │

How can I profile a SQLAlchemy powered application?

│ │ │ │
│ │ │ │
│ │ │ │

File Listing

│ │ │ │

Listing of files:

│ │ │ │

│ │ │ │
│ │ │ │ @@ -751,31 +751,31 @@ │ │ │ │

Several examples that illustrate the technique of intercepting changes │ │ │ │ that would be first interpreted as an UPDATE on a row, and instead turning │ │ │ │ it into an INSERT of a new row, leaving the previous row intact as │ │ │ │ a historical version.

│ │ │ │

Compare to the Versioning with a History Table example which writes a │ │ │ │ history row to a separate history table.

│ │ │ │

Listing of files:

│ │ │ │

│ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │

Vertical Attribute Mapping

│ │ │ │

Illustrates “vertical table” mappings.

│ │ │ │ @@ -800,35 +800,35 @@ │ │ │ │ q = (session.query(Animal). │ │ │ │ filter(Animal.facts.any( │ │ │ │ and_(AnimalFact.key == u'weasel-like', │ │ │ │ AnimalFact.value == True)))) │ │ │ │ print('weasel-like animals', q.all()) │ │ │ │ │ │ │ │

Listing of files:

│ │ │ │

│ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │

Inheritance Mapping Recipes

│ │ │ │
│ │ │ │

Basic Inheritance Mappings

│ │ │ │

Working examples of single-table, joined-table, and concrete-table │ │ │ │ inheritance as described in Mapping Class Inheritance Hierarchies.

│ │ │ │

Listing of files:

│ │ │ │

│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │

Special APIs

│ │ │ │
│ │ │ │ ├── html2text {} │ │ │ │ │ @@ -96,37 +96,37 @@ │ │ │ │ │ Listing of files: │ │ │ │ │ * _a_d_j_a_c_e_n_c_y___l_i_s_t_._p_y │ │ │ │ │ ******** AAssssoocciiaattiioonnss_?¶ ******** │ │ │ │ │ Examples illustrating the usage of the “association object” pattern, where an │ │ │ │ │ intermediary class mediates the relationship between two classes that are │ │ │ │ │ associated in a many-to-many pattern. │ │ │ │ │ Listing of files: │ │ │ │ │ - * _d_i_c_t___o_f___s_e_t_s___w_i_t_h___d_e_f_a_u_l_t_._p_y - An advanced association proxy example │ │ │ │ │ - which illustrates nesting of association proxies to produce multi-level │ │ │ │ │ - Python collections, in this case a dictionary with string keys and sets │ │ │ │ │ - of integers as values, which conceal the underlying mapped classes. │ │ │ │ │ + * _b_a_s_i_c___a_s_s_o_c_i_a_t_i_o_n_._p_y - Illustrate a many-to-many relationship between an │ │ │ │ │ + “Order” and a collection of “Item” objects, associating a purchase price │ │ │ │ │ + with each via an association object called “OrderItem” │ │ │ │ │ +_d_i_c_t___o_f___s_e_t_s___w_i_t_h___d_e_f_a_u_l_t_._p_y - An advanced association proxy example which │ │ │ │ │ +illustrates nesting of association proxies to produce multi-level Python │ │ │ │ │ +collections, in this case a dictionary with string keys and sets of integers as │ │ │ │ │ +values, which conceal the underlying mapped classes. │ │ │ │ │ _p_r_o_x_i_e_d___a_s_s_o_c_i_a_t_i_o_n_._p_y - Same example as basic_association, adding in usage of │ │ │ │ │ _s_q_l_a_l_c_h_e_m_y_._e_x_t_._a_s_s_o_c_i_a_t_i_o_n_p_r_o_x_y to make explicit references to OrderItem │ │ │ │ │ optional. │ │ │ │ │ -_b_a_s_i_c___a_s_s_o_c_i_a_t_i_o_n_._p_y - Illustrate a many-to-many relationship between an │ │ │ │ │ -“Order” and a collection of “Item” objects, associating a purchase price with │ │ │ │ │ -each via an association object called “OrderItem” │ │ │ │ │ ******** AAssyynncciioo IInntteeggrraattiioonn_?¶ ******** │ │ │ │ │ Examples illustrating the asyncio engine feature of SQLAlchemy. │ │ │ │ │ Listing of files: │ │ │ │ │ * _a_s_y_n_c___o_r_m___w_r_i_t_e_o_n_l_y_._p_y - Illustrates using wwrriittee oonnllyy rreellaattiioonnsshhiippss for │ │ │ │ │ simpler handling of ORM collections under asyncio. │ │ │ │ │ +_a_s_y_n_c___o_r_m_._p_y - Illustrates use of the sqlalchemy.ext.asyncio.AsyncSession │ │ │ │ │ +object for asynchronous ORM use. │ │ │ │ │ _g_r_e_e_n_l_e_t___o_r_m_._p_y - Illustrates use of the sqlalchemy.ext.asyncio.AsyncSession │ │ │ │ │ object for asynchronous ORM use, including the optional run_sync() method. │ │ │ │ │ +_b_a_s_i_c_._p_y - Illustrates the asyncio engine / connection interface. │ │ │ │ │ _g_a_t_h_e_r___o_r_m___s_t_a_t_e_m_e_n_t_s_._p_y - Illustrates how to run many statements concurrently │ │ │ │ │ using asyncio.gather() along many asyncio database connections, merging ORM │ │ │ │ │ results into a single AsyncSession. │ │ │ │ │ -_b_a_s_i_c_._p_y - Illustrates the asyncio engine / connection interface. │ │ │ │ │ -_a_s_y_n_c___o_r_m_._p_y - Illustrates use of the sqlalchemy.ext.asyncio.AsyncSession │ │ │ │ │ -object for asynchronous ORM use. │ │ │ │ │ ******** DDiirreecctteedd GGrraapphhss_?¶ ******** │ │ │ │ │ An example of persistence for a directed graph structure. The graph is stored │ │ │ │ │ as a collection of edges, each referencing both a “lower” and an “upper” node │ │ │ │ │ in a table of nodes. Basic persistence and querying for lower- and upper- │ │ │ │ │ neighbors are illustrated: │ │ │ │ │ n2 = Node(2) │ │ │ │ │ n5 = Node(5) │ │ │ │ │ @@ -148,27 +148,27 @@ │ │ │ │ │ Supplier, both subclassing the HasAddresses mixin, which ensures that the │ │ │ │ │ parent class is provided with an addresses collection which contains Address │ │ │ │ │ objects. │ │ │ │ │ The _d_i_s_c_r_i_m_i_n_a_t_o_r___o_n___a_s_s_o_c_i_a_t_i_o_n_._p_y and _g_e_n_e_r_i_c___f_k_._p_y scripts are modernized │ │ │ │ │ versions of recipes presented in the 2007 blog post _P_o_l_y_m_o_r_p_h_i_c_ _A_s_s_o_c_i_a_t_i_o_n_s │ │ │ │ │ _w_i_t_h_ _S_Q_L_A_l_c_h_e_m_y. │ │ │ │ │ Listing of files: │ │ │ │ │ - * _t_a_b_l_e___p_e_r___r_e_l_a_t_e_d_._p_y - Illustrates a generic association which persists │ │ │ │ │ - association objects within individual tables, each one generated to │ │ │ │ │ - persist those objects on behalf of a particular parent class. │ │ │ │ │ + * _d_i_s_c_r_i_m_i_n_a_t_o_r___o_n___a_s_s_o_c_i_a_t_i_o_n_._p_y - Illustrates a mixin which provides a │ │ │ │ │ + generic association using a single target table and a single association │ │ │ │ │ + table, referred to by all parent tables. The association table contains a │ │ │ │ │ + “discriminator” column which determines what type of parent object │ │ │ │ │ + associates to each particular row in the association table. │ │ │ │ │ +_t_a_b_l_e___p_e_r___r_e_l_a_t_e_d_._p_y - Illustrates a generic association which persists │ │ │ │ │ +association objects within individual tables, each one generated to persist │ │ │ │ │ +those objects on behalf of a particular parent class. │ │ │ │ │ _g_e_n_e_r_i_c___f_k_._p_y - Illustrates a so-called “generic foreign key”, in a similar │ │ │ │ │ fashion to that of popular frameworks such as Django, ROR, etc. This approach │ │ │ │ │ bypasses standard referential integrity practices, in that the “foreign key” │ │ │ │ │ column is not actually constrained to refer to any particular table; instead, │ │ │ │ │ in-application logic is used to determine which table is referenced. │ │ │ │ │ -_d_i_s_c_r_i_m_i_n_a_t_o_r___o_n___a_s_s_o_c_i_a_t_i_o_n_._p_y - Illustrates a mixin which provides a generic │ │ │ │ │ -association using a single target table and a single association table, │ │ │ │ │ -referred to by all parent tables. The association table contains a │ │ │ │ │ -“discriminator” column which determines what type of parent object associates │ │ │ │ │ -to each particular row in the association table. │ │ │ │ │ _t_a_b_l_e___p_e_r___a_s_s_o_c_i_a_t_i_o_n_._p_y - Illustrates a mixin which provides a generic │ │ │ │ │ association via a individually generated association tables for each parent │ │ │ │ │ class. The associated objects themselves are persisted in a single table shared │ │ │ │ │ among all parents. │ │ │ │ │ ******** MMaatteerriiaalliizzeedd PPaatthhss_?¶ ******** │ │ │ │ │ Illustrates the “materialized paths” pattern for hierarchical data using the │ │ │ │ │ SQLAlchemy ORM. │ │ │ │ │ @@ -220,25 +220,26 @@ │ │ │ │ │ $ python -m examples.performance bulk_inserts \ │ │ │ │ │ --dburl mysql+mysqldb://scott:tiger@localhost/test \ │ │ │ │ │ --profile --num 1000 │ │ │ │ │ See also │ │ │ │ │ _H_o_w_ _c_a_n_ _I_ _p_r_o_f_i_l_e_ _a_ _S_Q_L_A_l_c_h_e_m_y_ _p_o_w_e_r_e_d_ _a_p_p_l_i_c_a_t_i_o_n_? │ │ │ │ │ ****** FFiillee LLiissttiinngg_?¶ ****** │ │ │ │ │ Listing of files: │ │ │ │ │ - * _l_a_r_g_e___r_e_s_u_l_t_s_e_t_s_._p_y - In this series of tests, we are looking at time to │ │ │ │ │ - load a large number of very small and simple rows. │ │ │ │ │ -_b_u_l_k___i_n_s_e_r_t_s_._p_y - This series of tests illustrates different ways to INSERT a │ │ │ │ │ -large number of rows in bulk. │ │ │ │ │ + * _s_i_n_g_l_e___i_n_s_e_r_t_s_._p_y - In this series of tests, we’re looking at a method │ │ │ │ │ + that inserts a row within a distinct transaction, and afterwards returns │ │ │ │ │ + to essentially a “closed” state. This would be analogous to an API call │ │ │ │ │ + that starts up a database connection, inserts the row, commits and │ │ │ │ │ + closes. │ │ │ │ │ _s_h_o_r_t___s_e_l_e_c_t_s_._p_y - This series of tests illustrates different ways to SELECT a │ │ │ │ │ single record by primary key │ │ │ │ │ _____m_a_i_n_____._p_y - Allows the examples/performance package to be run as a script. │ │ │ │ │ -_s_i_n_g_l_e___i_n_s_e_r_t_s_._p_y - In this series of tests, we’re looking at a method that │ │ │ │ │ -inserts a row within a distinct transaction, and afterwards returns to │ │ │ │ │ -essentially a “closed” state. This would be analogous to an API call that │ │ │ │ │ -starts up a database connection, inserts the row, commits and closes. │ │ │ │ │ +_b_u_l_k___i_n_s_e_r_t_s_._p_y - This series of tests illustrates different ways to INSERT a │ │ │ │ │ +large number of rows in bulk. │ │ │ │ │ +_l_a_r_g_e___r_e_s_u_l_t_s_e_t_s_._p_y - In this series of tests, we are looking at time to load a │ │ │ │ │ +large number of very small and simple rows. │ │ │ │ │ _b_u_l_k___u_p_d_a_t_e_s_._p_y - This series of tests will illustrate different ways to UPDATE │ │ │ │ │ a large number of rows in bulk (under construction! there’s just one test at │ │ │ │ │ the moment) │ │ │ │ │ ****** RRuunnnniinngg aallll tteessttss wwiitthh ttiimmee_?¶ ****** │ │ │ │ │ This is the default form of run: │ │ │ │ │ $ python -m examples.performance single_inserts │ │ │ │ │ Tests to run: test_orm_commit, test_bulk_save, │ │ │ │ │ @@ -467,27 +468,28 @@ │ │ │ │ │ Several examples that illustrate the technique of intercepting changes that │ │ │ │ │ would be first interpreted as an UPDATE on a row, and instead turning it into │ │ │ │ │ an INSERT of a new row, leaving the previous row intact as a historical │ │ │ │ │ version. │ │ │ │ │ Compare to the _V_e_r_s_i_o_n_i_n_g_ _w_i_t_h_ _a_ _H_i_s_t_o_r_y_ _T_a_b_l_e example which writes a history │ │ │ │ │ row to a separate history table. │ │ │ │ │ Listing of files: │ │ │ │ │ - * _v_e_r_s_i_o_n_e_d___m_a_p_._p_y - A variant of the versioned_rows example built around │ │ │ │ │ - the concept of a “vertical table” structure, like those illustrated in │ │ │ │ │ - _V_e_r_t_i_c_a_l_ _A_t_t_r_i_b_u_t_e_ _M_a_p_p_i_n_g examples. │ │ │ │ │ -_v_e_r_s_i_o_n_e_d___r_o_w_s_._p_y - Illustrates a method to intercept changes on objects, │ │ │ │ │ -turning an UPDATE statement on a single row into an INSERT statement, so that a │ │ │ │ │ -new row is inserted with the new data, keeping the old row intact. │ │ │ │ │ -_v_e_r_s_i_o_n_e_d___u_p_d_a_t_e___o_l_d___r_o_w_._p_y - Illustrates the same UPDATE into INSERT technique │ │ │ │ │ -of versioned_rows.py, but also emits an UPDATE on the oolldd row to affect a │ │ │ │ │ -change in timestamp. Also includes a _S_e_s_s_i_o_n_E_v_e_n_t_s_._d_o___o_r_m___e_x_e_c_u_t_e_(_) hook to │ │ │ │ │ -limit queries to only the most recent version. │ │ │ │ │ + * _v_e_r_s_i_o_n_e_d___u_p_d_a_t_e___o_l_d___r_o_w_._p_y - Illustrates the same UPDATE into INSERT │ │ │ │ │ + technique of versioned_rows.py, but also emits an UPDATE on the oolldd row │ │ │ │ │ + to affect a change in timestamp. Also includes a │ │ │ │ │ + _S_e_s_s_i_o_n_E_v_e_n_t_s_._d_o___o_r_m___e_x_e_c_u_t_e_(_) hook to limit queries to only the most │ │ │ │ │ + recent version. │ │ │ │ │ _v_e_r_s_i_o_n_e_d___r_o_w_s___w___v_e_r_s_i_o_n_i_d_._p_y - Illustrates a method to intercept changes on │ │ │ │ │ objects, turning an UPDATE statement on a single row into an INSERT statement, │ │ │ │ │ so that a new row is inserted with the new data, keeping the old row intact. │ │ │ │ │ +_v_e_r_s_i_o_n_e_d___m_a_p_._p_y - A variant of the versioned_rows example built around the │ │ │ │ │ +concept of a “vertical table” structure, like those illustrated in _V_e_r_t_i_c_a_l │ │ │ │ │ +_A_t_t_r_i_b_u_t_e_ _M_a_p_p_i_n_g examples. │ │ │ │ │ +_v_e_r_s_i_o_n_e_d___r_o_w_s_._p_y - Illustrates a method to intercept changes on objects, │ │ │ │ │ +turning an UPDATE statement on a single row into an INSERT statement, so that a │ │ │ │ │ +new row is inserted with the new data, keeping the old row intact. │ │ │ │ │ ******** VVeerrttiiccaall AAttttrriibbuuttee MMaappppiinngg_?¶ ******** │ │ │ │ │ Illustrates “vertical table” mappings. │ │ │ │ │ A “vertical table” refers to a technique where individual attributes of an │ │ │ │ │ object are stored as distinct rows in a table. The “vertical table” technique │ │ │ │ │ is used to persist objects which can have a varied set of attributes, at the │ │ │ │ │ expense of simple query control and brevity. It is commonly found in content/ │ │ │ │ │ document management systems in order to represent user-created structures │ │ │ │ │ @@ -506,25 +508,25 @@ │ │ │ │ │ │ │ │ │ │ q = (session.query(Animal). │ │ │ │ │ filter(Animal.facts.any( │ │ │ │ │ and_(AnimalFact.key == u'weasel-like', │ │ │ │ │ AnimalFact.value == True)))) │ │ │ │ │ print('weasel-like animals', q.all()) │ │ │ │ │ Listing of files: │ │ │ │ │ - * _d_i_c_t_l_i_k_e_-_p_o_l_y_m_o_r_p_h_i_c_._p_y - Mapping a polymorphic-valued vertical table as │ │ │ │ │ - a dictionary. │ │ │ │ │ -_d_i_c_t_l_i_k_e_._p_y - Mapping a vertical table as a dictionary. │ │ │ │ │ + * _d_i_c_t_l_i_k_e_._p_y - Mapping a vertical table as a dictionary. │ │ │ │ │ +_d_i_c_t_l_i_k_e_-_p_o_l_y_m_o_r_p_h_i_c_._p_y - Mapping a polymorphic-valued vertical table as a │ │ │ │ │ +dictionary. │ │ │ │ │ ********** IInnhheerriittaannccee MMaappppiinngg RReecciippeess_?¶ ********** │ │ │ │ │ ******** BBaassiicc IInnhheerriittaannccee MMaappppiinnggss_?¶ ******** │ │ │ │ │ Working examples of single-table, joined-table, and concrete-table inheritance │ │ │ │ │ as described in _M_a_p_p_i_n_g_ _C_l_a_s_s_ _I_n_h_e_r_i_t_a_n_c_e_ _H_i_e_r_a_r_c_h_i_e_s. │ │ │ │ │ Listing of files: │ │ │ │ │ * _c_o_n_c_r_e_t_e_._p_y - Concrete-table (table-per-class) inheritance example. │ │ │ │ │ -_s_i_n_g_l_e_._p_y - Single-table (table-per-hierarchy) inheritance example. │ │ │ │ │ _j_o_i_n_e_d_._p_y - Joined-table (table-per-subclass) inheritance example. │ │ │ │ │ +_s_i_n_g_l_e_._p_y - Single-table (table-per-hierarchy) inheritance example. │ │ │ │ │ ********** SSppeecciiaall AAPPIIss_?¶ ********** │ │ │ │ │ ******** AAttttrriibbuuttee IInnssttrruummeennttaattiioonn_?¶ ******** │ │ │ │ │ Examples illustrating modifications to SQLAlchemy’s attribute management │ │ │ │ │ system. │ │ │ │ │ Listing of files: │ │ │ │ │ * _l_i_s_t_e_n___f_o_r___e_v_e_n_t_s_._p_y - Illustrates how to attach events to all │ │ │ │ │ instrumented attributes and listen for change events.