Fixed documentation links to Query Expression API.
Fixed typo in 1.8 release notes.
Fixed typo in docs/ref/checks.txt.
Fixed imports in `Sitemap for static views` example
Corrected deprecation warning silencing of SubfieldBase.
Limited lines to 119 characters in django/

refs #23395.
Annotations accept non-aggregates Ticket #14030

Implement feedback from Ansii

Ensure aggregates can only be aggregated in subquery

get_cols replaced by get_group_by_cols

Fix annotation typo

Refactor expressions into smaller components

Inspiration for splitting the expression classes comes from PeeWee
which has a fairly good object model.

Split ExpressionNode into smaller units

All tests passing after refactor

Clean up expression implementation

Summarised aggregate state is passed through prepare

Make Col types into expressions

Small tweaks to improve the Func type

Fix regression with non-aggregate annotations

Tests for custom sql functions

Change arguments name to expressions

Fix documentation related to expression refactor

fix regressions when renaming template params

Documentation cleanup
Implemented doc feedback from @timgraham

sphinx spelling corrections

Fix early access of settings module

fix spatialite lookups

Add myself to AUTHORS

Alphabetise name in Authors

Fixed spatialite regression not resolving internal field

Removed col tuples from expressions

Use output_type in get_sources() instead of recursing

Removed broken multicolumn support from expressions

Fixed prepare() to return clone of self

Previously reuse of same F-object could lead to altering the query where
it was used before.

Also added some changes to how output_type is calculated. It is now OK
to have no output_type for inner expressions, but outer expressions must
always have one. Internally _output_type can return None, but
output_type can't. The reason is that we want to support F('foo') + 1,
where + 1 is converted to Value(1) and that doesn't have any known
output_type. It is thus OK to use the output_type of F('foo'). However,
if directly doing .annotate(Max(Value(1)), that isn't OK, as we need to
know the output_type of the value to do conversions. So, users still
must define output_type in that case, that is Max(Value(1),
output_type=IntegerField()). Another solution would be addition of
logic to Value() initialization so that it guesses the output type based
on isinstance checks.

Fix GeoAggregate after prepare refactor

Fix column alignment regression

Renamed output_type to output_field

Expose the field argument of prepare_database_save

Split out deferred annotation into its own test
Annotations now respect converters
Fixed documentation and warnings
Fixed flake8 warnings