prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  ci: PyPi publish job fails in "Build distribution" step with error `module 'sqlalchemy' has no attribute 'orm'`
  https://github.com/meltano/meltano/actions/runs/3267990463/jobs/5373871668
  
  </issue>
  <code>
  [start of src/meltano/migrations/versions/23ea52e6d784_add_resource_type_to_embed_token.py]
  1 """add resource type to embed token
  2 
  3 Revision ID: 23ea52e6d784
  4 Revises: ceb00d7ff3bd
  5 Create Date: 2020-02-12 09:29:31.592426
  6 
  7 """
  8 import sqlalchemy as sa
  9 from alembic import op
  10 
  11 from meltano.migrations.utils.dialect_typing import (
  12     get_dialect_name,
  13     max_string_length_for_dialect,
  14 )
  15 
  16 # revision identifiers, used by Alembic.
  17 revision = "23ea52e6d784"
  18 down_revision = "ceb00d7ff3bd"
  19 branch_labels = None
  20 depends_on = None
  21 
  22 Session = sa.orm.sessionmaker()
  23 
  24 
  25 def upgrade():
  26     dialect_name = get_dialect_name()
  27     max_string_length = max_string_length_for_dialect(dialect_name)
  28 
  29     op.add_column(
  30         "embed_tokens", sa.Column("resource_type", sa.String(max_string_length))
  31     )
  32 
  33     metadata = sa.MetaData(bind=op.get_bind())
  34     Embed_Tokens = sa.Table("embed_tokens", metadata, autoload=True)
  35     op.execute(Embed_Tokens.update().values({"resource_type": "report"}))
  36 
  37 
  38 def downgrade():
  39     op.drop_column("embed_tokens", "resource_type")
  40
  [end of src/meltano/migrations/versions/23ea52e6d784_add_resource_type_to_embed_token.py]
  </code>
  
  I need you to solve this issue by generating a single patch file that I can apply directly to this repository using git apply. Please respond with a single patch file in the following format.
  <patch>
  diff --git a/file.py b/file.py
  --- a/file.py
  +++ b/file.py
  @@ -1,27 +1,35 @@
   def euclidean(a, b):
  -    while b:
  -        a, b = b, a % b
  -    return a
  +    if b == 0:
  +        return a
  +    return euclidean(b, a % b)
   
   
   def bresenham(x0, y0, x1, y1):
       points = []
       dx = abs(x1 - x0)
       dy = abs(y1 - y0)
  -    sx = 1 if x0 < x1 else -1
  -    sy = 1 if y0 < y1 else -1
  -    err = dx - dy
  +    x, y = x0, y0
  +    sx = -1 if x0 > x1 else 1
  +    sy = -1 if y0 > y1 else 1
   
  -    while True:
  -        points.append((x0, y0))
  -        if x0 == x1 and y0 == y1:
  -            break
  -        e2 = 2 * err
  -        if e2 > -dy:
  -            err -= dy
  -            x0 += sx
  -        if e2 < dx:
  -            err += dx
  -            y0 += sy
  +    if dx > dy:
  +        err = dx / 2.0
  +        while x != x1:
  +            points.append((x, y))
  +            err -= dy
  +            if err < 0:
  +                y += sy
  +                err += dx
  +            x += sx
  +    else:
  +        err = dy / 2.0
  +        while y != y1:
  +            points.append((x, y))
  +            err -= dx
  +            if err < 0:
  +                x += sx
  +                err += dy
  +            y += sy
  +
  +    points.append((x, y))
       return points
  
  </patch>
golden_diff: diff --git a/src/meltano/migrations/versions/23ea52e6d784_add_resource_type_to_embed_token.py b/src/meltano/migrations/versions/23ea52e6d784_add_resource_type_to_embed_token.py
  --- a/src/meltano/migrations/versions/23ea52e6d784_add_resource_type_to_embed_token.py
  +++ b/src/meltano/migrations/versions/23ea52e6d784_add_resource_type_to_embed_token.py
  @@ -6,6 +6,7 @@
   
   """
   import sqlalchemy as sa
  +import sqlalchemy.orm
   from alembic import op
   
   from meltano.migrations.utils.dialect_typing import (
  
verification_info: {"golden_diff": "diff --git a/src/meltano/migrations/versions/23ea52e6d784_add_resource_type_to_embed_token.py b/src/meltano/migrations/versions/23ea52e6d784_add_resource_type_to_embed_token.py\n--- a/src/meltano/migrations/versions/23ea52e6d784_add_resource_type_to_embed_token.py\n+++ b/src/meltano/migrations/versions/23ea52e6d784_add_resource_type_to_embed_token.py\n@@ -6,6 +6,7 @@\n \n \"\"\"\n import sqlalchemy as sa\n+import sqlalchemy.orm\n from alembic import op\n \n from meltano.migrations.utils.dialect_typing import (\n", "issue": "ci: PyPi publish job fails in \"Build distribution\" step with error `module 'sqlalchemy' has no attribute 'orm'`\nhttps://github.com/meltano/meltano/actions/runs/3267990463/jobs/5373871668\n", "before_files": [{"content": "\"\"\"add resource type to embed token\n\nRevision ID: 23ea52e6d784\nRevises: ceb00d7ff3bd\nCreate Date: 2020-02-12 09:29:31.592426\n\n\"\"\"\nimport sqlalchemy as sa\nfrom alembic import op\n\nfrom meltano.migrations.utils.dialect_typing import (\n    get_dialect_name,\n    max_string_length_for_dialect,\n)\n\n# revision identifiers, used by Alembic.\nrevision = \"23ea52e6d784\"\ndown_revision = \"ceb00d7ff3bd\"\nbranch_labels = None\ndepends_on = None\n\nSession = sa.orm.sessionmaker()\n\n\ndef upgrade():\n    dialect_name = get_dialect_name()\n    max_string_length = max_string_length_for_dialect(dialect_name)\n\n    op.add_column(\n        \"embed_tokens\", sa.Column(\"resource_type\", sa.String(max_string_length))\n    )\n\n    metadata = sa.MetaData(bind=op.get_bind())\n    Embed_Tokens = sa.Table(\"embed_tokens\", metadata, autoload=True)\n    op.execute(Embed_Tokens.update().values({\"resource_type\": \"report\"}))\n\n\ndef downgrade():\n    op.drop_column(\"embed_tokens\", \"resource_type\")\n", "path": "src/meltano/migrations/versions/23ea52e6d784_add_resource_type_to_embed_token.py"}]}