summaryrefslogtreecommitdiff
path: root/CHANGELOG.rst
blob: c96c38daa781174ae10010ef181bdf0f8ea04703 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
8.2.0 (released 2022-12-14)
---------------------------

* Bugfix: prevent duplicate 'BEGIN' statements being issued with Postgresql
  backend. This adds a new ``rollback_on_exit`` argument to the
  ``DatabaseBackend.transaction()`` method and removes the ``rollback`` method
  from the returned ``TransactionManager`` object.
* Add support for Python 3.11

8.1.0 (released 2022-11-03)
---------------------------

* Add a new ``yoyo init`` command

8.0.0 (released 2022-10-05)
---------------------------

* Rewrite the topological sorting algorithm to provide a more stable sort
  order. Note that this may change the order in which migrations are applied.
* Add support for custom backends via setuptools entry points
* Add support for the Psycopg 3 PostgreSQL driver via the
  ``postgresql+psycopg://`` URL scheme
* Add support for Python 3.10
* Drop support for Python 3.6


7.3.2 (released 2021-05-23)
---------------------------

* Bugfix: fix errors arising when migration code changes connection parameters,
  for example the schema search path in PostgreSQL. Yoyo now uses a separate
  database connection for running migrations than for updating its internal
  metadata tables.

* Bugfix: fix error when loading Python module based migrations, caused by
  changes to importlib in Python 3.8.10 and Python 3.9.5.

* Add support for arbitrary connection parameters to snowflake backend

7.3.1 (released 2021-01-18)
---------------------------

* Add support for AWS Redshift (thanks to Daniele Pizzoni for the patch)
* Add a new ``yoyo develop`` command
* Bugfix: properly escape passwords containing forward slashes


7.2.1 (released 2020-11-05)
---------------------------

* Bugfix: allow configuration values passed in from the environment to contain
  percent signs (thanks to Andrew Gates for the patch)
* Add support for ``--prompt-password`` argument to ``break-lock`` command
* Add support for Python 3.9 (no code changes)
* Drop support for Python 3.5 (no code changes)


7.2.0 (released 2020-07-17)
---------------------------

* Bugfix: fixed environment variable interpolation in config file when
  variables are named in upper case
* Bugfix: reliability fixes for the command line script (thanks to Chris van
  Pelt for the patch)
* Bugfix: the newmigration script should now work for Windows users (thanks to
  Jimmy Laguna Montano for the patch)
* Add experimental support for the `Snowflake` database backend (thanks to
  Emmet Murphy for the patch)

7.1.2 (released 2020-06-16)
---------------------------

* Bugfix: fix circular dependency detection bug introduced in v7.1.1

7.1.1 (released 2020-06-15)
---------------------------

* Bugfix: command line tool no longer shows an error message if you don't
  specify a command

* Bugfix: migrations are maintained in filename order wherever the dependency
  ordering allows it

7.1.0 (released 2020-06-08)
---------------------------

* Add ``yoyo list`` command

