--- /srv/reproducible-results/rbuild-debian/r-b-build.YV7lW8MU/b1/sqlalchemy_2.0.32+ds1-1_amd64.changes +++ /srv/reproducible-results/rbuild-debian/r-b-build.YV7lW8MU/b2/sqlalchemy_2.0.32+ds1-1_amd64.changes ├── Files │ @@ -1,5 +1,5 @@ │ │ - 8cd338149914843804f8967ce2f84e36 3956092 doc optional python-sqlalchemy-doc_2.0.32+ds1-1_all.deb │ + e2655530b0451cce3abc3f5d5eda452d 3955788 doc optional python-sqlalchemy-doc_2.0.32+ds1-1_all.deb │ 4ed8ef43a4dbe5d6e2d7c1872df204a8 1725376 debug optional python3-sqlalchemy-ext-dbgsym_2.0.32+ds1-1_amd64.deb │ 4109e8c0fb6f1d7c5ab91ddd11b01c50 201408 python optional python3-sqlalchemy-ext_2.0.32+ds1-1_amd64.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 13912 2024-08-23 07:52:58.000000 control.tar.xz │ │ --rw-r--r-- 0 0 0 3941988 2024-08-23 07:52:58.000000 data.tar.xz │ │ +-rw-r--r-- 0 0 0 3941684 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/orm/examples.html │ │ │ │┄ Ordering differences only │ │ │ │ @@ -319,29 +319,29 @@ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │Examples illustrating the asyncio engine feature of SQLAlchemy.
│ │ │ │Listing of files:
greenlet_orm.py - Illustrates use of the sqlalchemy.ext.asyncio.AsyncSession object │ │ │ │ -for asynchronous ORM use, including the optional run_sync() method.
│ │ │ │ -async_orm.py - Illustrates use of the sqlalchemy.ext.asyncio.AsyncSession
object
│ │ │ │ for asynchronous ORM use.
basic.py - Illustrates the asyncio engine / connection interface.
│ │ │ │ +greenlet_orm.py - Illustrates use of the sqlalchemy.ext.asyncio.AsyncSession object │ │ │ │ +for asynchronous ORM use, including the optional run_sync() method.
│ │ │ │gather_orm_statements.py - Illustrates how to run many statements concurrently using asyncio.gather()
│ │ │ │ along many asyncio database connections, merging ORM results into a single
│ │ │ │ AsyncSession
.
async_orm_writeonly.py - Illustrates using write only relationships for simpler handling │ │ │ │ of ORM collections under asyncio.
│ │ │ │basic.py - Illustrates the asyncio engine / connection interface.
│ │ │ │ +An example of persistence for a directed graph structure. The
│ │ │ │ graph is stored as a collection of edges, each referencing both a
│ │ │ │ @@ -378,37 +378,37 @@
│ │ │ │ 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:
table_per_related.py - 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.
│ │ │ │ -discriminator_on_association.py - 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.
│ │ │ │table_per_association.py - 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.
│ │ │ │ -generic_fk.py - 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.
│ │ │ │table_per_related.py - 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.
│ │ │ │ +table_per_association.py - 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.
│ │ │ │ +Illustrates the “materialized paths” pattern for hierarchical data using the │ │ │ │ SQLAlchemy ORM.
│ │ │ │ @@ -477,33 +477,33 @@ │ │ │ │See also
│ │ │ │ │ │ │ │Listing of files:
__main__.py - Allows the examples/performance package to be run as a script.
│ │ │ │ -large_resultsets.py - In this series of tests, we are looking at time to load a large number │ │ │ │ -of very small and simple rows.
│ │ │ │ -single_inserts.py - 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.
│ │ │ │short_selects.py - This series of tests illustrates different ways to SELECT a single │ │ │ │ record by primary key
│ │ │ │bulk_inserts.py - This series of tests illustrates different ways to INSERT a large number │ │ │ │ of rows in bulk.
│ │ │ │bulk_updates.py - 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)
│ │ │ │__main__.py - Allows the examples/performance package to be run as a script.
│ │ │ │ +large_resultsets.py - In this series of tests, we are looking at time to load a large number │ │ │ │ +of very small and simple rows.
│ │ │ │ +This is the default form of run:
│ │ │ │$ python -m examples.performance single_inserts
│ │ │ │ @@ -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:
versioned_rows.py - 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.
│ │ │ │ +versioned_update_old_row.py - Illustrates the same UPDATE into INSERT technique of versioned_rows.py
,
│ │ │ │ but also emits an UPDATE on the old row to affect a change in timestamp.
│ │ │ │ Also includes a SessionEvents.do_orm_execute()
hook to limit queries
│ │ │ │ to only the most recent version.
versioned_rows_w_versionid.py - 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.
│ │ │ │versioned_map.py - A variant of the versioned_rows example built around the │ │ │ │ concept of a “vertical table” structure, like those illustrated in │ │ │ │ Vertical Attribute Mapping examples.
│ │ │ │versioned_rows.py - 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.
│ │ │ │ -Illustrates “vertical table” mappings.
│ │ │ │ @@ -837,20 +837,20 @@ │ │ │ │ system. │ │ │ │Listing of files:
active_column_defaults.py - Illustrates use of the AttributeEvents.init_scalar()
│ │ │ │ event, in conjunction with Core column defaults to provide
│ │ │ │ ORM objects that automatically produce the default value
│ │ │ │ when an un-set attribute is accessed.
custom_management.py - Illustrates customized class instrumentation, using
│ │ │ │ -the sqlalchemy.ext.instrumentation
extension package.
listen_for_events.py - Illustrates how to attach events to all instrumented attributes │ │ │ │ and listen for change events.
│ │ │ │custom_management.py - Illustrates customized class instrumentation, using
│ │ │ │ +the sqlalchemy.ext.instrumentation
extension package.
A basic example of using the SQLAlchemy Sharding API. │ │ │ │ Sharding refers to horizontally scaling data across multiple │ │ │ │ @@ -881,22 +881,22 @@ │ │ │ │ more plain-spoken alternative, the “distinct entity” approach │ │ │ │ is a simple method of assigning objects to different tables (and potentially │ │ │ │ database nodes) in an explicit way - described on the wiki at │ │ │ │ EntityName.
│ │ │ │Listing of files:
separate_databases.py - Illustrates sharding using distinct SQLite databases.
│ │ │ │separate_tables.py - Illustrates sharding using a single SQLite database, that will however │ │ │ │ +have multiple tables using a naming convention.
│ │ │ │ +separate_schema_translates.py - Illustrates sharding using a single database with multiple schemas, │ │ │ │ where a different “schema_translates_map” can be used for each shard.
│ │ │ │asyncio.py - Illustrates sharding API used with asyncio.
│ │ │ │separate_tables.py - Illustrates sharding using a single SQLite database, that will however │ │ │ │ -have multiple tables using a naming convention.
│ │ │ │ -