details: http://hg.sqlalchemy.org/sqlalchemy/sqlalchemy/rev/6d8e7e9087b0
changeset: 9208:6d8e7e9087b0
user: Mike Bayer <mike_mp@...>
date: Thu Mar 07 12:41:38 2013 -0500
description:
close branch
Subject: sqlalchemy: close branch
details: http://hg.sqlalchemy.org/sqlalchemy/sqlalchemy/rev/e704bf88a8f7
changeset: 9209:e704bf88a8f7
user: Mike Bayer <mike_mp@...>
date: Thu Mar 07 12:41:57 2013 -0500
description:
close branch
diffstat:
.hgignore | 15 -
.hgtags | 91 -
AUTHORS | 18 -
CHANGES | 4051 +++++-
LICENSE | 4 +-
MANIFEST.in | 15 +-
README | 48 +
README.dialects.rst | 235 -
README.py3k | 47 -
README.rst | 130 -
README.unittests | 196 +
README.unittests.rst | 202 -
VERSION | 1 +
attributes_rollback_test.py | 31 +
custom_management.py | 179 +
distribute_setup.py | 515 -
doc/alphaapi.html | 27 +
doc/alphaimplementation.html | 16 +
doc/build/Makefile | 146 -
doc/build/README | 10 +
doc/build/builder/autodoc_mods.py | 59 -
doc/build/builder/changelog.py | 286 -
doc/build/builder/dialect_info.py | 175 -
doc/build/builder/mako.py | 83 -
doc/build/builder/sqlformatter.py | 132 -
doc/build/builder/util.py | 12 -
doc/build/changelog/changelog_01.rst | 975 -
doc/build/changelog/changelog_02.rst | 1187 -
doc/build/changelog/changelog_03.rst | 2928 ---
doc/build/changelog/changelog_04.rst | 4198 -----
doc/build/changelog/changelog_05.rst | 3775 ----
doc/build/changelog/changelog_06.rst | 5406 -------
doc/build/changelog/changelog_07.rst | 4547 ------
doc/build/changelog/changelog_08.rst | 2025 --
doc/build/changelog/index.rst | 39 -
doc/build/changelog/migration_04.rst | 848 -
doc/build/changelog/migration_05.rst | 746 -
doc/build/changelog/migration_06.rst | 1203 -
doc/build/changelog/migration_07.rst | 1306 -
doc/build/changelog/migration_08.rst | 1393 -
doc/build/conf.py | 314 -
doc/build/content/copyright.txt | 24 +
doc/build/content/dbengine.txt | 438 +
doc/build/content/docstrings.html | 12 +
doc/build/content/documentation.html | 25 +
doc/build/content/index.html | 6 +
doc/build/content/intro.txt | 166 +
doc/build/content/mappers.txt | 1514 ++
doc/build/content/metadata.txt | 500 +
doc/build/content/ormtutorial.txt | 1143 +
doc/build/content/plugins.txt | 677 +
doc/build/content/pooling.txt | 95 +
doc/build/content/session.txt | 816 +
doc/build/content/sqlexpression.txt | 933 +
doc/build/content/tutorial.txt | 523 +
doc/build/content/types.txt | 161 +
doc/build/contents.rst | 21 -
doc/build/copyright.rst | 25 -
doc/build/core/compiler.rst | 7 -
doc/build/core/connections.rst | 524 -
doc/build/core/engines.rst | 292 -
doc/build/core/event.rst | 103 -
doc/build/core/events.rst | 32 -
doc/build/core/exceptions.rst | 6 -
doc/build/core/expression_api.rst | 253 -
doc/build/core/index.rst | 28 -
doc/build/core/inspection.rst | 35 -
doc/build/core/interfaces.rst | 28 -
doc/build/core/internals.rst | 41 -
doc/build/core/pooling.rst | 354 -
doc/build/core/schema.rst | 1460 -
doc/build/core/serializer.rst | 6 -
doc/build/core/sqla_engine_arch.png | 0
doc/build/core/tutorial.rst | 1552 --
doc/build/core/types.rst | 761 -
doc/build/dialects/drizzle.rst | 74 -
doc/build/dialects/firebird.rst | 14 -
doc/build/dialects/index.rst | 48 -
doc/build/dialects/informix.rst | 10 -
doc/build/dialects/mssql.rst | 114 -
doc/build/dialects/mysql.rst | 183 -
doc/build/dialects/oracle.rst | 59 -
doc/build/dialects/postgresql.rst | 97 -
doc/build/dialects/sqlite.rst | 29 -
doc/build/dialects/sybase.rst | 19 -
doc/build/gen_docstrings.py | 113 +
doc/build/genhtml.py | 106 +
doc/build/glossary.rst | 233 -
doc/build/index.rst | 111 -
doc/build/intro.rst | 182 -
doc/build/lib/docstring.py | 181 +
doc/build/lib/highlight.py | 389 +
doc/build/lib/markdown.py | 1671 ++
doc/build/lib/toc.py | 83 +
doc/build/orm/collections.rst | 579 -
doc/build/orm/deprecated.rst | 31 -
doc/build/orm/events.rst | 39 -
doc/build/orm/examples.rst | 124 -
doc/build/orm/exceptions.rst | 6 -
doc/build/orm/extensions/associationproxy.rst | 505 -
doc/build/orm/extensions/declarative.rst | 28 -
doc/build/orm/extensions/horizontal_shard.rst | 13 -
doc/build/orm/extensions/hybrid.rst | 21 -
doc/build/orm/extensions/index.rst | 25 -
doc/build/orm/extensions/instrumentation.rst | 23 -
doc/build/orm/extensions/mutable.rst | 27 -
doc/build/orm/extensions/orderinglist.rst | 17 -
doc/build/orm/index.rst | 26 -
doc/build/orm/inheritance.rst | 750 -
doc/build/orm/internals.rst | 71 -
doc/build/orm/loading.rst | 494 -
doc/build/orm/mapper_config.rst | 1118 -
doc/build/orm/query.rst | 41 -
doc/build/orm/relationships.rst | 1412 -
doc/build/orm/session.rst | 1966 --
doc/build/orm/tutorial.rst | 2156 --
doc/build/read_markdown.py | 244 +
doc/build/requirements.txt | 1 -
doc/build/sqla_arch_small.png | 0
doc/build/static/docs.css | 483 -
doc/build/static/init.js | 13 -
doc/build/templates/autohandler | 30 +
doc/build/templates/base.html | 41 +
doc/build/templates/content_layout.html | 16 +
doc/build/templates/formatting.html | 152 +
doc/build/templates/genindex.mako | 77 -
doc/build/templates/layout.mako | 210 -
doc/build/templates/module.html | 27 +
doc/build/templates/nav.html | 76 +
doc/build/templates/page.mako | 2 -
doc/build/templates/pydoc.html | 128 +
doc/build/templates/rtd_layout.mako | 164 -
doc/build/templates/search.mako | 30 -
doc/build/templates/static_base.mako | 20 -
doc/build/templates/toc.html | 44 +
doc/build/testdocs.py | 24 +-
doc/build/texinputs/Makefile | 64 -
doc/build/texinputs/sphinx.sty | 446 -
doc/docs.css | 208 +
doc/docutil.css | 274 +
doc/scripts.js | 25 +
doc/style.css | 102 +
doc/syntaxhighlight.css | 54 +
examples/README | 2 +
examples/adjacency_list/__init__.py | 16 -
examples/adjacency_list/adjacency_list.py | 120 -
examples/adjacencytree/basic_tree.py | 129 +
examples/adjacencytree/byroot_tree.py | 244 +
examples/association/__init__.py | 20 -
examples/association/basic_association.py | 143 +-
examples/association/dict_of_sets_with_default.py | 87 -
examples/association/proxied_association.py | 163 +-
examples/collections/large_collection.py | 91 +
examples/custom_attributes/__init__.py | 19 -
examples/custom_attributes/custom_management.py | 110 -
examples/custom_attributes/listen_for_events.py | 70 -
examples/derived_attributes/attributes.py | 127 +
examples/dogpile_caching/__init__.py | 84 -
examples/dogpile_caching/advanced.py | 79 -
examples/dogpile_caching/caching_query.py | 256 -
examples/dogpile_caching/environment.py | 83 -
examples/dogpile_caching/fixture_data.py | 52 -
examples/dogpile_caching/helloworld.py | 62 -
examples/dogpile_caching/local_session_caching.py | 99 -
examples/dogpile_caching/model.py | 106 -
examples/dogpile_caching/relation_caching.py | 25 -
examples/dynamic_dict/__init__.py | 6 -
examples/dynamic_dict/dynamic_dict.py | 87 -
examples/elementtree/__init__.py | 42 -
examples/elementtree/adjacency_list.py | 88 +-
examples/elementtree/optimized_al.py | 94 +-
examples/elementtree/pickle.py | 48 +-
examples/generic_associations/__init__.py | 25 -
examples/generic_associations/discriminator_on_association.py | 148 -
examples/generic_associations/table_per_association.py | 106 -
examples/generic_associations/table_per_related.py | 107 -
examples/graphs/__init__.py | 11 -
examples/graphs/directed_graph.py | 87 -
examples/graphs/graph1.py | 86 +
examples/inheritance/__init__.py | 4 -
examples/inheritance/concrete.py | 72 -
examples/inheritance/joined.py | 135 -
examples/inheritance/single.py | 100 -
examples/large_collection/__init__.py | 12 -
examples/large_collection/large_collection.py | 95 -
examples/nested_sets/__init__.py | 4 -
examples/nested_sets/nested_sets.py | 103 -
examples/pickle/custom_pickler.py | 84 +
examples/poly_assoc/poly_assoc.py | 147 +
examples/poly_assoc/poly_assoc_fk.py | 157 +
examples/poly_assoc/poly_assoc_generic.py | 153 +
examples/polymorph/concrete.py | 66 +
examples/polymorph/polymorph.py | 104 +
examples/polymorph/single.py | 88 +
examples/postgis/__init__.py | 37 -
examples/postgis/postgis.py | 271 -
examples/sharding/__init__.py | 30 -
examples/sharding/attribute_shard.py | 214 +-
examples/versioning/__init__.py | 60 -
examples/versioning/_lib.py | 96 -
examples/versioning/history_meta.py | 180 -
examples/versioning/test_versioning.py | 340 -
examples/vertical/__init__.py | 33 -
examples/vertical/dictlike-polymorphic.py | 98 +-
examples/vertical/dictlike.py | 31 +-
examples/vertical/vertical.py | 174 +
ez_setup.py | 118 +-
lib/sqlalchemy/__init__.py | 143 +-
lib/sqlalchemy/cextension/processors.c | 465 -
lib/sqlalchemy/cextension/resultproxy.c | 639 -
lib/sqlalchemy/cextension/utils.c | 197 -
lib/sqlalchemy/connectors/__init__.py | 9 -
lib/sqlalchemy/connectors/mxodbc.py | 149 -
lib/sqlalchemy/connectors/mysqldb.py | 156 -
lib/sqlalchemy/connectors/pyodbc.py | 166 -
lib/sqlalchemy/connectors/zxJDBC.py | 59 -
lib/sqlalchemy/databases/__init__.py | 34 +-
lib/sqlalchemy/databases/access.py | 430 +
lib/sqlalchemy/databases/firebird.py | 723 +
lib/sqlalchemy/databases/information_schema.py | 183 +
lib/sqlalchemy/databases/informix.py | 509 +
lib/sqlalchemy/databases/maxdb.py | 1109 +
lib/sqlalchemy/databases/mssql.py | 1052 +
lib/sqlalchemy/databases/mxODBC.py | 60 +
lib/sqlalchemy/databases/mysql.py | 2705 +++
lib/sqlalchemy/databases/oracle.py | 747 +
lib/sqlalchemy/databases/postgres.py | 805 +
lib/sqlalchemy/databases/sqlite.py | 492 +
lib/sqlalchemy/databases/sybase.py | 876 +
lib/sqlalchemy/dialects/__init__.py | 46 -
lib/sqlalchemy/dialects/drizzle/__init__.py | 22 -
lib/sqlalchemy/dialects/drizzle/base.py | 498 -
lib/sqlalchemy/dialects/drizzle/mysqldb.py | 48 -
lib/sqlalchemy/dialects/firebird/__init__.py | 20 -
lib/sqlalchemy/dialects/firebird/base.py | 729 -
lib/sqlalchemy/dialects/firebird/fdb.py | 66 -
lib/sqlalchemy/dialects/firebird/kinterbasdb.py | 170 -
lib/sqlalchemy/dialects/informix/__init__.py | 9 -
lib/sqlalchemy/dialects/informix/base.py | 589 -
lib/sqlalchemy/dialects/informix/informixdb.py | 69 -
lib/sqlalchemy/dialects/mssql/__init__.py | 26 -
lib/sqlalchemy/dialects/mssql/adodbapi.py | 79 -
lib/sqlalchemy/dialects/mssql/base.py | 1467 -
lib/sqlalchemy/dialects/mssql/information_schema.py | 98 -
lib/sqlalchemy/dialects/mssql/mxodbc.py | 110 -
lib/sqlalchemy/dialects/mssql/pymssql.py | 96 -
lib/sqlalchemy/dialects/mssql/pyodbc.py | 252 -
lib/sqlalchemy/dialects/mssql/zxjdbc.py | 65 -
lib/sqlalchemy/dialects/mysql/__init__.py | 28 -
lib/sqlalchemy/dialects/mysql/base.py | 2825 ---
lib/sqlalchemy/dialects/mysql/cymysql.py | 72 -
lib/sqlalchemy/dialects/mysql/gaerdbms.py | 74 -
lib/sqlalchemy/dialects/mysql/mysqlconnector.py | 126 -
lib/sqlalchemy/dialects/mysql/mysqldb.py | 76 -
lib/sqlalchemy/dialects/mysql/oursql.py | 261 -
lib/sqlalchemy/dialects/mysql/pymysql.py | 35 -
lib/sqlalchemy/dialects/mysql/pyodbc.py | 79 -
lib/sqlalchemy/dialects/mysql/zxjdbc.py | 110 -
lib/sqlalchemy/dialects/oracle/__init__.py | 23 -
lib/sqlalchemy/dialects/oracle/base.py | 1185 -
lib/sqlalchemy/dialects/oracle/cx_oracle.py | 840 -
lib/sqlalchemy/dialects/oracle/zxjdbc.py | 218 -
lib/sqlalchemy/dialects/postgres.py | 16 -
lib/sqlalchemy/dialects/postgresql/__init__.py | 23 -
lib/sqlalchemy/dialects/postgresql/base.py | 2018 --
lib/sqlalchemy/dialects/postgresql/hstore.py | 342 -
lib/sqlalchemy/dialects/postgresql/pg8000.py | 122 -
lib/sqlalchemy/dialects/postgresql/psycopg2.py | 435 -
lib/sqlalchemy/dialects/postgresql/pypostgresql.py | 78 -
lib/sqlalchemy/dialects/postgresql/zxjdbc.py | 45 -
lib/sqlalchemy/dialects/sqlite/__init__.py | 21 -
lib/sqlalchemy/dialects/sqlite/base.py | 922 -
lib/sqlalchemy/dialects/sqlite/pysqlite.py | 327 -
lib/sqlalchemy/dialects/sybase/__init__.py | 27 -
lib/sqlalchemy/dialects/sybase/base.py | 816 -
lib/sqlalchemy/dialects/sybase/mxodbc.py | 32 -
lib/sqlalchemy/dialects/sybase/pyodbc.py | 83 -
lib/sqlalchemy/dialects/sybase/pysybase.py | 99 -
lib/sqlalchemy/dialects/type_migration_guidelines.txt | 144 -
lib/sqlalchemy/engine/__init__.py | 363 +-
lib/sqlalchemy/engine/base.py | 2833 +-
lib/sqlalchemy/engine/ddl.py | 193 -
lib/sqlalchemy/engine/default.py | 868 +-
lib/sqlalchemy/engine/interfaces.py | 925 -
lib/sqlalchemy/engine/reflection.py | 507 -
lib/sqlalchemy/engine/result.py | 1003 -
lib/sqlalchemy/engine/strategies.py | 154 +-
lib/sqlalchemy/engine/threadlocal.py | 259 +-
lib/sqlalchemy/engine/url.py | 131 +-
lib/sqlalchemy/engine/util.py | 94 -
lib/sqlalchemy/event.py | 555 -
lib/sqlalchemy/events.py | 714 -
lib/sqlalchemy/exc.py | 254 +-
lib/sqlalchemy/ext/__init__.py | 6 +-
lib/sqlalchemy/ext/associationproxy.py | 667 +-
lib/sqlalchemy/ext/compiler.py | 438 -
lib/sqlalchemy/ext/declarative.py | 330 +
lib/sqlalchemy/ext/declarative/__init__.py | 1263 -
lib/sqlalchemy/ext/declarative/api.py | 446 -
lib/sqlalchemy/ext/declarative/base.py | 433 -
lib/sqlalchemy/ext/declarative/clsregistry.py | 288 -
lib/sqlalchemy/ext/horizontal_shard.py | 128 -
lib/sqlalchemy/ext/hybrid.py | 802 -
lib/sqlalchemy/ext/instrumentation.py | 407 -
lib/sqlalchemy/ext/mutable.py | 630 -
lib/sqlalchemy/ext/orderinglist.py | 256 +-
lib/sqlalchemy/ext/serializer.py | 170 -
lib/sqlalchemy/ext/sqlsoup.py | 577 +
lib/sqlalchemy/inspection.py | 91 -
lib/sqlalchemy/interfaces.py | 232 +-
lib/sqlalchemy/log.py | 235 +-
lib/sqlalchemy/orm/__init__.py | 2089 +--
lib/sqlalchemy/orm/attributes.py | 2359 +-
lib/sqlalchemy/orm/collections.py | 804 +-
lib/sqlalchemy/orm/dependency.py | 1432 +-
lib/sqlalchemy/orm/deprecated_interfaces.py | 588 -
lib/sqlalchemy/orm/descriptor_props.py | 468 -
lib/sqlalchemy/orm/dynamic.py | 396 +-
lib/sqlalchemy/orm/evaluator.py | 119 -
lib/sqlalchemy/orm/events.py | 1565 --
lib/sqlalchemy/orm/exc.py | 152 +-
lib/sqlalchemy/orm/identity.py | 338 +-
lib/sqlalchemy/orm/instrumentation.py | 457 -
lib/sqlalchemy/orm/interfaces.py | 1106 +-
lib/sqlalchemy/orm/loading.py | 606 -
lib/sqlalchemy/orm/mapper.py | 3316 +--
lib/sqlalchemy/orm/persistence.py | 1034 -
lib/sqlalchemy/orm/properties.py | 1777 +-
lib/sqlalchemy/orm/query.py | 3550 +---
lib/sqlalchemy/orm/relationships.py | 900 -
lib/sqlalchemy/orm/scoping.py | 258 +-
lib/sqlalchemy/orm/session.py | 2720 +--
lib/sqlalchemy/orm/shard.py | 138 +
lib/sqlalchemy/orm/state.py | 591 -
lib/sqlalchemy/orm/strategies.py | 1890 +-
lib/sqlalchemy/orm/sync.py | 100 +-
lib/sqlalchemy/orm/unitofwork.py | 1256 +-
lib/sqlalchemy/orm/uowdumper.py | 117 +
lib/sqlalchemy/orm/util.py | 1375 +-
lib/sqlalchemy/pool.py | 1083 +-
lib/sqlalchemy/processors.py | 131 -
lib/sqlalchemy/queue.py | 194 +
lib/sqlalchemy/schema.py | 3800 +---
lib/sqlalchemy/sql/__init__.py | 70 +-
lib/sqlalchemy/sql/compiler.py | 2692 +--
lib/sqlalchemy/sql/expression.py | 7552 +++------
lib/sqlalchemy/sql/functions.py | 258 +-
lib/sqlalchemy/sql/operators.py | 820 +-
lib/sqlalchemy/sql/util.py | 851 +-
lib/sqlalchemy/sql/visitors.py | 294 +-
lib/sqlalchemy/testing/__init__.py | 20 -
lib/sqlalchemy/testing/assertions.py | 377 -
lib/sqlalchemy/testing/assertsql.py | 326 -
lib/sqlalchemy/testing/config.py | 2 -
lib/sqlalchemy/testing/engines.py | 453 -
lib/sqlalchemy/testing/entities.py | 89 -
lib/sqlalchemy/testing/exclusions.py | 334 -
lib/sqlalchemy/testing/fixtures.py | 344 -
lib/sqlalchemy/testing/pickleable.py | 136 -
lib/sqlalchemy/testing/plugin/noseplugin.py | 455 -
lib/sqlalchemy/testing/profiling.py | 294 -
lib/sqlalchemy/testing/requirements.py | 432 -
lib/sqlalchemy/testing/runner.py | 33 -
lib/sqlalchemy/testing/schema.py | 86 -
lib/sqlalchemy/testing/suite/__init__.py | 8 -
lib/sqlalchemy/testing/suite/test_ddl.py | 48 -
lib/sqlalchemy/testing/suite/test_insert.py | 179 -
lib/sqlalchemy/testing/suite/test_reflection.py | 420 -
lib/sqlalchemy/testing/suite/test_results.py | 69 -
lib/sqlalchemy/testing/suite/test_sequence.py | 126 -
lib/sqlalchemy/testing/suite/test_types.py | 393 -
lib/sqlalchemy/testing/suite/test_update_delete.py | 62 -
lib/sqlalchemy/testing/util.py | 200 -
lib/sqlalchemy/testing/warnings.py | 47 -
lib/sqlalchemy/topological.py | 308 +
lib/sqlalchemy/types.py | 2582 +--
lib/sqlalchemy/util.py | 1505 +
lib/sqlalchemy/util/__init__.py | 33 -
lib/sqlalchemy/util/_collections.py | 920 -
lib/sqlalchemy/util/compat.py | 287 -
lib/sqlalchemy/util/deprecations.py | 123 -
lib/sqlalchemy/util/langhelpers.py | 1015 -
lib/sqlalchemy/util/queue.py | 237 -
lib/sqlalchemy/util/topological.py | 95 -
sa2to3.py | 72 -
setup.cfg | 33 +-
setup.py | 270 +-
sqla_nose.py | 24 -
test/__init__.py | 1 +
test/aaa_profiling/test_compiler.py | 63 -
test/aaa_profiling/test_memusage.py | 671 -
test/aaa_profiling/test_orm.py | 260 -
test/aaa_profiling/test_pool.py | 61 -
test/aaa_profiling/test_resultset.py | 135 -
test/aaa_profiling/test_zoomark.py | 403 -
test/aaa_profiling/test_zoomark_orm.py | 364 -
test/alltests.py | 24 +
test/base/alltests.py | 21 +
test/base/dependency.py | 188 +
test/base/except.py | 76 +
test/base/test_dependency.py | 280 -
test/base/test_events.py | 681 -
test/base/test_except.py | 161 -
test/base/test_inspect.py | 71 -
test/base/test_utils.py | 1584 --
test/base/utils.py | 848 +
test/clone.py | 175 +
test/dialect/access.py | 15 +
test/dialect/alltests.py | 28 +
test/dialect/firebird.py | 121 +
test/dialect/informix.py | 23 +
test/dialect/maxdb.py | 240 +
test/dialect/mssql.py | 256 +
test/dialect/mysql.py | 978 +
test/dialect/oracle.py | 283 +
test/dialect/postgres.py | 816 +
test/dialect/sqlite.py | 303 +
test/dialect/sybase.py | 15 +
test/dialect/test_firebird.py | 446 -
test/dialect/test_informix.py | 25 -
test/dialect/test_mssql.py | 2073 --
test/dialect/test_mxodbc.py | 76 -
test/dialect/test_mysql.py | 1571 --
test/dialect/test_oracle.py | 1703 --
test/dialect/test_postgresql.py | 3143 ----
test/dialect/test_pyodbc.py | 17 -
test/dialect/test_sqlite.py | 956 -
test/dialect/test_suite.py | 2 -
test/dialect/test_sybase.py | 28 -
test/engine/alltests.py | 31 +
test/engine/bind.py | 265 +
test/engine/ddlevents.py | 362 +
test/engine/execute.py | 159 +
test/engine/metadata.py | 120 +
test/engine/parseconnect.py | 233 +
test/engine/pool.py | 617 +
test/engine/reconnect.py | 317 +
test/engine/reflection.py | 729 +
test/engine/test_bind.py | 214 -
test/engine/test_ddlevents.py | 580 -
test/engine/test_execute.py | 1615 --
test/engine/test_parseconnect.py | 390 -
test/engine/test_pool.py | 1216 -
test/engine/test_processors.py | 168 -
test/engine/test_reconnect.py | 517 -
test/engine/test_reflection.py | 1456 -
test/engine/test_transaction.py | 1312 -
test/engine/transaction.py | 842 +
test/ext/alltests.py | 27 +
test/ext/associationproxy.py | 819 +
test/ext/declarative.py | 766 +
test/ext/declarative/test_basic.py | 1497 -
test/ext/declarative/test_clsregistry.py | 235 -
test/ext/declarative/test_inheritance.py | 1161 -
test/ext/declarative/test_mixin.py | 1254 -
test/ext/declarative/test_reflection.py | 451 -
test/ext/orderinglist.py | 386 +
test/ext/test_associationproxy.py | 1369 -
test/ext/test_compiler.py | 378 -
test/ext/test_extendedattr.py | 485 -
test/ext/test_horizontal_shard.py | 259 -
test/ext/test_hybrid.py | 310 -
test/ext/test_mutable.py | 530 -
test/ext/test_orderinglist.py | 434 -
test/ext/test_serializer.py | 157 -
test/orm/_fixtures.py | 470 -
test/orm/alltests.py | 58 +
test/orm/association.py | 224 +
test/orm/assorted_eager.py | 886 +
test/orm/attr_rollback.py | 726 +
test/orm/attributes.py | 1205 +
test/orm/cascade.py | 844 +
test/orm/collection.py | 1728 ++
test/orm/compile.py | 184 +
test/orm/cycles.py | 901 +
test/orm/deprecations.py | 394 +
test/orm/dynamic.py | 349 +
test/orm/eager_relations.py | 1146 +
test/orm/entity.py | 270 +
test/orm/expire.py | 769 +
test/orm/extendedattr.py | 303 +
test/orm/generative.py | 241 +
test/orm/inheritance/_poly_fixtures.py | 348 -
test/orm/inheritance/abc_inheritance.py | 169 +
test/orm/inheritance/abc_polymorphic.py | 89 +
test/orm/inheritance/alltests.py | 31 +
test/orm/inheritance/basic.py | 705 +
test/orm/inheritance/concrete.py | 125 +
test/orm/inheritance/magazine.py | 219 +
test/orm/inheritance/manytomany.py | 246 +
test/orm/inheritance/poly_linked_list.py | 195 +
test/orm/inheritance/polymorph.py | 302 +
test/orm/inheritance/polymorph2.py | 1062 +
test/orm/inheritance/productspec.py | 317 +
test/orm/inheritance/query.py | 671 +
test/orm/inheritance/selects.py | 51 +
test/orm/inheritance/single.py | 70 +
test/orm/inheritance/test_abc_inheritance.py | 180 -
test/orm/inheritance/test_abc_polymorphic.py | 92 -
test/orm/inheritance/test_assorted_poly.py | 1522 --
test/orm/inheritance/test_basic.py | 2303 ---
test/orm/inheritance/test_concrete.py | 758 -
test/orm/inheritance/test_magazine.py | 221 -
test/orm/inheritance/test_manytomany.py | 249 -
test/orm/inheritance/test_poly_linked_list.py | 199 -
test/orm/inheritance/test_poly_persistence.py | 348 -
test/orm/inheritance/test_polymorphic_rel.py | 1271 -
test/orm/inheritance/test_productspec.py | 318 -
test/orm/inheritance/test_relationship.py | 1115 -
test/orm/inheritance/test_selects.py | 50 -
test/orm/inheritance/test_single.py | 575 -
test/orm/inheritance/test_with_poly.py | 114 -
test/orm/instrumentation.py | 716 +
test/orm/lazy_relations.py | 378 +
test/orm/lazytest1.py | 91 +
test/orm/manytomany.py | 310 +
test/orm/mapper.py | 1736 ++
test/orm/memusage.py | 283 +
test/orm/merge.py | 627 +
test/orm/naturalpks.py | 373 +
test/orm/onetoone.py | 91 +
test/orm/pickled.py | 133 +
test/orm/query.py | 1889 ++
test/orm/relationships.py | 1373 +
test/orm/scoping.py | 171 +
test/orm/selectable.py | 52 +
test/orm/session.py | 961 +
test/orm/sharding/alltests.py | 18 +
test/orm/sharding/shard.py | 161 +
test/orm/test_association.py | 162 -
test/orm/test_assorted_eager.py | 915 -
test/orm/test_attributes.py | 2513 ---
test/orm/test_backref_mutations.py | 737 -
test/orm/test_bind.py | 62 -
test/orm/test_cascade.py | 2941 ---
test/orm/test_collection.py | 2175 --
test/orm/test_compile.py | 185 -
test/orm/test_composites.py | 808 -
test/orm/test_cycles.py | 1202 -
test/orm/test_default_strategies.py | 403 -
test/orm/test_defaults.py | 146 -
test/orm/test_deprecations.py | 537 -
test/orm/test_descriptor.py | 127 -
test/orm/test_dynamic.py | 960 -
test/orm/test_eager_relations.py | 2666 ---
test/orm/test_evaluator.py | 102 -
test/orm/test_events.py | 1598 --
test/orm/test_expire.py | 1322 -
test/orm/test_froms.py | 2324 ---
test/orm/test_generative.py | 339 -
test/orm/test_hasparent.py | 208 -
test/orm/test_immediate_load.py | 57 -
test/orm/test_inspect.py | 469 -
test/orm/test_instrumentation.py | 685 -
test/orm/test_joins.py | 2133 --
test/orm/test_lazy_relations.py | 694 -
test/orm/test_load_on_fks.py | 319 -
test/orm/test_loading.py | 116 -
test/orm/test_lockmode.py | 114 -
test/orm/test_manytomany.py | 523 -
test/orm/test_mapper.py | 3280 ----
test/orm/test_merge.py | 1413 -
test/orm/test_naturalpks.py | 1149 -
test/orm/test_of_type.py | 590 -
test/orm/test_onetoone.py | 78 -
test/orm/test_pickled.py | 522 -
test/orm/test_query.py | 2896 ---
test/orm/test_rel_fn.py | 1015 -
test/orm/test_relationships.py | 3090 ----
test/orm/test_scoping.py | 94 -
test/orm/test_selectable.py | 76 -
test/orm/test_session.py | 1562 --
test/orm/test_subquery_relations.py | 1406 -
test/orm/test_sync.py | 246 -
test/orm/test_transaction.py | 1253 -
test/orm/test_unitofwork.py | 2515 ---
test/orm/test_unitofworkv2.py | 1448 -
test/orm/test_update_delete.py | 788 -
test/orm/test_utils.py | 663 -
test/orm/test_versioning.py | 645 -
test/orm/transaction.py | 128 +
test/orm/unitofwork.py | 2056 ++
test/orm/utils.py | 208 +
test/perf/README | 17 -
test/perf/cascade_speed.py | 93 +
test/perf/insertspeed.py | 7 +-
test/perf/large_flush.py | 84 -
test/perf/masscreate.py | 41 +
test/perf/masscreate2.py | 36 +
test/perf/masseagerload.py | 54 +
test/perf/massload.py | 65 +
test/perf/massload2.py | 70 +
test/perf/masssave.py | 54 +
test/perf/objselectspeed.py | 62 +-
test/perf/objupdatespeed.py | 13 +-
test/perf/orm2010.py | 188 -
test/perf/ormsession.py | 20 +-
test/perf/poolload.py | 38 +
test/perf/sessions.py | 45 +-
test/perf/stress_all.py | 226 -
test/perf/stresstest.py | 174 -
test/perf/threaded_compile.py | 3 +-
test/perf/wsgi.py | 53 +
test/pickleable.py | 29 +
test/profiles.txt | 260 -
test/profiling/alltests.py | 21 +
test/profiling/compiler.py | 33 +
test/profiling/pool.py | 49 +
test/profiling/zoomark.py | 360 +
test/requirements.py | 643 -
test/sql/alltests.py | 38 +
test/sql/case_statement.py | 134 +
test/sql/columns.py | 60 +
test/sql/constraints.py | 310 +
test/sql/defaults.py | 504 +
test/sql/functions.py | 256 +
test/sql/generative.py | 731 +
test/sql/labels.py | 139 +
test/sql/query.py | 1072 +
test/sql/quote.py | 152 +
test/sql/rowcount.py | 71 +
test/sql/select.py | 1440 +
test/sql/selectable.py | 471 +
test/sql/test_case_statement.py | 165 -
test/sql/test_compiler.py | 3318 ----
test/sql/test_constraints.py | 898 -
test/sql/test_cte.py | 353 -
test/sql/test_defaults.py | 1179 -
test/sql/test_functions.py | 480 -
test/sql/test_generative.py | 1475 -
test/sql/test_inspect.py | 33 -
test/sql/test_labels.py | 536 -
test/sql/test_metadata.py | 1625 --
test/sql/test_operators.py | 1297 -
test/sql/test_query.py | 2390 ---
test/sql/test_quote.py | 598 -
test/sql/test_returning.py | 236 -
test/sql/test_rowcount.py | 72 -
test/sql/test_selectable.py | 1589 --
test/sql/test_type_expressions.py | 271 -
test/sql/test_types.py | 1562 --
test/sql/test_unicode.py | 141 -
test/sql/test_update.py | 346 -
test/sql/testtypes.py | 805 +
test/sql/unicode.py | 142 +
test/testenv.py | 35 +
test/testlib/__init__.py | 31 +
test/testlib/compat.py | 100 +
test/testlib/config.py | 315 +
test/testlib/coverage.py | 1103 +
test/testlib/engines.py | 224 +
test/testlib/filters.py | 239 +
test/testlib/fixtures.py | 295 +
test/testlib/orm.py | 109 +
test/testlib/profiling.py | 207 +
test/testlib/schema.py | 78 +
test/testlib/tables.py | 224 +
test/testlib/testing.py | 862 +
test/zblog/alltests.py | 18 +
test/zblog/blog.py | 35 +
test/zblog/mappers.py | 136 +
test/zblog/tables.py | 54 +
test/zblog/tests.py | 97 +
test/zblog/user.py | 36 +
664 files changed, 95593 insertions(+), 243767 deletions(-)
diffs (truncated from 351971 to 300 lines):
diff -r 6092de36d380 -r e704bf88a8f7 .hgignore
--- a/.hgignore Wed Mar 06 00:21:54 2013 +0900
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-syntax:regexp
-^build/
-^dist/
-^doc/build/output
-.pyc$
-.orig$
-.class$
-.so$
-.egg-info
-.*,cover
-^dogpile_data/
-.un~
-\.coverage
-\.DS_Store
-test.cfg
diff -r 6092de36d380 -r e704bf88a8f7 .hgtags
--- a/.hgtags Wed Mar 06 00:21:54 2013 +0900
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-01192810bdcf85af4cdbfdc4eb55b9b2dc7fbac0 rel_0_4_1
-05fa82b53058cb1ae60d984f4bc3649bb93196fe rel_0_4beta6
-06d33322991714285fd4bd4b3b657962b35be3e2 rel_0_4beta4
-0791f0364507b715ab91372dc1ccc9d805ca3dae rel_0_2_7
-1493f6fb829e38a5f6f4116667733706dc1c4023 rel_0_1_7
-1a13280f925ae58c98219846f5e69f35f6000fd1 rel_0_2_6
-1d5f9c86b9e1809c41fad2770197d51bd3357bb1 rel_0_4_2a
-1f8ec0cae94510b25951bebe28e145ab179eaf6b rel_0_1_4
-2557d80fe7d90f2a63bceb3b863dc0b8cfd129ab rel_0_2_5
-2aa1b38ae1ba0c2c546002fafcd8c43ae2476043 rel_0_2_0
-2e958f4713de636d1399652e4270f0b1e8195edc rel_0_4_2
-301a11f84651d51c36a62296a5dbba1472c240dc rel_0_5rc2
-3076551e854cdf24dd0b897b1c0f12e728070dcb rel_0_3_0
-34b2e112791be343594a792053eceb0c20bc8942 rel_0_4_2b
-35360175e77e7ada07db0fce002f81292ef78214 rel_0_4_0
-36d817dff60fdf30eb6d1b9850c5aebdcf123b73 rel_0_5_2
-3d5b975cae49daa59f453be716f41989caf227fa rel_0_5rc4
-3f6d4f8315093242d9ecd1583627459247ecee47 rel_0_3_11
-43acd2497396037942c180f961f84156ea2b456f rel_0_3_4
-4f6b5217dccd6b8092fa92bf822e173b7b48a8b4 rel_0_1_5
-4f9a7ab31c42a320b2ca673050d35e12aae1930b rel_0_5_3
-5d6b493c3b4b6ed1585ba92930d81ef373ea78c9 rel_0_5_1
-63b9201273d0273acc1a87180f56e83d27628bbd rel_0_5rc3
-63f33c55bf4c79b8386cff47d071deb77eac98e3 rel_0_5_6
-672f03f743453466d1812aab13e8f4a58ac7cba5 rel_0_5_4p1
-691280ab6c3ca43e0385d05245e985f156e64493 rel_0_3_8
-692a619e467daeb9926756a7c323c4cd754da5c1 rel_0_1_0
-70897d54fa95d8ea54af286c29b951a517374042 rel_0_1_6
-7393c16f290b5190117965e4e795a999bc027a78 rel_0_5beta1
-76604709d2fff11063da6f33473d474645ff9b42 rel_0_4_8
-776c9cbb6ba9ea9a383e6fe427218432ce3ff58c rel_0_2_4
-79569ac85647ef608fe631742301fb6e92846b43 rel_0_5_0
-7a818e8dec4c06827772b3e912f990847bc8c050 rel_0_4_7p1
-7bda4498581b842fc49b95595bf10abf7718c642 rel_0_4_6
-7fdc26728711420c6661273440824eeb4cd397ca rel_0_4_5
-89768e0a6acb2359bce6f64eef0833b6e295e559 rel_0_4_before_release
-8abe3efd53086e23fb18c5116fb60283681b30aa rel_0_2_2
-8adf05c550cfdf6cd8555d8331692b46cb8b90f5 rel_0_3_9
-8de9028d090e07b0aa66cf18af9320c238613646 rel_0_5beta3
-941a296371d0e7ae0f02837a6e4b0f0ad39cc748 rel_0_5_5
-94d9a66ea97ab325dc621caa26a6ffc76823b14a rel_0_3_5
-99824eae86e60cf5fb302d729fe82708a69fa051 rel_0_2_8
-a8bd000e3f80bfe885ccb8bba7a757cc92e3be61 rel_0_3_10
-ab553478a17a039eeaa26550cf1aa80f6eb6429a rel_0_5_4p2
-afac457165a1a8add66cdf2ed9476128853d1965 rel_0_1_3
-b1c24c4b10086a24bb8d619b7b9491d723b12a25 rel_0_3_1
-b3708ba03af69bbb216a29ab57c76f3406818366 pre_attribute_rewrite
-b426a155b2c84ff1e17e9a9c85464685f0f85ed9 rel_0_3_7
-b52f509f245464fb008b7a8fc7ed7d4236840681 rel_0_5_8
-b6144e764caf192d8058e32e532f28a225308b04 rel_0_1_2
-b7246d91cf2a5c3dc5352393d10067810a65c929 pre_hashkey_removal
-baf5ce08ae9be23f9b075cd30f1180ca7feca4d7 rel_0_1_1
-bd50ff1b053af00b327e5834c8f20fb18fcff316 rel_0_4beta3
-c0f2a687524b19c02591c21e0b88e171ef0ae1d8 pre_uow_scoping
-c1c78d3123de931b53cb6963e120e4aca09e59af rel_0_4_2p3
-c6057b2b031445c02306deb2814d6a7b414b33da rel_0_2_3
-c71c8705ba642b4f26259377f98de58cb7828e08 rel_0_5beta2
-d25671d8a1b18d070f43c5bee96dae7fec150c3f rel_0_4beta2
-d2be9d4453cf9502aa53604714d83fee9f33bc2a rel_0_5_7
-d718e881162679d525cb99e35006d798a7670aec rel_0_2_1
-dddab33e513cd8fd27bc776611f4bafaf890d1e7 rel_0_6beta1
-e2bd8c7a3e48786f4006f82d94d9e9de12cb19aa rel_0_3_6
-e4e14453bd73783de5daadda45fa27471f69ee83 rel_0_5rc1
-ea8e5a8951dcd9a6a44c994baa026cae4cc8cd5a rel_0_5_4
-eb00664eefa4dac7144d1bde5859bf2f56c5e8be rel_0_3_3
-f7138694305ef1f732114ed7b2f56e64e2c0e2a1 rel_0_4_4
-f7dc5c00726e372077e7d1b27de14a9611621ecf rel_0_3_2
-f8e1d5a092499f3c1b15c1e567699b804399da5c rel_0_4_3
-fa0ca1ddb96d099f91ad6d4b451a86a3622ed97c rel_0_4beta1
-feb03a8ae2232756c4af5f70c2964b99ee815d4f rel_0_4_7
-610e98d5c6dac3766b621a48d130b415cc651cd5 rel_0_6beta2
-6e862c4332dd6d751c87539727c4f4ba337e92db rel_0_6beta3
-a147e7959727d17b52fa2219ab6130ee443ed9ff rel_0_6_0
-bb99158e5821d56344df21ed46128c2ea79bf2bd rel_0_6_1
-30b7ef7a9a9c24abdc86bbde332ad3e6213bff2d rel_0_6_2
-1db7766705b70f5326b614699b7c06d46168d19d rel_0_6_3
-2db46b7f51c1e64f06d9c31c49ff6e15be98e9ca rel_0_6_4
-ff12fe7cac947ce9e28be4e8b4473df2c0adaa04 rel_0_6_5
-92a08c9934aa8e4d080386102d76235ee1897829 rel_0_7b1
-e08d40f2b46cdaffc1af0c4950151963efa6e3f1 rel_0_7b2
-e92d07007ae1f922bf51bf912d5491f45c73a7ff rel_0_7b3
-3f4f05942eb7a3b87443b07b54260e067ece3918 rel_0_7b4
-9fedd4baa59036972370fdb5636303cc0f15dc1a rel_0_7_0
-145c143cef747a07e37ac007ca52027d239b293c rel_0_7_1
-3e75f284f25312bca53f26188a791660fc01f2b5 rel_0_7_2
-74c4ef8e0d240bc441cf81d6f44957c263ec4a9e rel_0_7_3
-19a7e3a6058878ecc07a40ea563e9cf92110be3a rel_0_7_4
-ebe9514a69a4b4ec6209f0e9aa43053ba28d080b rel_0_7_5
-d557287431986274a796348750f1c6ce885b196c rel_0_7_6
-6495bcf87e10461675d8905d62f5632e634ec33c rel_0_8_0b1
-8d82961d34643c8d53d865ddf76911807a36fde6 rel_0_8_8b2
diff -r 6092de36d380 -r e704bf88a8f7 AUTHORS
--- a/AUTHORS Wed Mar 06 00:21:54 2013 +0900
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-SQLAlchemy was created by Michael Bayer.
-
-Major contributing authors include:
-
-- Michael Bayer <mike_mp@...>
-- Jason Kirtland <jek@...>
-- Gaetan de Menten <gdementen@...>
-- Diana Clarke <diana.joan.clarke@...>
-- Michael Trier <mtrier@...>
-- Philip Jenvey <pjenvey@...>
-- Ants Aasma <ants.aasma@...>
-- Paul Johnston <paj@...>
-- Jonathan Ellis <jbellis@...>
-
-For a larger list of SQLAlchemy contributors over time, see:
-
-http://www.sqlalchemy.org/trac/wiki/Contributors
-
diff -r 6092de36d380 -r e704bf88a8f7 CHANGES
--- a/CHANGES Wed Mar 06 00:21:54 2013 +0900
+++ b/CHANGES Thu Mar 07 12:41:57 2013 -0500
@@ -1,16 +1,4039 @@
+-*- coding: utf-8; fill-column: 68 -*-
+
+=======
+CHANGES
+=======
+
+user_defined_state
+==================
+
+ - The "__init__" trigger/decorator added by mapper now attempts
+ to exactly mirror the argument signature of the original
+ __init__. The pass-through for '_sa_session' is no longer
+ implicit- you must allow for this keyword argument in your
+ constructor.
+
+ - ClassState is renamed to ClassManager.
+
+ - Classes may supply their own InstrumentationManager by
+ providing a __sa_instrumentation_manager__ property.
+
+ - Custom instrumentation may use any mechanism to associate a
+ ClassManager with a class and an InstanceState with an
+ instance. Attributes on those objects are still the default
+ association mechanism used by SQLAlchemy's native
+ instrumentation.
+
+ - Moved entity_name, _sa_session_id, and _instance_key from the
+ instance object to the instance state. These values are still
+ available in the old way, which is now deprecated, using
+ descriptors attached to the class. A deprecation warning will
+ be issued when accessed.
+
+ - attribute savepoint/rollback capability has been added. For
+ starters, this takes effect within the flush() call, so that
+ attribute changes which occur within flush() are rolled back
+ when the flush fails. Since it's primarily new primary key
+ values that get assigned within flush(), expiring those
+ attributes is not an option. The next place we might use
+ savepoints is within SAVEPOINT transactions, since rolling
+ back to a savepoint is a transaction-contained operation.
+
+ - The _prepare_instrumentation alias for prepare_instrumentation
+ has been removed.
+
+ - sqlalchemy.exceptions has been renamed to sqlalchemy.exc. The
+ module may be imported under either name.
+
+ - ORM-related exceptions are now defined in sqlalchemy.orm.exc.
+ ConcurrentModificationError, FlushError, and
+ UnmappedColumnError compatibility aliases are installed in
+ sqlalchemy.exc during the import of sqlalchemy.orm.
+
+ - sqlalchemy.logging has been renamed to sqlalchemy.log.
+
+ - The transitional sqlalchemy.log.SADeprecationWarning alias for
+ the warning's definition in sqlalchemy.exc has been removed.
+
+0.4.6
=====
-MOVED
+- orm
+ - Fix to the recent relation() refactoring which fixes
+ exotic viewonly relations which join between local and
+ remote table multiple times, with a common column shared
+ between the joins.
+
+ - Also re-established viewonly relation() configurations
+ that join across multiple tables.
+
+ - Added experimental relation() flag to help with
+ primaryjoins across functions, etc.,
+ _local_remote_pairs=[tuples]. This complements a complex
+ primaryjoin condition allowing you to provide the
+ individual column pairs which comprise the relation's
+ local and remote sides. Also improved lazy load SQL
+ generation to handle placing bind params inside of
+ functions and other expressions. (partial progress
+ towards [ticket:610])
+
+ - Removed ancient assertion that mapped selectables require
+ "alias names" - the mapper creates its own alias now if
+ none is present. Though in this case you need to use the
+ class, not the mapped selectable, as the source of column
+ attributes - so a warning is still issued.
+
+ - restored usage of append_result() extension method for primary
+ query rows, when the extension is present and only a single-
+ entity result is being returned.
+
+ - Also re-established viewonly relation() configurations that
+ join across multiple tables.
+
+ - removed ancient assertion that mapped selectables require
+ "alias names" - the mapper creates its own alias now if
+ none is present. Though in this case you need to use
+ the class, not the mapped selectable, as the source of
+ column attributes - so a warning is still issued.
+
+ - refined mapper._save_obj() which was unnecessarily calling
+ __ne__() on scalar values during flush [ticket:1015]
+
+ - added a feature to eager loading whereby subqueries set
+ as column_property() with explicit label names (which is not
+ necessary, btw) will have the label anonymized when
+ the instance is part of the eager join, to prevent
+ conflicts with a subquery or column of the same name
+ on the parent object. [ticket:1019]
+
+- declarative extension
+ - Joined table inheritance mappers use a slightly relaxed
+ function to create the "inherit condition" to the parent
+ table, so that other foreign keys to not-yet-declared
+ Table objects don't trigger an error.
+
+- sql
+ - Added COLLATE support via the .collate(<collation>)
+ expression operator and collate(<expr>, <collation>) sql
+ function.
+
+ - Fixed bug with union() when applied to non-Table connected
+ select statements
+
+ - improved behavior of text() expressions when used as
+ FROM clauses, such as select().select_from(text("sometext"))
+ [ticket:1014]
+
+- engines
+ - Pool listeners can now be provided as a dictionary of
+ callables or a (possibly partial) duck-type of
+ PoolListener, your choice.
+
+- mssql
+ - Added "odbc_autotranslate" parameter to engine / dburi
+ parameters. Any given string will be passed through to the
+ ODBC connection string as:
+
+ "AutoTranslate=%s" % odbc_autotranslate
+
+ [ticket:1005]
+
+ - Added "odbc_options" parameter to engine / dburi
+ parameters. The given string is simply appended to the
+ SQLAlchemy-generated odbc connection string.
+
+ This should obviate the need of adding a myriad of ODBC
+ options in the future.
+
+
+- firebird
+ - Handle the "SUBSTRING(:string FROM :start FOR :length)"
+ builtin.
+
+0.4.5
=====
-
-Please see:
-
- /doc/changelog/index.html
-
-or
|