summaryrefslogtreecommitdiff
path: root/doc/build/conf.py
Commit message (Collapse)AuthorAgeFilesLines
* tutorial 2.0 WIPreview/mike_bayer/tutorial20Mike Bayer2020-10-311-1/+1
| | | | | | | | | | | | | | Add SelectBase.exists() method as it seems strange this is not available already. The Exists construct itself does not provide full SELECT-building capabilities so it makes sense this should be used more like a scalar_subquery. Make sure stream_results is getting set up when yield_per is used, for 2.0 style statements as well. this was hardcoded inside of Query.yield_per() and is now moved to take place within QueryContext. Change-Id: Icafcd4fd9b708772343d56edf40995c9e8f835d6
* new docs WIPMike Bayer2020-09-241-1/+3
| | | | | | | | | | | | | | | This WIP is part of the final push for 1.4's docs to fully "2.0-ize" what we can, and have it all ready. So far this includes a rewrite of the 2.0 migration, set up for the 1.4 /2.0 docs style, and a total redesign of the index page using a new flex layout in zzzeeksphinx. It also reworks some of the API reference sections to have more subheaders. zzzeeksphinx is also enhanced to provide automatic summaries for all api doc section. Change-Id: I01d360cb9c8749520246b96ee6496143c6037918
* Add support for regular expression on supported backend.Federico Caselli2020-08-271-0/+1
| | | | | | | | | | | | Two operations have been defined: * :meth:`~.ColumnOperators.regexp_match` implementing a regular expression match like function. * :meth:`~.ColumnOperators.regexp_replace` implementing a regular expression string replace function. Fixes: #1390 Change-Id: I44556846e4668ccf329023613bd26861d5c674e6
* make URL immutableMike Bayer2020-08-251-0/+2
| | | | | | | | | | | | | | it's not really correct that URL is mutable and doesn't do any argument checking. propose replacing it with an immutable named tuple with rich copy-and-mutate methods. At the moment this makes a hard change to the CreateEnginePlugin docs that previously recommended url.query.pop(). I can't find any plugins on github other than my own that are using this feature, so see if we can just make a hard change on this one. Fixes: #5526 Change-Id: I28a0a471d80792fa8c28f4fa573d6352966a4a79
* Implement rudimentary asyncio support w/ asyncpgMike Bayer2020-08-131-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | Using the approach introduced at https://gist.github.com/zzzeek/6287e28054d3baddc07fa21a7227904e We can now create asyncio endpoints that are then handled in "implicit IO" form within the majority of the Core internals. Then coroutines are re-exposed at the point at which we call into asyncpg methods. Patch includes: * asyncpg dialect * asyncio package * engine, result, ORM session classes * new test fixtures, tests * some work with pep-484 and a short plugin for the pyannotate package, which seems to have so-so results Change-Id: Idbcc0eff72c4cad572914acdd6f40ddb1aef1a7d Fixes: #3414
* Documentation updates for 1.4Mike Bayer2020-08-051-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * major additions to 1.4 migration doc; removed additional verbosity regarding caching methodology and reorganized the doc to present itself more as a "what's changed" guide * as we now have a path for asyncio, update that doc so that we aren't spreading obsolete information * updates to the 2.0 migration guide with latest info, however this is still an architecture doc and not a migration guide yet, will need further rework. * start really talking about 1.x vs. 2.0 style everywhere. Querying is most of the docs so this is going to be a prominent theme, start getting it to fit in * Add introductory documentation for ORM example sections as these are too sparse * new documentation for do_orm_execute(), many separate sections, adding deprecation notes to before_compile() and similar * new example suites to illustrate do_orm_execute(), with_loader_criteria() * modernized horizontal sharding examples and added a separate example to distinguish between multiple databases and single database w/ multiple tables use case * introducing DEEP ALCHEMY, will use zzzeeksphinx 1.1.6 * no name for the alchemist yet however the dragon's name is Flambé Change-Id: Id6b5c03b1ce9ddb7b280f66792212a0ef0a1c541
* Rename Table.tometadata to to_metadataGord Thompson2020-06-291-0/+1
| | | | | | | | | | | | | | | | Renamed the :meth:`_schema.Table.tometadata` method to :meth:`_schema.Table.to_metadata`. The previous name remains with a deprecation warning. Updated the "decorate" utility function to support decoration of functions that include non-builtins as default values. Moves test for deprecated "databases" package into test/dialect/test_deprecations.py Fixes: #5413 Fixes: #5426 Change-Id: I6ed899871c935f9e46360127c17ccb7cf97cea6e
* Default psycopg2 executemany mode to "values_only"Mike Bayer2020-06-251-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The psycopg2 dialect now defaults to using the very performant ``execute_values()`` psycopg2 extension for compiled INSERT statements, and also impements RETURNING support when this extension is used. This allows INSERT statements that even include an autoincremented SERIAL or IDENTITY value to run very fast while still being able to return the newly generated primary key values. The ORM will then integrate this new feature in a separate change. Implements RETURNING for insert with executemany Adds support to return_defaults() mode and inserted_primary_key to support mutiple INSERTed rows, via return_defauls_rows and inserted_primary_key_rows accessors. within default execution context, new cached compiler getters are used to fetch primary keys from rows inserted_primary_key now returns a plain tuple. this is not yet a row-like object however this can be added. Adds distinct "values_only" and "batch" modes, as "values" has a lot of benefits but "batch" breaks cursor.rowcount psycopg2 minimum version 2.7 so we can remove the large number of checks for very old versions of psycopg2 simplify tests to no longer distinguish between native and non-native json Fixes: #5401 Change-Id: Ic08fd3423d4c5d16ca50994460c0c234868bd61c
* Unify Query and select() , move all processing to compile phaseMike Bayer2020-05-241-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | Convert Query to do virtually all compile state computation in the _compile_context() phase, and organize it all such that a plain select() construct may also be used as the source of information in order to generate ORM query state. This makes it such that Query is not needed except for its additional methods like from_self() which are all to be deprecated. The construction of ORM state will occur beyond the caching boundary when the new execution model is integrated. future select() gains a working join() and filter_by() method. as we continue to rebase and merge each commit in the steps, callcounts continue to bump around. will have to look at the final result when it's all in. References: #5159 References: #4705 References: #4639 References: #4871 References: #5010 Change-Id: I19e05b3424b07114cce6c439b05198ac47f7ac10
* Expand CTE testing and begin to make this more prominent.Mike Bayer2020-05-081-1/+1
| | | | | | | | | | | | | | | | | | | SQLite supports CTEs as do both the MariaDB and MySQL databases now. Expand test support and begin adding new tutorial sections to make this concept more prominent. Also fix some formatting issues in the tutorial, and start moving more towards {opensql} - the "SQL" button thing is cool but the tutorials mainly need to illustrate how the SQL looks for things. Screens are bigger now and we likely should move away from the SQL button almost entirely. CTE for the tutorial needed zzzeeksphinx fix to recognize "WITH" so bumping that to latest release number in git. Change-Id: Ia1bbe3248b4f7c74fbee06fedf76a6ce94cd28a6 References: #5269
* Consider aliased=True, from_joinpoint as legacyMike Bayer2020-05-041-0/+2
| | | | | | | | | | | | | | | | For a 1.4 / 1.3 merge, rewrite the documentation for Query.join() to indicate calling forms that are now considered legacy, including the use of strings in join(), sending a series of join paths in one call, and using the aliased=True flag. update the elementtree examples as well to use aliased() (they are much simpler to understand this way too) and update other links. Also improve docs for aliased() and some other ORM targets such as PropComparator. Change-Id: I636e3a9130dc5509e51c2cf60a52f38fcadffbc6 References: #4705
* Documentation updates for ResultProxy -> ResultMike Bayer2020-05-011-0/+4
| | | | | | | | | This is based off of I8091919d45421e3f53029b8660427f844fee0228 and includes all documentation-only changes as a separate merge, once the parent is merged. Change-Id: I711adea23df0f9f0b1fe7c76210bd2de6d31842d
* Enable zzzeeksphinx module prefixesMike Bayer2020-04-141-0/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | zzzeeksphinx 1.1.2 in git can now convert short prefix names in a configured lookup to fully qualified module names, so that we can have succinct and portable pyrefs that still resolve absolutely. It also includes a formatter that will format all pyrefs in a fully consistent way regardless of the package path, by unconditionally removing all package tokens but always leaving class names in place including for methods, which means we no longer have to deal with tildes in pyrefs. The most immediate goal of the absolute prefixes is that we have lots of "ambiguous" names that appear in muliple places, like select(), ARRAY, ENUM etc. With the incoming future packages there is going to be lots of name overlap so it is necessary that all names eventually use absolute package paths when Sphinx receives them. In multiple stages, pyrefs will be converted using the zzzeeksphinx tools/fix_xrefs.py tool so that doclinks can be made absolute using symbolic prefixes. For this review, the actual search and replace of symbols is not performed, instead some general cleanup to prepare the docs as well as a lookup file used by the tool to do the conversion. this relatively small patch will be backported with appropriate changes to 1.3, 1.2, 1.1 and the tool can then be run on each branch individually. We are shooting for almost no warnings at all for master (still a handful I can't figure out which don't seem to have any impact) , very few for 1.3, and for 1.2 / 1.1 we hope for a significant reduction in warnings. Overall for all versions pyrefs should always point to the correct target, if they are in fact hyperlinked. it's better for a ref to go nowhere and be plain text than go to the wrong thing. Right now, hundreds of API links are pointing to the wrong thing as they are ambiguous names such as refresh(), insert(), update(), select(), join(), JSON etc. and Sphinx sends these all to essesntially random destinations among as many as five or six possible choices per symbol. A shorthand system that allows us to use absolute refs without having to type out a full blown absoulte module is the only way this is going to work, and we should ultimately seek to abandon any use of prefix dot for lookups. Everything should be on an underscore token so at the very least the module spaces can be reorganized without having to search and replace the entire documentation every time. Change-Id: I484a7329034af275fcdb322b62b6255dfeea9151
* Create initial future package, RemovedIn20WarningMike Bayer2020-02-121-1/+1
| | | | | | | | | | | | | | | | | Reorganization of Select() is the first major element of the 2.0 restructuring. In order to start this we need to first create the new Select constructor and apply legacy elements to the old one. This in turn necessitates starting up the RemovedIn20Warning concept which itself need to refer to "sqlalchemy.future", so begin to establish this basic framework. Additionally, update the DML constructors with the newer no-keyword style. Remove the use of the "pending deprecation" and fix Query.add_column() deprecation which was not acting as deprecated. Fixes: #4845 Fixes: #4648 Change-Id: I0c7a22b2841a985e1c379a0bb6c94089aae6264c
* happy new yearMike Bayer2020-01-011-1/+1
| | | | Change-Id: I08440dc25e40ea1ccea1778f6ee9e28a00808235
* Add "usecase" changelog tagMike Bayer2019-06-031-101/+122
| | | | | | | | | | | | | | | "usecase" indicates the library now supports something a user was trying to do. It's not quite a "feature" since it's something that seems like it should have worked, it's not a "bug" because no mistake was made, it's just something that wasn't considered before. The advantage of "usecase" is that it inherently suggests a different style of prioritization vs. something that is preventing the library from working as designed. This change also adds docs/build/conf.py under the pep8 formatting test coverage. Change-Id: I790ccb799864fec48e4695aedeed2814ab9d493e
* - continued 1.4 setup, somehow the commit didn't workMike Bayer2019-04-271-3/+3
| | | | | Fixes: #4631 Change-Id: I400e388a704aa6ee7722a89687a033083ce22550
* - 1.3.3rel_1_3_3Mike Bayer2019-04-151-2/+2
|
* - 1.3.2rel_1_3_2Mike Bayer2019-04-021-2/+2
|
* - 1.3.1rel_1_3_1Mike Bayer2019-03-091-2/+2
|
* - 1.3.0rel_1_3_0Mike Bayer2019-03-041-2/+2
|
* - 1.3.0b3rel_1_3_0b3Mike Bayer2019-02-081-2/+2
|
* - 1.3.0b2rel_1_3_0b2Mike Bayer2019-01-251-2/+2
|
* happy new yearMike Bayer2019-01-111-1/+1
| | | | Change-Id: I6a71f4924d046cf306961c58dffccf21e9c03911
* Move links etc. to github, new alembic linksMike Bayer2018-11-261-3/+2
| | | | Change-Id: I59392d355a216ae59552a04c5508f548b901aa7b
* - 1.3.0b1rel_1_3_0b1Mike Bayer2018-11-161-1/+1
|
* Remove unnecessary unicode and raw string prefixDenis Kataev2018-09-281-2/+2
|
* Setup master as 1.3Mike Bayer2018-03-021-3/+3
| | | | Change-Id: I1e8240d19f891cb6575f10d93524b551d74864ea
* - 1.2.4rel_1_2_4Mike Bayer2018-02-221-2/+2
|
* - 1.2.3rel_1_2_3Mike Bayer2018-02-161-2/+2
|
* - 1.2.2rel_1_2_2Mike Bayer2018-01-241-2/+2
|
* - 1.2.1rel_1_2_1Mike Bayer2018-01-151-2/+2
|
* - add missing 2018 update to conf.pyMike Bayer2018-01-151-1/+1
| | | | Change-Id: Ie2d4ff9486375867ed6958b82cd2595bae43746d
* - Add notfound pageMike Bayer2017-12-291-1/+3
| | | | Change-Id: Ie62014ff70c2a517e11ac76f8022f87f706020df
* - 1.2.0rel_1_2_0Mike Bayer2017-12-271-2/+2
|
* - 1.2.0b3Mike Bayer2017-10-131-2/+2
|
* - 1.2.0b2rel_1_2_0b2Mike Bayer2017-07-241-2/+2
|
* - move to file-per-changelog for unreleased change notes,Mike Bayer2017-07-221-6/+7
| | | | | | | | | | | so that we no longer have to rely upon merges within the changelog files. because gerrit doesn't allow us to use custom merge engines unlike git, we have no ability to merge multiple changes into the changelog files without going through conflicts. new version of changelog in git supports these new patterns. Change-Id: I588eebd027b4ad3428bd522f36a6f1cd77f105bb
* - 1.2.0b1rel_1_2_0b1Mike Bayer2017-07-101-1/+1
|
* - remove intersphinx usage, the overhead of re-fetchingMike Bayer2017-07-091-10/+3
| | | | | | inventory on every build not worth it Change-Id: I3c4506b246d0f327c4b56afa723975daee984476
* - begin the 1.2 branch in master, diverge from 1.1Mike Bayer2017-03-101-3/+3
| | | | Change-Id: I446f7528046873bf2d547daec043737b1bffe5f4
* - 1.1.6rel_1_1_6Mike Bayer2017-02-281-2/+2
|
* - 1.1.5rel_1_1_5Mike Bayer2017-01-171-2/+2
|
* update for 2017 copyrightMike Bayer2017-01-041-1/+1
| | | | Change-Id: I4e8c2aa8fe817bb2af8707410fa0201f938781de
* - 1.1.4rel_1_1_4Mike Bayer2016-11-151-2/+2
|
* - 1.1.3rel_1_1_3Mike Bayer2016-10-271-2/+2
|
* - 1.1.2rel_1_1_2Mike Bayer2016-10-171-2/+2
|
* - 1.1.1rel_1_1_1Mike Bayer2016-10-071-2/+2
|
* - 1.1.0rel_1_1_0Mike Bayer2016-10-051-2/+2
|
* - 1.1.0b3rel_1_1_0b3Mike Bayer2016-07-261-2/+2
|