Adjust require of importlib_metadata also include py3.8.
Fixes: #934
Change-Id: Id64163a0dc53226d62795d40190b6cec0aee522b
from typing import Callable
from typing import Dict
from typing import List
+from typing import Optional
from typing import Union
from .. import util
@register("console_scripts")
-def console_scripts(path, options, ignore_output=False):
+def console_scripts(
+ path: str, options: dict, ignore_output: bool = False
+) -> None:
try:
entrypoint_name = options["entrypoint"]
) from ke
for entry in compat.importlib_metadata_get("console_scripts"):
if entry.name == entrypoint_name:
- impl = entry
+ impl: Any = entry
break
else:
raise util.CommandError(
f"Could not find entrypoint console_scripts.{entrypoint_name}"
)
- cwd = options.get("cwd", None)
+ cwd: Optional[str] = options.get("cwd", None)
cmdline_options_str = options.get("options", "")
cmdline_options_list = _parse_cmdline_options(cmdline_options_str, path)
- kw = {}
+ kw: Dict[str, Any] = {}
if ignore_output:
kw["stdout"] = kw["stderr"] = subprocess.DEVNULL
import io
import os
import sys
+from typing import Tuple
from sqlalchemy.util import inspect_getfullargspec # noqa
from sqlalchemy.util.compat import inspect_formatargspec # noqa
if py39:
from importlib import resources as importlib_resources
-else:
- import importlib_resources # type:ignore[no-redef] # noqa
-
-if py38:
from importlib import metadata as importlib_metadata
+ from importlib.metadata import EntryPoint
else:
+ import importlib_resources # type:ignore[no-redef] # noqa
import importlib_metadata # type:ignore[no-redef] # noqa
+ from importlib_metadata import EntryPoint # type:ignore # noqa
-def importlib_metadata_get(group):
+def importlib_metadata_get(group: str) -> Tuple[EntryPoint, ...]:
ep = importlib_metadata.entry_points()
if hasattr(ep, "select"):
- return ep.select(group=group)
+ return ep.select(group=group) # type:ignore[attr-defined]
else:
return ep.get(group, ())
--- /dev/null
+.. change::
+ :tags: bug, regression
+ :tickets: 934
+
+ Fixed a regression that prevented the use of post write hooks
+ on python version lower than 3.9
install_requires =
SQLAlchemy>=1.3.0
Mako
- importlib-metadata;python_version<"3.8"
+ importlib-metadata;python_version<"3.9"
importlib-resources;python_version<"3.9"
[options.extras_require]
):
self.cfg = _no_sql_testing_config(directives=input_config)
- class MocksCantName:
- name = "black"
- attr = "bar"
- module = "black_module.foo"
-
- importlib_metadata_get = mock.Mock(return_value=iter([MocksCantName]))
+ retVal = [
+ compat.EntryPoint(
+ name="black",
+ value="black.foo:patched_main",
+ group="console_scripts",
+ ),
+ compat.EntryPoint(
+ name="alembic",
+ value="alembic.config:main",
+ group="console_scripts",
+ ),
+ ]
+
+ importlib_metadata_get = mock.Mock(return_value=retVal)
with mock.patch(
"alembic.util.compat.importlib_metadata_get",
importlib_metadata_get,
[
sys.executable,
"-c",
- "import black_module.foo; black_module.foo.bar()",
+ "import black.foo; black.foo.patched_main()",
]
+ expected_additional_arguments_fn(rev.path),
cwd=cwd,