{"diffoscope-json-version": 1, "source1": "/srv/reproducible-results/rbuild-debian/r-b-build.CtNO9pZ8/b1/sqlalchemy_2.0.32+ds1-1_armhf.changes", "source2": "/srv/reproducible-results/rbuild-debian/r-b-build.CtNO9pZ8/b2/sqlalchemy_2.0.32+ds1-1_armhf.changes", "unified_diff": null, "details": [{"source1": "Files", "source2": "Files", "unified_diff": "@@ -1,5 +1,5 @@\n \n- c5a31f72c3839e639a29d56d1717eed3 3956272 doc optional python-sqlalchemy-doc_2.0.32+ds1-1_all.deb\n+ 324ad48003c07dbdc32d1c960368c38f 3956332 doc optional python-sqlalchemy-doc_2.0.32+ds1-1_all.deb\n 88c3d6454e6920ef9afc0555ecef5c5d 901840 debug optional python3-sqlalchemy-ext-dbgsym_2.0.32+ds1-1_armhf.deb\n 9b135e646e1d03381b2c4aa72571f002 123464 python optional python3-sqlalchemy-ext_2.0.32+ds1-1_armhf.deb\n 0955e7f12a0b73c1ab8406c88fbab7d2 1196068 python optional python3-sqlalchemy_2.0.32+ds1-1_all.deb\n"}, {"source1": "python-sqlalchemy-doc_2.0.32+ds1-1_all.deb", "source2": "python-sqlalchemy-doc_2.0.32+ds1-1_all.deb", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -1,3 +1,3 @@\n -rw-r--r-- 0 0 0 4 2024-08-23 07:52:58.000000 debian-binary\n -rw-r--r-- 0 0 0 13924 2024-08-23 07:52:58.000000 control.tar.xz\n--rw-r--r-- 0 0 0 3942156 2024-08-23 07:52:58.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 3942216 2024-08-23 07:52:58.000000 data.tar.xz\n"}, {"source1": "control.tar.xz", "source2": "control.tar.xz", "unified_diff": null, "details": [{"source1": "control.tar", "source2": "control.tar", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "comments": ["Files differ"], "unified_diff": null}]}]}]}, {"source1": "data.tar.xz", "source2": "data.tar.xz", "unified_diff": null, "details": [{"source1": "data.tar", "source2": "data.tar", "unified_diff": null, "details": [{"source1": "./usr/share/doc/python-sqlalchemy-doc/html/changelog/changelog_14.html", "source2": "./usr/share/doc/python-sqlalchemy-doc/html/changelog/changelog_14.html", "unified_diff": "@@ -9239,15 +9239,22 @@\n
\n

See also

\n

RowProxy is no longer a \u201cproxy\u201d; is now called Row and behaves like an enhanced named tuple

\n
\n

References: #4710

\n

\n \n-
  • [engine] [change] [performance] [py3k] \u00b6

    Disabled the \u201cunicode returns\u201d check that runs on dialect startup when\n+

  • [engine] [performance] \u00b6

    The pool \u201cpre-ping\u201d feature has been refined to not invoke for a DBAPI\n+connection that was just opened in the same checkout operation. pre ping\n+only applies to a DBAPI connection that\u2019s been checked into the pool\n+and is being checked out again.

    \n+

    References: #4524

    \n+

    \n+
  • \n+
  • [engine] [performance] [change] [py3k] \u00b6

    Disabled the \u201cunicode returns\u201d check that runs on dialect startup when\n running under Python 3, which for many years has occurred in order to test\n the current DBAPI\u2019s behavior for whether or not it returns Python Unicode\n or Py2K strings for the VARCHAR and NVARCHAR datatypes. The check still\n occurs by default under Python 2, however the mechanism to test the\n behavior will be removed in SQLAlchemy 2.0 when Python 2 support is also\n removed.

    \n

    This logic was very effective when it was needed, however now that Python 3\n@@ -9258,21 +9265,14 @@\n dialect flags by setting the dialect level flag returns_unicode_strings\n to one of String.RETURNS_CONDITIONAL or\n String.RETURNS_BYTES, both of which will enable Unicode conversion\n even under Python 3.

    \n

    References: #5315

    \n

    \n
  • \n-
  • [engine] [performance] \u00b6

    The pool \u201cpre-ping\u201d feature has been refined to not invoke for a DBAPI\n-connection that was just opened in the same checkout operation. pre ping\n-only applies to a DBAPI connection that\u2019s been checked into the pool\n-and is being checked out again.

    \n-

    References: #4524

    \n-

    \n-
  • \n
  • [engine] [bug] \u00b6

    Revised the Connection.execution_options.schema_translate_map\n feature such that the processing of the SQL statement to receive a specific\n schema name occurs within the execution phase of the statement, rather than\n at the compile phase. This is to support the statement being efficiently\n cached. Previously, the current schema being rendered into the statement\n for a particular run would be considered as part of the cache key itself,\n meaning that for a run against hundreds of schemas, there would be hundreds\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -6355,15 +6355,21 @@\n returned by the ResultProxy is now the LegacyRow subclass, which maintains\n mapping/tuple hybrid behavior, however the base _\bR_\bo_\bw class now behaves more\n fully like a named tuple.\n See also\n _\bR_\bo_\bw_\bP_\br_\bo_\bx_\by_\b _\bi_\bs_\b _\bn_\bo_\b _\bl_\bo_\bn_\bg_\be_\br_\b _\ba_\b _\b\u201c_\bp_\br_\bo_\bx_\by_\b\u201d_\b;_\b _\bi_\bs_\b _\bn_\bo_\bw_\b _\bc_\ba_\bl_\bl_\be_\bd_\b _\bR_\bo_\bw_\b _\ba_\bn_\bd_\b _\bb_\be_\bh_\ba_\bv_\be_\bs_\b _\bl_\bi_\bk_\be_\b _\ba_\bn_\b _\be_\bn_\bh_\ba_\bn_\bc_\be_\bd\n _\bn_\ba_\bm_\be_\bd_\b _\bt_\bu_\bp_\bl_\be\n References: _\b#_\b4_\b7_\b1_\b0\n-[\b[e\ben\bng\bgi\bin\bne\be]\b] [\b[c\bch\bha\ban\bng\bge\be]\b] [\b[p\bpe\ber\brf\bfo\bor\brm\bma\ban\bnc\bce\be]\b] [\b[p\bpy\by3\b3k\bk]\b] _\b\u00b6\n+[\b[e\ben\bng\bgi\bin\bne\be]\b] [\b[p\bpe\ber\brf\bfo\bor\brm\bma\ban\bnc\bce\be]\b] _\b\u00b6\n+The pool \u201cpre-ping\u201d feature has been refined to not invoke for a DBAPI\n+connection that was just opened in the same checkout operation. pre ping only\n+applies to a DBAPI connection that\u2019s been checked into the pool and is being\n+checked out again.\n+References: _\b#_\b4_\b5_\b2_\b4\n+[\b[e\ben\bng\bgi\bin\bne\be]\b] [\b[p\bpe\ber\brf\bfo\bor\brm\bma\ban\bnc\bce\be]\b] [\b[c\bch\bha\ban\bng\bge\be]\b] [\b[p\bpy\by3\b3k\bk]\b] _\b\u00b6\n Disabled the \u201cunicode returns\u201d check that runs on dialect startup when running\n under Python 3, which for many years has occurred in order to test the current\n DBAPI\u2019s behavior for whether or not it returns Python Unicode or Py2K strings\n for the VARCHAR and NVARCHAR datatypes. The check still occurs by default under\n Python 2, however the mechanism to test the behavior will be removed in\n SQLAlchemy 2.0 when Python 2 support is also removed.\n This logic was very effective when it was needed, however now that Python 3 is\n@@ -6371,20 +6377,14 @@\n datatypes. In the unlikely case that a third party DBAPI does not support this,\n the conversion logic within _\bS_\bt_\br_\bi_\bn_\bg is still available and the third party\n dialect may specify this in its upfront dialect flags by setting the dialect\n level flag returns_unicode_strings to one of String.RETURNS_CONDITIONAL or\n String.RETURNS_BYTES, both of which will enable Unicode conversion even under\n Python 3.\n References: _\b#_\b5_\b3_\b1_\b5\n-[\b[e\ben\bng\bgi\bin\bne\be]\b] [\b[p\bpe\ber\brf\bfo\bor\brm\bma\ban\bnc\bce\be]\b] _\b\u00b6\n-The pool \u201cpre-ping\u201d feature has been refined to not invoke for a DBAPI\n-connection that was just opened in the same checkout operation. pre ping only\n-applies to a DBAPI connection that\u2019s been checked into the pool and is being\n-checked out again.\n-References: _\b#_\b4_\b5_\b2_\b4\n [\b[e\ben\bng\bgi\bin\bne\be]\b] [\b[b\bbu\bug\bg]\b] _\b\u00b6\n Revised the _\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn_\b._\be_\bx_\be_\bc_\bu_\bt_\bi_\bo_\bn_\b__\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bs_\bc_\bh_\be_\bm_\ba_\b__\bt_\br_\ba_\bn_\bs_\bl_\ba_\bt_\be_\b__\bm_\ba_\bp feature such that\n the processing of the SQL statement to receive a specific schema name occurs\n within the execution phase of the statement, rather than at the compile phase.\n This is to support the statement being efficiently cached. Previously, the\n current schema being rendered into the statement for a particular run would be\n considered as part of the cache key itself, meaning that for a run against\n"}]}, {"source1": "./usr/share/doc/python-sqlalchemy-doc/html/changelog/changelog_20.html", "source2": "./usr/share/doc/python-sqlalchemy-doc/html/changelog/changelog_20.html", "unified_diff": "@@ -7935,31 +7935,31 @@\n

    \n
  • \n
  • [sqlite] [usecase] \u00b6

    Added RETURNING support for the SQLite dialect. SQLite supports RETURNING\n since version 3.35.

    \n

    References: #6195

    \n

    \n
  • \n-
  • [sqlite] [usecase] [performance] \u00b6

    SQLite datetime, date, and time datatypes now use Python standard lib\n+

  • [sqlite] [usecase] \u00b6

    The SQLite dialect now supports UPDATE..FROM syntax, for UPDATE statements\n+that may refer to additional tables within the WHERE criteria of the\n+statement without the need to use subqueries. This syntax is invoked\n+automatically when using the Update construct when more than\n+one table or other entity or selectable is used.

    \n+

    References: #7185

    \n+

    \n+
  • \n+
  • [sqlite] [performance] [usecase] \u00b6

    SQLite datetime, date, and time datatypes now use Python standard lib\n fromisoformat() methods in order to parse incoming datetime, date, and\n time string values. This improves performance vs. the previous regular\n expression-based approach, and also automatically accommodates for datetime\n and time formats that contain either a six-digit \u201cmicroseconds\u201d format or a\n three-digit \u201cmilliseconds\u201d format.

    \n

    References: #7029

    \n

    \n
  • \n-
  • [sqlite] [usecase] \u00b6

    The SQLite dialect now supports UPDATE..FROM syntax, for UPDATE statements\n-that may refer to additional tables within the WHERE criteria of the\n-statement without the need to use subqueries. This syntax is invoked\n-automatically when using the Update construct when more than\n-one table or other entity or selectable is used.

    \n-

    References: #7185

    \n-

    \n-
  • \n
  • [sqlite] [bug] \u00b6

    Removed the warning that emits from the Numeric type about\n DBAPIs not supporting Decimal values natively. This warning was oriented\n towards SQLite, which does not have any real way without additional\n extensions or workarounds of handling precision numeric values more than 15\n significant digits as it only uses floating point math to represent\n numbers. As this is a known and documented limitation in SQLite itself, and\n not a quirk of the pysqlite driver, there\u2019s no need for SQLAlchemy to warn\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -5471,29 +5471,29 @@\n See also\n _\bR_\be_\bf_\bl_\be_\bc_\bt_\bi_\bn_\bg_\b _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b _\bs_\bc_\bh_\be_\bm_\ba_\b _\bt_\ba_\bb_\bl_\be_\bs\n References: _\b#_\b8_\b2_\b3_\b4\n [\b[s\bsq\bql\bli\bit\bte\be]\b] [\b[u\bus\bse\bec\bca\bas\bse\be]\b] _\b\u00b6\n Added RETURNING support for the SQLite dialect. SQLite supports RETURNING since\n version 3.35.\n References: _\b#_\b6_\b1_\b9_\b5\n-[\b[s\bsq\bql\bli\bit\bte\be]\b] [\b[u\bus\bse\bec\bca\bas\bse\be]\b] [\b[p\bpe\ber\brf\bfo\bor\brm\bma\ban\bnc\bce\be]\b] _\b\u00b6\n-SQLite datetime, date, and time datatypes now use Python standard lib\n-fromisoformat() methods in order to parse incoming datetime, date, and time\n-string values. This improves performance vs. the previous regular expression-\n-based approach, and also automatically accommodates for datetime and time\n-formats that contain either a six-digit \u201cmicroseconds\u201d format or a three-digit\n-\u201cmilliseconds\u201d format.\n-References: _\b#_\b7_\b0_\b2_\b9\n [\b[s\bsq\bql\bli\bit\bte\be]\b] [\b[u\bus\bse\bec\bca\bas\bse\be]\b] _\b\u00b6\n The SQLite dialect now supports UPDATE..FROM syntax, for UPDATE statements that\n may refer to additional tables within the WHERE criteria of the statement\n without the need to use subqueries. This syntax is invoked automatically when\n using the _\bU_\bp_\bd_\ba_\bt_\be construct when more than one table or other entity or\n selectable is used.\n References: _\b#_\b7_\b1_\b8_\b5\n+[\b[s\bsq\bql\bli\bit\bte\be]\b] [\b[p\bpe\ber\brf\bfo\bor\brm\bma\ban\bnc\bce\be]\b] [\b[u\bus\bse\bec\bca\bas\bse\be]\b] _\b\u00b6\n+SQLite datetime, date, and time datatypes now use Python standard lib\n+fromisoformat() methods in order to parse incoming datetime, date, and time\n+string values. This improves performance vs. the previous regular expression-\n+based approach, and also automatically accommodates for datetime and time\n+formats that contain either a six-digit \u201cmicroseconds\u201d format or a three-digit\n+\u201cmilliseconds\u201d format.\n+References: _\b#_\b7_\b0_\b2_\b9\n [\b[s\bsq\bql\bli\bit\bte\be]\b] [\b[b\bbu\bug\bg]\b] _\b\u00b6\n Removed the warning that emits from the _\bN_\bu_\bm_\be_\br_\bi_\bc type about DBAPIs not\n supporting Decimal values natively. This warning was oriented towards SQLite,\n which does not have any real way without additional extensions or workarounds\n of handling precision numeric values more than 15 significant digits as it only\n uses floating point math to represent numbers. As this is a known and\n documented limitation in SQLite itself, and not a quirk of the pysqlite driver,\n"}]}, {"source1": "./usr/share/doc/python-sqlalchemy-doc/html/orm/examples.html", "source2": "./usr/share/doc/python-sqlalchemy-doc/html/orm/examples.html", "comments": ["Ordering differences only"], "unified_diff": "@@ -299,42 +299,42 @@\n \n

    \n

    Associations\u00b6

    \n

    Examples illustrating the usage of the \u201cassociation object\u201d pattern,\n where an intermediary class mediates the relationship between two\n classes that are associated in a many-to-many pattern.

    \n

    Listing of files:

    \n

    \n
    \n
    \n

    Asyncio Integration\u00b6

    \n

    Examples illustrating the asyncio engine feature of SQLAlchemy.

    \n

    Listing of files:

    \n

    \n
    \n \n@@ -817,40 +817,40 @@\n
    \n

    Basic Inheritance Mappings\u00b6

    \n

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

    \n

    Listing of files:

    \n

    \n
    \n \n
    \n

    Special APIs\u00b6

    \n
    \n

    Attribute Instrumentation\u00b6

    \n

    Examples illustrating modifications to SQLAlchemy\u2019s attribute management\n system.

    \n

    Listing of files:

    \n

    \n
    \n
    \n

    Horizontal Sharding\u00b6

    \n

    A basic example of using the SQLAlchemy Sharding API.\n Sharding refers to horizontally scaling data across multiple\n@@ -884,19 +884,19 @@\n EntityName.

    \n

    Listing of files:

      \n
    • separate_databases.py - Illustrates sharding using distinct SQLite databases.

      \n

    • \n
    • separate_tables.py - Illustrates sharding using a single SQLite database, that will however\n have multiple tables using a naming convention.

      \n

    • \n+
    • asyncio.py - Illustrates sharding API used with asyncio.

      \n+

    • \n
    • separate_schema_translates.py - Illustrates sharding using a single database with multiple schemas,\n where a different \u201cschema_translates_map\u201d can be used for each shard.

      \n

    • \n-
    • asyncio.py - Illustrates sharding API used with asyncio.

      \n-

    • \n
    \n

    \n
    \n
    \n
    \n

    Extending the ORM\u00b6

    \n
    \n@@ -907,19 +907,19 @@\n object.

    \n

    Examples include demonstrations of the with_loader_criteria()\n option as well as the SessionEvents.do_orm_execute() hook.

    \n

    As of SQLAlchemy 1.4, the Query construct is unified\n with the Select construct, so that these two objects\n are mostly the same.

    \n

    Listing of files:

      \n-
    • filter_public.py - Illustrates a global criteria applied to entities of a particular type.

      \n-

    • \n
    • temporal_range.py - Illustrates a custom per-query criteria that will be applied\n to selected entities.

      \n

    • \n+
    • filter_public.py - Illustrates a global criteria applied to entities of a particular type.

      \n+

    • \n
    \n

    \n
    \n
    \n

    Dogpile Caching\u00b6

    \n

    Illustrates how to embed\n dogpile.cache\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -96,32 +96,33 @@\n Listing of files:\n * _\ba_\bd_\bj_\ba_\bc_\be_\bn_\bc_\by_\b__\bl_\bi_\bs_\bt_\b._\bp_\by\n *\b**\b**\b**\b* A\bAs\bss\bso\boc\bci\bia\bat\bti\bio\bon\bns\bs_\b?\b\u00b6 *\b**\b**\b**\b*\n Examples illustrating the usage of the \u201cassociation object\u201d pattern, where an\n intermediary class mediates the relationship between two classes that are\n associated in a many-to-many pattern.\n Listing of files:\n- * _\bb_\ba_\bs_\bi_\bc_\b__\ba_\bs_\bs_\bo_\bc_\bi_\ba_\bt_\bi_\bo_\bn_\b._\bp_\by - Illustrate a many-to-many relationship between an\n- \u201cOrder\u201d and a collection of \u201cItem\u201d objects, associating a purchase price\n- with each via an association object called \u201cOrderItem\u201d\n+ * _\bd_\bi_\bc_\bt_\b__\bo_\bf_\b__\bs_\be_\bt_\bs_\b__\bw_\bi_\bt_\bh_\b__\bd_\be_\bf_\ba_\bu_\bl_\bt_\b._\bp_\by - An advanced association proxy example\n+ which illustrates nesting of association proxies to produce multi-level\n+ Python collections, in this case a dictionary with string keys and sets\n+ of integers as values, which conceal the underlying mapped classes.\n+_\bb_\ba_\bs_\bi_\bc_\b__\ba_\bs_\bs_\bo_\bc_\bi_\ba_\bt_\bi_\bo_\bn_\b._\bp_\by - Illustrate a many-to-many relationship between an\n+\u201cOrder\u201d and a collection of \u201cItem\u201d objects, associating a purchase price with\n+each via an association object called \u201cOrderItem\u201d\n _\bp_\br_\bo_\bx_\bi_\be_\bd_\b__\ba_\bs_\bs_\bo_\bc_\bi_\ba_\bt_\bi_\bo_\bn_\b._\bp_\by - Same example as basic_association, adding in usage of\n _\bs_\bq_\bl_\ba_\bl_\bc_\bh_\be_\bm_\by_\b._\be_\bx_\bt_\b._\ba_\bs_\bs_\bo_\bc_\bi_\ba_\bt_\bi_\bo_\bn_\bp_\br_\bo_\bx_\by to make explicit references to OrderItem\n optional.\n-_\bd_\bi_\bc_\bt_\b__\bo_\bf_\b__\bs_\be_\bt_\bs_\b__\bw_\bi_\bt_\bh_\b__\bd_\be_\bf_\ba_\bu_\bl_\bt_\b._\bp_\by - An advanced association proxy example which\n-illustrates nesting of association proxies to produce multi-level Python\n-collections, in this case a dictionary with string keys and sets of integers as\n-values, which conceal the underlying mapped classes.\n *\b**\b**\b**\b* A\bAs\bsy\byn\bnc\bci\bio\bo I\bIn\bnt\bte\beg\bgr\bra\bat\bti\bio\bon\bn_\b?\b\u00b6 *\b**\b**\b**\b*\n Examples illustrating the asyncio engine feature of SQLAlchemy.\n Listing of files:\n- * _\ba_\bs_\by_\bn_\bc_\b__\bo_\br_\bm_\b__\bw_\br_\bi_\bt_\be_\bo_\bn_\bl_\by_\b._\bp_\by - Illustrates using w\bwr\bri\bit\bte\be o\bon\bnl\bly\by r\bre\bel\bla\bat\bti\bio\bon\bns\bsh\bhi\bip\bps\bs for\n- simpler handling of ORM collections under asyncio.\n-_\bg_\br_\be_\be_\bn_\bl_\be_\bt_\b__\bo_\br_\bm_\b._\bp_\by - Illustrates use of the sqlalchemy.ext.asyncio.AsyncSession\n-object for asynchronous ORM use, including the optional run_sync() method.\n+ * _\bg_\br_\be_\be_\bn_\bl_\be_\bt_\b__\bo_\br_\bm_\b._\bp_\by - Illustrates use of the\n+ sqlalchemy.ext.asyncio.AsyncSession object for asynchronous ORM use,\n+ including the optional run_sync() method.\n _\bb_\ba_\bs_\bi_\bc_\b._\bp_\by - Illustrates the asyncio engine / connection interface.\n+_\ba_\bs_\by_\bn_\bc_\b__\bo_\br_\bm_\b__\bw_\br_\bi_\bt_\be_\bo_\bn_\bl_\by_\b._\bp_\by - Illustrates using w\bwr\bri\bit\bte\be o\bon\bnl\bly\by r\bre\bel\bla\bat\bti\bio\bon\bns\bsh\bhi\bip\bps\bs for simpler\n+handling of ORM collections under asyncio.\n _\ba_\bs_\by_\bn_\bc_\b__\bo_\br_\bm_\b._\bp_\by - Illustrates use of the sqlalchemy.ext.asyncio.AsyncSession\n object for asynchronous ORM use.\n _\bg_\ba_\bt_\bh_\be_\br_\b__\bo_\br_\bm_\b__\bs_\bt_\ba_\bt_\be_\bm_\be_\bn_\bt_\bs_\b._\bp_\by - Illustrates how to run many statements concurrently\n using asyncio.gather() along many asyncio database connections, merging ORM\n results into a single AsyncSession.\n *\b**\b**\b**\b* D\bDi\bir\bre\bec\bct\bte\bed\bd G\bGr\bra\bap\bph\bhs\bs_\b?\b\u00b6 *\b**\b**\b**\b*\n An example of persistence for a directed graph structure. The graph is stored\n@@ -220,29 +221,29 @@\n $ python -m examples.performance bulk_inserts \\\n --dburl mysql+mysqldb://scott:tiger@localhost/test \\\n --profile --num 1000\n See also\n _\bH_\bo_\bw_\b _\bc_\ba_\bn_\b _\bI_\b _\bp_\br_\bo_\bf_\bi_\bl_\be_\b _\ba_\b _\bS_\bQ_\bL_\bA_\bl_\bc_\bh_\be_\bm_\by_\b _\bp_\bo_\bw_\be_\br_\be_\bd_\b _\ba_\bp_\bp_\bl_\bi_\bc_\ba_\bt_\bi_\bo_\bn_\b?\n *\b**\b**\b* F\bFi\bil\ble\be L\bLi\bis\bst\bti\bin\bng\bg_\b?\b\u00b6 *\b**\b**\b*\n Listing of files:\n- * _\bs_\bi_\bn_\bg_\bl_\be_\b__\bi_\bn_\bs_\be_\br_\bt_\bs_\b._\bp_\by - In this series of tests, we\u2019re looking at a method\n- that inserts a row within a distinct transaction, and afterwards returns\n- to essentially a \u201cclosed\u201d state. This would be analogous to an API call\n- that starts up a database connection, inserts the row, commits and\n- closes.\n-_\bs_\bh_\bo_\br_\bt_\b__\bs_\be_\bl_\be_\bc_\bt_\bs_\b._\bp_\by - This series of tests illustrates different ways to SELECT a\n-single record by primary key\n+ * _\b__\b__\bm_\ba_\bi_\bn_\b__\b__\b._\bp_\by - Allows the examples/performance package to be run as a\n+ script.\n+_\bs_\bi_\bn_\bg_\bl_\be_\b__\bi_\bn_\bs_\be_\br_\bt_\bs_\b._\bp_\by - In this series of tests, we\u2019re looking at a method that\n+inserts a row within a distinct transaction, and afterwards returns to\n+essentially a \u201cclosed\u201d state. This would be analogous to an API call that\n+starts up a database connection, inserts the row, commits and closes.\n _\bb_\bu_\bl_\bk_\b__\bu_\bp_\bd_\ba_\bt_\be_\bs_\b._\bp_\by - This series of tests will illustrate different ways to UPDATE\n a large number of rows in bulk (under construction! there\u2019s just one test at\n the moment)\n-_\bl_\ba_\br_\bg_\be_\b__\br_\be_\bs_\bu_\bl_\bt_\bs_\be_\bt_\bs_\b._\bp_\by - In this series of tests, we are looking at time to load a\n-large number of very small and simple rows.\n-_\b__\b__\bm_\ba_\bi_\bn_\b__\b__\b._\bp_\by - Allows the examples/performance package to be run as a script.\n _\bb_\bu_\bl_\bk_\b__\bi_\bn_\bs_\be_\br_\bt_\bs_\b._\bp_\by - This series of tests illustrates different ways to INSERT a\n large number of rows in bulk.\n+_\bl_\ba_\br_\bg_\be_\b__\br_\be_\bs_\bu_\bl_\bt_\bs_\be_\bt_\bs_\b._\bp_\by - In this series of tests, we are looking at time to load a\n+large number of very small and simple rows.\n+_\bs_\bh_\bo_\br_\bt_\b__\bs_\be_\bl_\be_\bc_\bt_\bs_\b._\bp_\by - This series of tests illustrates different ways to SELECT a\n+single record by primary key\n *\b**\b**\b* R\bRu\bun\bnn\bni\bin\bng\bg a\bal\bll\bl t\bte\bes\bst\bts\bs w\bwi\bit\bth\bh t\bti\bim\bme\be_\b?\b\u00b6 *\b**\b**\b*\n This is the default form of run:\n $ python -m examples.performance single_inserts\n Tests to run: test_orm_commit, test_bulk_save,\n test_bulk_insert_dictionaries, test_core,\n test_core_query_caching, test_dbapi_raw_w_connect,\n test_dbapi_raw_w_pool\n@@ -476,20 +477,20 @@\n technique of versioned_rows.py, but also emits an UPDATE on the o\bol\bld\bd row\n to affect a change in timestamp. Also includes a\n _\bS_\be_\bs_\bs_\bi_\bo_\bn_\bE_\bv_\be_\bn_\bt_\bs_\b._\bd_\bo_\b__\bo_\br_\bm_\b__\be_\bx_\be_\bc_\bu_\bt_\be_\b(_\b) hook to limit queries to only the most\n recent version.\n _\bv_\be_\br_\bs_\bi_\bo_\bn_\be_\bd_\b__\bm_\ba_\bp_\b._\bp_\by - A variant of the versioned_rows example built around the\n concept of a \u201cvertical table\u201d structure, like those illustrated in _\bV_\be_\br_\bt_\bi_\bc_\ba_\bl\n _\bA_\bt_\bt_\br_\bi_\bb_\bu_\bt_\be_\b _\bM_\ba_\bp_\bp_\bi_\bn_\bg examples.\n-_\bv_\be_\br_\bs_\bi_\bo_\bn_\be_\bd_\b__\br_\bo_\bw_\bs_\b._\bp_\by - Illustrates a method to intercept changes on objects,\n-turning an UPDATE statement on a single row into an INSERT statement, so that a\n-new row is inserted with the new data, keeping the old row intact.\n _\bv_\be_\br_\bs_\bi_\bo_\bn_\be_\bd_\b__\br_\bo_\bw_\bs_\b__\bw_\b__\bv_\be_\br_\bs_\bi_\bo_\bn_\bi_\bd_\b._\bp_\by - Illustrates a method to intercept changes on\n objects, turning an UPDATE statement on a single row into an INSERT statement,\n so that a new row is inserted with the new data, keeping the old row intact.\n+_\bv_\be_\br_\bs_\bi_\bo_\bn_\be_\bd_\b__\br_\bo_\bw_\bs_\b._\bp_\by - Illustrates a method to intercept changes on objects,\n+turning an UPDATE statement on a single row into an INSERT statement, so that a\n+new row is inserted with the new data, keeping the old row intact.\n *\b**\b**\b**\b* V\bVe\ber\brt\bti\bic\bca\bal\bl A\bAt\btt\btr\bri\bib\bbu\but\bte\be M\bMa\bap\bpp\bpi\bin\bng\bg_\b?\b\u00b6 *\b**\b**\b**\b*\n Illustrates \u201cvertical table\u201d mappings.\n A \u201cvertical table\u201d refers to a technique where individual attributes of an\n object are stored as distinct rows in a table. The \u201cvertical table\u201d technique\n is used to persist objects which can have a varied set of attributes, at the\n expense of simple query control and brevity. It is commonly found in content/\n document management systems in order to represent user-created structures\n@@ -517,28 +518,28 @@\n dictionary.\n *\b**\b**\b**\b**\b* I\bIn\bnh\bhe\ber\bri\bit\bta\ban\bnc\bce\be M\bMa\bap\bpp\bpi\bin\bng\bg R\bRe\bec\bci\bip\bpe\bes\bs_\b?\b\u00b6 *\b**\b**\b**\b**\b*\n *\b**\b**\b**\b* B\bBa\bas\bsi\bic\bc I\bIn\bnh\bhe\ber\bri\bit\bta\ban\bnc\bce\be M\bMa\bap\bpp\bpi\bin\bng\bgs\bs_\b?\b\u00b6 *\b**\b**\b**\b*\n Working examples of single-table, joined-table, and concrete-table inheritance\n as described in _\bM_\ba_\bp_\bp_\bi_\bn_\bg_\b _\bC_\bl_\ba_\bs_\bs_\b _\bI_\bn_\bh_\be_\br_\bi_\bt_\ba_\bn_\bc_\be_\b _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\be_\bs.\n Listing of files:\n * _\bc_\bo_\bn_\bc_\br_\be_\bt_\be_\b._\bp_\by - Concrete-table (table-per-class) inheritance example.\n-_\bj_\bo_\bi_\bn_\be_\bd_\b._\bp_\by - Joined-table (table-per-subclass) inheritance example.\n _\bs_\bi_\bn_\bg_\bl_\be_\b._\bp_\by - Single-table (table-per-hierarchy) inheritance example.\n+_\bj_\bo_\bi_\bn_\be_\bd_\b._\bp_\by - Joined-table (table-per-subclass) inheritance example.\n *\b**\b**\b**\b**\b* S\bSp\bpe\bec\bci\bia\bal\bl A\bAP\bPI\bIs\bs_\b?\b\u00b6 *\b**\b**\b**\b**\b*\n *\b**\b**\b**\b* A\bAt\btt\btr\bri\bib\bbu\but\bte\be I\bIn\bns\bst\btr\bru\bum\bme\ben\bnt\bta\bat\bti\bio\bon\bn_\b?\b\u00b6 *\b**\b**\b**\b*\n Examples illustrating modifications to SQLAlchemy\u2019s attribute management\n system.\n Listing of files:\n- * _\bl_\bi_\bs_\bt_\be_\bn_\b__\bf_\bo_\br_\b__\be_\bv_\be_\bn_\bt_\bs_\b._\bp_\by - Illustrates how to attach events to all\n- instrumented attributes and listen for change events.\n+ * _\bc_\bu_\bs_\bt_\bo_\bm_\b__\bm_\ba_\bn_\ba_\bg_\be_\bm_\be_\bn_\bt_\b._\bp_\by - Illustrates customized class instrumentation,\n+ using the _\bs_\bq_\bl_\ba_\bl_\bc_\bh_\be_\bm_\by_\b._\be_\bx_\bt_\b._\bi_\bn_\bs_\bt_\br_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn extension package.\n+_\bl_\bi_\bs_\bt_\be_\bn_\b__\bf_\bo_\br_\b__\be_\bv_\be_\bn_\bt_\bs_\b._\bp_\by - Illustrates how to attach events to all instrumented\n+attributes and listen for change events.\n _\ba_\bc_\bt_\bi_\bv_\be_\b__\bc_\bo_\bl_\bu_\bm_\bn_\b__\bd_\be_\bf_\ba_\bu_\bl_\bt_\bs_\b._\bp_\by - Illustrates use of the _\bA_\bt_\bt_\br_\bi_\bb_\bu_\bt_\be_\bE_\bv_\be_\bn_\bt_\bs_\b._\bi_\bn_\bi_\bt_\b__\bs_\bc_\ba_\bl_\ba_\br\n _\b(_\b) event, in conjunction with Core column defaults to provide ORM objects that\n automatically produce the default value when an un-set attribute is accessed.\n-_\bc_\bu_\bs_\bt_\bo_\bm_\b__\bm_\ba_\bn_\ba_\bg_\be_\bm_\be_\bn_\bt_\b._\bp_\by - Illustrates customized class instrumentation, using the\n-_\bs_\bq_\bl_\ba_\bl_\bc_\bh_\be_\bm_\by_\b._\be_\bx_\bt_\b._\bi_\bn_\bs_\bt_\br_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn extension package.\n *\b**\b**\b**\b* H\bHo\bor\bri\biz\bzo\bon\bnt\bta\bal\bl S\bSh\bha\bar\brd\bdi\bin\bng\bg_\b?\b\u00b6 *\b**\b**\b**\b*\n A basic example of using the SQLAlchemy Sharding API. Sharding refers to\n horizontally scaling data across multiple databases.\n The basic components of a \u201csharded\u201d mapping are:\n * multiple _\bE_\bn_\bg_\bi_\bn_\be instances, each assigned a \u201cshard id\u201d. These _\bE_\bn_\bg_\bi_\bn_\be\n instances may refer to different databases, or different schemas /\n accounts within the same database, or they can even be differentiated\n@@ -563,32 +564,32 @@\n objects to different tables (and potentially database nodes) in an explicit way\n - described on the wiki at _\bE_\bn_\bt_\bi_\bt_\by_\bN_\ba_\bm_\be.\n Listing of files:\n * _\bs_\be_\bp_\ba_\br_\ba_\bt_\be_\b__\bd_\ba_\bt_\ba_\bb_\ba_\bs_\be_\bs_\b._\bp_\by - Illustrates sharding using distinct SQLite\n databases.\n _\bs_\be_\bp_\ba_\br_\ba_\bt_\be_\b__\bt_\ba_\bb_\bl_\be_\bs_\b._\bp_\by - Illustrates sharding using a single SQLite database, that\n will however have multiple tables using a naming convention.\n+_\ba_\bs_\by_\bn_\bc_\bi_\bo_\b._\bp_\by - Illustrates sharding API used with asyncio.\n _\bs_\be_\bp_\ba_\br_\ba_\bt_\be_\b__\bs_\bc_\bh_\be_\bm_\ba_\b__\bt_\br_\ba_\bn_\bs_\bl_\ba_\bt_\be_\bs_\b._\bp_\by - Illustrates sharding using a single database\n with multiple schemas, where a different \u201cschema_translates_map\u201d can be used\n for each shard.\n-_\ba_\bs_\by_\bn_\bc_\bi_\bo_\b._\bp_\by - Illustrates sharding API used with asyncio.\n *\b**\b**\b**\b**\b* E\bEx\bxt\bte\ben\bnd\bdi\bin\bng\bg t\bth\bhe\be O\bOR\bRM\bM_\b?\b\u00b6 *\b**\b**\b**\b**\b*\n *\b**\b**\b**\b* O\bOR\bRM\bM Q\bQu\bue\ber\bry\by E\bEv\bve\ben\bnt\bts\bs_\b?\b\u00b6 *\b**\b**\b**\b*\n Recipes which illustrate augmentation of ORM SELECT behavior as used by\n _\bS_\be_\bs_\bs_\bi_\bo_\bn_\b._\be_\bx_\be_\bc_\bu_\bt_\be_\b(_\b) with _\b2_\b._\b0_\b _\bs_\bt_\by_\bl_\be use of _\bs_\be_\bl_\be_\bc_\bt_\b(_\b), as well as the _\b1_\b._\bx_\b _\bs_\bt_\by_\bl_\be\n _\bQ_\bu_\be_\br_\by object.\n Examples include demonstrations of the _\bw_\bi_\bt_\bh_\b__\bl_\bo_\ba_\bd_\be_\br_\b__\bc_\br_\bi_\bt_\be_\br_\bi_\ba_\b(_\b) option as well as\n the _\bS_\be_\bs_\bs_\bi_\bo_\bn_\bE_\bv_\be_\bn_\bt_\bs_\b._\bd_\bo_\b__\bo_\br_\bm_\b__\be_\bx_\be_\bc_\bu_\bt_\be_\b(_\b) hook.\n As of SQLAlchemy 1.4, the _\bQ_\bu_\be_\br_\by construct is unified with the _\bS_\be_\bl_\be_\bc_\bt construct,\n so that these two objects are mostly the same.\n Listing of files:\n- * _\bf_\bi_\bl_\bt_\be_\br_\b__\bp_\bu_\bb_\bl_\bi_\bc_\b._\bp_\by - Illustrates a global criteria applied to entities of a\n- particular type.\n-_\bt_\be_\bm_\bp_\bo_\br_\ba_\bl_\b__\br_\ba_\bn_\bg_\be_\b._\bp_\by - Illustrates a custom per-query criteria that will be\n-applied to selected entities.\n+ * _\bt_\be_\bm_\bp_\bo_\br_\ba_\bl_\b__\br_\ba_\bn_\bg_\be_\b._\bp_\by - Illustrates a custom per-query criteria that will be\n+ applied to selected entities.\n+_\bf_\bi_\bl_\bt_\be_\br_\b__\bp_\bu_\bb_\bl_\bi_\bc_\b._\bp_\by - Illustrates a global criteria applied to entities of a\n+particular type.\n *\b**\b**\b**\b* D\bDo\bog\bgp\bpi\bil\ble\be C\bCa\bac\bch\bhi\bin\bng\bg_\b?\b\u00b6 *\b**\b**\b**\b*\n Illustrates how to embed _\bd_\bo_\bg_\bp_\bi_\bl_\be_\b._\bc_\ba_\bc_\bh_\be functionality with ORM queries, allowing\n full cache control as well as the ability to pull \u201clazy loaded\u201d attributes from\n long term cache.\n In this demo, the following techniques are illustrated:\n * Using the _\bS_\be_\bs_\bs_\bi_\bo_\bn_\bE_\bv_\be_\bn_\bt_\bs_\b._\bd_\bo_\b__\bo_\br_\bm_\b__\be_\bx_\be_\bc_\bu_\bt_\be_\b(_\b) event hook\n * Basic technique of circumventing _\bS_\be_\bs_\bs_\bi_\bo_\bn_\b._\be_\bx_\be_\bc_\bu_\bt_\be_\b(_\b) to pull from a custom\n"}]}]}]}]}]}