prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Remove deprecated APIs
  
  
  </issue>
  <code>
  [start of vpype/_deprecated.py]
  1 from __future__ import annotations
  2 
  3 import logging
  4 
  5 from .config import config_manager
  6 
  7 # deprecated
  8 CONFIG_MANAGER = config_manager
  9 
  10 
  11 def block_processor(*args, **kwargs):  # pragma: no cover
  12     import vpype_cli
  13 
  14     logging.warning(
  15         "!!! `@vpype.block_processor` is deprecated, "
  16         "use `@vpype_cli.block_processor` instead."
  17     )
  18     return vpype_cli.block_processor(*args, **kwargs)
  19 
  20 
  21 def generator(*args, **kwargs):  # pragma: no cover
  22     import vpype_cli
  23 
  24     logging.warning(
  25         "!!! `@vpype.generator` is deprecated, use `@vpype_cli.generator` instead."
  26     )
  27     return vpype_cli.generator(*args, **kwargs)
  28 
  29 
  30 def global_processor(*args, **kwargs):  # pragma: no cover
  31     import vpype_cli
  32 
  33     logging.warning(
  34         "!!! `@vpype.global_processor` is deprecated, "
  35         "use `@vpype_cli.global_processor` instead."
  36     )
  37     return vpype_cli.global_processor(*args, **kwargs)
  38 
  39 
  40 def layer_processor(*args, **kwargs):  # pragma: no cover
  41     import vpype_cli
  42 
  43     logging.warning(
  44         "!!! `@vpype.layer_processor` is deprecated, use `@vpype_cli.layer_processor` instead."
  45     )
  46     return vpype_cli.layer_processor(*args, **kwargs)
  47 
  48 
  49 def pass_state(*args, **kwargs):  # pragma: no cover
  50     import vpype_cli
  51 
  52     logging.warning(
  53         "!!! `@vpype.pass_state` is deprecated, use `@vpype_cli.pass_state` instead."
  54     )
  55     return vpype_cli.pass_state(*args, **kwargs)
  56 
  57 
  58 class AngleType:  # pragma: no cover
  59     def __new__(cls):
  60         import vpype_cli
  61 
  62         logging.warning(
  63             "!!! `vpype.AngleType` is deprecated, use `vpype_cli.AngleType` instead."
  64         )
  65         return vpype_cli.AngleType()
  66 
  67 
  68 class LayerType:  # pragma: no cover
  69     def __new__(cls, *args, **kwargs):
  70         import vpype_cli
  71 
  72         logging.warning(
  73             "!!! `vpype.LayerType` is deprecated, use `vpype_cli.LayerType` instead."
  74         )
  75         return vpype_cli.LayerType(*args, **kwargs)
  76 
  77 
  78 class LengthType:  # pragma: no cover
  79     def __new__(cls):
  80         import vpype_cli
  81 
  82         logging.warning(
  83             "!!! `vpype.LengthType` is deprecated, use `vpype_cli.LengthType` instead."
  84         )
  85         return vpype_cli.LengthType()
  86 
  87 
  88 class PageSizeType:  # pragma: no cover
  89     def __new__(cls):
  90         import vpype_cli
  91 
  92         logging.warning(
  93             "!!! `vpype.PageSizeType` is deprecated, use `vpype_cli.PageSizeType` instead."
  94         )
  95         return vpype_cli.PageSizeType()
  96 
  97 
  98 def multiple_to_layer_ids(*args, **kwargs):  # pragma: no cover
  99     import vpype_cli
  100 
  101     logging.warning(
  102         "!!! `vpype.multiple_to_layer_ids` is deprecated, "
  103         "use `vpype_cli.multiple_to_layer_ids` instead."
  104     )
  105     return vpype_cli.multiple_to_layer_ids(*args, **kwargs)
  106 
  107 
  108 def single_to_layer_id(*args, **kwargs):  # pragma: no cover
  109     import vpype_cli
  110 
  111     logging.warning(
  112         "!!! `vpype.single_to_layer_id` is deprecated, "
  113         "use `vpype_cli.single_to_layer_id` instead."
  114     )
  115     return vpype_cli.single_to_layer_id(*args, **kwargs)
  116
  [end of vpype/_deprecated.py]
  [start of vpype/__init__.py]
  1 """This module contains vpype core and its API."""
  2 
  3 from ._deprecated import *
  4 from .config import *
  5 from .filters import *
  6 from .geometry import *
  7 from .io import *
  8 from .line_index import *
  9 from .metadata import *
  10 from .model import *
  11 from .primitives import *
  12 from .text import *
  13 from .utils import *
  14 
  15 
  16 def _get_version() -> str:
  17     from importlib.metadata import version
  18 
  19     return version(__name__)
  20 
  21 
  22 __version__ = _get_version()
  23
  [end of vpype/__init__.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/vpype/__init__.py b/vpype/__init__.py
  --- a/vpype/__init__.py
  +++ b/vpype/__init__.py
  @@ -1,6 +1,5 @@
   """This module contains vpype core and its API."""
   
  -from ._deprecated import *
   from .config import *
   from .filters import *
   from .geometry import *
  diff --git a/vpype/_deprecated.py b/vpype/_deprecated.py
  deleted file mode 100644
  --- a/vpype/_deprecated.py
  +++ /dev/null
  @@ -1,115 +0,0 @@
  -from __future__ import annotations
  -
  -import logging
  -
  -from .config import config_manager
  -
  -# deprecated
  -CONFIG_MANAGER = config_manager
  -
  -
  -def block_processor(*args, **kwargs):  # pragma: no cover
  -    import vpype_cli
  -
  -    logging.warning(
  -        "!!! `@vpype.block_processor` is deprecated, "
  -        "use `@vpype_cli.block_processor` instead."
  -    )
  -    return vpype_cli.block_processor(*args, **kwargs)
  -
  -
  -def generator(*args, **kwargs):  # pragma: no cover
  -    import vpype_cli
  -
  -    logging.warning(
  -        "!!! `@vpype.generator` is deprecated, use `@vpype_cli.generator` instead."
  -    )
  -    return vpype_cli.generator(*args, **kwargs)
  -
  -
  -def global_processor(*args, **kwargs):  # pragma: no cover
  -    import vpype_cli
  -
  -    logging.warning(
  -        "!!! `@vpype.global_processor` is deprecated, "
  -        "use `@vpype_cli.global_processor` instead."
  -    )
  -    return vpype_cli.global_processor(*args, **kwargs)
  -
  -
  -def layer_processor(*args, **kwargs):  # pragma: no cover
  -    import vpype_cli
  -
  -    logging.warning(
  -        "!!! `@vpype.layer_processor` is deprecated, use `@vpype_cli.layer_processor` instead."
  -    )
  -    return vpype_cli.layer_processor(*args, **kwargs)
  -
  -
  -def pass_state(*args, **kwargs):  # pragma: no cover
  -    import vpype_cli
  -
  -    logging.warning(
  -        "!!! `@vpype.pass_state` is deprecated, use `@vpype_cli.pass_state` instead."
  -    )
  -    return vpype_cli.pass_state(*args, **kwargs)
  -
  -
  -class AngleType:  # pragma: no cover
  -    def __new__(cls):
  -        import vpype_cli
  -
  -        logging.warning(
  -            "!!! `vpype.AngleType` is deprecated, use `vpype_cli.AngleType` instead."
  -        )
  -        return vpype_cli.AngleType()
  -
  -
  -class LayerType:  # pragma: no cover
  -    def __new__(cls, *args, **kwargs):
  -        import vpype_cli
  -
  -        logging.warning(
  -            "!!! `vpype.LayerType` is deprecated, use `vpype_cli.LayerType` instead."
  -        )
  -        return vpype_cli.LayerType(*args, **kwargs)
  -
  -
  -class LengthType:  # pragma: no cover
  -    def __new__(cls):
  -        import vpype_cli
  -
  -        logging.warning(
  -            "!!! `vpype.LengthType` is deprecated, use `vpype_cli.LengthType` instead."
  -        )
  -        return vpype_cli.LengthType()
  -
  -
  -class PageSizeType:  # pragma: no cover
  -    def __new__(cls):
  -        import vpype_cli
  -
  -        logging.warning(
  -            "!!! `vpype.PageSizeType` is deprecated, use `vpype_cli.PageSizeType` instead."
  -        )
  -        return vpype_cli.PageSizeType()
  -
  -
  -def multiple_to_layer_ids(*args, **kwargs):  # pragma: no cover
  -    import vpype_cli
  -
  -    logging.warning(
  -        "!!! `vpype.multiple_to_layer_ids` is deprecated, "
  -        "use `vpype_cli.multiple_to_layer_ids` instead."
  -    )
  -    return vpype_cli.multiple_to_layer_ids(*args, **kwargs)
  -
  -
  -def single_to_layer_id(*args, **kwargs):  # pragma: no cover
  -    import vpype_cli
  -
  -    logging.warning(
  -        "!!! `vpype.single_to_layer_id` is deprecated, "
  -        "use `vpype_cli.single_to_layer_id` instead."
  -    )
  -    return vpype_cli.single_to_layer_id(*args, **kwargs)
  
verification_info: {"golden_diff": "diff --git a/vpype/__init__.py b/vpype/__init__.py\n--- a/vpype/__init__.py\n+++ b/vpype/__init__.py\n@@ -1,6 +1,5 @@\n \"\"\"This module contains vpype core and its API.\"\"\"\n \n-from ._deprecated import *\n from .config import *\n from .filters import *\n from .geometry import *\ndiff --git a/vpype/_deprecated.py b/vpype/_deprecated.py\ndeleted file mode 100644\n--- a/vpype/_deprecated.py\n+++ /dev/null\n@@ -1,115 +0,0 @@\n-from __future__ import annotations\n-\n-import logging\n-\n-from .config import config_manager\n-\n-# deprecated\n-CONFIG_MANAGER = config_manager\n-\n-\n-def block_processor(*args, **kwargs):  # pragma: no cover\n-    import vpype_cli\n-\n-    logging.warning(\n-        \"!!! `@vpype.block_processor` is deprecated, \"\n-        \"use `@vpype_cli.block_processor` instead.\"\n-    )\n-    return vpype_cli.block_processor(*args, **kwargs)\n-\n-\n-def generator(*args, **kwargs):  # pragma: no cover\n-    import vpype_cli\n-\n-    logging.warning(\n-        \"!!! `@vpype.generator` is deprecated, use `@vpype_cli.generator` instead.\"\n-    )\n-    return vpype_cli.generator(*args, **kwargs)\n-\n-\n-def global_processor(*args, **kwargs):  # pragma: no cover\n-    import vpype_cli\n-\n-    logging.warning(\n-        \"!!! `@vpype.global_processor` is deprecated, \"\n-        \"use `@vpype_cli.global_processor` instead.\"\n-    )\n-    return vpype_cli.global_processor(*args, **kwargs)\n-\n-\n-def layer_processor(*args, **kwargs):  # pragma: no cover\n-    import vpype_cli\n-\n-    logging.warning(\n-        \"!!! `@vpype.layer_processor` is deprecated, use `@vpype_cli.layer_processor` instead.\"\n-    )\n-    return vpype_cli.layer_processor(*args, **kwargs)\n-\n-\n-def pass_state(*args, **kwargs):  # pragma: no cover\n-    import vpype_cli\n-\n-    logging.warning(\n-        \"!!! `@vpype.pass_state` is deprecated, use `@vpype_cli.pass_state` instead.\"\n-    )\n-    return vpype_cli.pass_state(*args, **kwargs)\n-\n-\n-class AngleType:  # pragma: no cover\n-    def __new__(cls):\n-        import vpype_cli\n-\n-        logging.warning(\n-            \"!!! `vpype.AngleType` is deprecated, use `vpype_cli.AngleType` instead.\"\n-        )\n-        return vpype_cli.AngleType()\n-\n-\n-class LayerType:  # pragma: no cover\n-    def __new__(cls, *args, **kwargs):\n-        import vpype_cli\n-\n-        logging.warning(\n-            \"!!! `vpype.LayerType` is deprecated, use `vpype_cli.LayerType` instead.\"\n-        )\n-        return vpype_cli.LayerType(*args, **kwargs)\n-\n-\n-class LengthType:  # pragma: no cover\n-    def __new__(cls):\n-        import vpype_cli\n-\n-        logging.warning(\n-            \"!!! `vpype.LengthType` is deprecated, use `vpype_cli.LengthType` instead.\"\n-        )\n-        return vpype_cli.LengthType()\n-\n-\n-class PageSizeType:  # pragma: no cover\n-    def __new__(cls):\n-        import vpype_cli\n-\n-        logging.warning(\n-            \"!!! `vpype.PageSizeType` is deprecated, use `vpype_cli.PageSizeType` instead.\"\n-        )\n-        return vpype_cli.PageSizeType()\n-\n-\n-def multiple_to_layer_ids(*args, **kwargs):  # pragma: no cover\n-    import vpype_cli\n-\n-    logging.warning(\n-        \"!!! `vpype.multiple_to_layer_ids` is deprecated, \"\n-        \"use `vpype_cli.multiple_to_layer_ids` instead.\"\n-    )\n-    return vpype_cli.multiple_to_layer_ids(*args, **kwargs)\n-\n-\n-def single_to_layer_id(*args, **kwargs):  # pragma: no cover\n-    import vpype_cli\n-\n-    logging.warning(\n-        \"!!! `vpype.single_to_layer_id` is deprecated, \"\n-        \"use `vpype_cli.single_to_layer_id` instead.\"\n-    )\n-    return vpype_cli.single_to_layer_id(*args, **kwargs)\n", "issue": "Remove deprecated APIs\n\n", "before_files": [{"content": "from __future__ import annotations\n\nimport logging\n\nfrom .config import config_manager\n\n# deprecated\nCONFIG_MANAGER = config_manager\n\n\ndef block_processor(*args, **kwargs):  # pragma: no cover\n    import vpype_cli\n\n    logging.warning(\n        \"!!! `@vpype.block_processor` is deprecated, \"\n        \"use `@vpype_cli.block_processor` instead.\"\n    )\n    return vpype_cli.block_processor(*args, **kwargs)\n\n\ndef generator(*args, **kwargs):  # pragma: no cover\n    import vpype_cli\n\n    logging.warning(\n        \"!!! `@vpype.generator` is deprecated, use `@vpype_cli.generator` instead.\"\n    )\n    return vpype_cli.generator(*args, **kwargs)\n\n\ndef global_processor(*args, **kwargs):  # pragma: no cover\n    import vpype_cli\n\n    logging.warning(\n        \"!!! `@vpype.global_processor` is deprecated, \"\n        \"use `@vpype_cli.global_processor` instead.\"\n    )\n    return vpype_cli.global_processor(*args, **kwargs)\n\n\ndef layer_processor(*args, **kwargs):  # pragma: no cover\n    import vpype_cli\n\n    logging.warning(\n        \"!!! `@vpype.layer_processor` is deprecated, use `@vpype_cli.layer_processor` instead.\"\n    )\n    return vpype_cli.layer_processor(*args, **kwargs)\n\n\ndef pass_state(*args, **kwargs):  # pragma: no cover\n    import vpype_cli\n\n    logging.warning(\n        \"!!! `@vpype.pass_state` is deprecated, use `@vpype_cli.pass_state` instead.\"\n    )\n    return vpype_cli.pass_state(*args, **kwargs)\n\n\nclass AngleType:  # pragma: no cover\n    def __new__(cls):\n        import vpype_cli\n\n        logging.warning(\n            \"!!! `vpype.AngleType` is deprecated, use `vpype_cli.AngleType` instead.\"\n        )\n        return vpype_cli.AngleType()\n\n\nclass LayerType:  # pragma: no cover\n    def __new__(cls, *args, **kwargs):\n        import vpype_cli\n\n        logging.warning(\n            \"!!! `vpype.LayerType` is deprecated, use `vpype_cli.LayerType` instead.\"\n        )\n        return vpype_cli.LayerType(*args, **kwargs)\n\n\nclass LengthType:  # pragma: no cover\n    def __new__(cls):\n        import vpype_cli\n\n        logging.warning(\n            \"!!! `vpype.LengthType` is deprecated, use `vpype_cli.LengthType` instead.\"\n        )\n        return vpype_cli.LengthType()\n\n\nclass PageSizeType:  # pragma: no cover\n    def __new__(cls):\n        import vpype_cli\n\n        logging.warning(\n            \"!!! `vpype.PageSizeType` is deprecated, use `vpype_cli.PageSizeType` instead.\"\n        )\n        return vpype_cli.PageSizeType()\n\n\ndef multiple_to_layer_ids(*args, **kwargs):  # pragma: no cover\n    import vpype_cli\n\n    logging.warning(\n        \"!!! `vpype.multiple_to_layer_ids` is deprecated, \"\n        \"use `vpype_cli.multiple_to_layer_ids` instead.\"\n    )\n    return vpype_cli.multiple_to_layer_ids(*args, **kwargs)\n\n\ndef single_to_layer_id(*args, **kwargs):  # pragma: no cover\n    import vpype_cli\n\n    logging.warning(\n        \"!!! `vpype.single_to_layer_id` is deprecated, \"\n        \"use `vpype_cli.single_to_layer_id` instead.\"\n    )\n    return vpype_cli.single_to_layer_id(*args, **kwargs)\n", "path": "vpype/_deprecated.py"}, {"content": "\"\"\"This module contains vpype core and its API.\"\"\"\n\nfrom ._deprecated import *\nfrom .config import *\nfrom .filters import *\nfrom .geometry import *\nfrom .io import *\nfrom .line_index import *\nfrom .metadata import *\nfrom .model import *\nfrom .primitives import *\nfrom .text import *\nfrom .utils import *\n\n\ndef _get_version() -> str:\n    from importlib.metadata import version\n\n    return version(__name__)\n\n\n__version__ = _get_version()\n", "path": "vpype/__init__.py"}]}