Changelog
### 1.2.3
```
MkDocs 1.2.3 is a bugfix release for [MkDocs 1.2](https://www.mkdocs.org/about/release-notes/#version-12-2021-06-04).
*Aside*: MkDocs has a new [chat room](https://gitter.im/mkdocs/community) on Gitter/Matrix. [More details](https://github.com/mkdocs/mkdocs#support).
Improvements:
* Built-in themes now also support these languages:
* Simplified Chinese (2497)
* Japanese (2525)
* Brazilian Portuguese (2535)
* Spanish (2545, previously 2396)
* Third-party plugins will take precedence over built-in plugins with the same name (2591)
* Bugfix: Fix ability to load translations for some languages: core support (2565) and search plugin support with fallbacks (2602)
* Bugfix (regression in 1.2): Prevent directory traversal in the dev server (2604)
* Bugfix (regression in 1.2): Prevent webserver warnings from being treated as a build failure in strict mode (2607)
* Bugfix: Correctly print colorful messages in the terminal on Windows (2606)
* Bugfix: Python version 3.10 was displayed incorrectly in `--version` (2618)
Other small improvements; see [commit log](https://github.com/mkdocs/mkdocs/compare/1.2.2...1.2.3).
```
### 1.2.2
```
MkDocs 1.2.2 is a bugfix release for [MkDocs 1.2](https://www.mkdocs.org/about/release-notes/#version-12-2021-06-04) -- make sure you've seen the "major" release notes as well.
* Bugfix (regression in 1.2): Fix serving files/paths with Unicode characters (2464)
* Bugfix (regression in 1.2): Revert livereload file watching to use polling observer (2477)
This had to be done to reasonably support usages that span virtual filesystems such as non-native Docker and network mounts.
This goes back to the polling approach, very similar to that was always used prior, meaning most of the same downsides with latency and CPU usage.
* Revert from 1.2: Remove the requirement of a `site_url` config and the restriction on `use_directory_urls` (2490)
* Bugfix (regression in 1.2): Don't require trailing slash in the URL when serving a directory index in `mkdocs serve` server (2507)
Instead of showing a 404 error, detect if it's a directory and redirect to a path with a trailing slash added, like before.
* Bugfix: Fix `gh_deploy` with config-file in the current directory (2481)
* Bugfix: Fix reversed breadcrumbs in "readthedocs" theme (2179)
* Allow "mkdocs.yaml" as the file name when '--config' is not passed (2478)
* Stop treating ";" as a special character in URLs: urlparse -> urlsplit (2502)
* Improve build performance for sites with many pages (partly already done in 1.2) (2407)
```
Links
- PyPI: https://pypi.org/project/mkdocs
- Changelog: https://pyup.io/changelogs/mkdocs/
- Homepage: https://www.mkdocs.org
Changelog
### 8.1.3
```
* Added animation to active content tab indicator
* Fixed 3360: Highlighted lines add blank lines in copied text
* Fixed usage of subsequent index files when using section index pages
mkdocs-material-8.1.2+insiders-4.5.0 (2021-12-16)
* Added support for navigation icons
```
### 8.1.2
```
* Switched CSS sources to logical properties
* Added transformation of logical properties to ltr/rtl equivalents
* Fixed spacing for admonitions inside lists (8.1.1 regression)
```
### 8.1.1
```
* Added support for only-light and only-dark image hash fragments
* Fixed copy-to-clipboard adding blank lines when using line anchors
* Fixed code annotation directionality for right-to-left languages
* Fixed header title positioning for right-to-left languages
* Fixed admonition borders for right-to-left languages (8.0.0 regression)
* Fixed footer navigation link positioning (8.0.0 regression)
* Fixed footer navigation title breaking out of container when too long
* Fixed shrinking arrow in navigation title when too long
* Fixed 3343: Filtered stopwords appear as missing search terms
* Fixed 3346: Site unusable due to usage of :not() (Firefox 78 ESR)
mkdocs-material-8.1.0+insiders-4.4.0 (2021-12-10)
* Added support for code annotation anchor links (deep linking)
* Added new code annotation syntax modifier to strip comment
* Updated German translations for cookie consent
```
### 8.1.0
```
* Added basic support for code block line anchors
* Switched code annotation markers to + signs to improve usability
* Switched main site title to bold font
* Improved admonition icon positioning to align when font-size is increased
* Improved and simplified footnotes CSS
* Improved and simplified code annotation positioning
* Fixed syntax error in Russian translations
```
### 8.0.5
```
* Fixed 3302: Footer refactoring induced ellipsis in some browsers
* Fixed 3313: Details always rendered closed on load (8.0.4 regression)
mkdocs-material-8.0.4+insiders-4.3.0 (2021-12-05)
* Added support for custom fonts in social cards
* Fixed 3300: Announcement bar reappearing when using instant loading
```
### 8.0.4
```
* Improved support for deeply nested code annotations
* Improved code annotation and copy-to-clipboard interop
* Improved styling for code annotations inside admonitions
* Fixed 3274: Invalid anchor positioning when using instant loading
* Fixed 3294: Lists after code blocks without code annotations disappearing
* Fixed several positioning issues for code annotations
* Fixed JavaScript source map roots
mkdocs-material-8.0.3+insiders-4.2.0 (2021-12-02)
* Added support for dismissable announcement bar
* Added support for named placeholders in feedback widget
```
### 8.0.3
```
* Removed deprecated google_analytics setting (was forgotten in 8.0.0)
* Fixed syntax error in Swedish and Polish translations
* Fixed 3283: Invalid back-to-top button position with sticky navigation tabs
* Fixed 3285: Default details marker showing due to Safari bug
mkdocs-material-8.0.2+insiders-4.1.0 (2021-11-30)
* Added support for passing page title to feedback forms
```
### 8.0.2
```
* Fixed 3275: Code annotations always disappear on click
```
### 8.0.1
```
* Improved rendering of code annotation markers
* Fixed 3265: Wrong margin on nested admonitions
* Fixed wrong box-sizing for code annotations in details
```
### 8.0.0
```
* Added support for code annotations
* Added support for anchor tracking
* Added support for version warning
* Added copyright partial for easier override
* Removed deprecated content tabs legacy implementation
* Removed deprecated seealso admonition type
* Removed deprecated site_keywords setting (unsupported by MkDocs)
* Removed deprecated prebuilt search index support
* Removed deprecated web app manifest – use customization
* Removed extracopyright variable – use new copyright partial
* Removed Disqus integation – use customization
* Switched to :is() selectors for simple selector lists
* Switched autoprefixer from last 4 years to last 2 years
* Improved CSS overall to match modern standards
* Improved CSS variable semantics for fonts
* Improved extensibility by restructuring partials
* Improved handling of details when printing
* Improved keyboard navigation for footnotes
* Fixed 3214: Search highlighting breaks site when empty
mkdocs-material-7.3.6+insiders-3.2.3 (2021-11-20)
* Updated Swedish and French translations
* Removed support for .mermaid-experimental class (now .mermaid)
* Fixed 3202: Cookie consent not dismissable on file:// locations
* Fixed 3216: Cookie consent not dismissed when invoked via anchor
* Fixed 3232: Mermaid.js sometimes runs twice (race condition)
mkdocs-material-7.3.6+insiders-3.2.2 (2021-11-06)
* Fixed always last feedback rating being sent
* Fixed 3145: Code annotations eat whole comment lines
* Fixed 3170: Feedback widget doesn't send data to GA4
mkdocs-material-7.3.6+insiders-3.2.1 (2021-11-04)
* Added support for custom Mermaid.js version via additional JavaScript
* Fixed some configuration edge cases for tags plugin (3.1.5 regression)
* Fixed feedback widget title not being centered in Firefox
* Fixed 3179: Safari doesn't send request for feedback widget
mkdocs-material-7.3.6+insiders-3.2.0 (2021-10-31)
* Added support for feedback widget (Was this page helpful?)
```
### 7.3.6
```
* Added support for adding titles to code blocks
mkdocs-material-7.3.5+insiders-3.1.5 (2021-10-28)
* Fixed 3144: Rogue link when using tags with auto-populated navigation
* Fixed 3147: Code block line numbers appear in search results
* Fixed 3158: Social cards do not strip HTML tags from title
```
### 7.3.5
```
* Added support for setting table of contents title via mkdocs.yml
* Fixed back-to-top button position for right-to-left languages
mkdocs-material-7.3.4+insiders-3.1.4 (2021-10-17)
* Fixed 2974: Text cropped with other fonts than Roboto in social plugin
* Fixed 3099: Encoding problems with non-latin character in social plugin
* Fixed 3112: Japanese segmenter not executed as part of new tokenizer
* Fixed tags (front matter) appearing in search with disabled tags plugin
```
### 7.3.4
```
* Bumped MkDocs version to 1.2.3 to mitigate CVE-2021-40978
* Fixed spacing issues when using integrate table of contents with tabs
* Fixed some spacings issues for right-to-left languages
* Fixed race condition in search initialization
mkdocs-material-7.3.3+insiders-3.1.3 (2021-10-12)
* Added warnings to search plugin for unsupported options and syntax
* Fixed 3503: Search sometimes returns entire page
* Fixed 3089: Single-line code annotations disappear when printing
```
### 7.3.3
```
* Rewrite of entire documentation
* Adjusted height of new content tabs to match single line code blocks
* Fixed new content tabs missing right padding in some browsers on overflow
* Fixed new content tabs bleeding out of flex container on overflow
* Fixed new content tabs overflow scrolling bugs on some browsers
* Fixed new content tabs stealing keyboard access when active
* Fixed some spacings issues for right-to-left languages
mkdocs-material-7.3.2+insiders-3.1.2 (2021-10-06)
* Fixed incorrect path separators for social cards on Windows
```
### 7.3.2
```
* Deprecated prebuilding of search index
* Improved graceful handling of broken search for file://
* Added minimum Jinja version to list of requirements
* Fixed 3071: Section index pages render empty directories
* Fixed margin issues when using navigation tabs (7.3.1 regression)
* Fixed search placeholder sometimes being shown too early
```
### 7.3.1
```
* Added new experimental content tabs implementation
* Fixed 3069: GitHub stats broken for users/orgs (7.1.0 regression)
* Fixed 3070: Sections not linking to index page
* Fixed title not linking to index page when using tabs
* Fixed Disqus integration when using instant loading
* Fixed some spacing issues for right-to-left languages
* Fixed syntax error in Serbian translations
mkdocs-material-7.3.0+insiders-3.1.1 (2021-09-26)
* Fixed ordering bug in search exclusion logic
mkdocs-material-7.3.0+insiders-3.1.0 (2021-09-26)
* Added support for excluding pages, sections, and elements from search
* Fixed 2803: Code block annotations not visible when printing
```
### 7.3.0
```
* Added support for sticky navigation tabs
* Added support for section index pages
* Added support for removing generator notice
```
### 7.2.8
```
* Fixed 3039: Search modal overlays menu on mobile (7.2.7 regression)
mkdocs-material-7.2.7+insiders-3.0.1 (2021-09-19)
* Added support for using literal h1-6 tags for search plugin
* Fixed search plugin breaking on void elements without slashes
* Fixed search plugin filtering link contents from headlines
* Fixed search plugin handling of multiple h1 headlines
* Fixed search plugin handling of missing h1 headlines
```
### 7.2.7
```
* Updated Serbian and Serbo-Croatian translations
* Improved appearance of outline on details
* Fixed 2934: Scrollbar when header is hidden on some mobile browsers
* Fixed 3032: Anchor in details doesn't open on load (7.0.0 regression)
* Fixed back-to-top button being focusable when invisible
* Fixed broken admonition icons (removed in upstream)
mkdocs-material-7.2.6+insiders-3.0.0 (2021-09-13)
* Rewrite of MkDocs' search plugin
* Added support for rich search previews
* Added support for tokenizer with lookahead
* Improved search indexing performance (twice as fast)
* Improved search highlighting
mkdocs-material-7.2.6+insiders-2.13.3 (2021-09-01)
* Added support for disabling social card generation
```
### 7.2.6
```
* Fixed rendering of blockquote elements (7.0.0 regression)
* Fixed 2973: Custom search worker setting ignored
mkdocs-material-7.2.5+insiders-2.13.2 (2021-08-25)
* Fixed 2965: Social plugin error when primary color is not defined
```
### 7.2.5
```
* Updated Portuguese translations
* Fixed execution of RxJS teardown logic (7.2.3 regression)
* Fixed 2970: Search results show escaped characters (7.2.2 regression)
mkdocs-material-7.2.4+insiders-2.13.1 (2021-08-22)
* Fixed 2948: Social cards are not cached
* Fixed 2953: Mermaid.js diagrams can't be centered anymore
```
### 7.2.4
```
* Fixed 2926: Version selector not working (7.2.3 regression)
* Fixed 2929: Missing CSS class for banner (consistency with Insiders)
```
### 7.2.3
```
* Slight facelift of data tables, now closer to Material Design
* Fixed instant loading not respecting clicks on search results
* Fixed 2881: Invalid anchor offsets when using instant loading
mkdocs-material-7.2.2+insiders-2.13.0 (2021-08-07)
* Added support for custom colors in social cards
mkdocs-material-7.2.2+insiders-2.12.2 (2021-08-04)
* Fixed 2891: Division by zero error in social plugin
```
### 7.2.2
```
* Updated Korean translations
* Fixed 2879: Search highlighting does not properly escape HTML
mkdocs-material-7.2.1+insiders-2.12.1 (2021-07-26)
* Fixed error in social plugin when site_description was not set
* Fixed error in social plugin for non-ASCII characters
mkdocs-material-7.2.1+insiders-2.12.0 (2021-07-25)
* Added support for social cards
```
### 7.2.1
```
* Fixed 2862: Back-to-top button overlays active search bar
```
### 7.2.0
```
* Added support for search suggestions to save keystrokes
* Added support for search highlighting
* Added support for search sharing (i.e. deep linking)
mkdocs-material-7.1.11+insiders-2.11.1 (2021-07-20)
* Fixed order of tags index, now sorted alphabetically
mkdocs-material-7.1.11+insiders-2.11.0 (2021-07-18)
* Improved Mermaid.js integration, now stable
* Added support for sequence diagrams
* Added support for entity relationship diagrams
* Added support for cookie consent configuration
* Added feature flag to always enable annotations
```
### 7.1.11
```
* Updated Spanish and Galician translations
mkdocs-material-7.1.10+insiders-2.10.0 (2021-07-10)
* Added support for cookie consent
* Fixed 2807: Back-to-top button not hidden when using sticky tabs
```
### 7.1.10
```
* Refactored appearance of back-to-top button
* Fixed graceful handling of search when browsing locally
```
### 7.1.9
```
* Improved search language support for Thai and Hindi
* Fixed 2761: License comments lined up at end of file
```
### 7.1.8
```
* Refactored analytics integration (because of MkDocs 1.2)
* Added support for Google Analytics 4 (gtag.js)
* Fixed missing escape for aria-label in footer links
```
### 7.1.7
```
* Improved screen reader support
mkdocs-material-7.1.6+insiders-2.9.2 (2021-05-30)
* Moved tags to partial for easier customization
* Added support for hiding tags on any page
```
### 7.1.6
```
* Deprecated seealso admonition qualifier
* Added Mongolian and updated Chinese translations
* Fixed 2429: Version selector not touch-friendly on Android devices
* Fixed 2703: Printed 'Initializing search' albeit ready on mobile
mkdocs-material-7.1.5+insiders-2.9.1 (2021-05-24)
* Added missing guard for linking of content tabs
mkdocs-material-7.1.5+insiders-2.9.0 (2021-05-23)
* Added support for linking of content tabs
```
### 7.1.5
```
* Fixed 2655: Details breaking page margins on print
mkdocs-material-7.1.4+insiders-2.8.0 (2021-05-12)
* Added support for boosting pages in search
mkdocs-material-7.1.4+insiders-2.7.2 (2021-05-08)
* Fixed 2638: Warnings shown when using tags plugin without directory URLs
```
### 7.1.4
```
* Added support for git-revision-date-localized plugin creation date
* Improved footnote styles on :target and :focus
mkdocs-material-7.1.3+insiders-2.7.1 (2021-05-03)
* Fixed git-revision-date-localized plugin integration (2.7.0 regression)
mkdocs-material-7.1.3+insiders-2.7.0 (2021-05-01)
* Added support for tags (with search integration)
```
### 7.1.3
```
* Fixed 2586: Empty table of contents shown (7.1.2 regression)
```
### 7.1.2
```
* Fixed 2554: List markers sometimes overlap floated elements
* Fixed 2563: Adding a class to a h1 breaks the table of contents
* Fixed 2566: Back-to-top button clickable when invisible
mkdocs-material-7.1.1+insiders-2.6.0 (2021-04-11)
* Stay on page when switching versions
```
### 7.1.1
```
* Fixed 2501: Nested definition lists compound bottom margin
* Fixed 2508: Switch extracopyright block to template variable
* Fixed 2533: Search (and other parts) not working in Safari <14
* Fixed 2538: Visual quirk when opening language selector
```
### 7.1.0
```
* Added support for color palette toggle
* Added support for back-to-top button
* Added latest release to repository info (GitHub)
* Slight facelift of repository info (lighter fonts, spacing and icons)
mkdocs-material-7.0.7+insiders-2.5.0 (2021-03-28)
* Added support for version warning
```
### 7.0.7
```
* Updated Hungarian translations
* Fixed 2466: Docker image not based on latest Python and Alpine
* Fixed 2488: Inconsistent header shadow behavior
* Fixed 2492: Inline code blocks in admonition titles missing background
mkdocs-material-7.0.6+insiders-2.4.0 (2021-03-20)
* Added support for custom admonition icons
* Fixed 2444: Code block annotations with extra comments have wrong index
mkdocs-material-7.0.6+insiders-2.3.1 (2021-03-14)
* Fixed anchor offset for permalinks when using sticky navigation tabs
```
Links
- PyPI: https://pypi.org/project/mkdocs-material
- Changelog: https://pyup.io/changelogs/mkdocs-material/
- Repo: https://squidfunk.github.io/mkdocs-material/
Changelog
### 21.12b0
```
_Black_
- Fix determination of f-string expression spans (2654)
- Fix bad formatting of error messages about EOF in multi-line statements (2343)
- Functions and classes in blocks now have more consistent surrounding spacing (2472)
Jupyter Notebook support
- Cell magics are now only processed if they are known Python cell magics. Earlier, all
cell magics were tokenized, leading to possible indentation errors e.g. with
`%%writefile`. (2630)
- Fix assignment to environment variables in Jupyter Notebooks (2642)
Python 3.10 support
- Point users to using `--target-version py310` if we detect 3.10-only syntax (2668)
- Fix `match` statements with open sequence subjects, like `match a, b:` or
`match a, *b:` (2639) (2659)
- Fix `match`/`case` statements that contain `match`/`case` soft keywords multiple
times, like `match re.match()` (2661)
- Fix `case` statements with an inline body (2665)
- Fix styling of starred expressions inside `match` subject (2667)
- Fix parser error location on invalid syntax in a `match` statement (2649)
- Fix Python 3.10 support on platforms without ProcessPoolExecutor (2631)
- Improve parsing performance on code that uses `match` under `--target-version py310`
up to ~50% (2670)
Packaging
- Remove dependency on `regex` (2644) (2663)
```
### 21.11b1
```
_Black_
- Bumped regex version minimum to 2021.4.4 to fix Pattern class usage (2621)
```
### 21.11b0
```
_Black_
- Warn about Python 2 deprecation in more cases by improving Python 2 only syntax
detection (2592)
- Add experimental PyPy support (2559)
- Add partial support for the match statement. As it's experimental, it's only enabled
when `--target-version py310` is explicitly specified (2586)
- Add support for parenthesized with (2586)
- Declare support for Python 3.10 for running Black (2562)
Integrations
- Fixed vim plugin with Python 3.10 by removing deprecated distutils import (2610)
- The vim plugin now parses `skip_magic_trailing_comma` from pyproject.toml (2613)
```
### 21.10b0
```
_Black_
- Document stability policy, that will apply for non-beta releases (2529)
- Add new `--workers` parameter (2514)
- Fixed feature detection for positional-only arguments in lambdas (2532)
- Bumped typed-ast version minimum to 1.4.3 for 3.10 compatibility (2519)
- Fixed a Python 3.10 compatibility issue where the loop argument was still being passed
even though it has been removed (2580)
- Deprecate Python 2 formatting support (2523)
_Blackd_
- Remove dependency on aiohttp-cors (2500)
- Bump required aiohttp version to 3.7.4 (2509)
_Black-Primer_
- Add primer support for --projects (2555)
- Print primer summary after individual failures (2570)
Integrations
- Allow to pass `target_version` in the vim plugin (1319)
- Install build tools in docker file and use multi-stage build to keep the image size
down (2582)
```
### 21.9b0
```
Packaging
- Fix missing modules in self-contained binaries (2466)
- Fix missing toml extra used during installation (2475)
```
### 21.8b0
```
_Black_
- Add support for formatting Jupyter Notebook files (2357)
- Move from `appdirs` dependency to `platformdirs` (2375)
- Present a more user-friendly error if .gitignore is invalid (2414)
- The failsafe for accidentally added backslashes in f-string expressions has been
hardened to handle more edge cases during quote normalization (2437)
- Avoid changing a function return type annotation's type to a tuple by adding a
trailing comma (2384)
- Parsing support has been added for unparenthesized walruses in set literals, set
comprehensions, and indices (2447).
- Pin `setuptools-scm` build-time dependency version (2457)
- Exclude typing-extensions version 3.10.0.1 due to it being broken on Python 3.10
(2460)
_Blackd_
- Replace sys.exit(-1) with raise ImportError as it plays more nicely with tools that
scan installed packages (2440)
Integrations
- The provided pre-commit hooks no longer specify `language_version` to avoid overriding
`default_language_version` (2430)
```
### 21.7b0
```
_Black_
- Configuration files using TOML features higher than spec v0.5.0 are now supported
(2301)
- Add primer support and test for code piped into black via STDIN (2315)
- Fix internal error when `FORCE_OPTIONAL_PARENTHESES` feature is enabled (2332)
- Accept empty stdin (2346)
- Provide a more useful error when parsing fails during AST safety checks (2304)
Docker
- Add new `latest_release` tag automation to follow latest black release on docker
images (2374)
Integrations
- The vim plugin now searches upwards from the directory containing the current buffer
instead of the current working directory for pyproject.toml. (1871)
- The vim plugin now reads the correct string normalization option in pyproject.toml
(1869)
- The vim plugin no longer crashes Black when there's boolean values in pyproject.toml
(1869)
```
### 21.6b0
```
_Black_
- Fix failure caused by `fmt: skip` and indentation (2281)
- Account for += assignment when deciding whether to split string (2312)
- Correct max string length calculation when there are string operators (2292)
- Fixed option usage when using the `--code` flag (2259)
- Do not call `uvloop.install()` when _Black_ is used as a library (2303)
- Added `--required-version` option to require a specific version to be running (2300)
- Fix incorrect custom breakpoint indices when string group contains fake f-strings
(2311)
- Fix regression where `R` prefixes would be lowercased for docstrings (2285)
- Fix handling of named escapes (`\N{...}`) when `--experimental-string-processing` is
used (2319)
Integrations
- The official Black action now supports choosing what version to use, and supports the
major 3 OSes. (1940)
```
### 21.5b2
```
_Black_
- A space is no longer inserted into empty docstrings (2249)
- Fix handling of .gitignore files containing non-ASCII characters on Windows (2229)
- Respect `.gitignore` files in all levels, not only `root/.gitignore` file (apply
`.gitignore` rules like `git` does) (2225)
- Restored compatibility with Click 8.0 on Python 3.6 when LANG=C used (2227)
- Add extra uvloop install + import support if in python env (2258)
- Fix --experimental-string-processing crash when matching parens are not found (2283)
- Make sure to split lines that start with a string operator (2286)
- Fix regular expression that black uses to identify f-expressions (2287)
_Blackd_
- Add a lower bound for the `aiohttp-cors` dependency. Only 0.4.0 or higher is
supported. (2231)
Packaging
- Release self-contained x86_64 MacOS binaries as part of the GitHub release pipeline
(2198)
- Always build binaries with the latest available Python (2260)
Documentation
- Add discussion of magic comments to FAQ page (2272)
- `--experimental-string-processing` will be enabled by default in the future (2273)
- Fix typos discovered by codespell (2228)
- Fix Vim plugin installation instructions. (2235)
- Add new Frequently Asked Questions page (2247)
- Fix encoding + symlink issues preventing proper build on Windows (2262)
```
### 21.5b1
```
_Black_
- Refactor `src/black/__init__.py` into many files (2206)
Documentation
- Replaced all remaining references to the
[`master`](https://github.com/psf/black/tree/main) branch with the
[`main`](https://github.com/psf/black/tree/main) branch. Some additional changes in
the source code were also made. (2210)
- Sigificantly reorganized the documentation to make much more sense. Check them out by
heading over to [the stable docs on RTD](https://black.readthedocs.io/en/stable/).
(2174)
```
### 21.5b0
```
_Black_
- Set `--pyi` mode if `--stdin-filename` ends in `.pyi` (2169)
- Stop detecting target version as Python 3.9+ with pre-PEP-614 decorators that are
being called but with no arguments (2182)
_Black-Primer_
- Add `--no-diff` to black-primer to suppress formatting changes (2187)
```
### 21.4b2
```
_Black_
- Fix crash if the user configuration directory is inaccessible. (2158)
- Clarify
[circumstances](https://github.com/psf/black/blob/master/docs/the_black_code_style.md#pragmatism)
in which _Black_ may change the AST (2159)
- Allow `.gitignore` rules to be overridden by specifying `exclude` in `pyproject.toml`
or on the command line. (2170)
_Packaging_
- Install `primer.json` (used by `black-primer` by default) with black. (2154)
```
### 21.4b1
```
_Black_
- Fix crash on docstrings ending with "\\ ". (2142)
- Fix crash when atypical whitespace is cleaned out of dostrings (2120)
- Reflect the `--skip-magic-trailing-comma` and `--experimental-string-processing` flags
in the name of the cache file. Without this fix, changes in these flags would not take
effect if the cache had already been populated. (2131)
- Don't remove necessary parentheses from assignment expression containing assert /
return statements. (2143)
_Packaging_
- Bump pathspec to >= 0.8.1 to solve invalid .gitignore exclusion handling
```
### 21.4b0
```
_Black_
- Fixed a rare but annoying formatting instability created by the combination of
optional trailing commas inserted by `Black` and optional parentheses looking at
pre-existing "magic" trailing commas. This fixes issue 1629 and all of its many many
duplicates. (2126)
- `Black` now processes one-line docstrings by stripping leading and trailing spaces,
and adding a padding space when needed to break up """". (1740)
- `Black` now cleans up leading non-breaking spaces in comments (2092)
- `Black` now respects `--skip-string-normalization` when normalizing multiline
docstring quotes (1637)
- `Black` no longer removes all empty lines between non-function code and decorators
when formatting typing stubs. Now `Black` enforces a single empty line. (1646)
- `Black` no longer adds an incorrect space after a parenthesized assignment expression
in if/while statements (1655)
- Added `--skip-magic-trailing-comma` / `-C` to avoid using trailing commas as a reason
to split lines (1824)
- fixed a crash when PWD=/ on POSIX (1631)
- fixed "I/O operation on closed file" when using --diff (1664)
- Prevent coloured diff output being interleaved with multiple files (1673)
- Added support for PEP 614 relaxed decorator syntax on python 3.9 (1711)
- Added parsing support for unparenthesized tuples and yield expressions in annotated
assignments (1835)
- added `--extend-exclude` argument (PR 2005)
- speed up caching by avoiding pathlib (1950)
- `--diff` correctly indicates when a file doesn't end in a newline (1662)
- Added `--stdin-filename` argument to allow stdin to respect `--force-exclude` rules
(1780)
- Lines ending with `fmt: skip` will now be not formatted (1800)
- PR 2053: Black no longer relies on typed-ast for Python 3.8 and higher
- PR 2053: Python 2 support is now optional, install with
`python3 -m pip install black[python2]` to maintain support.
- Exclude `venv` directory by default (1683)
- Fixed "Black produced code that is not equivalent to the source" when formatting
Python 2 docstrings (2037)
_Packaging_
- Self-contained native _Black_ binaries are now provided for releases via GitHub
Releases (1743)
```
### 20.8b1
```
_Packaging_
- explicitly depend on Click 7.1.2 or newer as `Black` no longer works with versions
older than 7.0
```
### 20.8b0
```
_Black_
- re-implemented support for explicit trailing commas: now it works consistently within
any bracket pair, including nested structures (1288 and duplicates)
- `Black` now reindents docstrings when reindenting code around it (1053)
- `Black` now shows colored diffs (1266)
- `Black` is now packaged using 'py3' tagged wheels (1388)
- `Black` now supports Python 3.8 code, e.g. star expressions in return statements
(1121)
- `Black` no longer normalizes capital R-string prefixes as those have a
community-accepted meaning (1244)
- `Black` now uses exit code 2 when specified configuration file doesn't exit (1361)
- `Black` now works on AWS Lambda (1141)
- added `--force-exclude` argument (1032)
- removed deprecated `--py36` option (1236)
- fixed `--diff` output when EOF is encountered (526)
- fixed ` fmt: off` handling around decorators (560)
- fixed unstable formatting with some ` type: ignore` comments (1113)
- fixed invalid removal on organizing brackets followed by indexing (1575)
- introduced `black-primer`, a CI tool that allows us to run regression tests against
existing open source users of Black (1402)
- introduced property-based fuzzing to our test suite based on Hypothesis and
Hypothersmith (1566)
- implemented experimental and disabled by default long string rewrapping (1132),
hidden under a `--experimental-string-processing` flag while it's being worked on;
this is an undocumented and unsupported feature, you lose Internet points for
depending on it (1609)
Vim plugin
- prefer virtualenv packages over global packages (1383)
```
Links
- PyPI: https://pypi.org/project/black
- Changelog: https://pyup.io/changelogs/black/
- Repo: https://github.com/psf/black
Changelog
### 0.37.1
```
- Fixed ``wheel pack`` duplicating the ``WHEEL`` contents when the build number has changed (415)
- Fixed parsing of file names containing commas in ``RECORD`` (PR by Hood Chatham)
```
### 0.37.0
```
- Added official Python 3.10 support
- Updated vendored ``packaging`` library to v20.9
```
### 0.36.2
```
- Updated vendored ``packaging`` library to v20.8
- Fixed wheel sdist missing ``LICENSE.txt``
- Don't use default ``macos/arm64`` deployment target in calculating the
platform tag for fat binaries (PR by Ronald Oussoren)
```
### 0.36.1
```
- Fixed ``AssertionError`` when ``MACOSX_DEPLOYMENT_TARGET`` was set to ``11``
(PR by Grzegorz Bokota and François-Xavier Coudert)
- Fixed regression introduced in 0.36.0 on Python 2.7 when a custom generator
name was passed as unicode (Scikit-build)
(``TypeError: 'unicode' does not have the buffer interface``)
```
### 0.36.0
```
- Added official Python 3.9 support
- Updated vendored ``packaging`` library to v20.7
- Switched to always using LF as line separator when generating ``WHEEL`` files
(on Windows, CRLF was being used instead)
- The ABI tag is taken from the sysconfig SOABI value. On PyPy the SOABI value
is ``pypy37-pp73`` which is not compliant with PEP 3149, as it should have
both the API tag and the platform tag. This change future-proofs any change
in PyPy's SOABI tag to make sure only the ABI tag is used by wheel.
- Fixed regression and test for ``bdist_wheel --plat-name``. It was ignored for
C extensions in v0.35, but the regression was not detected by tests.
```
### 0.35.1
```
- Replaced install dependency on ``packaging`` with a vendored copy of its
``tags`` module
- Fixed ``bdist_wheel`` not working on FreeBSD due to mismatching platform tag
name (it was not being converted to lowercase)
```
### 0.35.0
```
- Switched to the packaging_ library for computing wheel tags
- Fixed a resource leak in ``WheelFile.open()`` (PR by Jon Dufresne)
.. _packaging: https://pypi.org/project/packaging/
```
Links
- PyPI: https://pypi.org/project/wheel
- Changelog: https://pyup.io/changelogs/wheel/
- Repo: https://github.com/pypa/wheel
Changelog
### 1.7.5
```
:include_notes_from: unreleased
.. changelog::
```
### 1.7.4
```
:released: October 6, 2021
.. change::
:tags: bug, regression
:tickets: 934
Fixed a regression that prevented the use of post write hooks
on python version lower than 3.9
.. change::
:tags: bug, environment
:tickets: 944
Fixed issue where the :meth:`.MigrationContext.autocommit_block` feature
would fail to function when using a SQLAlchemy engine using 2.0 future
mode.
.. changelog::
```
### 1.7.3
```
:released: September 17, 2021
.. change::
:tags: bug, mypy
:tickets: 914
Fixed type annotations for the "constraint_name" argument of operations
``create_primary_key()``, ``create_foreign_key()``. Pull request courtesy
TilmanK.
.. changelog::
```
### 1.7.2
```
:released: September 17, 2021
.. change::
:tags: bug, typing
:tickets: 900
Added missing attributes from context stubs.
.. change::
:tags: bug, mypy
:tickets: 897
Fixed an import in one of the .pyi files that was triggering an
assertion error in some versions of mypy.
.. change::
:tags: bug, regression, ops
:tickets: 920
Fixed issue where registration of custom ops was prone to failure due to
the registration process running ``exec()`` on generated code that as of
the 1.7 series includes pep-484 annotations, which in the case of end user
code would result in name resolution errors when the exec occurs. The logic
in question has been altered so that the annotations are rendered as
forward references so that the ``exec()`` can proceed.
.. changelog::
```
### 1.7.1
```
:released: August 30, 2021
.. change::
:tags: bug, installation
:tickets: 893
Corrected "universal wheel" directive in setup.cfg so that building a wheel
does not target Python 2. The PyPi files index for 1.7.0 was corrected
manually. Pull request courtesy layday.
.. change::
:tags: bug, pep484
:tickets: 895
Fixed issue in generated .pyi files where default values for ``Optional``
arguments were missing, thereby causing mypy to consider them as required.
.. change::
:tags: bug, regression, batch
:tickets: 896
Fixed regression in batch mode due to :ticket:`883` where the "auto" mode
of batch would fail to accommodate any additional migration directives
beyond encountering an ``add_column()`` directive, due to a mis-application
of the conditional logic that was added as part of this change, leading to
"recreate" mode not being used in cases where it is required for SQLite
such as for unique constraints.
.. changelog::
```
### 1.7.0
```
:released: August 30, 2021
.. change::
:tags: bug, operations
:tickets: 879
Fixed regression due to :ticket:`803` where the ``.info`` and ``.comment``
attributes of ``Table`` would be lost inside of the :class:`.DropTableOp`
class, which when "reversed" into a :class:`.CreateTableOp` would then have
lost these elements. Pull request courtesy Nicolas CANIART.
.. change::
:tags: feature, environment
:tickets: 842
Enhance ``version_locations`` parsing to handle paths containing spaces.
The new configuration option ``version_path_separator`` specifies the
character to use when splitting the ``version_locations`` string. The
default for new configurations is ``version_path_separator = os``,
which will use ``os.pathsep`` (e.g., ``;`` on Windows).
.. change::
:tags: installation, changed
Alembic 1.7 now supports Python 3.6 and above; support for prior versions
including Python 2.7 has been dropped.
.. change::
:tags: bug, sqlite, batch
:tickets: 883
Batch "auto" mode will now select for "recreate" if the ``add_column()``
operation is used on SQLite, and the column itself meets the criteria for
SQLite where ADD COLUMN is not allowed, in this case a functional or
parenthesized SQL expression or a ``Computed`` (i.e. generated) column.
.. change::
:tags: changed, installation
:tickets: 674
Make the ``python-dateutil`` library an optional dependency.
This library is only required if the ``timezone`` option
is used in the Alembic configuration.
An extra require named ``tz`` is available with
``pip install alembic[tz]`` to install it.
.. change::
:tags: bug, commands
:tickets: 856
Re-implemented the ``python-editor`` dependency as a small internal
function to avoid the need for external dependencies.
.. change::
:tags: usecase, batch
:tickets: 884
Named CHECK constraints are now supported by batch mode, and will
automatically be part of the recreated table assuming they are named. They
also can be explicitly dropped using ``op.drop_constraint()``. For
"unnamed" CHECK constraints, these are still skipped as they cannot be
distinguished from the CHECK constraints that are generated by the
``Boolean`` and ``Enum`` datatypes.
Note that this change may require adjustments to migrations that drop or
rename columns which feature an associated named check constraint, such
that an additional ``op.drop_constraint()`` directive should be added for
that named constraint as there will no longer be an associated column
for it; for the ``Boolean`` and ``Enum`` datatypes, an ``existing_type``
keyword may be passed to ``BatchOperations.drop_constraint`` as well.
.. seealso::
:ref:`batch_schematype_constraints`
:ref:`batch_check_constraints`
.. change::
:tags: changed, installation
:tickets: 885
The dependency on ``pkg_resources`` which is part of ``setuptools`` has
been removed, so there is no longer any runtime dependency on
``setuptools``. The functionality has been replaced with
``importlib.metadata`` and ``importlib.resources`` which are both part of
Python std.lib, or via pypy dependency ``importlib-metadata`` for Python
version < 3.8 and ``importlib-resources`` for Python version < 3.9
(while importlib.resources was added to Python in 3.7, it did not include
the "files" API until 3.9).
.. change::
:tags: feature, tests
:tickets: 855
Created a "test suite" similar to the one for SQLAlchemy, allowing
developers of third-party dialects to test their code against a set of
Alembic tests that have been specially selected to exercise
back-end database operations. At the time of release,
third-party dialects that have adopted the Alembic test suite to verify
compatibility include
`CockroachDB <https://pypi.org/project/sqlalchemy-cockroachdb/>`_ and
`SAP ASE (Sybase) <https://pypi.org/project/sqlalchemy-sybase/>`_.
.. change::
:tags: bug, postgresql
:tickets: 874
Fixed issue where usage of the PostgreSQL ``postgresql_include`` option
within a :meth:`.Operations.create_index` would raise a KeyError, as the
additional column(s) need to be added to the table object used by the
construct internally. The issue is equivalent to the SQL Server issue fixed
in :ticket:`513`. Pull request courtesy Steven Bronson.
.. change::
:tags: feature, general
pep-484 type annotations have been added throughout the library.
Additionally, stub .pyi files have been added for the "dynamically"
generated Alembic modules ``alembic.op`` and ``alembic.config``, which
include complete function signatures and docstrings, so that the functions
in these namespaces will have both IDE support (vscode, pycharm, etc) as
well as support for typing tools like Mypy. The files themselves are
statically generated from their source functions within the source tree.
.. changelog::
```
### 1.6.5
```
:released: May 27, 2021
.. change::
:tags: bug, autogenerate
:tickets: 849
Fixed issue where dialect-specific keyword arguments within the
:class:`.DropIndex` operation directive would not render in the
autogenerated Python code. As support was improved for adding dialect
specific arguments to directives as part of :ticket:`803`, in particular
arguments such as "postgresql_concurrently" which apply to the actual
create/drop of the index, support was needed for these to render even in a
drop index operation. Pull request courtesy Jet Zhou.
.. changelog::
```
### 1.6.4
```
:released: May 24, 2021
.. change::
:tags: bug, regression, op directives
:tickets: 848
Fixed regression caused by just fixed :ticket:`844` that scaled back the
filter for ``unique=True/index=True`` too far such that these directives no
longer worked for the ``op.create_table()`` op, this has been fixed.
.. changelog::
```
### 1.6.3
```
:released: May 21, 2021
.. change::
:tags: bug, regression, autogenerate
:tickets: 844
Fixed 1.6-series regression where ``UniqueConstraint`` and to a lesser
extent ``Index`` objects would be doubled up in the generated model when
the ``unique=True`` / ``index=True`` flags were used.
.. change::
:tags: bug, autogenerate
:tickets: 839
Fixed a bug where paths defined in post-write hook options
would be wrongly escaped in non posix environment (Windows).
.. change::
:tags: bug, regression, versioning
:tickets: 843
Fixed regression where a revision file that contained its own down revision
as a dependency would cause an endless loop in the traversal logic.
.. changelog::
```
### 1.6.2
```
:released: May 6, 2021
.. change::
:tags: bug, versioning, regression
:tickets: 839
Fixed additional regression nearly the same as that of :ticket:`838` just
released in 1.6.1 but within a slightly different codepath, where "alembic
downgrade head" (or equivalent) would fail instead of iterating no
revisions.
.. changelog::
```
### 1.6.1
```
:released: May 6, 2021
.. change::
:tags: bug, versioning, regression
:tickets: 838
Fixed regression in new revisioning traversal where "alembic downgrade
base" would fail if the database itself were clean and unversioned;
additionally repairs the case where downgrade would fail if attempting
to downgrade to the current head that is already present.
.. changelog::
```
### 1.6.0
```
:released: May 3, 2021
.. change::
:tags: bug, autogenerate
:tickets: 803
Refactored the implementation of :class:`.MigrateOperation` constructs such
as :class:`.CreateIndexOp`, :class:`.CreateTableOp`, etc. so that they no
longer rely upon maintaining a persistent version of each schema object
internally; instead, the state variables of each operation object will be
used to produce the corresponding construct when the operation is invoked.
The rationale is so that environments which make use of
operation-manipulation schemes such as those those discussed in
:ref:`autogen_rewriter` are better supported, allowing end-user code to
manipulate the public attributes of these objects which will then be
expressed in the final output, an example is
``some_create_index_op.kw["postgresql_concurrently"] = True``.
Previously, these objects when generated from autogenerate would typically
hold onto the original, reflected element internally without honoring the
other state variables of each construct, preventing the public API from
working.
.. change::
:tags: bug, environment
:tickets: 829
Fixed regression caused by the SQLAlchemy 1.4/2.0 compatibility switch
where calling ``.rollback()`` or ``.commit()`` explicitly within the
``context.begin_transaction()`` context manager would cause it to fail when
the block ended, as it did not expect that the transaction was manually
closed.
.. change::
:tags: bug, autogenerate
:tickets: 827
Improved the rendering of ``op.add_column()`` operations when adding
multiple columns to an existing table, so that the order of these
statements matches the order in which the columns were declared in the
application's table metadata. Previously the added columns were being
sorted alphabetically.
.. change::
:tags: feature, autogenerate
:tickets: 819
Fix the documentation regarding the default command-line argument position of
the revision script filename within the post-write hook arguments. Implement a
``REVISION_SCRIPT_FILENAME`` token, enabling the position to be changed. Switch
from ``str.split()`` to ``shlex.split()`` for more robust command-line argument
parsing.
.. change::
:tags: feature
:tickets: 822
Implement a ``.cwd`` (current working directory) suboption for post-write hooks
(of type ``console_scripts``). This is useful for tools like pre-commit, which
rely on the working directory to locate the necessary config files. Add
pre-commit as an example to the documentation. Minor change: rename some variables
from ticket 819 to improve readability.
.. change::
:tags: bug, versioning
:tickets: 765, 464
The algorithm used for calculating downgrades/upgrades/iterating
revisions has been rewritten, to resolve ongoing issues of branches
not being handled consistently particularly within downgrade operations,
as well as for overall clarity and maintainability. This change includes
that a deprecation warning is emitted if an ambiguous command such
as "downgrade -1" when multiple heads are present is given.
In particular, the change implements a long-requested use case of allowing
downgrades of a single branch to a branchpoint.
Huge thanks to Simon Bowly for their impressive efforts in successfully
tackling this very difficult problem.
.. change::
:tags: bug, batch
:tickets: 799
Added missing ``batch_op.create_table_comment()``,
``batch_op.drop_table_comment()`` directives to batch ops.
.. changelog::
```
### 1.5.8
```
:released: March 23, 2021
.. change::
:tags: bug, environment
:tickets: 816
Fixed regression caused by SQLAlchemy 1.4 where the "alembic current"
command would fail due to changes in the ``URL`` object.
.. changelog::
```
### 1.5.7
```
:released: March 11, 2021
.. change::
:tags: bug, autogenerate
:tickets: 813
Adjusted the recently added
:paramref:`.EnvironmentContext.configure.include_name` hook to accommodate
for additional object types such as "views" that don't have a parent table,
to support third party recipes and extensions. Pull request courtesy Oliver
Rice.
.. changelog::
```
### 1.5.6
```
:released: March 5, 2021
.. change::
:tags: bug, mssql, operations
:tickets: 812
Fixed bug where the "existing_type" parameter, which the MSSQL dialect
requires in order to change the nullability of a column in the absence of
also changing the column type, would cause an ALTER COLUMN operation to
incorrectly render a second ALTER statement without the nullability if a
new type were also present, as the MSSQL-specific contract did not
anticipate all three of "nullability", "type_" and "existing_type" being
sent at the same time.
.. change::
:tags: template
:ticket: 805
Add async template to Alembic to bootstrap environments that use
async DBAPI. Updated the cookbook to include a migration guide
on how to adapt an existing environment for use with DBAPI drivers.
.. changelog::
```
### 1.5.5
```
:released: February 20, 2021
.. change::
:tags: bug
Adjusted the use of SQLAlchemy's ".copy()" internals to use "._copy()"
for version 1.4.0, as this method is being renamed.
.. change::
:tags: bug, environment
:tickets: 797
Added new config file option ``prepend_sys_path``, which is a series of
paths that will be prepended to sys.path; the default value in newly
generated alembic.ini files is ".". This fixes a long-standing issue
where for some reason running the alembic command line would not place the
local "." path in sys.path, meaning an application locally present in "."
and importable through normal channels, e.g. python interpreter, pytest,
etc. would not be located by Alembic, even though the ``env.py`` file is
loaded relative to the current path when ``alembic.ini`` contains a
relative path. To enable for existing installations, add the option to the
alembic.ini file as follows::
sys.path path, will be prepended to sys.path if present.
defaults to the current working directory.
prepend_sys_path = .
.. seealso::
:ref:`installation` - updated documentation reflecting that local
installation of the project is not necessary if running the Alembic cli
from the local path.
.. changelog::
```
### 1.5.4
```
:released: February 3, 2021
.. change::
:tags: bug, versioning
:tickets: 789
Fixed bug in versioning model where a downgrade across a revision with a
dependency on another branch, yet an ancestor is also dependent on that
branch, would produce an erroneous state in the alembic_version table,
making upgrades impossible without manually repairing the table.
.. changelog::
```
### 1.5.3
```
:released: January 29, 2021
.. change::
:tags: bug, autogenerate
:tickets: 786
Changed the default ordering of "CREATE" and "DROP" statements indexes and
unique constraints within the autogenerate process, so that for example in
an upgrade() operation, a particular index or constraint that is to be
replaced such as for a casing convention change will not produce any naming
conflicts. For foreign key constraint objects, this is already how
constraints are ordered, and for table objects, users would normally want
to use :meth:`.Operations.rename_table` in any case.
.. change::
:tags: bug, autogenerate, mssql
:tickets: 787
Fixed assorted autogenerate issues with SQL Server:
* ignore default reflected identity on primary_key columns
* improve server default comparison
.. change::
:tags: bug, mysql, autogenerate
:tickets: 788
Fixed issue where autogenerate rendering of ``op.alter_column()`` would
fail to include MySQL ``existing_nullable=False`` if the column were part
of a primary key constraint within the table metadata.
.. changelog::
```
### 1.5.2
```
:released: January 20, 2021
.. change::
:tags: bug, versioning, regression
:tickets: 784
Fixed regression where new "loop detection" feature introduced in
:ticket:`757` produced false positives for revision names that have
overlapping substrings between revision number and down revision and/or
dependency, if the downrev/dependency were not in sequence form.
.. change::
:tags: bug, environment
:tickets: 782
Fixed regression where Alembic would fail to create a transaction properly
if the :class:`sqlalchemy.engine.Connection` were a so-called "branched"
connection, that is, one where the ``.connect()`` method had been called to
create a "sub" connection.
.. changelog::
```
### 1.5.1
```
:released: January 19, 2021
.. change::
:tags: bug, installation, commands
:tickets: 780
Fixed installation issue where the "templates" directory was not being
installed, preventing commands like "list_templates" and "init" from
working.
.. changelog::
```
### 1.5.0
```
:released: January 18, 2021
.. change::
:tags: usecase, operations
:tickets: 730
Added support for rendering of "identity" elements on
:class:`.Column` objects, supported in SQLAlchemy via
the :class:`.Identity` element introduced in version 1.4.
Adding columns with identity is supported on PostgreSQL,
MSSQL and Oracle. Changing the identity options or removing
it is supported only on PostgreSQL and Oracle.
.. change::
:tags: changed, environment
To accommodate SQLAlchemy 1.4 and 2.0, the migration model now no longer
assumes that the SQLAlchemy Connection will autocommit an individual
operation. This essentially means that for databases that use
non-transactional DDL (pysqlite current driver behavior, MySQL), there is
still a BEGIN/COMMIT block that will surround each individual migration.
Databases that support transactional DDL should continue to have the
same flow, either per migration or per-entire run, depending on the
value of the :paramref:`.Environment.configure.transaction_per_migration`
flag.
.. change::
:tags: changed, environment
A :class:`.CommandError` is raised if a ``sqlalchemy.engine.Engine`` is
passed to the :meth:`.MigrationContext.configure` method instead of a
``sqlalchemy.engine.Connection`` object. Previously, this would be a
warning only.
.. change::
:tags: bug, operations
:tickets: 753
Modified the ``add_column()`` operation such that the ``Column`` object in
use is shallow copied to a new instance if that ``Column`` is already
attached to a ``table()`` or ``Table``. This accommodates for the change
made in SQLAlchemy issue 5618 which prohibits a ``Column`` from being
associated with multiple ``table()`` objects. This resumes support for
using a ``Column`` inside of an Alembic operation that already refers to a
parent ``table()`` or ``Table`` as well as allows operation objects just
autogenerated to work.
.. change::
:tags: feature, autogenerate
:tickets: 650
Added new hook :paramref:`.EnvironmentContext.configure.include_name`,
which complements the
:paramref:`.EnvironmentContext.configure.include_object` hook by providing
a means of preventing objects of a certain name from being autogenerated
**before** the SQLAlchemy reflection process takes place, and notably
includes explicit support for passing each schema name when
:paramref:`.EnvironmentContext.configure.include_schemas` is set to True.
This is most important especially for environments that make use of
:paramref:`.EnvironmentContext.configure.include_schemas` where schemas are
actually databases (e.g. MySQL) in order to prevent reflection sweeps of
the entire server.
.. seealso::
:ref:`autogenerate_include_hooks` - new documentation section
.. change::
:tags: removed, autogenerate
The long deprecated
:paramref:`.EnvironmentContext.configure.include_symbol` hook is removed.
The :paramref:`.EnvironmentContext.configure.include_object`
and :paramref:`.EnvironmentContext.configure.include_name`
hooks both achieve the goals of this hook.
.. change::
:tags: bug, autogenerate
:tickets: 721
Added rendering for the ``Table.prefixes`` element to autogenerate so that
the rendered Python code includes these directives. Pull request courtesy
Rodrigo Ce Moretto.
.. change::
:tags: bug, batch
:tickets: 761
Added missing "create comment" feature for columns that are altered in
batch migrations.
.. change::
:tags: changed
:tickets: 748
Alembic 1.5.0 now supports **Python 2.7 and Python 3.6 and above**, as well
as **SQLAlchemy 1.3.0 and above**. Support is removed for Python 3
versions prior to 3.6 and SQLAlchemy versions prior to the 1.3 series.
.. change::
:tags: bug, batch
:tickets: 773
Made an adjustment to the PostgreSQL dialect to allow it to work more
effectively in batch mode, where a datatype like Boolean or non-native Enum
that may have embedded rules to generate CHECK constraints will be more
correctly handled in that these constraints usually will not have been
generated on the PostgreSQL backend; previously it would inadvertently
assume they existed unconditionally in a special PG-only "drop constraint"
step.
.. change::
:tags: feature, versioning
:tickets: 757
The revision tree is now checked for cycles and loops between revision
files when the revision environment is loaded up. Scenarios such as a
revision pointing to itself, or a revision that can reach itself via a
loop, are handled and will raise the :class:`.CycleDetected` exception when
the environment is loaded (expressed from the Alembic commandline as a
failure message and nonzero return code). Previously, these situations were
silently ignored up front, and the behavior of revision traversal would
either be silently incorrect, or would produce errors such as
:class:`.RangeNotAncestorError`. Pull request courtesy Koichiro Den.
.. change::
:tags: usecase, commands
Add ``__main__.py`` file to alembic package to support invocation
with ``python -m alembic``.
.. change::
:tags: removed, commands
Removed deprecated ``--head_only`` option to the ``alembic current``
command
.. change::
:tags: removed, operations
Removed legacy parameter names from operations, these have been emitting
warnings since version 0.8. In the case that legacy version files have not
yet been updated, these can be modified directly in order to maintain
compatibility:
* :meth:`.Operations.drop_constraint` - "type" (use "type_") and "name"
(use "constraint_name")
* :meth:`.Operations.create_primary_key` - "cols" (use "columns") and
"name" (use "constraint_name")
* :meth:`.Operations.create_unique_constraint` - "name" (use
"constraint_name"), "source" (use "table_name") and "local_cols" (use
"columns")
* :meth:`.Operations.batch_create_unique_constraint` - "name" (use
"constraint_name")
* :meth:`.Operatio
Update mkdocs from 1.1.2 to 1.2.3.
Changelog
### 1.2.3 ``` MkDocs 1.2.3 is a bugfix release for [MkDocs 1.2](https://www.mkdocs.org/about/release-notes/#version-12-2021-06-04). *Aside*: MkDocs has a new [chat room](https://gitter.im/mkdocs/community) on Gitter/Matrix. [More details](https://github.com/mkdocs/mkdocs#support). Improvements: * Built-in themes now also support these languages: * Simplified Chinese (2497) * Japanese (2525) * Brazilian Portuguese (2535) * Spanish (2545, previously 2396) * Third-party plugins will take precedence over built-in plugins with the same name (2591) * Bugfix: Fix ability to load translations for some languages: core support (2565) and search plugin support with fallbacks (2602) * Bugfix (regression in 1.2): Prevent directory traversal in the dev server (2604) * Bugfix (regression in 1.2): Prevent webserver warnings from being treated as a build failure in strict mode (2607) * Bugfix: Correctly print colorful messages in the terminal on Windows (2606) * Bugfix: Python version 3.10 was displayed incorrectly in `--version` (2618) Other small improvements; see [commit log](https://github.com/mkdocs/mkdocs/compare/1.2.2...1.2.3). ``` ### 1.2.2 ``` MkDocs 1.2.2 is a bugfix release for [MkDocs 1.2](https://www.mkdocs.org/about/release-notes/#version-12-2021-06-04) -- make sure you've seen the "major" release notes as well. * Bugfix (regression in 1.2): Fix serving files/paths with Unicode characters (2464) * Bugfix (regression in 1.2): Revert livereload file watching to use polling observer (2477) This had to be done to reasonably support usages that span virtual filesystems such as non-native Docker and network mounts. This goes back to the polling approach, very similar to that was always used prior, meaning most of the same downsides with latency and CPU usage. * Revert from 1.2: Remove the requirement of a `site_url` config and the restriction on `use_directory_urls` (2490) * Bugfix (regression in 1.2): Don't require trailing slash in the URL when serving a directory index in `mkdocs serve` server (2507) Instead of showing a 404 error, detect if it's a directory and redirect to a path with a trailing slash added, like before. * Bugfix: Fix `gh_deploy` with config-file in the current directory (2481) * Bugfix: Fix reversed breadcrumbs in "readthedocs" theme (2179) * Allow "mkdocs.yaml" as the file name when '--config' is not passed (2478) * Stop treating ";" as a special character in URLs: urlparse -> urlsplit (2502) * Improve build performance for sites with many pages (partly already done in 1.2) (2407) ```Links
- PyPI: https://pypi.org/project/mkdocs - Changelog: https://pyup.io/changelogs/mkdocs/ - Homepage: https://www.mkdocs.orgUpdate pymdown-extensions from 7.1 to 9.1.
The bot wasn't able to find a changelog for this release. Got an idea?
Links
- PyPI: https://pypi.org/project/pymdown-extensions - Repo: https://github.com/facelessuser/pymdown-extensionsUpdate mkdocs-material from 7.0.6 to 8.1.3.
Changelog
### 8.1.3 ``` * Added animation to active content tab indicator * Fixed 3360: Highlighted lines add blank lines in copied text * Fixed usage of subsequent index files when using section index pages mkdocs-material-8.1.2+insiders-4.5.0 (2021-12-16) * Added support for navigation icons ``` ### 8.1.2 ``` * Switched CSS sources to logical properties * Added transformation of logical properties to ltr/rtl equivalents * Fixed spacing for admonitions inside lists (8.1.1 regression) ``` ### 8.1.1 ``` * Added support for only-light and only-dark image hash fragments * Fixed copy-to-clipboard adding blank lines when using line anchors * Fixed code annotation directionality for right-to-left languages * Fixed header title positioning for right-to-left languages * Fixed admonition borders for right-to-left languages (8.0.0 regression) * Fixed footer navigation link positioning (8.0.0 regression) * Fixed footer navigation title breaking out of container when too long * Fixed shrinking arrow in navigation title when too long * Fixed 3343: Filtered stopwords appear as missing search terms * Fixed 3346: Site unusable due to usage of :not() (Firefox 78 ESR) mkdocs-material-8.1.0+insiders-4.4.0 (2021-12-10) * Added support for code annotation anchor links (deep linking) * Added new code annotation syntax modifier to strip comment * Updated German translations for cookie consent ``` ### 8.1.0 ``` * Added basic support for code block line anchors * Switched code annotation markers to + signs to improve usability * Switched main site title to bold font * Improved admonition icon positioning to align when font-size is increased * Improved and simplified footnotes CSS * Improved and simplified code annotation positioning * Fixed syntax error in Russian translations ``` ### 8.0.5 ``` * Fixed 3302: Footer refactoring induced ellipsis in some browsers * Fixed 3313: Details always rendered closed on load (8.0.4 regression) mkdocs-material-8.0.4+insiders-4.3.0 (2021-12-05) * Added support for custom fonts in social cards * Fixed 3300: Announcement bar reappearing when using instant loading ``` ### 8.0.4 ``` * Improved support for deeply nested code annotations * Improved code annotation and copy-to-clipboard interop * Improved styling for code annotations inside admonitions * Fixed 3274: Invalid anchor positioning when using instant loading * Fixed 3294: Lists after code blocks without code annotations disappearing * Fixed several positioning issues for code annotations * Fixed JavaScript source map roots mkdocs-material-8.0.3+insiders-4.2.0 (2021-12-02) * Added support for dismissable announcement bar * Added support for named placeholders in feedback widget ``` ### 8.0.3 ``` * Removed deprecated google_analytics setting (was forgotten in 8.0.0) * Fixed syntax error in Swedish and Polish translations * Fixed 3283: Invalid back-to-top button position with sticky navigation tabs * Fixed 3285: Default details marker showing due to Safari bug mkdocs-material-8.0.2+insiders-4.1.0 (2021-11-30) * Added support for passing page title to feedback forms ``` ### 8.0.2 ``` * Fixed 3275: Code annotations always disappear on click ``` ### 8.0.1 ``` * Improved rendering of code annotation markers * Fixed 3265: Wrong margin on nested admonitions * Fixed wrong box-sizing for code annotations in details ``` ### 8.0.0 ``` * Added support for code annotations * Added support for anchor tracking * Added support for version warning * Added copyright partial for easier override * Removed deprecated content tabs legacy implementation * Removed deprecated seealso admonition type * Removed deprecated site_keywords setting (unsupported by MkDocs) * Removed deprecated prebuilt search index support * Removed deprecated web app manifest – use customization * Removed extracopyright variable – use new copyright partial * Removed Disqus integation – use customization * Switched to :is() selectors for simple selector lists * Switched autoprefixer from last 4 years to last 2 years * Improved CSS overall to match modern standards * Improved CSS variable semantics for fonts * Improved extensibility by restructuring partials * Improved handling of details when printing * Improved keyboard navigation for footnotes * Fixed 3214: Search highlighting breaks site when empty mkdocs-material-7.3.6+insiders-3.2.3 (2021-11-20) * Updated Swedish and French translations * Removed support for .mermaid-experimental class (now .mermaid) * Fixed 3202: Cookie consent not dismissable on file:// locations * Fixed 3216: Cookie consent not dismissed when invoked via anchor * Fixed 3232: Mermaid.js sometimes runs twice (race condition) mkdocs-material-7.3.6+insiders-3.2.2 (2021-11-06) * Fixed always last feedback rating being sent * Fixed 3145: Code annotations eat whole comment lines * Fixed 3170: Feedback widget doesn't send data to GA4 mkdocs-material-7.3.6+insiders-3.2.1 (2021-11-04) * Added support for custom Mermaid.js version via additional JavaScript * Fixed some configuration edge cases for tags plugin (3.1.5 regression) * Fixed feedback widget title not being centered in Firefox * Fixed 3179: Safari doesn't send request for feedback widget mkdocs-material-7.3.6+insiders-3.2.0 (2021-10-31) * Added support for feedback widget (Was this page helpful?) ``` ### 7.3.6 ``` * Added support for adding titles to code blocks mkdocs-material-7.3.5+insiders-3.1.5 (2021-10-28) * Fixed 3144: Rogue link when using tags with auto-populated navigation * Fixed 3147: Code block line numbers appear in search results * Fixed 3158: Social cards do not strip HTML tags from title ``` ### 7.3.5 ``` * Added support for setting table of contents title via mkdocs.yml * Fixed back-to-top button position for right-to-left languages mkdocs-material-7.3.4+insiders-3.1.4 (2021-10-17) * Fixed 2974: Text cropped with other fonts than Roboto in social plugin * Fixed 3099: Encoding problems with non-latin character in social plugin * Fixed 3112: Japanese segmenter not executed as part of new tokenizer * Fixed tags (front matter) appearing in search with disabled tags plugin ``` ### 7.3.4 ``` * Bumped MkDocs version to 1.2.3 to mitigate CVE-2021-40978 * Fixed spacing issues when using integrate table of contents with tabs * Fixed some spacings issues for right-to-left languages * Fixed race condition in search initialization mkdocs-material-7.3.3+insiders-3.1.3 (2021-10-12) * Added warnings to search plugin for unsupported options and syntax * Fixed 3503: Search sometimes returns entire page * Fixed 3089: Single-line code annotations disappear when printing ``` ### 7.3.3 ``` * Rewrite of entire documentation * Adjusted height of new content tabs to match single line code blocks * Fixed new content tabs missing right padding in some browsers on overflow * Fixed new content tabs bleeding out of flex container on overflow * Fixed new content tabs overflow scrolling bugs on some browsers * Fixed new content tabs stealing keyboard access when active * Fixed some spacings issues for right-to-left languages mkdocs-material-7.3.2+insiders-3.1.2 (2021-10-06) * Fixed incorrect path separators for social cards on Windows ``` ### 7.3.2 ``` * Deprecated prebuilding of search index * Improved graceful handling of broken search for file:// * Added minimum Jinja version to list of requirements * Fixed 3071: Section index pages render empty directories * Fixed margin issues when using navigation tabs (7.3.1 regression) * Fixed search placeholder sometimes being shown too early ``` ### 7.3.1 ``` * Added new experimental content tabs implementation * Fixed 3069: GitHub stats broken for users/orgs (7.1.0 regression) * Fixed 3070: Sections not linking to index page * Fixed title not linking to index page when using tabs * Fixed Disqus integration when using instant loading * Fixed some spacing issues for right-to-left languages * Fixed syntax error in Serbian translations mkdocs-material-7.3.0+insiders-3.1.1 (2021-09-26) * Fixed ordering bug in search exclusion logic mkdocs-material-7.3.0+insiders-3.1.0 (2021-09-26) * Added support for excluding pages, sections, and elements from search * Fixed 2803: Code block annotations not visible when printing ``` ### 7.3.0 ``` * Added support for sticky navigation tabs * Added support for section index pages * Added support for removing generator notice ``` ### 7.2.8 ``` * Fixed 3039: Search modal overlays menu on mobile (7.2.7 regression) mkdocs-material-7.2.7+insiders-3.0.1 (2021-09-19) * Added support for using literal h1-6 tags for search plugin * Fixed search plugin breaking on void elements without slashes * Fixed search plugin filtering link contents from headlines * Fixed search plugin handling of multiple h1 headlines * Fixed search plugin handling of missing h1 headlines ``` ### 7.2.7 ``` * Updated Serbian and Serbo-Croatian translations * Improved appearance of outline on details * Fixed 2934: Scrollbar when header is hidden on some mobile browsers * Fixed 3032: Anchor in details doesn't open on load (7.0.0 regression) * Fixed back-to-top button being focusable when invisible * Fixed broken admonition icons (removed in upstream) mkdocs-material-7.2.6+insiders-3.0.0 (2021-09-13) * Rewrite of MkDocs' search plugin * Added support for rich search previews * Added support for tokenizer with lookahead * Improved search indexing performance (twice as fast) * Improved search highlighting mkdocs-material-7.2.6+insiders-2.13.3 (2021-09-01) * Added support for disabling social card generation ``` ### 7.2.6 ``` * Fixed rendering of blockquote elements (7.0.0 regression) * Fixed 2973: Custom search worker setting ignored mkdocs-material-7.2.5+insiders-2.13.2 (2021-08-25) * Fixed 2965: Social plugin error when primary color is not defined ``` ### 7.2.5 ``` * Updated Portuguese translations * Fixed execution of RxJS teardown logic (7.2.3 regression) * Fixed 2970: Search results show escaped characters (7.2.2 regression) mkdocs-material-7.2.4+insiders-2.13.1 (2021-08-22) * Fixed 2948: Social cards are not cached * Fixed 2953: Mermaid.js diagrams can't be centered anymore ``` ### 7.2.4 ``` * Fixed 2926: Version selector not working (7.2.3 regression) * Fixed 2929: Missing CSS class for banner (consistency with Insiders) ``` ### 7.2.3 ``` * Slight facelift of data tables, now closer to Material Design * Fixed instant loading not respecting clicks on search results * Fixed 2881: Invalid anchor offsets when using instant loading mkdocs-material-7.2.2+insiders-2.13.0 (2021-08-07) * Added support for custom colors in social cards mkdocs-material-7.2.2+insiders-2.12.2 (2021-08-04) * Fixed 2891: Division by zero error in social plugin ``` ### 7.2.2 ``` * Updated Korean translations * Fixed 2879: Search highlighting does not properly escape HTML mkdocs-material-7.2.1+insiders-2.12.1 (2021-07-26) * Fixed error in social plugin when site_description was not set * Fixed error in social plugin for non-ASCII characters mkdocs-material-7.2.1+insiders-2.12.0 (2021-07-25) * Added support for social cards ``` ### 7.2.1 ``` * Fixed 2862: Back-to-top button overlays active search bar ``` ### 7.2.0 ``` * Added support for search suggestions to save keystrokes * Added support for search highlighting * Added support for search sharing (i.e. deep linking) mkdocs-material-7.1.11+insiders-2.11.1 (2021-07-20) * Fixed order of tags index, now sorted alphabetically mkdocs-material-7.1.11+insiders-2.11.0 (2021-07-18) * Improved Mermaid.js integration, now stable * Added support for sequence diagrams * Added support for entity relationship diagrams * Added support for cookie consent configuration * Added feature flag to always enable annotations ``` ### 7.1.11 ``` * Updated Spanish and Galician translations mkdocs-material-7.1.10+insiders-2.10.0 (2021-07-10) * Added support for cookie consent * Fixed 2807: Back-to-top button not hidden when using sticky tabs ``` ### 7.1.10 ``` * Refactored appearance of back-to-top button * Fixed graceful handling of search when browsing locally ``` ### 7.1.9 ``` * Improved search language support for Thai and Hindi * Fixed 2761: License comments lined up at end of file ``` ### 7.1.8 ``` * Refactored analytics integration (because of MkDocs 1.2) * Added support for Google Analytics 4 (gtag.js) * Fixed missing escape for aria-label in footer links ``` ### 7.1.7 ``` * Improved screen reader support mkdocs-material-7.1.6+insiders-2.9.2 (2021-05-30) * Moved tags to partial for easier customization * Added support for hiding tags on any page ``` ### 7.1.6 ``` * Deprecated seealso admonition qualifier * Added Mongolian and updated Chinese translations * Fixed 2429: Version selector not touch-friendly on Android devices * Fixed 2703: Printed 'Initializing search' albeit ready on mobile mkdocs-material-7.1.5+insiders-2.9.1 (2021-05-24) * Added missing guard for linking of content tabs mkdocs-material-7.1.5+insiders-2.9.0 (2021-05-23) * Added support for linking of content tabs ``` ### 7.1.5 ``` * Fixed 2655: Details breaking page margins on print mkdocs-material-7.1.4+insiders-2.8.0 (2021-05-12) * Added support for boosting pages in search mkdocs-material-7.1.4+insiders-2.7.2 (2021-05-08) * Fixed 2638: Warnings shown when using tags plugin without directory URLs ``` ### 7.1.4 ``` * Added support for git-revision-date-localized plugin creation date * Improved footnote styles on :target and :focus mkdocs-material-7.1.3+insiders-2.7.1 (2021-05-03) * Fixed git-revision-date-localized plugin integration (2.7.0 regression) mkdocs-material-7.1.3+insiders-2.7.0 (2021-05-01) * Added support for tags (with search integration) ``` ### 7.1.3 ``` * Fixed 2586: Empty table of contents shown (7.1.2 regression) ``` ### 7.1.2 ``` * Fixed 2554: List markers sometimes overlap floated elements * Fixed 2563: Adding a class to a h1 breaks the table of contents * Fixed 2566: Back-to-top button clickable when invisible mkdocs-material-7.1.1+insiders-2.6.0 (2021-04-11) * Stay on page when switching versions ``` ### 7.1.1 ``` * Fixed 2501: Nested definition lists compound bottom margin * Fixed 2508: Switch extracopyright block to template variable * Fixed 2533: Search (and other parts) not working in Safari <14 * Fixed 2538: Visual quirk when opening language selector ``` ### 7.1.0 ``` * Added support for color palette toggle * Added support for back-to-top button * Added latest release to repository info (GitHub) * Slight facelift of repository info (lighter fonts, spacing and icons) mkdocs-material-7.0.7+insiders-2.5.0 (2021-03-28) * Added support for version warning ``` ### 7.0.7 ``` * Updated Hungarian translations * Fixed 2466: Docker image not based on latest Python and Alpine * Fixed 2488: Inconsistent header shadow behavior * Fixed 2492: Inline code blocks in admonition titles missing background mkdocs-material-7.0.6+insiders-2.4.0 (2021-03-20) * Added support for custom admonition icons * Fixed 2444: Code block annotations with extra comments have wrong index mkdocs-material-7.0.6+insiders-2.3.1 (2021-03-14) * Fixed anchor offset for permalinks when using sticky navigation tabs ```Links
- PyPI: https://pypi.org/project/mkdocs-material - Changelog: https://pyup.io/changelogs/mkdocs-material/ - Repo: https://squidfunk.github.io/mkdocs-material/Update mkdocstrings from 0.12.0 to 0.17.0.
The bot wasn't able to find a changelog for this release. Got an idea?
Links
- PyPI: https://pypi.org/project/mkdocstringsUpdate black from 19.10b0 to 21.12b0.
Changelog
### 21.12b0 ``` _Black_ - Fix determination of f-string expression spans (2654) - Fix bad formatting of error messages about EOF in multi-line statements (2343) - Functions and classes in blocks now have more consistent surrounding spacing (2472) Jupyter Notebook support - Cell magics are now only processed if they are known Python cell magics. Earlier, all cell magics were tokenized, leading to possible indentation errors e.g. with `%%writefile`. (2630) - Fix assignment to environment variables in Jupyter Notebooks (2642) Python 3.10 support - Point users to using `--target-version py310` if we detect 3.10-only syntax (2668) - Fix `match` statements with open sequence subjects, like `match a, b:` or `match a, *b:` (2639) (2659) - Fix `match`/`case` statements that contain `match`/`case` soft keywords multiple times, like `match re.match()` (2661) - Fix `case` statements with an inline body (2665) - Fix styling of starred expressions inside `match` subject (2667) - Fix parser error location on invalid syntax in a `match` statement (2649) - Fix Python 3.10 support on platforms without ProcessPoolExecutor (2631) - Improve parsing performance on code that uses `match` under `--target-version py310` up to ~50% (2670) Packaging - Remove dependency on `regex` (2644) (2663) ``` ### 21.11b1 ``` _Black_ - Bumped regex version minimum to 2021.4.4 to fix Pattern class usage (2621) ``` ### 21.11b0 ``` _Black_ - Warn about Python 2 deprecation in more cases by improving Python 2 only syntax detection (2592) - Add experimental PyPy support (2559) - Add partial support for the match statement. As it's experimental, it's only enabled when `--target-version py310` is explicitly specified (2586) - Add support for parenthesized with (2586) - Declare support for Python 3.10 for running Black (2562) Integrations - Fixed vim plugin with Python 3.10 by removing deprecated distutils import (2610) - The vim plugin now parses `skip_magic_trailing_comma` from pyproject.toml (2613) ``` ### 21.10b0 ``` _Black_ - Document stability policy, that will apply for non-beta releases (2529) - Add new `--workers` parameter (2514) - Fixed feature detection for positional-only arguments in lambdas (2532) - Bumped typed-ast version minimum to 1.4.3 for 3.10 compatibility (2519) - Fixed a Python 3.10 compatibility issue where the loop argument was still being passed even though it has been removed (2580) - Deprecate Python 2 formatting support (2523) _Blackd_ - Remove dependency on aiohttp-cors (2500) - Bump required aiohttp version to 3.7.4 (2509) _Black-Primer_ - Add primer support for --projects (2555) - Print primer summary after individual failures (2570) Integrations - Allow to pass `target_version` in the vim plugin (1319) - Install build tools in docker file and use multi-stage build to keep the image size down (2582) ``` ### 21.9b0 ``` Packaging - Fix missing modules in self-contained binaries (2466) - Fix missing toml extra used during installation (2475) ``` ### 21.8b0 ``` _Black_ - Add support for formatting Jupyter Notebook files (2357) - Move from `appdirs` dependency to `platformdirs` (2375) - Present a more user-friendly error if .gitignore is invalid (2414) - The failsafe for accidentally added backslashes in f-string expressions has been hardened to handle more edge cases during quote normalization (2437) - Avoid changing a function return type annotation's type to a tuple by adding a trailing comma (2384) - Parsing support has been added for unparenthesized walruses in set literals, set comprehensions, and indices (2447). - Pin `setuptools-scm` build-time dependency version (2457) - Exclude typing-extensions version 3.10.0.1 due to it being broken on Python 3.10 (2460) _Blackd_ - Replace sys.exit(-1) with raise ImportError as it plays more nicely with tools that scan installed packages (2440) Integrations - The provided pre-commit hooks no longer specify `language_version` to avoid overriding `default_language_version` (2430) ``` ### 21.7b0 ``` _Black_ - Configuration files using TOML features higher than spec v0.5.0 are now supported (2301) - Add primer support and test for code piped into black via STDIN (2315) - Fix internal error when `FORCE_OPTIONAL_PARENTHESES` feature is enabled (2332) - Accept empty stdin (2346) - Provide a more useful error when parsing fails during AST safety checks (2304) Docker - Add new `latest_release` tag automation to follow latest black release on docker images (2374) Integrations - The vim plugin now searches upwards from the directory containing the current buffer instead of the current working directory for pyproject.toml. (1871) - The vim plugin now reads the correct string normalization option in pyproject.toml (1869) - The vim plugin no longer crashes Black when there's boolean values in pyproject.toml (1869) ``` ### 21.6b0 ``` _Black_ - Fix failure caused by `fmt: skip` and indentation (2281) - Account for += assignment when deciding whether to split string (2312) - Correct max string length calculation when there are string operators (2292) - Fixed option usage when using the `--code` flag (2259) - Do not call `uvloop.install()` when _Black_ is used as a library (2303) - Added `--required-version` option to require a specific version to be running (2300) - Fix incorrect custom breakpoint indices when string group contains fake f-strings (2311) - Fix regression where `R` prefixes would be lowercased for docstrings (2285) - Fix handling of named escapes (`\N{...}`) when `--experimental-string-processing` is used (2319) Integrations - The official Black action now supports choosing what version to use, and supports the major 3 OSes. (1940) ``` ### 21.5b2 ``` _Black_ - A space is no longer inserted into empty docstrings (2249) - Fix handling of .gitignore files containing non-ASCII characters on Windows (2229) - Respect `.gitignore` files in all levels, not only `root/.gitignore` file (apply `.gitignore` rules like `git` does) (2225) - Restored compatibility with Click 8.0 on Python 3.6 when LANG=C used (2227) - Add extra uvloop install + import support if in python env (2258) - Fix --experimental-string-processing crash when matching parens are not found (2283) - Make sure to split lines that start with a string operator (2286) - Fix regular expression that black uses to identify f-expressions (2287) _Blackd_ - Add a lower bound for the `aiohttp-cors` dependency. Only 0.4.0 or higher is supported. (2231) Packaging - Release self-contained x86_64 MacOS binaries as part of the GitHub release pipeline (2198) - Always build binaries with the latest available Python (2260) Documentation - Add discussion of magic comments to FAQ page (2272) - `--experimental-string-processing` will be enabled by default in the future (2273) - Fix typos discovered by codespell (2228) - Fix Vim plugin installation instructions. (2235) - Add new Frequently Asked Questions page (2247) - Fix encoding + symlink issues preventing proper build on Windows (2262) ``` ### 21.5b1 ``` _Black_ - Refactor `src/black/__init__.py` into many files (2206) Documentation - Replaced all remaining references to the [`master`](https://github.com/psf/black/tree/main) branch with the [`main`](https://github.com/psf/black/tree/main) branch. Some additional changes in the source code were also made. (2210) - Sigificantly reorganized the documentation to make much more sense. Check them out by heading over to [the stable docs on RTD](https://black.readthedocs.io/en/stable/). (2174) ``` ### 21.5b0 ``` _Black_ - Set `--pyi` mode if `--stdin-filename` ends in `.pyi` (2169) - Stop detecting target version as Python 3.9+ with pre-PEP-614 decorators that are being called but with no arguments (2182) _Black-Primer_ - Add `--no-diff` to black-primer to suppress formatting changes (2187) ``` ### 21.4b2 ``` _Black_ - Fix crash if the user configuration directory is inaccessible. (2158) - Clarify [circumstances](https://github.com/psf/black/blob/master/docs/the_black_code_style.md#pragmatism) in which _Black_ may change the AST (2159) - Allow `.gitignore` rules to be overridden by specifying `exclude` in `pyproject.toml` or on the command line. (2170) _Packaging_ - Install `primer.json` (used by `black-primer` by default) with black. (2154) ``` ### 21.4b1 ``` _Black_ - Fix crash on docstrings ending with "\\ ". (2142) - Fix crash when atypical whitespace is cleaned out of dostrings (2120) - Reflect the `--skip-magic-trailing-comma` and `--experimental-string-processing` flags in the name of the cache file. Without this fix, changes in these flags would not take effect if the cache had already been populated. (2131) - Don't remove necessary parentheses from assignment expression containing assert / return statements. (2143) _Packaging_ - Bump pathspec to >= 0.8.1 to solve invalid .gitignore exclusion handling ``` ### 21.4b0 ``` _Black_ - Fixed a rare but annoying formatting instability created by the combination of optional trailing commas inserted by `Black` and optional parentheses looking at pre-existing "magic" trailing commas. This fixes issue 1629 and all of its many many duplicates. (2126) - `Black` now processes one-line docstrings by stripping leading and trailing spaces, and adding a padding space when needed to break up """". (1740) - `Black` now cleans up leading non-breaking spaces in comments (2092) - `Black` now respects `--skip-string-normalization` when normalizing multiline docstring quotes (1637) - `Black` no longer removes all empty lines between non-function code and decorators when formatting typing stubs. Now `Black` enforces a single empty line. (1646) - `Black` no longer adds an incorrect space after a parenthesized assignment expression in if/while statements (1655) - Added `--skip-magic-trailing-comma` / `-C` to avoid using trailing commas as a reason to split lines (1824) - fixed a crash when PWD=/ on POSIX (1631) - fixed "I/O operation on closed file" when using --diff (1664) - Prevent coloured diff output being interleaved with multiple files (1673) - Added support for PEP 614 relaxed decorator syntax on python 3.9 (1711) - Added parsing support for unparenthesized tuples and yield expressions in annotated assignments (1835) - added `--extend-exclude` argument (PR 2005) - speed up caching by avoiding pathlib (1950) - `--diff` correctly indicates when a file doesn't end in a newline (1662) - Added `--stdin-filename` argument to allow stdin to respect `--force-exclude` rules (1780) - Lines ending with `fmt: skip` will now be not formatted (1800) - PR 2053: Black no longer relies on typed-ast for Python 3.8 and higher - PR 2053: Python 2 support is now optional, install with `python3 -m pip install black[python2]` to maintain support. - Exclude `venv` directory by default (1683) - Fixed "Black produced code that is not equivalent to the source" when formatting Python 2 docstrings (2037) _Packaging_ - Self-contained native _Black_ binaries are now provided for releases via GitHub Releases (1743) ``` ### 20.8b1 ``` _Packaging_ - explicitly depend on Click 7.1.2 or newer as `Black` no longer works with versions older than 7.0 ``` ### 20.8b0 ``` _Black_ - re-implemented support for explicit trailing commas: now it works consistently within any bracket pair, including nested structures (1288 and duplicates) - `Black` now reindents docstrings when reindenting code around it (1053) - `Black` now shows colored diffs (1266) - `Black` is now packaged using 'py3' tagged wheels (1388) - `Black` now supports Python 3.8 code, e.g. star expressions in return statements (1121) - `Black` no longer normalizes capital R-string prefixes as those have a community-accepted meaning (1244) - `Black` now uses exit code 2 when specified configuration file doesn't exit (1361) - `Black` now works on AWS Lambda (1141) - added `--force-exclude` argument (1032) - removed deprecated `--py36` option (1236) - fixed `--diff` output when EOF is encountered (526) - fixed ` fmt: off` handling around decorators (560) - fixed unstable formatting with some ` type: ignore` comments (1113) - fixed invalid removal on organizing brackets followed by indexing (1575) - introduced `black-primer`, a CI tool that allows us to run regression tests against existing open source users of Black (1402) - introduced property-based fuzzing to our test suite based on Hypothesis and Hypothersmith (1566) - implemented experimental and disabled by default long string rewrapping (1132), hidden under a `--experimental-string-processing` flag while it's being worked on; this is an undocumented and unsupported feature, you lose Internet points for depending on it (1609) Vim plugin - prefer virtualenv packages over global packages (1383) ```Links
- PyPI: https://pypi.org/project/black - Changelog: https://pyup.io/changelogs/black/ - Repo: https://github.com/psf/blackUpdate wheel from 0.34.2 to 0.37.1.
Changelog
### 0.37.1 ``` - Fixed ``wheel pack`` duplicating the ``WHEEL`` contents when the build number has changed (415) - Fixed parsing of file names containing commas in ``RECORD`` (PR by Hood Chatham) ``` ### 0.37.0 ``` - Added official Python 3.10 support - Updated vendored ``packaging`` library to v20.9 ``` ### 0.36.2 ``` - Updated vendored ``packaging`` library to v20.8 - Fixed wheel sdist missing ``LICENSE.txt`` - Don't use default ``macos/arm64`` deployment target in calculating the platform tag for fat binaries (PR by Ronald Oussoren) ``` ### 0.36.1 ``` - Fixed ``AssertionError`` when ``MACOSX_DEPLOYMENT_TARGET`` was set to ``11`` (PR by Grzegorz Bokota and François-Xavier Coudert) - Fixed regression introduced in 0.36.0 on Python 2.7 when a custom generator name was passed as unicode (Scikit-build) (``TypeError: 'unicode' does not have the buffer interface``) ``` ### 0.36.0 ``` - Added official Python 3.9 support - Updated vendored ``packaging`` library to v20.7 - Switched to always using LF as line separator when generating ``WHEEL`` files (on Windows, CRLF was being used instead) - The ABI tag is taken from the sysconfig SOABI value. On PyPy the SOABI value is ``pypy37-pp73`` which is not compliant with PEP 3149, as it should have both the API tag and the platform tag. This change future-proofs any change in PyPy's SOABI tag to make sure only the ABI tag is used by wheel. - Fixed regression and test for ``bdist_wheel --plat-name``. It was ignored for C extensions in v0.35, but the regression was not detected by tests. ``` ### 0.35.1 ``` - Replaced install dependency on ``packaging`` with a vendored copy of its ``tags`` module - Fixed ``bdist_wheel`` not working on FreeBSD due to mismatching platform tag name (it was not being converted to lowercase) ``` ### 0.35.0 ``` - Switched to the packaging_ library for computing wheel tags - Fixed a resource leak in ``WheelFile.open()`` (PR by Jon Dufresne) .. _packaging: https://pypi.org/project/packaging/ ```Links
- PyPI: https://pypi.org/project/wheel - Changelog: https://pyup.io/changelogs/wheel/ - Repo: https://github.com/pypa/wheelUpdate alembic from 1.4.2 to 1.7.5.
Changelog
### 1.7.5 ``` :include_notes_from: unreleased .. changelog:: ``` ### 1.7.4 ``` :released: October 6, 2021 .. change:: :tags: bug, regression :tickets: 934 Fixed a regression that prevented the use of post write hooks on python version lower than 3.9 .. change:: :tags: bug, environment :tickets: 944 Fixed issue where the :meth:`.MigrationContext.autocommit_block` feature would fail to function when using a SQLAlchemy engine using 2.0 future mode. .. changelog:: ``` ### 1.7.3 ``` :released: September 17, 2021 .. change:: :tags: bug, mypy :tickets: 914 Fixed type annotations for the "constraint_name" argument of operations ``create_primary_key()``, ``create_foreign_key()``. Pull request courtesy TilmanK. .. changelog:: ``` ### 1.7.2 ``` :released: September 17, 2021 .. change:: :tags: bug, typing :tickets: 900 Added missing attributes from context stubs. .. change:: :tags: bug, mypy :tickets: 897 Fixed an import in one of the .pyi files that was triggering an assertion error in some versions of mypy. .. change:: :tags: bug, regression, ops :tickets: 920 Fixed issue where registration of custom ops was prone to failure due to the registration process running ``exec()`` on generated code that as of the 1.7 series includes pep-484 annotations, which in the case of end user code would result in name resolution errors when the exec occurs. The logic in question has been altered so that the annotations are rendered as forward references so that the ``exec()`` can proceed. .. changelog:: ``` ### 1.7.1 ``` :released: August 30, 2021 .. change:: :tags: bug, installation :tickets: 893 Corrected "universal wheel" directive in setup.cfg so that building a wheel does not target Python 2. The PyPi files index for 1.7.0 was corrected manually. Pull request courtesy layday. .. change:: :tags: bug, pep484 :tickets: 895 Fixed issue in generated .pyi files where default values for ``Optional`` arguments were missing, thereby causing mypy to consider them as required. .. change:: :tags: bug, regression, batch :tickets: 896 Fixed regression in batch mode due to :ticket:`883` where the "auto" mode of batch would fail to accommodate any additional migration directives beyond encountering an ``add_column()`` directive, due to a mis-application of the conditional logic that was added as part of this change, leading to "recreate" mode not being used in cases where it is required for SQLite such as for unique constraints. .. changelog:: ``` ### 1.7.0 ``` :released: August 30, 2021 .. change:: :tags: bug, operations :tickets: 879 Fixed regression due to :ticket:`803` where the ``.info`` and ``.comment`` attributes of ``Table`` would be lost inside of the :class:`.DropTableOp` class, which when "reversed" into a :class:`.CreateTableOp` would then have lost these elements. Pull request courtesy Nicolas CANIART. .. change:: :tags: feature, environment :tickets: 842 Enhance ``version_locations`` parsing to handle paths containing spaces. The new configuration option ``version_path_separator`` specifies the character to use when splitting the ``version_locations`` string. The default for new configurations is ``version_path_separator = os``, which will use ``os.pathsep`` (e.g., ``;`` on Windows). .. change:: :tags: installation, changed Alembic 1.7 now supports Python 3.6 and above; support for prior versions including Python 2.7 has been dropped. .. change:: :tags: bug, sqlite, batch :tickets: 883 Batch "auto" mode will now select for "recreate" if the ``add_column()`` operation is used on SQLite, and the column itself meets the criteria for SQLite where ADD COLUMN is not allowed, in this case a functional or parenthesized SQL expression or a ``Computed`` (i.e. generated) column. .. change:: :tags: changed, installation :tickets: 674 Make the ``python-dateutil`` library an optional dependency. This library is only required if the ``timezone`` option is used in the Alembic configuration. An extra require named ``tz`` is available with ``pip install alembic[tz]`` to install it. .. change:: :tags: bug, commands :tickets: 856 Re-implemented the ``python-editor`` dependency as a small internal function to avoid the need for external dependencies. .. change:: :tags: usecase, batch :tickets: 884 Named CHECK constraints are now supported by batch mode, and will automatically be part of the recreated table assuming they are named. They also can be explicitly dropped using ``op.drop_constraint()``. For "unnamed" CHECK constraints, these are still skipped as they cannot be distinguished from the CHECK constraints that are generated by the ``Boolean`` and ``Enum`` datatypes. Note that this change may require adjustments to migrations that drop or rename columns which feature an associated named check constraint, such that an additional ``op.drop_constraint()`` directive should be added for that named constraint as there will no longer be an associated column for it; for the ``Boolean`` and ``Enum`` datatypes, an ``existing_type`` keyword may be passed to ``BatchOperations.drop_constraint`` as well. .. seealso:: :ref:`batch_schematype_constraints` :ref:`batch_check_constraints` .. change:: :tags: changed, installation :tickets: 885 The dependency on ``pkg_resources`` which is part of ``setuptools`` has been removed, so there is no longer any runtime dependency on ``setuptools``. The functionality has been replaced with ``importlib.metadata`` and ``importlib.resources`` which are both part of Python std.lib, or via pypy dependency ``importlib-metadata`` for Python version < 3.8 and ``importlib-resources`` for Python version < 3.9 (while importlib.resources was added to Python in 3.7, it did not include the "files" API until 3.9). .. change:: :tags: feature, tests :tickets: 855 Created a "test suite" similar to the one for SQLAlchemy, allowing developers of third-party dialects to test their code against a set of Alembic tests that have been specially selected to exercise back-end database operations. At the time of release, third-party dialects that have adopted the Alembic test suite to verify compatibility include `CockroachDB <https://pypi.org/project/sqlalchemy-cockroachdb/>`_ and `SAP ASE (Sybase) <https://pypi.org/project/sqlalchemy-sybase/>`_. .. change:: :tags: bug, postgresql :tickets: 874 Fixed issue where usage of the PostgreSQL ``postgresql_include`` option within a :meth:`.Operations.create_index` would raise a KeyError, as the additional column(s) need to be added to the table object used by the construct internally. The issue is equivalent to the SQL Server issue fixed in :ticket:`513`. Pull request courtesy Steven Bronson. .. change:: :tags: feature, general pep-484 type annotations have been added throughout the library. Additionally, stub .pyi files have been added for the "dynamically" generated Alembic modules ``alembic.op`` and ``alembic.config``, which include complete function signatures and docstrings, so that the functions in these namespaces will have both IDE support (vscode, pycharm, etc) as well as support for typing tools like Mypy. The files themselves are statically generated from their source functions within the source tree. .. changelog:: ``` ### 1.6.5 ``` :released: May 27, 2021 .. change:: :tags: bug, autogenerate :tickets: 849 Fixed issue where dialect-specific keyword arguments within the :class:`.DropIndex` operation directive would not render in the autogenerated Python code. As support was improved for adding dialect specific arguments to directives as part of :ticket:`803`, in particular arguments such as "postgresql_concurrently" which apply to the actual create/drop of the index, support was needed for these to render even in a drop index operation. Pull request courtesy Jet Zhou. .. changelog:: ``` ### 1.6.4 ``` :released: May 24, 2021 .. change:: :tags: bug, regression, op directives :tickets: 848 Fixed regression caused by just fixed :ticket:`844` that scaled back the filter for ``unique=True/index=True`` too far such that these directives no longer worked for the ``op.create_table()`` op, this has been fixed. .. changelog:: ``` ### 1.6.3 ``` :released: May 21, 2021 .. change:: :tags: bug, regression, autogenerate :tickets: 844 Fixed 1.6-series regression where ``UniqueConstraint`` and to a lesser extent ``Index`` objects would be doubled up in the generated model when the ``unique=True`` / ``index=True`` flags were used. .. change:: :tags: bug, autogenerate :tickets: 839 Fixed a bug where paths defined in post-write hook options would be wrongly escaped in non posix environment (Windows). .. change:: :tags: bug, regression, versioning :tickets: 843 Fixed regression where a revision file that contained its own down revision as a dependency would cause an endless loop in the traversal logic. .. changelog:: ``` ### 1.6.2 ``` :released: May 6, 2021 .. change:: :tags: bug, versioning, regression :tickets: 839 Fixed additional regression nearly the same as that of :ticket:`838` just released in 1.6.1 but within a slightly different codepath, where "alembic downgrade head" (or equivalent) would fail instead of iterating no revisions. .. changelog:: ``` ### 1.6.1 ``` :released: May 6, 2021 .. change:: :tags: bug, versioning, regression :tickets: 838 Fixed regression in new revisioning traversal where "alembic downgrade base" would fail if the database itself were clean and unversioned; additionally repairs the case where downgrade would fail if attempting to downgrade to the current head that is already present. .. changelog:: ``` ### 1.6.0 ``` :released: May 3, 2021 .. change:: :tags: bug, autogenerate :tickets: 803 Refactored the implementation of :class:`.MigrateOperation` constructs such as :class:`.CreateIndexOp`, :class:`.CreateTableOp`, etc. so that they no longer rely upon maintaining a persistent version of each schema object internally; instead, the state variables of each operation object will be used to produce the corresponding construct when the operation is invoked. The rationale is so that environments which make use of operation-manipulation schemes such as those those discussed in :ref:`autogen_rewriter` are better supported, allowing end-user code to manipulate the public attributes of these objects which will then be expressed in the final output, an example is ``some_create_index_op.kw["postgresql_concurrently"] = True``. Previously, these objects when generated from autogenerate would typically hold onto the original, reflected element internally without honoring the other state variables of each construct, preventing the public API from working. .. change:: :tags: bug, environment :tickets: 829 Fixed regression caused by the SQLAlchemy 1.4/2.0 compatibility switch where calling ``.rollback()`` or ``.commit()`` explicitly within the ``context.begin_transaction()`` context manager would cause it to fail when the block ended, as it did not expect that the transaction was manually closed. .. change:: :tags: bug, autogenerate :tickets: 827 Improved the rendering of ``op.add_column()`` operations when adding multiple columns to an existing table, so that the order of these statements matches the order in which the columns were declared in the application's table metadata. Previously the added columns were being sorted alphabetically. .. change:: :tags: feature, autogenerate :tickets: 819 Fix the documentation regarding the default command-line argument position of the revision script filename within the post-write hook arguments. Implement a ``REVISION_SCRIPT_FILENAME`` token, enabling the position to be changed. Switch from ``str.split()`` to ``shlex.split()`` for more robust command-line argument parsing. .. change:: :tags: feature :tickets: 822 Implement a ``.cwd`` (current working directory) suboption for post-write hooks (of type ``console_scripts``). This is useful for tools like pre-commit, which rely on the working directory to locate the necessary config files. Add pre-commit as an example to the documentation. Minor change: rename some variables from ticket 819 to improve readability. .. change:: :tags: bug, versioning :tickets: 765, 464 The algorithm used for calculating downgrades/upgrades/iterating revisions has been rewritten, to resolve ongoing issues of branches not being handled consistently particularly within downgrade operations, as well as for overall clarity and maintainability. This change includes that a deprecation warning is emitted if an ambiguous command such as "downgrade -1" when multiple heads are present is given. In particular, the change implements a long-requested use case of allowing downgrades of a single branch to a branchpoint. Huge thanks to Simon Bowly for their impressive efforts in successfully tackling this very difficult problem. .. change:: :tags: bug, batch :tickets: 799 Added missing ``batch_op.create_table_comment()``, ``batch_op.drop_table_comment()`` directives to batch ops. .. changelog:: ``` ### 1.5.8 ``` :released: March 23, 2021 .. change:: :tags: bug, environment :tickets: 816 Fixed regression caused by SQLAlchemy 1.4 where the "alembic current" command would fail due to changes in the ``URL`` object. .. changelog:: ``` ### 1.5.7 ``` :released: March 11, 2021 .. change:: :tags: bug, autogenerate :tickets: 813 Adjusted the recently added :paramref:`.EnvironmentContext.configure.include_name` hook to accommodate for additional object types such as "views" that don't have a parent table, to support third party recipes and extensions. Pull request courtesy Oliver Rice. .. changelog:: ``` ### 1.5.6 ``` :released: March 5, 2021 .. change:: :tags: bug, mssql, operations :tickets: 812 Fixed bug where the "existing_type" parameter, which the MSSQL dialect requires in order to change the nullability of a column in the absence of also changing the column type, would cause an ALTER COLUMN operation to incorrectly render a second ALTER statement without the nullability if a new type were also present, as the MSSQL-specific contract did not anticipate all three of "nullability", "type_" and "existing_type" being sent at the same time. .. change:: :tags: template :ticket: 805 Add async template to Alembic to bootstrap environments that use async DBAPI. Updated the cookbook to include a migration guide on how to adapt an existing environment for use with DBAPI drivers. .. changelog:: ``` ### 1.5.5 ``` :released: February 20, 2021 .. change:: :tags: bug Adjusted the use of SQLAlchemy's ".copy()" internals to use "._copy()" for version 1.4.0, as this method is being renamed. .. change:: :tags: bug, environment :tickets: 797 Added new config file option ``prepend_sys_path``, which is a series of paths that will be prepended to sys.path; the default value in newly generated alembic.ini files is ".". This fixes a long-standing issue where for some reason running the alembic command line would not place the local "." path in sys.path, meaning an application locally present in "." and importable through normal channels, e.g. python interpreter, pytest, etc. would not be located by Alembic, even though the ``env.py`` file is loaded relative to the current path when ``alembic.ini`` contains a relative path. To enable for existing installations, add the option to the alembic.ini file as follows:: sys.path path, will be prepended to sys.path if present. defaults to the current working directory. prepend_sys_path = . .. seealso:: :ref:`installation` - updated documentation reflecting that local installation of the project is not necessary if running the Alembic cli from the local path. .. changelog:: ``` ### 1.5.4 ``` :released: February 3, 2021 .. change:: :tags: bug, versioning :tickets: 789 Fixed bug in versioning model where a downgrade across a revision with a dependency on another branch, yet an ancestor is also dependent on that branch, would produce an erroneous state in the alembic_version table, making upgrades impossible without manually repairing the table. .. changelog:: ``` ### 1.5.3 ``` :released: January 29, 2021 .. change:: :tags: bug, autogenerate :tickets: 786 Changed the default ordering of "CREATE" and "DROP" statements indexes and unique constraints within the autogenerate process, so that for example in an upgrade() operation, a particular index or constraint that is to be replaced such as for a casing convention change will not produce any naming conflicts. For foreign key constraint objects, this is already how constraints are ordered, and for table objects, users would normally want to use :meth:`.Operations.rename_table` in any case. .. change:: :tags: bug, autogenerate, mssql :tickets: 787 Fixed assorted autogenerate issues with SQL Server: * ignore default reflected identity on primary_key columns * improve server default comparison .. change:: :tags: bug, mysql, autogenerate :tickets: 788 Fixed issue where autogenerate rendering of ``op.alter_column()`` would fail to include MySQL ``existing_nullable=False`` if the column were part of a primary key constraint within the table metadata. .. changelog:: ``` ### 1.5.2 ``` :released: January 20, 2021 .. change:: :tags: bug, versioning, regression :tickets: 784 Fixed regression where new "loop detection" feature introduced in :ticket:`757` produced false positives for revision names that have overlapping substrings between revision number and down revision and/or dependency, if the downrev/dependency were not in sequence form. .. change:: :tags: bug, environment :tickets: 782 Fixed regression where Alembic would fail to create a transaction properly if the :class:`sqlalchemy.engine.Connection` were a so-called "branched" connection, that is, one where the ``.connect()`` method had been called to create a "sub" connection. .. changelog:: ``` ### 1.5.1 ``` :released: January 19, 2021 .. change:: :tags: bug, installation, commands :tickets: 780 Fixed installation issue where the "templates" directory was not being installed, preventing commands like "list_templates" and "init" from working. .. changelog:: ``` ### 1.5.0 ``` :released: January 18, 2021 .. change:: :tags: usecase, operations :tickets: 730 Added support for rendering of "identity" elements on :class:`.Column` objects, supported in SQLAlchemy via the :class:`.Identity` element introduced in version 1.4. Adding columns with identity is supported on PostgreSQL, MSSQL and Oracle. Changing the identity options or removing it is supported only on PostgreSQL and Oracle. .. change:: :tags: changed, environment To accommodate SQLAlchemy 1.4 and 2.0, the migration model now no longer assumes that the SQLAlchemy Connection will autocommit an individual operation. This essentially means that for databases that use non-transactional DDL (pysqlite current driver behavior, MySQL), there is still a BEGIN/COMMIT block that will surround each individual migration. Databases that support transactional DDL should continue to have the same flow, either per migration or per-entire run, depending on the value of the :paramref:`.Environment.configure.transaction_per_migration` flag. .. change:: :tags: changed, environment A :class:`.CommandError` is raised if a ``sqlalchemy.engine.Engine`` is passed to the :meth:`.MigrationContext.configure` method instead of a ``sqlalchemy.engine.Connection`` object. Previously, this would be a warning only. .. change:: :tags: bug, operations :tickets: 753 Modified the ``add_column()`` operation such that the ``Column`` object in use is shallow copied to a new instance if that ``Column`` is already attached to a ``table()`` or ``Table``. This accommodates for the change made in SQLAlchemy issue 5618 which prohibits a ``Column`` from being associated with multiple ``table()`` objects. This resumes support for using a ``Column`` inside of an Alembic operation that already refers to a parent ``table()`` or ``Table`` as well as allows operation objects just autogenerated to work. .. change:: :tags: feature, autogenerate :tickets: 650 Added new hook :paramref:`.EnvironmentContext.configure.include_name`, which complements the :paramref:`.EnvironmentContext.configure.include_object` hook by providing a means of preventing objects of a certain name from being autogenerated **before** the SQLAlchemy reflection process takes place, and notably includes explicit support for passing each schema name when :paramref:`.EnvironmentContext.configure.include_schemas` is set to True. This is most important especially for environments that make use of :paramref:`.EnvironmentContext.configure.include_schemas` where schemas are actually databases (e.g. MySQL) in order to prevent reflection sweeps of the entire server. .. seealso:: :ref:`autogenerate_include_hooks` - new documentation section .. change:: :tags: removed, autogenerate The long deprecated :paramref:`.EnvironmentContext.configure.include_symbol` hook is removed. The :paramref:`.EnvironmentContext.configure.include_object` and :paramref:`.EnvironmentContext.configure.include_name` hooks both achieve the goals of this hook. .. change:: :tags: bug, autogenerate :tickets: 721 Added rendering for the ``Table.prefixes`` element to autogenerate so that the rendered Python code includes these directives. Pull request courtesy Rodrigo Ce Moretto. .. change:: :tags: bug, batch :tickets: 761 Added missing "create comment" feature for columns that are altered in batch migrations. .. change:: :tags: changed :tickets: 748 Alembic 1.5.0 now supports **Python 2.7 and Python 3.6 and above**, as well as **SQLAlchemy 1.3.0 and above**. Support is removed for Python 3 versions prior to 3.6 and SQLAlchemy versions prior to the 1.3 series. .. change:: :tags: bug, batch :tickets: 773 Made an adjustment to the PostgreSQL dialect to allow it to work more effectively in batch mode, where a datatype like Boolean or non-native Enum that may have embedded rules to generate CHECK constraints will be more correctly handled in that these constraints usually will not have been generated on the PostgreSQL backend; previously it would inadvertently assume they existed unconditionally in a special PG-only "drop constraint" step. .. change:: :tags: feature, versioning :tickets: 757 The revision tree is now checked for cycles and loops between revision files when the revision environment is loaded up. Scenarios such as a revision pointing to itself, or a revision that can reach itself via a loop, are handled and will raise the :class:`.CycleDetected` exception when the environment is loaded (expressed from the Alembic commandline as a failure message and nonzero return code). Previously, these situations were silently ignored up front, and the behavior of revision traversal would either be silently incorrect, or would produce errors such as :class:`.RangeNotAncestorError`. Pull request courtesy Koichiro Den. .. change:: :tags: usecase, commands Add ``__main__.py`` file to alembic package to support invocation with ``python -m alembic``. .. change:: :tags: removed, commands Removed deprecated ``--head_only`` option to the ``alembic current`` command .. change:: :tags: removed, operations Removed legacy parameter names from operations, these have been emitting warnings since version 0.8. In the case that legacy version files have not yet been updated, these can be modified directly in order to maintain compatibility: * :meth:`.Operations.drop_constraint` - "type" (use "type_") and "name" (use "constraint_name") * :meth:`.Operations.create_primary_key` - "cols" (use "columns") and "name" (use "constraint_name") * :meth:`.Operations.create_unique_constraint` - "name" (use "constraint_name"), "source" (use "table_name") and "local_cols" (use "columns") * :meth:`.Operations.batch_create_unique_constraint` - "name" (use "constraint_name") * :meth:`.Operatio