Detect backward incompatible migrations for your django project
Project description
Detect backward incompatible migrations for your django project. It will save you time by making sure migrations will not break anything.
Installation
pip install django-migration-linter
Usage
django-migration-linter DJANGO_PROJECT_FOLDER [GIT_COMMIT_ID] [--ignore-name-contains=IGNORE_NAME_CONTAINS] [--include-apps INCLUDE_APPS [INCLUDE_APPS ...] | --exclude-apps EXCLUDE_APPS [EXCLUDE_APPS ...]]
Parameter |
Description |
---|---|
DJANGO_PROJECT_FOLDER |
An absolute or relative path to the django project. |
GIT_COMMIT_ID |
If specified, only migrations since this commit will be taken into account. If not specified, all migrations will be linted. |
--ignore-name-contains IGNORE_NAME_CONTAINS |
Ignore migrations containing this name. |
--ignore-name IGNORE_NAME [IGNORE_NAME ...] |
Ignore migrations with exactly one of these names. |
--include-apps INCLUDE_APPS [INCLUDE_APPS ...] |
Check only migrations that are in the specified django apps. |
--exclude-apps EXCLUDE_APPS [EXCLUDE_APPS ...] |
Ignore migrations that are in the specified django apps. |
--verbose or -v |
Print more information during execution. |
--database DATABASE |
Specify the database for which to generate the SQL. Defaults to default. |
--cache-path PATH |
specify a directory that should be used to store cache-files in. |
--no-cache |
Don’t use a cache. |
Examples
3YOURMIND is running the linter on every build getting pushed through CI. Checkout the examples/ folder to see how you could integrate the linter in your test suite.
Backward incompatible migrations
The linter analyses your migrations and checks the SQL for:
Added NOT NULL columns, which don’t have a DEFAULT value
Dropping columns
Renaming columns
Renaming tables
Altering columns (which can be backward compatible and eventually ignored)
Those are the most important and frequent backward incompatible migrations. We are happy to add more if you have some.
Ignoring migrations
You can also ignore migrations by adding this to your migrations:
import django_migration_linter as linter
# ...
operations = [
linter.IgnoreMigration(),
# ...
]
# ...
Cache
By default, the linter uses a cache to prevent linting the same migration again. The default location of the cache on Linux is /home/<username>/.cache/django-migration-linter/<version>/<ldjango-project>.pickle.
Since the linter uses hashes, modifying migration files, will re-run the linter on that migration. If you want to run the linter without cache, use the flag --no-cache. If you want to invalidate the cache, delete the cache folder.
Tests
The easiest way to run the tests is to invoke tox.
Contributing
First, thank you very much if you want to contribute to the project. Please base your work on the master branch and also target this branch in your pull request.
Blog post
License
django-migration-linter is released under the Apache 2.0 License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file django-migration-linter-0.1.4.tar.gz
.
File metadata
- Download URL: django-migration-linter-0.1.4.tar.gz
- Upload date:
- Size: 17.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.8rc1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ca88da1bd2e75e2c341d9f8b4cf5c824fcfc7b84a34c1c7d683d3a86d88d667e |
|
MD5 | 289a60143bd0cb648ab14c97b8e11627 |
|
BLAKE2b-256 | f44304325e1f53855cf15746f733b223367e95a15614906c03c5d044226183f9 |
File details
Details for the file django_migration_linter-0.1.4-py2.py3-none-any.whl
.
File metadata
- Download URL: django_migration_linter-0.1.4-py2.py3-none-any.whl
- Upload date:
- Size: 27.0 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.8rc1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5584cb63927c78d090476808aeeaa35cfe3a36b059b56c18b75dd1ee8d76ec7e |
|
MD5 | 1ea30d9f7823d11dff22afc0ca73748d |
|
BLAKE2b-256 | f9d2f80713e4e46cc813f91ad2d6790a44bb15df47d1e64790618c1436b06ff4 |