alembic 1.16.1__py3-none-any.whl → 1.16.2__py3-none-any.whl

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.
alembic/__init__.py CHANGED
@@ -1,4 +1,4 @@
1
1
  from . import context
2
2
  from . import op
3
3
 
4
- __version__ = "1.16.1"
4
+ __version__ = "1.16.2"
@@ -683,7 +683,7 @@ def _compare_indexes_and_uniques(
683
683
  ):
684
684
  modify_ops.ops.append(ops.CreateIndexOp.from_index(obj.const))
685
685
  log.info(
686
- "Detected added index '%r' on '%s'",
686
+ "Detected added index %r on '%s'",
687
687
  obj.name,
688
688
  obj.column_names,
689
689
  )
@@ -1282,7 +1282,7 @@ def _compare_foreign_keys(
1282
1282
  obj.const, obj.name, "foreign_key_constraint", False, compare_to
1283
1283
  ):
1284
1284
  modify_table_ops.ops.append(
1285
- ops.CreateForeignKeyOp.from_constraint(const.const) # type: ignore[has-type] # noqa: E501
1285
+ ops.CreateForeignKeyOp.from_constraint(const.const)
1286
1286
  )
1287
1287
 
1288
1288
  log.info(
@@ -18,6 +18,7 @@ from mako.pygen import PythonPrinter
18
18
  from sqlalchemy import schema as sa_schema
19
19
  from sqlalchemy import sql
20
20
  from sqlalchemy import types as sqltypes
21
+ from sqlalchemy.sql.base import _DialectArgView
21
22
  from sqlalchemy.sql.elements import conv
22
23
  from sqlalchemy.sql.elements import Label
23
24
  from sqlalchemy.sql.elements import quoted_name
@@ -31,7 +32,6 @@ if TYPE_CHECKING:
31
32
 
32
33
  from sqlalchemy import Computed
33
34
  from sqlalchemy import Identity
34
- from sqlalchemy.sql.base import DialectKWArgs
35
35
  from sqlalchemy.sql.elements import ColumnElement
36
36
  from sqlalchemy.sql.elements import TextClause
37
37
  from sqlalchemy.sql.schema import CheckConstraint
@@ -304,11 +304,11 @@ def _drop_table(autogen_context: AutogenContext, op: ops.DropTableOp) -> str:
304
304
 
305
305
 
306
306
  def _render_dialect_kwargs_items(
307
- autogen_context: AutogenContext, item: DialectKWArgs
307
+ autogen_context: AutogenContext, dialect_kwargs: _DialectArgView
308
308
  ) -> list[str]:
309
309
  return [
310
310
  f"{key}={_render_potential_expr(val, autogen_context)}"
311
- for key, val in item.dialect_kwargs.items()
311
+ for key, val in dialect_kwargs.items()
312
312
  ]
313
313
 
314
314
 
@@ -331,7 +331,7 @@ def _add_index(autogen_context: AutogenContext, op: ops.CreateIndexOp) -> str:
331
331
 
332
332
  assert index.table is not None
333
333
 
334
- opts = _render_dialect_kwargs_items(autogen_context, index)
334
+ opts = _render_dialect_kwargs_items(autogen_context, index.dialect_kwargs)
335
335
  if op.if_not_exists is not None:
336
336
  opts.append("if_not_exists=%r" % bool(op.if_not_exists))
337
337
  text = tmpl % {
@@ -365,7 +365,7 @@ def _drop_index(autogen_context: AutogenContext, op: ops.DropIndexOp) -> str:
365
365
  "%(prefix)sdrop_index(%(name)r, "
366
366
  "table_name=%(table_name)r%(schema)s%(kwargs)s)"
367
367
  )
368
- opts = _render_dialect_kwargs_items(autogen_context, index)
368
+ opts = _render_dialect_kwargs_items(autogen_context, index.dialect_kwargs)
369
369
  if op.if_exists is not None:
370
370
  opts.append("if_exists=%r" % bool(op.if_exists))
371
371
  text = tmpl % {
@@ -389,6 +389,7 @@ def _add_unique_constraint(
389
389
  def _add_fk_constraint(
390
390
  autogen_context: AutogenContext, op: ops.CreateForeignKeyOp
391
391
  ) -> str:
392
+ constraint = op.to_constraint()
392
393
  args = [repr(_render_gen_name(autogen_context, op.constraint_name))]
393
394
  if not autogen_context._has_batch:
394
395
  args.append(repr(_ident(op.source_table)))
@@ -418,9 +419,16 @@ def _add_fk_constraint(
418
419
  if value is not None:
419
420
  args.append("%s=%r" % (k, value))
420
421
 
421
- return "%(prefix)screate_foreign_key(%(args)s)" % {
422
+ dialect_kwargs = _render_dialect_kwargs_items(
423
+ autogen_context, constraint.dialect_kwargs
424
+ )
425
+
426
+ return "%(prefix)screate_foreign_key(%(args)s%(dialect_kwargs)s)" % {
422
427
  "prefix": _alembic_autogenerate_prefix(autogen_context),
423
428
  "args": ", ".join(args),
429
+ "dialect_kwargs": (
430
+ ", " + ", ".join(dialect_kwargs) if dialect_kwargs else ""
431
+ ),
424
432
  }
425
433
 
426
434
 
@@ -664,7 +672,9 @@ def _uq_constraint(
664
672
  opts.append(
665
673
  ("name", _render_gen_name(autogen_context, constraint.name))
666
674
  )
667
- dialect_options = _render_dialect_kwargs_items(autogen_context, constraint)
675
+ dialect_options = _render_dialect_kwargs_items(
676
+ autogen_context, constraint.dialect_kwargs
677
+ )
668
678
 
669
679
  if alter:
670
680
  args = [repr(_render_gen_name(autogen_context, constraint.name))]
@@ -177,7 +177,7 @@ class Rewriter:
177
177
  )
178
178
  upgrade_ops_list.append(ret[0])
179
179
 
180
- directive.upgrade_ops = upgrade_ops_list # type: ignore
180
+ directive.upgrade_ops = upgrade_ops_list
181
181
 
182
182
  downgrade_ops_list: List[DowngradeOps] = []
183
183
  for downgrade_ops in directive.downgrade_ops_list:
@@ -187,7 +187,7 @@ class Rewriter:
187
187
  "Can only return single object for DowngradeOps traverse"
188
188
  )
189
189
  downgrade_ops_list.append(ret[0])
190
- directive.downgrade_ops = downgrade_ops_list # type: ignore
190
+ directive.downgrade_ops = downgrade_ops_list
191
191
 
192
192
  @_traverse.dispatch_for(ops.OpContainer)
193
193
  def _traverse_op_container(
alembic/config.py CHANGED
@@ -75,7 +75,20 @@ class Config:
75
75
  alembic_cfg.attributes['connection'] = connection
76
76
  command.upgrade(alembic_cfg, "head")
77
77
 
78
- :param file\_: name of the .ini file to open.
78
+ :param file\_: name of the .ini file to open if an ``alembic.ini`` is
79
+ to be used. This should refer to the ``alembic.ini`` file, either as
80
+ a filename or a full path to the file. This filename if passed must refer
81
+ to an **ini file in ConfigParser format** only.
82
+
83
+ :param toml\_file: name of the pyproject.toml file to open if a
84
+ ``pyproject.toml`` file is to be used. This should refer to the
85
+ ``pyproject.toml`` file, either as a filename or a full path to the file.
86
+ This file must be in toml format. Both :paramref:`.Config.file\_` and
87
+ :paramref:`.Config.toml\_file` may be passed simultaneously, or
88
+ exclusively.
89
+
90
+ .. versionadded:: 1.16.0
91
+
79
92
  :param ini_section: name of the main Alembic section within the
80
93
  .ini file
81
94
  :param output_buffer: optional file-like input buffer which
@@ -338,7 +338,7 @@ class EnvironmentContext(util.ModuleClsProxy):
338
338
  line.
339
339
 
340
340
  """
341
- return self.context_opts.get("tag", None) # type: ignore[no-any-return] # noqa: E501
341
+ return self.context_opts.get("tag", None)
342
342
 
343
343
  @overload
344
344
  def get_x_argument(self, as_dictionary: Literal[False]) -> List[str]: ...
@@ -175,7 +175,11 @@ class MigrationContext:
175
175
  opts["output_encoding"],
176
176
  )
177
177
  else:
178
- self.output_buffer = opts.get("output_buffer", sys.stdout)
178
+ self.output_buffer = opts.get(
179
+ "output_buffer", sys.stdout
180
+ ) # type:ignore[assignment] # noqa: E501
181
+
182
+ self.transactional_ddl = transactional_ddl
179
183
 
180
184
  self._user_compare_type = opts.get("compare_type", True)
181
185
  self._user_compare_server_default = opts.get(
alembic/script/base.py CHANGED
@@ -560,7 +560,11 @@ class ScriptDirectory:
560
560
  **self.messaging_opts,
561
561
  ):
562
562
  util.template_to_file(
563
- src, dest, self.output_encoding, append=True, **kw
563
+ src,
564
+ dest,
565
+ self.output_encoding,
566
+ append_with_newlines=True,
567
+ **kw,
564
568
  )
565
569
 
566
570
  def _generate_template(self, src: Path, dest: Path, **kw: Any) -> None:
@@ -846,7 +850,7 @@ class Script(revision.Revision):
846
850
  doc = doc.decode( # type: ignore[attr-defined]
847
851
  self.module._alembic_source_encoding
848
852
  )
849
- return doc.strip() # type: ignore[union-attr]
853
+ return doc.strip()
850
854
  else:
851
855
  return ""
852
856
 
@@ -13,7 +13,7 @@ ${imports if imports else ""}
13
13
 
14
14
  # revision identifiers, used by Alembic.
15
15
  revision: str = ${repr(up_revision)}
16
- down_revision: Union[str, None] = ${repr(down_revision)}
16
+ down_revision: Union[str, Sequence[str], None] = ${repr(down_revision)}
17
17
  branch_labels: Union[str, Sequence[str], None] = ${repr(branch_labels)}
18
18
  depends_on: Union[str, Sequence[str], None] = ${repr(depends_on)}
19
19
 
@@ -13,7 +13,7 @@ ${imports if imports else ""}
13
13
 
14
14
  # revision identifiers, used by Alembic.
15
15
  revision: str = ${repr(up_revision)}
16
- down_revision: Union[str, None] = ${repr(down_revision)}
16
+ down_revision: Union[str, Sequence[str], None] = ${repr(down_revision)}
17
17
  branch_labels: Union[str, Sequence[str], None] = ${repr(branch_labels)}
18
18
  depends_on: Union[str, Sequence[str], None] = ${repr(depends_on)}
19
19
 
@@ -16,7 +16,7 @@ ${imports if imports else ""}
16
16
 
17
17
  # revision identifiers, used by Alembic.
18
18
  revision: str = ${repr(up_revision)}
19
- down_revision: Union[str, None] = ${repr(down_revision)}
19
+ down_revision: Union[str, Sequence[str], None] = ${repr(down_revision)}
20
20
  branch_labels: Union[str, Sequence[str], None] = ${repr(branch_labels)}
21
21
  depends_on: Union[str, Sequence[str], None] = ${repr(depends_on)}
22
22
 
@@ -13,7 +13,7 @@ ${imports if imports else ""}
13
13
 
14
14
  # revision identifiers, used by Alembic.
15
15
  revision: str = ${repr(up_revision)}
16
- down_revision: Union[str, None] = ${repr(down_revision)}
16
+ down_revision: Union[str, Sequence[str], None] = ${repr(down_revision)}
17
17
  branch_labels: Union[str, Sequence[str], None] = ${repr(branch_labels)}
18
18
  depends_on: Union[str, Sequence[str], None] = ${repr(depends_on)}
19
19
 
alembic/util/pyfiles.py CHANGED
@@ -26,7 +26,7 @@ def template_to_file(
26
26
  dest: Union[str, os.PathLike[str]],
27
27
  output_encoding: str,
28
28
  *,
29
- append: bool = False,
29
+ append_with_newlines: bool = False,
30
30
  **kw: Any,
31
31
  ) -> None:
32
32
  template = Template(filename=_preserving_path_as_str(template_file))
@@ -45,7 +45,9 @@ def template_to_file(
45
45
  "template-oriented traceback." % fname
46
46
  )
47
47
  else:
48
- with open(dest, "ab" if append else "wb") as f:
48
+ with open(dest, "ab" if append_with_newlines else "wb") as f:
49
+ if append_with_newlines:
50
+ f.write("\n\n".encode(output_encoding))
49
51
  f.write(output)
50
52
 
51
53
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: alembic
3
- Version: 1.16.1
3
+ Version: 1.16.2
4
4
  Summary: A database migration tool for SQLAlchemy.
5
5
  Author-email: Mike Bayer <mike_mp@zzzcomputing.com>
6
6
  License-Expression: MIT
@@ -1,7 +1,7 @@
1
- alembic/__init__.py,sha256=dPYVgsjHZTtkz_8TPx47tDVuAPwMMa7aDa72Olb_rug,63
1
+ alembic/__init__.py,sha256=AL1XKsGOkbogUDQ2LozlFjw5wZVjWyEkQq2K8JOzeJI,63
2
2
  alembic/__main__.py,sha256=373m7-TBh72JqrSMYviGrxCHZo-cnweM8AGF8A22PmY,78
3
3
  alembic/command.py,sha256=pZPQUGSxCjFu7qy0HMe02HJmByM0LOqoiK2AXKfRO3A,24855
4
- alembic/config.py,sha256=KSvrY2rmIBpxZVswKH9ucNHFdxlxWcGXwYxtUdeppMo,32897
4
+ alembic/config.py,sha256=jcWyXXCM-Uh6uOGmjgnBLhDSD0OkG5P0ZUWYCf5_ek8,33543
5
5
  alembic/context.py,sha256=hK1AJOQXJ29Bhn276GYcosxeG7pC5aZRT5E8c4bMJ4Q,195
6
6
  alembic/context.pyi,sha256=fdeFNTRc0bUgi7n2eZWVFh6NG-TzIv_0gAcapbfHnKY,31773
7
7
  alembic/environment.py,sha256=MM5lPayGT04H3aeng1H7GQ8HEAs3VGX5yy6mDLCPLT4,43
@@ -11,9 +11,9 @@ alembic/op.pyi,sha256=PQ4mKNp7EXrjVdIWQRoGiBSVke4PPxTc9I6qF8ZGGZE,50711
11
11
  alembic/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
12
  alembic/autogenerate/__init__.py,sha256=ntmUTXhjLm4_zmqIwyVaECdpPDn6_u1yM9vYk6-553E,543
13
13
  alembic/autogenerate/api.py,sha256=L4qkapSJO1Ypymx8HsjLl0vFFt202agwMYsQbIe6ZtI,22219
14
- alembic/autogenerate/compare.py,sha256=txW17LtHQkHzDdqf0MJ10fka0AbSt0qW2slu9QrcKLA,46021
15
- alembic/autogenerate/render.py,sha256=tIcYsSeHoglueoBfsMtFh0WuBMu_EpvPWNPVDlUUlNI,36489
16
- alembic/autogenerate/rewriter.py,sha256=uZWRkTYJoncoEJ5WY1QBRiozjyChqZDJPy4LtcRibjM,7846
14
+ alembic/autogenerate/compare.py,sha256=LRTxNijEBvcTauuUXuJjC6Sg_gUn33FCYBTF0neZFwE,45979
15
+ alembic/autogenerate/render.py,sha256=_VeY05jcszpr7SW1YZxNbnVk40DZD_pIEJkbEj69K_M,36826
16
+ alembic/autogenerate/rewriter.py,sha256=NIASSS-KaNKPmbm1k4pE45aawwjSh1Acf6eZrOwnUGM,7814
17
17
  alembic/ddl/__init__.py,sha256=Df8fy4Vn_abP8B7q3x8gyFwEwnLw6hs2Ljt_bV3EZWE,152
18
18
  alembic/ddl/_autogen.py,sha256=Blv2RrHNyF4cE6znCQXNXG5T9aO-YmiwD4Fz-qfoaWA,9275
19
19
  alembic/ddl/base.py,sha256=A1f89-rCZvqw-hgWmBbIszRqx94lL6gKLFXE9kHettA,10478
@@ -30,29 +30,29 @@ alembic/operations/ops.py,sha256=ftsFgcZIctxRDiuGgkQsaFHsMlRP7cLq7Dj_seKVBnQ,962
30
30
  alembic/operations/schemaobj.py,sha256=Wp-bBe4a8lXPTvIHJttBY0ejtpVR5Jvtb2kI-U2PztQ,9468
31
31
  alembic/operations/toimpl.py,sha256=rgufuSUNwpgrOYzzY3Q3ELW1rQv2fQbQVokXgnIYIrs,7503
32
32
  alembic/runtime/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
- alembic/runtime/environment.py,sha256=W9Y_9tiecmYq885xqMZOrxZs80tN0M_ovXOdCLjGI5A,41524
34
- alembic/runtime/migration.py,sha256=X0O-sEuU54aNujyG_nxk1vs3BRBy2f-QwRJQmTucuVY,49874
33
+ alembic/runtime/environment.py,sha256=L6bDW1dvw8L4zwxlTG8KnT0xcCgLXxUfdRpzqlJoFjo,41479
34
+ alembic/runtime/migration.py,sha256=lu9_z_qyWmNzSM52_FgdXP_G52PTmTTeOeMBQAkQTFg,49997
35
35
  alembic/script/__init__.py,sha256=lSj06O391Iy5avWAiq8SPs6N8RBgxkSPjP8wpXcNDGg,100
36
- alembic/script/base.py,sha256=V-64yc3i3yZDVwSDd51NJKwTPUCdx4sqj3oog6nPq0A,36873
36
+ alembic/script/base.py,sha256=O9xYzMCesjlSoUGD613Co0PhoCcpPBxxJzD3yt1lKK8,36924
37
37
  alembic/script/revision.py,sha256=BQcJoMCIXtSJRLCvdasgLOtCx9O7A8wsSym1FsqLW4s,62307
38
38
  alembic/script/write_hooks.py,sha256=CAjh9U8m7eXz3W7pfQKVxG4UkHZrRIYKF6AkReakG2c,5015
39
39
  alembic/templates/async/README,sha256=ISVtAOvqvKk_5ThM5ioJE-lMkvf9IbknFUFVU_vPma4,58
40
40
  alembic/templates/async/alembic.ini.mako,sha256=ubJvGp-ai_C3RGJ_k5sedviIcIb2HIeExT1Y1K4X44o,4684
41
41
  alembic/templates/async/env.py,sha256=zbOCf3Y7w2lg92hxSwmG1MM_7y56i_oRH4AKp0pQBYo,2389
42
- alembic/templates/async/script.py.mako,sha256=3qBrHBf7F7ChKDUIdiNItiSXrDpgQdM7sR0YKzpaC50,689
42
+ alembic/templates/async/script.py.mako,sha256=04kgeBtNMa4cCnG8CfQcKt6P6rnloIfj8wy0u_DBydM,704
43
43
  alembic/templates/generic/README,sha256=MVlc9TYmr57RbhXET6QxgyCcwWP7w-vLkEsirENqiIQ,38
44
44
  alembic/templates/generic/alembic.ini.mako,sha256=CqVaOZbWULb1NYjC6XTnLELPQ_TA9NPMOHKxJeG0vNY,4684
45
45
  alembic/templates/generic/env.py,sha256=TLRWOVW3Xpt_Tpf8JFzlnoPn_qoUu8UV77Y4o9XD6yI,2103
46
- alembic/templates/generic/script.py.mako,sha256=3qBrHBf7F7ChKDUIdiNItiSXrDpgQdM7sR0YKzpaC50,689
46
+ alembic/templates/generic/script.py.mako,sha256=04kgeBtNMa4cCnG8CfQcKt6P6rnloIfj8wy0u_DBydM,704
47
47
  alembic/templates/multidb/README,sha256=dWLDhnBgphA4Nzb7sNlMfCS3_06YqVbHhz-9O5JNqyI,606
48
48
  alembic/templates/multidb/alembic.ini.mako,sha256=V-1FL7zyxHX1K_tBe_6Ax7DmGB_TevQvB77eIUfWvwk,5010
49
49
  alembic/templates/multidb/env.py,sha256=6zNjnW8mXGUk7erTsAvrfhvqoczJ-gagjVq1Ypg2YIQ,4230
50
- alembic/templates/multidb/script.py.mako,sha256=d0Pl1Z57DASni61GtdV1jTiSJfIx6IwIjEQx2_DeHIU,1220
50
+ alembic/templates/multidb/script.py.mako,sha256=ZbCXMkI5Wj2dwNKcxuVGkKZ7Iav93BNx_bM4zbGi3c8,1235
51
51
  alembic/templates/pyproject/README,sha256=dMhIiFoeM7EdeaOXBs3mVQ6zXACMyGXDb_UBB6sGRA0,60
52
52
  alembic/templates/pyproject/alembic.ini.mako,sha256=bQnEoydnLOUgg9vNbTOys4r5MaW8lmwYFXSrlfdEEkw,782
53
53
  alembic/templates/pyproject/env.py,sha256=TLRWOVW3Xpt_Tpf8JFzlnoPn_qoUu8UV77Y4o9XD6yI,2103
54
54
  alembic/templates/pyproject/pyproject.toml.mako,sha256=9CzBcdamN6ylIiJ-oGCaw__E84XbonVkNkuET3J7LKI,2645
55
- alembic/templates/pyproject/script.py.mako,sha256=3qBrHBf7F7ChKDUIdiNItiSXrDpgQdM7sR0YKzpaC50,689
55
+ alembic/templates/pyproject/script.py.mako,sha256=04kgeBtNMa4cCnG8CfQcKt6P6rnloIfj8wy0u_DBydM,704
56
56
  alembic/testing/__init__.py,sha256=JXvXAqIwFZB6-ep-BmeIqIH8xJ92XPt7DWCNkMDuJ-g,1249
57
57
  alembic/testing/assertions.py,sha256=qcqf3tRAUe-A12NzuK_yxlksuX9OZKRC5E8pKIdBnPg,5302
58
58
  alembic/testing/env.py,sha256=pka7fjwOC8hYL6X0XE4oPkJpy_1WX01bL7iP7gpO_4I,11551
@@ -78,11 +78,11 @@ alembic/util/editor.py,sha256=JIz6_BdgV8_oKtnheR6DZoB7qnrHrlRgWjx09AsTsUw,2546
78
78
  alembic/util/exc.py,sha256=ZBlTQ8g-Jkb1iYFhFHs9djilRz0SSQ0Foc5SSoENs5o,564
79
79
  alembic/util/langhelpers.py,sha256=LpOcovnhMnP45kTt8zNJ4BHpyQrlF40OL6yDXjqKtsE,10026
80
80
  alembic/util/messaging.py,sha256=3bEBoDy4EAXETXAvArlYjeMITXDTgPTu6ZoE3ytnzSw,3294
81
- alembic/util/pyfiles.py,sha256=ebkz9rQVPM3aMQ-_dtJ5ny4SFovCw4y6Ir1794Zu5C8,4609
81
+ alembic/util/pyfiles.py,sha256=kOBjZEytRkBKsQl0LAj2sbKJMQazjwQ_5UeMKSIvVFo,4730
82
82
  alembic/util/sqla_compat.py,sha256=SWAL4hJck4XLnUpe-oI3AGiH8w9kgDBe1_oakCfdT_Q,14785
83
- alembic-1.16.1.dist-info/licenses/LICENSE,sha256=NeqcNBmyYfrxvkSMT0fZJVKBv2s2tf_qVQUiJ9S6VN4,1059
84
- alembic-1.16.1.dist-info/METADATA,sha256=kgVKaGYM05A4pwv_3o1MEKjVVf8dQmJ76i-4A1mQzEw,7265
85
- alembic-1.16.1.dist-info/WHEEL,sha256=zaaOINJESkSfm_4HQVc5ssNzHCPXhJm0kEUakpsEHaU,91
86
- alembic-1.16.1.dist-info/entry_points.txt,sha256=aykM30soxwGN0pB7etLc1q0cHJbL9dy46RnK9VX4LLw,48
87
- alembic-1.16.1.dist-info/top_level.txt,sha256=FwKWd5VsPFC8iQjpu1u9Cn-JnK3-V1RhUCmWqz1cl-s,8
88
- alembic-1.16.1.dist-info/RECORD,,
83
+ alembic-1.16.2.dist-info/licenses/LICENSE,sha256=NeqcNBmyYfrxvkSMT0fZJVKBv2s2tf_qVQUiJ9S6VN4,1059
84
+ alembic-1.16.2.dist-info/METADATA,sha256=YXkCdjlR2LNMd-B_P4WlNhmvXqgL51wKDdRIDuu5DrA,7265
85
+ alembic-1.16.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
86
+ alembic-1.16.2.dist-info/entry_points.txt,sha256=aykM30soxwGN0pB7etLc1q0cHJbL9dy46RnK9VX4LLw,48
87
+ alembic-1.16.2.dist-info/top_level.txt,sha256=FwKWd5VsPFC8iQjpu1u9Cn-JnK3-V1RhUCmWqz1cl-s,8
88
+ alembic-1.16.2.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.8.0)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5