plain.postgres 0.91.0__tar.gz → 0.91.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/PKG-INFO +1 -1
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/CHANGELOG.md +12 -1
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/cli/converge.py +9 -9
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/cli/sync.py +28 -23
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/pyproject.toml +1 -1
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/.gitignore +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/CLAUDE.md +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/LICENSE +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/README.md +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/README.md +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/__init__.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/agents/.claude/rules/plain-postgres.md +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/agents/.claude/skills/plain-postgres-doctor/SKILL.md +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/aggregates.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/base.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/cli/__init__.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/cli/core.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/cli/diagnose.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/cli/migrations.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/cli/schema.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/config.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/connection.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/connections.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/constants.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/constraints.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/convergence/__init__.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/convergence/analysis.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/convergence/fixes.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/convergence/planning.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/database_url.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/db.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/ddl.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/default_settings.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/deletion.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/dialect.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/entrypoints.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/enums.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/exceptions.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/expressions.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/fields/__init__.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/fields/encrypted.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/fields/json.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/fields/mixins.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/fields/related.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/fields/related_descriptors.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/fields/related_lookups.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/fields/related_managers.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/fields/reverse_descriptors.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/fields/reverse_related.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/fields/timezones.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/forms.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/functions/__init__.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/functions/comparison.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/functions/datetime.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/functions/math.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/functions/mixins.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/functions/text.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/functions/window.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/indexes.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/introspection/__init__.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/introspection/health.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/introspection/schema.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/lookups.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/meta.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/migrations/__init__.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/migrations/autodetector.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/migrations/exceptions.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/migrations/executor.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/migrations/graph.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/migrations/loader.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/migrations/migration.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/migrations/operations/__init__.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/migrations/operations/base.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/migrations/operations/fields.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/migrations/operations/models.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/migrations/operations/special.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/migrations/optimizer.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/migrations/questioner.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/migrations/recorder.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/migrations/serializer.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/migrations/state.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/migrations/utils.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/migrations/writer.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/options.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/otel.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/preflight.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/query.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/query_utils.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/registry.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/schema.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/sql/__init__.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/sql/compiler.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/sql/constants.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/sql/datastructures.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/sql/query.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/sql/where.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/test/__init__.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/test/pytest.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/test/utils.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/transaction.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/types.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/types.pyi +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/utils.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/tests/app/examples/migrations/0001_initial.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/tests/app/examples/migrations/0002_test_field_removed.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/tests/app/examples/migrations/0003_deleteparent_childsetnull_childsetdefault_and_more.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/tests/app/examples/migrations/0004_defaultquerysetmodel_mixintestmodel_and_more.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/tests/app/examples/migrations/0005_feature_carfeature_car_features.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/tests/app/examples/migrations/0006_secretstore.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/tests/app/examples/migrations/__init__.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/tests/app/examples/models.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/tests/app/settings.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/tests/app/urls.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/tests/test_connection_isolation.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/tests/test_connection_lifecycle.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/tests/test_convergence.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/tests/test_database_url.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/tests/test_delete_behaviors.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/tests/test_encrypted_fields.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/tests/test_exceptions.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/tests/test_introspection.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/tests/test_iterator.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/tests/test_manager_assignment.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/tests/test_models.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/tests/test_read_only_transactions.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/tests/test_related_descriptors.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/tests/test_related_manager_api.py +0 -0
- {plain_postgres-0.91.0 → plain_postgres-0.91.1}/tests/test_schema_normalize_type.py +0 -0
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# plain-postgres changelog
|
|
2
2
|
|
|
3
|
+
## [0.91.1](https://github.com/dropseed/plain/releases/plain-postgres@0.91.1) (2026-03-29)
|
|
4
|
+
|
|
5
|
+
### What's changed
|
|
6
|
+
|
|
7
|
+
- Indented `sync` and `converge` sub-items under section headers for readability in environments without ANSI colors (e.g. Heroku deploy logs). ([b6b494dcc698](https://github.com/dropseed/plain/commit/b6b494dcc698))
|
|
8
|
+
- `sync` now uses `MigrationExecutor` directly instead of calling through the CLI layer, giving cleaner indented output. ([b6b494dcc698](https://github.com/dropseed/plain/commit/b6b494dcc698))
|
|
9
|
+
|
|
10
|
+
### Upgrade instructions
|
|
11
|
+
|
|
12
|
+
- No changes required.
|
|
13
|
+
|
|
3
14
|
## [0.91.0](https://github.com/dropseed/plain/releases/plain-postgres@0.91.0) (2026-03-29)
|
|
4
15
|
|
|
5
16
|
### What's changed
|
|
@@ -22,7 +33,7 @@
|
|
|
22
33
|
|
|
23
34
|
1. **Replace `migrate` with `postgres sync` in deploy scripts and CI.** `postgres sync` applies migrations and runs convergence in a single step. For CI checks, use `postgres sync --check` instead of `migrate --check` / `makemigrations --check`. The lower-level commands are still available as `migrations create` and `migrations apply`.
|
|
24
35
|
|
|
25
|
-
2. **Remove index/constraint operations from migration files.** Delete any `AddIndex`, `RemoveIndex`, `RenameIndex`, `AddConstraint`, and `RemoveConstraint` operations from your migration files — these classes no longer exist and will cause import errors.
|
|
36
|
+
2. **Remove index/constraint operations from migration files.** Delete any `AddIndex`, `RemoveIndex`, `RenameIndex`, `AddConstraint`, and `RemoveConstraint` operations from your migration files — these classes no longer exist and will cause import errors. It's fine to leave a migration with `operations = []`. Indexes and constraints declared on your models will be created automatically by convergence.
|
|
26
37
|
|
|
27
38
|
3. **Replace `PositiveIntegerField`** (and `PositiveBigIntegerField`, `PositiveSmallIntegerField`) with `IntegerField` (or `BigIntegerField`, `SmallIntegerField`) in both models and migration files. Add a `CheckConstraint` if you need to enforce positive values.
|
|
28
39
|
|
|
@@ -66,32 +66,32 @@ def converge(yes: bool, drop_undeclared: bool) -> None:
|
|
|
66
66
|
click.secho(f" FAILED: {r.item.describe()} — {r.error}", fg="red")
|
|
67
67
|
|
|
68
68
|
click.echo()
|
|
69
|
-
click.secho(result.summary, fg="green" if result.ok else "yellow")
|
|
69
|
+
click.secho(f" {result.summary}", fg="green" if result.ok else "yellow")
|
|
70
70
|
if not result.ok_for_sync:
|
|
71
71
|
success = False
|
|
72
72
|
|
|
73
73
|
if plan.blocked:
|
|
74
74
|
click.echo()
|
|
75
|
-
click.secho("Schema changes require a staged rollout:", fg="red", bold=True)
|
|
75
|
+
click.secho(" Schema changes require a staged rollout:", fg="red", bold=True)
|
|
76
76
|
for item in plan.blocked:
|
|
77
|
-
click.secho(f"
|
|
77
|
+
click.secho(f" {item.drift.describe()}", fg="red")
|
|
78
78
|
if item.guidance:
|
|
79
|
-
click.secho(f"
|
|
79
|
+
click.secho(f" {item.guidance}", fg="red", dim=True)
|
|
80
80
|
success = False
|
|
81
81
|
|
|
82
82
|
if not drop_undeclared and plan.blocking_cleanup:
|
|
83
83
|
click.echo()
|
|
84
|
-
click.secho("Undeclared constraints still in database:", fg="red", bold=True)
|
|
84
|
+
click.secho(" Undeclared constraints still in database:", fg="red", bold=True)
|
|
85
85
|
for item in plan.blocking_cleanup:
|
|
86
|
-
click.secho(f"
|
|
87
|
-
click.secho("Rerun with --drop-undeclared to remove them.", fg="red")
|
|
86
|
+
click.secho(f" {item.describe()}", fg="red")
|
|
87
|
+
click.secho(" Rerun with --drop-undeclared to remove them.", fg="red")
|
|
88
88
|
success = False
|
|
89
89
|
|
|
90
90
|
if not drop_undeclared and plan.optional_cleanup:
|
|
91
91
|
click.echo()
|
|
92
92
|
for item in plan.optional_cleanup:
|
|
93
|
-
click.echo(f"
|
|
94
|
-
click.echo("Run with --drop-undeclared to remove undeclared indexes.")
|
|
93
|
+
click.echo(f" {item.describe()}")
|
|
94
|
+
click.echo(" Run with --drop-undeclared to remove undeclared indexes.")
|
|
95
95
|
|
|
96
96
|
if not success:
|
|
97
97
|
sys.exit(1)
|
|
@@ -109,19 +109,24 @@ def _create_migrations() -> None:
|
|
|
109
109
|
|
|
110
110
|
|
|
111
111
|
def _migrate() -> None:
|
|
112
|
-
from
|
|
112
|
+
from ..db import get_connection
|
|
113
|
+
from ..migrations.executor import MigrationExecutor
|
|
113
114
|
|
|
114
115
|
click.secho("Applying migrations...", bold=True)
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
116
|
+
|
|
117
|
+
conn = get_connection()
|
|
118
|
+
conn.ensure_connection()
|
|
119
|
+
executor = MigrationExecutor(conn)
|
|
120
|
+
targets = executor.loader.graph.leaf_nodes()
|
|
121
|
+
migration_plan = executor.migration_plan(targets)
|
|
122
|
+
|
|
123
|
+
if not migration_plan:
|
|
124
|
+
click.echo(" No migrations to apply.")
|
|
125
|
+
return
|
|
126
|
+
|
|
127
|
+
click.echo(f" Applying {len(migration_plan)} migration(s)...")
|
|
128
|
+
executor.migrate(targets, plan=migration_plan)
|
|
129
|
+
click.echo(f" Applied {len(migration_plan)} migration(s).")
|
|
125
130
|
|
|
126
131
|
|
|
127
132
|
def _converge(*, drop_undeclared: bool) -> None:
|
|
@@ -136,38 +141,38 @@ def _converge(*, drop_undeclared: bool) -> None:
|
|
|
136
141
|
|
|
137
142
|
for r in result.results:
|
|
138
143
|
if r.ok:
|
|
139
|
-
click.echo(f"
|
|
144
|
+
click.echo(f" {r.sql}")
|
|
140
145
|
else:
|
|
141
|
-
click.secho(f"
|
|
146
|
+
click.secho(f" FAILED: {r.item.describe()} — {r.error}", fg="red")
|
|
142
147
|
|
|
143
|
-
click.secho(result.summary, fg="green" if result.ok else "yellow")
|
|
148
|
+
click.secho(f" {result.summary}", fg="green" if result.ok else "yellow")
|
|
144
149
|
if not result.ok_for_sync:
|
|
145
150
|
success = False
|
|
146
151
|
|
|
147
152
|
if plan.blocked:
|
|
148
153
|
click.echo()
|
|
149
|
-
click.secho("Schema changes require a staged rollout:", fg="red", bold=True)
|
|
154
|
+
click.secho(" Schema changes require a staged rollout:", fg="red", bold=True)
|
|
150
155
|
for item in plan.blocked:
|
|
151
|
-
click.secho(f"
|
|
156
|
+
click.secho(f" {item.drift.describe()}", fg="red")
|
|
152
157
|
if item.guidance:
|
|
153
|
-
click.secho(f"
|
|
158
|
+
click.secho(f" {item.guidance}", fg="red", dim=True)
|
|
154
159
|
success = False
|
|
155
160
|
|
|
156
161
|
if not drop_undeclared and plan.blocking_cleanup:
|
|
157
162
|
click.echo()
|
|
158
|
-
click.secho("Undeclared constraints still in database:", fg="red", bold=True)
|
|
163
|
+
click.secho(" Undeclared constraints still in database:", fg="red", bold=True)
|
|
159
164
|
for item in plan.blocking_cleanup:
|
|
160
|
-
click.secho(f"
|
|
161
|
-
click.secho("Rerun with --drop-undeclared to remove them.", fg="red")
|
|
165
|
+
click.secho(f" {item.describe()}", fg="red")
|
|
166
|
+
click.secho(" Rerun with --drop-undeclared to remove them.", fg="red")
|
|
162
167
|
success = False
|
|
163
168
|
|
|
164
169
|
if not drop_undeclared and plan.optional_cleanup:
|
|
165
170
|
click.echo()
|
|
166
171
|
for item in plan.optional_cleanup:
|
|
167
|
-
click.echo(f"
|
|
168
|
-
click.echo("Run with --drop-undeclared to remove undeclared indexes.")
|
|
172
|
+
click.echo(f" {item.describe()}")
|
|
173
|
+
click.echo(" Run with --drop-undeclared to remove undeclared indexes.")
|
|
169
174
|
|
|
170
175
|
if not success:
|
|
171
176
|
sys.exit(1)
|
|
172
177
|
elif not items:
|
|
173
|
-
click.
|
|
178
|
+
click.echo(" Schema is converged.")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/fields/related_descriptors.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/fields/reverse_descriptors.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/migrations/operations/__init__.py
RENAMED
|
File without changes
|
{plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/migrations/operations/base.py
RENAMED
|
File without changes
|
{plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/migrations/operations/fields.py
RENAMED
|
File without changes
|
{plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/migrations/operations/models.py
RENAMED
|
File without changes
|
{plain_postgres-0.91.0 → plain_postgres-0.91.1}/plain/postgres/migrations/operations/special.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plain_postgres-0.91.0 → plain_postgres-0.91.1}/tests/app/examples/migrations/0001_initial.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plain_postgres-0.91.0 → plain_postgres-0.91.1}/tests/app/examples/migrations/0006_secretstore.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|