* Add support for substituting environment variables in the config file
  (https://bitbucket.org/ollyc/yoyo/issues/55/migrations-and-rollbacks-are-both-being)

* Add support for a new %include directive in config files

* Bugfix: migrations are now grouped by source
  (https://bitbucket.org/ollyc/yoyo/issues/54/migrations-and-rollbacks-are-both-being)

* Bugfix: viewing migration source in interactive mode no longer raises an
  exception

7.0.2 (released 2020-03-09)
---------------------------

* Bugfix: removed usage of f-strings to restore python 3.5 compatibility

7.0.1 (released 2020-02-18)
---------------------------

* Bugfix: rolling back SQL file migrations now works correctly

* Support MySQL specific encryption options when connecting

* Bugfix: ``yoyo new`` script now always creates temporary files with the
  correct file extension

7.0.0 (released 2020-01-20)
---------------------------

* Add support for Python 3.8

* Drop compatibility with Python 2.7 and Python 3.6

* Allow migrations to be specified as ``.sql`` files

* Load migrations as modules; this allows migration scripts to access the
  ``__file__`` attribute.

* Bugfix: the ``--all`` flag now works as expected with the ``rollback``
  command

* Bugfix: fix an error when running under a non-default schema in PostgreSQL

6.1.0 (released 2019-02-13)
---------------------------

* The ``sources`` configuration option can now contain glob patterns and
  references to migrations installed in python packages.

* Bugfix: rolling back a group of steps now works as expected (thanks to Jon
  Sorensen)

6.0.0 (released 2018-08-21)
---------------------------

**This version introduces backwards incompatible changes**. Please read this
file carefully before upgrading.

* Bugfix: now works on MySQL+utf8mb4 databases. This requires a new
  internal schema for recording applied migrations, and your database will be
  automatically updated when you first run this version. After upgrading, your
  database will no longer be compatible with older versions of yoyo migrations.
  (thanks to James Socol and others for the report and discussion of the
  implementation)

* Bugfix: The `yoyo break-lock` command is no longer broken

* All migration operations (``apply``, ``rollback``, ``mark``, ``unmark``) are
  now logged in a table ``_yoyo_log`` (thanks to Matt Williams for the
  suggestion).

* The CLI script now displays the list of selected migrations before
  asking for final confirmation when in interactive mode.

* Added support for ``__transactional__`` flag in sqlite migrations


5.1.7 (released 2018-07-30)
---------------------------

* Bugfix: fix uppercase letters being excluded from generated filenames
  (thanks to Romain Godefroy)

5.1.6 (released 2018-06-28)
---------------------------

* Bugfix: fix problems running on Python 3 on Windows

5.1.5 (released 2018-06-13)
---------------------------

* Bugfix: adding a ``schema`` parameter to PostgreSQL connection strings
  no longer raises an exception (thanks to Mohamed Habib for the report)

5.1.0 (released 2018-07-11)
---------------------------

* ``yoyo rollback`` now only rolls back a single migration in batch mode (
  unless a --revision or --all is specified) (thanks to
  `A A <https://bitbucket.org/linuxnotes/>`_ for the idea and initial
  implementation)
* Added support for Oracle via cx_Oracle backend (thanks to Donald Sarratt)
* Added support for locking migration tables during operations to prevent
  conflicts if multiple yoyo processes run at the same time (thanks to Artimi
  NA for proposal and initial implementation)
* Removed dependency on python-slugify to avoid pulling in GPL'd code
  (thanks to Olivier Chédru)
* Added support for a ``schema`` parameter for PostgreSQL databases (thanks to
  Tobiáš Štancel)
* Added support for arbitrary keyword parameters in PostgreSQL URLs, allowing
  eg ``sslmode=require`` to be specified.
* Bugfix: relative paths are correctly resolved in the config file.
* Bugfix: fixed the ordering when applying migrations with the reapply command
  (thanks to Goohu)


5.0.5 (released 2017-01-12)
---------------------------

* Added support for a ``__transactional__ = False`` flag in migration files,
  allowing migrations to run commands in PostgreSQL that raise errors
  if run inside a transaction block (eg "CREATE DATABASE")

* Bugfix: fix the unix_socket option for mysql connections

5.0.4 (released 2016-09-04)
---------------------------

* Bugfix: fixed crash when mutliple migrations have the same dependency
  (thanks to smotko for the report)

5.0.3 (released 2016-07-03)
---------------------------

* Bugfix: fixed exception when creating a new migration interactively
  with `yoyo new`

5.0.2 (released 2016-06-21)
---------------------------

* Added ``DatabaseBackend.apply_migrations_only`` and ``run_post_hooks``
  methods. This allows python code that interfaces with yoyo to run migrations
  and post_hooks separately if required (thanks to Robi Wan for reporting this
  and discussing possible fixes)
* Bugfix: fix duplicate key error when using post-apply hooks (thanks to Robi
  Wan for the report)
* Bugfix: migration steps are no longer loaded multiple times if
  read_migrations is called more than once (thanks to Kyle McChesney for the
  report)
* Bugfix: make sure that the migration_table option is read from the config
  file (thanks to Frederik Holljen for the report and Manolo Micozzi for the
  fix)

5.0.1 (released 2015-11-13)
---------------------------

* Bugfix: migration files are now sequentially named when using the prefix
  option (thanks to Igor Tsarev)

5.0.0 (released 2015-11-13)
---------------------------

**This version introduces backwards incompatible changes**. Please read this
file carefully before upgrading.

* The configuration file is now stored per-project, not per-migrations source
  directory. This makes it possible to share a migrations source directory
  across multiple projects.
* The api for calling yoyo programmatically has changed. Refer to the
  README for an up to date example of calling yoyo from python code.
* Improved url parsing
* Allow database uris containing usernames with the symbol '@'
* The command line option ``--no-cache`` has been renamed to
  ``--no-config-file``. The old name is retained as an alias for backwards
  compatibility
* The database must now be supplied using the ``--database/-d`` command line
  flag. This makes it possible to change the database when calling yoyo without
  needing to respecify the migration directories.
* Added a --revision command line option. In the case of apply, this causes
  the specified migration to be applied, plus any dependencies. In the case
  of rollback, this removes the specified revision and any other migrations
  that depend upon it.
* Added 'mark' and 'unmark' commands to allow migrations to be marked in the
  database without actually running them
* Transaction handling has changed. Each migration now always runs in a
  single transaction, with individual steps running in nested transactions
  (using savepoints).
  The ``transaction()`` function is still available
  for backwards compatibility,
  but now creates a savepoint rather than a full transaction.
* The default MySQL driver has been changed to PyMySQL, for Python 3
  compatbility reasons. MySQLdb can be used by specifying the
  'mysql+mysqldb://' scheme.
* Errors encountered while creating the _yoyo_migrations table are now raised
  rather than being silently ignored (thanks to James Socol).

Version 4.2.5
-------------

* Fix for pyscopg2 driver versions >=2.6
* Faster loading of migration scripts
* Dependencies between migrations can be added via the
  ``__depends__`` attribute
* Dropped support for python 2.6

Version 4.2.4
-------------

* Fix for mismanaged 4.2.3 release

Version 4.2.3
-------------

* Migrations are now datestamped with a UTC date (thanks to robi wan)

* Fixes for installation and use under python 3

Version 4.2.2
-------------

* Migration scripts can start with ``from yoyo import step, transaction``.
  This prevents linters (eg flake8) throwing errors over undefined names.

* Bugfix: functions declared in a migration file can access the script's global
  namespace

Version 4.2.1
-------------

* Bugfix for previous release, which omitted critical files

Version 4.2.0
-------------

* Removed yoyo.migrate namespace package. Any code that uses the yoyo api
  directly needs have any imports modified, eg this::

    from yoyo.migrate import read_migrations
    from yoyo.migrate.connections import connect

  Should be changed to this::

    from yoyo import read_migrations
    from yoyo.connections import connect

* Migrated from darcs to mercurial. Code is now hosted at
  https://bitbucket.org/ollyc/yoyo

* Bugfix: the migration_table option was not being passed to read_migrations,
  causing the value to be ignored

Version 4.1.6
-------------

* Added windows support (thanks to Peter Shinners)

Version 4.1.5
-------------

* Configure logging handlers so that the -v switch causes output to go to the
  console (thanks to Andrew Nelis).

* ``-v`` command line switch no longer takes an argument but may be specified
  multiple times instead (ie use ``-vvv`` instead of ``-v3``). ``--verbosity``
  retains the old behaviour.

Version 4.1.4
-------------

* Bugfix for post apply hooks

Version 4.1.3
-------------

* Changed default migration table name back to '_yoyo_migration'

Version 4.1.2
-------------

* Bugfix for error when running in interactive mode

Version 4.1.1
-------------

* Introduced configuration option for migration table name

Version 4.1.0
-------------

* Introduced ability to run steps within a transaction (thanks to Ryan Williams
  for suggesting this functionality along with assorted bug fixes.)

* "post-apply" migrations can be run after every successful upward migration

* Other minor bugfixes and improvements

* Switched to <major>.<minor> version numbering convention

Version 4
-------------

* Fixed problem installing due to missing manifest entry

Version 3
-------------

* Use the console_scripts entry_point in preference to scripts=[] in
  setup.py, this provides better interoperability with buildout

Version 2
-------------

* Fixed error when reading dburi from config file

Version 1
-------------

* Initial release